java 基礎(chǔ)

什么情況下會發(fā)生死鎖

出現(xiàn)死鎖定页,有這四個必要條件:互斥條件、請求和保持杭煎、不可剝奪宫峦、循環(huán)等待

  1. 互斥條件: 一個資源每次只能被一個進(jìn)程使用玫鸟,即在一段時間內(nèi)某 資源僅為一個進(jìn)程所占有。此時若有其他進(jìn)程請求該資源妥曲,則請求進(jìn)程只能等待。
  1. 請求與保持條件: 進(jìn)程已經(jīng)保持了至少一個資源褂萧,但又提出了新的資源請求葵萎,而該資源 已被其他進(jìn)程占有,此時請求進(jìn)程被阻塞谎痢,但對自己已獲得的資源保持不放卷雕。
  1. 不可剝奪條件: 進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強行奪走滨嘱,即只能 由獲得該資源的進(jìn)程自己來釋放(只能是主動釋放)浸间。
  1. 循環(huán)等待條件: 若干進(jìn)程間形成首尾相接循環(huán)等待資源的關(guān)系

只要系統(tǒng)發(fā)生死鎖,這些條件必然成立躺彬,而只要上述條件之一不滿足梅惯,就不會發(fā)生死鎖

java模擬死鎖

public class DeadLockTest{

    public static void main(String[] args) {
        Thread t1 = new Thread(new DeadLock(1));
        Thread t2 = new Thread(new DeadLock(2));
        t1.start();
        t2.start();
    }

}

class DeadLock implements Runnable{

    private int flag;

    private static Object o1 = new Object();
    private static Object o2 = new Object();

    DeadLock(int _flag){
        this.flag = _flag;
    }

    @Override
    public void run() {
        System.out.println("flag: " + flag);
        if(flag == 1){
            synchronized(o1){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(o2){
                    System.out.println("1");
                }
            }
        }
        else if(flag == 2){
            synchronized(o2){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(o1){
                    System.out.println("2");
                }
            }
        }
    }
}

JVM gc算法

哪些對象該被GC铣减? 如果一個對象到GC Roots沒有任何引用鏈葫哗,該對象就是不可達(dá)對象,即可以被GC劣针。

一捺典、標(biāo)記清除算法(Mark-and-Sweep)

標(biāo)記清除算法是最基礎(chǔ)的收集算法,后面的算法都是基于該算法擴展的,分為兩個階段:
標(biāo)記階段(Mark phase):
從GC Roots出發(fā)牍陌,沿著引用鏈员咽,遇到對象就標(biāo)記該對象贝室,直到所有可達(dá)對象都被標(biāo)記。
清除階段(Sweep phase):
掃描整個heap档玻,回收那些在標(biāo)記階段未被標(biāo)記的對象的內(nèi)存

二误趴、停止復(fù)制算法(Stop-and-Copy)

停止復(fù)制算法將可用內(nèi)存分為等量的兩塊,每次只使用其中的一塊凉当,當(dāng)這一塊無法滿足新的內(nèi)存分配時看杭,即需要GC時,就掃描該塊模孩,將還存活的對象復(fù)制到另一塊上面贮缅,然后再把已使用過的內(nèi)存空間一次清理掉。

三块茁、標(biāo)記整理(壓縮)算法(Mark-and-Compact)

標(biāo)記整理算法和標(biāo)記清理算法類似桂肌,也分為兩個階段:
標(biāo)記階段(Mark):從GC Roots出發(fā),沿著引用鏈佩耳,遇到對象就標(biāo)記該對象谭跨,直到所有可達(dá)對象都被標(biāo)記答恶。
整理(壓縮)階段(Compact):把所有的存活對象往一端移萍诱,然后清理掉端邊界外的內(nèi)存裕坊。

注意:無論是哪種算法哪種收集器燕酷,在枚舉根節(jié)點時都是要停頓(停頓指得是暫停所有用戶線程),只是根據(jù)算法的不同以及收集器的不同該停頓時間的長短不同而已饵蒂。

MySQL存儲引擎有哪幾種酱讶,各有什么特點

TODO

redis如何從左向右刪除list元素

TODO

Spring MVC 一個請求處理流程

Spring MVC工作流程圖

Spring工作流程描述

  1. 用戶向服務(wù)器發(fā)送請求泻肯,請求被Spring 前端控制Servelt DispatcherServlet捕獲;
  1. DispatcherServlet對請求URL進(jìn)行解析琉朽,得到請求資源標(biāo)識符(URI)稚铣。然后根據(jù)該URI,調(diào)用HandlerMapping獲得該Handler配置的所有相關(guān)的對象(包括Handler對象以及Handler對象對應(yīng)的攔截器)耕漱,最后以HandlerExecutionChain對象的形式返回曹锨;
  2. DispatcherServlet 根據(jù)獲得的Handler,選擇一個合適的HandlerAdapter齐鲤。(附注:如果成功獲得HandlerAdapter后椒楣,此時將開始執(zhí)行攔截器的preHandler(...)方法)
  3. 提取Request中的模型數(shù)據(jù),填充Handler入?yún)⑾牛_始執(zhí)行Handler(Controller)。 在填充Handler的入?yún)⑦^程中饲窿,根據(jù)你的配置焕蹄,Spring將幫你做一些額外的工作:

    HttpMessageConveter: 將請求消息(如Json、xml等數(shù)據(jù))轉(zhuǎn)換成一個對象鸦泳,將對象轉(zhuǎn)換為指定的響應(yīng)信息
    數(shù)據(jù)轉(zhuǎn)換:對請求消息進(jìn)行數(shù)據(jù)轉(zhuǎn)換永品。如String轉(zhuǎn)換成Integer鼎姐、Double等
    數(shù)據(jù)根式化:對請求消息進(jìn)行數(shù)據(jù)格式化。 如將字符串轉(zhuǎn)換成格式化數(shù)字或格式化日期等
    數(shù)據(jù)驗證: 驗證數(shù)據(jù)的有效性(長度喂走、格式等)谋作,驗證結(jié)果存儲到BindingResult或Error中

    1. Handler執(zhí)行完成后,向DispatcherServlet 返回一個ModelAndView對象帖池;
    2. 根據(jù)返回的ModelAndView吭净,選擇一個適合的ViewResolver(必須是已經(jīng)注冊到Spring容器中的ViewResolver)返回給DispatcherServlet ;
    3. ViewResolver 結(jié)合Model和View囚巴,來渲染視圖
    4. 將渲染結(jié)果返回給客戶端友扰。

