ReZero's Utopia.

ReZero's Utopia.

Everything is permitted.

TCP
TCP/IP网络连接 注意网络状态的变化 12syn_sent -> established -> fin_wait1 -> fin_wait2 -> time_wait > closedlisten -> syn_rcvd -> established -> closed_wait -> last_ack =======> closed 三次握手 SYN 失败 RTO变化:2**(cat /proc/sys/net/ipv4/tcp_syn_retries[即重传次数上限]) SYN-ACK 失...
Java HashMap & Concurrent Hash Map
为啥拉链用尾插不用头插? jdk 1.7 用的头插,但头插的问题就是resize:因为hash取值后放置是从后往前(头插,逆序链表方向)的,但是在resize时会重计算hash,此时是顺序遍历方向,那么就可能出现一开始A头插在B前,rehash时B后进行rehash导致B头插在A前。这样AB的顺序resize后就不同了。这样就会使得多线程时对引用的指向调整有问题,有可能造成循环链表了。尾插法的顺序和rehash时遍历的顺序一致自然就不会有这个问题。 Collections.synchronizedMap 内部维护了一个 map 用来引用需要改造的map,通过加 mutex 排他...
Mysql InnoDB
Mysql InnoDB InnoDB In-Memory Structures1、Buffer Pool: 未落盘前数据的缓存位置 - LRU,链表 Change Buffer: 要修改数据不在内存中时对应页修改的记录位置 记录到 Change Buffer时,同时记录 redo log,然后再慢慢把数据 load 到内存,load 过来后,再把 Change Buffer 里记录的修改,应用到内存(BufferPool)中,这个动作叫做 merge;而把内存数据刷到磁盘的动作,叫 purge: change buffer 只应用于二级索引(辅助索引),因为聚簇索引是唯一的,即每...
(转) JVM
本文内容笔记主要来自 mashibing: http://www.mashibing.com/ 以及深入理解JVM虚拟机 以及深入拆解Java虚拟机(郑雨迪)极客时间 https://time.geekbang.org/column/article/41245 编译在 HotSpot 里面,上述翻译过程有两种形式: 第一种是解释执行,即逐条将字节码翻译成机器码并执行; 第二种是即时编译(Just-In-Time compilation,JIT),即将一个方法中包含的所有字节码编译成机器码后再执行。 Java 字节码基本类型在 Java 中,正无穷和负无穷是有确切的值,在内存中分别等同...
(转) Mysql 索引
索引为什么采用 B+ tree Hash不支持范围查询 二叉树树高很高,只有B树跟B+有的一比。 B树一个节点可以存储多个元素,相对于完全平衡二叉树整体的树高降低了,磁盘IO效率提高了。 而B+树是B树的升级版,只是把非叶子节点冗余一下,这么做的好处是为了提高范围查找的效率。提高了的原因也无非是会有指针指向下一个节点的叶子节点。 explain索引命中id is null 和 id = 1 都能命中索引 (除此之外的大多都不能命中索引,比如 负向 != 比较 > < 范围 between 等) 但是 id is null or id = 1 还是触发 全表扫描(ty...
(转)Mysql Transaction
MySql Transaction事务如何保证 原子性: undo log binlog记载的是update/delete/insert这样的SQL语句,而redo log记载的是物理修改的内容(xxxx页修改了xxx)。即redo log 记录的是数据的物理变化,binlog 记录的是数据的逻辑变化。 binlog的作用是复制和恢复而生的。 主从服务器需要保持数据的一致性,通过binlog来同步数据。 如果整个数据库的数据都被删除了,binlog存储着所有的数据变更情况,那么可以通过binlog来对数据进行恢复。而redo log 存储的是物理数据的变更,如果我们内存的数据已经...
(转) Redis 基础知识笔记记录
文章笔记参考链接来自作者 敖丙 开源项目:https://github.com/AobingJava/JavaFamily 以及 Redis 设计与实现 以及 钱大的 Redis 深度历险 Redis 常见应用 记录帖子的点赞数、评论数和点击数 (hash)。 记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset)。 记录帖子的标题、摘要、作者和封面信息,用于列表页展示 (hash)。 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset)。 缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash)。 记录帖子的相关...
Site Architecture
SummaryThe whole process of evolutionThe initial tiny site Application server needs much stronger CPU to control the complex business. Database server need much faster disk and larger memory to get disk retrieval & data cache faster So as file server need the disk. 123Note: There are 80...
(译)缓存参数无关算法
缓存参数无关算法 笔记参考链接: Cache Oblivious Introduce blog Cache Oblivious paper 假设 硬盘 存在 M bits,以 B bits 作为分页大小,缓存按页加载,介绍相关的缓存参数无关的命中算法,这里的参数指 B 转化问题: N 个整数, 按 B 个 一页,求最快找到 N 所在页的算法 算法低效但是参数无关: 二分查找假设 N 个整数本身是有序的,采用方法: 总长 O(N) 所以计算查找次数为 O(logN -logB),因为二分范围降到 B 时直接取出该页 参数无关是因为该算法并不知晓 B 的值,它只是按照标准的二分查找去搜(调用...
Netty note
netty note线程数影响原因Nio影响 Nio 线程数的因素是客户端延时,网络延时,服务端延时。也就是说当客户端建立连接后,因为延迟的原因,没有做出响应回复,建立的连接就会一直被占用,消耗的线程数也就会剧增。 BIOBio 不受客户端网络延时的影响而增线程,它主要受服务端(比如慢sql)会影响到线程数。 Tomcat 阻塞式 IO 模型
avatar
ReZero
大屁水饺的理想国.