国产情侣高清一区_午夜生活黄色录像毛片_亚洲精品视频在线观看99_久久艹这里只有精品_丰满的继坶3中文在线观看_日本免费电影一区二区_高清国产性色视频在线_亚洲成人日本成人_亚洲国产高清无码视频_免费夜里18款禁用直播

Java編程問(wèn)題

Java編程問(wèn)題

  • 作者
  • (羅)安赫爾·倫納德(Anghel Leonard) 著(zhù)

本書(shū)通過(guò)探討Java開(kāi)發(fā)工作中常會(huì )遇到的問(wèn)題及相關(guān)解決方案,介紹了涉及字符串、數字、數組、集合、數據結構、日期和時(shí)間、對象、不可變性、Switch表達式、類(lèi)型推斷、Java I/O、Java反射、函數式編程、并發(fā)、HTTP Client API和Websocket等方面的核心知識與實(shí)用技巧。 這些簡(jiǎn)單或復雜的問(wèn)題,將幫助你提升解決現實(shí)問(wèn)題的編程能力,使你了解相關(guān)問(wèn)題基于Java 8...


  • ¥149.00

ISBN: 978-7-122-44959-7

版次: 1

出版時(shí)間: 2024-07-01

圖書(shū)介紹

ISBN:978-7-122-44959-7

語(yǔ)種:漢文

開(kāi)本:16

出版時(shí)間:2024-07-01

裝幀:平

頁(yè)數:566

編輯推薦

JDK8-21版本快速迭代,即使僅關(guān)注LTS版,層出不窮的新特性也會(huì )令開(kāi)發(fā)人員應接不暇。尤其是國內眾多項目仍是基于JDK8、JDK11、JDK17開(kāi)發(fā)的,所以本書(shū)并不總是提倡新的解決方案,而是側重于主流版本JDK8和JDK11來(lái)呈現某個(gè)問(wèn)題的合理解決方案。 本書(shū)精心挑選269個(gè)Java開(kāi)發(fā)人員日常開(kāi)發(fā)中經(jīng)常需面對的難題,涉及字符串、數字、集合、數據結構、日期和時(shí)間、不可變性、類(lèi)型推斷Optional、Java I/O、Java反射、函數式編程、并發(fā)和HTTP Client和WebSocket等內容。 書(shū)中為這些問(wèn)題提供了解決思路與方案,這些寶貴的經(jīng)驗不僅能幫你實(shí)現更優(yōu)雅的解決方案,也有助于你更從容地面對Java面試與筆試。

圖書(shū)前言

