引用计数法与可达性分析 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在 Java 虚拟机的语境下,垃圾指的是死亡的对象所占据的堆空...
引用计数法与可达性分析 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。在 Java 虚拟机的语境下,垃圾指的是死亡的对象所占据的堆空...
可见性、原子性和有序性问题 这些年,CPU、内存、I/O设备的不断迭代,不断朝着更快的方向努力。但是,在这个快速发展的过程中,有一个核心核心矛盾一直存在,就是这三者的速度差异...
首先先引入官网对Zookeeper介绍: 意思就是说:Zookeeper是一个集中服务,用于维护配置信息,命名,提供分布式同步和提供组服务。而这类类型的服务被分布式程序使用的...
B+树:MySQL数据库索引的数据结构 1.理清需求 对于数据库两个最基本的查询需求: 根据某个值查找数据,比如select * from user where id = 1...
位图 位图可以看成是一种比较“特殊”的散列表。比如有1千万个整数,要查找某个整数是否在这1千万个整数中,就可以使用位图。 如果整数的范围在1到1亿之间,申请一个大小为1亿、整...
“搜索”算法 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个顶点出发,到另一个顶点的路径。图上的搜索算法有深度优先、广度...
图 图的概念 图(graph)和树比起来,是一种更加复杂的非线性表结构。 顶点&边 树中的元素成为节点,图中的元素叫做顶点(vertex)。图一个顶点可以与任意其他顶点建立连...
这种做法和你说的一样吧,每次先加1然后再取模,直接赋值给tail或head,而不是等到用的时候再计算指针的位置。
数据结构与算法--队列队列的结构 可以把队列想象成排队买票,先来的先买,后来的人只能站在末尾,不允许插队。 队列最大的特点就是先进先出,主要的两个操作是入队和出队。跟栈一样,它既可以用数组来实现,...
二叉树基础 树(Tree) 树是一种非线性表结构,比线性表的数据结构要复杂的多: 树的种类树、二叉树二叉查找树平衡二叉查找树、红黑树递归树 “树”的特征 “树”这种数据结构里...
散列表 散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。散列表两个核心问题是散列函数设计和散列冲突解决。散列冲突有两种...
基本概念: JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、一个堆和一个存储方法区。JVM是运行在操作系统之上的,它与硬件没有...
elasticsearch从6.3版本开始支持SQL查询语言,SQL查询时ElasticSearch XPack商用插件包中的功能。使用SQL进行查询es有易上手、学习成本低...
跳表 = 链表 + 多级索引 跳表使用空间换时间的设计思路,通过构建多级索引来提高查询的效率,实现了基于链表的“二分查找”。跳表是一种动态数据结构,支持快读的插入、删除、查找...
二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间...
队列的结构 可以把队列想象成排队买票,先来的先买,后来的人只能站在末尾,不允许插队。 队列最大的特点就是先进先出,主要的两个操作是入队和出队。跟栈一样,它既可以用数组来实现,...
栈的基本结构 后进先出,先进后出,就是典型的“栈”结构。 从栈的操作特性上来看, ,只允许在一端插入和删除数据。 从功能上来说,数组或链表可以替代栈,但特定的数据结构是对特定...
空间换时间&时间换空间 空间换时间的设计思想:当内存空间充足的时候,为了追求代码更快的执行速度,就可以选择空间复杂度相对较高、使时间复杂度相对很低的算法或者数据结构。时间换空...
在软硬件接口中,cpu帮我们做了什么事?我们常说,cpu就是计算机的大脑。cpu的全程是Central Processing Unit,中文是中央处理器。 上一节说了,从硬件...