1壹瘟、java事件機制包括三部分:事件阅签、事件監(jiān)聽器、事件源枕面。
?????? 事件:繼承自java.util.EventObject類,封裝了事件源對象及跟事件相關(guān)的信息。
?????? 事件監(jiān)聽器:繼承自java.util.EventListener接口缚去,注冊在事件源上潮秘,當(dāng)事件源的屬性或狀態(tài)改變時,取得相應(yīng)的監(jiān)聽器調(diào)用其內(nèi)部的監(jiān)聽方法易结。
?????? 事件源:事件發(fā)生的地方枕荞,由于事件源的某項屬性或狀態(tài)發(fā)生改變,導(dǎo)致某項事件發(fā)生搞动。
2躏精、為什么要使用線程池,線程池有什么作用鹦肿?
?????? 為了減少創(chuàng)建和銷毀線程的次數(shù)矗烛,讓每個線程可以多次使用,可根據(jù)系統(tǒng)情況調(diào)整執(zhí)行的線程數(shù)量箩溃,防止消耗過多內(nèi)存瞭吃。
??????? 線程池主要用來解決線程生命周期開銷問題和資源不足問題碌嘀,通過對多個任務(wù)重復(fù)使用線程,線程創(chuàng)建的開銷就被分?jǐn)偟蕉鄠€任務(wù)上了歪架,而且由于在請求到達(dá)時線程已經(jīng)存在股冗,所有消除了線程創(chuàng)建所帶來的延遲,這樣就可以立即為請求服務(wù)和蚪,使用程序響應(yīng)更快止状。另外,通過適當(dāng)調(diào)整線程池中的線程數(shù)目可以防止出現(xiàn)資源不足的情況攒霹。
3怯疤、線程的種類和使用場景
new CachedThreadPool? (SynchronousQueue 同步隊列 )
當(dāng)有新任務(wù)到來,則插入到SynchronousQueue中剔蹋,由于SynchronousQueue是同步隊列旅薄,因此會在池中尋找可用線程來執(zhí)行,若有可用線程則執(zhí)行泣崩,若沒有可用線程則創(chuàng)建一個線程來執(zhí)行該任務(wù)少梁,若池中線程空閑時間超過指定大小,則該線程會被銷毀矫付。
適用:執(zhí)行很多短期異步的小程序或負(fù)載較輕的服務(wù)器凯沪。
new FixedThreadPool(LinkedBlockingQueue 阻塞隊列)
創(chuàng)建可容納固定線程數(shù)量的池子椎侠,每個線程的存活時間是無限的论矾,當(dāng)池子滿了就不在添加線程了野蝇,如果池中的所有線程都在繁忙狀態(tài)喘批,對于新任務(wù)會進入阻塞隊列中(無界的阻塞隊列)命浴。
適用:執(zhí)行長期的任務(wù)命斧,性能好很多闹击。
new SingleThreadExecutor(LinkedBlockingQueue 阻塞隊列)
創(chuàng)建只有一個線程的線程池返弹,且線程的存活時間是無限的脂崔,當(dāng)該線程繁忙時滤淳,對于新任務(wù)會進入阻塞隊列中(無界的阻塞隊列)。
適用:一個任務(wù)一個任務(wù)的執(zhí)行場景砌左。
new ScheduledThreadPool (DelayedWorkQueue延遲隊列)
創(chuàng)建一個固定大小的線程池脖咐,線程池內(nèi)線程存活時間無限制,線程池可以支持定時或周期性的任務(wù)執(zhí)行汇歹,如果所有線程均處于繁忙狀態(tài)屁擅,新任務(wù)會進入DelayedWorkQueue隊列中,這是一種按照超時時間排序的隊列結(jié)構(gòu)产弹。
適用:周期性執(zhí)行任務(wù)的場景派歌。
4、http 請求中GET和POST區(qū)別
???? 1.get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)硝皂。
???? 2.get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中常挚,值和表單內(nèi)各個字段一一對應(yīng),在URL中可以看到稽物。post是通過HTTPpost機制奄毡,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程贝或。
???? 3.對于get方式吼过,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式咪奖,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)盗忱。
???? 4.get傳送的數(shù)據(jù)量較小,不能大于2KB羊赵。post傳送的數(shù)據(jù)量較大趟佃,一般被默認(rèn)為不受限制。但理論上昧捷,IIS4中最大量為80KB闲昭,IIS5中為100KB。
???? 5.get安全性非常低靡挥,post安全性較高序矩。
5、什么事java虛擬機跋破?
???? Java虛擬機是一個想象中的機器,在實際的計算機上通過軟件模擬來實現(xiàn)簸淀。
???? Java虛擬機有自己想象中的硬件,如處理器、堆棧毒返、寄存器等,還具有相應(yīng)的指令系統(tǒng)租幕。
6、java中對象的引用類型
???? StrongReference(強引用)
???? 強引用是使用最普遍的引用拧簸,如果一個對象具有強引用劲绪,那么垃圾回收器絕不會回收它。當(dāng)內(nèi)存空間不足狡恬,jvm寧愿拋出OutOfMemoryError錯誤,使程序異常中止蝎宇,也不會回收具有強引用的對象來解決內(nèi)存不足的問題弟劲,A a = new A();
????? SoftReference(軟引用)
????? 如果一個對象只具有軟引用,則內(nèi)存空間足夠姥芥,垃圾回收器就不會回收它兔乞,如果內(nèi)存空間不足了,就會回收這些對象的內(nèi)存。軟引用可以用來實現(xiàn)內(nèi)存敏感的高速緩存庸追。
???? WeakReference(弱引用)
???? 弱引用與軟引用的區(qū)別霍骄,只具有弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它所管轄的內(nèi)存區(qū)域的過程中淡溯,一旦發(fā)現(xiàn)了只具有弱引用的對象读整,不管當(dāng)前內(nèi)存空間足夠與否,都會回收它的內(nèi)存咱娶。不過垃圾回收器是一個優(yōu)先級很低的線程米间,因此不一定很快發(fā)現(xiàn)那些只具有弱引用的對象。
???? PhantomReference(虛引用)
???? “虛引用”顧名思義膘侮,就是形同虛設(shè)屈糊,與其他幾種引用都不同,虛引用并不會決定對象的生命周期琼了。如果一個對象僅持有虛引用逻锐,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收雕薪。
7昧诱、OSI七層協(xié)議
????? 應(yīng)用層
????? 表示層
????? 會話層
????? 傳輸層
????? 網(wǎng)絡(luò)層
????? 數(shù)據(jù)鏈路層
????? 物理層
8、TCP/IP四層模型
????? 應(yīng)用層
????? 傳輸層
????? 網(wǎng)絡(luò)層
????? 數(shù)據(jù)鏈路層
9蹦哼、排序算法
???? 冒泡排序
???? 比較相鄰的元素鳄哭。如果第一個比第二個大,就交換他們兩個纲熏。
???? public static void bubbleSort(int[] numbers){
??????? int? temp = 0;
??????? int size = numbers.length;
??????? for(in ti = 0 ; i < size-1; i ++){
??????????? for(intj = 0 ;j < size-1-i ; j++){
????????????????? if(numbers[j] > numbers[j+1])//交換兩數(shù)位置?? {
???????????????????? temp = numbers[j];
???????????????????? numbers[j] = numbers[j+1];
??????????????????? numbers[j+1] = temp;
????????????????? }
?????????? ? }
?????? ? }
????? }