原创 雙親委派模型破壞

雙親委派 當一個類加載器去加載類時先嚐試讓父類加載器去加載,如果父類加載器加載不了再嘗試自身加載。這也是我們在自定義ClassLoader時java官方建議遵守的約定。 雙親委派模型能保證基礎類僅加載一次,不會讓jvm中存在重名的類。比如

原创 B+樹劣勢

- **更少的IO次數:**B+樹的非葉節點只包含鍵,而不包含真實數據,因此每個節點存儲的記錄個數比B數多很多(即階m更大),因此B+樹的高度更低,訪問時所需要的IO次數更少。此外,由於每個節點存儲的記錄數更多,所以對訪問局部性原理的利用

原创 select * 的好處和壞處

很多資料只說了這種寫法的壞處 1.取出全部的列會讓優化器無法完成索引覆蓋掃描這類油畫 2.會帶來額外的I/O 內存 CPU的消耗 好處 能提高相同代碼的複用性。 很簡單理解,有 a b c三類 ,如果我select * 那麼,我需要用到a

原创 Redis客戶端 從發送命令到回覆的過程

1.發送命令 當我們在客戶端輸入命令時,客戶端會將命令轉換協議格式 2.讀取命令 服務器收到後,將命令請求保存到客戶端狀態的輸入緩衝區,客戶端狀態是保存狀態信息的,比如客戶端連接時間、是否授權、輸入緩存區等等。 完成輸入後,對輸入緩存區進

原创 java虛擬機(四)雙親委派模型

雙親委派模型是在實現在類加載器之間的。 一般有三種類加載器  啓動類加載器  擴展類加載器     應用程序加載器。  在沒有自己定義的類加載器出現 我們的應用程序是由這三種類加載器相互配合的。 從名字可以看出  啓動類加載器是最頂層的 

原创 java虛擬機(八)語法糖

語法糖可以看成是編譯器實現的一些功能。他們幫我們程序員特高代碼開發效率。 如泛型: 泛型擦除前 public static void main(String[] args) { Map<String, String> map = ne

原创 java8(一)Lambda 使用例子(四步走)

第一步行爲參數化 一般我們傳參數是傳值、引用。但這裏我們要傳行爲。 舉例子: if(XXXXX)   通過參數把判斷的行爲傳進XXXXX 就是行爲參數化,我們可以傳(i>19)等條件 第二步使用函數式接口來傳遞行爲 這裏我直接使用jdk中

原创 java虛擬機(十)synchronized是如何實現可見性和有序性的,和volatile的區別

大家都知道 synchronized 是鎖。那怎麼會實現可見性和有序性。volatile也能實現對吧。 java內存模型是這麼規定的 關於主內存與工作內存之間的交互協議,即一個變量如何從主內存拷貝到工作內存。如何從工作內存同步到主內存中的

原创 Jenkins上傳項目已經刪除文件,但是Jenkins中沒有刪除

最近,本人在項目中刪除一個文件,因爲不刪除就跑不起來。刪除後上傳到Jenkins後,還是跑不起來。去碼雲上看,發現確實已經把該文件刪除掉了。 接下來,我直接把項目打包成war,手動上傳到服務器。發現,又可以跑起來了。 於是我想是不是Jen

原创 java8(二)Lambda 使用局部變量爲什麼要顯示聲明爲final 或者 事實上分final

int i=1; Runnable r=()->System.out.println(i); 先來說下什麼是事實上的final。 如果我聲明瞭一個變量,且在後面不更改它的值,那麼那就是事實上的final。 我改下代碼 int i=

原创 java併發(三)CopyOnWriteArrayList源碼分析

先看前面一部分 private static final long serialVersionUID = 8673264195747942595L;//用於序列化 /** The lock protecting all mu

原创 java虛擬機(七)靜態分派與動態分派

通過分派的講解可以知道java中重載和重寫在java虛擬機中是如何是實現的。 靜態分派 package org.fenixsoft.polymorphic; /** * 方法靜態分派演示 * @author zzm */ pub

原创 java虛擬機(六)局部變量表

局部變量表示一組變量值儲存空間,用於存放方法參數和方法內部定義的局部變量。 其最小單位爲solt。一個slot可以存放一個boolean,byte,char,short,int,float,reference,returnAddress,

原创 悲催!!!把null字符串看成null

銘記    太慘了 在編譯器真的很難看出來

原创 java併發(一)線程中斷 interrupt()

首先我們要明白線程中斷並不能終止該線程的執行,被中斷的線程根據自己的中斷狀態自己處理。 舉個例子。 你正在學習,媽媽大聲跟你說來吃飯了(此時就調用了interrupt())方法。這時候你知道了,哦,可以吃飯了。但是我還是想寫完這道題目再去