上一页 1 ··· 4 5 6 7 8 9 10 11 下一页
摘要: 跳跃表 在每个节点维持多个指向其他节点的指针,达到快速访问节点的目的。Redis使用跳跃表作为有序集合键的底层实现之一。 5.1 跳跃表的实现 redis.h/zskiplistNode表示跳跃表节点。redis.h/zskiplist保存跳跃表节点的相关信息:节点数量、指向表头表尾节点的指针等。 阅读全文
posted @ 2021-02-21 15:54 walker993 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。 4.1 字典的实现 Redis的字段使用哈希表作为底层实现。 4.1.1 哈希表 typedef struct ditch{ //哈希表数组 dictEntry **table; // 阅读全文
posted @ 2021-02-21 15:05 walker993 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 链表提供了高效的节点重排,顺序性节点访问,并可以通过增删节点灵活调整链表的长度。链表是双向无环的。 3.1 链表和链表节点的实现 1. 节点 typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode * 阅读全文
posted @ 2021-02-21 13:49 walker993 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 在redis中,默认字符串的表示类型是SDS(简单动态字符串),C语言传统的字符串表示只在很少的情况下用到。 2.1 SDS的定义 SDS结构: char buf[];用于保存字符串,会在字符串结尾自动添加一个空字符,遵循C字符串结尾的惯例,即用N+1字符串数组表示长度为N的字符串 unsigned 阅读全文
posted @ 2021-02-21 11:15 walker993 阅读(46) 评论(0) 推荐(0) 编辑
摘要: Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值的底层细节。 12.1 Java内存模型 12.1.1 主内存和工作内存 所有变量都存储在主内存中,每个线程有自己的工作内存,不同的线程不能互相访问工作内存,所有数据必须从主内存中获取。 阅读全文
posted @ 2021-02-19 19:56 walker993 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 执行引擎的输入是字节码的二进制流,输出是执行结果。 8.1 运行时栈帧结构 栈帧,方法执行时存储必要信息的数据结构。存在于虚拟机栈,每一个栈帧包含了局部变量表、操作数栈、动态连接、方法返回地址和附加信息。 8.1.1 局部变量表 存放方法参数和方法内部定义的局部变量。具体大小在class文件,方法表 阅读全文
posted @ 2021-02-15 15:58 walker993 阅读(49) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 7.2 类加载机制 一个类型从被加载到虚拟机内存中开始,到卸载到内存为止,整个生命周期将会经历加载、验证、准备、解析、初始化、使 阅读全文
posted @ 2021-02-10 15:42 walker993 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 当一个线程处于阻塞状态时,需要提供一种唤醒机制。例: 1 public static void main(String[] args) { 2 Thread t = new Thread(() -> { 3 try { 4 Thread.sleep(5000); 5 } catch (Interru 阅读全文
posted @ 2021-01-25 15:28 walker993 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1. 文件筛选 Java8之前的写法 1 File[] hiddenfiles = new file(".").listFiles(new FileFilter(){ 2 public boolean accept(File file){ 3 return file.isHidden(); 4 } 阅读全文
posted @ 2021-01-18 10:52 walker993 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 机器码:CPU可以直接运行的指令。 字节码:二进制代码文件,需要由直译器转义后变成机器码。 6.2 无关性的基石 Java虚拟机的无关性包括平台无关性(一次编写,到处运行)和语言无关性(支持其他语言运行在Java虚拟机上)。Java规范包括了《Java虚拟机规范》和《Java语言规范》,可见从设计之 阅读全文
posted @ 2021-01-12 20:05 walker993 阅读(160) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 下一页