ServerSocketChannel是如何初始化和绑定到EventLoop的?
ServerBootstrap 启动时需要初始化 ServerSocketChannel 并将其绑定到 EventLoop 上,用于处理该 channel 上产生的各种事件。那么 ServerSocketChannel 是如何完成创建和初始化的?又是如何绑定到 EventLoop 上的?
ServerBootstrap 启动时需要初始化 ServerSocketChannel 并将其绑定到 EventLoop 上,用于处理该 channel 上产生的各种事件。那么 ServerSocketChannel 是如何完成创建和初始化的?又是如何绑定到 EventLoop 上的?
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.
「How Tomcat works」这本书的第一个例子是读取文件并输出,如果读取的文件符合 HTTP 协议格式,那么就可以输出到浏览器并展示。
上半年遇到了一次类加载死锁的问题,花了挺长时间才定位到具体原因,因此做个记录,以便下次遇到类似问题时可以快速定位。
多线程带来了性能的提升,但是在读写共享变量时也带来了线程安全问题。你可以对共享变量加锁,包括 synchronized 内置锁、ReentrantLock、读写锁等等,这样可以实现多个线程的读写安全。如果每个线程可以独立访问自己的数据,那么就不存在线程安全的问题,前提是可以为每个线程创建副本,副本之间保持独立,这也就是 ThreadLocal 的实现思路。
Unix 系统下共有 5 种 I/O 模型:同步阻塞式 I/O、同步非阻塞式 I/O、I/O 多路复用(select 和 poll)、信号驱动式 I/O(SIGIO) 和异步 I/O(POSIX 的 aio_系列函数)
之前研究了下 synchronized
的轻量级锁实现源码,在 轻量级锁加锁&解锁过程 这篇文章里记录了加锁和解锁过程中的流程,本文主要聊聊与之相关的一些问题。
本文是 MyBatis-Spring 官方文档的阅读笔记,方便后续查阅。