原创 讓鏈表題目不再複雜

前言 我們接着上部分的二分查找,再繼續鏈表相關的題目 換一個角度來理解鏈表 我相信大家對鏈表的數據結構已經很熟悉了。什麼單鏈表,循環鏈表,雙向鏈表,雙向循環鏈表。 我們這裏以java的層面來理解指針或引用的含義: 實際上,鏈表其實並不複雜,

原创 二分查找算法詳解

前言 最近刷了很多二分查找相關的題目,這裏將近期的收穫做一個總結,包括二分查找的變形問題。如果能掌握,我相信以後基本上二分查找相關的問題對你來說,都不是問題。 二分查找的效率 二分查找是啥我想不用過多的說明。我們都知道二分查找的時間複雜程度

原创 關於springboot2.*版本無法加載靜態資源

前言 在學習springboot的過程中,發現無法引用靜態資源。我使用的是springboot2.2.1版本。 追溯源碼,終於解決。並記錄下解決思路。 默認加載路徑 首先得知道springboot默認加載得資源路徑是什麼。 首先我們看Web

原创 mysql全局變量和局部變量

全局變量和局部變量 在服務器啓動時,會將每個全局變量初始化爲其默認值(可以通過命令行或選項文件中指定的選項更改這些默認值)。然後服務器還爲每個連接的客戶端維護一組會話變量,客戶端的會話變量在連接時使用相應全局變量的當前值初始化。 舉一個例子

原创 Netty基礎系列(5) --零拷貝底層分析

前言 上一節(堆外內存與零拷貝)當中我們從jvm堆內存的視角解釋了一波零拷貝原理,但是僅僅這樣還是不夠的。 爲了徹底搞懂零拷貝,我們趁熱打鐵,接着上一節來繼續講解零拷貝的底層原理。 感受一下NIO的速度 之前的章節中我們說過,Nio並不能解

原创 設計模式的七大原則(5) --開閉原則

前言 我們已經學習了單一職責原則,依賴倒置原則,接口隔離原則,李氏替換原則。可以說前面幾個原則都是爲了開閉原則奠定基礎。 我們寫的程序由於實際的情況可以一定程度上違背各種設計原則。但是,開閉原則我認爲作爲一個程序猿無論什麼時候都需要遵循他,

原创 設計模式的七大原則(6) --迪米特法則

前言 迪米特法則,聽名字有點奇怪,但是這個法則真的非常非常有意思,在我看來,這個法則其實描述的就是一個矜持的小姑娘,害羞的惹人憐愛。但是啊,姑娘雖好,切不可"貪杯"哦~ 基本介紹 一個對象應該對其他對象保持最少的瞭解。 類與類關係越密切,

原创 設計模式的七大原則(7) --合成複用原則

前言 我們終於學習最後一個設計原則了,其實博主更新的還是挺慢的,因爲我想一個一個吃透以後再繼續學習,切記不要囫圇吞棗。 基本介紹 其實這個能說的內容很少,就是:儘量使用合成/聚合的方式,而不是使用繼承 爲什麼要這樣做?有一下兩點原因: 通

原创 Netty基礎系列(4) --堆外內存與零拷貝

前言 到目前爲止,我們知道Nio當中有三個最最核心的組件,分別是:Selelctor,Channel,Buffer。在Netty基礎系列(3) --徹底理解NIO 這一篇文章中只是進行了大致的介紹。 我們現在來深入理解一下Buffer在 堆

原创 設計模式的七大原則(4) --里氏替換原則

前言 上一節中我們介紹了,依賴倒置,依賴倒置利用抽象的穩定性來架構我們的系統,是我們經常能遇到的一種原則,比如說面向接口編程。 這一節中,我們來說說里氏替換原則,這個原則其實非常非常的簡單,其實與依賴倒置相結合來看,就是希望我們用抽象的方法

原创 設計模式的七大原則(3) --依賴倒置原則

前言 上一節我們說了接口隔離原則,就是讓接口的職責最小化。這樣對維護代碼簡單,調用方法也清晰。 這節我們來研究依賴倒置原則。這個原則我認爲是特別特別重要的。在很多地方我們能看到。比如Dubbo中使用到的SPI等等。 基本介紹 什麼是依賴倒置

原创 設計模式的七大原則(2) --接口隔離原則

前言 上一節我們學習了單一職責原則,簡單來說就是各司其職,廚師就專注做好菜,不要跑到前堂做起小二。 但是呢,萬事無一絕對。如果只是小飯店有時候也不是特別嚴格。還是那句話,原則是死的,人是活的。 接下來我們來學習接口隔離原則。 基本介紹 客戶

原创 使用WebService發佈soap接口,並實現客戶端的https驗證

什麼是https HTTPS其實是有兩部分組成:HTTP + SSL / TLS, 也就是在HTTP上又加了一層處理加密信息的模塊,並且會進行身份的驗證。 如何進行身份驗證? 首先我們要明白什麼是對稱加密,什麼是非堆成加密 對稱加密 對稱加

原创 JVM中有哪些內存區域,分別是用來幹什麼的

前言 之前我們探討過一個.class文件是如何被加載到jvm中的。但是jvm內又是如何劃分內存的呢?這個內被加載到了那一塊內存中?jvm內存劃分也是面試當中必被問到的一個面試題。 什麼是jvm內存區域劃分? 其實這個問題非常簡單,JVM在運

原创 關於類的初始化以及類的實例化一些思考

前言 上一篇我們知道了一個類的生命週期是:加載->驗證->準備->解析->初始化->使用->卸載。 當初始化完成以後,一個類所有的類變量(被static修飾的變量)都被賦值。但是未被static修飾的成員變量又是何時被賦值的呢? 一個類何時