主頁 > 後端開發 > 華為工程師歷經數十年研發總結而成的兩份作業系統寶典,可助你向架構師邁出的第一步

華為工程師歷經數十年研發總結而成的兩份作業系統寶典,可助你向架構師邁出的第一步

2020-11-13 07:48:25 後端開發

前言

求于至簡,歸于永恒

當你在電腦上玩游戲、與朋友聊天或撰寫一個程式并加載運行的時候,你有沒有一種像在觀看魔術的感覺?撰寫好的程式能夠編譯運行,計算出結果,并顯示或列印出來,你有沒有覺得它很神秘?

如果想揭開這層神秘的面紗,你就得學習作業系統,

因為作業系統是掌控計算機運行的系統,在學習它的程序中,讀者能夠了解程式在計算機上運行的全景,或者說我們所認為的全景,之所以這么說,是因為精確了解程式在計算機上運行的全景是極其困難的(有人認為這根本就是不可能的),當然,這里的程式指的是有一定規模的程式,而不是那種只有幾行代碼的小程式(tivial program),從某種程度上說,沒有人敢肯定自已清楚計算機在任意時刻所處的狀態,例如,在多流水線計算機上,如果發生中斷或例外,我們根本就得不到一個精準的狀態,唯一能做的就是推倒重來,

作業系統的奧秘

對于許多大學計算機及相關專業的同學來說,作業系統就像天上的星星,隱藏著一個固執的謎,永遠學不清楚,不過,作業系統真的學不清楚嗎?

不是的,學不清楚是因為沒有看到其背后的奧秘,這個奧秘不是所有的人都知道的,即使是研究作業系統的人也不一定意識到它,更別提計算機初學者了,

那么這個奧秘是什么呢?

天上的星星數不清是因為我們試圖做的事情是數星星,如果我們換個角度,不去數星星,而是尋找星星的設計師,讓他告訴我們星星的數量,不就清楚了嗎?

這也正是學習作業系統的奧秘,要理解作業系統,就要找到作業系統的設計師,讓他們告訴我們作業系統蘊含的所有秘密,當然,這里的尋找設計師并不是真的找來他們,因為找到所有的設計師是不可能的,這里的設計師指的是一種抽象,一種所有設計師所共有的人生哲學,因為設計師在設計作業系統時會不自覺地將自己的思維或人生追求構造在作業系統里,從而賦予作業系統以心智,而作業系統也就在這種心智的指揮下運行著,

下面我們就來看看作業系統吧

第一份作業系統筆記

目錄

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

筆記涉及到的知識點極多,若一一展現給大家比較困難.......Σ( ° △ °|||)︴,為了不影響大家的閱讀體驗,以下只截取筆記部分內容,文末有完整版筆記獲取方式,有需要的朋友可自取

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第一章認識作業系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

計算機硬體簡介

作業系統與運行作業系統的內核硬體關系密切,作業系統擴展了計算機指令集并管理計算機的資源,因此,作業系統因此必須足夠了解硬體的運行,這里我們先簡要介紹一下現代計算機中的計算機硬體,

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

總線

上面的結構(簡單個人計算機的組件圖)在小型計算機已經使用了多年,并用在早期的IBMPC中,然而,隨著處理器核記憶體變得越來越快,單個總線處理所有請求的能力也達到了,上線,其中也包括IBMPC總線,必須放棄使用這種模式,其結果導致了其他總線的出現,它們處理I/O設備以及CPU到存盤器的速度都更快,這種演變的結果導致了下面這種結構的出現,

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案

幾乎所有作業系統都支持的另一個關鍵概念就是檔案系統,如前所述,作業系統的一項主要功能是屏蔽磁盤和其他l/O設備的細節特性,給程式員提供一個良好、 清晰地獨立于設備的抽象檔案模型,創建檔案、洗掉檔案、讀檔案和寫檔案都需要系統呼叫,在檔案可以讀取之前,必須先在磁盤上定位和打開檔案,在檔案讀過之后應該關閉該檔案,有關的系統呼叫則用于完成這類操作,

為了提供保存檔案的地方,大多數個人計算機作業系統都有目錄(directory)的概念, 從而可以把檔案分組,比如,學生可以給每個課程都創建一個目 錄,用于保存該學科的資源,另一個目錄可以存放電子郵件,再有一個目錄可以存放萬維網主頁,這就需要系統呼叫創建和洗掉目錄、將已有檔案放入目錄中,從目錄中洗掉檔案等,目錄項可以是檔案或者目錄,目錄和目錄之間也可以嵌套,這樣就產生了檔案系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