JDK 8到12的版本快速迭代,使得現代Java的學(xué)習曲線(xiàn)變得陡峭,也增加了開(kāi)發(fā)人員進(jìn)入熟練編碼期的時(shí)間成本。然而,這些新的特性和概念,可以用來(lái)解決當下的許多問(wèn)題。本書(shū)將從復雜性、性能、可讀性等方面入手,通過(guò)解釋正確的實(shí)踐和決策,讓你能夠采用客觀(guān)的方法來(lái)解決常見(jiàn)問(wèn)題。
本書(shū)涵蓋了很多主題,如字符串、數字、數組、集合、數據結構、日期和時(shí)間、不可變性、類(lèi)型推斷、Optional、Java I/O、Java反射、函數式編程、并發(fā)和HTTP client API等,共包含1000+示例和300+應用程序。通過(guò)學(xué)習這些內容,你可以提高編程水平,豐富技能工具箱,順利完成各種日常任務(wù)。無(wú)論你的任務(wù)簡(jiǎn)單、中等還是復雜,掌握這些核心知識都是必要的。
閱讀本書(shū)后,你將深刻理解很多Java的概念,并能夠在面對開(kāi)發(fā)問(wèn)題時(shí),設計出最佳的解決方案。
本書(shū)適合誰(shuí)
本書(shū)對于初學(xué)者和中級Java開(kāi)發(fā)人員特別有用。同樣的,書(shū)中深入探討的問(wèn)題也是大部分Java開(kāi)發(fā)者在日常工作中可能會(huì )遇到的難題。
閱讀本書(shū)并不需要過(guò)多的技術(shù)背景,只需你熱愛(ài)Java,并且具備閱讀Java代碼片段的能力。
本書(shū)包含了什么內容
第1章,字符串、數字和數學(xué),我們將探討39個(gè)涉及字符串、數字和數學(xué)運算的問(wèn)題。首先,我們會(huì )研究一些經(jīng)典的字符串問(wèn)題,如統計重復項數量、反轉字符串以及刪除空格等。隨后,我們會(huì )深入探討數字和數學(xué)運算相關(guān)問(wèn)題,例如計算大數之和、處理運算溢出、比較無(wú)符號數,以及計算取整除和模數等。在解決這些問(wèn)題時(shí),我們不僅會(huì )提供多種方法,還將嘗試運用Java 8的函數式編程風(fēng)格。此外,我們還會(huì )討論一些與JDK 9、10、11和12版本相關(guān)的話(huà)題。
第2章,對象、不可變性和Switch表達式,包含18個(gè)涉及對象、不可變性和Switch表達式的問(wèn)題。本章從幾個(gè)處理空引用的問(wèn)題開(kāi)始,然后探討檢查索引、equals()和hashCode()以及不可變性(例如,編寫(xiě)不可變類(lèi),并在不可變類(lèi)中傳遞/返回可變對象)。本章的最后一部分涉及克隆對象和JDK 12的新版Switch表達式。到本章結束時(shí),你將基本了解對象和不可變性。此外,你還將知道如何處理新版的Switch表達式。這些知識對于任何Java開(kāi)發(fā)人員來(lái)說(shuō)都是寶貴且必不可少的。
第3章,處理日期和時(shí)間,我們將探討20個(gè)與日期和時(shí)間相關(guān)的問(wèn)題,包括轉換、格式化、加減、定義周期/持續時(shí)間、計算等方面。在此過(guò)程中,我們會(huì )用到Date、Calendar、LocalDate、LocalTime、LocalDateTime、ZonedDateTime、OffsetDateTime、OffsetTime和Instant等類(lèi)。通過(guò)本章的學(xué)習,你將能夠熟練掌握各種日期和時(shí)間操作,了解相關(guān)API,并能將這些知識整合應用到實(shí)際業(yè)務(wù)需求中。
第4章,類(lèi)型推斷,包含21個(gè)涉及JEP 286或Java局部變量類(lèi)型推斷(LVTI)的問(wèn)題,也稱(chēng)為var類(lèi)型。這些問(wèn)題經(jīng)過(guò)精心設計,以揭示使用var的最佳實(shí)踐和常見(jiàn)錯誤。到本章結束時(shí),你將全面了解var,以便在生產(chǎn)環(huán)境中應用它。
第5章,數組、集合和數據結構,我們將詳細討論與數組、集合和數據結構相關(guān)的30個(gè)問(wèn)題,并提供其解決方案。這些問(wèn)題涵蓋了眾多常見(jiàn)需求,如排序、檢索、比較、反轉、填充、合并、復制及替換等操作。所有的解決方案都是基于Java 8~12版本實(shí)現的。讀完本章后,你將構建起一套完善的知識體系,以便更有效地解決各類(lèi)與數組、集合和數據結構有關(guān)的問(wèn)題。
第6章,Java I/O路徑、文件、緩存、掃描和格式化,包括20個(gè)Java文件I/O相關(guān)的問(wèn)題。通過(guò)操作、輪詢(xún)、監聽(tīng)文件流路徑,以及介紹讀寫(xiě)文本文件/二進(jìn)制文件的有效方式,本章將涵蓋Java開(kāi)發(fā)者日??赡苡龅降慕^大多數I/O相關(guān)問(wèn)題。這些知識將為你解決相關(guān)問(wèn)題提供思路。
第7章,Java反射類(lèi)、接口、構造函數、方法和字段,包括17個(gè)Java反射API的相關(guān)問(wèn)題,從那些經(jīng)典問(wèn)題,如檢查和實(shí)例化Java artifact(模塊、包、類(lèi)、接口、超類(lèi)、構造函數、方法、注解、數組等),到JDK 11引入的合成構造函數和基于嵌套的訪(fǎng)問(wèn)控制,據此提供了對Java反射API的全面介紹??赐瓯菊潞?,Java反射API在你面前將再無(wú)任何秘密,你可以給你的同事秀下反射都可以做什么。
第8章,函數式編程:基礎與設計模式,包括11個(gè)和Java函數式編程相關(guān)的問(wèn)題。首先我們將從零開(kāi)始了解生成函數式接口的完整過(guò)程,然后還將使用函數式編程來(lái)解釋一套基于GoF的設計模式。
第9章,函數式編程:進(jìn)階,包括22個(gè)Java函數式編程的進(jìn)階問(wèn)題。在本章我們會(huì )重點(diǎn)關(guān)注流的經(jīng)典操作(如f?ilter和map)的相關(guān)問(wèn)題,并討論無(wú)限流、null-safe流和默認方法這些內容。本章還會(huì )涵蓋分組、分區、收集器(包括JDK 12的teeing()收集器和自定義收集器開(kāi)發(fā))這些內容。此外,我們也會(huì )針對takeWhile()、dropWhile()、組合函數、謂詞、比較器、Lambda表達式的驗證和調試等其他熱門(mén)問(wèn)題展開(kāi)討論。
第10章,并發(fā):線(xiàn)程池、Callable接口以及同步器,包含了涉及Java并發(fā)的14個(gè)問(wèn)題。我們從幾個(gè)涉及線(xiàn)程生命周期、對象和類(lèi)級別的鎖的基礎問(wèn)題開(kāi)始,然后討論關(guān)于Java線(xiàn)程池的一系列問(wèn)題,包含JDK 8實(shí)現的工作竊?。╳ork-stealing)線(xiàn)程池。之后,我們會(huì )花點(diǎn)精力研究Callable和Future。最后,我們將探究Java有關(guān)同步器的一些問(wèn)題【例如屏障(barrier)、信號量(semaphore)和交換器(exchanger)】。通過(guò)本章的學(xué)習,你應該可以熟悉Java并發(fā)的主要內容并準備好處理一些高級問(wèn)題了。
第11章,并發(fā):深入探討,包含13個(gè)Java并發(fā)相關(guān)問(wèn)題,涵蓋fork/join框架、CompletableFuture、ReentrantLock、ReentrantReadWriteLock、StampedLock、原子變量(atomic variables)、任務(wù)取消、可中斷方法、thread-local和死鎖(deadlock)等內容。并發(fā)性是每一位開(kāi)發(fā)人員的必修課,尤其在求職面試中頗受重視,這也是為什么上一章和本章如此重要的原因。完成本章閱讀后,你將對并發(fā)有相當的了解
第12章,Optional,包括24個(gè)問(wèn)題,旨在提示你注意使用Optional的幾條規則。
第13章,HTTP Client和WebSocket API,包括20個(gè)涵蓋HTTP Client和WebSocket API的相關(guān)問(wèn)題。還記得HttpUrlConnection嗎?JDK 11附帶的HTTP Client API可以認為是對HttpUrlConnection的重新發(fā)明。HTTP Client API易于使用并支持HTTP/2(默認)和HTTP/1.1。為了向后兼容,當服務(wù)器不支持HTTP/2時(shí),HTTP Client API會(huì )自動(dòng)從HTTP/2降級到HTTP 1.1。此外,HTTP Client API支持同步和異步編程模型,并依賴(lài)流來(lái)傳輸數據(響應式流)。它還支持WebSocket協(xié)議,該協(xié)議在實(shí)時(shí)Web應用程序中被使用,以提供具有低開(kāi)銷(xiāo)的客戶(hù)端-服務(wù)器通信。
如何從本書(shū)中獲得最大的收益
最好先掌握一些Java語(yǔ)言的基礎知識,建議安裝以下組件:
· 適合自己的IDE(非必須)。
· JDK 12和Maven 3.3.x。
· 必要時(shí),安裝一些額外的第三方庫。
下載示例代碼文件
你可以從https://***。
以下是下載代碼文件的詳細步驟:
1.在https://***。
2.選擇支持(Support)選項卡。
3.點(diǎn)擊代碼下載(Code Downloads)。
4.在搜索(Search)框中輸入書(shū)名,然后按照屏幕上的指示進(jìn)行操作。
下載文件后,請務(wù)必使用最新版本的軟件進(jìn)行解壓:
· 適用于Windows的WinRAR / 7-Zip。
· 適用于Mac的Zipeg / iZip / UnRarX。
· 適用于Linux的7-Zip / PeaZip。
本書(shū)的代碼包也托管在GitHub上,其網(wǎng)址為https://***
此外,Packt還提供了更多書(shū)籍資源,你可以在https://***
下載彩色圖像
本書(shū)還提供了書(shū)中所涉及圖片的PDF文件(彩色圖像)。你可以在這里下載:https://static.packt-***
書(shū)中的特殊文本格式說(shuō)明
CodeInText:表示文本中的代碼字、數據庫表名稱(chēng)、文件夾名稱(chēng)、文件名、文件擴展名、路徑名、虛擬URL、用戶(hù)輸入和Twitter句柄等。例如:“如果當前字符存在于Map實(shí)例中,那么只需將其出現次數加1?!?
書(shū)中代碼格式如下:
public Map countDuplicateCharacters(String str) {
 Map result = new HashMap<>();
 //或者使用for (char ch : str.toCharArray()) { ... }
 for (int i = 0; i < str.length(); i++) {
  char ch = str.charAt(i);
  ***pute(ch, (k, v) -> (v == null) ? 1 : ++v);
 }
 return result;
}
粗體:用于表示新的術(shù)語(yǔ)、重要的文本等。例如,菜單或對話(huà)框中出現的詞語(yǔ),在文本中呈現如下:“在Java中,邏輯AND運算符用&&表示,邏輯OR運算符用||表示,邏輯XOR運算符用^表示?!?
提示:提示和技巧以這種形式呈現。



