原创 java程序員從小工到專家成神之路(2020版)

文章目錄必須掌握的基礎知識1. Git & Github2. Linux3. 數據結構和算法4. HTTP / HTTPS5. 設計模式6. 計算機原理java學習之路1. 工具1.1 開發工具1.2 構建工具1.3 虛擬化工具1

原创 由於不當的執行順序導致的死鎖

爲了保證線程的安全,我們引入了加鎖機制,但是如果不加限制的使用加鎖,就有可能會導致順序死鎖(Lock-Ordering Deadlock)。上篇文章我們也提到了在線程詞中因爲資源的不足而導致的資源死鎖(Resource Deadl

原创 一文讀懂密碼學中的證書

一文讀懂密碼學中的證書 之前的文章中,我們講到了數字簽名,數字簽名的作用就是防止篡改和僞裝,並且能夠防止否認。但是要正確運用數字簽名技術還有一個非常大的前提,那就是用來驗證簽名的公鑰必須真正的屬於發送者。 如果你獲取到的公鑰是僞造

原创 都2020年了,這5個java IDE神器你還不知道?

TIOBE的4月份編程語言排行榜出來了,java還是穩坐第一位,java最新的版本也到了13,一直以來java憑藉其企業級應用的優勢和大量的框架級應用俘獲了大量的粉絲和企業客戶。 談到開發者,java肯定是個繞不過去的話題,那

原创 一篇文章讓你徹底弄懂SSL/TLS協議

文章目錄SSL/TLS的應用TLS協議的架構握手協議主密碼和預備主密碼TLS記錄協議 一篇文章讓你徹底弄懂SSL/TLS協議 SSL/TLS是一種密碼通信框架,他是世界上使用最廣泛的密碼通信方法。SSL/TLS綜合運用了密碼學中的

原创 java中有界隊列的飽和策略(reject policy)

文章目錄AbortPolicyDiscardPolicyDiscardOldestPolicyCallerRunsPolicy使用Semaphore java中有界隊列的飽和策略(reject policy) 我們在使用Execu

原创 同步類的基礎AbstractQueuedSynchronizer(AQS)

同步類的基礎AbstractQueuedSynchronizer(AQS) 我們之前介紹了很多同步類,比如ReentrantLock,Semaphore, CountDownLatch, ReentrantReadWriteLoc

原创 使用ExecutorService來停止線程服務

文章目錄使用shutdown使用shutdownNow 使用ExecutorService來停止線程服務 之前的文章中我們提到了ExecutorService可以使用shutdown和shutdownNow來關閉。 這兩種關閉的區

原创 java內存模型(JMM)和happens-before

文章目錄重排序Happens-Before安全發佈初始化安全性 java內存模型(JMM)和happens-before 我們知道java程序是運行在JVM中的,而JVM就是構建在內存上的虛擬機,那麼內存模型JMM是做什麼用的呢?

原创 非阻塞算法(Lock-Free)的實現

文章目錄非阻塞的棧非阻塞的鏈表 非阻塞算法(Lock-Free)的實現 上篇文章我們講到了使用鎖會帶來的各種缺點,本文將會講解如何使用非阻塞算法。非阻塞算法一般會使用CAS來協調線程的操作。 雖然非阻塞算法有諸多優點,但是在實現上

原创 有關密鑰的最全總結都在這了

文章目錄各種密鑰總結其他密鑰分類密鑰的管理 密鑰詳解 在之前的文章中,我們講到了對稱密碼,公鑰密碼,消息認證碼和數字簽名等密碼學的技術,這些技術中都使用到了一個叫做密鑰的東西。 那麼到底什麼是密鑰呢?密鑰就是一個key,通過這個k

原创 非阻塞同步機制和CAS

文章目錄什麼是非阻塞同步悲觀鎖和樂觀鎖CAS 非阻塞同步機制和CAS 我們知道在java 5之前同步是通過Synchronized關鍵字來實現的,在java 5之後,java.util.concurrent包裏面添加了很多性能更加

原创 基於口令的密碼(PBE)

基於口令的密碼(PBE) 基於口令的密碼(Password Based Encryption,PBE)是一種基於口令生成密鑰,並使用該密鑰進行加密的方法。其中加密和解密使用的是同一個密鑰。 根據用戶自己的口令和salt生成口令密碼

原创 java中CompletionService的使用

java中CompletionService的使用 之前的文章中我們講到了ExecutorService,通過ExecutorService我們可以提交一個個的task,並且返回Future,然後通過調用Future.get方法來

原创 在java中構建高效的結果緩存

文章目錄使用HashMap使用ConcurrentHashMapFutureTask 在java中構建高效的結果緩存 緩存是現代應用服務器中非常常用的組件。除了第三方緩存以外,我們通常也需要在java中構建內部使用的緩存。那麼怎麼