数据结构之 B Tree
B+树
B+ 树是一种树数据结构,通常用于数据库和操作系统的文件系统中。
B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。
B+ 树元素自底向上插入,这与二叉树恰好相反。
B+ 树在节点访问时间远远超过节点内部访问时间的时候,比可作为替代的实现有着实在的优势。这通常在多数节点在次级存储比如硬盘中的时候出现。通过最大化在每个内部节点内的子节点的数目减少树的...
2018-09-12 04:44:23 |
Data-Struct
JDK HashMap 源码解析
为什么学习 HashMap 源码?
作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的。
无论是在面试还是工作中,知道原理都对会我们有很大的帮助。
本篇的内容较长,建议先收藏,再细细品味。
不同于网上简单的源码分析,更多的是实现背后的设计思想。
涉及的内容比较广泛,从统计学中的泊松分布,到计算机...
2018-09-12 03:44:23 |
Java
JDK ConcurrentHashMap 源码解析
HashMap 的线程安全性
HashMap 是线程不安全的。
为了使用线程安全的数据结构,多线程条件下,可使用 Collections.synchronizedMap 方法构造出一个同步Map,或者直接使用线程安全的 ConcurrentHashMap。
Java 7基于分段锁的ConcurrentHashMap
注:本章的代码均基于JDK 1.7.0_67
数据结构
Ja...
2018-09-12 03:44:23 |
Java
数据结构之红黑树 Red Black Tree
Red Black Tree
红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
它是在1972年由鲁道夫·贝尔发明的,他称之为”对称二叉B树”,它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。
它是复杂的,但它的操作有着良好的最坏情况运行时间,...
2018-09-12 03:44:23 |
Data-Struct
Algorithm Load Balance 负载均衡算法
负载均衡
概念
负载平衡(Load balancing)是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。
主要作用是将大量作业合理地分摊到多个操...
2018-09-10 03:37:31 |
Algorithm
SSDB - 一个快速的 NoSQL 数据库,Redis 的替代品
SSDB
SSDB 是一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis。
特性
替代 Redis 数据库, Redis 的 100 倍容量
LevelDB 网络支持, 使用 C/C++ 开发
Redis API 兼容, 支持 Redis 客户端
适合存储集合数据, 如 list, ha...
2018-09-10 02:28:57 |
Cache
ledisdb 由 Go 提供支持的高性能 NoSQL 数据库服务器
Ledisdb
Ledisdb 是一个用 Go 编写的高性能 NoSQL 数据库库和服务器。
它类似于Redis,但将数据存储在磁盘中。 它支持多种数据结构,包括 kv、list、hash、zset、set。
LedisDB 现在支持多个不同的数据库作为后端。
特征
丰富的数据结构:KV、List、Hash、ZSet、Set。
数据存储不受 RA...
2018-09-10 02:28:57 |
Cache
Guava Cache
适用性
缓存在很多场景下都是相当有用的。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存。
Guava Cache与ConcurrentMap很相似,但也不完全一样。
最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除。相对地,Guava Cache为了限制内存占用,通常都设定为自动回收元素。在某些场景下,尽管...
2018-09-09 23:44:19 |
Cache