原创 手撕JAVA(三十四)動態代理底層實現

一般用過動態代理以後會有很多人產生這樣的疑問: 1.handler是怎麼監聽到代理對象的方法調用的? 2.爲什麼產生代理對象的時候需要傳入接口?直接傳入一個實現類,讓代理對象持有一個實現類的引用不就應該可以了? 以這兩個問題爲主線,來簡單

原创 《人話高等數學(一)微分》

微分                           代數推導   s1=x² s2=(x+△x)² △s=(x+△x)²- x²=2x△x+(△x)² 當△x足夠小時(△x)²(可以視爲一個高階無窮小)可以忽略不計: △s=2x△

原创 手撕JAVA(三十五)堆污染

堆污染是由於泛型的使用造成的一種潛在危險。 總結起來,堆污染就是因爲使用泛型參數化類內部成員變量,同一類的不同實例對象內部裏面成員變量的類型可能不同, 編譯階段無法發現,運行期間才能被發現的類型轉換錯誤問題。 以下面一圖說明泛型可能帶來的

原创 《人話高等數學(一)微積分》

積分                           代數推導   s1=x² s2=(x+△x)² △s=(x+△x)²- x²=2x△x+(△x)² 當△x足夠小時(△x)²(可以視爲一個高階無窮小)可以忽略不計: △s=2x△

原创 手撕JAVA(三十一)手撕Mybatis底層源碼

以上是一個標準的原生mybatis的工作流程,最關鍵的步驟是: 1.創建SqlSessionFactory 2.獲取SqlSession 3.獲取動態代理對象(mapperProxy) 3.執行方法 本文將按照以上一個mybatis的標

原创 手撕JAVA(三十三)代理

概念 代理:代替處理,又稱委託模式。 實現:爲目標對象提供(包裝)了一個代理,這個代理可以控制對目標對象的訪問。外界不直接訪問目標對象,而是訪問代理對象,再由代理對象調用目標對象。 分類:靜態代理、動態代理 靜態代理 代理對象持有目標對

原创 手撕JAVA(三十二)輕量級AOP框架——lightAOP

內容涉及:泛型、反射、註解、動態代理。 分包 annotations:用於存放註解 bean:用於存放實體類 handler:用於存放動態代理中的處理器 interfaces:用於存放動態代理中的接口 interfacesImpl:用於

原创 手撕JAVA(二十八)@conditional

在《手撕JAVA(八)》一文中已經討論過springboot的自動裝配原理,其實本質上就是由XXXConfiguration這些自動配置類來完成我們所需要的類的自動加載。但是springboot整合了整個J2EE,如果整個J2EE所需要的

原创 手撕JAVA(二十九)註解

註解是JAVA5引入JAVA的一個特性,理解起來會有點抽象,這裏筆者先給出自己對註解的一個理解——註解就是一張便籤! 其次要有一個概念就是註解的應用是基於反射的。 本文舉出的三個實例中例1和例3是引用其它的優秀文獻 出處爲how2J以及 

原创 手撕JAVA(三十)與我相識一年半的那個JAVA

        我曾在自己的畢業論文中這樣介紹JAVA:         “java是一門面向對象的編程語言,也是世界上目前應用最爲廣泛的編程語言。java是20世紀90年代sun公司工程師詹姆斯·高斯林所領導的一個名爲Green項目小組

原创 手撕JAVA(二十七)簡單聊聊大數據(下)MapReduce

什麼是MapReduce MapReduce是大數據時代最強悍的數據處理方式,靈活,可完全自主定製。但是很遺憾,其功能和複雜度一樣強大。開發中基本不具有實用性。但是後續很多處理框架都是基於MapReduce的思想而來,它仍是大數據處理的基

原创 手撕JAVA(二十六)簡單聊聊大數據(中)hadoop那些事兒

Hadoop生態圈 Hadoop是個生態系統,有很多組件,Hadoop是整個系統的總稱。   整個系統的最核心層是數據存儲層(Data Storage),由數據管控層(Workload Management)來統一管理數據、資源分配。整

原创 手撕JAVA(二十四)docker

工作原理 Docker是一個開源的應用容器引擎。 Docker的理念類似於Windows的鏡像系統: 原生的Windows系統拿到手以後要安裝一系列的東西,如果每個人拿到手都要重新安裝會很麻煩,可以一個人安好一份完整的以後做出鏡像系統,其

原创 手撕JAVA(二十五)簡單聊聊大數據(上)

什麼是大數據 首先大數據沒有很多人說的那麼神祕,本質上就是大量數據的意思,當然這個量不是一般的大,而是指海量。 所以其實大數據很核心的問題就是如何對這數量級大到無法想象的海量數據如何進行處理。至於什麼數據分析之類的都是基於處理後衍生出來的

原创 手撕JAVA(二十三)Druid數據源

Druid是阿里巴巴實現的一個datasource,對數據源有良好的監控,管理能力。 依賴 要哪個版本直接去maven倉庫找依賴。   配置 ##切換數據源類型spring.datasource.type=com.alibaba.dru