03 2017 档案
《垃圾回收的算法与实现》——引用计数法
摘要:基本概念 在对象中引入计数器(无符号整数),用于记录有多少对象引用了该对象。 通过增减计数器实现对内存的管理。 分配对象时将计数器置1。 更新引用时先对新指定的对象进行计数器加,而后才对旧对象进行减。 在对计数器做减法时,判断其计数器是否等于0,等于0 表示为垃圾,即可进行回收。 在更新引用时就进行
阅读全文
《垃圾回收的算法与实现》——GC标记-清除算法
摘要:基本算法 标记 清除算法由 ==标记阶段== 和 ==清除阶段== 构成。 标记即将所有活动的对象打上标记。 清除即将那些没有标记的对象进行回收。 标记与清除 遍历GC root引用,递归标记(设置对象头中的标志位)对象。 标记时如果标志位表示已经标记过则可以跳过。 遍历对象有深度优先与广度优先两种
阅读全文
《Mysql技术内幕,Innodb存储引擎》——事物
摘要:事物 事物中的操作要么都成功要么都不做,这是事物的目的,也是事物模型与文件系统的重要特征之一。 扁平事物(Flat Transactions) 所有操作都处于同一层次,要么都做要么都执行要么都回滚,无法提交或回滚一部分。因为其模型简单而广泛使用。 带保存点的扁平事物(Flat Transaction
阅读全文
《Mysql技术内幕,Innodb存储引擎》——锁
摘要:lock与latch 在数据库中lock与latch分别指不同的所。 latch:可分为互斥量(mutex)和读写锁(rwlock),目的在于保证数据库内部的结构中共享资源并发时能够正确操作,其对象主要是内存中的各种数据库的数据结构如LRU等。 lock:用来锁定数据库中的对象,如表、页、行。一般l
阅读全文
《Mysql技术内幕,Innodb存储引擎》——索引与算法
摘要:B+树 B+树中,所有记录节点都按照键值的大小顺序放在同一层叶子节点,各个叶子节点指针进行连接。 图中指针是单向的,但是书上的图是双向的,而且旋转应该也是双向才能完成) B+树插入处理 Leaf Page满 | Index Page 满|操作 | | No|No|直接插入到叶子节点 Yes|No|1
阅读全文
《Mysql技术内幕,Innodb存储引擎》——文件、表
摘要:文件 日志 错误日志 对Mysql启动、运行和关闭过程进行记录,通过 查看日志文件位置。 慢查询日志 Mysql启动时设置一个阈值,运行时间超过的所有SQL语句将记录到该日志。 设置时间阈值, 如果运行的SQL没使用索引则也记录慢查询日志, 表示每分钟允许记录到日志的SQL语句次数。 二进制日志 b
阅读全文
《Mysql技术内幕,Innodb存储引擎》——Innodb体系结构
摘要:Innodb体系结构 Innodb存储引擎主要包括内存池以及后台线程。 内存池:多个内存块组成一个内存池,主要维护进程/线程的内部数据、缓存磁盘数据,修改文件前先修改内存、redo log 后台线程:刷新内存池中的额 内存 缓冲池 Innodb的数据以页的形式存储在磁盘,因此采用内存作为缓存页数据。
阅读全文
zookeeper基础知识
摘要:Zookeeper简介 ZooKeeper设计目的 1. 最终一致性 client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。 2. 可靠性 具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。 3. 实时性 Zookee
阅读全文
分布式锁的一点理解
摘要:以下内容为目前自己理解的总结,如有错误请大家指正。 什么是锁 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执
阅读全文