譯者的話(huà)
關(guān)于本書(shū)
這是一本Java領(lǐng)域的重量級作品。盡管本書(shū)首版出版于2019年末,但時(shí)至今日,書(shū)中圍繞JDK 8~12的特性所展開(kāi)的探索與實(shí)踐,仍然值得眾多開(kāi)發(fā)者深入學(xué)習體會(huì )。
本書(shū)的特色在于,它不僅會(huì )告訴你該如何運用好Java這門(mén)語(yǔ)言,還會(huì )剖析一些常見(jiàn)的編程陷阱,幫助你規避一些開(kāi)發(fā)問(wèn)題,從而編寫(xiě)出更加高效和優(yōu)雅的程序。所以,無(wú)論是從頭到尾詳讀各章內容并主動(dòng)實(shí)踐,還是從感興趣的章節或具體問(wèn)題入手,你一定會(huì )從這200多個(gè)精心設計的問(wèn)題中獲得寶貴的經(jīng)驗。
關(guān)于我們
我們很榮幸能夠負責本書(shū)的翻譯工作。在翻譯分工方面,金嘉怡負責前后輔文及第1~5章,夏鈺輝負責第6~9章,黃堅負責第10~13章。在大家完成翻譯之后,金嘉怡負責通讀全文,完成校對與統稿,并盡量保證風(fēng)格和術(shù)語(yǔ)的統一。
形成初稿后,為了讓不同讀者群體都有良好的閱讀體驗,金嘉怡還邀請到了數十位審校成員,其中不乏多位具有8年、5年、3年以上工作經(jīng)驗的開(kāi)發(fā)者,以及剛畢業(yè)的計算機專(zhuān)業(yè)的朋友。大家的奉獻使得本書(shū)更趨完善,其中,經(jīng)驗豐富的從業(yè)者為內容的專(zhuān)業(yè)性提供了保障,而新手視角的建議,也讓各種復雜概念的表述更加通俗易懂。
參與審校的貢獻者分別是郭澤軒、韓西雅、侯旭、藍海珊、李琦敏、李永敬、劉瓊、龍翔、陸雙雙、沈曼、石一舟、譚文斌、王銘洋、王勝、王思未、王曉迪、魏黎、邢立文、熊梓潼、徐增昀、楊茜嵐、易玉、趙曉暉、周銀、朱子晟(按照姓名拼音排序)等。在此,誠摯感謝為本書(shū)無(wú)私付出的每一位貢獻者。
本書(shū)的翻譯工作歷時(shí)近一年,大家都犧牲了大量的個(gè)人時(shí)間,盡管我們已經(jīng)盡最大努力來(lái)給讀者呈現最好的效果,但由于水平有限,譯作中仍不可避免地存在一些疏漏及不足之處。期待大家提出寶貴的意見(jiàn),幫助我們不斷改進(jìn)。

