日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java面试必学-吐血推荐

發布時間:2024/2/28 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java面试必学-吐血推荐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在B站上制作了關于java面試的視頻,希望各位大佬可以給點指導意見,作為一個老學姐,我認為有責任把知識分享給大家

【Java學姐】SQL調優必備Explain查看執行計劃各項參數解析:https://www.bilibili.com/video/BV1iZ4y1j7Wp/

【Java面試必問】Mysql索引/存儲引擎/行表鎖/分庫分表/主從復制:https://www.bilibili.com/video/BV1DK4y1C7o7/

【Java學姐】8分鐘搞懂MySQL為什么用B+樹做索引:https://www.bilibili.com/video/BV1Ka4y1t7ev/

【Java面試必問】Redis持久化/復制/雪崩/擊穿/雙寫一致性/過期策略:https://www.bilibili.com/video/BV1E7411S7Dh/

【JAVA學姐】10分鐘學會如何查看生產服務器各項狀態指標: https://www.bilibili.com/video/BV1s7411D7zE/

【Java面試必問】GC垃圾回收算法: https://www.bilibili.com/video/BV1H7411Q7M8/

【Java面試必問】JVM調優參數解析及Java虛擬機內存模型:? https://www.bilibili.com/video/BV1G7411Q7Hz/

【Java面試必問】【多線程開發必用JUC】Java并發包-JUC:? https://www.bilibili.com/video/BV14E411F7qS/

【Java面試必問】學姐帶你學面試急救包-基礎講解:https://www.bilibili.com/video/BV1LE411F79v/

?

注:為節約大家的時間,可以開啟1.5倍速觀看。

==========以下是jvm部分筆記,可觀看視頻講解=========

5、java鎖

①公平鎖:隊列先來后到? ?new ReentrantLock(true);

②非公平鎖 :可以插隊(可造成優先級反轉和饑餓的現象)? ? new ReentrantLock();

③可重入鎖(遞歸鎖):ReentrantLock/Syncronized 類似于大門鑰匙---防止死鎖

同一線程外層函數獲取鎖后,內層遞歸函數仍然能獲取該鎖(內層會自動獲取鎖)

即:線程可以進入任何一個它已經擁有的鎖所同步著的代碼塊

④自旋鎖:嘗試獲取鎖的線程不會立即阻塞,而是采用循環的方式嘗試獲取鎖,好處:減少線程上下文切換的消耗,缺點:循環會消耗CPU

⑤獨占鎖(寫):該鎖一次只能被一個線程所持有。ReentrantLock/Syncronized

⑥共享鎖(讀):該鎖可被多個線程所持有。

ReentrantReadWriteLock:讀鎖是共享鎖,寫鎖是獨占鎖。

讀鎖的共享鎖可保證并發讀是非常高效的,讀寫,寫讀,寫寫的過程是互斥的。

寫操作:原子+獨占

6、線程排序常用鎖

①CountDownLatch:秦滅六國一統華夏,線程減到0才執行主線程(減法)

②CyclicBarrier:集齊7顆龍珠,可以召喚神龍(加法)

③Semaphore:信號燈,多個線程搶多份資源。示例:爭車位

作用:一個是用于多個共享資源的互斥使用,另一個用于并發線程數的控制

7、阻塞隊列:可以使擁擠的線程進行等待,避免失敗率(自己理解)代碼

多線程領域的阻塞:在某些情況下會掛起線程(阻塞),一旦條件滿足,被掛起的線程又會自動被喚醒

①阻塞隊列有沒有好的一面:BlockingQueue可以不用關心阻塞和喚醒,BlockingQueue全包

②不得不阻塞,你如何管理:

當阻塞隊列是空時,從隊列中獲取元素的操作會被阻塞

當阻塞隊列是滿時,往隊列里添加元素的操作會被阻塞

以上可以理解為蛋糕店成產蛋糕,蛋糕柜空時,消費者阻塞;當蛋糕柜滿時,生產者阻塞

Collection的實現類有List和Queue

