某群入群面試題

1,什么是線程安全 (參考書:https://book.douban.com/subject/10484692/
2伴找,都說String是不可變的,為什么我可以這樣做呢
String a = "1";
a = "2";
3废菱,HashMap的實現(xiàn)原理
4技矮,寫出三種單例模式,如果能考慮線程安全最好
5殊轴,ArrayList和LinkedList有什么區(qū)別
6衰倦,實現(xiàn)線程的2種方式
7,JVM的內(nèi)存結(jié)構(gòu)
8旁理,Lock與Synchronized的區(qū)別
9樊零,數(shù)據(jù)庫隔離級別有哪些,各自的含義是什么孽文,MYSQL默認(rèn)的隔離級別是是什么驻襟。
10,請解釋如下jvm參數(shù)的含義:
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly芋哭。

1域帐、什么是線程安全汗洒?

從java的角度看讨盒,當(dāng)多個線程同時訪問某個類時苏潜,不管運行時環(huán)境采用何種調(diào)用方式或者這些線程將如何交替執(zhí)行存谎,主調(diào)代碼中不需要任何額外的同步或協(xié)同,這個類都能表現(xiàn)出正確的行為肥隆,那么就稱這個類是線程安全的既荚。

2、都說String是不可變的栋艳,為什么我可以這樣做呢恰聘? String a = "1";a = "2";

String不可變指的是String類和其內(nèi)部的char型數(shù)組用final修飾的,這個兩個效果嘱巾,一憨琳、String類用final修飾,不能被繼承旬昭;二篙螟、char型數(shù)組用final修飾,其指針不得修改指向的堆地址问拘,但是在堆內(nèi)部的數(shù)組里面時可以變換數(shù)值的遍略。String a=”1”;表示初始化一個String賦值為”1”,而s只是一個String對象的引用骤坐,指向了剛才這個對象绪杏。而 a=”2”;不是在原內(nèi)存地址上修改數(shù)據(jù),而是重新創(chuàng)建了一個新的對象纽绍,并將該引用指向這個新的對象蕾久;而原來的對象還在常量池中,沒有消失拌夏。

3僧著、HashMap的實現(xiàn)原理

HashMap是基于哈希表的Map接口的非同步(線程不安全)實現(xiàn)。并允許使用null值和null鍵障簿。下面以JAVA8為例盹愚。

一、HashMap數(shù)據(jù)結(jié)構(gòu)

HashMap的數(shù)據(jù)結(jié)構(gòu)實際上是一個“鏈表散列”的數(shù)據(jù)結(jié)構(gòu)站故,即數(shù)組和鏈表的結(jié)合體(JDK1.8增加了紅黑樹部分)皆怕。HashMap的底層是一個數(shù)組結(jié)構(gòu),數(shù)組中的每一項是一個鏈表西篓。當(dāng)新建一個HashMap時愈腾,會初始化一個Node類型的數(shù)組,Node[] table岂津,即哈希桶數(shù)組顶滩。可選參數(shù)為initialCapacity寸爆,數(shù)組大小礁鲁,loadFactor,數(shù)組被填滿程度的最大比例赁豆。當(dāng)數(shù)組中的Node的個數(shù)(而不是已占用的位置數(shù))大于initialCapacity*loadFactor時就需要擴容仅醇,調(diào)整數(shù)組的大小為當(dāng)前的2倍。同時魔种,初始化容量的大小也是2的次冪(大于等于設(shè)定容量的最小次冪)析二,則數(shù)組的大小在擴容前后都將是2的次冪。默認(rèn)的capacity為16节预,loadFactor為0.75叶摄。

Node是一個static class,其中包含了key和value安拟,也就是鍵值對蛤吓,還包含了一個next的Node指針,它持有一個指向下一個元素的引用糠赦,這就構(gòu)成了鏈表会傲。負載因子和Hash算法設(shè)計的再合理,也免不了會出現(xiàn)拉鏈過長的情況拙泽,一旦出現(xiàn)拉鏈過長淌山,則會嚴(yán)重影響HashMap的性能。于是顾瞻,在JDK1.8版本中泼疑,對數(shù)據(jù)結(jié)構(gòu)做了進一步的優(yōu)化,引入了紅黑樹荷荤。而當(dāng)鏈表長度太長(默認(rèn)超過8)時退渗,鏈表就轉(zhuǎn)換為紅黑樹,利用紅黑樹快速增刪改查的特點提高HashMap的性能梅猿。

二氓辣、HashMap核心方法(源代碼太長不放了)

  • 1、hash方法

設(shè)計者不假定用戶實現(xiàn)了良好的hashCode方法袱蚓,所以需要對hashCode再計算一次钞啸,即在get方法和pu方法計算下標(biāo)時,先對hashCode進行hash操作喇潘,然后再通過hash值進一步hash計算得到數(shù)組下標(biāo)体斩。

  • 2、put()方法

當(dāng)put的時候颖低,如果key存在了絮吵,那么新的value會代替舊的value,并且如果key存在的情況下忱屑,該方法返回的是舊的value蹬敲,如果key不存在暇昂,那么返回null。當(dāng)我們往HashMap中put元素的時候伴嗡,先根據(jù)key的hashCode重新計算hash值急波,根據(jù)hash值得到這個元素在數(shù)組中的位置(即下標(biāo)),如果數(shù)組該位置上已經(jīng)存放有其他元素了瘪校,那么在這個位置上的元素將以鏈表的形式存放澄暮,新加入的放在鏈頭,這樣插入新entry時不需要遍歷鏈表阱扬,時間復(fù)雜度為O(1)泣懊。如果數(shù)組該位置上沒有元素,就直接將該元素放到此數(shù)組中的該位置上麻惶。Java8中對鏈表長度增加了一個閾值馍刮,超過閾值鏈表將轉(zhuǎn)化為紅黑樹,查詢時間復(fù)雜度降為O(logn)用踩,提高了鏈表過長時的性能渠退。

  • 3、get()方法

根據(jù)key的hash方法得到數(shù)據(jù)下標(biāo)脐彩,然后遍歷Node對象鏈表碎乃,直到找到元素為止。

  • 4.惠奸、resize()方法

這里就是使用一個容量更大的數(shù)組(原來的兩倍)來代替已有的容量小的數(shù)組梅誓,然后rehash形成新的數(shù)組。因為使用的的是2次冪的擴展(指長度擴為原來2倍)佛南,所以梗掰,元素的位置要么是在原位置,要么是在原位置再移動2次冪的位置嗅回。因此及穗,在擴充HashMap的時候,不需要像JDK1.7的實現(xiàn)那樣重新計算hash绵载,只需要看看原來的hash值新增的那個bit是1還是0埂陆,是0的話索引沒變,是1的話索引變成“原索引+oldCap”娃豹。

4焚虱、三種單例模式,線程安全

5懂版、ArrayList和LinkedList有什么區(qū)別鹃栽?

ArrayList和LinkedList都是實現(xiàn)了List接口的類,他們都是元素的容器躯畴,用于存放對象的引用民鼓。但是他們有區(qū)別的薇芝。

ArrayList:內(nèi)部使用數(shù)組的形式實現(xiàn)了存儲,實現(xiàn)了RandomAccess接口丰嘉,利用數(shù)組的下面進行元素的訪問恩掷,因此對元素的隨機訪問速度非常快供嚎。因為是數(shù)組,所以ArrayList在初始化的時候峭状,有初始大小10克滴,插入新元素的時候,會判斷是否需要擴容优床,擴容的步長是0.5倍原容量劝赔,擴容方式是利用數(shù)組的復(fù)制,因此有一定的開銷胆敞;

另外着帽,ArrayList在進行元素插入的時候,需要移動插入位置之后的所有元素移层,位置越靠前仍翰,需要位移的元素越多,開銷越大观话,相反予借,插入位置越靠后的話,開銷就越小了频蛔,如果在最后面進行插入灵迫,那就不需要進行位移;

LinkedList:內(nèi)部使用雙向鏈表的結(jié)構(gòu)實現(xiàn)存儲晦溪,LinkedList有一個內(nèi)部類作為存放元素的單元瀑粥,里面有三個屬性,用來存放元素本身以及前后2個單元的引用三圆,另外LinkedList內(nèi)部還有一個header屬性狞换,用來標(biāo)識起始位置,LinkedList的第一個單元和最后一個單元都會指向header嫌术,因此形成了一個雙向的鏈表結(jié)構(gòu)哀澈。

LinkedList是采用雙向鏈表實現(xiàn)的。所以它也具有鏈表的特點度气,每一個元素(結(jié)點)的地址不連續(xù)割按,通過引用找到當(dāng)前結(jié)點的上一個結(jié)點和下一個結(jié)點,即插入和刪除效率較高磷籍,只需要常數(shù)時間适荣,而get和set則較為低效现柠。

LinkedList的方法和使用和ArrayList大致相同,由于LinkedList是鏈表實現(xiàn)的弛矛,所以額外提供了在頭部和尾部添加/刪除元素的方法够吩,也沒有ArrayList擴容的問題。另外丈氓,ArrayList和LinkedList都可以實現(xiàn)棧周循、隊列等數(shù)據(jù)結(jié)構(gòu),但LinkedList本身實現(xiàn)了隊列的接口万俗,所以更推薦用LinkedList來實現(xiàn)隊列和棧湾笛。

6、實現(xiàn)線程的2種方式

1闰歪、繼承 Thread 類

繼承Thread類嚎研,重寫run方法,在啟動線程的時候库倘,調(diào)用了Thread類的start方法临扮。

2、實現(xiàn) Runnable 接口

實現(xiàn)Runnable接口教翩,重寫run方法杆勇,實現(xiàn)Runnable接口的實現(xiàn)類的實例對象作為Thread構(gòu)造函數(shù)的target。

  • 1迂曲、定義一個類實現(xiàn)Runnable接口靶橱,作為線程任務(wù)類。

  • 2路捧、重寫run方法关霸,并實現(xiàn)方法體,方法體的代碼就是線程所執(zhí)行的代碼杰扫。

  • 3队寇、定義一個可以運行的類,并在main方法中創(chuàng)建線程任務(wù)類章姓。

  • 4佳遣、創(chuàng)建Thread類,并將線程任務(wù)類做為Thread類的構(gòu)造方法傳入凡伊。

  • 5零渐、啟動線程。

這樣可以做到線程任務(wù)和線程的控制分離系忙,即解耦诵盼。

3、通過線程池創(chuàng)建線程、Executor框架

有返回值风宁,通過Callable接口洁墙,實現(xiàn)call方法。執(zhí)行Callable任務(wù)戒财,獲取一個Future的對象热监,在該對象上調(diào)用get就可以獲取到Callable任務(wù)返回的Object對象。

7饮寞、JVM的內(nèi)存結(jié)構(gòu)

JVM內(nèi)存結(jié)構(gòu)主要有5大塊孝扛。方法區(qū)和堆是所有線程共享的內(nèi)存區(qū)域;而Java棧幽崩、本地方法棧和程序計數(shù)器是運行是線程私有的內(nèi)存區(qū)域疗琉。

1、Java堆(Heap)

Java堆(Java Heap)是Java虛擬機所管理的內(nèi)存中最大的一塊歉铝。Java堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機啟動時創(chuàng)建凑耻。此內(nèi)存區(qū)域的唯一目的就是存放對象實例太示,幾乎所有的對象實例都在這里分配內(nèi)存。

Java堆是垃圾收集器管理的主要區(qū)域香浩,也被稱做“GC堆”类缤。如果從內(nèi)存回收的角度看,現(xiàn)在收集器基本都是采用分代收集算法邻吭,所以Java堆中還可以細分為:新生代和老年代餐弱;再細致一點的有Eden空間、From Survivor空間囱晴、To Survivor空間等膏蚓。如果在堆中沒有內(nèi)存完成實例分配,并且堆也無法再擴展時畸写,將會拋出OutOfMemoryError異常驮瞧。

2、方法區(qū)(Method Area)

方法區(qū)(Method Area)與Java堆一樣枯芬,是各個線程共享的內(nèi)存區(qū)域论笔,它用于存儲已被虛擬機加載的類信息、常量千所、靜態(tài)變量狂魔、即時編譯器編譯后的代碼等數(shù)據(jù)。

Java虛擬機規(guī)范對這個區(qū)域的限制非常寬松淫痰,除了和Java堆一樣不需要連續(xù)的內(nèi)存和可以選擇固定大小或者可擴展外最楷,還可以選擇不實現(xiàn)垃圾收集。相對而言,垃圾收集行為在這個區(qū)域是比較少出現(xiàn)的管嬉,但并非數(shù)據(jù)進入了方法區(qū)就如永久代的名字一樣“永久”存在了皂林。這個區(qū)域的內(nèi)存回收目標(biāo)主要是針對常量池的回收和對類型的卸載,一般來說這個區(qū)域的回收“成績”比較難以令人滿意蚯撩,尤其是類型的卸載础倍,條件相當(dāng)苛刻。運行時常量池是方法區(qū)的一部分胎挎。

根據(jù)Java虛擬機規(guī)范的規(guī)定沟启,當(dāng)方法區(qū)無法滿足內(nèi)存分配需求時,將拋出OutOfMemoryError異常犹菇。

3德迹、程序計數(shù)器(Program Counter Register)

程序計數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間,它的作用可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器揭芍。

由于Java虛擬機的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式來實現(xiàn)的胳搞,在任何一個確定的時刻,一個處理器只會執(zhí)行一條線程中的指令称杨。因此肌毅,為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要有一個獨立的程序計數(shù)器姑原,各條線程之間的計數(shù)器互不影響悬而,獨立存儲,我們稱這類內(nèi)存區(qū)域為“線程私有”的內(nèi)存锭汛。如果線程正在執(zhí)行的是一個Java方法笨奠,這個計數(shù)器記錄的是正在執(zhí)行的虛擬機字節(jié)碼指令的地址;如果正在執(zhí)行的是Natvie方法唤殴,這個計數(shù)器值則為空(Undefined)般婆。此內(nèi)存區(qū)域是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域。

4朵逝、JVM棧(JVM Stacks)

與程序計數(shù)器一樣腺兴,Java虛擬機棧(Java Virtual Machine Stacks)也是線程私有的,它的生命周期與線程相同廉侧。虛擬機棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法被執(zhí)行的時候都會同時創(chuàng)建一個棧幀(Stack Frame)用于存儲局部變量表页响、操作棧、動態(tài)鏈接段誊、方法出口等信息闰蚕。每一個方法被調(diào)用直至執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機棧中從入棧到出棧的過程连舍。

局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型没陡、對象引用和returnAddress類型。其中64位長度的long和double類型的數(shù)據(jù)會占用2個局部變量空間(Slot),其余的數(shù)據(jù)類型只占用1個盼玄。局部變量表所需的內(nèi)存空間在編譯期間完成分配贴彼,當(dāng)進入一個方法時,這個方法需要在幀中分配多大的局部變量空間是完全確定的埃儿,在方法運行期間不會改變局部變量表的大小器仗。

在Java虛擬機規(guī)范中,對這個區(qū)域規(guī)定了兩種異常狀況:如果線程請求的棧深度大于虛擬機所允許的深度童番,將拋出StackOverflowError異常精钮;如果虛擬機棧無法申請到足夠的內(nèi)存時會拋出OutOfMemoryError異常。

5剃斧、本地方法棧(Native Method Stacks)

本地方法棧(Native Method Stacks)與虛擬機棧非常相似的轨香,其區(qū)別是虛擬機棧為虛擬機執(zhí)行Java方法服務(wù),而本地方法棧則是為虛擬機使用到的Native方法服務(wù)幼东。虛擬機規(guī)范中對本地方法棧中的方法使用的語言臂容、使用方式與數(shù)據(jù)結(jié)構(gòu)并沒有強制規(guī)定,具體的虛擬機可以自由實現(xiàn)它根蟹。HotSpot直接就把本地方法棧和虛擬機棧合二為一策橘。與虛擬機棧一樣,本地方法棧區(qū)域也會拋出StackOverflowError和OutOfMemoryError異常娜亿。

8、Lock與Synchronized的區(qū)別

下面說明Lock和Synchronized的區(qū)別:

  • 1蚌堵、synchronized是Java的關(guān)鍵字买决,可以用來修飾一個方法或者一個代碼塊,而Lock是一個接口吼畏,主要實現(xiàn)是ReentrantLock類督赤。

  • 2、synchronized就不是可中斷鎖泻蚊,而Lock是可中斷鎖躲舌。 如果某一線程A正在執(zhí)行鎖中的代碼,另一線程B正在等待獲取該鎖性雄,由于等待時間過長没卸,線程B不想等待,想先處理其他事情秒旋,它可以中斷自己或者在別的線程中中斷它约计。

  • 3、synchronized是非公平鎖迁筛,它無法保證等待的線程獲取鎖的順序煤蚌。ReentrantLock,默認(rèn)情況下是非公平鎖,但是可以設(shè)置為公平鎖尉桩。

  • 4筒占、synchronized在發(fā)生異常時,會自動釋放線程占有的鎖蜘犁,因此不會導(dǎo)致死鎖現(xiàn)象發(fā)生翰苫;而Lock在發(fā)生異常時,如果沒有主動通過unLock()去釋放鎖沽瘦,則很可能造成死鎖現(xiàn)象革骨,因此使用Lock時需要在finally塊中釋放鎖;

  • 5析恋、通過Lock可以知道有沒有成功獲取鎖良哲,而synchronized不行。

9助隧、數(shù)據(jù)庫隔離級別有哪些筑凫,各自的含義是什么,MYSQL默認(rèn)的隔離級別是是什么并村。

數(shù)據(jù)庫的事務(wù)隔離級別有四種巍实,分別是,未提交讀哩牍,提交讀棚潦,可重復(fù)讀,串行讀膝昆。

  • 1丸边、未提交讀(Read Uncommitted):允許臟讀,可能讀取到其他會話中未提交事務(wù)修改的數(shù)據(jù)

  • 2荚孵、提交讀(Read Committed):一個事務(wù)只能看見其他已經(jīng)提交事務(wù)的數(shù)據(jù)修改妹窖。這會導(dǎo)致不可重復(fù)讀,即在一個事務(wù)中收叶,多次讀同一數(shù)據(jù)骄呼。在這個事務(wù)還沒有結(jié)束時,另外一個事務(wù)訪問修改同一數(shù)據(jù)判没。在第一個事務(wù)中的兩次讀數(shù)據(jù)之間蜓萄,由于第二個事務(wù)的修改,第一個事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的澄峰。

  • 3绕德、可重復(fù)讀(Repeated Read): 在同一個事務(wù)內(nèi)的查詢都是事務(wù)開始時刻一致的。它確保同一事務(wù)的多個實例在并發(fā)讀取數(shù)據(jù)時摊阀,會看到同樣的數(shù)據(jù)行耻蛇。但是可能會有幻讀踪蹬,即當(dāng)一個事務(wù)讀取某一范圍的數(shù)據(jù)行時,另一個事務(wù)又在該范圍內(nèi)插入了新行臣咖,當(dāng)該事務(wù)再讀取該范圍的數(shù)據(jù)行時跃捣,會發(fā)現(xiàn)有新的“幻影” 行 。

  • 4夺蛇、串行讀(Serializable) :完全串行化的讀疚漆,每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞刁赦,從而解決幻讀問題娶聘。

MYSQL的InnoDB引擎默認(rèn)是可重復(fù)讀

10甚脉、請解釋如下jvm參數(shù)的含義:

-server -Xms512m -Xmx512m -Xss1024K

-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly丸升。

-servier 設(shè)置jvm為服務(wù)器模式,

-Xms512m -Xmx512m -Xss1024K牺氨,JAVA堆最小為512M狡耻,最大為512M,JVM棧為1024K

-XX:PermSize=256m -XX:MaxPermSize=512m JVM初始分配方法區(qū)(非堆)內(nèi)存為256M猴凹,最大為512M(在HotSpot虛擬機為持久代夷狰,該參數(shù)在java8以后失效)

-XX:MaxTenuringThreshold=20對象在新生代堅持20次Mirror GC后,晉升到老年代。

XX:CMSInitiatingOccupancyFraction=80 設(shè)置CMS收集器在老年代空間被占用80%后觸發(fā)GC郊霎。

-XX:+UseCMSInitiatingOccupancyOnly沼头。關(guān)閉CMS收集器的動態(tài)檢測機制。禁止CMS根據(jù)自己的預(yù)測自動執(zhí)行垃圾回收书劝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末进倍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子庄撮,更是在濱河造成了極大的恐慌,老刑警劉巖毙籽,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洞斯,死亡現(xiàn)場離奇詭異,居然都是意外死亡坑赡,警方通過查閱死者的電腦和手機烙如,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毅否,“玉大人亚铁,你說我怎么就攤上這事∶樱” “怎么了徘溢?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵吞琐,是天一觀的道長。 經(jīng)常有香客問我然爆,道長站粟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任曾雕,我火速辦了婚禮奴烙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剖张。我一直安慰自己切诀,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布搔弄。 她就那樣靜靜地躺著幅虑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肯污。 梳的紋絲不亂的頭發(fā)上翘单,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音蹦渣,去河邊找鬼哄芜。 笑死,一個胖子當(dāng)著我的面吹牛柬唯,可吹牛的內(nèi)容都是我干的认臊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锄奢,長吁一口氣:“原來是場噩夢啊……” “哼失晴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拘央,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涂屁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后灰伟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拆又,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年栏账,在試婚紗的時候發(fā)現(xiàn)自己被綠了帖族。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挡爵,死狀恐怖竖般,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茶鹃,我是刑警寧澤涣雕,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布艰亮,位于F島的核電站,受9級特大地震影響胞谭,放射性物質(zhì)發(fā)生泄漏垃杖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一丈屹、第九天 我趴在偏房一處隱蔽的房頂上張望调俘。 院中可真熱鬧,春花似錦旺垒、人聲如沸彩库。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骇钦。三九已至,卻和暖如春竞漾,著一層夾襖步出監(jiān)牢的瞬間眯搭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工业岁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鳞仙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓笔时,卻偏偏與公主長得像棍好,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子允耿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • 在一個方法內(nèi)部定義的變量都存儲在棧中借笙,當(dāng)這個函數(shù)運行結(jié)束后,其對應(yīng)的棧就會被回收较锡,此時业稼,在其方法體中定義的變量將不...
    Y了個J閱讀 4,418評論 1 14
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司蚂蕴,掛了不少低散,但最終還是拿到小米、百度掂墓、阿里谦纱、京東看成、新浪君编、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,251評論 11 349
  • Java SE 基礎(chǔ): 封裝川慌、繼承吃嘿、多態(tài) 封裝: 概念:就是把對象的屬性和操作(或服務(wù))結(jié)合為一個獨立的整體祠乃,并盡...
    Jayden_Cao閱讀 2,110評論 0 8
  • 1、字符串swif中字符串的類型是String 兑燥,用""修飾1-1亮瓷、字符串的定義: 定義可變字符串: var...
    7dfa9c18c1d1閱讀 128評論 0 0
  • 上篇文章我總結(jié)了自己碎片化學(xué)習(xí)了近一年,卻依然缺失方向降瞳、沒有明確目標(biāo)嘱支。是因自己沒深入思考過學(xué)到的知識是否能構(gòu)...
    詩苑的成長花園閱讀 254評論 1 0