金嘉怡 夏鈺輝 黃堅
2023年12月 

精彩書(shū)摘

本書(shū)通過(guò)探討Java開(kāi)發(fā)工作中常會(huì )遇到的問(wèn)題及相關(guān)解決方案,介紹了涉及字符串、數字、數組、集合、數據結構、日期和時(shí)間、對象、不可變性、Switch表達式、類(lèi)型推斷、Java I/O、Java反射、函數式編程、并發(fā)、HTTP Client API和Websocket等方面的核心知識與實(shí)用技巧。
這些簡(jiǎn)單或復雜的問(wèn)題,將幫助你提升解決現實(shí)問(wèn)題的編程能力,使你了解相關(guān)問(wèn)題基于Java 8~12的最佳實(shí)踐,同時(shí)還可以檢測你對相關(guān)技術(shù)的掌握程度。
本書(shū)可供初級和中級Java開(kāi)發(fā)人員參考,同樣也適合正為相關(guān)技術(shù)面試做準備的求職者閱讀。

目錄

第1章 字符串、數字和數學(xué)	1
問(wèn)題	1
解決方案	2
1.統計重復字符的數量	3
2.尋找第一個(gè)非重復字符	5
3.反轉字母和單詞	7
4.檢查字符串是否僅包含數字	7
5.統計元音和輔音的數量	8
6.統計某個(gè)特定字符的出現次數	10
7.將String轉換為int、long、float或double類(lèi)型	11
8.去除字符串中的空格	12
9.用分隔符連接多個(gè)字符串	12
10.生成全部排列組合	13
11.檢查字符串是否為回文	15
12.刪除重復的字符	16
13.刪除給定的字符	17
14.找到出現次數最多的字符	19
15.按長(cháng)度對字符串數組排序	20
16.檢查字符串是否包含子串	22
17.計算字符串中子串的出現次數	22
18.判斷兩個(gè)字符串是否互為變位詞	23
19.聲明多行字符串(文本塊)	24
20.重復拼接同一個(gè)字符串n次	25
21.刪除首尾空格	27
22.尋找最長(cháng)公共前綴	27
23.應用縮進(jìn)	28
24.字符串轉換	30
25.求最小值與最大值	30
26.求兩個(gè)大數之和(int/long)并處理運算溢出的情況	31
27.解析特定進(jìn)制下的無(wú)符號數	32
28.通過(guò)無(wú)符號轉換轉變數字	33
29.比較兩個(gè)無(wú)符號數	33
30.無(wú)符號數的除法和取模	34
31.判斷float/double是否為有限浮點(diǎn)數	34
32.對兩個(gè)布爾表達式執行邏輯AND / OR / XOR運算	35
33.將BigInteger轉換為基本類(lèi)型	36
34.將long類(lèi)型轉換為int類(lèi)型	37
35.計算取整除和模數	37
36.相鄰浮點(diǎn)數	38
37.求兩個(gè)大數的乘積(int/long)并處理運算溢出的情況	39
38.融合乘加(FMA)	40
39.緊湊數字格式化	41
小結	44