系統呼叫

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統結構

下面我們會探討作業系統的幾種結構,主要包括單體結構、分層系統、微內核、客戶-服務端系統、虛擬機和外核等,下面以此來探討一下

單體系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

分層系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

微內核

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

客戶-服務器模式

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第二章行程和執行緒

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

目錄

檔案系統通常提供目錄(directories) 或者檔案夾(folders)用于記錄檔案的位置, 在很多系統中目錄本身也是檔案,下面我們會討論關于檔案,他們的組織形式、屬性和可以對檔案進行的操作,

一級目錄系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程模型

在行程模型中,所有計算機上運行的軟體,通常也包括作業系統,被組織為若干順序行程(sequentialprocesses),簡稱為行程(process) , 一個行程就是一個正在執行的程式的實體,行程也包括程式計數器、暫存器和變數的當前值,從概念上來說,每個行程都有各自的虛擬CPU,但是實際情況是CPU會在各個行程之間進行來回切換,

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程的實作

作業系統為了執行行程間的切換,會維護著一張表格,這張表就是行程表(process table) ,每個行程占用一個行程表項,該表項包含了行程狀態的重要資訊,包括程式計數器、堆疊指標、記憶體分配狀況、所打開檔案的狀態、賬號和調度資訊,以及其他在行程由運行態轉換到就緒態或阻塞態時所必須保存的資訊,從而保證該行程隨后能再次啟動,就像從未被中斷過一樣,

下面展示了一個典型系統中的關鍵欄位

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

執行緒實作

主要有三種實作方式

  • 在用戶空間中實作執行緒
  • 在內核空間中實作執行緒
  • 在用戶和內核空間中混合實作執行緒,

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

屏障

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第三章記憶體

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

主存(RAM)是一件非常重要的資源,必須要認真對待記憶體,雖然目前大多數記憶體的增長速度要比IBM7094要快的多,但是,程式大小的增長要比記憶體的增長還快很多,不管存盤器有多大, 程式大小的增長速度比記憶體容量的增長速度要快的多,下面我們就來探討一下操作 系統是如何創建記憶體并管理他們的,

一種存盤器抽象:地址空間

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

空閑記憶體管理

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

虛擬記憶體

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第四章檔案系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案系統的實作

在對檔案有了基本認識之后,現在是時候把目光轉移到檔案系統的實作上了,之前用戶關心的一直都是檔案是怎樣命名的、可以進行哪些操作、目錄樹是什么,如何找到正確的檔案路徑等問題,而設計人員關心的是檔案和目錄是怎樣存盤的、磁盤空間是如何管理的、如何使檔案系統得以流暢運行的問題,下面我們就來一起討論一下這些問題,

檔案的實作

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

使用記憶體表進行鏈表分配

由于連續分配和鏈表分配都有其不可忽視的缺點,所以提出了使用記憶體中的表來解決分配問題,取出每個磁盤塊的指標字,把它們放在記憶體的一個表中,就可以解決上述鏈表的兩個不足之處,下面是一個例子

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

目錄的實作

檔案只有打開后才能夠被讀取,在檔案打開后,作業系統會使用用戶提供的路徑名來定位磁盤中的目錄,目錄項提供了查找檔案磁盤塊所需要的資訊,根據系統的不同,提供的資訊也不同,可能提供的資訊是整個檔案的磁盤地址,或者是第一個塊的數量 (兩個鏈表方案)或inode的數量,不過不管用那種情況,目錄系統的主要功能就是將檔案的ASCII碼的名稱映射到定位資料所需的資訊上

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案系統的管理和優化

能夠使檔案系統作業是一回事,能夠使檔案系統高效、穩定的作業是另一回事,下面我們就來探討一下檔案系統的管理和優化,

磁盤空間管理

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案系統性能

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第五章I/O

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

我們之前的文章提到了作業系統的三個抽象,它們分別是行程、地址空間和檔案,除此之外,作業系統還要控制所有的/0設備,作業系統必須向設備發送命令,捕捉中斷 并處理錯誤,它還應該在設備和作業系統的其余部分之間提供一個簡單易用的介面,作業系統如何管理I/O是我們接下來的重點,

I/O設備

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

I/O軟體目標

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

使用程式控制I/O

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

磁盤

為了組織和檢索資料,會將磁盤組織成特定的結構,這些特定的結構就是磁道、扇區和柱面

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

磁盤格式化

