源码解读的前言

为什么要读源码?

习惯了curd的程序猿似乎都有这种心结,到底该不该努力读下源码。看着手机中的王者荣耀,时刻纠结是否该静下心来读下源码。我的建议肯定是要读的啦。如果你的志愿只是为了当一个码农。那么好吧,复制粘贴也就够了。如果你要改变人生,让自己与众不同,那么此刻,跟我一起走进源码的世界。
1,为了学习大神的艺术编程(虽然可读性是真的差,面对英文注释真的望而却步)。
2,作为一名java开发人员,深入底层,深入操作系统,会使你的内功越来越深厚。
3,源码也有坑,读源码也是为了避免踩源码的坑。如果想当然地开发,会出现各种bug。

我怎么读源码?

老实说,我是一个菜地不能再菜地菜鸡。那为什么我还敢把我地源码经验分享出来,因为脸皮厚呗。哈哈,其实也是把自己地见解分享给大佬,请他们帮助我,指点我。另外,我也想帮助跟我一起入门看源码地小伙伴,让他们能少走歪路,更快理解源码。

读源码的准备

1,读源码的技术准备,我的建议能去学习下数据结构,简单学习和了解下算法,因为源码中都是基于数据结构去封装的,数据结构是最最基础。
2,读源码的心理准备,我第一次读源码,是一脸懵逼,看完,完全不知道是啥玩意,当时真的有劝退的心理,后来我再次鼓起勇气,开始看源码,我发现,我开始懂一点了,我有点欣喜。后来我再看第三遍,我发现,哇,我居然顿悟了,我开始能看懂大神的艺术了,我开始欣赏了,不在迷茫了。最后我结合大量的视频和博客,技术文档。终于开始走进源码的世界。

源码杂谈

首先,我接下来的博客关于源码的章节,是没有一行代码的,我会把每一个类的底层源码实现,编成一个个小故事,像讲故事一样跟你们分享底层到底如果实现。一方面时间精力有限,另一方面,代码需要自己去整理和体会。可以结合视频去慢慢理解,结合自己的demo去验证。
其次,不管jdk的集合,还是并发包中的原子类,同步类,还是锁,结合各自的优缺点都有他们的适用场景。每一个新的集合和类,都是为了弥补缺陷,为了解决更为复杂的场景而生,也是为了解决并发和性能问题而生。比如ArrayList底层是动态数组,但是他是一块连续的内存空间,无法充分利用碎片化的内存,并且插入数据的性能差,进而衍生出了链表结构的集合LinkedList,但是链表又无法像数组支持随机查询,我把数组加链表能不能生成一个新的集合出来,HashMap诞生了,你看,每一个新的集合和类出现都是为了满足我们的需求。所以世界上所有的东西出现,都有其合理性。我的出生,可能也是为了拯救世界来着,呵呵,扯远了。
最后,我个人认为,在学习过程中,不断思考。比如,集合无非就是一个承载数据的一个容器,那么我们要规定这个容器形状,它是圆形还是方形,可能还是一个桶,会不会是一个管道,可能还是一个树形节点,任何可以放物品的形状你都可以想象。
再比如,集合出生时候,默认要多大。一旦容器放满了,我该如果去扩容,按照怎么样规则扩容,等差扩容还是等比,还是2的指数次方扩容,扩容的因子设置多大。扩容无限大吗?肯定不是的呀。那么我规定容器最大能扩多大?这些都是一个集合的自身属性。
最后的最后,集合为了解决并发问题,也就是说你是否线程安全,如果不是线程安全,我有什么办法让你线程安全。AQS和CAS登场了,锁出现了。
好了,今天就分享到这里了,我们下期再唠。再见拉。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值