向zookeeper集群寫數(shù)據(jù)村怪,內(nèi)部流程

TODO

Overload和Override的區(qū)別

HashMap和Hashtable有什么區(qū)別

sleep() 和 wait() 有什么區(qū)別

ArrayList和LinkedList有什么區(qū)別

System.gc()和Runtime.gc()會做什么事情

談?wù)凧AVA中的集合

JVM的理解、GC工作機制詳解

Java對象的生命周期

Map或者HashMap的存儲原理

HashMap是由數(shù)組+鏈表的一個結(jié)構(gòu)組成

當(dāng)數(shù)據(jù)表中A柬焕、B字段做了組合索引,那么單獨使用A或單獨使用B會有索引效果嗎搅轿?(使用like查詢?nèi)绾斡兴饕Ч?/h4>

HTTP協(xié)議富玷,GET和POST 的區(qū)別

數(shù)據(jù)庫中char, varchar, nvarchar的差異

spring的理解

hibernate與mybitis的區(qū)別

你的接口服務(wù)數(shù)據(jù)被人截包了,你如何防止數(shù)據(jù)惡意提交?

你的所做過的項目和你的設(shè)計思路如何铲敛?

談?wù)勀銓Ψ植际降睦斫?/h4>

如何看待設(shè)計模式会钝,并簡單說說你所熟悉模式的理解.

日常項目中,如果你接手先鱼,你準(zhǔn)備從哪些方面調(diào)優(yōu)奸鬓?

web如何項目優(yōu)化

項目并發(fā)如何處理?(我們是web項目)

簡單說說數(shù)據(jù)庫集群和負(fù)載均衡宏多、分布式

集群環(huán)境中澡罚,session如何實現(xiàn)共享

分布式留搔、集群環(huán)境中,緩存如何刷新隔显,如何保持同步括眠?

緩存如何保持同步? 這個redis有自帶的集群同步機制捐下,即復(fù)制功能,具體參考:基于Redis分布式緩存實現(xiàn) 奸柬,Ehcache也有分布式緩存同步的配置婴程,只需要配置不同服務(wù)器地址即可,參照:Ehcache分布式緩存同步

一條sql執(zhí)行過長的時間桌粉,你如何優(yōu)化衙四,從哪些方面传蹈?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挑格,隨后出現(xiàn)的幾起案子沾歪,更是在濱河造成了極大的恐慌,老刑警劉巖灾搏,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件确镊,死亡現(xiàn)場離奇詭異,居然都是意外死亡拷肌,警方通過查閱死者的電腦和手機旨巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門采呐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人又固,你說我怎么就攤上這事》剑” “怎么了洋只?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵识虚,是天一觀的道長担锤。 經(jīng)常有香客問我,道長妻献,這世上最難降的妖魔是什么团赁? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任欢摄,我火速辦了婚禮,結(jié)果婚禮上析蝴,老公的妹妹穿的比我還像新娘绿淋。我一直安慰自己吞滞,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布殿漠。 她就那樣靜靜地躺著佩捞,像睡著了一般一忱。 火紅的嫁衣襯著肌膚如雪莲蜘。 梳的紋絲不亂的頭發(fā)上谭确,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音菇夸,去河邊找鬼琼富。 笑死,一個胖子當(dāng)著我的面吹牛庄新,可吹牛的內(nèi)容都是我干的鞠眉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼择诈,長吁一口氣:“原來是場噩夢啊……” “哼械蹋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羞芍,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荷科,沒想到半個月后唯咬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡畏浆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年胆胰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刻获。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜀涨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蝎毡,到底是詐尸還是另有隱情厚柳,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布沐兵,位于F島的核電站别垮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扎谎。R本人自食惡果不足惜宰闰,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望簿透。 院中可真熱鬧移袍,春花似錦、人聲如沸老充。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至觅够,卻和暖如春胶背,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喘先。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工钳吟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窘拯。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓红且,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涤姊。 傳聞我的和親對象是個殘疾皇子暇番,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)思喊,斷路器壁酬,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司恨课,掛了不少舆乔,但最終還是拿到小米、百度剂公、阿里希俩、京東、新浪诬留、CVTE斜纪、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,218評論 11 349
  • 1贫母、實例方法和靜態(tài)方法有什么不一樣文兑? 答:實例方法只能在其類下調(diào)用,而靜態(tài)方法可以直接調(diào)用腺劣。 答:1绿贞、在外部調(diào)用靜...
    眼袋大大閱讀 905評論 0 7
  • 2017.08.02,晴橘原。 晚上籍铁,我和女兒掃了兩輛小黃車,這個ofo可以把座椅放低趾断,是最安全的一種拒名。 贛州目前有三...
    高山雪原閱讀 366評論 0 0