原创 史上最簡單的FutureTask詳解

文章目錄類結構圖狀態圖數據結構核心代碼線程任務執行其他線程獲取調用結果 類結構圖 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4em7Nj6W-1590979770612)(evernotecid

原创 教你們做一個基於Java的特別水的LRU和FIFO緩存淘汰

文章目錄介紹LinkedHashMap介紹LRU代碼FIFO代碼結尾引用 介紹 LRU全稱是Least Recently Used,即最近最久未使用的意思。 LRU算法的設計原則是:如果一個數據在最近一段時間沒有被訪問到,那麼在將

原创 java的cas原理(jvm底層實現的彙編語言)

文章目錄簡介jvm實現原理cmpxchgllock題外話 簡介 CAS (Compare And Swap)比較並交換操作。 CAS 有 3 個操作數,分別是內存位置 V、舊的預期值 A 和擬修改的新值 B。當且僅當 V 符合預期

原创 JDK14的AbstractQueuedSynchronizer(AQS)源碼解析

文章目錄介紹doc文檔說明方法獲取排他鎖流程釋放排它鎖流程獲取共享鎖流程ConditionObjectawait方法singal方法jdk實現類CountDownLatch(共享鎖)Semaphore(共享鎖)ThreadPool

原创 使用Java寫出掃描包的工具

使用Java寫出掃描包的工具 1.前言   通過掃描包的工具,可以使Java在運行時動態加載類。 2.正文 本文主要是帶你們如何製作一個簡單的掃描包的工具。主要思想分爲,第一步通過獲取當前線程來獲取到當前文件的根目錄,第二步根

原创 Java併發編程:Thread.java源碼解析

Java併發編程:Thread.java源碼解析 1.前言   最近發現對於線程還不是很熟悉只是停於理解,便對Thread.java類做一個系統的研究,並記錄在此。 2.正文 2.1.案例解析 先看如下三個例子: @T

原创 ThreadLocal類源碼詳解,帶領領略不一樣的東西

文章目錄總結ThreadLocalMap的Entry類新增數據replaceStaleEntry方法expungeStaleEntry方法cleanSomeSlots方法rehash方法resize方法expungeStaleEn

原创 Java Thread源碼解析

Java Thread源碼解析 1.前言   我們知道,new一個thread,調用它的start的方法,就可以創建一個線程,並且啓動該線程,然後執行該線程需要執行的業務邏輯,那麼run方法是怎麼被執行的呢? 2.正文 2.1.T

原创 Java通過JDBC實現配置文件創建數據庫

Java通過JDBC實現配置文件創建數據庫 1.前景   把項目打包至服務器時,發現要手動創建多個數據,實屬麻煩。便寫了個通過JDBC創建數據庫的小方法。 2.步驟 首先,先來說說該方法的思路。第一步,構造配置文件讀取數據源的UR

原创 自制Spring容器——(一)包掃描

自制Spring容器——(一)包掃描 前言   Spring的核心概念就是提供一種新的機制管理業務對象及其依賴關係。IoC(Inversion of Control 控制反轉)/ DI (Dependency Injection依賴

原创 關於XML文檔的xmlns、xmlns:xsi和xsi:schemaLocation

關於XML文檔的xmlns、xmlns:xsi和xsi:schemaLocation 摘要   相信很多人和我一樣,在編寫Spring或者Maven或者其他需要用到XML文檔的程序時,通常都是將這些XML文檔頭拷貝過來,並沒有理解其

原创 Servlet + Spring 搭建Thymeleaf模板引擎小案例

Servlet + Spring 搭建Thymeleaf模板引擎小案例 前言   Thymeleaf模板引擎比較傾向於前端,瞭解過一點前端的人都會很快上手的。之所以不用JSP模板,是因爲他還是原生的Java代碼。換句話來說,就是Th

原创 純Java啓動Web(無配置web.xml)

純Java啓動Web(無配置web.xml) 前言   突然奇想不用SpringBoot,並且不配置xml文件來啓動Web應用程序! 正文   先貼出程序所需的Java代碼以及Pom,如下: Pom.xml <?xml versi

原创 關於 Spring 父子容器的三個問題

關於 Spring 父子容器的三個問題 前言   對 Spring 父容器和子容器做了一個案例的測試。對於已有的問題進行了一個好的測試。 正文   我先把本項目的Web啓動類,以及一些基本配置發上來。關於如何構建一個Web項目,可

原创 JDK8之時間線對象Instant

JDK8中Instant 前言 如果是 JDK8 的應用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar, DateTimeFormatter 代替 SimpleDateFormat,官