这玩意比ThreadLocal叼多了,吓得why哥赶紧分享出来。 (5)

简介: 这玩意比ThreadLocal叼多了,吓得why哥赶紧分享出来。 (5)

直接从数组中取出第 0 个位置的数据,然后循环干掉它就行。


set 方法就分析到这里啦,算是保姆级的一行行手把手教学了吧。


借助这个方法,也带大家看了内部结构。


点到为止。get 方法很简单的,大家记得自己去看一下哦。


我们再看一下这次 pr 提交的东西:


image.png


我们看看这四个线程池有什么变化:


image.png


就是换了工厂类。


换工厂类的目的是什么呢?


newThread 的时候,new 的是 InternalThread 线程。


好一个偷天换日。


前面我们说了,要用改造版的 ThreadLocal ,必须要配合 InternalThread 线程使用,否则就会退化为原生的 ThreadLocal 。


其实, Dubbo 这次提交,改造的东西并不多。关键的、核心的代码都是从 Netty 那边 copy 过来的。


我这就是一个引子,大家可以再去看看 Netty 的 FastThreadLocal 类。


关于这次 pr 提交


接下来又是 get 奇怪知识点的时刻了。


前面说了,这个 pr 里面出场人物一个比一个“骚”,这一节我带大家看一下,是怎么个“骚”法。


https://github.com/apache/dubbo/pull/1745·


首先是 pr 的提交者,carryxyh 同学的代码在 2018 年 5 月 15 日的时候被 merge 了:


image.png


正常来说,carryxyh 同学对于开源社区的一次贡献就算是完美结束了,简历上又可以浓墨重彩的写上一小笔。


但是 15 天之后发生的事情,可能是他做梦也想不到的。


那一天,一个叫做 normanmaurer 的哥们在这个 pr 下面说了一句话:


image.png


image.png


他的意思就是说:


哥们,你这个东西我怎么觉得是从 Netty 那边弄过来的呢?本着开源的精神,你直接弄过来是没有问题的,但是你至少得按照规矩办事吧?得遵循 AL2 协议来。而且我甚至看到你在你的 pr 里面提到了 Netty 。


至于这个 AL2 到底是什么,我是没有看明白的。


但是不重要,我就把它理解为一个给开源社区贡献代码时需要遵守的一个协议吧。


carryxyh 同学看到 Netty 的爸爸找他了,很快就回复了两条消息:


image.png


carryxyh同学说道:


老哥,我在 javadoc 里面提到了,我的灵感来源就是 Netty 的 FastThreadLocal 类。我写这个的目的就是告诉所有看到这个类的朋友,这里的大部分代码来自 Netty。


那我除了在 javadoc 里面写上来源是 Netty 外,还需要做什么吗?还有你说的 AL2 是什么东西,你能不能告诉我?


我一定会尽快修复的。


这么一来一回,我大概明白这两个人在说什么了。


Netty 的爸爸说你用了我的代码,这完全没有问题,但是你得遵循一个协议哦。


carryxyh 同学说,我已经在 javadoc 里说了我这部分代码就是来自 Netty 的,我真不知道还该做什么,请你告诉我。


Netty 的爸爸回复了一个链接:


image.png

image.png


image.png


image.png


大佬都出来了,接下来的对话大概也就是围绕着怎么才是一次符合开源标准的提交。


主席说,到底需不需要声明版权,得看代码的改造点多不多。


Netty 的爸爸说:据我所知,除了包名和类名不一样外,其他的基本没有变化。


image.png


最终 carryxyh 同学说把 Netty 的 FastThreadLocal 的文件头弄过来,是不是就完事了,

主席说:没毛病,我就是这样想的。


微信图片_20220426232726.png


image.png


image.png


好了,这应该是我所有文章中出现过的第 9 个用不上的傻吊知识点了吧。送给你,不必客气。


好了,这次的文章就到这里啦。

目录
相关文章
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
332 1
|
4月前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
2091 48
|
10月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
编解码 Dubbo NoSQL
由浅入深理解RPC架构设计
🌴🌴经常听到大家说不同项目之间调用使用HTTP方式,同一个项目内不同服务之间调用使用RPC方式。今天就来学习一下`RPC框架`,RPC框架由哪些部分组成又是如何一步一步设计出来的。
864 0
由浅入深理解RPC架构设计
|
存储 算法 Java
JVM垃圾收集-ZGC的染色指针
垃圾收集是回收以前分配的内存的机制, 以便将来的内存分配可以重用它。
1173 0
JVM垃圾收集-ZGC的染色指针
|
SQL 存储 缓存
MySQL中:一条update语句是怎样执行的
这次来详细介绍一下在MySQL中一条更新语句的详细执行流程
1107 1
MySQL中:一条update语句是怎样执行的
|
运维 Dubbo 安全
Dubbo3 源码解读-宋小生-4:Dubbo的扩展机制
Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双 11 基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实践和统一标准,同时将规模化实践经验与技术创新贡献开源社区,极大的推动了开源技术与标准的发展。 本文是 Du
552 0
Dubbo3 源码解读-宋小生-4:Dubbo的扩展机制
|
存储 Java
JVM垃圾回收-记忆集和卡表
垃圾收集是回收以前分配的内存的机制, 以便将来的内存分配可以重用它。
937 0
JVM垃圾回收-记忆集和卡表
|
算法 安全 Java
JVM垃圾回收-三色标记
垃圾收集是回收以前分配的内存的机制, 以便将来的内存分配可以重用它。
318 1
JVM垃圾回收-三色标记