java 基礎(chǔ)

進程:

文本區(qū)域、數(shù)據(jù)區(qū)域、和堆棧躯枢。

  • 文本區(qū)域存儲處理器執(zhí)行的代碼。
  • 數(shù)據(jù)區(qū)域存儲變量和進程執(zhí)行期間使用的動態(tài)分配的內(nèi)存槐臀。
  • 堆棧區(qū)域存儲著活動調(diào)用過程調(diào)用的指令和本地變量锄蹂。
    程序是一個沒有生命的實體,只有在服務(wù)器運行它時水慨,它才是一個活動的實體被稱為進程得糜。當一個程序進入內(nèi)存時敬扛,即變成一個進程。
進程狀態(tài):

進程還有三個狀態(tài)朝抖,就緒啥箭,運行和阻塞。

  • 就緒狀態(tài):獲取了除cpu外的所有資源治宣,只要處理器分配資源就可以馬上執(zhí)行急侥。
  • 運行狀態(tài):運行狀態(tài)就是獲得了處理器的資源,程序開機執(zhí)行侮邀。
  • 阻塞態(tài):當程序執(zhí)行條件不夠坏怪,需要等待條件滿足時候才能執(zhí)行,例如等待i/o操作的時候绊茧。
進程通信

進程通信通過ipc機制铝宵,而線程通信則通過對全局字段的讀寫。需要進程間同步和互斥的手段的輔助华畏,以保證數(shù)據(jù)的一致性鹏秋。

常見的進程通信方式
  • 管道:管道是一種半雙工通信方式,數(shù)據(jù)只能單向流動亡笑。而且只能在有親緣關(guān)系的進程間使用侣夷,這里一般指父子進程。
  • 命名管道:有名管道也是一種半雙工的通信方式况芒,但是它允許不是親屬關(guān)系的進程通信惜纸。
  • 消息隊列:消息隊列是由消息的鏈表,存放在內(nèi)核中并由消息隊列標識符標識绝骚。消息隊列克服了信號傳遞信息少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺點祠够。
  • 共享存儲:共享內(nèi)存就是映射一段能被其他進程訪問的內(nèi)存压汪,這段共享內(nèi)存由一個進程創(chuàng)建,但多個進程都可以進行訪問古瓤,共享內(nèi)存是最快的ipc方式止剖,它是針對其他進程間通信方式運行效率低而專門設(shè)計的。它往往與其他機制配合使用落君,來實現(xiàn)進程的同步和通信穿香。
  • 信號量:信號量是一個計數(shù)器,可以控制多個進程對資源的訪問绎速,它常作為一種鎖機制皮获,防止某進程正在訪問資源時,其他進程也訪問該資源纹冤。因此作為進程之間以及同一進程內(nèi)的不同線程之間同步的手段洒宝。
  • 套接字:套接口也是一種進程間通信機制购公,與其他機制不同的是,它可用于不同及其間的進程通信
  • 信號:信號是一種比較復(fù)雜的通信方式雁歌,用于接收進程的某個事件已經(jīng)發(fā)生宏浩。

內(nèi)存溢出和內(nèi)存泄漏

  • 內(nèi)存溢出:指程序在申請內(nèi)存時,沒有足夠的空間供其使用
  • 內(nèi)存泄漏:指程序分配出去的內(nèi)存不再使用靠瞎,但無法進行回收

面對對象&面向過程

面向過程

1.優(yōu)點:性能比面對對象高比庄,因為類的調(diào)用需要實例化,開銷比較大
2.缺點:沒有面對對象容易維護

面向?qū)ο?/h6>
  1. 優(yōu)點:易維護乏盐、易復(fù)用佳窑、易拓展、由于面對對象有封裝繼承多態(tài)的特性丑勤,可以設(shè)計出低耦合的程序
    2.缺點:性能比面向過程低

java的四個基本特性

