無(wú)標(biāo)題文章

##數(shù)據(jù)庫(kù)

#三個(gè)范式

屬性唯一(確


保每列保持原子性)???數(shù)據(jù)庫(kù)表中的字段都是單一屬性的垃沦,不可再分。這個(gè)單一屬性由基本類型構(gòu)成聋伦,包括整型度液、實(shí)數(shù)、字符型宙攻、邏輯型奠货、日期型等。

記錄唯一(確保表中的每列都和主鍵相關(guān))???數(shù)據(jù)庫(kù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函數(shù)依賴(部分函數(shù)依賴指的是存在組合關(guān)鍵字中的某些字段決定非關(guān)鍵字段的情況)座掘,也即所有非關(guān)鍵字段都完全依賴于任意一組候選關(guān)鍵字

表唯一(確保每列都和主鍵列直接相關(guān),而不是間接相關(guān))????????在第二范式的基礎(chǔ)上递惋,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。所謂傳遞函數(shù)依賴溢陪,指的是如果存在"A → B → C"的決定關(guān)系萍虽,則C傳遞函數(shù)依賴于A。因此形真,滿足第三范式的數(shù)據(jù)庫(kù)表應(yīng)該不存在如下依賴關(guān)系: 關(guān)鍵字段 → 非????????關(guān)鍵????字段x → 非關(guān)鍵字段y

#SQL優(yōu)化

總是使用索引的第一個(gè)列

使用where而不是having

多使用commit

使用truncate而不是delete

#Servlet

#運(yùn)行過(guò)程

Servlet由web服務(wù)器調(diào)用杉编,收到客戶端的Servlet訪問(wèn)請(qǐng)求后

1.檢查是否已經(jīng)裝載并創(chuàng)建了該Servlet的實(shí)例對(duì)象,是轉(zhuǎn)4没酣,不是轉(zhuǎn)2

2.裝載并創(chuàng)建該Servlet的一個(gè)實(shí)例對(duì)象

3.調(diào)用init()方法

4.創(chuàng)建一個(gè)用于封裝HttpSevrletRequest對(duì)象和一個(gè)代表Http響應(yīng)消息的HttpServletRespouse對(duì)象王财,調(diào)用Service()方法,將這兩個(gè)對(duì)象傳遞出去

5.web應(yīng)用程序停止或者重啟之前裕便,卸載Servlet绒净,并調(diào)用其destroy()方法

#JAVA線程安全

#線程操作某個(gè)對(duì)象

多個(gè)線程同時(shí)讀寫某個(gè)內(nèi)存數(shù)據(jù)時(shí),就會(huì)產(chǎn)生多線程并發(fā)問(wèn)題偿衰,涉及到三個(gè)特性:原子性挂疆,有序性,可見性

(1) 從主存復(fù)制變量到當(dāng)前工作內(nèi)存 (read and load)

(2) 執(zhí)行代碼下翎,改變共享變量值 (use and assign)

(3) 用工作內(nèi)存數(shù)據(jù)刷新主存相關(guān)內(nèi)容 (store and write)

##synchronized關(guān)鍵字

synchronized(鎖){

臨界區(qū)代碼

}

public synchronized void function() {

臨界區(qū)代碼

}

//每個(gè)對(duì)象都可以做為鎖缤言,但一個(gè)對(duì)象做為鎖時(shí),應(yīng)該被多個(gè)線程共享视事,這樣才顯得有意義胆萧,在并發(fā)環(huán)境下,一個(gè)沒(méi)有共享的對(duì)象作為鎖是沒(méi)有意義的

//每個(gè)鎖對(duì)象都有兩個(gè)隊(duì)列俐东,一個(gè)是就緒隊(duì)列跌穗,一個(gè)是阻塞隊(duì)列,就緒隊(duì)列存儲(chǔ)了將要獲得鎖的線程虏辫,阻塞隊(duì)列存儲(chǔ)了被阻塞的線程蚌吸,當(dāng)一個(gè)被線程被喚醒 (notify)后,才會(huì)進(jìn)入到就緒隊(duì)列砌庄,等待cpu的調(diào)度

//一個(gè)線程執(zhí)行臨界區(qū)代碼過(guò)程

1 獲得同步鎖

2 清空工作內(nèi)存

3 從主存拷貝變量副本到工作內(nèi)存

4 對(duì)這些變量計(jì)算

5 將變量從工作內(nèi)存寫回到主存

6 釋放鎖

//synchronized既保證了多線程的并發(fā)有序性羹唠,又保證了多線程的內(nèi)存可見性奕枢。

##volatile關(guān)鍵字

volatile只能保證多線程的內(nèi)存可見性,不能保證多線程的執(zhí)行有序性

任何被volatile修飾的變量佩微,都不拷貝副本到工作內(nèi)存缝彬,任何修改都及時(shí)寫在主存。因此對(duì)于Valatile修飾的變量的修改哺眯,

所有線程馬上就能看到跌造,但是volatile不能保證對(duì)變量的修改是有序的.

//要使 volatile 變量提供理想的線程安全,必須同時(shí)滿足下面兩個(gè)條件:

1)對(duì)變量的寫操作不依賴于當(dāng)前值。

