原创 劍指Offer——面試題57:和爲 s 的數字

題目一:和爲s的兩個數字 題目:輸入一個遞增排序的數組和一個數字s,在數組中查找兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。 #include<iostream> #include<algorith

原创 劍指Offer——面試題67:把字符串轉換成整數

面試題67:把字符串轉換成整數 題目:請你寫一個函數StrToInt,實現把字符串轉換成整數這個功能。當然,不能使用atoi或者其他類似的庫函數。 #include<iostream> #include<algorithm> #i

原创 劍指Offer——面試題64:求1+2+…+n

面試題64:求1+2+…+n 題目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等關鍵字及條件判斷語句(A?B:C)。 🐱‍🏍解法一:利用構造函數求解 #include<ios

原创 劍指Offer——面試題61:撲克牌的順子

面試題61:撲克牌的順子 題目:從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10爲數字本身,A爲1,J爲11,Q爲12,K爲13,而大、小王可以看成任意數字。 #include<iostream> #i

原创 劍指Offer——面試題53:在排序數組中查找數字

題目一:數字在排序數組中出現的次數 題目:統計一個數字在排序數組中出現的次數。例如輸入排序數組{1, 2, 3, 3, 3, 3, 4, 5}和數字3,由於3在這個數組中出現了4次,因此輸出4。 #include<iostream

原创 GC 垃圾回收算法和垃圾收集器的關係?-----你應該瞭解的

📌 GC 算法(引用計數 / 複製 / 標清 / 標整)是內存回收的方法論,垃圾收集器就是算法落地實現。 📌 因爲目前爲止還沒有完美的收集器出現,更加沒有萬能的收集器,只是針對具體應用最合適的收集器,進行分代收集 🍀 四種主要垃圾

原创 線程池在生產上如何設置合理參數

談談線程池的拒絕策略 是什麼 等待隊列也已經滿了,再也塞不下新任務了 同時, 線程池中的 max 線程也達到了,無法繼續爲新任務服務。 這時候我們就需要拒絕策略機制合理的處理這個問題。 JDK內置的拒絕策略 AbortPolic

原创 死鎖編碼及定位分析-----你應該瞭解的

是什麼 死鎖是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力干涉那它們都將無法推進下去,如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖

原创 G1 垃圾收集器------你瞭解多少

🍀 以前收集器特點 📌 年輕代和老年代是各自獨立且連接的內存塊; 📌 年輕代收集使用單 Eden+S0+S1 進行復制算法; 📌 老年代收集必須掃描整個老年代區域; 📌 都是以儘可能少而快速地執行 GC 爲設計原則。 🍀 G1 是

原创 JVM 和 GC 的基礎知識

JVM 內存結構 JVM 體系概述 Java8 以後的 JVM GC 的作用域 常見的垃圾回收算法 引用計數 複製 Java 堆從 GC 的角度還可以細化爲:新生代(Eden區、From Survivor區和To Sur

原创 synchronized 和 lock 有什麼區別?用新的 lock 有什麼好處?-----你應該瞭解的

1、原始構成 synchronized 是關鍵字屬於 JVM 層面,            monitorenter(底層是通過 monitor 對象來完成, 其實 wait/notify 等方法也依賴於 monitor 對象只有

原创 JVM 垃圾回收的時候如何確定垃圾?談談什麼是 GC Roots

🍀什麼是垃圾 簡單的說就是內存中已經不再被使用到的空間就是垃圾 🍀要進行垃圾回收,如何判斷一個對象是否可以被回收? 📌引用計數法 Java中,引用和對象是有關聯的。如果要操作對象則必須要引用進行。 因此,很顯然一個簡單的辦法是通過

原创 強引用、軟引用、弱引用、虛引用分別是什麼?------你應該瞭解的

🍀 整體架構 🍀 強引用(默認支持模式) 當內存不足,JVM 開始垃圾回收,對於強引用的對象,就算是出現了 OOM 也不會對該對象進行回收,死都不收。 強引用是我們最常見的普通對象引用,只要還有強引用指向一個對象,就能表明對象還

原创 CountDownLatch / CyclicBarrier / Semaphore 的介紹

CountDownLatch 讓一些線程阻塞直到另一些線程完成一系列操作後才被喚醒 package com.brian.interview.study.thread; import com.brian.interview.enu

原创 談談線程池,談談對ThreadPoolExecutor的理解

爲什麼用線程池,優勢 線程池做的工作主要是控制運行的線程的數量,處理過程中將任務放入隊列,然後在線程創建後啓動這些任務,如果線程數量超過了最大數量超出數量的線程排隊等待,等其它線程執行完畢,再從隊列中取出任務來執行。 他的主要特點