最早看的 架构探险 从零开始写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本身同样很优秀,但是更重要的是实现的思想

总之阅读源码有什么感觉呢,就好像打开了一扇通往更大世界的大门,能看到厉害的代码技巧,健全的错误异常机制,更重要的是对已有问题的解决方案,和解决问题的思路,这些都是一个程序员成长过程中最好的教材

对于学习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 
以上是我看过质量都还不错的代码库,难度相对不是特别高,但对于编程思想的提升还是有很大帮助,互联网资源如此丰富的时候我们更需要的是静下心来安静学习和思考而不是一味的追求信息大爆炸,所以我只挑选了对于代码能力有提升的难度不是特别高的分享给各位。

同时也推荐阮一峰的《如何变得有思想》一书,这本书记得在3年前看的时候对于个人的编程和人生起了一定的改善作用,如果你觉得对你有用也可以尝试看看,以上是我的一些个人见解。

jdk里的util包,把ArrayList,HashMap,LinkedHashMap,LinkedList,HashTable,HashSet。

lang包里的,String,Object,StringBuffer,StringBuilder,Integer这些类。

这些类弄明白了,你可以上升一个台阶。

还有平时你工作中用到什么类,就看什么类就ok了。

可叹的是,有些人写了五六年代码,连String这个类的源码都没看过,还老是对我说未来很迷茫,不知道怎么提升好,其实我想说,这样不迷茫才怪。

juc 包里的aqs框架

Okhttp:android开发最受欢迎的http客户端,支持http2,websocket等最新协议。总体采用责任链模式,架构简单且扩展性强,看完几个主要的拦截器相当于把http协议重新学习了一遍。

jdk8下的ConcurrentHashMap:Doug Lea 大神的大作,实现上非常精巧,采用cas操作就实现了无锁HashMap,仅仅在Hash冲突插入的情况下锁住一个hash桶,并发度比jdk7版的高出不少。

spring-mvc:MVC模式的最佳实践,玩设计模式的癫狂之作,扩展性极强。

大家可以点击加入群:623241711【JAVA高级开发】里面有Java高级大牛直播讲解知识点 走的就是高端路线 (如果你想跳槽换工作 但是技术又不够 或者工作上遇到了 瓶颈 我这里有一个JAVA的免费直播课程 讲的是高端的知识点 基础不好的误入哟 只要你有1-5年的开发经验可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦)

原文地址:

https://blog.csdn.net/shaguguji423/article/details/80130369

值得看的源码(转载)相关推荐

  1. 一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach

    一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代 ...

  2. 最近看Kafka源码,着实被它的客户端缓冲池技术优雅到了

    最近看kafka源码,着实被它的客户端缓冲池技术优雅到了.忍不住要写篇文章赞美一下(哈哈). 注:本文用到的源码来自kafka2.2.2版本. 背景 当我们应用程序调用kafka客户端 produce ...

  3. 一点一点看JDK源码(四)java.util.ArrayList 中篇

    一点一点看JDK源码(四)java.util.ArrayList 中篇 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 在前篇中 ...

  4. 一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate

    一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点 ...

  5. 一点一点看JDK源码(二)java.util.List

    一点一点看JDK源码(二)java.util.List liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 List译为表,一览表, ...

  6. 只会用框架,看不懂源码,不了解其底层机制与实现原理,成了一名只会搬运源码库的开发。说白了,就是真正牛逼的技术不属于你。

    对于开发来说,我们在工作中普遍都会用到各个开源框架,比如最基础的 Spring,使开发网络编程变得特别简单的 Netty 框架,还有成为目前微服务框架首选的 Spring Cloud 等.在多个框架之 ...

  7. 20种看asp源码的方法及工具

    作者:欧杨飘雪  http://blog.csdn.net/flyingsnowy/ 众所周知windows平台漏洞百出,补丁一个接一个,但总是补也补不净.我把我所知道的20种看asp源码的方法总结了 ...

  8. 面试有没有看过spring源码_如何看Spring源码、Java每日六道面试分享,打卡第二天...

    原标题:如何看Spring源码.Java每日六道面试分享,打卡第二天 想要深入的熟悉了解Spring源码,我觉得第一步就是要有一个能跑起来的极尽简单的框架,下面我就教大家搭建一个最简单的Spring框 ...

  9. 看完源码记不住,是我记性太差了吗?

    都说大厂面试必问源码,尤其是现在最流行的Java 开发技术--Spring的源码.可很多人看完Spring源码记不住,是记性太差了吗? 当然不是!是因为你没有掌握学习源码的技巧. 看完源码的我- 前段 ...

最新文章

  1. ntrip获取源列表_Ntrip通讯协议怎么样?
  2. server缺少sqlexpress sql_SQL Server----解决SQL Server 配置管理器不见了
  3. 前端到后端的整体流程介绍
  4. 【专访】小米产品经理颠覆早教行业,欲送给孩子1000万美金的人生
  5. 保鲜、保生,生鲜电商的两码事
  6. 树莓派 rfid_树莓派工控机做Modbus RTU主站读取RFID数据
  7. virt-v2v 使用指南
  8. java unsigined short_LDD之数据类型
  9. centos安装golang环境
  10. yii mysql 操作数据库_YII2中操作数据库的方式
  11. 让ie8按照ie7 的方式来进行解析
  12. Python的一些用法分享
  13. Windows XP增强dos命令
  14. TEST ON 平安夜
  15. Vue:解决安装Vue Devtools报错Error: Cannot find module@vue-devtools/build-tools解决办法
  16. cache 的设计与实现
  17. oracle表中多个字段同时和另一个表中关联解决办法
  18. 客户端DDK编译环境配置说明
  19. 20个励志早会小故事
  20. 阿里云智能编码插件,更 Cosy 的开发体验

热门文章

  1. wyy课堂cmos模拟设计课学习笔记-gm/Id设计方法介绍及曲线仿真
  2. sqlserver 附加数据库时出错
  3. iOS中Layer的认识和使用
  4. Win10 LTSB微软商店Microsoft Store安装(1607、1809)
  5. 2015年的高中作文----瑶乡之美(获得湖南省永州市 ''我的中国梦‘ 作文比赛一等奖)
  6. ZYNQ基础---AXI DMA使用
  7. 混沌工程是什么_什么是混沌猴子? 混沌工程解释
  8. spooling技术介绍
  9. linux镜像烧写,基于TMS320C6678的Linux镜像烧写演示
  10. 【Http2特性——Binary framing layer--push---HPACK】