原创 mysql的一次報錯排查

昨天工作時,因爲一個sql沒注意,搞了半天才解決,現在記錄下。 業務場景比較複雜,查詢的sql也複雜了些。業務邏輯最複雜的地方在其中的一個子查詢那,結果最終的結果怎麼都不對,以爲是子查詢那出了問題,對業務邏輯梳理了半天,發現子查詢的sql

原创 【Java併發】CountDownLatch

ReentrantLock爲獨佔鎖,也即排他鎖,同一時刻只能有一個線程持有鎖。現在來看幾種共享鎖。 CountDownLatch public CountDownLatch(int count) { if (coun

原创 【Java基礎】初始化時代碼塊執行順序

本文講下類在初始化加載時,靜態代碼塊、構造代碼塊、構造函數以及有父類時的執行順序。 1、無父類時 看個例子就一目瞭然了。 public class TempTest { private static final Logger

原创 【Java併發】AQS

AQS依賴於提供一個原子變量(state)用來表示當前鎖對象的同步狀態,並且提供了三個對state變量原子操作的方法 getState() setState() compareAndSetState() /** * Returns t

原创 FactoryBean與ObjectFactory

FactoryBean public interface FactoryBean<T> { //獲取對象 T getObject() throws Exception; //獲取對象類型 Class

原创 【Java併發】ReentrantLock

前篇寫了JUC的基礎AQS,其中介紹了它提供的很多模板方法,但是在實際編程中我們不會直接使用它,而是會使用它的各種實現。本文將介紹在實際使用中出現頻率很高的一種併發鎖——ReentrantLock。 從名字上來看,ReentrantLoc

原创 自定義springboot starter和自定義條件註解

新建工程 新建工程,com.example.myboot。 MybootProperties @ConfigurationProperties(prefix = "myboot") public class MybootPrope

原创 記PowerMockito whenNew的一個坑

被測試類: class A { public void handle() { B b = new B(); } } 測試handle方法,而我不想真正去執行new B()操作,那麼可以使用PowerMoc

原创 【Java基礎】LinkedHashMap

HashMap是根據key的hash值進行散列存儲的,每個節點間是無序的。而LinkedHashMap可以實現有序的存儲鍵值對。 LinkedHashMap是繼承於HashMap的,所以它的很多屬性和方法都是HashMap中的,那麼它是怎

原创 mysql事務、鎖、MVCC

事務特性(ACID) 原子性 Atomicity。每個事務中的操作,要麼都成功,要麼都失敗 一致性 Consistency。事務執行前後,數據庫中的數據應該保持一致 隔離性 Isolation。事務之間應該是隔離的,事務之間互不

原创 mysql組合索引

定義 不同於對某列建立索引,可以同時對多個列建立索引,也稱複合索引、聯合索引。 測試表 CREATE TABLE `test` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMEN

原创 wait、notify、notifyAll

本文總結下wait、notify、notifyAll,其實是爲了試試markdown。。。 wait 釋放所持有的鎖,線程阻塞。 能釋放,那必須先持有,和synchronized配合使用。 線程調用wait方法,會進入

原创 @Autowired和@Resource

@Autowired spring提供的註解 按類型注入,byType 當同一類型有多個bean時,配合@Qualifier指定注入某個bean 當@Autowired修飾的屬性不是一定要注入時,可以指定requi

原创 【Java併發】CyclicBarrier

CyclicBarrier從字面意思上來看,循環柵欄,這篇文章就來分析下是到底是如何實現循環和柵欄的。 屬性 private final ReentrantLock lock = new ReentrantLock(); /**

原创 記一次編譯報錯——no project xxx : Formatting violations found in the following files

下載了spring-boot-v2.2.2.RELEASE後,按照網上說的方法進行編譯,命令爲 mvn -Dmaven.test.failure.ignore=true -Dmaven.test.skip=true clean inst