操作系統進程與線程核心知識全覽

本博客,根據王道所學。以下為第二章節知識點:


進程的概念、組成、狀態與其轉換、進程間通信、信號;

單/多線程模型、線程管理、調度時機的切換、調度的目標、調度算法、多處理機調度;

同步與互斥、進程互斥的軟硬件實現方法、信號亮機制、生產者-單/多消費者、管程、死鎖及其衍生問題;

?

在博客末尾,附有學習日記

知識總覽(進程的概念、組成、特點):

進程的組成--PCB

理解:

詳細:

在操作系統中,PSW(Program Status Word,程序狀態字)是用于存儲當前程序執行狀態信息的專用寄存器或存儲區域,是 CPU 硬件的重要組成部分。它記錄了程序運行時的關鍵狀態,以便 CPU 在執行指令時快速獲取和更新相關信息,同時支持操作系統對程序執行進行控制和管理。

具體如:狀態切花時的state、進位標志,溢出標志....

進程的組成--程序段、數據段

程序是如何運行的:

1、

2、

進程的組成

進程的特征:(5大特征)

知識總覽(2.1.3_進程的狀態與轉換):

進程的狀態--創建態、就緒態

進程的狀態--運行態

進程的狀態--阻塞態

進程的狀態--終止態

進程狀態的轉化

熟稱丁字褲。

進程的狀態

進程的組織--鏈接方式

進程的組織--索引方式

(一般主要用鏈接方式,索引方式不是那么重要)

知識回顧與重要考點

進程的組織

知識總覽(進程的狀態):

本章節,更多是理解性內容,背下來倒是沒多大必要啦,但是讀懂,還是很重要。

什么是進程:

如何實現進程控制?
1、

2、

如何實現原語的“原子性”?

這種特權指令,若允許用戶程序使用的呢,那么隨便執行一個作業(執行一個進程),附一個關中斷指令的buf,不到結尾停不下來,那還要操作系統干嘛。

進程控制相關的原語
創建

終止

阻塞和喚醒

程序是如何運行的:
1、
運行圖:

2、

PSW是程序狀態字,用于存放程序的運行狀態和標志位。PSW是計算機系統的核心部件——運算器的一部分,用來存放兩類信息:一類是體現當前指令執行結果的各種狀態信息,稱為狀態標志,如有無進位(CF位),有無溢出(OF位),結果正負(SF位),結果是否為零(ZF位),奇偶標志位(PF位)等;另一類是存放控制信息,稱為控制狀態,如允許中斷 (IF位),跟蹤標志(TF位),方向標志 (DF)等。操作系統將程序運行時的一組動態信息匯集在一起,稱為程序狀態字PSW,并放在處理器的一組特殊寄存器里,以方便系統的控制和管理。?

進程控制相關的原語:

知識點回顧:

作業和進程的關系就像你 “讓電腦幫忙做一件事” 和 “電腦實際派工人干活” 的關系

拓展:
作業:

進程

作業與進程的關系:

知識總覽(進程通信):

什么是進程通信:

為什么進程通信需要操作系統的支持:

就像你的手機里,下載了一個陌生軟件。

如果隨意能讀取其他進程的信息,你的私人信息隨隨便便就能暴露,那不就炸了嗎。

進程存儲分為3部分(共享存儲、消息傳遞、管道通信)

共享存儲:

具體細節:

消息傳遞
直接通信:

間接通信:

管道通信:

1、

很像:channel / 循環隊列(先進先出)

2、

總結:

王道書_糾正:

知識總覽(信號)

信號的作用:

拓展:

就是一個包

實現原理
信號的發送與保存

信號的處理(When)

信號的處理(how)
按照缺省(默認) 處理 / 用戶自定義

疑難點

各個進程的信號處理有何區別?

每個進程可以自定義不同的信號。不同進程、對同一類型,進行不同自定義處理

信號與異常有什么關系?

信號與異常時配套關系,單獨的內核態處理不了一些異常,可通過向用戶態發出信號,配合處理。(拓展)

重點回顧:

信號,通常用于通知進程某個特定事件已經發生了

