原创 【Linux】四次揮手

客戶端和服務器通過close()四次揮手斷開連接。 關閉連接的過程爲四次揮手,由於TCP是全雙工的通訊。所以每個方向都必須單獨進行關閉。當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向上的連接。收到一個FIN只意味着這一方向上

原创 【Linux】http和https協議

http協議和https協議都是應用層協議。 http:超文本傳輸協議 https:安全的超文本傳輸協議。在http協議基礎上加入了SSL協議保證安全傳輸。 HTTP協議和HTTPS協議主要應用於Web瀏覽器和網站服務器之間傳遞數據,HT

原创 【面經】字節跳動後端開發視頻架構方向一面二面

字節一面 常規自我介紹:姓名、學校專業、學校表現(也就是獎項、榮譽)、項目介紹。 聽了項目以後開始問我項目相關的問題 之後就開始問常規問題 1、知道tcp/ip嗎(只知道是一個協議簇,內部包含很多協議,向tcp、udp協議。) 2、ip協

原创 【總結】春招感想

2020年春招,收到了騰訊光子工作室的實習offer。總結一下這次春招,也算是畫下一個完美的句號。 在這次春招中,給我面試機會的公司並不多,只有字節、騰訊、百度。面試的基本知識點都是和簡歷描述有關的,基本上寫的每個點都會被問到。 字節的面

原创 【算法】字典序問題

little fairy 的第x篇博客。 字典序問題描述:   編碼工作常被運用於密文或壓縮傳輸。這裏我們用一種最簡單的編碼方式進行編碼:把一些有規律的單詞編成數字。 字母表中共有26個字母{a,b,…,z},這些特殊的單詞長度不超過6且

原创 【數據結構】二叉樹的遍歷

二叉樹的遍歷有很多類型。基本的比如先中後序遍歷二叉樹的遞歸和非遞歸,層次遍歷二叉樹,工字形遍歷二叉樹,倒序遍歷二叉樹。 先中後序遞歸遍歷二叉樹 先中後序非遞歸遍歷二叉樹 層次遍歷二叉樹 工字型遍歷二叉樹 從最後一層倒着遍

原创 【Linux】三次握手

客戶端connect()向服務器發起連接,客戶端和服務器通過三次握手建立連接,被服務器listen()開機後監聽到後將套接字放到listen()已完成三次握手隊列中。 第一次握手:建立連接時,客戶端向服務器發送SYN報文(seq = j)

原创 【Linux】靜態庫和動態庫

庫:預先編譯(.o)好的方法的集合   Linux下,庫分爲靜態庫和共享庫。   庫的生成 靜態庫:庫名:Libxxx.a,lib是庫的前綴,xxx是庫名,.a爲靜態庫的後綴。 第一步:將需要生成靜態庫的.c文件轉換爲編譯後的.o文件 命

原创 【Linux】進程和線程

程序:存儲在磁盤上的二進制可執行文件。 進程:一個正在運行的程序,是系統進行資源分配的基本單位。 線程:進程內部的一條執行路徑,是系統進行調度的基本單位。 在操作系統中將線程的實現分爲三類:用戶級線程、內核級線程、混合方式 在linux下

原创 【項目】Shell項目

Shell項目,實現自己的命令解釋器。 命令分爲兩種,內置命令(cd,exit)和普通命令。   內置命令 內置命令在bash中實現,不產生新進程,對本身做操作。 cd 通過chdir(cd)實現操作。 exit 爲退出進程,直接brea

原创 【Linux】tcp套接字編程

Tcp編程。(套接字socket)   部分代碼: 服務器端ser.c   客戶端cli.c   運行結果: 注意必須先運行服務器端。   此時服務器端在accept()處阻塞。     此時客戶端在fgets()處阻塞,服務

原创 【總結】const關鍵字的用法及作用

在C語言和C++中,我們都會用到const,並且對於static有不同的用法和作用。下來我將就C語言和C++兩個不同的編譯環境分別對const的用法和作用進行講述。 1、在C語言中const的使用 (1)const修飾的變量稱爲常變量。此

原创 【總結】static關鍵字的用法及作用

首先,我們要明確static是靜態關鍵字。在C語言和C++中,我們都會用到static關鍵字,並且對於static有不同的用法和作用。接下來我將就C語言和C++兩個不同的編譯環境分別對static關鍵字的用法和作用進行講述。 1、在C語言

原创 【Linux】gdb調試總結

在windows操作系統下,我們的運行程序有兩個版本。 debug開發調試版本    得到的可執行文件.exe文件相對較大,其中包含調試信息。且不做任何優化,未開發人員提供強大的應用調試能力 Release發行版本    文件相對較小,不

原创 【Linux】編譯鏈接原理

通常的開發環境都是集成開發環境(IDE):編譯鏈接一步完成(構建) gcc main.c   被隱藏的過程: 預處理(預編譯) 主要處理以#開頭的預編譯指令 將所有的“#define”刪除,並展開所有的宏定義 處理所有條件預編譯指令,如“