原创 Java併發編程——死鎖與併發最佳實踐

目錄一、死鎖1.產生的必要條件2.死鎖示例二、Java併發的最佳實踐Java併發編程學習系列 一、死鎖 1.產生的必要條件 互斥條件:進程對鎖分配的資源進行排他性使用; 請求和保持條件:線程已經保持了一個資源,但是又提出了其他請

原创 劍指offer——青蛙跳

問題 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 方法一:遞歸 public class Solution1 { /** * 運行時間

原创 Java併發編程——AQS組件之信號量(Semaphore)

目錄一、AQS組件——信號量`Semaphore`1. 信號量(`Semaphore`)介紹:2.使用場景 僅能提供有限訪問的資源。比如數據庫連接。二、信號量(`Semaphore`)的使用1.允許單一許可場景2.允許多個許可場景

原创 9月28日

文章目錄代碼糾錯代碼示例: 代碼糾錯 將對象中的某個字符串轉換成字符串時,經常使用 ** toString() **方法,但是當該字段爲null時,使用 ** toString() ** 方法就會報空指針錯誤,因此使用該方法前判斷

原创 Java併發編程——AQS組件之CyclicBarrier

目錄一、`AQS`組件`CyclicBarrier`1.`CyclicBarrier`介紹2.`CyclicBarrier`與`CountDownLatch`的區別二、`CyclicBarrier`的應用1. `await()`允

原创 Java併發編程——Atomic基本類型

目錄一. Atomic基本類型1.基本數據類型2.常用方法二. AtomicInteger三. AtomicInteger 對象使用示例:1.非線程安全的使用示例:2. 使用AtomicInteger 實現線程安全的使用示例:3

原创 Java併發編程——J.U.C組件FutureTask、ForkJoin、BlockingQueue

目錄一、`Runnable`與`Callable`1.`Runnable`與`Callable`對比源碼區別:相同點不同點:注:`Callalbe`接口支持返回執行結果,需要調用`FutureTask.get()`得到,此方法會阻

原创 Java併發編程——原子性鎖

目錄一、同步鎖二、synchronized 常見四種用法:JMM關於`synchronized `的兩條規定:三、可見性1. 導致共享變量在線程間不可見的原因:2. `volatile`關鍵字3. `volatile`使用條件Ja

原创 Java併發編程——AQS組件之ReentrantLock、ReentrantReadWriteLock、StempedLock以及Condition

目錄如何選擇鎖一、可重入鎖`ReentrantLock`1.`ReentrantLock`介紹2.`ReentrantLock`和`Synchronized`的對比3.`ReentrantLock`的優勢4.`synchroniz

原创 Java併發編程——AQS組件之CountDownLatch

目錄一、`AQS`1. `AQS`介紹:  `AQS`(`AbstractQueuedSynchronizer`),是併發容器`J.U.C(java.lang.concurrent)`下`locks`包內的一個類。它實現了一個`F

原创 Java併發編程——不可變對象

目錄一、不可變對象1. 不可變對象需要滿足的條件:2.具體來說可以通過以下策略來實現:二. `final`實現不可變對象1. `final`的使用三. `Collections.Unmodifiable***()`類實現不可變對象

原创 隊列——數組結構實現(普通隊列)

一、隊列 1. 隊列的概念 隊列的核心理念是:先進先出; 隊列是一種特殊的線性表:它只允許在表的前端(front)進行刪除操作,而在表的後端(tail)進行插入操作; 隊列和棧都是一種操作受限的線性表,其中進行插入操作的端稱之爲

原创 劍指offer——變態青蛙跳

題目 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法; 規律: 一級臺階:1 = 2^0; 二級臺階:2 = 2^1; 三級臺階:4 = 2^2; 四級臺階:8 = 2

原创 SpringBoot+Mybatis 配置多數據源

目的: 在springBoot項目中添加database1數據庫和database2數據庫 第一步:修改application.properties配置文件    1. 在application.properties文件中追加了以

原创 後端獲取http請求中的參數

1.參數在請求url上,如:http://{host:port}/mnagement//{ruleId} 方法:在入口方法的參數前面,使用@PathVariable註解,並且變量名與url中大括號中變量名一致,即可直接傳入該方法中