-
有哪些 Java 源代码看了后让你收获很多,代码思维和能力有较大的提升?
2018-01-16 14:13:14最早看的 架构探险 从零开始写Java Web框架,黄勇写的,算是一种启蒙,作者自己写了一套ioc和aop框架以及mvc请求分发框架。 跟着写了一遍,基本明白了Spring 和SpringMVC是怎么工作的 然后顺着思路看了2遍...最早看的 架构探险 从零开始写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模式的最佳实践,玩设计模式的癫狂之作,扩展性极强。 如果你在学习Java的过程中或者在工作中遇到什么问题都可以来群里提问,阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦! 非喜勿入! 学习交流QQ群: 288351179
-
有哪些Java源代码看了后让你收获很多?
2018-09-04 13:51:56曾经读过Erudika/para的源码,此源码托管在github,大致是2014年前后开源的云计算通用后端框架,基于spring boot体系,原生集成持久化(默认H2 DB,通过配置方式实现MongoDB、mysql等常用关系数据库的支持)、缓存...曾经读过Erudika/para的源码,此源码托管在github,大致是2014年前后开源的云计算通用后端框架,基于spring boot体系,原生集成持久化(默认H2 DB,通过配置方式实现MongoDB、mysql等常用关系数据库的支持)、缓存(默认Caffeine、支持配置参数的Hazelcast、redis等)和搜索(默认Lucene,支持配置参数的Elasticsearch)三大功能,快速开发resful风格的API接口,其强大的分层思想和通用性设计能力,让我的架构思维有了很大的进步,其开源版本对于中小团队实践spring boot+spring cloud打通云计算服务具有借鉴意义,目前最新的版本为1.29.1。
下面,我就简单的分享Erudika/para源码官网的介绍,解释不到位的地方希望大家批评指正,同时,这款较为优秀的开源项目也推荐给大家去学习和使用。
特性:
多租户技术【多重租赁技术】支持--每个应用程序都有自己的表、索引和缓存;
用Amazon的签名算法进行安全的JSON;
数据库动态性,专为可伸缩和分布式数据存储而设计
全文搜索(Elasticsearch);
分布式对象缓存(hazelcast,高可扩展内存数据网格);
物联网支持与AWS(业务流程管理开发平台)和(基于云计算的操作系统,Windows Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序)的集成;
灵活的安全LDAP(LDAP是轻量目录访问协议),社交登录,CSRF(跨站请求伪造)保护;
无状态的客户端认证与JSON的Web令牌(JWT,网络应用环境间传递声明而执行的一种基于JSON的开放标准,JWT是由三段信息构成的,将这三段信息文本用);
用于客户端访问控制的简单但有效的资源权限;
鲁棒约束验证基于JSR-303和Hibernate Validator;
持久性、索引和缓存操作的每个对象控制;
模块化设计的谷歌Guice(依赖注入框架(IOC))和支持插件;
网络控制台-管理用户界面。
欢迎大家加入Java高级架构/互联网:468947140点击链接加入群聊:https://jq.qq.com/?_wv=1027&k=56hvqnu
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导
进群修改群备注:开发年限-地区-经验
方便架构师解答问题 -
有哪些优秀的Java开源项目最值得阅读?
2018-02-03 08:16:21作者:你猜我猜不猜 ... 来源:知乎 著作权归作者所有。商业转载请联系作者获得...阅读源码是程序猿们最好的学习方式,给大家分享: 可能是最火的Java开源项目 这些项目在 GitHub 上的 star 数均超过 15000 Rx作者:你猜我猜不猜
链接:https://www.zhihu.com/question/26415445/answer/242249223
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。阅读源码是程序猿们最好的学习方式,给大家分享:
可能是最火的Java开源项目
这些项目在 GitHub 上的 star 数均超过 15000
Rx 的 Java 实现 RxJava
star:26782;fork:4718
.Net响应式编程框架 Rx 的Java版本开源实现,有Groovy, Clojure, Scala and JRuby版本的实现。
分布式搜索引擎 ElasticSearch
star:24646;fork:8723
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决越来越多的用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。这个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。
REST 客户端 Retrofit
star:23443;fork:4731
retrofit 是一个类型安全的 REST 客户端,用于 Android 平台。
RestAdapter restAdapter = new RestAdapter.Builder() .setServer("https://api.github.com") .build(); GitHubService service = restAdapter.create(GitHubService.class);
HTTP+SPDY 客户端开发包 okhttp
star:21981;fork:5311
okhttp 是一个 Java 的 HTTP+SPDY 客户端开发包,同时也支持 Android。
OkHttpClient client = new OkHttpClient(); String get(URL url) throws IOException { HttpURLConnection connection = client.open(url); InputStream in = null; try { // Read the response. in = connection.getInputStream(); byte[] response = readFully(in); return new String(response, "UTF-8"); } finally { if (in != null) in.close();
Java 设计模式 java-design-patterns
star:21456;fork:7162
设计模式是程序员在设计应用程序或系统时解决常见问题的最佳实践,重用设计模式有助于防止可能导致重大问题的细微问题,同时熟悉模式的程序员和架构师的代码也更具可读性。
Google的Java常用类库 Guava
star:18414;fork:4327
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。
Android 注解工具 ButterKnife
star:17845;fork:3662
Butter Knife 是 Android 视图字段和方法绑定,使用注解处理来生成样板代码。
主要特性:
- 在字段使用 @FindView消除findViewById调用
- 使用 @FindViews在一个列表中分组多个视图
- 通过注解方法为监听者消除匿名 inner-classes
Android 图表库 MPAndroidChart
star:17758;fork:5133
MPAndroidChart 是 Android 系统上一款开源的图表库。目前提供线图和饼图,支持选择、缩放和拖放。
Android 图片加载和缓存库 Glide
star:17418;fork:3520
Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。
Android/Java内存泄露检测框架 LeakCanary
star:16531;fork:2761
LeakCanary 是 Android 和 Java 内存泄露检测框架。
J2EE框架 Spring
star:15850; fork:11326
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Android 开源框架 EventBus Android
star:15733; fork:3752
如果你学习过设计模式,那么当想通知其他组件某些事情发生时你一定会使用观察者模式。好了,既然能想到这个设计模式,那么就来看一个屌爆天的Android开源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。他的最牛逼优点是开销小,代码简洁,解耦代码。
Android-Universal-Image-Loader
star:15596; fork:6455
Android-Universal-Image-Loader (Universal Image Loader for Android) 的目的就是为了实现异步的网络图片加载,支持多线程异步加载。
Spring Boot
star:15357; fork:13367
Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务。你可通过它来选择不同的 Spring 平台。可创建独立的 Java 应用和 Web 应用,同时提供了命令行工具来允许 'spring scripts'.
下图显示 Spring Boot 在 Spring 生态中的位置:
移动应用动画效果框架 Lottie
star:15094; fork:2166
Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。Lottie 目前提供了 iOS, Android, 和 React Native 版本,能够实时渲染After Effects 动画特效。
条形码处理类库 ZXing
star:15003; fork:6686
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。
以上内容整理自:可能是最火的开源项目 -- Java 篇
源码的阅读是个逆向的过程,那么该如何阅读源码呢?
源码阅读思维范式 Problem domain→model→architecture&implementation→improvement→best practice
-
java源码包---java 源码 大量 实例
2013-04-18 23:15:26Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM... -
jdk的哪些源码适合阅读
2016-07-15 13:57:48 -
Java源码阅读的真实体会(一种学习思路)
2015-11-20 12:29:19刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动。 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。 说到技术基础,我打个比方吧,... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来... -
Java源码跟踪阅读技巧【值得收藏】
2020-08-26 17:48:39今天跟大家分享一下我平时阅读源码的几个小技巧,对于阅读Java中间件如Spring、Dubbo等框架源码的同学有一定帮助。本文基于Eclipse IDE,感兴趣的朋友跟随小编一起看看吧 -
面试官:你背了几道面试题就敢说熟悉Java源码?对不起,我们不招连源码都不会看的人
2020-03-30 18:47:49你看源码么? 你会看源码么? 你从源码中有收获么? -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM... -
java源码包2
2013-04-20 11:28:17Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行... -
java源码包
2015-12-01 16:29:37Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM... -
Java源码阅读的真实体会
2011-08-23 10:03:05刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动。 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。 说到技术基础,我 -
Java线程池源码分析(一)
2018-06-29 18:01:51Java线程池源码分析 使用线程池场景,好处,不在本文范围内,我们分析的是源码。 带着几个问题我们来分析源码: 线程池构造方法的参数的含义,线程池的数量设置,阻塞队列是如何选择的 线程池是异步的那么... -
Java集合容器面试题(2020最新版)
2020-03-01 11:08:34文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?List、Set、Map 是否继承自 Collection 接口?List、Map、Set 三个接口存取元素时,各... -
Github上100个经典开源Java项目 值得阅读学习
2018-12-17 17:57:42转载自:... 1. React Native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, 该框架结合了 Web 应用和 Native 应用的优势, 可以使用 JavaScript... -
史上最全面Java面试汇总(面试题+答案)
2018-07-06 14:09:25JAVA面试精选【Java基础第一部分】 JAVA面试精选【Java基础第二部分】 JAVA面试精选【Java基础第三部分】 JAVA面试精选【Java算法与编程一】 JAVA面试精选【Java算法与编程二】 Java高级工程师-面试(1) ... -
java源码阅读之java.lang.Enum
2018-07-29 23:53:44之所以要研究这个类,因为它是java中所有枚举的父类,本文基于JDK1.9.0的java源码进行展开。 一、类定义: public abstract class Enum<E extends Enum<E>> implements Comparable&...
-
java编程思想,比较深入的系统化java学习指南
-
Fritzing 苹果系统版本
-
人脸识别项目三
-
sap 开发环境搭建
-
js常见报错总结
-
国家注册渗透测试工程师(Web安全)
-
c语言中常用的函数
-
Elastic 使用Heartbeat监测服务运行状态
-
Postman从单接口入门到自动化测试实战
-
树莓派4B+Python+opencv环境配置
-
python金融风控评分卡模型和数据分析
-
单片机与DSP中的号按颗粒度分类
-
我把公司办垮了,因为:对员工宽容、假装高逼格、除了老板没人加班
-
PCB技术中的贴片机的调整
-
卖书啦
-
Qt libvlc视频剪辑软件开发教程
-
dubbo源码解析(2.7.x)
-
专为AI小白设计的人工智能实战课(附赠5门专栏+7天电子书体验卡)
-
tcp连接转储tcpdump
-
java netty 物联网项目设备对接