第2章 對象、不可變性和Switch表達式	45
問(wèn)題	45
解決方案	46
40.用函數式和命令式風(fēng)格的代碼檢查空引用	46
41.檢查空引用并拋出自定義的NullPointerException異常	48
42.檢查空引用并拋出指定的異常	50
43.檢查空引用并返回非空默認引用	51
44.檢查索引是否在【0, length)范圍內	52
45.檢查子區間是否在【0, length)范圍內	54
46. equals()和hashCode()	55
47.簡(jiǎn)述不可變對象	59
48.不可變字符串	59
49.編寫(xiě)一個(gè)不可變類(lèi)	62
50.在不可變類(lèi)中傳遞/返回可變對象	63
51.使用建造者模式編寫(xiě)不可變類(lèi)	65
52.避免在不可變對象中出現錯誤數據	68
53.克隆對象	69
54.重寫(xiě)toString()	73
55.新版Switch表達式	75
56.多個(gè)case標簽	77
57.語(yǔ)句塊	77
小結	78

第3章 處理日期和時(shí)間	79
問(wèn)題	79
解決方案	80
58.字符串與日期時(shí)間的轉換	80
59.格式化日期和時(shí)間	83
60.獲取當前日期/時(shí)間(不含時(shí)間/日期)	86
61.基于LocalDate和LocalTime構建LocalDateTime	86
62.通過(guò)Instant類(lèi)獲取機器時(shí)間	86
63.使用基于日期的值(Period)定義時(shí)間段;使用基于時(shí)間的值(Duration)表示一小段時(shí)間	89
64.提取日期和時(shí)間單位	93
65.加減日期時(shí)間	94
66.獲取所有時(shí)區的UTC和GMT	95
67.獲取所有可用時(shí)區的本地日期時(shí)間	96
68.顯示有關(guān)航班的日期時(shí)間信息	97
69.將Unix時(shí)間戳轉換為日期時(shí)間	99
70.查找某月的第一天/最后一天	99
71.定義/提取時(shí)區偏移	102
72.在Date和Temporal之間轉換	103
73.遍歷一段日期范圍	106
74.計算年齡	108
75.獲得一天的起始和結束時(shí)間	108
76.兩個(gè)日期之間的差異	111
77.實(shí)現一個(gè)國際象棋計時(shí)器	113
小結	116

