《Redis设计与实现》一书的重要内容摘抄,方便回看复习
1.数据库要点
Redis 服务器的所有数据库都保存在 redisServer.db 数组中, 而数据库的数量则由 redisServer.dbnum 属性保存。
客户端通过修改目标数据库指针, 让它指向 redisServer.db 数组中的不同元素来切换不同的数据库。
数据库主要由 dict 和 expires 两个字典构成, 其中 dict 字典负责保存键值对, 而 expires 字典则负责保存键的过期时间。
因为数据库由字典构成, 所以对数据库的操作都是建立在字典操作之上的。
数据库的键总是一个字符串对象, 而值则...
《Redis设计与实现》一书的重要内容摘抄,方便回看复习
1.简单动态字符串要点
Rredis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态字符串)作为字符串表示。
比起C字符串,SDS具有以下优点:
1) 常数复杂度获取字符串长度(len属性保存长度)
2) 杜绝缓冲区溢出(修改时对空间进行检查)
3) 减少修改字符串长度时所需的内存重分配次数(空间预分配、惰性空间释放)
4) 二进制安全(可以保存任意格式的二进制数据)
5) 兼容部分C字符串函数
数据结构
12345678910111213struc...
核心概念
组件
概念
Topology
一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显式地杀死它
Nimbus
负责资源分配和任务调度,类似Hadoop的JobTracker
Supervisor
负责接收Nimbus分配的任务,启动和停止属于自己管理的Worker进程,类似Hadoop的TaskTracker
Worker
运行具体处理组件逻辑的进程
Executor
Storm 0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的...
C++访问权限
继承方式
C++中继承的方式还有多种,也分别都用public、protected、private表示。这与Java不一样,Java只有继承的概念,默认是public继承的。
三种继承方式不影响子类对父类的访问权限,子类对父类只看父类的访问控制权
继承方式是为了控制子类(也称派生类)的调用方(也叫用户)对父类(也称基类)的访问权限
public、protected、private三种继承方式,相当于把父类的public访问权限在子类中变成了对应的权限。 如protected继承,把父类中的public成员在本类中变成了protected的访问控制权限;private继承...
《深入理解java虚拟机》的重点记录,方便复习
对象生命周期引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。
实现简单,判断效率也很高,但是很难解决对象之间相互循环引用的问题。
可达性分析算法通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象不可用的。
4种GC Roots对象:
虚拟机栈(栈帧中的本地变量表)中引用的对象...
《深入理解java虚拟机》的重点记录,方便复习
Java内存区域
程序计数器(Program Counter Register)
一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器
线程私有,每一个JVM线程都有独立的程序计数器,各线程间的计数器互不影响,独立存储,确保线程切换后能够恢复到正确的执行位置
Java虚拟机栈(Java Virtual Machine Stack)
线程私有,与线程的生命周期相同
描述java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法...
这里的内容只是从下边来源的系列文章摘抄的一些关键内容,方便复习来源:《深入理解Java集合框架》系列文章
ArrayList
顺序容器,底层通过数组实现
每个ArrayList都有一个容量(capacity,底层数组的实际大小),添加元素时容量不足,容器会自动增加底层数组的大小(原来的1.5倍)
size(), isEmpty(), get(), set()方法均能在常数时间内完成(O(1)复杂度)
add()方法的时间开销跟插入位置有关,addAll()方法的时间开销跟添加元素的个数成正比,其余方法大都是线性时间
没有实现同步(synchronized),如果需要多个线程并发访问...