0%

一个开源工具、一款软件,之所以能够流行起来,一定是解决了某些问题。

阅读全文 »

netty 中的 channel 在完成创建和初始化之后,需要注册到 EventLoopGroup 上,这本质上是交给 EventLoop 管理 channel 的各种事件。一个 EventLoopGroup 管理了多个 EventLoop,那么在注册 channel 时,EventLoopGroup 就需要选择一个 EventLoop,然后将其和 channel 关联起来。选择 EventLoop 是一个很高频的操作,该操作是否高效会直接影响 netty 的性能,本文就来聊下 EventLoop 的选择策略。

阅读全文 »

Rpc Agent is a framework, with which you can develop an agent server for a RPC framework.

阅读全文 »

上半年遇到了一次类加载死锁的问题,花了挺长时间才定位到具体原因,因此做个记录,以便下次遇到类似问题时可以快速定位。

阅读全文 »

多线程带来了性能的提升,但是在读写共享变量时也带来了线程安全问题。你可以对共享变量加锁,包括 synchronized 内置锁、ReentrantLock、读写锁等等,这样可以实现多个线程的读写安全。如果每个线程可以独立访问自己的数据,那么就不存在线程安全的问题,前提是可以为每个线程创建副本,副本之间保持独立,这也就是 ThreadLocal 的实现思路。

阅读全文 »

Unix 系统下共有 5 种 I/O 模型:同步阻塞式 I/O、同步非阻塞式 I/O、I/O 多路复用(select 和 poll)、信号驱动式 I/O(SIGIO) 和异步 I/O(POSIX 的 aio_系列函数)

阅读全文 »