第4章 類(lèi)型推斷	117
問(wèn)題	117
解決方案	118
78.簡(jiǎn)單的var示例	118
79.使用var與基本類(lèi)型	120
80.使用var和隱式類(lèi)型轉換來(lái)提高代碼的可維護性	121
81.顯式向下轉型(downcast)應避免使用var	122
82.在變量名沒(méi)有足夠的類(lèi)型信息保障可讀性時(shí)應避免使用var	123
83.結合LVTI和面向接口編程技術(shù)	124
84.結合LVTI和鉆石操作符	124
85.將數組賦值給var	125
86.在多變量聲明中使用LVTI	126
87. LVTI和變量作用域	127
88. LVTI和三元操作符	128
89. LVTI和for循環(huán)	129
90. LVTI和流	130
91.使用LVTI拆分嵌套/大型表達式鏈	130
92. LVTI和方法返回值及參數類(lèi)型	131
93. LVTI和匿名類(lèi)	132
94. LVTI可以是final變量或effectively final變量	132
95. LVTI和Lambda表達式	134
96. LVTI和空初始化器、實(shí)例變量以及catch塊變量	134
97. LVTI和泛型類(lèi)型	135
98. LVTI、通配符、協(xié)變和逆變	136
小結	138

第5章 數組、集合和數據結構	139
問(wèn)題	139
解決方案	140
99.對數組進(jìn)行排序	140
100.查找數組元素	149
101.檢查兩個(gè)數組是否相等或不匹配	153
102.按字典序比較兩個(gè)數組	156
103.用數組創(chuàng  )建流	158
104.計算數組的最小值、最大值和平均值	159
105.反轉數組	162
106.填充和設置數組	164
107.下一個(gè)更大的元素(NGE)	165
108.改變數組大小	166
109.創(chuàng  )建不可修改/不可變的集合	167
110.映射默認值	172
111.判斷Map中鍵是否存在或缺失	173
112.從Map中移除元素	177
113.替換Map條目	178
114.比較兩個(gè)Map 	179
115.對Map進(jìn)行排序	180
116.復制HashMap	182
117.合并兩個(gè)Map 	183
118.移除集合中所有符合謂詞條件的元素	184
119.將集合轉換為數組	186
120.使用列表篩選集合	187
121.替換列表元素	188
122.線(xiàn)程安全的集合、棧和隊列	189
123.廣度優(yōu)先搜索(BFS)	193
124.前綴樹(shù)(Trie)	195
125.元組(Tuple)	198
126.并查集	200
127.芬威克樹(shù)或二進(jìn)制索引樹(shù)	203
128.布隆過(guò)濾器	206
小結	209

