原创 代理模式(Proxy pattern)——靜態代理、動態代理

文章目錄定義組成部分靜態代理靜態代理分析動態代理(這裏以JDK的動態代理爲例,動態代理一般有兩個主流實現:①JDK,②cglib)動態代理分析動態代理的優點總結 定義 設計模式來源於生活,這次講的代理模式也是生活中非常常見的一種場

原创 手寫JDK動態代理(Implememt your own JDK dynamic proxy)

文章目錄手寫自己的動態代理需要重寫那些內容動態生成的 $Proxy0 對象長什麼樣?反編譯$Proxy.class代碼分析實現動態代理的關鍵實現完整代碼自定義代理類實現測試方法運行結果總結 手寫自己的動態代理需要重寫那些內容 首先

原创 Java集合HashMap 源碼分析

文章目錄一、HashMap簡介二、底層數據結構分析(1)存放元素的結構(2)紅黑樹節點的數據類型定義爲:(3)HashMap類的一些屬性三、HashMap的構造方法四、HashMap的關鍵方法(1)put方法(2)get方法(3)

原创 網絡通信基礎(一)——HTTP(TCP/IP)通信協議

文章目錄HTTP(Hyper Text Transfer Protocol)即超文本傳輸協議超文本:傳輸:協議:ISO 七層網絡模型和TCP/IP四層概念模型ISO 七層網絡模型TCP/IP四層概念模型一個 HTTP 請求,在整個

原创 Spring Boot 使用FastJson實現Jsonp返回

JSONP返回實現思路 在Java Web項目中,Jsonp 是非常常用的東西,這裏實現Jsonp返回是通過fastjson實現的,實現效果如下 測試訪問接口: localhost:8080/testJsonp?platform=

原创 IDEA Spring Boot項目搭建

文章目錄備註項目搭建 備註 小編使用的是IDEA專業版,社區版和社區版的Spring Boot插件名稱有點不太一樣,建議各位使用社區版的同學,安裝專業版,因爲社區版有很多的功能都沒有,對於入門可能影響不大,但如果是工作需要,那就有

原创 Java中servlet的實現過程

原博客地址:http://blog.sina.com.cn/s/blog_84f5d20b0100ty67.html 編寫完HelloServlet後,編譯若不成功要確定是否已經將tomcat目錄下lib/servlet-api.ja

原创 網絡通信基礎(二)HTTP和HTTPS通信協議

文章目錄HTTP/HTTPS請求的組成部分相關概念URIURLDNSCDNHTTPSHTTP/HTTPS請求包含的內容請求方式(這裏只列舉最常用的四種)協議類型和版本Cookie其他的一些參數爲什麼需要HTTPS?HTTP 特點H

原创 模板方法模式(Template Method Pattern)

定義 業務場景 UML圖 代碼表現 模板方法類 具體支付類 運行main方法示例 定義 模板方法模式定義了一個算法的步驟,並允許子類別爲一個或多個步驟提供其實踐方式。讓子類別在不改變算法架構的情況下,重新定義算

原创 JVM運行時數據區

文章目錄JVM運行時數據區組成程序計數器(Program Counter Register)虛擬機棧(VM Stack)在講述棧幀具體的構成前需要一個輔助程序局部標量表操作數棧動態鏈接出口(返回值)本地方法棧(Native Met

原创 MySQL的併發控制與加鎖分析(轉)

注: 本文轉載自原博客地址:https://www.cnblogs.com/yelbosh/p/5813865.html 文章目錄1.1 MVCC:Multi-Version Concurrent Control 多版本併發控制1

原创 工廠設計模式(Factory Pattern)

文章目錄工廠設計模式概述需求描述不使用任何設計模式簡單工廠模式(靜態工廠)工廠設計模式抽象工廠總結 工廠設計模式概述 工廠設計模式根據其抽象程度可以分爲:簡單工廠(靜態工廠),一般工廠,抽象工廠 我們學習一種設計模式,首先要搞清楚

原创 單例模式(Singleton pattern)

文章目錄爲什麼要使用單例模式餓漢式懶漢式單例模式的其他實現方式靜態內部類實現枚舉實現破解單例反射破解法反序列化破解法總結 爲什麼要使用單例模式 單例模式屬於上篇說過的設計模式三大分類中的第一類——創建型模式。顧名思義,單例設計模式

原创 策略模式(Strategy pattern)——簡單工廠&反射實現

文章目錄定義示例代碼場景描述源代碼支付簡單工廠(switch 和反射兩種實現)測試客戶端運行結果總結 定義 策略模式:指的是對象具備某個行爲,但是在不同的場景中,該行爲有不同的實現算法。 舉個幾個生活的例子,就是不同收入的人羣採用

原创 Java中正負數二進制表示

在Java/C++中正數和負數的存儲方式 正數是以正碼的形式存儲 負數是以補碼的形式存儲 正碼(正數使用) 正碼就是一個數的真實值 假設有一個 int (32位)類型的數,值爲5,那麼,我們知道它在計算機中表示爲: 000000