摘要: 大家还记得我们在数据结构里学的哈夫曼编码吗?今天我们就来重新温习一下哈夫曼编码,以及通过哈夫曼编码,我们能学到什么核心思想呢。在开始之前,我们先回顾一下什么是哈夫曼编码。哈夫曼编码是一种对数据进行压缩的编码方式,可以有效节省存储空间。我们来看一个例子,假如我们有一个长度为200的字符串电文要传输,并 阅读全文
posted @ 2021-08-05 18:08 公众号程序员学长 阅读(1026) 评论(0) 推荐(0) 编辑
摘要: 今天我们来聊一下字符串匹配算法里最著名的算法-KMP算法,KMP算法的全称是 Knuth Morris Pratt 算法,是根据三位作者(D.E.Knuth,J.H.Morris 和 V.R.Pratt)的名字来命名的。KMP算法和BM的算法思想类似,如果对BM算法不熟悉的同学可以看这篇文章BM算法 阅读全文
posted @ 2021-08-02 18:49 公众号程序员学长 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 我们在字符串匹配算法(一)学习了BF算法和RK算法,那有没更加高效的字符串匹配算法呢。我们今天就来聊一聊BM算法。 BM算法 我们把模式串和主串的匹配过程,可以看做是固定主串,然后模式串不断在往后滑动的过程。当遇到不匹配的字符时,BF算和RK算法的做法是,把模式串向后滑动一位,然后从模式串的第一位开 阅读全文
posted @ 2021-07-31 21:00 公众号程序员学长 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 字符串匹配在工作中我们经常会用到,同时也是各大公司面试中的常考题目。字符串匹配的算法有很多,所以需要深入学习的东西也有很多。我们接下来会有一系列的文章去把字符串匹配算法尽量说明白。 今天我们主要聊一下单模式串匹配算法 即一个串去跟另外一个串去比较。在开始之前,为了后续方便讲解,我们先明确两个定义,即 阅读全文
posted @ 2021-07-30 22:44 公众号程序员学长 阅读(479) 评论(0) 推荐(0) 编辑
摘要: Redis实例在运行的时候,要和许多对象进行交互,这些不同的交互对象会有不同的操作。下面我们来看看,这些不同的交互对象以及相应的主要操作有哪些。 客户端:键值对的增删改查操作。 磁盘:生成RDB快照、记录AOF日志、AOF日志重写。 主从节点:主库生成、传输RDB文件,从库接受RDB文件、清空数据库 阅读全文
posted @ 2021-07-30 10:03 公众号程序员学长 阅读(548) 评论(1) 推荐(0) 编辑
摘要: ​ 我们在 Redis持久化机制你学会了吗?学习了AOF和RDB,如果Redis宕机,他们分别通过回放日志和重新读入RDB文件的方式恢复数据,从而提高可靠性。我们今天来想这么一个问题,假如我们只部署了一台Redis实例,如果这个实例宕机了,那么它在恢复期间,是无法提供数据存取请求的,这样就会使得服务 阅读全文
posted @ 2021-07-28 17:59 公众号程序员学长 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 堆这种数据结构应用场景很多,最经典的莫过于堆排序。堆排序是一种原地的、时间复杂度为O(nlogn)的排序算法。我们今天就来分析一下堆这种数据结构。 一、什么是堆 堆是一种特殊的树。只要满足以下两点,就称为堆。 堆是一个完全二叉树。 堆的每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 阅读全文
posted @ 2021-07-27 08:33 公众号程序员学长 阅读(4037) 评论(0) 推荐(0) 编辑
摘要: 堆这种数据结构应用场景很多,最经典的莫过于堆排序。堆排序是一种原地的、时间复杂度为O(nlogn)的排序算法。我们今天就来分析一下堆这种数据结构。 一、什么是堆 堆是一种特殊的树。只要满足以下两点,就称为堆。 堆是一个完全二叉树。 堆的每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 阅读全文
posted @ 2021-07-25 16:17 公众号程序员学长 阅读(462) 评论(0) 推荐(0) 编辑
摘要: ​ 曾经看到这么一个案例,有一个团队需要开发一个图片存储系统,要求这个系统能快速记录图片ID和图片存储对象ID,同时还需要能够根据图片的ID快速找到图片存储对象ID。我们假设用10位数来表示图片ID和图片存储对象ID,例如图片的ID为1101021043,它所对应的图片存储对象的ID为2301010 阅读全文
posted @ 2021-07-24 11:28 公众号程序员学长 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 在数据结构中,散列表和链表经常会组合在一块使用,如果你对java很熟悉,你会发现LinkedHashMap这样一个常用的容器,也把散列表和链表组合起来使用。那散列表和链表是如何组合使用的,他们组合在一起能碰撞出什么火花,请跟随我的脚步,一起一探究竟。 我们先思考这么一个问题,如何使用链表来实现LRU 阅读全文
posted @ 2021-07-23 11:22 公众号程序员学长 阅读(192) 评论(2) 推荐(1) 编辑