原创 Go 語言的兩種執行流有什麼區別

Go 語言的兩種執行流有什麼區別 go build -> go run | go run 如果先使用 go build 編譯生成可執行文件,可以將可執行文件的放到沒有 go 環境的機器上,仍然可以執行。 如果直接 g

原创 仔細區別 pointers 和 references

仔細區別 pointers 和 references 參考《More Effective C++》 沒有所謂的 null references 一個引用必須總代表某個對象。所以如果有一個變量,其目的是用來指向(代表)另一個對象

原创 進程間通信--管道

進程間通信–管道 管道是一種最基本的 IPC 機制,作用於有有血緣關係的進程之間,完成數據傳遞。調用 pipe 系統函數即可創建一個管道,有如下特質: 其本質是一個僞文件(實爲內核緩衝區) 由兩個文件描述符引用,一個表示讀端,一

原创 宏(#define)和內聯(inline)函數的理解以及區別

宏(#define)和內聯(inline)函數的理解以及區別 宏 宏的缺點: 沒有類型檢查,不安全。 宏是在預處理時進行簡單文本替換,並不是簡單的參數傳遞,很難處理一些複雜的情況,或者當編譯出錯時,提醒可讀性差。 如果宏函數本身

原创 C++ 爬蟲程序

C++ 爬蟲程序 項目描述 使用 C++ 編程語言,實現一個 爬蟲程序,來對圖片進行下載。 開發平臺 Windows 10 流程介紹 先輸入一個起始 URL 進入 URL 隊列。 在當前路徑下創建一個文件夾。 #incl

原创 多態的四種表現形式

多態的四種表現形式 在之前一提到多態,我下意識就是虛函數重寫構成的運行時多態。直到看了一篇文章,才反應過來多態有四種表現形式。cpp-polymorphism 運行時多態(虛函數) 編譯時多態(模板) 重載 類型轉換 運行時多

原创 穩穩地 TCP

穩穩地 TCP TCP 是面向連接、可靠傳輸、面向字節流的傳輸控制協議(Transmission Control Protocol)。 TCP 協議段格式 源/目的端口號:表示數據是從哪裏來,到哪裏去。 32 位序號/ 32

原创 UDP 小結

UDP 小結 參考《圖解TCP_IP》 UDP 協議端格式 源端口號(Source Port) 表示發送端端口號,字段長 16 位。該字段是可選項,有時可能不會設置源端口號。沒有源端口號的時候該字段設置爲 0 。可用於不

原创 海量數據面試題

海量數據面試題 哈希切割 給一個超過100G 大小的 log fifile, log中存着 IP 地址, 設計算法找到出現次數最多的 IP 地址? 與上題條件相同, 如何找到 top K 的 IP ?如何直接用 Linux 系統命

原创 位圖及布隆過濾器的模擬實現

位圖及布隆過濾器的模擬實現 位圖 位圖其實就是一個簡化版的哈希表,在很多時候,我們並不關注一個數據出現了多少次,而只是關注這個數據存在與否。所以哈希表太浪費空間了,我們可以用一個比特位來表示一個數據存在與否。 那麼在 32 位平臺

原创 HTTP 簡單總結

HTTP 簡單總結 HTTP 是我們每個人日常生活中幾乎不可能不用的一個協議。我們瀏覽網頁就是在使用 HTTP 協議,那麼我就來簡單的總結一下 HTTP 協議都有什麼組成。 tips: 只是一個簡單的總結,沒有涉及到深層次的東西。

原创 jsoncpp 操作指南

JSON 小練 在日常的開發環境中,尤其是進行服務器端和客戶端開發中,我們一定會對數據進行序列化和反序列化,在之前,我總是用空格作爲兩個數據之間的分隔,直到我遇到 JSON, 我愛了。 那麼我就用一個簡單的例子來總結一下目前我用到

原创 Socket 編程

Socket 編程 socket 常見 API socket 創建 socket 文件描述符。 適用於 TCP/UDP 協議。 這個函數是服務器和客戶端都需要用。 參數: domain: 這是需要填一個宏,表示要用什麼協議。

原创 封裝UDP Socket API並且構建一個簡單的回顯服務器

封裝UDP Socket API並且構建一個簡單的回顯服務器 因爲 Socket API 用起來非常的不便利,所以我將把 Socket API 封裝起來,讓我以後寫程序的時候不再關注那些不重要的細節,而是把我的關注點放在接收到請

原创 volatile 是個坑

volatile 是個坑。 volatile 關鍵字是告訴編譯器,不要把這個變量放到寄存器裏。 我們先來看一段代碼: #include <iostream> #include <csignal> int flag = 1;