JavaSE高級-02

文章目錄

  • 1. 多線程
    • 1.1 創建線程的三種方式
      • 多線程的創建方式一:繼承Thread類
      • 多線程的創建方式二:實現Runnable接口
      • 多線程的創建方式三:實現Callable接口
      • 三種線程的創建方式對比
      • Thread的常用方法
    • 1.2 線程安全
      • 線程同步
      • 方式一:同步代碼塊
      • 方式二:同步方法
      • 方式三:lock鎖
    • 1.3 線程池
      • 什么是線程池
      • 創建線程池
        • 方式一:通過ThreadPoolExecutor創建線程池
          • 1. 處理Runnable任務
          • 2. 處理Callable任務
        • 方式二:通過Executors創建線程池
    • 1.4 并發、并行
  • 2. 網絡編程
    • 2.1 IP地址
    • 2.2 端口
    • 2.3 通信協議
      • UDP協議
      • TCP協議
      • BS架構的原理
  • 3. 幾個重要的類
    • 3.1 時間相關的獲取方案
    • 3.2 字符串的高效操作方案
    • 3.3 BigDecimal
  • 4. 單元測試
  • 5. 反射
    • 5.1 反射獲取Class對象
    • 5.2 反射獲取類中的成分并操作
    • 5.3 反射的基本作用
  • 6. 注解
    • 6.1 自定義注解
    • 6.2 元注解
    • 6.3 注解的解析(反射)
  • 7. 動態代理

1. 多線程

線程(Thread)是一個程序內部的一條執行流程。
程序中如果只有一條執行流程,那這個程序就是單線程的程序。

1.1 創建線程的三種方式

多線程的創建方式一:繼承Thread類

在這里插入圖片描述

多線程的創建方式二:實現Runnable接口

在這里插入圖片描述
在這里插入圖片描述

多線程的創建方式三:實現Callable接口

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

三種線程的創建方式對比

在這里插入圖片描述

Thread的常用方法

在這里插入圖片描述

1.2 線程安全

多個線程,同時操作同一個共享資源的時候,可能會出現業務安全問題。在這里插入圖片描述

線程同步

線程同步是線程安全問題的解決方案。
核心思想:讓多個線程先后依次訪問共享資源,這樣就可以避免出現線程安全問題。
常見方案加鎖。即每次只允許一個線程加鎖,加鎖后才能進入訪問,訪問完畢后自動解鎖,然后其他線程才能再加鎖進來。

方式一:同步代碼塊

在這里插入圖片描述
在這里插入圖片描述

方式二:同步方法

在這里插入圖片描述
在這里插入圖片描述

方式三:lock鎖

在這里插入圖片描述
在這里插入圖片描述

1.3 線程池

什么是線程池

在這里插入圖片描述

創建線程池

在這里插入圖片描述

方式一:通過ThreadPoolExecutor創建線程池

在這里插入圖片描述
ExecutorService的常用方法
在這里插入圖片描述
線程池的注意事項
在這里插入圖片描述

1. 處理Runnable任務

在這里插入圖片描述

2. 處理Callable任務

在這里插入圖片描述

方式二:通過Executors創建線程池

在這里插入圖片描述
Executors使用可能存在的陷阱
在這里插入圖片描述
在這里插入圖片描述

1.4 并發、并行

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2. 網絡編程

基本的通信架構
基本的通信架構有2種形式:CS架構( Client客戶端/Server服務端 )、BS架構(Browser瀏覽器/Server服務端)。

Java提供了哪些網絡編程解決方案?
java.net.*包下提供了網絡編程的解決方案。

網絡編程三要素:IP、端口、協議

2.1 IP地址

在這里插入圖片描述
在這里插入圖片描述
IP域名
在這里插入圖片描述
DNS域名解析
在這里插入圖片描述
公網IP、內網IP
在這里插入圖片描述
InetAddress類
在這里插入圖片描述

2.2 端口

用來標記標記正在計算機設備上運行的應用程序,被規定為一個 16 位的二進制,范圍是 0~65535。
在這里插入圖片描述

2.3 通信協議

開放式網絡互聯標準:OSI網絡參考模型
在這里插入圖片描述
傳輸層的2個通信協議
在這里插入圖片描述

UDP協議

在這里插入圖片描述UDP通信的實現
在這里插入圖片描述
在這里插入圖片描述

TCP協議

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
TCP通信的實現
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

BS架構的原理

