03.03 有哪些Java源代碼看了後讓你收穫很多?

Java架構技術


曾經讀過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多年了,如何能閱讀一些牛人寫的底層源碼,那麼對自己的編程思想和技術都是非常有幫助的。我認為,java中jdbc源碼,Spring源碼都是非常值得讀的。下面對一些閱讀過的源碼進行總結。

一、jdbc操作數據庫源碼

java數據庫源碼閱讀 ,先讀讀Sun的JDBC規範。 我想你一定寫過JDBC的代碼,那麼這時候可以開始閱讀源碼了。 如果瞭解JDBC規範(接口),那麼它的實現,JDBC Driver就一定要開始瞭解,我的建議是,讀讀mysql的jdbc驅動,因為它開源、設計優雅。比如你可以知道mysql的JDBC驅動,如何通過socket數據包(connect、query),給這個C++開發的mysql服務器交互的。 通過上面的閱讀,你可以知道,你的業務代碼、JDBC規範、JDBC驅動、以及數據庫,它們是如何一起協作的。 如果你瞭解這些內幕,那麼你再學習Hibernate、iBatis等持久化框架時,就會得心應手的。 讀過JDBC驅動,那麼下一步一定要讀讀數據庫了。而正好有一個強大的數據庫是用Java開發的,

二、Socket通信源碼

學習Socket通訊實現,特別是C/S架構設計

3、模塊化設計。它們都是基於module的,你既可以瞭解模塊化架構,還可以瞭解模塊化的技術支撐:Java虛擬機的ClassLoader的應用場景。

4、Event Driven架構。雖然GUI都是Event驅動的,但Spark的設計尤其優雅 這麼說吧,讀它們的源碼,你會為做一名程序員而自豪,因為無論是他們的架構設計還是代碼,都太漂亮了。 Java企業級應用 當然了,就是Hibernate、Spring這類框架。 在讀Spring源碼前,一定要先看看Rod Johnson寫的那邊《J2EE Design and Development》,它是Spring的設計思路。注意,不是中文版,中文版完全被糟蹋了。

三、hadoop大數據處理源碼

hadoop發展到現在這個階段,代碼已經變得非常龐大臃腫,如果你直接閱讀最新版本的源代碼,難度比較大,需要足夠的耐心和時間,所以,如果你覺得認真一次,認真閱讀一次hadoop源代碼,一定要有足夠的心理準備和時間預期。其次,需要注意,閱讀Hadoop源代碼的效率,因人而異,如果你有足夠的分佈式系統知識儲備,看過類似的系統,則能夠很快地讀它的源代碼進行通讀,並快速切入你最關注的局部細節,比如你之前看過某個分佈式數據庫的源代碼,對分佈式系統的網絡通信模塊,調度模塊等有一定了解,這對閱讀hadoop源代碼有極大幫助;如果你是一個初學者,對hadoop一無所知,只瞭解一些java語法,那閱讀hadoop源代碼是極具挑戰的一件事情,尤其是從無到開始入門的過程,是極度煎熬和困惑的,這時候需要你在閱讀代碼過程中,不斷補充缺乏的相關知識(比如RPC,NIO,設計模式等),循序漸進,直到入門。

電腦學堂


一般學習框架,比如struts、hibernate、spring的時候,會要求多看看源代碼。另外,java基礎中的集合框架部分可以看看,StringBuffer部分看過之後你竟然發現他的底層調用居然是Stringbuilder。另外,就是javaio的源碼、servlet和jsp的源碼,最後,是tomcat的源碼!


分享到:


相關文章: