05 2016 档案
摘要:之前使用线程池都是通过Executors.new...这种方式创建,因为Doug Lea已经给我们做了相对通用的设置,这么做的话简单又安全。但是有时候根据不同的场景可能需要进行一些自定义的操作。 比如,我需要一个初始情况下,使用10条核心线程运行任务,但是考虑到服务器的资源有限,我们希望限制在最多只
阅读全文
摘要:这是以前做的笔记,前东家的数据库分库分表策略,感觉挺有借鉴价值。 假设数据库数量为10 分库分表键为某个ID: hash = Md5(key).subString(0,4); bucket_index = hash.subString(0,3); table_index = hash.subStri
阅读全文
摘要:工作中有用到Redis滤重队列。 原来的方法如下: 方法一 + 为了保证操作原子性,使用Redis执行Lua脚本。 + 在脚本中的逻辑是,如果队列不超过某个数值,进行一次lrem操作(队列使用list结构),然后将新元素入列。 优点: 简单,直观。 缺陷: 1. lrem的时间复杂度为O(N),N为
阅读全文
摘要:为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平。 I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题。它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数,通知用户已经准备完毕。用户收到通知,就可以进行IO操作了。这种机制大大的提高了系统的吞吐量。I/O多
阅读全文