磁盤由一堆鋁的、合金或玻璃的盤片組成,磁盤剛被創建出來后,沒有任何資訊,磁盤在使用前必須經過低級格式化(low-levvel format) ,下面是一個扇區的格式

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第六章死鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

計算機系統中有很多獨占性的資源,在同一時刻只能每個資源只能由一個行程使用,我們之前經常提到過列印機,這就是一個獨占性的資源,同一時刻能有兩個列印機同時輸出結果,否則會引起檔案系統的癱瘓,所以,作業系統具有授權一個行程單獨訪問資源的能力,

兩個行程獨占性的訪問某個資源,從而等待另外-一個資源的執行結果,會導致兩個行程都被阻塞,并且兩個行程都不會釋放各自的資源,這種情況就是死鎖(deadlock) ,

死鎖可以發生在任何層面,在不同的機器之間可能會發生死鎖,在資料庫系統中也會導致死鎖,比如行程A對記錄R1加鎖,行程B對記錄R2加鎖,然后行程A和B都試圖把物件的記錄加鎖,這種情況下就會產生死鎖,

下面我們就來討論一下什么是死鎖、死鎖的條件是什么、死鎖如何預防、活鎖是什么等,

首先你需要先了解一個概念,那就是資源是什么

資源

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

死鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

鴕鳥演算法

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

死鎖避免

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

破壞死鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

通信死鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

大廠常見面試題

解釋一下什么 是作業系統?

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統結構

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

什么是執行緒,執行緒和行程的區別

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程間的通信方式

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程間狀態模型

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

調度演算法都有哪些

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

第二份作業系統筆記

為清楚地闡述作業系統的哲學原理,也為了使內容顯得緊湊,邏輯上一氣呵成,本書只選擇了作業系統的核心內容進行分析,放棄了對作業系統核心以外內容,如安全、多媒體系統、虛擬機技術、光碟技術等的論述,本書集中精力對作業系統發展的歷史背景、行程與執行緒、記憶體管理、檔案系統、輸入與輸出、多核環境下的行程調度和作業系統設計進行了哲學原理層面上的分析與論述,而將安全、多媒體、虛擬機等技術留給別的專業書籍進行論述,對內容的這種安排有如下好處:

  1. 可使本書重點突出、邏輯清晰、內容連貫,便于學生順利掌握作業系統的核心與關鍵,
  2. 作業系統的核心內容經過長久的研究與實踐,已經變得較為穩定并且形成了眾所公認的標準,講解起來沒有歧義,
  3. 作業系統的非核心部分由于研究的時間短,工業界參與的程度較低,并無公認的標準,論述起來要么不全面,要么顯得凌亂,使剛剛接觸作業系統的讀者感到迷惑,
  4. 只要掌握了核心內容的原理,讀者便能通過自學掌握作業系統核心以外的知識,

本書分為8篇,分別是基礎原理篇、行程原理篇、執行緒原理篇、記憶體原理篇、檔案原理篇、I/O原理篇、多核原理篇和作業系統設計篇

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

基礎原理篇

  • 第1章作業系統導論
  • 第2章作業系統歷史
  • 第3章作業系統基本概念

大偽似真,大道無形

對于任何一門課來說,首要探討的問題就是這門課的主題到底是什么,對于剛接觸作業系統的入門者來說,自然想到的問題當然也會是作業系統到底是什么東西,回答這個問題是本篇的職責,此外,作業系統作為計算機的核心控制系統,它在計算機運行程序中扮演什么角色?它的來歷是什么?它有一些什么基本概念?我們應該如何看待作業系統?它是如何參與到程式的執行程序中的?這些也是學習作業系統需要回答的基本問題,

程式是如何運行的

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

計算機硬體基本知識

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統結構

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程原理篇

  • 第4章行程
  • 第5章行程調度
  • 第6章行程通信

恍兮惚兮,其中有像;惚兮恍兮,其中有物

有了基礎原理篇的鋪墊,我們就可以進入作業系統核心功能部件了,

顧名思義,計算機是用來進行計算的,或者說計算機的基本功能是計算功能,而進行計算的關鍵部件是計算機的芯片,即CPU,CPU能夠按照一-定的順序進行正確計算是在-個指揮者的控制之下完成的,這個指揮者就是作業系統,作業系統對CPU進行管理的重要手段就是行程模型,或者說行程是作業系統這個魔術師施法的道具,

行程電報:信號

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

行程擁抱:共享記憶體

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

執行緒原理篇

  • 第7章執行緒
  • 第8章執行緒同步
  • 第9章死鎖應對之哲學原理
  • 第10章鎖的實作

