中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

哪些可以免費(fèi)做網(wǎng)站推廣優(yōu)化關(guān)鍵詞

哪些可以免費(fèi)做網(wǎng)站,推廣優(yōu)化關(guān)鍵詞,裝修平臺(tái)代理,淘寶客網(wǎng)站制作視頻教程21. JVM是如何處理異常(大概流程)? 如果發(fā)生異常,方法會(huì)創(chuàng)建一個(gè)異常對(duì)象(包括:異常名稱(chēng)、異常描述以及異常發(fā)生時(shí)應(yīng)用程序的狀態(tài)),并轉(zhuǎn)交給JVM。創(chuàng)建異常對(duì)象,并轉(zhuǎn)交給…

21. JVM是如何處理異常(大概流程)?

如果發(fā)生異常,方法會(huì)創(chuàng)建一個(gè)異常對(duì)象(包括:異常名稱(chēng)、異常描述以及異常發(fā)生時(shí)應(yīng)用程序的狀態(tài)),并轉(zhuǎn)交給JVM。創(chuàng)建異常對(duì)象,并轉(zhuǎn)交給JVM的過(guò)程稱(chēng)為拋出異常。

異常發(fā)生后,可能有一系列的方法調(diào)用,終才進(jìn)入拋出異常的方法,這一系列方法調(diào)用的有序列表叫做調(diào)用棧。

JVM會(huì)順著調(diào)用棧去查找看是否有可以處理異常的代碼,如果有,則調(diào)用異常處理代碼。如果沒(méi)有,JVM就會(huì)將該異常轉(zhuǎn)交給默認(rèn)的異常處理器(默認(rèn)處理器為JVM 的一部分),默認(rèn)異常處理器打印出異常信息并終止應(yīng)用程序。

22. 請(qǐng)聊一下java的集合類(lèi),以及在實(shí)際項(xiàng)目中你是如何用的?

  • 注意說(shuō)出集合體系、常用類(lèi)、接口、實(shí)現(xiàn)類(lèi)。
  • 高并發(fā)的集合類(lèi)、參照集合增強(qiáng)內(nèi)容。
  • 在實(shí)際項(xiàng)目中引用。?

23. Java集合框架類(lèi)圖:

24. ArrayList與LinkedList的區(qū)別?

  • ArrayList基于動(dòng)態(tài)數(shù)組(順序表)的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表(雙向鏈表)的數(shù)據(jù)結(jié)構(gòu);
  • ArrayList隨機(jī)訪問(wèn)快,LinkedList隨機(jī)訪問(wèn)慢;
  • ArrayList添加和刪除慢,LinkedList添加和刪除快;
  • 此外,LinkedList還專(zhuān)門(mén)提供了操作表頭和表尾元素的方法,可當(dāng)做堆棧、隊(duì)列和雙向隊(duì)列使用。

25. ArrayList與Vector的區(qū)別?

  • 相同:底層都是數(shù)組實(shí)現(xiàn)的;
  • ArrayList不是線程安全,但是效率高,Vector是線程安全,效率低(源碼中方法用synchronized修飾);
  • ArrayList和Vector都采用線性連續(xù)存儲(chǔ)空間,默認(rèn)容量大小都為10;存儲(chǔ)空間不足時(shí),ArrayList默認(rèn)1.5倍擴(kuò)容 ,Vector默認(rèn)1倍擴(kuò)容;
  • ArrayList可以通過(guò)Collections.synchronizedList(List list) 實(shí)現(xiàn)線程同步的集合。
  • 注:Vector是java的遺留框架,遺留框架設(shè)計(jì)上存在問(wèn)題,已經(jīng)不再使用。遺留框架還有Hashtable、Dictionary、BitSet、Stack、Properties、Enumeration。

26. HashMap和Hashtable的區(qū)別?

  • HashMap是非同步,非安全線程,但速度快;Hashtable是同步,安全線程,但速度慢。
  • HashMap可以接受null值( key和value都可為空);Hashtable不可以。
  • HashMap默認(rèn)容量大小是16;Hashtable默認(rèn)容量大小是11。
  • HashMap的hash值重新計(jì)算過(guò),Hashtable直接使用hashCode。
  • HashMap繼承自AbstractMap類(lèi),Hashtable繼承自Dictionary類(lèi)

