刷了360多道算法题,我终于顿悟了它的真谛 大家好,我是哪吒。 最近一直在刷算法题,刷华为OD算法题,有诸多好处: 比如可以考华为OD岗位,大厂算法岗,待遇直接拉满,走向人生巅峰。 不考也没关系,就当练习算法题了,哪吒半年时间刷了360多道题,平均一天六道题,一道题40分钟,一天刷4个小时?现在一看到算法题,真的有一种灵光乍现的感觉。 希望用我自己疯狂刷题的劲头,感染大家,让大家爱上刷题,顺利通过华为OD机试,掌握更多优秀的算法。 下面这道 开发运维 2023-12-08 法医
JVM垃圾回收算法有哪些 标记清除算法 标记清除算法:是将垃圾回收分为2个阶段,分别是标记和清除。 1.根据可达性分析算法得出的垃圾进行标记 2.对这些标记为可回收的内容进行垃圾回收 可以看到,标记清除算法解决了引用计数算法中的循环引用的问题,没有从root节点引用的对象都会被回收。 同样,标记清除算法也是有缺点的: 效率较低,标记和清除两个动作都需要遍历所有的对象,并且在GC时,需要停止应用程序,对于交互性要求比较高的应 开发运维 2023-12-07 向阳逐梦
模板设计模式之妙用及详细介绍 模板方法设计模式是一种行为设计模式,它在父类中定义了一个算法的框架,允许子类在不改变算法结构的情况下覆盖算法的某些步骤。 模板方法设计模式的组成部分: 抽象类(Abstract Class): 定义了一系列的步骤(方法),并实现了一个模板方法。这个模板方法按顺序执行这些步骤。步骤中的一部分可能是抽象的,这些需要由子类提供具体实现。 具体类(Concrete Class): 继承自抽象类,并实现了其 开发运维 2023-12-07 竹子爱熊猫
程序员必须掌握这几种排序算法的优秀实践,包会!(含GIF图) 排序是计算机中常见且重要的操作,用于使数据按照某种规则或标准进行有序化,便于后续的搜索、查找和处理。 为什么排序算法很重要? 由于排序通常有助于降低问题的算法复杂性,因此它在计算机科学中具有重要用途。百度搜索显示,当今计算世界中有 40 多种不同的排序算法。疯狂吧?那你知道几个呢! 现实世界中实现这一点的一些最佳示例是。 冒泡排序用于电视节目中,根据观众观看时间对频道进行排序! 数据库使用外部合并 开发运维 2023-11-30 剑圣无痕
深入了解Go语言的分布式算法和协议 随着互联网的快速发展,应用程序越来越需要高效可靠的分布式算法和协议。Go语言是一种快速、高效的编程语言,适合用于分布式系统的设计和开发。本文将深入介绍Go语言中常用的分布式算法和协议。 一、一致性哈希算法 分布式系统中,一致性哈希算法是一种常见的负载均衡算法。该算法可以自动将请求分配到系统中的多台服务器之间,从而实现系统负载均衡。 在Go语言中,一致性哈希算法可以通过使用“hash/crc32”和 开发运维 2023-11-30 共饮一杯
聊聊常见的限流算法有哪些? 前言 今天来分享一道比较好的面试题,“常见的限流算法有哪些?”对于这个问题,我们一起看看考察点和比较好的回答吧! 考察点 限流算法是一种用于限制流量请求的频率或速率的算法,其目的是在高并发或大流量请求的情况下,保护系统服务的安全性和可用性。限流算法可以应对热点业务带来的突发请求、调用方bug导致的突发请求以及恶意攻击请求等情况。这个问题就是面试官想考察我们是不是平日里善于积累,仔细思考这方面的知识 开发运维 2023-11-28 竹子爱熊猫
六种常见负载均衡算法 今天我们来聊聊常见的负载均衡算法。 负载均衡将网络流量或一组任务以某种算法合理分配给各个处理节点,使得节点得到平等的使用,并及时可靠地返回结果给用户。 负载均衡广泛应用于各种硬件软件系统中,比如: 根据 IP 地址进行网络流量负载均衡。在服务进行维护时,可以方便将网络流量切换到临时节点或降级的服务上。 根据 HTTP 头信息或请求字段进行应用程序负载均衡,用户得到响应的时间更短,并且可以提供分层服 开发运维 2023-11-28 大白菜程序猿
一文弄懂Join语句优化 这一篇文章就来介绍一下关联查询的优化,文章有点长,请耐心看完,有问题欢迎讨论指正。 1 关联查询的算法特性总结 要想弄懂关联查询的优化,就必须先知道关联查询相关的算法: Join算法 解释 Simple Nested-Loop Join算法 遍历驱动表中的每一行,每一行再到被驱动表中全表扫描,如果满足关联条件,则返回结果 Index Nested-Loop Join算法 遍历驱动表中的每一行,都通 数据运维 2023-11-28 三掌柜
最小生成树问题 最小生成树(Minimum Spanning Tree,简称 MST)问题是图论中的一个经典问题,它在各种实际应用中都有广泛的用途。在这里,我将围绕着最小生成树问题的背景、两种主要的算法(Prim算法和Kruskal算法),以及如何实现它们来解决最小生成树问题进行详细讲解。 背景和应用 背景: 最小生成树问题是指在一个带权重的无向连通图中找到一个生成树,使得这棵树的所有边的权重之和最小。 应用: 开发运维 2023-11-27 法医
Java开发的经验与建议:如何高效地处理数据结构和算法 Java开发是目前非常流行的编程语言之一,它的强大之处在于其丰富的数据结构和算法库。但是,对于刚刚入门或者想要提升自己的开发人员来说,如何高效地处理数据结构和算法依然是一个挑战。本文将为大家分享我在Java开发中的经验和建议,希望对大家有所帮助。 首先,了解常见的数据结构和算法是非常重要的。Java中已经内置了许多常用的数据结构和算法,比如数组、链表、栈、队列、排序算法等等。熟悉这些数据结构和算法 开发运维 2023-11-22 醒在深海的猫
C++ STL组件有哪些 STL 主要包含以下几个组件: 容器(Containers) 容器是用来存储数据的数据结构。STL提供了多种容器,包括向量(vector)、链表(list)、双端队列(deque)、集合(set)、映射(map)、堆栈(stack)、队列(queue)等。 每种容器都有其特定的特性和适用场景。 算法(Algorithms) 算法包括了一系列常见的操作,例如排序、查找、遍历等。 这些算法可以用于不同 开发运维 2023-11-21 宇宙之一粟
你可能听说过雪花算法 雪花算法介绍 雪花算法(Snowflake)是一种分布式唯一ID生成算法,用于生成全局唯一的ID。它的设计目标是在分布式系统中生成ID,保证ID的唯一性、有序性和趋势递增。雪花算法的核心思想是将一个64位的ID分成多个部分,分别表示不同的信息。 雪花算法的优点是生成的ID具有趋势递增的特性,可以保证在分布式系统中生成的ID的有序性。同时,由于使用了时间戳,可以根据ID的时间戳信息进行排序和查询。 开发运维 2023-11-10 共饮一杯
数据结构与集合的不解之缘,你了解多少? 本篇文章将简要介绍数据结构,让读者了解它们在计算机中以何种结构方式存在。那么,什么是数据结构呢?下面我们来详细解释。 数据结构 1.1 数据结构有什么用? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。这句话是啥意思呢? 我们举个简单的例子 开发运维 2023-11-07 Escape
使用漏桶算法实现一秒钟50个限流 背景 漏桶算法(Leaky Bucket Algorithm)是一种常用的限流算法,用于控制数据流的速率。它的原理类似于一个漏桶,数据流以固定的速率流出,如果流入的速率超过了漏桶的容量,多余的数据将被丢弃或延迟处理。 漏桶算法的核心思想是通过固定的速率来处理请求,以防止系统被过多的请求压垮。它可以平滑请求的流量,保持系统的稳定性。 漏桶算法的主要特点包括: 固定的处理速率:漏桶以固定的速率处理请求 开发运维 2023-11-07 泡泡
Go的分布式应用:使用Raft算法 大家好!我是[lincyang]。 今天我们要探讨的是如何在Go语言中使用Raft算法来构建分布式应用。 什么是Raft算法? Raft算法是一种用于管理分布式系统中的复制日志的一致性算法。它的主要目标是简化分布式系统的构建和理解。 为什么使用Raft? Raft算法相对于其他分布式一致性算法(如Paxos)来说,更易于理解和实现,同时也具有很高的效率和可靠性。 如何在Go中使用Raft? 在Go 开发运维 2023-11-02 大树
每个程序员都应该知道的六种负载均衡算法 一个大型网络平台能轻松面对数百万请求而不产生崩溃,负载均衡器(Load Balancer)是绝对的关键组件。 负载均衡器会在多个服务器之间分配工作流,也就是将用户请求转发到不同的机器上,可以确保服务的高可用性、响应速度和可扩展性。那么问题来了,负载均衡器的背后会有很多服务器,那么这些服务器之间要如何分配请求呢?显然这就涉及到了负载均衡算法,而了解核心的负载均衡算法可以让我们更好地设计和优化应用程序 开发运维 2023-11-02 贤蛋大眼萌
互联网高并发设计的手段:架构、算法、代码 性能优化目标 1、缩短响应时间 2、提高并发数(增加吞吐量) 3、让系统处于合理状态 图片 性能优化手段 1、空间换时间 系统时间是瓶颈: 缓存复用计算结果,降低时间开销,因为cpu时间较内存容量更加昂贵。 2、时间换空间 数据大小是瓶颈 网络传输是瓶颈,使用系统时间换取传输的空间,使用HTTP的gzip压缩算法 app的请求分类接口,使用版本号判断哪些数据更新,只下载更新的数据 3 开发运维 2023-10-31 爱可生开源社区
数据结构与算法绪论 前言 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。 为什么学习数据结构与算法?如果你还是学生,那么这门课程是必 开发运维 2023-10-27 向阳逐梦
DFA算法,高效实现敏感词检测与替换! 在信息爆炸的时代,网络上充斥着大量的敏感信息,可能会产生很多的负面影响。为了应对这一挑战,一直在寻求有效的方式来替换或过滤掉敏感字词,而Java DFA(Deterministic Finite Automaton)算法正是在这方面发挥着关键作用。 什么是DFA算法? DFA即Deterministic Finite Automaton,是一种有穷自动机,通常用于处理字符串匹配问题。在Java中, 开发运维 2023-10-27 贤蛋大眼萌
升华你的程序:高级算法和数据结构在编程中的应用 在软件开发中,高级算法和数据结构是关键的工具,可以帮助我们解决复杂的问题,并提高程序的效率和性能。下面将讨论高级算法和数据结构在编程中的应用,并介绍它们的一些常见用途。 一、高级算法的应用 高级算法是指那些比基本算法更复杂、更高效的算法。它们通常基于数学原理和计算机科学的理论基础,能够有效地解决各种问题。下面是高级算法在编程中的一些常见应用: 1、排序算法:排序是计算机科学中最基本的问题之一。高级 开发运维 2023-10-26 法医