在這里插入圖片描述在這里插入圖片描述
每次請求都開一個新線程,到底好不好?
高并發時,容易宕機!解決辦法:使用線程池優化。

3. 幾個重要的類

3.1 時間相關的獲取方案

在這里插入圖片描述
在這里插入圖片描述

3.2 字符串的高效操作方案

在這里插入圖片描述
StringBuilder
在這里插入圖片描述

3.3 BigDecimal

用于解決浮點型運算時,出現結果失真的問題。

BigDecimal的常見構造器、常用方法
在這里插入圖片描述

4. 單元測試

單元測試就是針對最小的功能單元:方法,編寫測試代碼對其進行正確性測試。

Junit單元測試框架
可以用來對方法進行測試,它是第三方公司開源出來的(很多開發工具已經集成了Junit框架,比如IDEA)
在這里插入圖片描述
Junit單元測試的使用步驟
在這里插入圖片描述

5. 反射

反射就是:加載類,并允許以編程的方式解剖類中的各種成分(成員變量、方法、構造器等)。

5.1 反射獲取Class對象

在這里插入圖片描述

5.2 反射獲取類中的成分并操作

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5.3 反射的基本作用

在這里插入圖片描述

6. 注解

在這里插入圖片描述

6.1 自定義注解

在這里插入圖片描述
注解的原理
在這里插入圖片描述
注解的作用
在這里插入圖片描述

6.2 元注解

指的是:注解注解的注解。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

6.3 注解的解析(反射)

在這里插入圖片描述

7. 動態代理

如何為Java對象創建一個代理對象?
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93632.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93632.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93632.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從舒適度提升到能耗降低再到安全保障,樓宇自控作用關鍵

在現代建筑的發展歷程中,樓宇自動化控制系統(BAS)已從單純的設備管理工具演變為集舒適度優化、能耗控制與安全保障于一體的核心技術。隨著物聯網和人工智能的深度應用,樓宇自控系統正以數據為紐帶,重構人與建筑的關系。…

圖像分類精度評價的方法——誤差矩陣、總體精度、用戶精度、生產者精度、Kappa 系數

本文詳細介紹 “圖像分類精度評價的方法”。 圖像分類后,需要評估分類結果的準確性,以判斷分類器的性能和結果的可靠性。 常涉及到下面幾個概念(指標) 誤差矩陣、總體精度、用戶精度、生產者精度和 Kappa 系數。1. 誤差矩陣&#…

【科普向-第一篇】數字鑰匙生態全景:手機廠商、車廠與協議之爭

目錄 一、協議標準之爭:誰制定規則,誰掌控入口 1.1 ICCE:中國車企主導的自主防線 1.2 ICCOA:手機廠商的生態突圍 1.3 CCC:國際巨頭的高端壁壘 1.4 協議對比 二、底層技術路線:成本與安全的博弈 2.1B…

dockerfile及docker常用操作

