總結(jié)

1绩卤、反射

  • Java反射機(jī)制是在運(yùn)行狀態(tài)中椒丧,對(duì)于任意一個(gè)類或?qū)ο螅寄苤啦⒄{(diào)用其所有屬性和方法砌梆。這樣動(dòng)態(tài)獲取新的以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能就叫做反射默责。
  • 類成員主要包括構(gòu)造函數(shù),變量和方法咸包。而Member的Field傻丝、Method、Constructor這三個(gè)實(shí)現(xiàn)類就分別描述變量诉儒、方法葡缰、構(gòu)造函數(shù)。而這些類都沒(méi)有public構(gòu)造方法,只能通過(guò)Class類獲取泛释。
  • 獲取到對(duì)應(yīng)的構(gòu)造函數(shù)滤愕,變量和方法,就可以獲取他們的一些信息:如:類型怜校、修飾符间影、注解、名稱等茄茁,并使用他們魂贬。

2、代理模式

代理模式是結(jié)構(gòu)型設(shè)計(jì)模式裙顽,它為對(duì)象的間接訪問(wèn)提供了一個(gè)解決方案付燥,可以對(duì)對(duì)象的訪問(wèn)進(jìn)行控制。

  • 應(yīng)用場(chǎng)景:當(dāng)無(wú)法或不想直接訪問(wèn)某個(gè)對(duì)象愈犹、訪問(wèn)某個(gè)對(duì)象存困難時(shí)键科,通過(guò)一個(gè)代理對(duì)象來(lái)間接訪問(wèn)。
  • 優(yōu)點(diǎn):能夠協(xié)調(diào)調(diào)用者和被調(diào)用者漩怎,在一定程度上降低了系統(tǒng)的耦合度勋颖;客戶端可以針對(duì)抽象主題角色進(jìn)行編程,增加和更換代理類無(wú)須修改源代碼勋锤,符合開(kāi)閉原則饭玲,系統(tǒng)具有較好的靈活性和可擴(kuò)展性。
  • 缺點(diǎn):由于在客戶端和真實(shí)主題之間增加了代理對(duì)象叁执,因此有些類型的代理模式可能會(huì)造成請(qǐng)求的處理速度變慢咱枉,例如保護(hù)代理;實(shí)現(xiàn)代理模式需要額外的工作徒恋,而且有些代理模式的實(shí)現(xiàn)過(guò)程較為復(fù)雜蚕断,例如遠(yuǎn)程代理。
  • 靜態(tài)代理:代碼運(yùn)行前入挣,即 在代理類實(shí)現(xiàn)時(shí)就指定與目標(biāo)對(duì)象類相同的接口亿乳。特點(diǎn):1個(gè)靜態(tài)代理 只服務(wù)1種類型的目標(biāo)對(duì)象
  • 動(dòng)態(tài)代理:運(yùn)行時(shí),不需要顯示實(shí)現(xiàn)與目標(biāo)對(duì)象相同的接口径筏,而是將這種實(shí)現(xiàn)推遲到程序運(yùn)行時(shí)由JVM來(lái)實(shí)現(xiàn)葛假。特點(diǎn):只需要1個(gè)動(dòng)態(tài)代理類就可以解決創(chuàng)建多個(gè)、靜態(tài)代理的問(wèn)題滋恬,避免重復(fù)聊训、多余代碼、更強(qiáng)的靈活性恢氯。
  • 舉例:getService();
    代理模式類型較多带斑,其中遠(yuǎn)程代理鼓寺、虛擬代理、保護(hù)代理等在軟件開(kāi)發(fā)中應(yīng)用非常廣泛勋磕。

3妈候、equals和==的區(qū)別

“==”是關(guān)系運(yùn)算符。比較兩個(gè)數(shù)值之間的大小挂滓,其運(yùn)算結(jié)果為一個(gè)邏輯類型(boolean布爾類型)的數(shù)值苦银。基本數(shù)據(jù)類型比較的是具體值赶站;引用數(shù)據(jù)類型比較的是地址值幔虏。
equals是一個(gè)方法。比較兩個(gè)對(duì)象是否相等贝椿,在Object中定義了該方法想括,通過(guò)內(nèi)存地址值來(lái)判斷兩個(gè)對(duì)象是否相等。在String中重寫(xiě)了equals方法团秽,依次通過(guò):地址值主胧、長(zhǎng)度叭首、hashCode习勤、遍歷對(duì)比來(lái)判斷兩個(gè)對(duì)象是否相等。

4焙格、Java堆和棧的區(qū)別

聯(lián)系
在堆中產(chǎn)生了一個(gè)數(shù)組或者對(duì)象后图毕,還可以在棧中定義一個(gè)特殊的變量,變量的值就等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址眷唉,而這個(gè)棧中的特殊變量予颤,也就成為數(shù)組或?qū)ο蟮囊米兞俊R院罂梢栽诔绦蛑惺褂脳?nèi)存中的引用變量訪問(wèn)堆內(nèi)存中的數(shù)組或?qū)ο罅?/p>