知識點(線程、多線程模型)

知識總覽(線程):

其實就是為了更好的利用硬件資源,在同等時間內,并發處理更多事情

什么是線程,為什么要引入線程?

增加并發量。

讓進程變成了最小的資源分配單位,在進程內的線程才是最小的處理機調度單位

舉一個簡單的例子:引入進程之后,你只能在傳輸文件之后,才能發消息。消息發送完畢之后你才能干其他。

1、

2、

3、

引入線程機制后,有什么變化?

線程的屬性

其實線程與進程各個方面及其相似 (TCB內存著大秘密哦)

知識總覽(多線程模型):

線程的實現方式
1、

早期是通過線程庫實現的。

最簡單的并行是通過while()循環實現。

2、

線程的實現方式1:

線程的管理工作誰來做?切換線程時是否需要cpu變態?操作系統是否能意識到線程是個啥?

(一對一)線程的實現方式2:

線程的管理工作由誰來完成?線程的切換是否需要cpu變態?

操作系統是否能意識到內核級線程的存在?這種線程的實現方式有什么優點和缺點?

多線程模型(一對一)

優點:不怕阻塞

缺點:一個進程占據的內核級線程太多

多線程模型(多對一)

這個和沒有加內核級線程的模式,沒啥區別啊,多此一舉。

多線程模型(多對多)

知識回顧與重要考點

知識總覽(線程管理)

線程的狀態與轉換

與進程很像(就緒、運行、阻塞)

進程的組織與控制

知識大綱(處理機調度):

調度的基本概念:

調度的意思是,操作系統對調度開個口,就是對一堆要做的任務排個先后序。

高級調度:

對作業排個序

中級調度:

中級調度是通過掛起(內存調度)(內存與外存的關系)

低級調度:

就是cpu分配給那個進程的調度時間

補充知識:

就緒、運行、阻塞三態,都是存在內存中的。內存不夠了,就會掉到硬盤那里。

三層調度的聯系、對比:

只是頻率的對比

知識回顧與重要考點

知識總覽(進程調度的時機切換與過程調度方式)

進程調度的時機

進程調度就是低級調度(什么時機,那個上cpu)

進程調度的時機

這個涉及臨界區資源(資源)與臨界區(調用資源的靜態代碼)

進程調度的方式

非剝奪、與剝奪兩種

進程的切換與過程

區區一個進程調度,還分為“狹義”與“廣義“。

“廣義” 就是 選擇一個進程 并且 切換一個進程。

且進程的切換是有代價的。花時間與資源調度(規定 一般時間比不會超過總花費時間的1%)

知識回顧與重要考點

知識總覽(調度目標-調度算法的評價指標)

CPU利用率

忙碌時間 / 總時間

系統吞吐量

作業總數 / 總共花了多長時間

周轉時間

完成作業,花了多長時間

等待時間

等待處理機的時間

響應時間

從首次提交 到 首次響應

總:

知識總覽(調度算法)

先來先服務(fcfs)

非搶占式,如queue,對長作業有利,對短作業不利

短作業優先(SJF):
非搶占式:

搶占式:

短作業優先

高相應比算法(HRRN):
由來:

詳細:

就是結合了fcfs與sjf兩者的優點。

知識重點回顧:

知識總覽(調度算法)

時間片輪轉(RR)

相當與建立了一個隊列,先來的那個直接插在隊首。

非常之公平,但是時間片太長的話,會退化成fcfs

優點是,盡可能讓每個進程得到響應

優先級調度算法

優先級調度算法,是搶占式的,根據優先數確定順序

多級反饋隊列
思考:

詳細:

結合FCFS 與 RR(時間片輪轉),加上多級隊列,完美結合。

適用于交互系統。(RR可以讓進程得到及時響應)

知識總覽:

單處理機調度vs多處理機調度

負載均衡、處理機親和性

方案一:公共就緒隊列

方案二、私有就緒隊列

知識回顧與重要考點

知識總覽(同步與互斥的基本概念):

同步?互斥?

什么是進程同步:

與進程異步相對應的,就是同步。