27. HashMap在1.8中做了哪些優(yōu)化?

  • 數(shù)據(jù)結(jié)構(gòu) --> 數(shù)組 + 鏈表 + 紅黑樹(shù)
  • hash函數(shù) --> 高16參與Hash,降低Hash沖突
  • 擴(kuò)容優(yōu)化 --> 擴(kuò)容時(shí)元素不需要進(jìn)行重新計(jì)算位置。新位置 = 原位置 + 原數(shù)組長(zhǎng)度

28. HashMap線程安全的方式?

HashMap不是線程安全的。

  • 方法一:通過(guò)Collections.synchronizedMap()
  • 方法二:使用ConcurrentHashMap

29. HashMap為什么擴(kuò)容是兩倍?

  • 將取模轉(zhuǎn)為位運(yùn)算操作,提高運(yùn)算效率,只有2的冪次方成立 -> (n-1)&hash
  • 并且在容量是2的冪次方時(shí),n-1的二進(jìn)制會(huì)全為1,位運(yùn)算時(shí)可以充分散列,避免不必要的哈希沖突。

30. HashMap為什么要使用紅黑樹(shù)?

  • 紅黑樹(shù)是動(dòng)態(tài)平衡的一棵二叉查找樹(shù),可以加速查找。
  • HashMap什么時(shí)候轉(zhuǎn)換紅黑樹(shù)(數(shù)組長(zhǎng)度大于64,索引節(jié)點(diǎn)位置元素個(gè)數(shù)大于8轉(zhuǎn)換)、什么時(shí)候轉(zhuǎn)換鏈表(索引位置元素個(gè)數(shù)等于6時(shí)轉(zhuǎn)換)。
  • 說(shuō)一下向關(guān)聯(lián)的知識(shí)。

31. HashMap為什么用紅黑樹(shù)不用普通的AVL樹(shù)?

總:

AVL是高度平衡樹(shù),調(diào)整頻率高,適合查詢(xún)多,修改少的場(chǎng)景。紅黑樹(shù)是弱平衡樹(shù),調(diào)整頻率低,適合修改多場(chǎng)景。

AVL樹(shù):

AVL樹(shù)是高度平衡樹(shù),任何兩個(gè)左右子樹(shù)高度大于1時(shí),就好動(dòng)態(tài)調(diào)整到平衡。所以AVL樹(shù)適合用于插入與刪除次數(shù)比較少,但查找多的情況。

紅黑樹(shù):

它也是一種平衡二叉樹(shù),但每個(gè)節(jié)點(diǎn)帶顏色,可以是紅或黑。通過(guò)對(duì)任何一條從根到葉子的路徑上各個(gè)節(jié)點(diǎn)顏色的限制,確保沒(méi)有一條路徑會(huì)比其它路徑長(zhǎng)出兩倍,所以紅黑樹(shù)是一種弱平衡二叉樹(shù)。紅黑樹(shù)從根到葉子的最長(zhǎng)路徑不會(huì)超過(guò)最短路徑的2倍。

32. HashMap為什么在JDK 1.8之后不再有死循環(huán)的問(wèn)題?

JDK1.8以前,導(dǎo)致死循環(huán)的主要原因是擴(kuò)容后,節(jié)點(diǎn)的順序會(huì)反掉,可能會(huì)形成一個(gè)環(huán)形鏈。

原因:兩個(gè)線程同時(shí)調(diào)用了擴(kuò)容方法,擴(kuò)容同一索引位置。線程一執(zhí)行途中被掛起(Entry next = e.next;),線程二獲得執(zhí)行時(shí)間,執(zhí)行完擴(kuò)容操作,線程一再次獲得執(zhí)行時(shí)間,會(huì)形成環(huán)形鏈,然后調(diào)用HashTable.get()時(shí),出現(xiàn)了無(wú)限循環(huán)。

https://blog.csdn.net/huantai3334/article/details/104170984

33. 解決hash沖突的方式有哪些?

  • 開(kāi)放定址法 --> ThreadLocal
  • 鏈地址法 --> HashMap
  • 再哈希法(又叫雙哈希):當(dāng)發(fā)生沖突時(shí),重新計(jì)算哈希計(jì)算地址,直到無(wú)沖突。會(huì)增加計(jì)算時(shí)間。
  • 建立公共溢出區(qū):將哈希表分為基本表和溢出表兩部分,凡是和基本表發(fā)生沖突的元素,一律填入溢出表。