③Queue的實現類有:BlockingQueue接口

<1>ArrayBlockingQueue:由數組結構組成的有界阻塞隊列

<2>LinkedBlockingQueue:由鏈表結構組成的有界(大小默認Integer.MAX_VALUE)阻塞隊列

<3>PriorityBlockingQueue:支持優先級排序的無界阻塞隊列

<4>DelayQueue:使用優先級隊列實現的延遲無界阻塞隊列

<5>SynchronousQueue:不存儲元素的阻塞隊列,也即單個元素的隊列

<6>LinkedTransferQueue:由鏈表結構組成的無界阻塞隊列

<7>LinkedBlockingDeque:由鏈表結構組成的雙向阻塞隊列

④阻塞隊列的核心方法:ArrayBlockingQueue

<1>異常:add(e),remove(),element()

<2>特殊值:offer(e) ,poll(),peek()--- 成功true,失敗false?

<3>阻塞:put(e),take()

<4>超時退出:offer(e,time,unit),poll(time,unit)

⑤阻塞隊列用在哪里?

Syncronized-ReentrantLock

【注】多線程企業級模板口訣:線程操作資源類,判斷-干活-喚醒通知,嚴防多線程狀態下的虛假喚醒

<1>生產者消費者模式:

<2>線程池:

<3>消息中間件:生產一個,消費一個

⑥Syncronized-ReentrantLock區別

Syncronized:JVM層面,java關鍵字,底層monitor,不需要手動釋放,

不可中斷,除非拋出異常或正常運行完成,非公平鎖,要么喚醒一個線程,要么喚醒全部線程

ReentrantLock:api層面,類,需要手動釋放,可中斷,可設置超時方法也可在代碼塊中調用interrupt方法,默認非公平鎖,構造方法傳true為公平鎖,可以用來實現分組喚醒需要喚醒的線程們(精確喚醒)

練習:ABC三個線程,A打印5次,B打印10次,C打印15次,循環3次,按順序

8、線程池

<1>為什么要用線程池?

線程池主要是控制運行的線程的數量,處理過程中將任務放入隊列,然后在線程創建后啟動這些任務,如果線程數量超過了最大數量,超出數量的線程排隊等候,等其他憲曾執行完畢,再從隊列中取出任務來執行。

主要特點:線程復用,控制最大并發數,管理線程

<2>創建線程的四種方式:

繼承Thread類

實現Runnable接口:無返回值,不拋異常,實現run方法

實現Callable接口:有返回值,會拋異常,實現call方法

通過線程池

①callable

<3>線程池框架:底層ThreadPoolExecutor

①ExecutorService threadPool = Executors.new FixedThreadPool(int)-一池固定線程數

②Executors.newSingleThreadExecutor()-一池一個線程

③Executors.newCachedThreadPool()可擴容的一池多線程

上述三種工作中用哪種?一個都不用,用ThreadPoolExecutor自己創建,工具類封裝好的有界隊列長度過大

<4>線程池的7大重要參數

①corePoolSize:線程池中的核心線程數(類似于銀行網點的窗口數)

②maximumPoolSizse:線程池能夠容納同時執行的最大線程數(類似于銀行窗口開放數)

③keepAliveTime:多余的空閑線程的存活時間

④unit:keepAliveTime的單位

⑤workQueue:任務隊列,被提交但尚未被執行的任務(阻塞隊列)

⑥threadFactory:表示生成線程池中工作線程的線程工廠,用于創建線程一般用默認的即可

⑦handler:決絕策略,表示當隊列滿了并且工作線程大于等于線程池的最大線程數

<5>線程池的底層工作原理

比如銀行辦公窗口滿了,阻塞隊列(候客區)也滿了,這個時候需要擴容銀行的加班窗口,擴容后新進來的會直接搶占新擴容的加班窗口,若任務還在持續增加會啟動飽和拒絕策略,若熱任務量下降了(多余空閑線程的存活時間)會縮容

<6>線程池的拒絕策略

AbortRolicy(默認):直接拋出異常,阻止運行

