git merge,rebase,reset

老分不清怎么用git merge 与 rebase 区别.
撤回的时候使用git reset 又忘了具体参数.

float_and_double

浮点数是指用符号,尾数,基数和指数这四部分来表示的小数。因为计算机内部使用的是二进制数,所以基数自然是2。
小数部分是原十进制数值变为二进制后再经过规格化,规格化后会省去唯一的整数1.

go 内存对齐

内存对齐是指首地址对齐,而不是说每个变量大小对齐

为减少内存对齐带来的 padding 浪费. 构建结构体时,先写大的成员

bloomfilter 库比较

当前问题 存储服务部署时会规划的内存,但是运行一段时候后,会发生oom 很奇怪,存储oom时,dump的堆大小比规划的内存常常小几个GB 存储服务运行一段时候后,容易发生full gc 背景 存储是全局重删的. 每一个节点负责自身数据的重删索引管理. 目前直接把重删索引存储在ssd的文件上,并且使用开放寻址法处理hash冲突问题. 文件是否写满通过hash冲突次数和在这个文件已经保存的hash值总数. 一个索引文件保存的最大数量hash限制为: ((Integer.MAX_VALUE / ENTRY_SIZE) – 100 )的下个质数 ((2**31-1)/37.0-100)的下个质数 为 58039999 算法如何来的,我只能说,第一次见它就是这样算的.可能是考虑到java 对文件内存映射不能 Integer.MAX_VALUE 因此一个keys文件长度最大为 hash_count_limit * ENTRY_SIZE 约等于 2GB左右.