原创 IDEA 返回上一步,回到下一步 衝突 快捷鍵設置

idea 本身的上一步下一步快捷鍵和其他軟件有衝突,所以改下上一步下一步的快捷鍵 原來的快捷鍵,如果沒有衝突可以直接用啦 回到上一步 Ctrl + Alt+ <-(左箭頭) 回到下一步 Ctrl + Alt + ->(右箭頭

原创 JAVA Synchronized和Lock的區別

Synchronized和Lock的區別 synchronized關鍵字和java.util.concurrent.locks.Lock都能加鎖,兩者有什麼區別呢? 原始構成:sync是JVM層面的,底層通過monitorent

原创 初步認識WebRTC,實現網頁調起攝像頭實時顯示功能

實現一個web網頁調用攝像頭並實時顯示在網頁的video標籤中的功能 這裏有WebRTC官網,直接有更多功能的例子參考~~ 還有在線的例子=>傳送門 WebRTC相關的文檔可以參考=>傳送門 話不多說開始拋磚引玉 WebRTC

原创 JAVA JVM 四大引用詳解及測試代碼

最近重新看jvm,做下記錄 四大引用 以下Demo都需要設置-Xmx和-Xms,不然系統默認很大,很難演示。 強引用 使用new方法創造出來的對象,默認都是強引用。GC的時候,就算內存不夠,拋出OutOfMemoryError

原创 比特幣系統數據結構 Merkle tree

疫情期間,看了區塊鏈相關,北京大學 肖臻研究員 的《區塊鏈技術與應用》課程,課程傳送門,方便複習做下筆記啦 什麼是Merkle tree 哈希樹(hash tree;Merkle tree),在密碼學及計算機科學中是一種樹形數

原创 JVM調優 Linux相關指令

Linux相關指令 top 主要查看%CPU、%MEM,還有load average。load average後面的三個數字,表示系統1分鐘、5分鐘、15分鐘的平均負載值。如果三者平均值高於0.6,則複雜比較高了。當然,用upti

原创 JAVA 阻塞隊列(BlockingQueue)的實際應用詳解(生產者消費者&&線程池)

阻塞隊列的應用——生產者消費者 傳統模式 傳統模式使用Lock來進行操作,需要手動加鎖、解鎖。 參考: import java.util.concurrent.locks.Condition; import java.util.c

原创 JAVA 併發編程 CountDownLatch/CyclicBarrier/Semaphore

CountDownLatch CountDownLatch內部維護了一個計數器,只有當計數器==0時,某些線程纔會停止阻塞,開始執行。 CountDownLatch主要有兩個方法,countDown()來讓計數器減一(-1),aw

原创 JAVA 阻塞隊列詳解及代碼示例

阻塞隊列 概念:當阻塞隊列爲空時,獲取(take)操作是阻塞的;當阻塞隊列爲滿時,添加(put)操作是阻塞的。 好處:阻塞隊列不用手動控制什麼時候該被阻塞,什麼時候該被喚醒,簡化了操作。 體系:Collection→Queue→

原创 CAS 詳解

CAS CAS是指Compare And Swap,比較並交換,是一種很重要的同步思想。如果主內存的值跟期望值一樣,那麼就進行修改,否則一直重試,直到一致爲止。 public class CASDemo { public

原创 執行xx.sh腳本時,報錯 xx.sh /bin/bash^M: 壞的解釋器:沒有那個文件或目錄

執行xx.sh腳本時,報錯 "xx.sh /bin/bash^M: 壞的解釋器:沒有那個文件或目錄” 因爲 .sh文件是從windows拷貝過來的,所以多了\r 執行: (會把 xx.sh 中的\r 替換成空白,再次執行則成功!)

原创 JAVA CAS引入的ABA問題 以及如何解決問題

ABA問題 所謂ABA問題,就是比較並交換的循環,存在一個時間差,而這個時間差可能帶來意想不到的問題。比如線程T1將值從A改爲B,然後又從B改爲A。線程T2看到的就是A,但是卻不知道這個A發生了更改。儘管線程T2 CAS操作成功,

原创 JAVA list、set、map等集合類線程不安全的問題及解決方法

List ArrayList不是線程安全類,在多線程同時寫的情況下,會拋出java.util.ConcurrentModificationException異常。 private static void listNotSafe()

原创 IDEA 2020.01版 springboot 熱部署

IDEA 2020.01版 springboot 熱部署1、先設置pom.xml文件,加入依賴1.1、在dependencies標籤里加入1.2、在plugins標籤下加入2、設置idea2.1、file->settings->c