
算法
文章平均质量分 85
司腾
程序不是年轻的专利,但是,它属于年轻!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
靠这份 GitHub 标星 80K 的图解算法,杀进大厂!
这份算法笔记与其他的不同,均是用图解,gif 的方式来针对常见的题型进行详细的说明,非常的浅显易懂!比如判断环的入口位置,画了一张图,配以简单的文字描述让大家看完瞬间豁然开朗!比如很多读者表示不了解递归的概念,结果文中一张配图就说明清楚了这个概念再比如用队列来实现 BFS,一张动图一目了然关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题均附有详细题解过程。很多人表示刷数据结构和算法题效率不高,甚是痛苦。原创 2023-05-19 16:28:47 · 306 阅读 · 0 评论 -
2023面试到底有多难?大厂为何都注重算法?我们该如何应对?
大家有没有一脸懵逼的感觉?曾经有个说法,程序=数据结构+算法。这在面向过程的编程语言流行的年代是很受推崇的。然而,随着时代的发展,各种编程语言的出现,各种编程模式的发明,面向对象、设计模式、框架、模型等各种概念出来之前那个说法已经不被太推崇了。原创 2023-04-13 16:25:14 · 1028 阅读 · 0 评论 -
经典动态规划问题详细解析:最短编辑距离算法原理分析和解法实现
基本概念编辑距离问题: 编辑距离问题困难,解法却是很漂亮,而且也是少有的比较实用的算法 编辑距离使用场景: 对于修改文章的错位内容.限制文章只能修改20个字,且支持增,删,替换操作,求修改的最优方案 对于衡量DNA的相似程度.DNA序列是由A, G, C, T组成的序列,可以类比成字符串,可以通过编辑距离衡量两个DNA序列的相似度,编辑距离越小,说明这两个DNA序列越相似 思路分析编辑距离问题: 给定两个字符串s1和s2,只能使用3种操作,将s1变成s2,求最小的操...原创 2022-01-20 21:55:18 · 578 阅读 · 0 评论 -
不会一致性hash算法,劝你简历别写搞过负载均衡
这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理。下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算法以及它有那些过人之处。构建场景假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机器上,你会想到什么方案呢?我们可能首先想到的方案,是取模算法hash(key)% N,对key进行hash运算后取模,N是机器的数..原创 2022-01-12 14:49:47 · 150 阅读 · 0 评论 -
因为LRU设计效率太低被pass了
最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己应该不会遇到,所以暂时就没准备。奈何不巧,这还就真的考到了!他此刻的心情,可以用一张图来证明:他说他最终踉踉跄跄的写了一个效率不是很高的LRU,面试官看着不是很满意……后来果真GG了。防止日后再碰到这个坑,今天和大家一起把这个坑踩了,这道题我自身刚开始也是用较为普通的方法,但是好的方法虽然不是很难但是想了真的很久才想到,虽然花了太多时间不太值,总算是自己想出来了,将这个过程给大家分享一下(只从算法的角度,不原创 2021-12-10 13:26:34 · 214 阅读 · 0 评论 -
用短片“小说”通俗讲解:缓存、缓存算法和缓存框架简介
引言我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓存框架。在这篇文章,我们会去讨论缓存,缓存算法,缓存框架以及哪个缓存框架会更好。面试“缓存就是存贮数据(使用频繁的数据)的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些。”这就是 programmer one (programmer one 是一个面试者)在面试中的回答(一个月前,他向公司提交了简历,想要应聘要求在缓存,...原创 2021-11-30 21:57:39 · 263 阅读 · 0 评论 -
异或运算的巧用→不用额外的变量,如何交换两个变量的值?
开心一刻 两头奶牛在一起吃草,其中一头(奶牛甲)越吃越慢,一副若有所思的模样,另一头奶牛(奶牛乙)发觉了,开始了对话 奶牛乙:搁那合计啥呢? 奶牛甲:你帮我合计合计 奶牛乙:咋地了 奶牛甲:我吃的是草,挤出来的是奶,也就是说我把没用的变成有用的了 奶牛乙:是这个事 奶牛甲:人呢,喝的是奶,拉出来的是粑粑 奶牛乙:咋地了 奶牛甲:他又把有用的变成没用的了,我这不白干了吗 奶牛乙:你说的不对 奶牛甲:不对吗? 奶牛乙:那粑粑做成化肥,有..原创 2021-11-30 14:26:45 · 492 阅读 · 0 评论 -
Array算法题详细解析
Array算法题详细解析数组相关的算法题目是比较高频的,通过本文希望能够对你数组相关的算法能力有所帮助。找出给定数组中的最大和最小元素问题描述:给你一个数字数组。你需要在数组中找到最小和最大的数。思路:定义两个变量max,min,用来存放最大和最小元素 遍历数组 如果当前元素大于max,则将当前元素赋值给max 如果当前元素小于min,则将当前元素赋值给min 最后max和min则是最大和最小的元素代码实现:public class FindLargestS原创 2021-11-28 13:23:19 · 768 阅读 · 0 评论 -
算法 选择排序搬血,堆排序化灵
排序常见的排序算法image-20211119082822804常见排序算法的实现选择排序 最慢排序(最好理解)所以搬血基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。直接选择排序在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换 在剩余的array[i]--array原创 2021-11-28 13:12:40 · 400 阅读 · 0 评论 -
关联规则挖掘Apriori算法的实现
实验名称关联规则挖掘Apriori算法的实现实验目的1.掌握频繁项目集的生成原理2.掌握关联规则挖掘的原理3.掌握在weka中进行关联规则挖掘的具体流程。实验内容1.根据给定的事务数据库,支持数阈值2和置信度阈值0.7,编写代码生成频繁项目集及对应的关联规则。2.利用weka工具对天气数据、美国国会议员投票信息、超市购物篮数据进行关联规则挖掘,并分析挖掘结果实验步骤及结果一.根据给定的事务数据库,支持数阈值2和置信度阈值0.7,编写代码生成频繁项目集及对应的关联规则。原创 2021-11-26 20:24:24 · 3706 阅读 · 0 评论 -
核爆~ 字节跳动算法大咖手写1000页数据算法笔记:Github已标星79k
数据结构是什么数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构算法是什么算法是对解题方案的准确而完整地描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算..原创 2021-11-25 21:51:14 · 587 阅读 · 0 评论 -
出自算法之神“左程云”的这本《算法面试指南》被LeetCode官推,秀我一脸~
什么是LeetCode?leetcode是个题库,里面有很多编程多面试的题目,可以在线编译运行。难度比较高。如果自己能做出来,对面大公司很有帮助。建议一次只针对一种题型进行训练,如数组、链表、二叉树、回溯、动态规划,这样效果会更好。做leetcode肯定是有帮助的。我今年四月面腾讯的时候,面试官就问了我一道leetcode上的原题,让我写一个数组右移k位的程序。然后我大学做了两年ACM吧,感觉leetcode上的题目基本都比ACM要简单一些。程序员的葵花宝典,当代内卷的万恶之源今天原创 2021-11-24 19:49:23 · 1117 阅读 · 0 评论 -
记录下经常忘记的位运算--与或非......
一,二进制和十进制转换方法1. 十进制转二进制2. 二进制转10进制二,基本概念1. 机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 6,计算机字长为8位,转换成二进制就是00000110。如果是 -6 ,就是 10000110 。这里的 00000110 和 10000110就是机器数。2. 真值第一位是符号位,所以机器数的形式值就不等于真...原创 2021-11-24 13:09:54 · 687 阅读 · 0 评论 -
教你玩真正的数码管
我们最终目标就是偷懒,一起工作是看你认真工作,我偷懒就是享受,所以为了偷懒框架式编程是必会的,以后我的博客里面希望人人都是框架式编程,那种无规则的就认真勤奋吧,我们太懒不配你们来看:joy:,记住我们是懒人族,就应该学懒的东西。本次不玩虚的,没有什么数码管的概念了,我太懒不想找了,直接上干货image-20211002094753239上面那副图也就让你先大概了解一下,详细看下面首先上面的文件你先创建好,然后再看代码与电路我说过只给懒人看,那写文件都没建好的你适合勤奋imag原创 2021-11-23 20:35:20 · 1201 阅读 · 0 评论 -
悲观锁并没有你想的那么简单,隐藏了2年的Bug,终于被根拔起
接手的新项目,接二连三的出现账不平的问题,作为程序员中比较执着的人,不解决誓不罢休。最终,经过两次,历时多日终于将其连根拔起。实属不易,特写篇文章记录一下。文章中不仅会讲到使用悲观锁踩到的坑,以及本人是如何排查问题的,某些思路和方法或许能对大家有所帮助。事情的起源运营同事时不时就提出查账调账的需求,原因很简单,账不平,不查不行。如果你有过财务相关系统的工作经历,账务问题始终是最难攻克的。虽然刚接手项目,虽然很多业务逻辑还不了解,但出现这样的技术挑战,还是要坚决攻克的。其实,这类问题的原因原创 2021-11-21 21:23:30 · 157 阅读 · 0 评论 -
什么是Redis集群?
面试官:聊下Redis的分片集群,先聊 Redis Cluster好咯?面试官:Redis Cluser是Redis 3.x才有的官方集群方案,这块你了解多少?候选者:嗯,要不还是从基础讲起呗?候选者:在前面聊Redis的时候,提到的Redis都是「单实例」存储所有的数据。候选者:1. 主从模式下实现读写分离的架构,可以让多个从服务器承载「读流量」,但面对「写流量」时,始终是只有主服务器在抗。候选者:2. 「纵向扩展」升级Redis服务器硬件能力,但升级至一定程度下,就不划算了。候选原创 2021-11-21 17:21:02 · 566 阅读 · 0 评论 -
Java jar 如何防止被反编译
由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。原创 2021-11-21 14:51:05 · 334 阅读 · 0 评论 -
MySQL 默认隔离级别是RR,为什么阿里等大厂会改成RC?
在数据主从同步时,不同格式的 binlog 也对事务隔离级别有要求。MySQL的binlog主要支持三种格式,分别是statement、row以及mixed,但是,RC 隔离级别只支持row格式的binlog。如果指定了mixed作为 binlog 格式,那么如果使用RC,服务器会自动使用基于row 格式的日志记录。原创 2021-11-19 21:15:19 · 199 阅读 · 0 评论 -
吊打面试官系列:微服务可用性设计
当项目架构演进到微服务的时候,系统分布式部署,传统单个流程的本地 API 调用被拆分成多个微服务之间的跨网络调用,由于引入了网络通信、序列化和反序列化等操作,系统发生故障的概率提高了很多。而业界通常用多少个9来衡量系统的可用性,如99.99%表示一年中有1小时左右的不可用时间。原创 2021-11-19 20:43:42 · 730 阅读 · 0 评论 -
顶级Java才懂的,基准测试JMH
最近在手写一个ID生成器,需要比较UUID和目前比较流行的 NanoID之间的速度差异,当然也要测一下根据规则自创的ID生成器。这样的代码属于最基础的API,速度哪怕减上几纳秒,累加起来也是很可观的。关键是,我该如何评估ID的生成速度呢?1. 如何统计性能?常见的方法,是写一些统计代码。这些代码,穿插在我们的逻辑中,进行一些简单的计时运算。比如下面这几行:long start = System.currentTimeMillis();//logiclong cost = System.原创 2021-11-16 19:20:04 · 340 阅读 · 0 评论 -
95% 的算法都是基于这 6 种算法思想
算法思想是解决问题的核心,万丈高楼起于平地,在算法中也是如此,95% 的算法都是基于这 6 种算法思想,结下了介绍一下这 6 种算法思想,帮助你理解及解决各种算法问题。1 递归算法1.1 算法策略递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。优缺点:优点:实现简单易上手 缺点:递归算法对常用的算法如普通循环等,运行效率较低;并且原创 2021-11-12 19:19:31 · 619 阅读 · 0 评论