2.6k 2 分钟

# 简介 # 适合范围 大量数据存储在外部存储器(磁盘等),例如:文件系统,MySQL 索引等。 因为外部存储器 I/O 速度比较慢,如果使用二叉搜索树算法,其树的深度又比较高,则增加了读取数据的次数,从而增加了执行的时间。 # 局部性原理 访问磁盘中的数据,其附近的数据也将会被访问。 因为程序中的数据一般是集中存放的,所以通过预先读取数据,一般为按页读取,这样就减少读取磁盘的次数,从而减少执行的时间。 # B+ 树的特点 非叶子节点只存放 router(相当于 key,与叶子节点 key 区分),叶子节点存放 key 和数据。 叶子节点 x 的 nextNode...
9.8k 9 分钟

# 定义 2-3-4 树是多路搜索树;4 阶的 B 树;所有结点有序 是一棵自平衡树;每个叶子结点的深度一样、完美平衡。 叶子结点除外,内部结点只能是:2 结点、3 结点、4 结点 # 结点类型 2 结点:1 个元素,2 个子结点 3 结点:2 个元素,3 个子结点 4 结点:3 个元素,4 个子结点 # 插入 插入操作都是在叶子结点进行合并或分裂。 # 插入情形 2 - 结点、3 - 结点:直接合并(nodeMerge) 4 - 结点:分裂(nodeSplit) a. 4 - 结点先分裂,插入结点再和左、右子结点合并 b. 分裂后的结点继续向上合并或再分裂 # 代码实现 #...
7.9k 7 分钟

# 定义 是一棵二叉树;每个结点都有一个可比较的键,以及关联的值。 任何结点中的键大于该结点左子树中所有结点中的键,且小于该结点右子树中所有结点的键(有序性) # 遍历 主要讨论的是深度遍历,根据根结点的访问优先级,又可以分为:前(先)、中、后序遍历。 获取结点的前驱后继时,需要用到这部分知识点,而且平衡树的调整操作中也涉及到。 # 前序遍历 前(先)序遍历(Pre-Order Traversal):先根结点,再左右子树。 # 中序遍历 中序遍历(In-Order Traversal):先左子树,再根结点,最后右子树。 # 后序遍历 后序遍历(Post-Order...
2.2k 2 分钟

# 基础 输入最大消息长度:2642^{64}264 bits 输出:256 bits 大端 (Big endian) 为主 word = 32 bits; block = 512 bit, 16 words; # 位操作符号 w = length of word. SHR 右移 ROTR 循环右移 ROTL 循环左移 SHR^n(x) = x>>nROTR^n(x) = (x>>n) OR (x<<(w-n))ROTL^n(x) = (x<<n) OR (x>>(w-n))ROTL^n(x)...
11k 10 分钟

# 线程的管理 # 线程的创建和运行 继承 Thread,重写 run 方法并执行 start 方法。 实现 Runnable 接口的 run 方法,并传递给 Thread 实例并执行 start 方法。 // File1: 继承 Threadpublic class MyThread1 extends Thread { @Override public void run() { // do something! } public static void main(String[] args) { new...
9.8k 9 分钟

# 运行时数据区域 # 程序计数器 是一块较小的内存空间,当前线程所执行的字节码的行号指示器。 仅概念模型,各 JVM 实现不一样。 字节码解释器读/写该计数器。 各线程独立储存计数器,称 “线程私有” 内存。 线程正执行 Java 方法,计数器记录的是正在执行的虚拟机字节码指令地址。 线程正执行 Native 方法,计数器值为空(Undefined); 此内存区域是唯一一个在 Java 虚拟机规范中未规定任何 OutOfMemoryError 情况的区域。 # Java 虚拟机栈 是 Java 方法执行的内存模型;每个方法在执行的同时都创建一个栈帧(Stack...
14k 13 分钟

# 知识点 OSI 七层模型分别对应着五层模型的哪一部分 OSI 七层模型: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 TCP/IP 四层模型: 网络接口层(链接层)、网络互联层(网际层)、传输层、应用层 五层模式: 将 OSI 模型和 TCP/IP 模型对比,因此其实还是 TCP/IP 的四层,只不过将网络接口层拆分为物理层和数据链路层。 物理层: 在局部局域网上传送数据帧,针脚、电压、线缆、集线器、中继器、网卡、接口卡等。 数据链路层: 网络寻址、错误侦测和改错,逻辑链路控制(LLC)子层、介质访问控制(MAC)子层 网络层:...
5.8k 5 分钟

# 电信号传输 TCP/IP 数据 # 协议栈 TCP、UDP、ICMP IP、ARP 一般来说,浏览器、邮件等应用程序使用 TCP 协议;DNS 查询这种收发较短的控制数据的时候则使用 UDP。 ICMP 用于告知网络包传送过程中产生的错误和各种控制信息 ARP 用于根据 IP 地址查询 MAC 地址 # 套接字的实体 套接字是抽象概念,那它的实体代表什么呢? 在协议栈内部,有一块存放控制信息的内存空间,记录了用于通信操作的控制信息。例如:对象的 IP 地址、端口号、通信操作的进行状态等。 # 查看套接字信息 Windows 下: netstat -anoProto Local...
2.4k 2 分钟

# 浏览器访问资源 # URL 统一资源定位符(Uniform Resource Locator) # 格式 # HTTP 协议 http://user:password@www.example.com:80/dir/file1.htm 协议 用户名、密码,可省略 web 服务器域名 端口,可省略 文件路径名 # FTP 协议 ftp://user:password@ftp.example.com:21/dir/file1.htm 协议 用户名、密码,可省略 FTP 服务器域名 端口,可省略 文件路径名 #...
546 1 分钟

# Feign 原理简述 @EnableFeignClients 开启扫描,扫描包下的所有 @FeignClient,然后注入到 IOC 容器中。 调用 feign 接口,通过 JDK 动态代理生成 RequestTemplate。 RequestTemplate 是模版,包含请求所有信息,然后生成 Request,Request 交给 client 处理,client 默认是 JDK 的 HTTPUrlConnection,也可以是 OKHttp、Apache 的 HTTPClient 等。 client 封装成 LoadBalanceClient,结合 ribbon...