記錄
一、有沒有寫過自定義classloader二、本地去更新遠程服務器上容器代碼的方法
三、兩個對象的hashcode一樣說明就是同一個對象嗎
四、java中關鍵字volatile的作用
一般說來,volatile用在如下的幾個地方:
1、中斷服務程序中修改的供其它程序檢測的變量需要加volatile;
2、多任務環境下各任務間共享的標志應該加volatile;
3、存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義;
另外,以上這幾種情況經常還要同時考慮數據的完整性(相互關聯的幾個標志讀了一半被打斷了重寫),在1中可以通過關中斷來實現,2中可以禁止任務調度,3中則只能依靠硬件的良好設計了。
其實Volatile是由于編譯器優化所造成的一個Bug而引入的關鍵字。
int a = 10;
int b = a;
int c = a;
理論上來講每次使用a的時候都應該從a的地址來讀取變量值,但是這存在一個效率問題,就是每次使用a都要去內存中取變量值,然后再通過系統總線傳到CPU 處理,這樣開銷會很大。所以那些編譯器優化者故作聰明,把a讀進CPU的cache里,像上面的代碼,假如a在賦值期間沒有被改變,就直接從CPU的 cache里取a的副本來進行賦值。但是bug也顯而易見,當a在賦給b之后,可能a已經被另一個線程改變而重新寫回了內存,但這個線程并不知道,依舊按 照原來的計劃從CPU的cache里讀a的副本進來賦值給c,結果不幸發生了。
于是編譯器的開發者為了補救這一bug,提供了一個Volatile讓開發人員為他們的過失埋單,或者說提供給開發人員了一個選擇效率的權利。當變量加上了Volatile時,編譯器就老老實實的每次都從內存中讀取這個變量值,否則就還按照優化的方案從cache里讀
六、maven的好處
七、硬引用和軟引用區別 強引用和弱引用區別
1.強引用
本章前文介紹的引用實際上都是強引用,這是使用最普遍的引用。如果一個對象具有強引用,那就類似于必不可少的生活用品,垃圾回收器絕不會回收它。當內存空 間不足,Java虛擬機寧愿拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內存不足問題。
2.軟引用(SoftReference)
如果一個對象只具有軟引用,那就類似于可有可物的生活用品。如果內存空間足夠,垃圾回收器就不會回收它,如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可用來實現內存敏感的高速緩存。
軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。
3.弱引用(WeakReference)
如果一個對象只具有弱引用,那就類似于可有可物的生活用品。弱引用與軟引用的區別在于:只具有弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它 所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由于垃圾回收器是一個優先級很低的線程, 因此不一定會很快發現那些只具有弱引用的對象。
弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用所引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。
4.虛引用(PhantomReference)
"虛引用"顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用并不會決定對象的生命周期。如果一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收。
虛引用主要用來跟蹤對象被垃圾回收的活動。虛引用與軟引用和弱引用的一個區別在于:虛引用必須和引用隊列(ReferenceQueue)聯合使用。當垃 圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中。程序可以通過判斷引用隊列中是 否已經加入了虛引用,來了解
被引用的對象是否將要被垃圾回收。程序如果發現某個虛引用已經被加入到引用隊列,那么就可以在所引用的對象的內存被回收之前采取必要的行動。
九、客戶經理發展的主要產品有哪些
十、webservice服務端具體開發
十一、java虛擬機中的內存模型及主要算法。堆棧區別
十二、.net和java中傳輸基本類型時大端及小端避免辦法
十三、sessioin和cookie區別
十四、hash實現對key和value的排序
十五、如何在代碼中中斷一個線程任務
十六、動態代理和cglig區別
十七、java中是值傳遞還是引用傳遞
十八、java中集合類底層數據結構
十九、threadlocal解釋
二十、狀態模式、責任鏈模式、適配器模式、觀察者模式、工廠方法、抽象工廠,各屬于創建型、行為型還是什么型
二十一、面象對象設計原則
二十二、uml各圖,特別是時序圖
二十四、敏捷快發理解
二十五、寫一個編譯器最快算法(a+(b*c))*(d+e)正確,而))a+c則出錯
二十六、linix中軟鏈接和硬鏈接區別,> >> 的區別,找出一個文件中第四行和第五行的命令
1. 軟連接(符號鏈接) ln -s source target
2. 硬鏈接 ln source target
知道了inode的作用就不難理解軟硬鏈接的區別了。
- 軟連接相當于快捷方式,如果打開并修改軟連接,相應的文件也會隨之改變。但是如果刪除軟連接,源文件并不會受到影響。
- 硬鏈接有點像引用和指針的結合,當打開和修改它時,相應的文件隨之改變,但是所有這個文件的硬鏈接的內容也隨之改變,這是因為所有的硬鏈接都擁有唯一的一個 inode 號,他們指向的是同一文件。
- 軟連接可以跨文件系統創建,也就是可以在某個分區中創建到另外一個分區的軟連接
- 硬鏈接則只能在本文件系統中使用(想想為什么?),其實原理很簡單,因為 inode 是這個文件在當前分區中的索引值,是相對于這個分區的,當然不能跨越文件系統了。
- 最后一個區別是軟連接可以連接任何文件或者文件夾,而硬鏈接則只能在文件之間創建
> 輸出重定向,內容會全部覆蓋 >>是追加
sed -n '5,10p' filename 這樣你就可以只查看文件的第5行到第10行
二十八、加強英文
二十九、jdk5和jdk6的新特性
posted on 2012-03-31 23:20 tobyxiong 閱讀(528) 評論(0) 編輯 收藏 所屬分類: java