原创 Java8-Collectors.groupingBy()-JDK源碼分析

1.引子  groupingBy方法有多個重載方法,但是根本上只有一個方法。之所以提供這麼多方法的重載,主要目的還是爲了開發者調用方便。通過對於此分組靜態方法的學習,我們可以更好地瞭解Java在收集器collector接口實現上的

原创 Java8-自定義收集器的實現及源碼代碼調用分析

1.引子:  Java8帶給Java的最大特點就是函數式編程,其中一個重要的更新就是對於流的支持,這使得開發者可以使用一行代碼就能完成從一個數據結構轉化爲另一個數據結構,編程效率大大提高。爲了充分理解收集器Colleector接口

原创 Java-Sink接口源碼分析以及繼承關係

idea繼承圖例說明: 實線箭頭是指繼承關係 虛線箭頭是指接口實現關係 綠色代表接口 藍色代表接口以及抽象類  Sink繼承於Consumer,實際上就是比Consumer接口多了幾個方法:begin、end、cance

原创 Java-forEach增強for循環是值傳遞規則詳解

1. 引入  正如Java語法意義,變量的傳遞只有值傳遞,雖然變量分爲引用變量和基本類型變量,前者更像C中的地址概念。 在學習Lambda表達式的時候,遇到了試圖在增強for循環中對原鏈表元素重新賦值失敗的問題,網絡上也沒有針對此

原创 關於博客代碼區字體在Chrome遊覽器中顯示不清晰問題的解決

 如果你使用的是Google Chrome遊覽器,那麼出現字體不清可能是由於Google瀏覽器默認字體對中文字體設置不兼容導致的。  Chrome設置字體步驟: 設置 -> 字體->將四個默認字體選項按順序設置爲「Arial、Ge

原创 Java併發-死鎖

一、死鎖的簡單概念  所謂死鎖是指兩個或兩個以上的線程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。  網友們有一個生動形象的比方:兩個人面對面過獨木橋,甲和乙都已經在橋上走了一段距離,即

原创 Java-“this”和“類名.this”以及“類名.class”的區分和詳解

引言: 對於以上三個語法結構的區分,需要先理解Class類 所有對象的類以及調用了靜態方法的類都需要在對象創建之前在JVM虛擬機中加載,加載內容被稱爲“類對象”,每個類的類對象是唯一且是不可變的。而在對象創建的時候,由於類對象已加

原创 Java-ThreadLoal案例以及分析

案例 public class Demo_ThreadLocal { private ThreadLocal<Integer> count = new ThreadLocal<Integer>() {//注意這裏一定要指

原创 Java-volatile-面試官最喜歡問的關鍵字之一

原文鏈接:https://mp.weixin.qq.com/s?__biz=MzU4ODI1MjA3NQ==&mid=2247484006&idx=1&sn=15cf2b8a17bd6f49952f

原创 Java中Synchronized的用法

引出: Java中synchronized修飾符在多線程同步中有所大展拳腳,所以十分有必要對其進行整理、對照和學習 synchronized修飾符的使用場景整理總結、分類 修飾對象 作用範圍 作用對象 代碼塊(稱爲

原创 Java-安全發佈

一、安全發佈的定義  發佈是一個動詞,是去發佈對象。而對象,通俗的理解是:JAVA裏面通過 new 關鍵字 創建一個對象。  發佈一個對象的意思是:使對象在當前作用域之外的代碼中使用。比如下面knowSecrets指向的HashS

原创 Java中靜態代碼塊、構造代碼塊、構造函數、普通代碼塊

一、格式區分及其性質 1.靜態代碼塊  Java使用static{//Code...}的格式代表靜態代碼塊。位置:位於類內,與方法同層次 public class Test{ static{ //Code...

原创 看《算法導論》-感想

 說實話,我沒把那書看完,甚至沒有看過1/10,至於做題就更沒譜了,只要不是有人提起,我根本不知道哪個題居然在算導(下文簡寫成clrs)中出現過,但是我還要寫一下我對這書的心得,看法和感受,尤其是和找工作的關係,供大家分享。  1

原创 Linux 學習階段與方法

Linux個人學習階段與方法 題記:最近準備開始學習Linux系統,故開此文。 學習階段介紹 第一階段: Linux 環境下的基本操作,包括 文件操作命令(rm mkdir chmod chown)編輯工具使用(vi vim) L

原创 Java併發-守護線程-Daemon

1.代碼示例: CodeBlock-1: 1.1 守護線程在main線程中創建 public class DaemonThread { public static void main(String[] args) {