随笔分类 -  数据结构

1
摘要:B-Tree就是我们常说的B树,一定不要读成B减树,否则就很丢人了。B树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高。 磁盘IO与预读 磁盘读取依靠的是机械运动,分为寻道时间、旋转延迟、传输时间三个部分,这三个部分耗时相加就是一次磁盘IO的时间,大概9ms左右。这个成本是访问内存的十万 阅读全文
posted @ 2020-01-06 17:39 zzfx 阅读(208) 评论(0) 推荐(0) 编辑
摘要:数据访问分为两种: 1、位置(索引)访问; 2、遍历访问; 基于比较的二叉树; 基于位置的数组; 基于位置和比较的hash表。 结构维护: 增删; 及访问与维护的效率。 阅读全文
posted @ 2018-11-25 22:52 zzfx 阅读(313) 评论(0) 推荐(0) 编辑
摘要:前言:当您在读该文章的时候,我认为您已经知道HashMap的底层实现原理,如果您还不清楚HashMap是如何实现的,请先去了解,再回来看本文章。 1.HashMap什么时候扩容? HashMap的容量是有限的。当经过多次元素插入的时候,使得HashMap达到一定的饱和度,Key映射位置的几率不断变大 阅读全文
posted @ 2018-11-21 18:02 zzfx 阅读(399) 评论(0) 推荐(0) 编辑
摘要:HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。 HashMap 非线程安全 TreeMap 非线程安全 阅读全文
posted @ 2018-11-21 17:00 zzfx 阅读(505) 评论(0) 推荐(0) 编辑
摘要:平衡二叉树的平衡稳定是通过查找最低不平衡节递归实现的; 自平衡二叉树的平衡是通过局部不平衡的动态优化最终达到全局优化的。 阅读全文
posted @ 2018-11-16 19:15 zzfx 阅读(4276) 评论(0) 推荐(0) 编辑
摘要:因为红黑树需要进行左旋,右旋操作, 而单链表不需要,以下都是单链表与红黑树结构对比。如果元素小于8个,查询成本高,新增成本低如果元素大于8个,查询成本低,新增成本高 https://bbs.csdn.net/topics/392346931 阅读全文
posted @ 2018-11-16 18:55 zzfx 阅读(3885) 评论(0) 推荐(0) 编辑
摘要:3、旋转 在进行插入和删除之前需要先了解AVL树的旋转操作。旋转操作主要包括LL(左左)旋转、LR(左右)旋转、RR(右右)旋转、RL(右左)旋转,LL旋转与RR旋转对称,LR旋转与RL旋转对称。旋转操作是在插入结点或删除结点导致原AVL树不平衡时进行的。我的理解是当二叉树失衡的原因出现在“最低失衡 阅读全文
posted @ 2018-11-16 17:28 zzfx 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1).ArrayList  ArrayList维护着一个对象数组。如果调用new ArrayList()后,它会默认初始一个size=10的数组。  每次add操作都要检查数组容量,如果不够,重新设置一个初始容量1.5倍大小的新数组,然后再把每个元素copy过去。  在数组中间插入或删除,都要 阅读全文
posted @ 2018-07-06 16:55 zzfx 阅读(274) 评论(0) 推荐(0) 编辑
摘要:容量、操作、运算(两个集合类)。 核心是迭代器、比较器、数组、链表、哈希表。 阅读全文
posted @ 2018-07-06 16:47 zzfx 阅读(109) 评论(0) 推荐(0) 编辑
摘要:约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 1.8的HashMap注释。 size size表示HashMap中存放KV的数量(为链表和树中的KV的总和)。 capacity capacity译为容量。capacity就是指HashM 阅读全文
posted @ 2018-07-06 15:20 zzfx 阅读(7520) 评论(2) 推荐(1) 编辑
摘要:1.public V get(Object key) { 2. if (key == null) 3. return getForNullKey(); 4. int hash = hash(key.hashCode()); 5. for (Entry<K,V> e = table[indexFor( 阅读全文
posted @ 2018-07-06 15:12 zzfx 阅读(159) 评论(0) 推荐(0) 编辑
摘要:递归的本质在于部分计算的延迟; 考察二叉树的先根遍历,部分计算在递归时会存储在函数调用栈的下一条命令的内存中。 所谓的下一条命令即为未完成的计算。 在二叉树遍历中,未完成的节点的计算被存储在函数调用栈的栈帧中,具有优先计算权的工作完成以后,这些存储的计算就会被执行。 阅读全文
posted @ 2018-04-26 10:52 zzfx 阅读(119) 评论(0) 推荐(0) 编辑
摘要:背景:这几天在看《高性能Mysql》,在看到创建高性能的索引,书上说mysql的存储引擎InnoDB采用的索引类型是B+Tree,那么,大家有没有产生这样一个疑问,对于数据索引,为什么要使用B+Tree这种数据结构,和其它树相比,它能体现的优点在哪里? 看完这篇文章你就会了解到这些数据结构的原理以及 阅读全文
posted @ 2018-04-23 17:55 zzfx 阅读(654) 评论(0) 推荐(0) 编辑
摘要:AVL树: 最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树。 红黑树: 平衡二叉树,广泛用在C++的STL中。如map和set都是用红黑树实现的。 B/B+树: 用在磁盘文件组织 数据索引和数据库索引。 Trie树(字典树): 用在统计和排序大量字 阅读全文
posted @ 2018-04-23 17:48 zzfx 阅读(1033) 评论(0) 推荐(0) 编辑
摘要:程序的本质 程序的本质是实现与操作系统或者CPU的沟通。 编程思想与以人为本-编程的本质 编程是把需求打碎然后按照编程思想的指导进行重组的过程; 编程的本质:按照编程思想的指导,将需求拆分然后重装成模型,进一步转化成程序的过程; 需求到程序需要三次转化过程:1)想法转化成需求文档;2)需求文档转化为 阅读全文
posted @ 2017-09-26 16:56 zzfx 阅读(179) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/doon/article/details/5946862 1。何谓数据和界面分离? GUI,即Graphic User Interface,人机交换界面。连接两端:终端用户--内部逻辑。它关联到两个角色:使用者和开发者。 用户希望看到的是,一个一个的界面元素 阅读全文
posted @ 2017-08-10 18:05 zzfx 阅读(1074) 评论(0) 推荐(0) 编辑
摘要:二维码与json都是数据交换格式; UI数据是人机数据交换格式。 阅读全文
posted @ 2017-06-21 19:43 zzfx 阅读(1189) 评论(0) 推荐(0) 编辑
摘要:数据结构公式:Data_Structure=(D,R); 只要数据元素与数据(组织关系)能够保持;同一个数据(结构)可以在各种存贮形式间进行转换。 字节流或字符串是所有转化的中间节点(中转站)。相当于unicode在不同字符集中转换的作用一样。 数据结构中的结构信息,在存贮时需要额外的信息进行存贮。 阅读全文
posted @ 2017-06-21 19:34 zzfx 阅读(305) 评论(0) 推荐(0) 编辑
摘要:网络通信协议本质上是一个数据结构的描述; 所有的报文格式都在描述:1)报文有哪些要素构成;2)报文的内容如何组织。 时序描述的是报文出现的先后顺序。 http://www.cnblogs.com/feng9exe/p/6825169.html 三要素 三要素 网络通信协议由三个要素组成。 语义,解释 阅读全文
posted @ 2017-06-11 20:08 zzfx 阅读(1223) 评论(0) 推荐(0) 编辑
摘要:树:树状图; 地球:通信圆; 鱼:鱼骨图; 蜈蚣:线性结构; 树:目录结构组织。 目标+组织。 等等; 描述事物是如何组织到一起的。 以上的结构都用于描述事物的组织形式。 组织部件+功能部件。 阅读全文
posted @ 2017-06-01 19:20 zzfx 阅读(300) 评论(0) 推荐(0) 编辑

1