讀Java實戰(第二版)筆記11_語言特性和類庫更新

来源:https://www.cnblogs.com/lying7/archive/2023/02/16/17122328.html
-Advertisement-
Play Games

所謂線程就是操作系統(OS)能夠進行運算調度的最小單位,是一個基本的CPU執行單元,也是執行程式流的最小單元。能夠提高OS的併發性能,減小程式在併發執行時所付出的時空開銷。線程是進程的一個實體,是被系統獨立調度和分派的基本單位。 ...


1. 註解

1.1. 一種使用附加信息裝飾程式元素的機制

1.2. Java 8之前,只有聲明可以被註解

1.3. 一種語法元數據(syntactic metadata)

1.4. 可以用於文檔編製

1.4.1. @Deprecated註解被廣泛應用於說明某個方法不再推薦使用

1.5. 依據註解檢測錯誤

1.6. 依據註解禁止報警輸出

1.7. 依據註解能生成代碼

2. 重覆註解

2.1. 老版的Java禁止對同一個聲明使用多個同類的註解

2.1.1. 聲明一個新的註解,它包含了你希望重覆的註解數組

2.2. 一個註解在設計之初就是可重覆的,那麼你可以直接使用它

2.2.1. 將註解標記為@Repeatable

2.2.2. 提供一個註解的容器

        @Repeatable(Authors.class)
        @interface Author { String name(); }
        @interface Authors {
            Author[] value();
        }

3. 類型註解

3.1. 應用於任何類型

3.1.1. new操作符

3.1.2. 類型轉換

3.1.3. instanceof檢查

3.1.4. 泛型類型參數

3.1.5. implements子句

3.1.6. 和throws子句

3.2. Checker框架

3.2.1. 定義了多種類型註解

3.2.2. 增強類型檢查

3.2.3. checkerframework.org

4. 通用目標類型推斷

4.1. 目標類型包括向方法傳遞的參數

4.2. 對泛型參數的推斷進行了增強

4.2.1. 可以推斷泛型參數的類型

5. Map

5.1. getOrDefault

5.1.1. 替換現在檢測Map中是否包含給定鍵映射的慣用方法

5.1.2. 不存在這樣的鍵映射,你可以提供一個預設值,方法會返回該預設值

5.2. computeIfAbsent

5.2.1. 非常方便地使用緩存模式

6. 集合

6.1. removeIf

6.1.1. 移除集合中滿足某個謂詞的所有元素

6.2. Stream API中的filter方法

6.2.1. 產生一個新的流,不會對當前作為數據源的流做任何變更

7. 列表

7.1. replaceAll

7.1.1. 對列表中的每一個元素執行特定的操作,並用處理的結果替換該元素

7.2. Stream中的map方法

7.2.1. 會生成新的元素

8. Collections類

8.1. NavigableMap

8.2. NavigableSet

8.3. checkedQueue

8.3.1. 返回一個隊列視圖,可以擴展進行動態類型檢查

9. Comparator介面

9.1. reversed

9.1.1. 對當前的Comparator對象進行逆序排序,並返回排序之後新的Comparator對象

9.2. thenComparing

9.2.1. 當兩個對象相同時,返回使用另一個Comparator進行比較的Comparator對象

9.3. thenComparingInt

9.4. thenComparingDouble

9.5. thenComparingLong

9.6. 針對基本數據類型

9.6.1. ToIntFunction

9.6.2. ToDoubleFunction

9.6.3. ToLongFunction

9.7. 實例方法

9.8. comparingInt

9.9. comparingDouble

9.10. comparingLong

9.11. 針對基本數據類型

9.11.1. ToIntFunction

9.11.2. ToDoubleFunction

9.11.3. ToLongFunction

9.12. naturalOrder

9.12.1. 對Comparable對象進行自然排序,返回一個Comparator對象

9.13. nullsFirst、nullsLast

9.13.1. 對空對象和非空對象進行比較,你可以指定空對象(null)比非空對象(non-null)小或者比非空對象大,返回值是一個Comparator對象

9.14. reverseOrder

9.14.1. 和naturalOrder().reversed()方法類似

9.15. 靜態方法

