源码系列
文章平均质量分 91
深度解析Java库、开源中间件源码
暴躁的鱼
leetcode: https://leetcode.cn/u/maxatom/
掘金: https://juejin.cn/user/606586149804062/posts
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty源码-业务流程之请求处理
findContextInbound找到一个责任节点(Inbound类型)执行,MASK_CHANNEL_READ是channel read掩码。MASK_ONLY_INBOUND(下图2)表示所有Inbound事件掩码集合,MASK_CHANNEL_READ和MASK_ONLY_INBOUND与运算结果不是0,就表示执行channelRead事件原创 2024-10-03 12:24:12 · 855 阅读 · 0 评论 -
FutureTask源码解析
Java创建线程一般用Thread,Runable。如果需要返回结果,就用Callable。Callable运行需要配合Future。Future是一个接口,一般用FutureTask实现类去接收Callable任务返回的结果。FutureTask是同步非阻塞执行的任务,他不会主动通知你结果。原创 2024-10-01 09:30:00 · 713 阅读 · 0 评论 -
Netty源码-业务流程之写数据
我们看到下图中,先通过findContextOutbound方法找到下一个责任节点再执行。如果我们自定义方法里用的是ctx.writeAndFlush(写入并发送数据),那么下面就是走第一个分支,否则走第二个分支,继续进入next.invokeWrite我们来到AbstractChannel.AbstractUnsafe#write,又是Unsafe类型,Netty的大量读写操作在这个类,进入最后一行的方法addMessage,该方法里面有对写入高水位的判断,原创 2024-09-30 09:30:00 · 1913 阅读 · 0 评论 -
Netty源码解析-响应式实现(Reactor模式)
我们看到上面通过channelFactory构造了channel,最下面一行通过config().group().register(channel)注册channel。那么我们进入group()看一下mainReactor需要自己定义,即是ServerBootstrap的两个EventLoopGroup中的parentGroup,初始化的时候设置进去。然后在bind的时候将Group注册到channel上,同时只会注册一个。原创 2024-09-27 18:23:53 · 953 阅读 · 0 评论 -
Netty源码解析-锁机制
从上面的讨论的五种锁优化技术可以看出来,Netty对锁的优化可以说做到极致,各种场景下都对锁的优化有大量使用,这也是Netty高性能的一个重要原因,这些值得我们学习在项目中使用。原创 2024-09-26 09:30:00 · 1439 阅读 · 0 评论 -
Netty源码解析-Netty源码包及IO模式源码分析
Netty通过channel的反射工厂获取channel的构造器,channel类型通过参数传递(这里实现对不同类型IO的支持),channel通过反射工厂在需要的时候构造出来(这里是一个优化)。我们可以看到Netty的代码确实做了很多优化。原创 2024-09-24 09:30:00 · 2149 阅读 · 0 评论 -
CompletableFuture-详解使用及源码解析
Async结尾的是异步执行的API,通常有带线程池和不带线程池的版本run开头的是无参方法,没有返回值supply开头的是有参方法,有返回值以Accept开头或者结尾的方法,有参数,没有返回值以Apply开头或者结尾的方法,有参数,有返回值带有either后缀的方法,表示谁先完成就消费谁。原创 2024-09-21 10:00:00 · 1145 阅读 · 1 评论 -
ConcurrentHashMap源码深度分析
ConcurrentHashMap源码深度分析原创 2024-09-15 21:50:36 · 1286 阅读 · 0 评论 -
Netty源码-Server启动流程
Netty之Server启动流程源码深度解析原创 2024-09-15 10:00:00 · 881 阅读 · 0 评论 -
Netty源码-业务流程之读事件
Netty业务流程之读事件源码深度解析原创 2024-09-13 20:21:20 · 510 阅读 · 0 评论
分享