通過管道,告訴我們,制約關系-->導致同步

什么是進程互斥:

就是多個進程 同時看中一份 不能同時共享的資源。需要互斥使用。

具體(進程互斥):

原則:

1、空閑讓進

2、忙則等待

3、有限等待

4、讓權等待

知識回顧:

知識總覽(互斥-軟件實現方法)

如果沒有進程互斥?

必然導致資源運用混亂

單標志法:

這個是固定的按照 你一次,我一次的方法運用的。

所以會導致“空閑等待”的問題

雙標志法:

當p0執行完1后,時間片到了,又執行了p1的5

會導致空閑讓進、有限等待

后檢查法:

先檢查法:

Peterson算法

除了,讓全等待,其他都已完成。

就是你讓我,我讓你,誰最后讓,誰最后讓對方做。(孔融讓梨)

知識回顧:

知識總覽(硬件)

一、中斷屏蔽方法(禁用中斷)大白話解釋:

好比你在圖書館寫作業,為了不被打擾,你直接把圖書館的門鈴拆了(禁用所有人的進出)。這樣一來,沒人能打斷你,但副作用是緊急情況(如著火)也無法通知你。

優點:
  • 簡單粗暴:直接不讓任何中斷發生,保證你的代碼(臨界區)執行時不會被打擾。
  • 絕對有效:在單核 CPU 中,禁用中斷后,CPU 不會切換到其他任務,你的代碼可以獨占資源。
缺點:
  • 危險:如果長時間禁用中斷,系統可能無法響應緊急事件(如硬件故障、用戶按鍵),導致系統崩潰。
  • 不公平:其他任務可能因此餓死(無法獲得 CPU 時間)。
  • 多核失效:現代 CPU 通常多核并行,禁用一個核的中斷對其他核無效,無法阻止其他核訪問共享資源。
  • 不適用于用戶程序:只有操作系統內核能禁用中斷,普通程序無權操作。
適用場景:
  • 操作系統內核中極短時間的關鍵操作(如修改系統全局變量)。
  • 單核系統中對實時性要求極高的代碼。

二、TestAndSet(TSL 指令)大白話解釋:

好比你去公共廁所,門上有個 “有人 / 無人” 的牌子。你每次進門前先看牌子:

  • 如果是 “無人”,你馬上翻成 “有人”,然后進去鎖門。
  • 如果是 “有人”,你就等著,等里面的人出來把牌子翻回 “無人”。

優點:

  • 原子性:檢查和設置牌子的動作是一體的(不可分割),不會出現兩個人同時看到 “無人” 而沖突的情況。
  • 適用性廣:適用于多核 CPU,所有核都能通過這個指令競爭資源。
  • 實現簡單:硬件直接支持(如 x86 架構的?LOCK TSL?指令)。

缺點:

  • 忙等待(自旋鎖):沒搶到資源的線程會一直循環檢查牌子,浪費 CPU 時間(好比你盯著廁所門一直等,啥也不干)。
  • 優先級反轉:如果低優先級的線程持有鎖,高優先級線程會一直等待,導致低優先級任務反而先執行。
  • 公平性差:可能導致某些線程長期搶不到鎖(饑餓)。

適用場景:

  • 鎖持有時間很短的場景(如緩存行的更新)。
  • 多核系統中對性能要求極高的代碼。

三、Swap 方法(交換指令)大白話解釋:

還是公共廁所的例子,但這次規則變了:你進門時必須和門上的牌子交換狀態。

  • 如果牌子是 “無人”,你把自己的 “有人” 牌子和它交換,然后進去鎖門。
  • 如果牌子是 “有人”,你把自己的 “無人” 牌子和它交換,發現對方是 “有人”,就繼續等。
優點:
  • 原子性:交換操作是原子的,不會出現沖突。
  • 與 TSL 類似:同樣適用于多核 CPU,實現簡單。
缺點:
  • 同樣的忙等待問題:沒搶到鎖的線程會一直循環交換,浪費 CPU。
  • 可能更差的緩存效率:頻繁交換會導致緩存失效,性能不如 TSL。
