原创 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;