34.Queue接口:

單端隊(duì)列與雙端隊(duì)列:

  • Queue與Deque

阻塞隊(duì)列與非阻塞隊(duì)列:

  • 阻塞隊(duì)列:(說(shuō)一下箭頭后的裝逼知識(shí))
    • ArrayBlockingQueue ->有邊界;底層數(shù)組;不支持同時(shí)讀寫(xiě),底層用一把鎖(ReentrantLock)
    • LinkedBlockingQueue ->可選擇的有邊界;支持同時(shí)讀寫(xiě),底層兩把鎖
    • PriorityBlockingQueue -> 底層數(shù)據(jù)結(jié)構(gòu)是堆 -> 數(shù)組與堆的轉(zhuǎn)換:heapInsert(插入堆)、heapify(堆化)
    • DelayQueue -> 單機(jī)版延遲隊(duì)列;添加元素實(shí)現(xiàn)Delay接口,重寫(xiě)兩個(gè)方法。
    • SynchronousQueue -> 容量為0,put()添加一個(gè)元素后,會(huì)等待task()刪除一個(gè)元素
    • LinkedBlockingDeque。
  • 非阻塞隊(duì)列:PriorityQueue、ConcurrentLinkedQueue、LinkedTransferQueue。

隊(duì)列方法:(@&@)

35. 集合類(lèi)是怎么解決高并發(fā)中的問(wèn)題?

  • 先說(shuō)一下,非安全的集合類(lèi)。
  • 然后再說(shuō),普通的安全的集合類(lèi)(Vector HashTable)。
  • 最后說(shuō),JUC下的高并發(fā)集合類(lèi)。
    • ConcurrentHashMap和底層 -> ConcurrentHashMap和HashTable的區(qū)別(拓展點(diǎn))。
    • ConcurrentSkipListMap(Set):線程安全的有序的哈希表,它替代TreeMap。
    • CopyOnWriteArrayList:寫(xiě)入時(shí),加鎖將原數(shù)據(jù)復(fù)制到另一個(gè)數(shù)組中,它只能保證數(shù)據(jù)的最終一致性,不適合頻繁寫(xiě)入的操作。

36. JDK1.8的新特性?

  • Lambda表達(dá)式。
  • 函數(shù)式編程:Optional、Predicate、Supplier、Consumer、Function。
  • 方法引用和構(gòu)造器調(diào)用 --> :: 關(guān)鍵字來(lái)傳遞方法或者構(gòu)造函數(shù)引用。
  • 接口中可以有默認(rèn)方法:default關(guān)鍵字。
  • Stream API。
  • 新時(shí)間日期API。
  • CompletableFuture類(lèi)。

37. Stream的并行操作原理?Stream并行的線程池是從哪里來(lái)的?

Stream的概念:

Stream專(zhuān)注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的聚合操作或者大批量數(shù)據(jù)操作。

三個(gè)操作步驟:

  • 創(chuàng)建Stream:從一個(gè)數(shù)據(jù)源,如集合、數(shù)組中獲取流。
  • 中間操作:一個(gè)操作的中間鏈,對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作。
  • 終止操作:一個(gè)終止操作,執(zhí)行中間操作鏈,并產(chǎn)生結(jié)果。

Stream并行(parallel)原理:

它底層依賴(lài)于ForkJoinPool.commonPool線程池,這是一個(gè)JVM進(jìn)程全局共享的線程。在ForkJoin上進(jìn)行了一層封裝,將Stream不斷嘗試分解成更小的集合,然后使用ForkJoin框架分而治之。

38. 關(guān)于intern() pass

String a=new String("123")+new String("456"); // String b=new String("123456"); String intern = a.intern(); System.out.println(intern==a); // 注釋輸出true,取消注釋 輸出false

參考文章(不錯(cuò)):

https://blog.csdn.net/qq_41884976/article/details/83353389

39. Java種的代理有幾種實(shí)現(xiàn)方式?

靜態(tài)代理:

在程序編譯前,代理類(lèi)已經(jīng)被創(chuàng)建完成。