CallerRunsPoclicy:調用者運行機制

DiscardOldestPolicy:拋棄隊列中等待最久的任務

DiscardPolicy:直接丟棄任務,不處理也不拋異常

<7>合理配置線程池如何考慮?

CPU密集型:CPU核數+一個線程

IO密集型:

①任務線程并不是一直在執行任務,則應配置盡可能多的線程,如CPU核數*2

②大部分線程都阻塞,需要多配置線程數,參考公式:CPU核數/(1-阻塞系數) --阻塞系數在0.8~0.9之間

9、死鎖編碼及定位分析

<1>產生死鎖的原因:系統資源不足,進程運行推進的順序不合適,資源分配不當

<2>解決:jps定位進程,jstack找到死鎖查看

總結

以上是生活随笔為你收集整理的Java面试必学-吐血推荐的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美手机在线观看 | 天堂av资源| 亚洲成人免费在线观看 | 亚洲视频一区在线 | 久久久精品欧美 | 欧美日韩视频 | 日产精品一区 | 日本久久视频 | www.亚洲色图.com| caoporn成人 | 美女张开腿让男人桶爽 | 欧美揉bbbbb揉bbbbb | 欧美日韩国产专区 | 黄色一级视频片 | 久久一道本 | 青青草久久伊人 | 偷偷在线观看免费高清av | 草久在线观看 | 一本色道久久hezyo加勒比 | 国产成人精品自拍 | 亚洲人色| 欧美阿v| 精品国产av色一区二区深夜久久 | 国产亚洲视频在线 | 一级特黄色 | 日本精品久久久久 | 国产精品一二三区在线观看 | 成人国产在线视频 | 污视频免费在线 | 哺乳喂奶一二三区乳 | 国产盗摄一区二区三区在线 | 免费a网 | 在线播放少妇奶水过盛 | 日韩色一区 | 国产精品一区二区三区四区五区 | 久久99久久99精品蜜柚传媒 | 三级国产三级在线 | 91在线高清视频 | 阿v视频在线免费观看 | 日本大尺度吃奶做爰视频 | 国产精品毛片一区二区在线看舒淇 | 少妇激情偷人三级 | 一级视频毛片 | 一区高清 | 国产成人无码精品久久久电影 | 国产91黄色| 超碰免费人人 | 91精品人妻一区二区三区四区 | 一区二区三区中文字幕 | 亚洲av无码国产精品色午夜 | 欧美激情综合五月色丁香 | 午夜黄色一级片 | 欧美人与动物xxx | 精品日本一区二区三区在线观看 | 韩国女主播一区 | 香蕉成人在线视频 | 91精品国产自产91精品 | 欧美性大战xxxxx久久久 | 超碰97成人 | 亚洲一区二区久久 | 欧美乱论| 亚洲图区欧美 | 91国模少妇一区二区三区 | 成人a区 | 超碰在线国产97 | 欧美黑人巨大xxx极品 | 成年人免费黄色片 | 亚洲国产精品狼友在线观看 | 亚洲性免费 | 色综合国产 | 性久久久久久久久久久 | 97精品人妻一区二区三区香蕉 | 卡通动漫精品一区二区三区 | 免费大片黄在线观看视频网站 | 亚洲精品黄色 | 欧美xxxx非洲 | 亚洲成人aa | 俄罗斯av在线 | 久久日精品| 黄色av网站在线免费观看 | 国产日韩免费 | 在线观看羞羞漫画 | 黄色大片在线播放 | 免费观看日韩毛片 | 寡妇一级片 | 国产欧美一区二区三区在线看蜜臀 | 亚洲乱码中文字幕久久孕妇黑人 | 日韩干 | 男人的天堂免费av | 国产精品亚洲五月天丁香 | 阿v天堂在线观看 | 免费成人在线网站 | 老牛影视一区二区三区 | 四虎成人精品 | 黄色一级免费片 | 人人射人人干 | 午夜不卡久久精品无码免费 | 女人性做爰24姿势视频 | 国产精品污网站 |