第6章 Java I/O路徑、文件、緩存、掃描和格式化	210
問(wèn)題	210
解決方案	211
129.創(chuàng  )建文件路徑	211
130.變換文件路徑	214
131.拼接文件路徑	215
132.通過(guò)兩個(gè)路徑創(chuàng  )建相對路徑	216
133.比較文件路徑	217
134.輪詢(xún)路徑	218
135.監聽(tīng)路徑	225
136.流式獲取文件文本內容	228
137.在文件樹(shù)中搜索文件或文件夾	228
138.高效讀寫(xiě)文本文件	230
139.高效讀寫(xiě)二進(jìn)制文件	235
140.大文件搜索	239
141.將一個(gè)JSON/CSV文件作為一個(gè)對象讀取	241
142.處理臨時(shí)文件和文件夾	245
143.過(guò)濾文件	249
144.判斷兩個(gè)文件是否不匹配	252
145.循環(huán)字節緩沖區	254
146.標記解析文件	259
147.將格式化輸出直接寫(xiě)入文件	263
148.使用Scanner	265
小結	268

第7章 Java反射類(lèi)、接口、構造函數、方法和字段	269
問(wèn)題	269
解決方案	270
149.檢查包	270
150.檢查類(lèi)和超類(lèi)	273
151.通過(guò)反射構造函數實(shí)例化	279
152.獲取參數上的注解	282
153.獲取合成構造函數	283
154.檢查可變參數	284
155.檢查默認方法	285
156.通過(guò)反射實(shí)現基于嵌套的訪(fǎng)問(wèn)控制	285
157.面向getter和setter使用反射	288
158.反射與注解	294
159.調用實(shí)例方法	299
160.獲取靜態(tài)方法	300
161.獲取方法、字段和異常的泛型	301
162.獲取公共字段和私有字段	304
163.處理數組	305
164.檢查模塊	306
165.動(dòng)態(tài)代理	307
小結	310

第8章 函數式編程:基礎與設計模式	311
問(wèn)題	311
解決方案	311
166.編寫(xiě)函數式接口	312
167. Lambda簡(jiǎn)介	317
168.實(shí)現環(huán)繞執行模式	318
169.實(shí)現工廠(chǎng)模式	320
170.實(shí)現策略模式	322
171.實(shí)現模板方法模式	323
172.實(shí)現觀(guān)察者模式	325
173.實(shí)現貸出模式	327
174.實(shí)現裝飾器模式	329
175.實(shí)現級聯(lián)建造者模式	332
176.實(shí)現命令模式	333
小結	335

第9章 函數式編程:進(jìn)階	336
問(wèn)題	336
解決方案	337
177.測試高階函數	337
178.測試使用Lambda表達式的方法	338
179.調試Lambda表達式	340
180.過(guò)濾流中的非0元素	342
181.無(wú)限流、takeWhile()和dropWhile()	344
182.映射流中的元素	351
183.找出流中的元素	356
184.匹配流中元素	357
185.流中的sum、max和min操作	359
186.收集流的返回結果	362
187.連接流的返回結果	364
188.聚合收集器	365
189.分組(grouping)	369
190.分區(partitioning)	376
191. filtering、flattening和mapping收集器	379
192. teeing	382
193.編寫(xiě)自定義收集器	385
194.方法引用	389
195.并行處理流	391
196. null-safe流	395
197.組合方法、謂詞和比較器	397
198.默認方法	402
小結	403