10. 原子操作

10.1. java.util.concurrent.atomic包

10.2. getAndUpdate

10.2.1. 以原子方式用給定的方法更新當前值,並返回變更之前的值

10.3. updateAndGet

10.3.1. 以原子方式用給定的方法更新當前值,並返回變更之後的值

10.4. getAndAccumulate

10.4.1. 以原子方式用給定的方法對當前及給定的值進行更新,並返回變更之前的值

10.5. accumulateAndGet

10.5.1. 以原子方式用給定的方法對當前及給定的值進行更新,並返回變更之前的值

10.6. Adder

10.6.1. 儘量避免使用它們對應的原子類型

10.6.2. 支持加法操

10.6.3. LongAdder

10.6.4. DoubleAdder

10.7. Accumulator

10.7.1. 儘量避免使用它們對應的原子類型

10.7.2. 可以使用給定的方法整合多個值

10.7.3. LongAccumulator

10.7.4. DoubleAccumulator

11. ConcurrentHashMap

11.1. 允許併發地進行新增和更新操作

11.2. forEach

11.2.1. 對每個鍵值對進行特定的操作

11.3. reduce

11.3.1. 使用給定的精簡函數(reduction function),將所有的鍵值對整合出一個結果

11.4. search

11.4.1. 對每一個鍵值對執行一個函數,直到函數的返回值為一個非空值

11.5. 使用鍵和值的操作

11.5.1. forEach

11.5.2. reduce

11.5.3. search

11.6. 使用鍵的操作

11.6.1. forEachKey

11.6.2. reduceKeys

11.6.3. searchKeys

11.7. 使用值的操作

11.7.1. forEachValue

11.7.2. reduceValues

11.7.3. searchValues

11.8. 使用Map.Entry對象的操作

11.8.1. forEachEntry

11.8.2. reduceEntries

11.8.3. searchEntries

11.9. 不會對ConcurrentHashMap的狀態上鎖

11.9.1. 只會在運行過程中對元素進行操作

11.9.2. 應用到這些操作上的函數不應該對任何的順序,或者其他對象,抑或在計算過程發生變化的值,有依賴

11.10. mappingCount

11.10.1. 以長整型long返回map中映射的數目

11.10.2. 儘量使用這個新方法

11.10.2.1. 映射的數量可能是int無法表示的

11.11. KeySet

11.11.1. 以Set的形式返回ConcurrentHashMap的一個視圖(對map的修改會反映在該Set中,反之亦然)

11.12. newKeySet

11.12.1. 由ConcurrentHashMap創建一個Set

12. Arrays

12.1. parallelSort

12.1.1. 以併發的方式對指定的數組進行排序

12.1.2. 可以使用自然順序

12.1.3. 可以為數組對象定義特別的Comparator

12.2. setAll和parallelSetAll

12.2.1. 以順序的方式也可以用併發的方式,使用提供的函數計算每一個元素的值,對指定數組中的所有元素進行設置

12.2.2. parallelSetAll需要併發執行,因此提供的函數必須沒有任何副作用

12.3. parallelPrefix

12.3.1. 以併發的方式,利用用戶提供的二進位操作符對給定數組中的每個元素進行累積計算

13. Number

13.1. Short、Integer、Long、Float和Double類

13.1.1. 靜態方法sum、min和max

13.2. Integer和Long類

13.2.1. compareUnsigned、divideUnsigned、remainderUnsigned和toUnsignedString方法來處理無符號數

13.2.2. 靜態方法parseUnsignedInt和parseUnsigned-Long將字元解析為無符號int或者long類型

13.2.3. Integer類提供了靜態方法toUnsignedLong

13.3. Byte和Short類

13.3.1. toUnsignedInt和toUnsignedLong方法通過無符號轉換將參數轉化為int或者long類型

13.4. Double和Float類

13.4.1. 靜態方法isFinite,可以檢查參數是否為有限浮點數

13.5. Boolean類

13.5.1. 靜態方法logicalAnd、logicalOr和logicalXor,可以在兩個boolean之間執行and、or和xor操作

13.5.2. byteValueExact、shortValueExact、intValueExact和longValueExact,可以將BigInteger類型的值轉換為對應的基礎類型

