讀Java實戰(第二版)筆記19_尾聲

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

1. Scala 1.1. 混合了面向對象和函數式編程的語言 1.2. 直接使用任何一個Java類庫 1.3. 聲明非遞歸的方法時,不需要顯式地返回類型 1.3.1. 會自動地替你推斷生成一個 1.4. 字元串插值 1.4.1. 在字元串的字面量中內嵌變數和表達式 1.5. 以使用val關鍵字替換v ...


1. Scala

1.1. 混合了面向對象和函數式編程的語言

1.2. 直接使用任何一個Java類庫

1.3. 聲明非遞歸的方法時,不需要顯式地返回類型

1.3.1. 會自動地替你推斷生成一個

1.4. 字元串插值

1.4.1. 在字元串的字面量中內嵌變數和表達式

1.5. 以使用val關鍵字替換var

1.5.1. 關鍵字val表明變數是只讀的,並由此不能被賦值

1.5.2. 關鍵字var表明變數是可以讀寫的

1.6. 集合

1.6.1. 在預設情況下都是不可變的

1.6.2. 預設都是持久化的

1.6.3. 並未強制你使用不可變集合,它只是讓你能更輕鬆地在你的代碼中應用不可變原則

1.6.4. scala.collection.mutable包中也包含了集合的可變版本

1.6.5. 不可修改集合僅僅是對可變集合進行了一層封裝

1.6.6. 不可變(immutable)集合確保了該集合在任何時候都不會發生變化,無論有多少個變數同時指向它

1.6.7. 下劃線是一種占位符

1.7. 元組

1.7.1. 元組字面量

1.7.2. 通過存取器(accessor)_1、_2(從1開始的一個序列)訪問元組中的元素

1.8. Stream

1.8.1. 可以記錄它曾經計算出的值,所以之前的元素可以隨時進行訪問

1.8.2. 需要存儲這些額外的屬性

1.8.2.1. Scala版本的Stream記憶體的使用效率變低了

1.8.2.2. 需要在記憶體“記錄下來”(即進行緩存)

1.9. Option

1.9.1. 應該儘量地用它替代null,避免發生空指針異常

1.10. 函數

1.10.1. 函數類型

1.10.1.1. 一種符號,表示了在函數介面中聲明的抽象方法的簽名

1.10.1.2. 一種語法糖

1.10.2. 能夠讀寫非本地變數的匿名函數

1.10.2.1. Java中的Lambda表達式無法對非本地變數進行寫操作

1.10.3. 對柯里化的支持

1.10.3.1. 可以將一個接受多個參數的函數拆分成一系列接受部分參數的函數

1.10.3.2. 使用語法糖調用apply方法

1.10.4. 閉包是一個函數實例,它可以不受限制地訪問該函數的非本地變數

1.11. 

1.11.1. 構造器、getter方法以及setter方法都能隱式地生成

1.12. trait

1.12.1. 有助於抽象對象的特性

1.12.1.1. 一種同時包含了欄位和預設方法的介面

1.12.1.2. 為實現Java中的介面而設計的替代品

1.12.2. 可以定義抽象方法

1.12.3. 可以定義帶有預設實現的方法

1.12.4. 支持Java中介面那樣的多繼承

1.12.5. 對狀態的多繼承

1.12.5.1. java不可以

1.13. 對尾部調用進行了優化

2. 未來

2.1. 聲明處型變

2.1.1. declaration-site variance

2.2. 模式匹配

2.2.1. 傳統面向對象的設計不推薦大家使用switch,它更推崇使用設計模式,比如訪問者模式,依賴數據類型的控制流是由方法分發器而不是switch語句選擇的

2.2.2. 函數式程式設計語言來說,基於數據類型的模式匹配通常是設計程式最便捷的方式

2.3. 具化泛型

2.3.1. reified generic

2.3.2. 泛型多態的消除模式

2.3.2.1. erasure model of generic polymorphism

2.3.3. 泛型多態的具化模式

2.3.3.1. reified model of generic polymorphism

2.4. 基本類型特化和泛型

2.5. 對不變性的更深層支持

2.5.1. 值類型

2.5.1.1. 由於沒有引用特征,因此占用的存儲空間更少

2.5.2. 值對象

2.5.2.1. 既非基本類型又非對象類型

3. 回顧

3.1. 行為參數化(Lambda以及方法引用)

3.2. 

3.2.1. 數據集越大,減少遍曆數據集的次數就越重要

3.3. CompletableFuture

3.3.1. 以函數式程式設計的方式對Future的通用模式進行細粒度的控制,幫助你避免採用命令式編程時常見的模板代碼