區(qū)別
:jvm只有一個(gè)堆區(qū)(heap)被所有線程共享冬阳;堆內(nèi)存用于存放由new創(chuàng)建的對(duì)象和數(shù)組蛤虐;在堆內(nèi)存中分配的內(nèi)存空間,由java虛擬機(jī)自動(dòng)垃圾回收器來(lái)管理肝陪;在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存驳庭,存取速度較慢。

:每個(gè)棧中的數(shù)據(jù)都是私有的氯窍,其他棧不能訪問(wèn)饲常;每個(gè)線程包含一個(gè)棧區(qū),棧中只保存基本類型的變量和對(duì)象的引用變量狼讨;當(dāng)在一段代碼塊中聲明了一個(gè)變量時(shí)贝淤,java就會(huì)在棧內(nèi)存中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過(guò)變量的作用域之后政供,java也會(huì)自動(dòng)釋放為該變量分配的空間播聪,而這個(gè)回收的空間可以即刻用作他用朽基;棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性犬耻、存取速度比堆要快踩晶。

5、sleep()和wait()區(qū)別

sleep是Thread類的方法枕磁,wait是Object類的方法渡蜻。
sleep是自動(dòng)喚醒,wait需要其他線程來(lái)喚醒计济。
sleep不會(huì)釋放同步鎖茸苇,wait會(huì)釋放同步鎖。
sleep可以用在任意方法中沦寂,wait只能用在同步方法或同步塊中
sleep 必須捕獲異常,而 wait,notify 和 notifyAll 不需要捕獲異常

