算法与数据结构
文章平均质量分 92
算法与数据结构
sp42a
What the web can be
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如果你看不懂KMP算法,那就看一看这篇文章( 绝对原创,绝对通俗易懂)
KMP算法,俗称“看毛片”算法,是字符串匹配中的很强大的一个算法,不过,对于初学者来说,要弄懂它确实不易。整个寒假,因为家里没有网,为了理解这个算法,那可是花了九牛二虎之力!不过,现在我基本上对这个算法理解算是比较透彻了!特写此文与大家分享分享!转载 2022-05-21 17:11:57 · 2689 阅读 · 0 评论 -
Java 中 BitSet
Java 中 BitSet 就是“位图”数据结构,根据“位图”的语义,数据的存在性可以使用 bit 位上的1或0来表示;一个 bit 具有2个值:0和1,正好可以用来表示 false 和 true。对于判断“数据是否存在”的场景,我们通常使用 HashMap 来存储,不过 hashmap 这个数据结构 Key 和 Value 的保存需要消耗较多的内存,不适合保存较多的数据,即大数据场景转载 2022-04-25 23:50:39 · 8214 阅读 · 2 评论 -
基于 BitMap 思想的标签框架
自乐高搭建系统在活动落地页的搭建中推广之后,搭建系统的落地页和模块数量就迅速增长。但却并没有一个入口可以帮助研发迅速的统计线上页面和页面中各模块的使用情况,无法对一些可能存在性能风险的页面进行跟踪(部分模块的特性导致该模块无法静态化,可能存在性能风险)。因此需要一个 线上页面和模块的统计解决方案用于解决此类数据统计问题。转载 2022-04-20 15:38:15 · 1101 阅读 · 2 评论 -
轻量级权限系统全真做法(一)
之前做的权限系统 too old 了,重构之,于是就有了本文的全真开发过程。原创 2022-04-16 13:52:26 · 803 阅读 · 0 评论 -
AJ 组件库之通用数据字典 DataDict
数据字典(Data Dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。数据字典在系统也是必备的组件,对此我们想想要怎么做原创 2022-03-28 18:56:33 · 2947 阅读 · 0 评论 -
TypeScript 玩转二叉树
首先把普通树与二叉树(Binary Tree)区别开来。普通树能直观地反映树状结构的数据以及它们之间的关系,和我们普通认知的树那样子的差不多,例如文件夹啊、分类啊、行政管理门类啊、族谱啊之类。而二叉树,虽然也有个“树”字,但更多的是为提高排序、搜索、插入、删除速度而准备的那么一种数据结构。如果要用二叉树去展示树状结构,不是不行,它也可以从普通树转换为二叉树,但是那样的话会很别扭和不直观,不便于理解。原创 2021-04-22 13:43:19 · 982 阅读 · 2 评论 -
AJAXJS 框架用到的核心算法
做了那么多年,我通常还是被认为是一个“厉害”的前端,——那说明我一直在原地踏步,没有进步:(。难道就不能突破“全栈”的天花板吗?我想了想,其实是大家没有关注我另一面后端的缘故,后端也是干活的满满的。其实同行交流呢,都逃不过层层“鄙视链”的影响,说这个工具、那个框架,一旦不是自己的心头好,或者存在信息不对称的地方,立马否定对方。所以呢,为避免这种情况发生,谈一些有点“技术深度”而不是泛泛而谈的表面东西,就有所必要了,最好能拉高一些门槛的。比如谈“算法”就是一个比较好的例子了,难怪一般面试都会考算法题。原创 2021-04-12 11:19:08 · 561 阅读 · 2 评论 -
权限设计算法基础
权限管理在一个系统中是不可或缺的,总的来说还是一个数学的问题。最笨的方法之前这个系统的权限管理是通过配置文件来处理的,大概流程是这样的,把用户分成多个用户组,然后每个用户组对应着多个用户的 id,每次访问页面的时候,都会读取这个配置文件的信息,判断登录用户的 id 属于哪个用户组,然后在页面判断这个用户组是否有访问这个链接的权限。配置文件的格式是这样的:{"adm" : [1,2,34], "dev" : [5,6,1]}这样会带来什么问题呢?有以下几个:权限管理混乱,一个用户 id 可能会在多个权原创 2020-07-23 10:25:41 · 1281 阅读 · 1 评论 -
SQL 双亲节点查找所有子节点
怎么保存树状结构的数据呢?在 SQL 中常用的是双亲节点法(parent id 表示父节点)。假设当前欲获取某一节点下所有子节点,该怎么做呢?如果使用程序(Java/PHP)递归调用,那么将反复调用数据库,效率之低可想而知。于是我们希望在数据库的层面就可以完成,——该怎么做呢?...原创 2016-05-02 21:18:11 · 11171 阅读 · 2 评论 -
通过“单键锁配置法”实现访问控制
本文介绍了一种基于质因数分解的访问控制方法——单键锁配置法,用于简化权限管理。该方法通过为用户组分配质数键值(Ki)和为资源分配锁值(Lj),利用质因数分解特性计算访问权限(Rij),避免了传统权限矩阵的存储问题。相比直接存储权限矩阵,该方法只需在数据库中保存键值和锁值,显著减少了数据存储量和修改复杂度。文章详细阐述了算法原理、实现步骤,并提供了伪代码和Java实现示例,验证了该方法的可行性。原创 2017-07-18 17:22:17 · 1092 阅读 · 0 评论 -
用 JSON 表现树的结构兼谈队列、堆栈的练习(一)
接触 JSON 的人都知道,JSON 可通过 K/V(Key/Value) 结构很直观地表现一棵树,因为 V 可以“包含”另外一个 K/V 从而不断嵌套下去形成“树状”的结构。但 V 不一定必须为另外一个 K/V,而是可以为 Array 数组。数组中由可以“包含”更多的 K/V 或者又是数组类型——也是可以的。如此反复下去,可以形成层数很深的一棵树。原创 2017-08-02 11:05:22 · 5231 阅读 · 0 评论 -
用 JSON 表现树的结构兼谈队列、堆栈的练习(二)
查找,又叫作搜索 search。查找跟遍历的概念不同,遍历是全部的节点都要走一遍,而查找,找到目标节点就立刻返回,不会继续遍历了。当然,如果什么都没查找到,就是一次完整的遍历过程了。原创 2017-08-03 23:34:45 · 1904 阅读 · 0 评论 -
大家都懂的 JSON 解析器原理(一)简介 & 低配版入门
没学过编译原理,做一个 JSON 解析器难吗?——难!是不是就不能“迎难而上”呢?——不是!越是难的越是一个挑战!——笔者这里尝试通过通俗易懂的行文为大家介绍一下 JSON 解析器,到底是如何被解析成为 Java 里面“可以理解的”对象。前面的铺垫可能比较长,但请尽量不要跳过,因为那都是基础,尤其对于我们非科班来说,应要恶补。原创 2017-08-13 14:04:27 · 6820 阅读 · 1 评论 -
白话 LRU 缓存及链表的数据结构讲解(一)
本文围绕缓存的LRU策略展开,为解决缓存数据的淘汰问题,先介绍了用数组和栈实现LRU的方法,后指出其操作不便。引入链表数据结构,详细介绍单链表的元素对象、属性及各方法的实现,最后说明可在单链表基础上扩展实现LRU缓存。原创 2019-05-23 22:38:46 · 814 阅读 · 0 评论 -
白话 LRU 缓存及链表的数据结构讲解(二)
本文围绕使用数组、单链表实现缓存的数据结构展开,讲述了 LRU 的改进过程。针对单链表无法处理 Key/Value 结构的问题给出解决方案,还对链表性能进行优化,如合二为一、添加尾部元素等。此外,探讨了删除节点和获取匹配值的优化思路,提及双向链表的优势。原创 2019-05-24 12:25:24 · 598 阅读 · 0 评论 -
白话 LRU 缓存及链表的数据结构讲解(三)
博客围绕链表展开,指出单链表查找元素需遍历,引入HashMap可优化。对比了单链表、单链表+HashMap、双向链表、双向链表+HashMap、HashMap、队列的时间复杂度,得出采用双向链表+HashMap是下一步优化方法,还提到浓缩版是LinkedHashMap。原创 2019-05-24 15:34:56 · 1058 阅读 · 0 评论 -
π-演算十三问 FAQ on π-Calculus
https://www.cs.cmu.edu/~wing/publications/Wing02a.pdfπ-演算十三问 FAQ on π-CalculusJeannette M. WingVisiting Researcher, Microsoft ResearchProfessor of Computer Science, Carnegie Mellon University27 D...翻译 2019-06-11 14:43:04 · 3476 阅读 · 0 评论
分享