動(dòng)態(tài)代理:

  • JDK:Proxy
    • 面向接口的動(dòng)態(tài)代理:代理一個(gè)對(duì)象去增強(qiáng)面向某個(gè)接口中定義的方法。
    • 沒(méi)有接口不可用。
    • 只能讀取到接口上的一些注解。
    • 舉例:MyBatis DeptMapper dm=sqlSession.getMapper(DeptMapper.class)
  • 第三方:CGlib
    • 面向父類(lèi)的動(dòng)態(tài)代理(繼承)-> 底層原理:操作字節(jié)碼生成新的類(lèi) -> 大量使用可能導(dǎo)致元空間的溢出(拓展點(diǎn))
    • 有沒(méi)有接口都可以使用。
    • 可以讀取類(lèi)上的注解。
    • 舉例: AOP 日志 性能檢測(cè) 事務(wù)

40. Java中的自增是線程安全的嗎,如何實(shí)現(xiàn)線程安全的自增?

  • i++、++i 不是線程安全的。
  • 解決1:增加Synchronized進(jìn)行線程同步。
  • 解決2:使用Reetrantent鎖進(jìn)行鎖定(lock、unlock處理)。
  • 解決3:AtomicInteger -> 使用Unsafe中的CAS -> CAS的ABA問(wèn)題。
http://www.risenshineclean.com/news/1475.html

相關(guān)文章:

  • 合肥網(wǎng)站建設(shè)設(shè)計(jì)海外免費(fèi)網(wǎng)站推廣
  • 特產(chǎn)網(wǎng)站開(kāi)發(fā)的好處怎么在百度發(fā)布信息
  • 松原做網(wǎng)站公司刷排名的軟件是什么
  • 網(wǎng)站流量如何提高網(wǎng)站友情鏈接購(gòu)買(mǎi)
  • 比較還做的調(diào)查網(wǎng)站google搜索首頁(yè)
  • 莆田 網(wǎng)站建設(shè)今日最新新聞重大事件
  • 成都食品網(wǎng)站開(kāi)發(fā)哈爾濱網(wǎng)站推廣
  • 怎么給購(gòu)物網(wǎng)站做推廣網(wǎng)站維護(hù)費(fèi)用
  • 北京哪家公司做網(wǎng)站好seo發(fā)貼軟件
  • 做新聞?lì)惥W(wǎng)站google搜索關(guān)鍵詞熱度
  • 網(wǎng)站用戶(hù)注冊(cè)怎么建新手做電商怎么起步
  • 網(wǎng)站網(wǎng)站設(shè)計(jì)公司互聯(lián)網(wǎng)平臺(tái)
  • 邯鄲做網(wǎng)站的十大免費(fèi)b2b網(wǎng)站
  • 工信部備案網(wǎng)站查網(wǎng)絡(luò)營(yíng)銷(xiāo)的目的是
  • 網(wǎng)站加友情鏈接的好處手機(jī)百度2020
  • 做盜版小說(shuō)網(wǎng)站能賺錢(qián)不百度經(jīng)驗(yàn)懸賞任務(wù)平臺(tái)
  • 網(wǎng)絡(luò)科技公司網(wǎng)站建設(shè)策劃百度搜索排名怎么收費(fèi)
  • wordpress部署seo怎么學(xué)在哪里學(xué)
  • 如何管理網(wǎng)站端口掃描站長(zhǎng)工具
  • 京東網(wǎng)站是自己做的嗎武漢百度信息流廣告
  • 東莞網(wǎng)站建設(shè)哪家好網(wǎng)站推廣的渠道有哪些
  • 做網(wǎng)站開(kāi)發(fā)工資怎樣google搜索關(guān)鍵詞
  • 網(wǎng)絡(luò)公司簡(jiǎn)介模板百度地圖優(yōu)化排名方法
  • 市場(chǎng)調(diào)研報(bào)告seo 推廣怎么做
  • 個(gè)人網(wǎng)站內(nèi)容有哪些內(nèi)容足球比賽直播
  • 網(wǎng)站建設(shè)需要多少網(wǎng)絡(luò)培訓(xùn)課程
  • 廣州的一起做網(wǎng)站seo關(guān)鍵詞排名優(yōu)化推薦
  • 免費(fèi)做兼職的網(wǎng)站有嗎優(yōu)化網(wǎng)站排名解析推廣
  • 網(wǎng)站怎么做移動(dòng)圖片東莞企業(yè)網(wǎng)站模板建站
  • 做房地產(chǎn)網(wǎng)站廣告銷(xiāo)售seo網(wǎng)站優(yōu)化培