適用場景:
  • 與 TSL 類似,但某些硬件架構可能更適合用 Swap 指令(如早期的 ARM 架構)。

對比總結

方法

優點

缺點

適用場景

中斷屏蔽

簡單、單核有效

危險、多核無效

內核短時間關鍵操作

TestAndSet

多核支持、原子性

忙等待、公平性差

短時間鎖、多核高性能場景

Swap

多核支持、原子性

忙等待、緩存效率低

特定硬件架構(如早期 ARM)

補充說明:

現代操作系統通常結合多種方法(如用 TSL 實現基礎鎖,再用條件變量解決長等待問題),以平衡性能和公平性。

知識點(互斥鎖)

進程互斥:鎖

咱們的這個鎖呢,只有一把。通過acquire()獲取 與 release()釋放。

知識總綱(信號量機制)

信號量機制:

大概就是說了一下wait()與signal()。他們也等于P(S)、V(S) -荷蘭語變成的呢。

信號量機制(整形信號量)

字如其意,通過一個變量表示。

整形信號量會導致 “讓權等待” 無法完成。

信號量機制(記錄型信號量)
詳解:

記錄型信號量,通過一個記錄型數據結構表示(包含資源數的變量 與 等待隊列)

應用:

知識回顧與重要考點

知識總覽(互斥、同步、前驅關系)

經過我的學習,互斥呢就是,通過P()、V()進行鎖操作

前驅關系是為了解決同步問題。(上一個進程(前驅) 釋放了某一個某種資源,本進程才能開始)

信號量機制實現進程互斥

一個簡單的互斥實現

信號量機制實現進程同步

簡單的進程同步的,示意圖。(不用看圖片啦,聽我說:就是暫停一個進程,去等待另一個進程釋放資源),看圖2更合適。

1、

2、

信號量實現前驅關系

知識回顧與重要考點

很有趣。

進程互斥是先P后V。

進程同步是先V后P。

知識大綱(生產者-消費者問題)

問題分析:

就是一個簡單的對緩沖區的 生產、讀寫 操作。

如何實現:

如何實現,對緩沖區互斥的進行生產與消費。

思考:能否改變相鄰P、V操作的順序?

改變P、V操作后,可能會導致死鎖。

知識回顧與重要考點

基于semaphore(記錄型信號量)實現的full(非空閑緩沖區)、empty(空閑緩沖區),與mutex。

知識大綱(生產者-多消費者問題)

問題描述

只有一個緩存區,肯定不夠吶。

如何實現

知識回顧與重要考點

知識大綱(讀者-寫者問題)

就是對一個和緩存區or文件。讀-寫進程操作 / 讀-讀 / 寫 - 讀 / 寫-寫

分析-找思路-做題

如何實現:

為了保證寫優先

知識回顧與重要考點

知識大綱(哲學家進餐)

有n個人、n根筷子。

防止死鎖的方法:

1、最多同時允許有4個人拿起筷子。

2、在1的基礎上,奇數拿左邊的筷子,偶數拿右邊的

知識回顧與重要考點

哲學家最重要的問題,就是不死鎖就行,其他都好

知識大綱(管程)

為什么要引入管程

引入管程的目的就是簡化設計流程---信號量機制麻煩、易錯。如下:

管程的定義和基本特征

1、一個共享數據結構

2、對數操作的一組過程(函數)

3、可初始化

拓展1:用管程解4決生產者消費者問題

通過用類代碼形式、幫助理解。

拓展2:Java中類似于管程的機制

知識回顧與重要考點
基本特征:

1、進程/線程 只能通過管程提供的特定入口才能訪問

2、每次 僅能允許一個進程在管程內 執行某一個內部過程(類似調用函數)

知識大綱(死鎖的概念)

什么是死鎖?
1、

2、

死鎖、饑餓、死循環的區別

共同點:都是進程 走不下去了

不同點:

死鎖:拿不到繼續走下去的資源

饑餓:拿不到cpu使用權,被涼了很久

死循環:bug 或者 刻意設計的

死鎖產生的必要條件:

