摘要:本文首發(fā)于的博客轉(zhuǎn)載請(qǐng)注明出處與的區(qū)別作用對(duì)象是類的靜態(tài)方法,作用于當(dāng)前線程是類的成員方法,作用于對(duì)象本身作用調(diào)用方法,線程進(jìn)入休眠狀態(tài)調(diào)用方法,線程進(jìn)入阻塞狀態(tài)鎖的釋放不會(huì)釋放持有的鎖會(huì)釋放鎖喚醒自然喚醒或者顯式調(diào)用方法調(diào)用或者方法調(diào)用不
????本文首發(fā)于cartoon的博客
????轉(zhuǎn)載請(qǐng)注明出處:https://cartoonyu.github.io/c...
sleep與wait的區(qū)別
作用對(duì)象
sleep是Thread類的靜態(tài)方法,作用于當(dāng)前線程
wait是Object類的成員方法,作用于對(duì)象本身
作用
調(diào)用sleep方法,線程進(jìn)入休眠狀態(tài)
調(diào)用wait方法,線程進(jìn)入阻塞狀態(tài)
鎖的釋放
sleep不會(huì)釋放持有的鎖
wait會(huì)釋放鎖
喚醒
自然喚醒或者顯式調(diào)用interrupt方法
調(diào)用notify或者notifyAll方法
調(diào)用
sleep不需要在同步代碼中調(diào)用
wait需要在同步代碼中調(diào)用,否則拋出IllegalMonitorStateException
使用場(chǎng)景
sleep作用于周期性任務(wù)的執(zhí)行
wait作用于互斥資源的使用
hashMap的擴(kuò)容機(jī)制
相關(guān)成員屬性
HashMap是JAVA集合框架的一個(gè)存儲(chǔ)key-value對(duì)的實(shí)現(xiàn)類,有關(guān)于擴(kuò)容機(jī)制的成員屬性主要有三個(gè)
默認(rèn)值為16的capicity
默認(rèn)值為0.75的loadFactory
默認(rèn)值為0的size
觸發(fā)時(shí)機(jī)
插入元素時(shí)
實(shí)現(xiàn)
JDK 1.7
傳入newCapicity參數(shù)
新建newCapicity長(zhǎng)度的Entry數(shù)組
將原數(shù)組元素重新hash放入新數(shù)組
將原有數(shù)組引用指向新數(shù)組
JDK 1.8之后
如果節(jié)點(diǎn)的鏈表元素個(gè)數(shù)大于8時(shí),原有的數(shù)組鏈表會(huì)轉(zhuǎn)換成數(shù)組紅黑樹的邏輯結(jié)構(gòu)進(jìn)行使用
如果當(dāng)前size大于loadFactory*capicity的閾值,觸發(fā)擴(kuò)容機(jī)制
新建一個(gè)newCap的int變量,大小為2*oldCapicity
新建一個(gè)大小為newCap的數(shù)組
原數(shù)組元素索引進(jìn)行2次冪的計(jì)算放入新數(shù)組
將newCap賦值給原有的capicity
返回新數(shù)組
ReentantLock的了解
存在位置
ReentantLock是JDK的一個(gè)顯式鎖的API,具體通過AQS隊(duì)列實(shí)現(xiàn)功能
鎖的種類
ReentantLock是可重入的鎖,內(nèi)部通過判斷state當(dāng)前占有線程進(jìn)行重入的判斷
ReentantLock可以實(shí)現(xiàn)公平鎖以及非公平鎖,在構(gòu)造對(duì)象時(shí)顯式傳入fair
同步機(jī)制
ReentantLock是同步非阻塞式的,采用樂觀并發(fā)策略
ReentantLock需要顯式控制鎖的獲取與釋放,而且可以響應(yīng)中斷
List實(shí)現(xiàn)類的比較
底層實(shí)現(xiàn)
Arraylist為數(shù)組
LinkedList為鏈表
線程安全
ArrayList,LinkedList為線程不安全
Vector為線程安全
實(shí)現(xiàn)時(shí)間
ArrayList,LinkedList為JDK1.2開始實(shí)現(xiàn)
Vector為JDK1.1開始實(shí)現(xiàn)
NIO的了解
NIO是java中用于實(shí)現(xiàn)數(shù)據(jù)的輸入/輸出的API,是同步非阻塞式的
核心對(duì)象
selector,選擇器,用于對(duì)channel的選擇
channel,通道,用于連接java程序與對(duì)象的通道
buffer,緩沖區(qū),用于數(shù)據(jù)的暫時(shí)存放
工作步驟
java程序與操作對(duì)象建立channel
數(shù)據(jù)放入buffer中
selector輪詢channel,監(jiān)控IO狀況,控制輸入輸出
ConcurrentHashMap同步的實(shí)現(xiàn)(JDK1.7 1.8)
JDK1.7實(shí)現(xiàn)
ConcurrentHashMap中數(shù)據(jù)存放在Segment(默認(rèn)為16個(gè))中
ConcurrentHashMap為區(qū)域鎖,鎖定對(duì)象是Segment
在寫數(shù)據(jù)時(shí),會(huì)經(jīng)過計(jì)算得出使用的Segment,并檢查是否持有Segment的鎖
JDK1.8實(shí)現(xiàn)
ConcurrentHashMap中數(shù)據(jù)存放在數(shù)組鏈表/紅黑樹中
ConcurrentHashMap是行級(jí)鎖,鎖定對(duì)象是鏈表的頭結(jié)點(diǎn)或者紅黑樹的根結(jié)點(diǎn)
在寫數(shù)據(jù),計(jì)算訪問的數(shù)據(jù)索引,檢查鎖,訪問鏈表或者紅黑樹
JVM
G1的工作流程
初始標(biāo)記
并發(fā)標(biāo)記
最終標(biāo)記
篩選回收
CMS的工作流程
初始標(biāo)記(stw現(xiàn)象)
并發(fā)標(biāo)記
重新標(biāo)記(stw現(xiàn)象)
并發(fā)清理
重置線程
Spring
spring bean的生命周期
對(duì)象被實(shí)例化
Spring進(jìn)行IOC的注入
可選
傳入對(duì)象
實(shí)現(xiàn)BeanNameAware接口,傳入bean的ID
實(shí)現(xiàn)ApplicationFactoryAware接口,傳入Spring工廠
實(shí)現(xiàn)ApplicationContextAware接口,傳入Spring上下文
初始化
實(shí)現(xiàn)BeanPostProcessor接口,對(duì)bean內(nèi)容進(jìn)行修改
使用
清理
網(wǎng)絡(luò)
輸入域名到返回頁面的過程
瀏覽器部分
利用DNS進(jìn)行域名解析
檢查本地host文件
組裝http報(bào)文
http報(bào)文經(jīng)過OSI底層包裝發(fā)送請(qǐng)求
http請(qǐng)求在第三次tcp握手上發(fā)送
傳輸
路由器根據(jù)IP進(jìn)行選擇轉(zhuǎn)發(fā)到目標(biāo)主機(jī)
目標(biāo)主機(jī)
后端進(jìn)行報(bào)文的拆解獲取真實(shí)請(qǐng)求
根據(jù)請(qǐng)求返回相應(yīng)頁面
傳輸
路由器根據(jù)IP進(jìn)行選擇轉(zhuǎn)發(fā)到目標(biāo)主機(jī)
源主機(jī)
拆解報(bào)文,獲取實(shí)部數(shù)據(jù)
交給瀏覽器渲染頁面
算法兩數(shù)之和(leetcode 1)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75597.html
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:本文首發(fā)于的博客轉(zhuǎn)載請(qǐng)注明出處和的區(qū)別是什么內(nèi)存分配字節(jié)字節(jié)范圍到和到到和到在顯示時(shí)會(huì)發(fā)生精度缺失,不會(huì)的內(nèi)連接左連接右連接有什么區(qū)別內(nèi)連接關(guān)鍵詞特點(diǎn)返回兩個(gè)表中符合條件的交集左連接關(guān)鍵詞特點(diǎn)返回全部數(shù)據(jù)以及符合條件的的數(shù) ????本文首發(fā)于cartoon的博客????轉(zhuǎn)載請(qǐng)注明出處:https://cartoonyu.github.io/c... float 和 double 的...
閱讀 3493·2021-11-23 10:13
閱讀 863·2021-09-22 16:01
閱讀 909·2021-09-09 09:33
閱讀 630·2021-08-05 09:58
閱讀 1717·2019-08-30 11:14
閱讀 1935·2019-08-30 11:02
閱讀 3265·2019-08-29 16:28
閱讀 1478·2019-08-29 16:09