14. Math

14.1. 使用int和long參數的addExact、subtractExact、multipleExact、incrementExact、decrementExact和negateExact

14.1.1. 新的方法可以拋出算術異常

14.2. 靜態方法toIntExact

14.2.1. 可以將long值轉換為int值

14.3. 靜態方法floorMod、floorDiv和nextDown

15. Files

15.1. 可以用文件直接產生流

15.2. 靜態方法Files.lines

15.2.1. 以延遲方式讀取文件的內容,並將其作為一個流

15.3. Files.list

15.3.1. 生成由指定目錄中所有條目構成的Stream‹Path›

15.3.2. 不是遞歸包含的

15.3.3. 處理包含內容非常龐大的目錄時,這個方法非常有用

15.4. Files.walk

15.4.1. 生成包含給定目錄中所有條目的Stream‹Path›

15.4.2. 是遞歸的

15.4.3. 可以設定遞歸的深度

15.4.4. 遍歷是依照深度優先進行的

15.5. Files.find

15.5.1. 通過遞歸地遍歷一個目錄找到符合條件的條目,並生成一個Stream‹Path›對象

16. Reflection

16.1. java.lang.reflect.Parameter類

16.1.1. 查詢方法參數的名稱和修飾符

16.2. java.lang.reflect.Executable類

16.2.1. 通用函數和構造函數共用的父類

17. String

17.1. join

17.1.1. 用一個分隔符將多個字元串連接起來


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文地址:我的稀土掘金 介紹:defineAsyncComponent 用於拆分應用為更小的塊,並僅在需要時再從伺服器載入相關組件 官網案例 <script setup> import { defineAsyncComponent } from 'vue' const AdminPage = def ...
  • 直接上重點。 如果是定位不准,Web瀏覽器端, 1,要使用者必須要做個人認證或者企業認證,且通過審核。 2,請求的網頁必須是https協議。 3,請求的功能變數名稱必須是加入到應用的Referer白名單。進入到應用設置里查看。 4,申請的應用類型必須是瀏覽器端。且必須勾選對應的服務。 有時申請地圖服務的人和 ...
  • ?. 和 ?? 是 JavaScript 中的兩個新操作符,分別是可選鏈操作符(optional chaining operator)和空值合併操作符(nullish coalescing operator)。 ?. 操作符 ?. 可選鏈操作符用於訪問可能為空或未定義的屬性或方法,它允許我們安全地訪 ...
  • 問題復現: 正常狀態下: 切換到其他頁面再切換回來: 問題解決: 其實這個問題的解決方式官網寫得清清楚楚,我們看看官網怎麼解決的: 接下來我用代碼解釋下這句話(正確的做法是,在圖表容器被銷毀之後,調用 echartsInstance.dispose 銷毀實例,在圖表容器重新被添加後再次調用 echa ...
  • 本文內容主要彙總如何在 Three.js 創建的 3D 世界中添加物理效果,使其更加真實。所謂物理效果指的是對象會有重力,它們可以相互碰撞,施加力之後可以移動,而且通過鉸鏈和滑塊還可以在移動過程中在對象上施加約束。 通過本文的閱讀,你將學習到如何使用 Cannon.js 在 Three.js 中創建... ...
  • <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ...
  • 公司去年對 CDN 資源伺服器進行了遷移,由原來的通過 FTP 方式的文件存儲改為了使用 S3 協議上傳的對象存儲,部門內 @柴俊堃 同學開發了一個命令行腳本工具 RapidTrans(睿傳),使用睿傳可以很方便將本地目錄下的資源上傳到 S3 中。 睿傳運行時接收兩個主要參數,一個為待上傳的本地路... ...
  • 有時,我們經常會在資料庫伺服器上做一些定時備份的工作,最常用的方法就是寫個sh腳本,然後配置/etc/crontab定時策略即可,但它有缺點,我總結如下: 腳本基本相同,代碼需要在每個數據伺服器上部署 由於代碼是分佈的,並且是個代碼,所以管理不清晰,不直觀 控制不統一,你需要在每個伺服器的/etc/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...