四大條件:互斥、不可剝奪、請求和保持、循環等待

什么時候會發生

死鎖的處理策略

防范于未然:(1.預防死鎖、2.避免死鎖)

緊急處理:(死鎖檢測與解除)

知識回顧與重要考點

知識大綱(預防死鎖產生)

破壞互斥條件:

就是將互斥的條件設計成共享資源。但是存在局限性

破壞不可剝奪條件

設置成強行剝奪,但是可能會造成過多的資源消耗。

破壞請求和保持

等收集到所有需要的資源后(標記而不占用),再開始。

破壞循環等待

通過為資源標序號,各個進程按順序取。

知識回顧與重要考點

知識大綱(避免死鎖)

什么是安全序列

引出銀行家算法

安全、不安全序列、死鎖的聯系

銀行家算法
1、

2、

3、

具體:

知識回顧與重要考點

1、檢測申請得最大數

2、檢查此時系統剩余的可用資源是否還能滿足這次請求

3、試探著分配,更改各數據結構

4、用安全性算法檢查此次分配是否會導致系統進入不安全狀態。

知識大綱(死鎖的檢測和解除)

就倆(檢測/解除)

死鎖的檢測

就是用一種數據結構而已(不斷簡化、簡化、簡化。直到死鎖or到達最簡)

死鎖定理

就是對這種行為,起了個名字而已

死鎖的解除

1、資源剝奪

2、撤銷

3、進程回退

知識回顧于重要考點

