- 博客(106)
- 资源 (13)
- 收藏
- 关注
原创 封笔-柳擎
最近换工作到阿里去了,在阿里要学习的东西很多,再加上一些框架不开源,也不方便在外网平台上写博客了,以后要写也是在他们内网平台上写相关文章了,但也不一定,说不定以后我有心力,会继续在CSDN上写一些开源框架的博客,或者写一些自己研发的小框架,但最近一段时间可能没有时间写相关博客,但之前的一些博客,
2023-09-03 15:17:23 449
原创 Netty之DefaultAttributeMap与AttributeKey的机制和原理
Netty 的 DefaultAttributeMap 源码分析
2023-02-01 15:07:51 780
原创 Netty源码性能分析MpscChunkedArrayQueue & MpscUnboundedArrayQueue & MpscArrayQueue & MpscLinkedAtomicQueue
Netty 队列源码解析
2023-01-15 13:28:21 936
原创 ThreadPoolExecutor&ScheduledThreadPoolExecutor 源码解析
线程协程线程池 线程池介绍 线程的实现方式 线程池重点属性 ctl相关方法 线程池的具体实现ThreadPoolExecutor 线程池的创建任务提交 参 数 解 释 线程池监控线程池原理源码分析 execute方法线程 线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有一个对应的线程。Java线程有多种生命状态NEW:新建
2022-04-18 17:24:21 749
原创 ArrayBlockingQueue&LinkedBlockingQueue&DelayQueue&SynchronousQueue&PriorityBlockingQueue源码解析
2022-04-14 12:46:31 805 2
原创 并发编程之CountDownLatch&CyclicBarrier&Semaphore&Exchanger原理
CountDownLatchCountDownLatch是什么? CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。 使用场景: Zookeeper分布式锁,Jmeter模拟高并发等CountDownLatch如何工作? CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当 一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,
2022-04-07 16:51:10 377
原创 ReentrantLock源码解析及ReentrantReadWriteLock源码解析
在我们工作中经常用ReentrantLock,感觉像使用redis加锁和解锁一样,但是其底层是如何实现的呢? 鉴于我对Doug Lea这个人的崇拜,因此大牛的东西,还是要去研究的,有人说,为人不识Doug Lea,学懂并发也惘然,那我们还是先来认识一下这个人吧。 java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器的实现都是围绕着共同的基础行为,比如等待队列,条件队列,独占获取,共享获取等,而这些行为的抽象都是基于AbstractQueuedSynchron
2022-04-03 17:06:53 1077 4
原创 HashMap源码解析
序: 网上有很多关于HashMap源码相关的文章 ,也有很多的视频讲HashMap的实现原理,但是无论文章看多少遍,视频看多少次,总觉得那些知识不是自己的,被别人一忽悠,又变成了人云亦云,既然如此,不如自己切身实际的来研究一下HashMap的源码实现吧。我写的也只是作为一个参考,如果想将这些原理,思想变成自己的东西,还是建议读者自己去研究,并写出博客,这样,知识才能真正的转化为自己的东西 。好了,话不多说,直接上代码来看吧。 在看源码之前,先来说一个学习方法,因为历史的原因,新的东西一般比旧的东西好
2022-03-29 14:52:24 276
原创 自己动手写Java虚拟机 (Java核心技术系列)_java版
序 有一本用go语言编写的《自己动手写Java虚拟机》的书籍,抛开性能不说,但这本书已经勾勒出虚拟机的模型,对于想真正了解虚拟机执行原理的小伙伴,无疑是雪中送炭,有人会说,我不如直接去研究真正的Java虚拟机,那才叫原汁原味,学习概念模型的虚拟机和真实的虚拟机肯定是有巨大差别的, 但是我想说,如果你真这么牛逼,也不需要看我的博客了,我个人觉得,人的能力精力是有限的,如果花较少的时间和精力,就能对虚拟机有一个大致的了解,等将来有能力,精力,毅力再去研究jdk源码的实现,不失为一种曲线救国的办法,首先,我对
2022-01-02 14:07:59 2020 1
原创 Go语言面向对象和结构体_2021_11_08
结构体结构体是由一些列属性组成的复合数据类型,下面是一个简单的列子package mainimport "fmt"type Counter inttype User map[string]stringfunc main() { var counter Counter = 20 counter += 10 fmt.Println(counter) //30 me := make(User) me["username"] = "zhangsan" me["age"] = "3
2021-11-11 15:06:00 180
原创 Go语言中的包和单元测试_2021_11_04
main包申明的程序是可运行的。包是函数和数据的集合,将有相关的鹅的函数和数据放在统一的文件目录进行管理,每个包都可以作为独立的单元维护并提供给其他的项目 进行使用。声明:GO源文件都需要在开头使用package声明所在的包,包名告知编译器哪些包的源代码用于编译库文件,其次包名用于限制包内成员包内成员对外的可见性,最后包名用于在包外对公开成员的访问包名使用简短的小写字母,常与所在的目录名保持一致,一个包中可以由多个 go源文件,但是必需使用相同的包名。在Go语言里面是通过首字母的大小写来定位包
2021-11-08 11:38:44 286
原创 Go语言基础语法_2_2021-10-29
用户数据输入 从命令行中输入一个变量,如果是String类型是没有问题,但是int类型,目前得出错误的值 。package mainimport "fmt"func main() { var name string fmt.Println("请输入名字 :") fmt.Scan(&name) fmt.Println("你输入的名字是:" + name) var age int fmt.Println("请输入的年龄 ") fm
2021-11-01 20:54:26 167
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人