摘要: mysql的社区版中采用的连接方法就是One-Connection-Per-Thread,这种方式最大的问题在于,当连接数非常多时,线程上下文切换成本高(mongodb也为每个连接创建一个线程,有一个listener线程会使用select监听端口,监听到连接时就创建一个线程为该连接服务)。从mysq 阅读全文
posted @ 2017-08-28 22:03 holoyong 阅读(1925) 评论(0) 推荐(0) 编辑
摘要: mongodb的MMAPV1存储引擎锁的最小粒度为Collection级别,包括读锁(S)、写锁(X),并且还提供了意向读锁(IS)、意向写锁(IX),意向锁会加在比读写锁更高的粒度上,比如在Collection上加了读锁,相应的会在db、global加意向读锁。 意向锁并不是真正的锁,只是表达了加 阅读全文
posted @ 2017-08-28 18:46 holoyong 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: Database 每个Database(DB)由一个.ns文件及若干个数据文件组成 数据文件从0开始编号,依次为mydb.0、mydb.1、mydb.2等,文件大小从64MB起,依次倍增(1倍),最大为2GB。 Namespace 每个DB包含多个namespace(对应mongodb的collec 阅读全文
posted @ 2017-08-28 16:49 holoyong 阅读(321) 评论(0) 推荐(0) 编辑
摘要: NioEventLoop是ServerSocketChannel和SocketChannel通用的EventLoop,从NioEventLoop的执行逻辑开始 下面分别对NioMessageUnsafe以及NioByteUnsafe的read操作进行分析 NioMessageUnsafe用于Serv 阅读全文
posted @ 2017-08-26 22:48 holoyong 阅读(506) 评论(0) 推荐(0) 编辑
摘要: ServerBootstrap在bind时,主要做了3个操作:init、register、bind init ServerBootstrapAcceptor主要就是将channel注册到selector上 register register和bind都涉及到一个接口io.netty.channel. 阅读全文
posted @ 2017-08-26 18:34 holoyong 阅读(500) 评论(0) 推荐(0) 编辑
摘要: DiscardServer 1 package io.netty.example.discard; 2 3 import io.netty.bootstrap.ServerBootstrap; 4 5 import io.netty.channel.ChannelFuture; 6 import i 阅读全文
posted @ 2017-08-26 15:45 holoyong 阅读(504) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.Executor java.util.concurrent.ExecutorService java.util.concurrent.ThreadPoolExecutor ThreadPoolExecutor的核心部件就是workQueue和workers, 阅读全文
posted @ 2017-08-25 22:30 holoyong 阅读(281) 评论(0) 推荐(0) 编辑
摘要: ehcache3的evict策略是怎样的呢?从put操作可以一窥,这里以单层heap cache为例。 ehcache3的evict策略不可设置,只能通过eviction-advisor建议evict,但这种建议得不到保证且低效。ehcache3的evict策略其实是一种基于样本的LRU算法,即在全 阅读全文
posted @ 2017-08-24 17:22 holoyong 阅读(709) 评论(0) 推荐(0) 编辑
摘要: ehcache对于offheap是如何管理的呢?从get操作可以一窥,这里以heap+offheap分层cache为例。 cache由heap+offheap组成时,authoritativeTier为OffHeapStore,OffHeapStore也会从map中get元素,该map就是Ehcac 阅读全文
posted @ 2017-08-24 15:46 holoyong 阅读(1432) 评论(0) 推荐(0) 编辑
摘要: 测试kryo与jdk的ObjectOutputStream kryo常用设置 InstantiatorStrategy即初始化策略,默认kryo在反序列化对象时需要对象的类有一个零参数构造器,该构造器可以是private的,kryo通过反射调用该构造器来实例化对象。如果没有这样一个构造器,就需要使用 阅读全文
posted @ 2017-08-23 23:45 holoyong 阅读(2548) 评论(0) 推荐(0) 编辑