04 2017 档案
摘要:1. 向ByteBuffer写入数据之后, 要先执行flip才能进行读取操作 ByteBuffer中有两个关键属性:position与limit 在写入模式的时候,position表示下一个byte会被写入的位置,limit表示这个ByteBuffer可以写入的最大容量 在读取模式的时候,posit
阅读全文
摘要:现代CPU都是多核心+多级缓存架构,比方说我正在使用的这颗i5 6500,就有4颗物理核心,每颗核心独享32K(数据)+32K(指令)的一级缓存,独享256K的二级缓存,4颗核心共享6M的三级缓存 如果我们想要保证工作在不同核心上的线程读取到的数据都是一致的,最简单的做法是保证所有读写操作直接在内存
阅读全文
摘要:我手里维护了一个项目,其功能是用Java模拟一个MariaDB的slave库连接到主库,对从主库传输过来的binlog事件进行监听与分析 碰到一个问题是: 如果主库做了一个很大的修改操作(比方说直接delete了一个百万条数据的表),那么会产生一个很大的binlog事件,这个binlog事件会在我们
阅读全文
摘要:netty4引入了内存池的概念,它的主要思想源自于jemalloc,由于难以理解netty中这一块的代码,我决定先看一看网上的相关文章 官方git jemalloc原理分析 jemalloc和内存管理 更好的内存管理-jemalloc
阅读全文
摘要:先看到了一篇中文文章:谷歌退出有界负载的一致性哈希算法 然后找到了它对应的英文原文 以及它的英文paper,24页 又找到一篇博客,发现已经有人将它在haproxy上实现了,haproxy1.7.5上已经包含了这一算法 依然记得guava包里自带的jump consistent hash算法是多么的
阅读全文
摘要:在生产 - 消费者问题中 newFixedThreadPool的构造参数里的nThreads是最大同时工作的线程数,如果工作线程已满,新提交的任务会被放到一个无界的LinkedBlockingQueue里(等待队列) 如果生产速度大于消费速度,那么会发生任务堆积,等待队列会扩展到内存耗尽 naive
阅读全文