
算法
hitits
这个作者很懒,什么都没留下…
展开
-
数据结构(持续更新)
数据结构:数据结构就是数据的组织方式1、稀疏sparsearray数组:当一个数组中,大部分为0或同一个值时,使用稀疏数据可以缩小规模。稀疏数组记录了数据几行几列,多少不同的值。例:用稀疏数组记录二维数组...原创 2020-06-07 17:11:26 · 162 阅读 · 0 评论 -
CAS无锁算法
CAS即compare and swap(比较再交换).是一种解决锁机制带来的问题方案.锁分为悲观锁和乐观锁,但都是一种悲观策略,会带来诸多问题:如多个线程要等待共同的被占用资源,优先级高的线程等待优先级的线程,性能问题.CAS是一种乐观策略.有三个值:V(内存值[原值]),E(期待值[携带的原值]),N(新值[基于旧值经过运算后的新值]).只有当E=V时,才进行操作,否则不操作或重新运算....原创 2019-02-26 09:54:44 · 200 阅读 · 0 评论 -
环形缓冲区
环形缓冲区,是空间换时间的典型实现,是写入和读取,遵循FIFO原则.特点:1.FIFO2.当缓冲区用完时,丢弃最久的历史数据,3.定长4.遍历可能发现追逐问题典型实践有linux内核的环形缓冲区,hadoop的suffle流程的缓冲区,要实现环形缓冲区只要解决以下四点即可:1.处理超出缓冲区大小的的索引;2.缓冲区满和缓冲区空;3.入队、出队;4.缓冲区中数据长度计算。ja...原创 2019-02-26 10:18:25 · 566 阅读 · 0 评论 -
B+树JAVA实现
B+树是一种多路平衡查找树,是对B树(B-Tree)的扩展.一个M阶的B树的定义为:1.每个节点最多有M个子节点;2.每一个非叶子节点(除根节点)至少有ceil(M/2)个子节点;3.如果根节点不是叶子节点,那么至少有两个子节点;4.有k个子节点的非叶子节点拥有k-1个键,键按照升序排列;5.所有叶子节点在同一层;与B树的区别在于:1.非叶节点仅有索引作用,具体信息均存放在叶节点;...原创 2019-05-17 14:57:14 · 2799 阅读 · 3 评论