原创 2020-01-03

註冊、登陸 當進入一個網站時首先進行註冊,註冊時會提示輸入手機號,利用阿里大魚接口發送一條短信驗證碼到當前號碼並將短信驗證碼保存到redis;註冊時會提示輸入郵箱賬號,當點擊註冊時會給當前郵箱發送一條激活碼給用戶激活 註冊成功

原创 Java虛擬機 -- 垃圾收集器

介紹垃圾收集器之前先要了解三個知識點: Stop-the-World JVM由於要執行GC而停止應用程序的執行 任何一種GC算法中都會發生 多數GC優化通過減少Stop-the-world發生的時間來提高程序性能 Safepoint(

原创 Java虛擬機 -- 垃圾回收模塊

垃圾回收機制 當對象被判爲垃圾的標準,即沒有被其他對象引用時,纔會被收回。 判斷對象爲垃圾的方法 引用計數法: 通過判斷對象的引用數量來決定對象是否可以被回收 每個對象實例都有一個引用計數器,被引用時+1,完成引用時-1 任何引用計數

原创 Java虛擬機 -- 類加載模塊

Java平臺無關性是如何實現的? 一次加載,到處執行,其實並不是Java語言實現了跨平臺的特性,而是在任何的平臺上都有JVM虛擬機,Java通過javac在編譯時將.java文件生成字節碼並存入到.class文件中,有了class文件纔有

原创 Java虛擬機 -- JVM內存區域模塊

JVM內存模型  --  JDK8 線程私有 程序計數器 當前線程所執行的字節碼行號指示器 通過改變計數器的值來選取下一條需要執行的字節碼指示器(比如:循環,跳轉,異常處理都需要依賴該計數器來完成) 和線程是一對一的關係即“線程私有”

原创 MySQL數據庫 -- 索引模塊

首先介紹兩種存儲的數據結構: B樹 定義:(讓每個索引塊儘可能多的存儲信息,然後查詢過程中儘可能少的IO次數) 根節點至少包括兩個孩子 樹中每個節點最多含有m個孩子(M>=2) 除根節點和葉子節點外,其他每個節點至少有ceil(m/2)個

原创 談談Synchronized底層及其優化

Synchronized的引出 同步問題的引出:由於多個線程對共享資源的操作而導致的同步問題 Synchronized是JDK1.0提供的一種同步手段,來處理同步問題 Synchronized保證了可見性與原子性 可見性:確保在鎖被釋放

原创 Java中的信號量(Semaphore)

初識Semaphore “信號量”,也可以稱其爲“信號燈”,它的存在就如同生活中的紅綠燈一般,用來控制車輛的通行。在程序員眼中,線程就好比行駛的車輛,程序員就可以通過信號量去指定線程是否可以執行,並且可以指定訪問臨界區的線程數量; 信號量

原创 數據庫基本語法使用

SELECT語句 SELECT 列名 FROM 表明; 單行檢索,多行檢索 SELECT DATABASE(); 顯示當前使用數據庫 檢索不同的行:SELECT DISTINCT 列名 FROM 表明; 只返回不同

原创 數據庫基礎筆記

數據庫基礎 關於數據庫 爲了解決數據存儲的安全性,方便數據的管理和查詢,可以存儲海量數據,從而設計出數據庫。 數據庫的引出就是爲了更方便的對數據進行管理,它能更有效的管理數據 數據庫存儲的介質 磁盤 內存 主流數據庫 S

原创 可中斷獲取鎖與超時等待獲取鎖源碼分析

可中斷式獲取鎖 可響應中斷式鎖可調用方法lock.lockInterruptibly();該方法的底層會調用AQS的acqireInterruptibly方法; acquireInterruptibly()方法: public

原创 深入理解AbstractQueuedSynchronizer(AQS)

                                             AQS詳解 在同步組件中,AQS是最核心部分,同步組件的實現依賴AQS提供的模板方法來實現同 步組件語義。 AQS實現了對同步狀態的管理,以及對阻塞

原创 LeetCode -- 3. 無重複字符的最長子串 java

題目描述: 解題思路:可以String類的方法,用兩層循環,第一層循環是不斷從前往後走,用  i  遍歷字符串,第二層循環則從第一層循環開始往後查找最長無重複子串。在第二層循環中,每次按照索引  j  將字符串拆分成子串,然後再從  i

原创 生產-消費者模型

介紹生產消費者模型中所要用到的幾個方法: wait() 方法 public final void wait()throws InterruptedException; 當調用wait()方法後,線程會立刻停止,並將該線程從鎖對象的同步隊列