摘要:
Redis持久化 因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。 Redis支持两种持久化方式内存快照RDB(Redis DataBase)和日志AOF(Append 阅读全文
摘要:
Redis数据库 1.Redis服务器 Redis服务器将所有数据库都保存在服务器状态server.h/redisServer结构的db数组中,db数组的每个项都是一个server.h/redisDb结构,每个redisDb结构代表一个数据库: dbnum属性的值由服务器配置的database选项决 阅读全文
摘要:
Redis对象类型 Redis基于基础的数据结构创建的对象: 字符串对象、 列表对象、 哈希对象、 集合对象 有序集合对象。 对象回收:Redis对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放;Redis通过引用计数技术实现了对象共享机 阅读全文
摘要:
Redis主要数据结构:简单动态字符串(SDS)、双端链表、字典、跳跃表、整数集合、压缩列表和快速列表; 一、简单动态字符串(SDS): Redis没有直接使用C语言中的传统的字节数组保存字符串,而是自行构建了简单动态字符串(SDS),C字符串只是作为简单动态字符串(SDS)的字面量,用于在无需对字 阅读全文
摘要:
下面列出的这些其中有一些是我面试时遇到的,但是当时自己还不会,所以在网站上找了以下,然后整理出来,加强记忆 感谢码洞将这些问题整理出来: Redis有哪些数据结构? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 如果你是Redis中高级用户,还需要加上下面 阅读全文
摘要:
HashMap源码分析 HashMap的底层实现是面试中问到最多的,其原理也更加复杂,涉及的知识也越多,在项目中的使用也最多。因此清晰分析出其底层源码对于深刻理解其实现有重要的意义,jdk1.8之后其设计与实现也有所改变。 在Java集合类中最常用的除了ArrayList外,就是HashMap了。J 阅读全文
摘要:
LinkedList源码分析 LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的。基于链表也决定了它在随机访问方面要比ArrayList逊色一点。除此之外,LinkedList还提供了一些可以使其作为栈、队列、 阅读全文
摘要:
Vector源码解析 首先说一下Vector和ArrayList的区别: (1) Vector的所有方法都是有synchronized关键字的,即每一个方法都是同步的,所以在使用起来效率会非常低,但是保证了线程安全;而ArrayList的全部方法都是非同步的,所以相对Vector的效率会更高,所以它 阅读全文
摘要:
ArrayBlockingQueue源码解析 ArrayBlockingQueue是一个阻塞式的队列,继承自AbstractBlockingQueue,间接的实现了Queue接口和Collection接口。底层以数组的形式保存数据(实际上可看作一个循环数组)。常用的操作包括 add ,offer,p 阅读全文
摘要:
ArrayList源码分析 ArrayList就是动态数组,是Array的复杂版本,它提供了动态的增加和减少元素、灵活的设置数组的大小。 一、类声明 1)AbstractList提供了List接口的默认实现。 2)List接口定义了列表必须实现的方法。 3)RandomAccess是一个标记接口,接 阅读全文