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)的不同線程之間同步的手段。
  • 套接字:套接口也是一種進程間通信機制,與其他機制不同的是,它可用于不同及其間的進程通信
  • 信號:信號是一種比較復雜的通信方式,用于接收進程的某個事件已經(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)點:易維護、易復用、易拓展、由于面對對象有封裝繼承多態(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é)序列恢復為對象的過程。
    對象序列化的主要用途:
  1. 可以將字節(jié)永久的保存在硬盤中,通常放在文件中
  2. 可以在網(wǎng)絡(luò)上傳送字節(jié)序列
  3. 兩個線程在進行遠距離通信時,彼此可以發(fā)送各種類型,發(fā)送方需要把java對象轉(zhuǎn)換為字節(jié)序列,接收方字需要把字節(jié)序列再恢復為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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容