- 博客(4)
- 资源 (3)
- 问答 (5)
- 收藏
- 关注
原创 红黑树的特性和实现
平衡二叉搜索树的形式多样,且各具特色。比如,伸展树实现简便、无需修改节点 结构、分摊复杂度低,但可惜最坏情况下的单次操作需要n时间,故难以适用于对可靠性和稳定性要求极高的场合。 反之,AVL树尽管可以保证最坏情况下的单次操作速度,但需在节点中嵌入平衡因子等标识;更重要的是,删除操作之后的重平衡可能需做多达logn次旋转,从而频繁地导致全树整体拓扑结构的大幅度变化。红黑树即是针对后一不足的改进...
2018-04-23 00:13:34 8638
原创 搜索树之B-/B+树的特性与实现
现代计算机中,在内存与外存(磁盘)组成的二级存储系统中, 数据全集往往存放于外存中,计算过程中则可将内存作为外存的高速缓存,存放最常用数据项的复本。借助高效的调度算法,如此便可将内存的“高速度”与外存的“大容量”结合起来。 两个相邻存储级别之间的数据传输,统称I/O操作。各级存储器的访问速度相差悬殊,故应 尽可能地减少I/O操作。仍以内存与磁盘为例,其单次访问延迟大致分别在纳秒(ns)和毫秒(m...
2018-04-19 00:59:21 5875 1
原创 伸展树的特性及实现
除了AVL树,本章将按照二叉搜索树的介绍,继续介绍平衡二叉搜索树家族中的另一个成员—Splay伸展树。相对于AVL,Splay的实现更为简捷。伸展树无需时刻都严格地保持全树的平衡,但却能够在任何足够长的真实操作序列中,保持分摊意义上的高效率。伸展树也不需要对基本的二叉树节点结构,做任何附加的要求或改动,更不需要记录平衡因子或高度之类的额外信息,故适用范围更广。通常在任意数据结构的生命期内,...
2018-04-16 23:59:17 6873 4
原创 使用redis+lua脚本实现分布式锁
分布式锁的应用场景当多个机器(多个进程)会对同一条数据进行修改时,并且要求这个修改是原子性的。这里有两个限定: 多个进程之间的竞争,意味着JDK自带的锁失效; 原子性修改,意味着数据是有状态的,修改前后有依赖。 本文将先介绍Redis的实现方式,后面笔者会介绍分布式锁的其他实现。在学习Redis实现分布式锁的过程中,笔者首先参考了Redis的官方文档实现Red...
2018-04-15 00:05:30 6235 3
关于java网络编程中获取输入流中数据的问题?
2016-01-26
ServletContext().getRealPath("/");获取路径的问题
2015-12-04
linux给用户root权限的方法
2015-06-01
TreeSet的Iterator遍历问题
2015-04-29
子类强制转换为父类是不是只能转第一父类????
2014-12-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人