1.抽象:把現(xiàn)實生活中的某一類東西提取出來华嘹,成為該類東西特有的共同特性,抽象壁板分為數(shù)據(jù)抽象和過程抽象法竞,數(shù)據(jù)抽象是對象的屬性耙厚,過程抽象是對象的行為特征。
2.封裝:把客觀事物進行封裝成抽象類岔霸,該數(shù)據(jù)和方法只讓可信的類操作薛躬,對不可信的類隱藏,封裝分為屬性封裝和方法封裝呆细。

  1. 繼承:從已有的類中派生出新的類型宝,新的類吸收已有類的數(shù)據(jù)屬性和行為,并能擴展新的能力
    4.多態(tài):同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力絮爷,多態(tài)的前提是類與類之間必須存在關(guān)系趴酣,要么繼承要么實現(xiàn)。
抽象類和接口的區(qū)別

1.抽象類和接口分別給出了不同的語法定義坑夯。
2.抽象是對類的抽象岖寞,接口是對行為的抽象。
3.抽象所體現(xiàn)的是繼承關(guān)系柜蜈,是一種“is -a ”關(guān)系仗谆,接口僅僅實現(xiàn)接口的定義的契約,是一種“l(fā)ike- a”關(guān)系
4.抽象是自底向上抽象的淑履,接口是自頂向下設(shè)計出來的隶垮。

自動拆箱和裝箱

Java采用了自動裝箱和拆箱機制,節(jié)省了常用數(shù)值的內(nèi)存開銷和創(chuàng)建對象的開銷秘噪,提高了效率
1.裝箱:將基本數(shù)據(jù)類型包裝成它們的引用類型
2.拆箱:將包裝類型轉(zhuǎn)換為基本數(shù)據(jù)類型

序列化和反序列化
  • 對象的序列化:是把對象轉(zhuǎn)換成字節(jié)序列的過程狸吞。
  • 對象的反序列化:是把字節(jié)序列恢復(fù)為對象的過程。
    對象序列化的主要用途:
  1. 可以將字節(jié)永久的保存在硬盤中,通常放在文件中
  2. 可以在網(wǎng)絡(luò)上傳送字節(jié)序列
  3. 兩個線程在進行遠距離通信時捷绒,彼此可以發(fā)送各種類型瑰排,發(fā)送方需要把java對象轉(zhuǎn)換為字節(jié)序列,接收方字需要把字節(jié)序列再恢復(fù)為java對象暖侨。
編譯和運行

1.編譯時和運行時:

  • 編譯時:將java文件編譯成.class文件的過程椭住,不涉及到內(nèi)存的分配。
  • 運行時:將虛擬機執(zhí)行.class文件的過程字逗,設(shè)計到內(nèi)存的分配
  1. 編譯時類型和運行時類型
  • 在編譯時京郑,調(diào)用的是聲明類型的成員方法
  • 在運行時,調(diào)用的是實際類型的成員方法
  • 對于調(diào)用引用實例的成員變量葫掉,無論是編譯還是運行些举,均是編譯時類型的成員變量

gc簡述

當程序員創(chuàng)建對象時,gc就開始監(jiān)控這個對象的地址俭厚,大小以及使用情況户魏。通常,gc采用有向圖的方式記錄管理堆中所有的對象挪挤,通過這種方式確定哪些對象時“可達的”叼丑,哪些對象是“不可達的”。當gc確定一些對象為不可達時扛门,gc就有責任回收這些內(nèi)存空間鸠信。但是,位置保證GC能夠在不同平臺實現(xiàn)的問題论寨,Java規(guī)范對gc的很對行為都沒有進行嚴格規(guī)定星立。(青年代老年代gc回收機制。)

