原创 OSI七層模型和TCP/IP五層模型概念總覽

1 OSI七層模型 1.1 OSI的來源 OSI(Open System Interconnect),即開放式系統互聯網。一般叫OSI模型,是ISO(國際標準化組織)在1985年研究的網絡互聯模型。 ISO爲了更好的使網絡應用層更爲普及,

原创 TCP服務端和客戶端編程流程+代碼詳細解析(linux:c語言)

TCP服務端和客戶端的編程流程是網絡編程的重點。以下內容包括編程步驟、代碼實現、以及代碼解析四個方面。 目錄 1 編程步驟 2 代碼實現 3 代碼解析   1 編程步驟 tcp服務器與客戶端的編程流程如下所示: 左邊爲服務端,右邊爲客戶

原创 一文讀懂TCP協議UDP協議的特點(區別)

最近複習到網絡,Linux的複習也將接近尾聲。在這我將改正自己做事龍頭蛇尾的一貫作風。在網絡編程這個模塊中也會認真做好筆記。 網絡模塊是一個面試必問的模塊,這一塊內容較多,但大多都是知識點,代碼量就一個TCP和UDP的編程流程。 從這篇文

原创 無鎖編程與有鎖編程的效率總結、無鎖隊列的實現(c語言)

1.無鎖編程與有鎖編程的效率 無鎖編程,即通過CAS原子操作去控制線程的同步。如果你還不知道什麼使CAS原子操作,建議先去查看相關資料,這一方面的資料網絡上有很多。 CAS實現的是硬件級的互斥,在線程低併發的情況下,其性能比普通互斥鎖高效

原创 驚!線程同步居然講的這麼詳細:信號量、互斥鎖、條件變量、讀寫鎖

目錄 1.爲什麼要進行線程的同步操作? 2 線程同步 2.1 信號量 2.2 互斥鎖 2.3 條件變量 2.4 讀寫鎖 1.爲什麼要進行線程的同步操作? 我們以一個程序引出這個問題:如下: #include <stdio.h> #inc

原创 來!一文讀懂什麼是線程、協程和纖程!

目錄 1.什麼是線程? 2.什麼是協程? 3.什麼是纖程? 4.相互關係 1.什麼是線程? 線程是進程內部的一條訪問路徑或者序列。大部分時候我們寫的程序都是單線程的,即每個進程內部只有唯一的一條執行路徑,從代碼角度看,那就是從主函數mai

原创 linux進程通信看這一篇就夠了【管道、信號量、共享內存、消息隊列】(超級詳細、不騙人)

我們知道,Linux進程通信的方法一共有五種,分別是:管道、信號量、共享內存、消息隊列、套接字。因爲套接字涉及到網絡編程,在這裏只介紹前四種方式。 目錄 1.管道 1.1無名管道 1.2有名管道 2.信號量 3.共享內存 4.消息隊列 1

原创 驚!csdn-blink推薦紅人勳章居然悄悄下線了?

前一段時間發佈了一個blink,上了推薦欄目。 如上圖,我看了一下勳章說明,這應該滿足發勳章的條件,但是卻遲遲沒有到位,就沒再管了。 今天終於想起來還有這麼回事,就去諮詢客服,客服說這個勳章已經下線。很遺憾,真的很想要這個勳章,很好看的

原创 vs2019生成64位dll(動態鏈接庫)並用python3.7調用

說明:windows動態鏈接庫相當於linux下的共享庫。同時,由於一般安裝的python都是64位的,而生成的動態鏈接庫是32位的,這就導致動態鏈接庫在pyhon中調用的時候出現不匹配的問題。網上大部分的解決方法都是安裝32位的pyth

原创 Linux內存的分頁管理詳解||物理內存||虛擬內存||聯繫||分頁機制||工作原理

目錄   1.內存 2.虛擬內存 3.內存的分頁管理 1.虛擬內存地址到物理內存地址的尋址 2.磁盤地址(虛擬內存空間)到物理內存地址的映射 3.虛擬內存是如何工作的 1.內存 內存是計算機的主存儲器,它爲進程開闢出進程空間,讓進程在其中

原创 Linux關於進程的四道面試題||面試經常被問到||fork||printf、write的打印問題

在這裏總結關於進程的四道面試題: 第一道 問下面程序打印幾個A。 #include<stdio.h> #include<stdlib.h> #include<unistd.h> int main() { int i = 0;

原创 Linux僵死(屍)進程(詳解)||概念||產生條件||解決方法(wait(waitpid)、信號、兩次fork)

目錄 1.什麼是殭屍進程?產生條件 2.殭屍進程的解決方法 1.wait 2.waitpid 3.信號 4.兩次fork 1.什麼是殭屍進程?產生條件 當fork一個新進程的時候,子進程一般會和父進程同時運行。當子進程結束的時候,它與父進

原创 frok創建子進程的流程(底層實現)||fork源碼剖析||(詳解)||寫實拷貝

前幾天看了一道面試題?問道fork的複製流程是怎麼的?描述寫時拷貝? 我想如果我簡單的說是子進程複製了父進程的所有資源是不是太low了,因此蒐集了一些資料,從底層詳細進行分析。 目錄 1.fork的處理流程 2.fork調用流程圖 do_

原创 劍指offer刷題————棧的壓入、彈出序列

1.問題重述 題目:輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設入棧的所有數字均不相等。例如序列1、2、3、4、5是某棧的壓棧序列,序列4、5、3、2、1是該壓棧序列對應的一個彈出序列,但4、3

原创 Linux靜態庫||共享庫的製作與使用詳解(c/c++)

1.靜態庫的製作與使用 首先靜態庫的製作需要用到ar命令,ar命令不瞭解,可以看下下面文章,對ar命令有詳細的介紹: linux ar 命令詳解 我們來看以下靜態庫製作的流程: 首先將.c文件生成爲.o文件。 用ar命令生成靜態庫 在主函