(檢測

(數據結構:資源分配圖,算法:死鎖檢測算法)+解除(3大種)


借鑒:

1、王道操作系統


學習日記:?

6.9(周一)休息+有課
學習了進程的管理,進程的通信,
整理了進程的組成、轉換等知識點
學習了虛擬機,對特權/非特權指令,內核態,用戶態,虛擬機有了更清晰的認知。
一道算法題整了一半
6.10(周二)學習了線程管理,創建
在一個人做項目時,最好前后端都能看懂,才能更好的做下去
學校考試而已
6.11(周三)
分享會,玉龍學長分享的很清晰
最近快考試了,課有點多
6.12(周四)
前端作品,復習完畢
答辯結束,結果還不錯。
書在讀、算法刷的有點少
6.13(周五)復習了線程的管理、組織、信號、多線程模型
處理機的高級、中級、低級調度。并整理至筆記
學習了線程的調度算法(先來先服務、最優調度...
書有讀、那道算法終于拿下,以后數組排序類的題,還是要將下標標注下來
6.14(周六)四級考試結局
學習了操作系統,進程調度的6中算法
fcfs、cc、sjf、短作業優先、優先級調度算法、多級調度隊列
何為進程同步/互斥
還好
6.15(周日)學習了進程互斥的單/雙標記法、Peterson算法。
了解硬件方面的中斷屏蔽、TLS、Swap。
學習了信號量機制的,鎖-(整型 / 記錄型型號)
算法相比上一周,有一點點進步
學習了鎖互斥理論、了解同步與前驅的相互依存
生產者與消費者通過緩存區交流數據
很OK
6.16(周一)多個消費者從緩存區中取資源,為讀者-寫者問題打基礎
復習哲學家進餐問題--專門用于解決死鎖問題。
初步了解管道-為了簡化編程設計與步驟
上午知識點已總結
管程的發明就是為了簡化設計
死鎖有四種原因造成,有三大類方法去避免(預防/避免/檢測和死鎖)
其中,預防的是破壞那四種形成條件
避免是通過銀行家算法避免
簡書互評已完成
6.17(周二)雜事,已經處理完畢
死鎖的檢測 和 解除,
運用了資源分配圖與死鎖檢測算法
解除共有三種方式:強行剝奪、回退、撤銷
學習內存基礎、了解了指令。學習裝入(靜態裝入、動態裝入、重定位裝入)
與鏈接(與裝入類似)的三種方法。
并在內存管理中學習了內存分配(下方三種)、地址轉換、內存保護
并且還了解,地址分配是由第一地址分配、固定地址分配、動態分配)三種分配
其中動態分配可由四個算法實現:
首次適應算法(綜合性最好)、最佳適應算法(從小到大、需排序)、最壞適應算法(從大到小、需排序)、鄰近適用算法(鏈表)
其中在學習,分頁式儲存管理時,學習到了:
頁、頁框、頁框號....
....

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

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

相關文章

C++中類型轉換操作符知識介紹

文章目錄 **一、類型轉換操作符的語法與定義****二、工作原理****三、示例:基本類型轉換****四、示例:轉換為自定義類型****五、與構造函數的對比****六、注意事項****七、應用場景****八、與 C 其他類型轉換的關系****九、總結** 在C中,類型…

2048小游戲C++板來啦!

個人主頁:PingdiGuo_guo 收錄專欄:C干貨專欄 大家好呀,我是PingdiGuo_guo,今天我們來學習如何用C編寫一個2048小游戲。 文章目錄 1.2048的規則 2.步驟實現 2.1: 初始化游戲界面 2.1.1知識點 2.1.2: 創建游戲界面 2.2: 隨機…

TensorFlow深度學習實戰——Transformer變體模型

TensorFlow深度學習實戰——Transformer變體模型 0. 前言1. BERT2. GPT-23. GPT-34. Reformer5. BigBird6. Transformer-XL7. XLNet8. RoBERTa9. ALBERT10. StructBERT11. T5 和 MUM12. ELECTRA13. DeBERTa14. 進化 Transformer 和 MEENA15. LaMDA16. Switch Transformer17. RE…

還原自動駕駛的“前世今生”:用 Python 實現數據記錄與回放系統

還原自動駕駛的“前世今生”:用 Python 實現數據記錄與回放系統 你有沒有想過這樣一個場景: 一輛自動駕駛測試車,在街頭拐了個彎,卻突然急剎。測試員一臉懵,研發團隊問:“數據記錄了嗎?” 他攤攤手:“系統當時沒掛上錄制……” 對不起,重測吧。 這不是段子,而是我在…

access和excel用vba進行輔助辦公軟件開發

1、access用vba創建子窗口child查詢 出現這個報錯的時候,一般是用vba通過ado.connection連接,沒有綁定數據源造成的: 先綁定再使用 Me.Child2.SourceObject "表.資產管理" 連接數據源 Me.Child2.Form.RecordSource strSql …

Nginx+tomcat集群

Nginxtomcat集群 一、Nginx 簡介 1.1 定義 Nginx 是一個高性能的 HTTP 和反向代理 web 服務器,同時支持 IMAP/POP3/SMTP 服務。由俄羅斯工程師伊戈爾?賽索耶夫開發,于 2004 年首次公開發布,基于 BSD-like 協議,代碼開源且免費…

RPC - 客戶端注冊和發現模塊

registryMethod 函數詳解: 函數目的 registryMethod 是 Provider 類的核心方法,用于向服務注冊中心注冊服務。注冊成功后,服務注冊中心會更新內部的服務映射表,建立服務名稱到提供者地址的映射關系。 執行流程示例 場景: 多米…

leetcode332.重新安排行程:優先隊列與DFS實現歐拉路徑的行程規劃

一、題目深度解析與行程規劃本質 題目描述 給定一個機票的字符串二維數組 tickets,每個元素是 [from, to] 的形式,表示從 from 到 to 的機票。要求找出從 JFK 出發的行程,且必須使用所有機票,若存在多種可能的行程,返…

1.21SQLCipher 簡介

SQLCipher 是一個基于 SQLite 的擴展,提供了透明的數據庫加密功能。與普通 SQLite 不同,SQLCipher 在數據寫入磁盤前自動加密,讀取時自動解密,無需開發者手動處理加密邏輯。這使得它非常適合移動應用、桌面應用等需要本地數據加密…

無人機不再“盲飛”!用Python搞定實時目標識別與跟蹤

友友們好! 我是Echo_Wish,我的的新專欄《Python進階》以及《Python!實戰!》正式啟動啦!這是專為那些渴望提升Python技能的朋友們量身打造的專欄,無論你是已經有一定基礎的開發者,還是希望深入挖掘Python潛力的愛好者,這里都將是你不可錯過的寶藏。 在這個專欄中,你將會…

Vue-7-前端框架Vue之應用基礎從Vue2語法到Vue3語法的演變

文章目錄 1 基于vite創建1.1 對比webpack和vite1.2 創建工程1.3 啟動項目2 調試工具Vue.js Devtools3 src結構3.1 index.html3.2 main.ts3.3 App.vue(根組件)4 示例(Vue2的語法)4.1 Person.vue4.2 App.vue4.3 選項式API對比組合式API4.4 程序流程5 示例(Vue3的語法)5.1 setup概…

上線iOSApp前抓包工具協作保障接口行為一致性(iOS抓包)

項目上線前,你是否總會擔心“接口是不是在某個邊緣條件下表現不一致”?哪怕單元測試通過、接口文檔齊全,真到線上用戶手上,總還是可能出現一些環境相關的異常。 最近參與某App大版本上線前的質量驗證流程,我們特別安排…

Java可變參數:靈活編程的秘密武器

Java可變參數的理解與應用 Java中的可變參數(Varargs)允許方法接受數量不定的同類型參數,簡化了方法調用時的參數傳遞。可變參數通過在參數類型后添加...實現,本質上是一個數組,但在調用時可以傳入多個單獨的參數。 …

汽車 CDC威脅分析與風險評估

汽車 CDC(連續阻尼控制系統)的威脅分析與風險評估需結合其技術特性、應用場景及行業標準展開。以下是詳細解析及實例說明: 一、CDC 系統技術原理與結構 CDC(Continuous Damping Control)通過實時調節懸掛阻尼力提升駕…

TensorFlow 安裝與 GPU 驅動兼容(h800)

環境說明TensorFlow 安裝與 GPU 驅動兼容CUDA/H800 特殊注意事項PyCharm 和終端環境變量設置方法測試 GPU 是否可用的 Python 腳本 # 使用 TensorFlow 2.13 在 NVIDIA H800 上啟用 GPU 加速完整指南在使用 TensorFlow 進行深度學習訓練時,充分利用 GPU 能力至關重要…

Laravel 項目中圖片上傳后無法訪問的問題

情況: Laravel 提供了 php artisan storage:link 命令,用于創建符號鏈接(Symbolic Link),將 storage/app/public 映射到 public/storage。但是上傳圖片之后 文件目錄確實有 但是無法訪問。 1. 刪除已經創建的 rm -rf…

Tesollo攜人形機器人手進軍國內市場

Tesollo靈巧手是Tesollo公司研發的一系列機器人靈巧手產品,涵蓋兩指到五指的設計 產品型號與特點 Delto-5F五指靈巧手:具備20個自由度,每個手指配備4個獨立關節,抓握力達到7公斤,每個關節空載可達75轉/分鐘&#xff0…

Python文件操作的“保險箱”:with語句深度實戰指南

目錄 一、with語句的底層運作原理 資源獲取階段 資源釋放階段 二、文件操作實戰場景解析 場景1:基礎文件讀寫 場景2:異常處理進階 場景3:復合資源管理 三、自定義上下文管理器 四、with語句的性能考量 五、實戰經驗總結 在Python編程中,文件操作是日常開發的高頻…

openKylin高校沙龍 | 走進成都高校,推動開源技術交流與人才培養

openKylin高校沙龍 | 成都高校 4月25日,CCF開源發展委員會“開源高校行”暨紅山開源openKylin高校行成都站圓滿舉辦,這場連接兩所大學的開源知識盛會,為成都信息工程大學與電子科技大學的300余名與會師生帶來了前沿的行業思考與技術實踐。Op…

即夢3.0更新后市面上的的評價如何?

設計師緊握數位板縮在墻角,全息投影中的AI正在生成同風格設計圖,地面倒影顯示“人類設計師生涯倒計時”。當最新一代AI繪圖工具悄然開啟測試時,設計圈陷入集體震動——有人驚嘆“以后還干XX,都回家賣煎餅吧”,也有人徹…