java中的4中引用類型
  • 強引用:從不回收葬凳,對象一直存在绰垂,當jvm停止的時候才被終止。
  • 軟引用:可以和引用隊列聯(lián)合使用火焰,當內(nèi)存不足時終止辕坝。
  • 弱引用:可以和引用隊列聯(lián)合使用,當內(nèi)存不足時觸發(fā)gc被終止
  • 虛引用:必須和引用隊列李蘭和使用荐健,隨時會被回收,觸發(fā)gc后被終止琳袄。
    軟應(yīng)用多用于緩存圖片內(nèi)存資源江场,而弱引用多用于內(nèi)存泄漏的解決。
    弱引用可以通過手動gc進行清除

字符串相關(guān)

String窖逗、StringBuffer和StringBuilder
  • 可變性
  1. String類使用數(shù)組保存字符串址否,所以String對象不可變。每次更改字符串都需要新建新的對象。
  2. StringBuffer類和StringBuilder類都是繼承AbstractStringBuilder類佑附。AbstractStringBuilder在更改字符串時不需要新建新的對象樊诺。消耗時間比String要短,性能好音同。但是StringBuffer比StringBuilder要稍微耗時一些词爬。是因為StringBuffer中添加了同步鎖,所以要求線程安全時要使用StringBuffer权均。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顿膨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叽赊,更是在濱河造成了極大的恐慌恋沃,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件必指,死亡現(xiàn)場離奇詭異囊咏,居然都是意外死亡,警方通過查閱死者的電腦和手機塔橡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門梅割,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谱邪,你說我怎么就攤上這事炮捧。” “怎么了惦银?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵咆课,是天一觀的道長。 經(jīng)常有香客問我扯俱,道長书蚪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任迅栅,我火速辦了婚禮殊校,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘读存。我一直安慰自己为流,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布让簿。 她就那樣靜靜地躺著敬察,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尔当。 梳的紋絲不亂的頭發(fā)上莲祸,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音,去河邊找鬼锐帜。 笑死田盈,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的缴阎。 我是一名探鬼主播允瞧,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼药蜻!你這毒婦竟也來了瓷式?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤语泽,失蹤者是張志新(化名)和其女友劉穎贸典,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踱卵,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡廊驼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惋砂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妒挎。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖西饵,靈堂內(nèi)的尸體忽然破棺而出酝掩,到底是詐尸還是另有隱情,我是刑警寧澤眷柔,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布期虾,位于F島的核電站,受9級特大地震影響驯嘱,放射性物質(zhì)發(fā)生泄漏镶苞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一鞠评、第九天 我趴在偏房一處隱蔽的房頂上張望茂蚓。 院中可真熱鬧,春花似錦剃幌、人聲如沸聋涨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牛郑。三九已至,卻和暖如春敬鬓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工钉答, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留础芍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓数尿,卻偏偏與公主長得像仑性,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子右蹦,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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

  • 面向?qū)ο蟮娜齻€特征 封裝,繼承,多態(tài).這個應(yīng)該是人人皆知.有時候也會加上抽象. 多態(tài)的好處 允許不同類對象對同一消...
    Blizzard_liu閱讀 1,332評論 0 6
  • 九種基本數(shù)據(jù)類型的大小诊杆,以及他們的封裝類。(1)九種基本數(shù)據(jù)類型和封裝類 (2)自動裝箱和自動拆箱 什么是自動裝箱...
    關(guān)瑋琳linSir閱讀 1,887評論 0 47
  • 注:都是在百度搜索整理的答案何陆,如有侵權(quán)和錯誤晨汹,希告知更改。 一贷盲、java中==和equals和hashCode的區(qū)...
    Jenchar閱讀 580評論 1 2
  • 一:java概述: 1淘这,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境巩剖,java的開發(fā)...
    慕容小偉閱讀 1,792評論 0 10
  • 前言:最近感冒的不太想去面試铝穷,在家就對Java se的基礎(chǔ)做了一些小總結(jié) 1.JDK和JRE的區(qū)別 一 基礎(chǔ)知識 ...
    AntCode閱讀 1,131評論 0 1