當前位置:
首頁 > 知識 > 有哪些Java源代碼看後讓你收穫很多思維和能力有較大的提升?

有哪些Java源代碼看後讓你收穫很多思維和能力有較大的提升?

最早看的架構探險從零開始寫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 小書。

也說一下我看過的一些比較不錯的代碼,看了對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還有大量學習乾貨哦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT技術java交流 的精彩文章:

Java高並發:靜態頁面生成方案
多麼神奇的python
大神分享C語言學習技巧
關於web前端就業前景問題分析——乾貨
十年經驗的python大牛寫下的基礎心得!

TAG:IT技術java交流 |

您可能感興趣

Avengers不只是擁有特別的超能力,而且他們的顏值都很高呢!
有哪些做夢就可以習得的能力?
特種兵真的有以一挑十的能力嗎?看完後才知道並不是我們想像的那樣!
沒有這種能力,你的快樂就很有限
萬花筒寫輪眼都有些啥能力?佐助的感覺很imba啊
心理學:第一眼你看到的是什麼?看一看你的領導能力有多強!
這個校長有一手,這樣做不但提高了孩子的自主能力,還能讓家長更加有粘結性!
那些能力和你差不多卻比你有名的人,都是怎麼做到的
你要做的不是找到它的中譯本,而是要努力的提高你的外語能力
有哪些國家有能力造坦克?能生產的很多,但是能生產先進的很少
蘋果吸金能力太可怕 光iPhone X就賺了這麼多 庫克又要樂翻了
最有領導能力的五大星座排行,看看有沒有你?
認識這四種配飾,你也能擁有讓別人一看就覺得很高貴的超能力?
都說有顏就任性,張儷這駕馭衣服的能力,更是能讓顏值提升不少
《這個殺手不太冷》成熟不是看自己多麼有能力,而是看我們能保護多少人
超能力有時也是一種病,那你還會想擁有么?
你的問題不是沒有能力,而是沒有朋友
大勢男idol隨手一張圖竟被做成產品銷售!這樣的帶貨能力真是太膩害了!
有能力的人都這樣賺錢,只是貧窮限制了你想像
VUCA時代,思維能力才是我們最稀缺的能力