1: docker 編寫 Dockerfile 是用于構建 Docker 鏡像的文本文件,包含一系列指令和參數,用于定義鏡像的構建過程 以下是關鍵要點: 一、基本結構 ?FROM?:必須作為第一條指令,指定基礎鏡像(如 FROM python:3.…

[vibe coding-lovable]lovable是不是ai界的復制忍者卡卡西?

在火影忍者的世界里,卡卡西也被稱為復制忍者,因為大部分忍術都可以被其Copy! 截圖提示:實現這個效果 -> 發給Lovalbe -> 生成的的效果如下,雖然不是1比1還原,但是這個效果也很驚艷。 這個交互設計,這個UI效果&am…

技術賦能安全:智慧工地構建城市建設新防線

城市建設的熱潮中,工地安全始終是關乎生命與發展的核心議題。江西新余火災等事故的沉痛教訓,暴露了傳統工地監管的諸多短板——流動焊機“行蹤難覓”,無證動火作業屢禁不止,每一次監管缺位都可能引發災難性后果。如今,…

Sublime Text 代碼編輯器(Mac中文)

原文地址:Sublime Text Mac 代碼編輯器 sublime text Mac一款輕量級的文本編輯器,擁有豐富的功能和插件。 它支持多種編程語言,包括C、Java、Python、Ruby等,可以幫助程序員快速編寫代碼。 Sublime Text的界面簡潔、美觀&#…

如何制定項目時間線,合理預計?

制定一份現實可行且行之有效的項目時間線,是一個系統性的分解、估算與排序過程,而非簡單的日期羅列。核心步驟包括:明確項目范圍與可交付成果、利用工作分解結構(WBS)進行任務拆解、科學估算各項任務的持續時間、識別并…

RSA詳解

一、RSA 簡介RSA 是一種公鑰密碼體制,由羅納德?李維斯特(Ron Rivest)、阿迪?薩莫爾(Adi Shamir)和倫納德?阿德曼(Leonard Adleman)于 1977 年提出,算法名稱由他們三人姓氏的首字母…

Linux獲取物理硬盤總容量

獲取物理硬盤總容量: 1.查看單個硬盤: 使用 lsblk 或 fdisk -l (需要 sudo) 命令。它們會直接列出物理硬盤 (sda, nvme0n1 等) 和它們的分區,并顯示硬盤的總物理容量。 abcd四塊物理盤,只掛載使用3塊,留一塊未使用 最常見的原因通常是配置了熱備盤(RAID 1/5/6/10 等冗余…

STM32學習筆記14-I2C硬件控制

I2C外設簡介STM32內部集成了硬件I2C收發電路(硬件收發器:自動生產波形,自動翻轉電平等),可以由硬件自動執行時鐘生成、起始終止條件生成、應答位收發、數據收發等功能,減輕CPU的負擔——軟件只需要寫入控制…

電子電氣架構 --- 軟件開發數字化轉型

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

我國空間站首次應用專業領域 AI大模型

據中國載人航天工程辦公室消息,北京時間2025年8月15日22時47分,經過約6.5小時的出艙活動,神舟二十號乘組航天員陳冬、陳中瑞、王杰密切協同,在空間站機械臂和地面科研人員的配合支持下,圓滿完成既定任務,出…

WPF真入門教程35--手搓WPF出真汁【蜀味正道CS版】

1、項目介紹 本項目采用多層架構設計,使用wpf,Panuon.UI.Silver控件庫,AduSkin皮膚,MVVM等技術開發具有復雜交互和視覺效果的CS應用程序。WPF適用于企業級桌面應用:如ERP、CRM系統,需復雜表單和報表。WPF適…

JMeter與大模型融合應用之構建AI智能體:評審性能測試腳本

JMeter與大模型融合應用之構建AI智能體:評審性能測試腳本 一、引言 隨著DevOps和持續測試的普及,性能測試已成為軟件開發生命周期中不可或缺的環節。Apache JMeter作為最流行的開源性能測試工具之一,被廣泛應用于各種性能測試場景。然而&…

K8s 和 Docker的區別

一、各自誕生背景——為什么需要兩個東西Docker(2013,Docker Inc.) ? 目的:解決“我的代碼在你機器跑不起來”的經典環境問題。 ? 做法:用 Linux 內核的 cgroup/namespace 做輕量隔離,把“應用 依賴”打…

10.0 UML的介紹以及VisualStudio中查看類圖

本文介紹UML圖的含義、以及如何在VisualStudio中查看類圖。 一、UML圖介紹 UML(Unified Modeling Language,統一建模語言)是一種標準化的建模語言,用于可視化、規范、構建和記錄軟件系統的各個方面的圖表工具。 UML圖分為結構圖和行為圖兩大類: 結構圖?…

【Virtual Globe 渲染技術筆記】6 著色

著色(Shading) 曲面細分只是地球渲染的第一步。接下來是著色——通過模擬光線與材質的相互作用,計算每個像素的最終顏色。本節先回顧基礎的光照與紋理映射,再講解虛擬地球特有的經緯網格和夜景燈光效果。6.1 光照(Ligh…

OpenCV Python——圖像拼接(一)(圖像拼接原理、基礎知識、單應性矩陣 + 圖像變換 + 拼接)

1 圖像拼接基礎知識1.1 特征匹配 原理及代碼示例1.2 單應性矩陣 原理及代碼示例2 圖像拼接(一)(直接拼接)3 圖像拼接(二)(單應性矩陣 圖像變換 拼接)3.1 單應性矩陣函數3.2 拼接函…

Git 中切換到指定 tag

在 Git 中切換到指定 tag(比如 v1.22.1)的正確做法如下:1?? 查看已有的 taggit tag會列出所有可用的版本,比如:v1.21.0 v1.22.0 v1.22.1 v1.23.02?? 切換到指定 taggit checkout tags/v1.22.1 -b v1.22.1解釋&…