6.android系統(tǒng)啟動(dòng)流程

    1. 從系統(tǒng)開(kāi)機(jī)供電開(kāi)始学密,正確復(fù)位后,Cup開(kāi)始執(zhí)行第一條指令引導(dǎo)程序BootLoader來(lái)裝載用戶程序传藏。
    1. BootLoader引導(dǎo)程序先初始化硬件設(shè)備腻暮,并提供了調(diào)試功能,如果用戶沒(méi)有進(jìn)行調(diào)試毯侦,則會(huì)從預(yù)先定好的地址(NAND Flash)中裝載Linux內(nèi)核哭靖。
    1. Linux內(nèi)核從從start_kernel函數(shù)開(kāi)始進(jìn)行整個(gè)系統(tǒng)初始化,初始化完成之后侈离,調(diào)用init_post()函數(shù)啟動(dòng)Init 進(jìn)程试幽。此時(shí)內(nèi)核啟動(dòng)結(jié)束,進(jìn)入用戶空間卦碾。
    1. init進(jìn)程會(huì)掛載文件系統(tǒng)铺坞、設(shè)置系統(tǒng)屬性、裝載進(jìn)程信號(hào)處理器然后解析Init.rc文件洲胖,根據(jù)Init.rc文件的描述:系統(tǒng)會(huì)初始化屬性和啟動(dòng)Android系統(tǒng)重要的守護(hù)進(jìn)程济榨,其中最重要的是ServiceManagerZygote等進(jìn)程绿映。
  • 5.Zygote進(jìn)程是所有Android進(jìn)程的母體擒滑,包括system_server和各個(gè)App進(jìn)程。
    創(chuàng)建AppRuntime并調(diào)用AppRuntime.start()方法:
    1.調(diào)用AndroidRuntimestartVM()方法創(chuàng)建虛擬機(jī)
    2.調(diào)用startReg()注冊(cè)JNI函數(shù)绘梦;
    3.通過(guò)JNI方式調(diào)用ZygoteInit.main()橘忱,第一次進(jìn)入Java世界;
    4.registerZygoteSocket()建立socket通道卸奉,zygote作為通信的服務(wù)端钝诚,用于響應(yīng)客戶端請(qǐng)求;
    5.preload()預(yù)加載通用類榄棵、drawablecolor資源凝颇、openGL以及共享庫(kù)以及WebView潘拱,用于提高ap啟動(dòng)效率;
    6.zygote完畢大部分工作拧略,接下來(lái)再通過(guò)startSystemServer()芦岂,fork system_server進(jìn)程。
    最后調(diào)用runSelectLoop()垫蛆,隨時(shí)待命禽最,當(dāng)接收到請(qǐng)求創(chuàng)建新進(jìn)程請(qǐng)求時(shí)立即喚醒并執(zhí)行相應(yīng)工作。
    1. startSystemServer()袱饭,fork system_server進(jìn)程川无,調(diào)用handleSystemServerProcess()方法執(zhí)行system_server的剩余工作:通用初始化、Zygote初始化和application初始化虑乖。
      application初始化中 初始化系統(tǒng)上下文懦趋、創(chuàng)建SystemServiceManager用于后面的binder機(jī)制,負(fù)責(zé)系統(tǒng)Service的啟動(dòng):如:AMS(ActivityManagerService)疹味、PackageManagerService等仅叫。最后調(diào)用Loop.loop(),進(jìn)入處理消息的循環(huán)
    1. startOtherServices()其他服務(wù)中通過(guò)mActivityManagerService.systemReady()調(diào)用startHomeActivity來(lái)啟動(dòng)Launcher糙捺。Launcher中應(yīng)用圖標(biāo)顯示出來(lái):將LoaderTask作為消息發(fā)送給HandlerThread诫咱。run方法中調(diào)用loadAndBindWorkspace函數(shù)用來(lái)加載工作區(qū)信息--loadAndBindAllApps函數(shù)是用來(lái)加載系統(tǒng)已經(jīng)安裝的應(yīng)用程序信息。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末继找,一起剝皮案震驚了整個(gè)濱河市遂跟,隨后出現(xiàn)的幾起案子逃沿,更是在濱河造成了極大的恐慌婴渡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凯亮,死亡現(xiàn)場(chǎng)離奇詭異边臼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)假消,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門柠并,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人富拗,你說(shuō)我怎么就攤上這事臼予。” “怎么了啃沪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵粘拾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我创千,道長(zhǎng)缰雇,這世上最難降的妖魔是什么入偷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮械哟,結(jié)果婚禮上疏之,老公的妹妹穿的比我還像新娘。我一直安慰自己暇咆,他們只是感情好锋爪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著爸业,像睡著了一般几缭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沃呢,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天年栓,我揣著相機(jī)與錄音,去河邊找鬼薄霜。 笑死某抓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惰瓜。 我是一名探鬼主播否副,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼崎坊!你這毒婦竟也來(lái)了备禀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤奈揍,失蹤者是張志新(化名)和其女友劉穎曲尸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體男翰,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡另患,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛾绎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆箕。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖租冠,靈堂內(nèi)的尸體忽然破棺而出鹏倘,到底是詐尸還是另有隱情,我是刑警寧澤顽爹,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布彤悔,位于F島的核電站矛纹,受9級(jí)特大地震影響但校,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诲锹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涉馅。 院中可真熱鬧归园,春花似錦、人聲如沸稚矿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晤揣。三九已至桥爽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昧识,已是汗流浹背钠四。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跪楞,地道東北人缀去。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像甸祭,于是被迫代替她去往敵國(guó)和親缕碎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 參考資料:菜鳥(niǎo)教程之設(shè)計(jì)模式 設(shè)計(jì)模式概述 設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐池户,通常被有經(jīng)驗(yàn)...
    Steven1997閱讀 1,174評(píng)論 1 12
  • 一:java概述:1咏雌,JDK:Java Development Kit,java的開(kāi)發(fā)和運(yùn)行環(huán)境校焦,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,650評(píng)論 0 11
  • Java繼承關(guān)系初始化順序 父類的靜態(tài)變量-->父類的靜態(tài)代碼塊-->子類的靜態(tài)變量-->子類的靜態(tài)代碼快-->父...
    第六象限閱讀 2,157評(píng)論 0 9
  • 大千世界四季輪赊抖,美好人生日月更。 花花綠綠燈兩岸斟湃,虛虛實(shí)實(shí)又復(fù)重熏迹。 西邊云山霧罩凌檐薯,東天星雷電青松凝赛。 沉淪何時(shí)方知...
    歸風(fēng)仙人閱讀 255評(píng)論 0 1
  • 這個(gè)故事告訴我們孩子,生活中我們看似平凡的坛缕,我們已經(jīng)擁有的東西墓猎,都是我們很幸運(yùn)能得到的。 1赚楚、幫孩子面對(duì)...
    讓愛(ài)不缺席_土豆閱讀 3,689評(píng)論 1 4