3.3.2. 提供了thenCompose、thenCombine和allOf這樣的操作

3.4. Optional

3.5. Flow API

3.5.1. Java 9對反應式流進行了標準化

3.5.2. 基於拉模式的反應式背壓協議能避免慢速消費者被一個或多個快速生產者壓垮

3.6. 預設方法

3.7. Java 9的模塊系統

3.7.1. Java 9對後向相容性的損害也是最大的

3.7.2. 不採用模塊系統

3.7.2.1. 惡意代碼可能直接訪問你模塊的關鍵部分,直接繞開它所有的安全檢查

3.7.2.2. 無法避免暴露運行於同一環境中安全相關的方法

3.7.3. 優勢

3.7.3.1. 可靠的配置

3.7.3.1.1. 顯式聲明模塊的依賴性,錯誤可以在很早的時候,就藉由編譯檢測到

3.7.3.2. 嚴格的封裝

3.7.3.2.1. 對模塊的公有訪問、每個模塊的訪問邊界以及內部實現進行區分

3.7.3.3. 改進的安全性

3.7.3.4. 更好的性能

3.7.3.4.1. 一個類只能被有限的組件訪問
3.7.3.4.2. 不是任何類都能在運行時載入它

3.7.3.5. 擴展性

3.7.3.5.1. 將Java SE平臺解構成更細粒度的組成部分
3.7.3.5.2. 只執行運行你的應用所需要的特性

3.8. Java 10的局部變數類型推斷

3.8.1. 如果類型只有唯一的標識符,那麼採用類型推斷能帶來很多好處,其中最主要的優勢之一是,當用一種類型替換另一種類型後,不用重新編輯修改代碼了


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

-Advertisement-
Play Games
更多相關文章
  • 全局組件 微信小程式組件關係中,父組件使用子組件需要在父組件index.json中引入子組件,然後在父組件頁面中使用,這種組件的對應狀態是一對一的,一個組件對應一個頁面。如果有一個全局彈窗(登錄),那麼每個頁面引入一次組件會非常麻煩,這裡就需要封裝全局彈窗,在頁面直接引入使用即可。 微信小程式提供全 ...
  • Object(對象) for in 遍歷出對象可枚舉的"屬性",包含繼承的可枚舉屬性 var person = { name: '小明', birth: 1990, height: 1.70 }; for(var x in person){ console.log(x); console.log(p ...
  • 前言 JavaScript 原型是該語言中一個非常重要的概念。理解原型是理解 JavaScript 的關鍵。在本篇技術博客中,我們將深入探討 JavaScript 的原型概念,並介紹常用的操作對象原型的方法。(歡迎點評,歡迎指正!) 什麼是原型? 在 JavaScript 中,每個對象都有一個原型( ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 npm 是 node 捆綁的依賴管理器,常用程度可想而知。那麼你每天都在 npm/yarn run 的命令到底是如何運行項目的呢? 前端項目中運行 npm run xxx 的時候發生了什麼?大家都知道目前的 node 是捆綁 npm 的。 ...
  • 一、常規 在 JavaScript 中,apply、call、bind 是三個與函數調用相關的方法,它們都允許你在調用函數時手動設置函數的上下文(即 this 指向)。 1、apply 方法:apply 方法允許你調用一個函數,並且手動設置函數的上下文(即 this 指向)以及傳遞一個參數數組。其語 ...
  • 本文是系列第三篇。系列文章: 現代圖片性能優化及體驗優化指南 - 圖片類型及 Picture 標簽的使用 現代圖片性能優化及體驗優化指南 - 響應式圖片方案 圖片資源,在我們的業務中可謂是占據了非常大頭的一環,尤其是其對帶寬的消耗是十分巨大的。 對圖片的性能優化及體驗優化在今天就顯得尤為重要。本文, ...
  • 一、直接在 el-table-column 外嵌套 el-form 符合表單的校驗習慣,唯一需要註意的地方 el-form 需要綁定 :model="scope.row" // html <div id="app"> <el-table :data="list" border> <el-table- ...
  • 架構的核心是管理複雜度,架構師的核心能力是抽象能力,什麼是抽象能力?抽象能力就是一種化繁為簡的能力。何為化繁為簡?就是把一種複雜的事情變得簡單的能力,比如通過打比喻讓別人很容易聽明白你說的意思就是一種抽象能力。如何鍛煉抽象能力?我覺得有三種方法,第一種是用歸納法找共性,從多個問題中找到共同的問題提煉... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...