2)該變量沒(méi)有包含在具有其他變量的不變式中

##JVM內(nèi)存劃分

1.程序計(jì)數(shù)器

每一個(gè)Java線程都有一個(gè)程序計(jì)數(shù)器來(lái)用于保存程序執(zhí)行到當(dāng)前方法的哪一個(gè)指令族购。

2.線程棧

線程的每個(gè)方法被執(zhí)行的時(shí)候,都會(huì)同時(shí)創(chuàng)建一個(gè)幀(Frame)用于存儲(chǔ)本地變量表陵珍、操作棧寝杖、動(dòng)態(tài)鏈接、方法出入口等信息

3.本地方法棧

4.堆

每個(gè)線程的棧都是該線程私有的互纯,堆則是所有線程共享的瑟幕,new一個(gè)對(duì)象被分配到堆中

jvm的gc都是按代收集,

堆區(qū)大致被分為三大塊:新生代留潦,舊生代只盹,持久代(虛擬的);新生代又分為eden區(qū)兔院,s0區(qū)殖卑,s1區(qū)。

新建一個(gè)對(duì)象時(shí)坊萝,基本小的對(duì)象孵稽,生命周期短的對(duì)象都會(huì)放在新生代的eden區(qū)中,

eden區(qū)滿時(shí)十偶,有一個(gè)小范圍的gc(minor gc)

整個(gè)新生代滿時(shí)菩鲜,會(huì)有一個(gè)大范圍的gc(major gc),將新生代里的部分對(duì)象轉(zhuǎn)到舊生代里惦积。

5.方法區(qū)

永久代接校,包括常量池、字段描述狮崩、方法描述

6.常量池

##垃圾回收器

引用計(jì)數(shù)法 (Reference Counting)

對(duì)于一個(gè)對(duì)象 A蛛勉,只要有任何一個(gè)對(duì)象引用了 A,則 A 的引用計(jì)數(shù)器就加 1厉亏,當(dāng)引用失效時(shí)董习,引用計(jì)數(shù)器就減 1。只要對(duì)象 A 的引用計(jì)數(shù)器的值為 0爱只,則對(duì)象 A 就不可能再被使用皿淋。

缺點(diǎn):無(wú)法處理循環(huán)互相引用

標(biāo)記-清除算法 (Mark-Sweep)

標(biāo)記階段和清除階段

在標(biāo)記階段首先通過(guò)根節(jié)點(diǎn)招刹,標(biāo)記所有從根節(jié)點(diǎn)開始的較大對(duì)象

未被標(biāo)記的對(duì)象就是未被引用的垃圾對(duì)象

在清除階段,清除所有未被標(biāo)記的對(duì)象窝趣。

缺點(diǎn):存在大量的空間碎片疯暑,回收后的空間是不連續(xù)的

復(fù)制算法 (Copying)

將現(xiàn)有的內(nèi)存空間分為兩快,每次只使用其中一塊

在垃圾回收時(shí)將正在使用的內(nèi)存中的存活對(duì)象復(fù)制到未被使用的內(nèi)存塊中哑舒,之后妇拯,清除正在使用的內(nèi)存塊中的所有對(duì)象,交換兩個(gè)內(nèi)存的角色洗鸵,完成回收越锈。

優(yōu)點(diǎn):真正需要垃圾回收的時(shí)刻,復(fù)制算法的效率是很高的

確北毂酰回收后的內(nèi)存空間是沒(méi)有碎片的

缺點(diǎn):將系統(tǒng)內(nèi)存折半

(高效的前提是建立在存活對(duì)象少甘凭,垃圾對(duì)象多)——>適用年輕代

Java 的新生代串行垃圾回收器中使用了復(fù)制算法的思想

新生代分為 eden 空間、from 空間火邓、to 空間

from 和 to 空間也稱為 survivor 空間丹弱,即幸存者空間,用于存放未被回收的對(duì)象铲咨。

eden 空間中的存活對(duì)象會(huì)被復(fù)制到未使用的 survivor 空間中

正在使用的 survivor 空間 中的年輕對(duì)象也會(huì)被復(fù)制到 to 空間中

eden 空間和 from 空間中的剩余對(duì)象就是垃圾對(duì)象躲胳,可以直接清空

優(yōu)點(diǎn):改進(jìn)的復(fù)制算法既保證了空間的連續(xù)性,又避免了大量的內(nèi)存空間浪費(fèi)纤勒。

標(biāo)記-壓縮算法 ——>適用老年代

標(biāo)記——清除算法的優(yōu)化

從根節(jié)點(diǎn)開始對(duì)所有可達(dá)對(duì)象做一次標(biāo)記

是將所有的存活對(duì)象壓縮到內(nèi)存的一端坯苹,清理邊界外所有的空間

優(yōu)點(diǎn):避免了碎片的產(chǎn)生,又不需要兩塊相同的內(nèi)存空間摇天,性價(jià)比比較高北滥。

增量算法 (Incremental Collecting)

在垃圾回收過(guò)程中,應(yīng)用軟件將處于一種 CPU 消耗很高的狀態(tài)