第10章 并發(fā):線(xiàn)程池、Callable接口以及同步器	404
問(wèn)題	404
解決方案	405
199.線(xiàn)程生命周期狀態(tài)	405
200.對象級鎖與類(lèi)級鎖的對比	410
201. Java中的線(xiàn)程池	413
202.單線(xiàn)程的線(xiàn)程池	417
203.擁有固定線(xiàn)程數量的線(xiàn)程池	423
204.帶緩存和調度的線(xiàn)程池	424
205.工作竊?。╳ork-stealing)線(xiàn)程池	430
206. Callable和Future	435
207.調用多個(gè)Callable任務(wù)	440
208.鎖存器(latch)	442
209.屏障(barrier)	445
210.交換器(exchanger)	448
211.信號量(semaphore)	451
212.移相器(phaser)	453
小結	458

第11章 并發(fā):深入探討	459
問(wèn)題	459
解決方案	460
213.可中斷方法	460
214. fork/join框架	463
215. fork/join框架和compareAndSetForkJoinTaskTag()	469
216. CompletableFuture	472
217.組合多個(gè)CompletableFuture實(shí)例	486
218.優(yōu)化忙等待	490
219.任務(wù)的取消	491
220.線(xiàn)程局部存儲(ThreadLocal)	492
221.原子變量	496
222.可重入鎖(ReentrantLock)	500
223.可重入讀寫(xiě)鎖(ReentrantReadWriteLock)	503
224.郵戳鎖(StampedLock)	505
225.死鎖(哲學(xué)家就餐問(wèn)題)	508
小結	511

第12章 Optional	512
問(wèn)題	512
解決方案	513
226.初始化Optional	513
227. Optional.get()和值丟失	514
228.返回一個(gè)預先構造的默認值	514
229.返回一個(gè)不存在的默認值	515
230.拋出NoSuchElementException異常	516
231. Optional和null引用	517
232.消費一個(gè)存在內容的Optional類(lèi)	518
233.根據情況返回一個(gè)給定的Optional類(lèi)(或另一個(gè)Optional類(lèi))	519
234.通過(guò)orElseFoo()鏈接多個(gè)Lambda表達式	519
235.不要只是為了獲取一個(gè)值而使用Optional	521
236.不要將Optional用于字段	521
237.不要將Optional用于構造函數的參數	522
238.不要將Optional用于setter類(lèi)方法的參數	523
239.不要將Optional用于方法的參數	524
240.不要將Optional用于返回空的或者null的集合或數組	526
241.避免在集合中使用Optional	527
242.將of()和ofNullable()搞混淆	528
243. Optional與OptionalInt	529
244.確定Optional的相等性	529
245.通過(guò)map()和flatMap()轉換值	530
246.通過(guò)Optional.filter()過(guò)濾值	532
247.鏈接Optional和Stream API	532
248. Optional和識別敏感類(lèi)操作	534
249.在Optional的內容為空時(shí)返回布爾值	535
小結	535

第13章 HTTP Client和WebSocket API	536
問(wèn)題	536
解決方案	537
250. HTTP/2	537
251.觸發(fā)一次異步GET請求	538
252.設置一個(gè)代理	540
253.設置/獲取請求頭	540
254.指定HTTP方式	542
255.設置請求體	543
256.設置連接身份認證	545
257.設置請求超時(shí)	546
258.設置重定向策略	546
259.發(fā)送同步和異步請求	547
260.處理cookie	549
261.獲取響應信息	550
262.處理響應的請求體類(lèi)型	550
263.獲取、更新和保存JSON	552
264.壓縮	555
265.處理表單數據	556
266.下載資源	557
267.使用multipart上傳	558
268. HTTP/2的服務(wù)器端推送	561
269. WebSocket	564
小結	566

發(fā)送電子郵件聯(lián)系我們