善閉者無關楗不可啟,善結者無繩約不可解

行程雖然讓并發從理想變為現實,但其自身卻是串行:行程只有一一個執行序列,只有一個執行序列的行程模型并不能從根本上滿足人類的所有并發的奢望,并發其實并非人類的唯一訴求,甚至也不一定是最重要的訴求,有了并發,我們希望的是并發能夠幫助我們實作在非并發時難以實作或實作成本高昂的功能:并發的個體通過合作來完成復雜的任務,

行程的分身術一執行緒

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

以測驗與設定指令來實作鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

記憶體原理篇

本篇包括第11~ 14章的內容,第11章講述記憶體管理的環境、虛擬記憶體、作業系統在記憶體中的位置、程式在記憶體里的位置(固定加載地址、固定磁區、可變磁區)、基本記憶體管理機制(地址翻譯、基址極限、交換)、閑置空間管理等內容,第12章講解的內容包括基址極限的問題、分頁管理、頁表、頁面翻譯程序、分頁管理系統的優缺點、多級頁表、地址翻譯速度、鎖住頁面、記憶體抖動和頁面尺寸設計,第13章對頁面更換演算法的來龍去脈、欲達到的目的、各種具體的頁面更換演算法進行細致講解,第14章的內容包括頁式管理系統的局限、分段管理系統、分段的優缺點、段號與尋址位數,并對否定之否定在記憶體管理模式發展程序中的作用進行討論,

  • 第11章基本記憶體管理
  • 第12章頁式記憶體管理
  • 第13章頁面更換演算法
  • 第14章段式記憶體管理

頁面更換的目標

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

分段管理系統

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案原理篇

  • 第15章磁盤操作
  • 第16章檔案系統
  • 第17章檔案系統實作
  • 第18章檔案系統性能

大成若缺,其用不敝:大盈若沖,其用不窮

在第四篇中介紹過,計算機運行時所需要的資料和代碼從主存盤器或者記憶體而來,如果計算機不在運行狀態時,這些資料和代碼保持在何處呢?我們當然可以試一下記憶體, 但問題是記憶體不是持久性的存盤介質,它是行程運行程序中臨時分配的存盤空間,一且行程結束運行,其所占記憶體空間就會被釋放,存放在里面的資料和代碼也將消失,而且,記憶體需要電能支持才能保持資料(指一.般的記憶體),-旦斷電, 所有資料都將丟失,因此,資料和代碼要想長久保持,就需要一個更為持久的地方來存放,這個持久地方就是磁盤,而對磁盤進行管理就是作業系統的另一一個重要使命,如果管理得當,磁盤、記憶體和CPU將協作完成計算機的使命,

磁盤的結構

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案系統的布局

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

能力表

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

檔案系統持久性

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

I/O原理篇

  • 第19章輸入輸出

善者,不善人之師:不善者,善人之資

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

設備控制器

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

物理I/O模式

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

多核原理篇

  • 第20章多核結構與記憶體
  • 第21章多核環境下的行程同步與調度

美言不信,信言不美

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

多核基本概念

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

旋鎖

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統設計篇

  • 第22章作業系統設計之哲學原理

多聞數窮,不若守中

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統設計的追求

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

作業系統設計的第9條哲學原理:簡單為美一求于至簡, 歸于永恒

華為工程師收藏的兩份作業系統筆記,步入架構師進階之道一大步

由于筆記涉及到的知識點與內容極多,就不一一展示給大家了,這份【作業系統筆記】【作業系統之哲學原理第2版】分別為306頁與427頁,若需要完整版筆記的朋友,可以點贊此文關注小編,【見下圖步驟】獲取!!

總結

由此可見,設計一個完美的作業系統是多么困難,甚至是無法達到的,這就意味著我們在作業系統上的探索是永無止境的,雖然不時會有達到完美的感覺,但仔細思量卻發現不過是自我幻覺而已,就像真理一樣,似乎能感覺到,但似乎又沒有把握,而本書所要達到的目標就是為讀者探索作業系統提供些許指導,一個指引讀者探索方向的路標,

還記得本書前言里面的那首小詩嗎?它的結尾是這樣的:

不要失望,

失望會使我們衰老

趁我們還年輕,

抬起頭來,讓我們數星星:

也許,我們能數得清;

也許,我們能看到真相;

也許,我們能找到希望....

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/213107.html

標籤:java

上一篇:HCIE北京考場體驗報告

下一篇:網路編程匯總

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more