程序所有的線程都會(huì)掛起闸翅,暫停一切正常的工作再芋,等待垃圾回收的完成。

如果一次性將所有的垃圾進(jìn)行處理坚冀,需要造成系統(tǒng)長(zhǎng)時(shí)間的停頓济赎,

思想:讓垃圾收集線程和應(yīng)用程序線程交替執(zhí)行

優(yōu)點(diǎn):減少系統(tǒng)的停頓時(shí)間

缺點(diǎn):線程切換和上下文切換的消耗,使得垃圾回收總體成本上升记某,造成系統(tǒng)吞吐量下降

分代 (Generational Collecting)

思想:不同階段最優(yōu)的方式是使用合適的算法用于本階段的垃圾回收

將內(nèi)存區(qū)間根據(jù)對(duì)象的特點(diǎn)分成幾塊司训,根據(jù)每塊內(nèi)存區(qū)間的特點(diǎn),使用不同的回收算法液南,以提高垃圾回收的效率壳猜。

將所有的新建對(duì)象都放入稱為年輕代的內(nèi)存區(qū)域,年輕代的特點(diǎn)是對(duì)象會(huì)很快回收滑凉,因此统扳,在年輕代就選擇效率較高的復(fù)制算法喘帚。

當(dāng)一個(gè)對(duì)象經(jīng)過(guò)幾次回收后依然存活,對(duì)象就會(huì)被放入稱為老生代的內(nèi)存空間咒钟,對(duì)老年代的回收使用標(biāo)記-壓縮算法吹由,提高垃圾回收效率。

###從不同角度分析垃圾收集器朱嘴,可以將其分為不同的類型倾鲫。

1.按線程數(shù)分,可以分為串行垃圾回收器和并行垃圾回收器萍嬉。

2.按照工作模式分乌昔,可以分為并發(fā)式垃圾回收器和獨(dú)占式垃圾回收器

3.按碎片處理方式可分為壓縮式垃圾回收器和非壓縮式垃圾回收器

4.按工作的內(nèi)存區(qū)間,又可分為新生代垃圾回收器和老年代垃圾回收器

###評(píng)價(jià)垃圾處理器的指標(biāo)

吞吐量:指在應(yīng)用程序的生命周期內(nèi)壤追,應(yīng)用程序所花費(fèi)的時(shí)間和系統(tǒng)總運(yùn)行時(shí)間的比值玫荣。

垃圾回收器負(fù)載:和吞吐量相反,垃圾回收器負(fù)載指來(lái)記回收器耗時(shí)與系統(tǒng)運(yùn)行總時(shí)間的比值大诸。

停頓時(shí)間:指垃圾回收器正在運(yùn)行時(shí),應(yīng)用程序的暫停時(shí)間贯卦。

垃圾回收頻率:指垃圾回收器多長(zhǎng)時(shí)間會(huì)運(yùn)行一次资柔。

(通常增大堆空間可以有效降低垃圾回收發(fā)生的頻率,但是可能會(huì)增加回收產(chǎn)生的停頓時(shí)間撵割。)

反應(yīng)時(shí)間:指當(dāng)一個(gè)對(duì)象被稱為垃圾后多長(zhǎng)時(shí)間內(nèi)贿堰,它所占據(jù)的內(nèi)存空間會(huì)被釋放。

堆分配:不同的垃圾回收器對(duì)堆內(nèi)存的分配方式可能是不同的啡彬。一個(gè)良好的垃圾收集器應(yīng)該有一個(gè)合理的堆內(nèi)存區(qū)間劃分羹与。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庶灿,隨后出現(xiàn)的幾起案子纵搁,更是在濱河造成了極大的恐慌,老刑警劉巖往踢,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腾誉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡峻呕,警方通過(guò)查閱死者的電腦和手機(jī)利职,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瘦癌,“玉大人猪贪,你說(shuō)我怎么就攤上這事⊙端剑” “怎么了热押?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵西傀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我楞黄,道長(zhǎng)池凄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任鬼廓,我火速辦了婚禮肿仑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碎税。我一直安慰自己尤慰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布雷蹂。 她就那樣靜靜地躺著伟端,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匪煌。 梳的紋絲不亂的頭發(fā)上责蝠,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音萎庭,去河邊找鬼霜医。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驳规,可吹牛的內(nèi)容都是我干的肴敛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼吗购,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼医男!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起捻勉,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镀梭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后踱启,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰辣,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年禽捆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笙什。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胚想,死狀恐怖琐凭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浊服,我是刑警寧澤统屈,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布胚吁,位于F島的核電站,受9級(jí)特大地震影響愁憔,放射性物質(zhì)發(fā)生泄漏腕扶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一吨掌、第九天 我趴在偏房一處隱蔽的房頂上張望半抱。 院中可真熱鬧,春花似錦膜宋、人聲如沸窿侈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)史简。三九已至,卻和暖如春肛著,著一層夾襖步出監(jiān)牢的瞬間圆兵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工枢贿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留殉农,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓萨咕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親火本。 傳聞我的和親對(duì)象是個(gè)殘疾皇子危队,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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