有哪些 Java 源代码看了后让你收获很多,代码思维和能力有较大的提升?...
既然没人,我自荐一发我写的mvc框架biezhi/blade
对于学习J2EE的框架有很大的帮助,代码里使用了各种设计模式、事件机制、Java8语法、代码量也很小,web服务使用Netty作为支持,对HTTP/网络想研究的一定是你的必读品。目前在写 Blade-In-Action 小书。
我之前也写过如何实现IOC/MVC框架的简单博文,可以在这个biezhi/java-bible仓库里看到。
也说一下我看过的一些比较不错的代码,看了对Java能力一定会有质的提升
国人写的模板引擎,代码质量很高:subchen/jetbrick-template-2x
数据结构和算法类的,同时有测试代码:buptdavid/datastructure|kdn251/interviews
Java写的高性能数据库:jankotek/mapdb
Netty实现的高性能RPC,有写博文分析:tang-jie/NettyRPC
Java编写的原子组件库,内功非常深厚:mindwind/craft-atom
前点评网的一位大牛黄艺华写的爬虫框架:code4craft/webmagic
针对Java8的一系列代码示例,纯干货无废话:winterbe/java8-tutorial
Java设计模式的总结以及代码和文章:iluwatar/java-design-patterns
最优雅的网络请求库,一个Java文件:kevinsawicki/http-request
Java程序员一个 交流社区:https://jq.qq.com/?_wv=1027&k=5pkxbG4
以上是我看过质量都还不错的代码库,难度相对不是特别高,但对于编程思想的提升还是有很大帮助,互联网资源如此丰富的时候我们更需要的是静下心来安静学习和思考而不是一味的追求信息大爆炸,所以我只挑选了对于代码能力有提升的难度不是特别高的分享给各位。
同时也推荐阮一峰的《如何变得有思想》一书,这本书记得在3年前看的时候对于个人的编程和人生起了一定的改善作用,如果你觉得对你有用也可以尝试看看,以上是我的一些个人见解。
作者:Asens
来源:知乎
最早看的 架构探险 从零开始写Java Web框架,黄勇写的,算是一种启蒙,作者自己写了一套ioc和aop框架以及mvc请求分发框架。
跟着写了一遍,基本明白了Spring 和SpringMVC是怎么工作的
然后顺着思路看了2遍Spring和SpringMVC的源码,一遍是跟着流程走了一边,一遍是基于接口和类的功能整体了解了一遍架构设计
再后来看了how tomcat works,看了一遍中文的,时隔一年又看了一遍英文的,tomcat的作者亲自讲解tomcat的进化,怎么从一个几十行的弱鸡http服务器变成一个servlet容器的,跟着书和各种源码把tomcat的演变写了一遍,真正的源码也过了一遍,但是分支太多了
作为一个Java web 开发者,我觉得从tomcat的启动到tomcat接受http请求到SpringMVC路由分发请求,到业务代码处理,到模板渲染,到返回对应的http信息都应该了解对应的过程,这样遇到很多问题都能第一时间判断出对应的位置,让一些'很神奇'的问题不再神奇
然后就是netty了,看了一遍异步的事件驱动reactor模型的nio服务器实现,对异步,多线程,nio理解上了一个新的台阶
中间穿插读了util包的各种类
Spring几乎已经不需要解释了,用到的都应该去阅读一下,无论是设计思想,代码规范,还是设计模式,接口设计,类加载,都是非常优秀的源码
tomcat太大了,并不是很推荐阅读,源码对于阅读者也不是很友好,但是how tomcat works还是很值得阅读的
netty本身同样很优秀,但是更重要的是实现的思想
总之阅读源码有什么感觉呢,就好像打开了一扇通往更大世界的大门,能看到厉害的代码技巧,健全的错误异常机制,更重要的是对已有问题的解决方案,和解决问题的思路,这些都是一个程序员成长过程中最好的教材
jdk就是最好的java源代码,作者为了性能也是拼了,里面会考虑对gc友不友好,生成的内存屏障指令要尽量轻量级,为了应对伪共享做填充,能用位移的就用位移,不说了,我继续看源码去了。
最近一直有在看JDK 源码注释,主要是深入研究下基础知识和并发编程。结合注释看源码,得到的细节非常多。经常可以看到一行代码上有三十四行注释,会把一个方法的使用示例,需要注意的问题,方法实现细节说明等等,全都说的很清楚。比如Object 的wait和notify 方法。注释里说wait 方法会让当前线程,被放入到一个set 中,这个set 是和当前对象的监视器关联的。所以这就说明了为什么wait 方法为啥需要在syncronizied方法里调用,因为要获得对象的监视器嘛。还有就是线程进入等待后,会让渡出当前对象锁,这个是和线程睡眠的区别。还说明了线程假醒的问题,因此推荐把wait 方法放在while 循环里。看完后感觉真是干货满满,扫除了很多基础方面的知识盲点,受益良多。
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
有哪些 Java 源代码看了后让你收获很多,代码思维和能力有较大的提升?...相关推荐
- java爬虫代码示例_那些让你代码思维和能力有较大的提升Java源码
来源:www.cnblogs.com/jiagou/p/9270070.html 对于学习J2EE的框架有很大的帮助,代码里使用了各种设计模式.事件机制.Java8语法.代码量也很小,web服务使用N ...
- RNN和LSTM(介绍视频链接去看,巨仔细,收获很多)
哔哩哔哩视频链接 RNN介绍 https://www.bilibili.com/video/av31093481/?p=1 LSTM介绍 https://www.bilibili.com/video/ ...
- 从Java类库看设计模式
//From http://www.uml.org.cn/j2ee/201010214.asp 很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关重要的.好的经验给我们以指 ...
- Java新手看招 常用开发工具介绍
Java新手看招 常用开发工具介绍 Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使 ...
- java JLabel改变大小后如何刷新_【基本功】Java动态追踪技术探究
引子 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: "Debug一下吧." "线上机器, ...
- 一步步教你使用Proguard混淆Java源代码
一步步教你使用Proguard混淆Java源代码 java代码很容易被反编译,以下使用proguard来保护我们的代码 proguard选项很多,容易迷糊,现在就把我的配置写下来(实际使用中),以供参 ...
- java火山_火山代码转java源代码查看
今天我们来研究一下火山安卓的源代码,火山安卓允许我们以本地化编程(中文代码编程)的方式来撰写安卓app,那么在生成实际要安装到安卓app的时候,它是如何进行编译处理的呢.让我们今天来一起探究一下. 首 ...
- TVMovie JAVA源代码1.2.4版原生安卓tv源码电视盒子APP开源全前端无后台
b站视频教程:高清版可点击进入观看>> 高清演示视频看下方: 原生安卓tv源码电视盒子app TVMovie JAVA源代码 APP开源全前端无需后台 AndroidTV.机顶盒.电影 ...
- 如何系统全面地自学Java语言?明确后我直接拿到了20K!
玩Java多年的老司机带你上车全面系统学习Java,并且还能教你如何学习才能在今年拿到一份不错的offer. 说到系统全面,就是以目前绝大部分公司招聘要求的知识内容为基准,毕竟我们学习Java都是为了 ...
最新文章
- liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL
- Github page + octopress介绍
- Java多线程(2)—线程同步
- Java笔记-多线程相关
- 瑞典 林雪平大学 机器人视觉方向 博士招生
- (107)FPGA面试题-Verilog编写200ns异步/同步低有效复位激励
- Cocos2dx 下面,对 音乐 和音效简单封装
- [20180423]表空间闪回与snapshot standby
- fspecial在matlab中什么意思,Matlab中fspecial的用法 | 学步园
- Android 求职简历
- 最小公倍数c语言N-S图,最小公倍数n-s图
- [FAQ20527] 如何关闭OTG功能
- wo-27s管理员账户和密码_Mac管理员忘记密码怎么办?
- 100比例怎么用计算机算,比例尺1:100怎么算
- 声纹识别损失函数总结
- 公有云平台专题《中移云平台,NB-IoT模组对接中移OneNET平台》
- SpringCloud-4.服务网关(GateWay)
- 【字源大挪移—读书笔记】 第三部分:字尾
- 计算机协会财务部部长职责,社团财务部部长职责.doc
- cnn 分层 可视化 网站_如何可视化分层数据以显示整体关系
热门文章
- 《编码-隐匿在计算机软硬背后的语言》第七章我们的十个数字
- 仿照vue实现简易的MVVM框架(二)
- IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置...
- Aspose.Pdf for .NET控件PDF文档到Excel、EPS、SVG等的转换
- 特征抽取 PCA主成分分析
- 在线CSS美化格式化工具
- 深入学习typedef和typename
- Android getRunningTasks和getRunningAppProcesses失效
- CentOS下DB2数据库安装过程详解
- django学习笔记:AdminSite界面配置