原创 Linux:socket套接字介紹及實現簡單的udp通信

udp通信socket套接字編程socket編程:tcp/dup網絡通信網絡字節序和主機字節序的轉換地址轉換函數關於inet_ntoaudp 網絡通信程序編程流程socket 編程接口介紹sockaddr結構實現一個簡單的udp客

原创 Linux:socket套接字介紹及實現簡單的tcp通信

tcp通信tcp客戶端與服務端流程socket接口介紹實現tcp通信程序tcp服務端程序無法持續與客戶端進行通信:多進程多線程 tcp編程:面向連接,可靠傳輸,面向字節流 tcp客戶端與服務端流程 客戶端:創建套接字,描述地

原创 [益智]:病狗問題

題目描述 有50 家人家,每家一條狗。有一天警察通知,50 條狗當中有病狗,行爲和正常狗不一樣。每人只能通過觀察別人家的狗來判斷自己家的狗是否生病,而不能看自己家的狗,如果判斷出自己家的狗病了,就必須當天一槍打死自己家的狗。結果,

原创 Linux:生產者消費者模型(Posix信號量)

生產者消費者模型應用場景概念優點:基於BlockingQueue的生產者消費者模型實現:posix信號量概念與sustem v的區別代碼操作基於環形隊列的生產消費模型 應用場景 有線程不斷的生產數據,有線程不斷的處理數據 數據的

原创 [益智]:需要多少隻小白鼠才能在24小時內找到毒藥?

題目描述 有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡,至少要多少隻小白鼠才能在24小時時鑑別出那瓶水有毒? 正確答案: 至少需要10只小白鼠 答案解析 本題採用二進制方法 將1000瓶水用二進制

原创 [益智]:3ml 5ml杯子各一個,拼出4ml的容量

題目描述 一個3ML的杯子,一個5ML的杯子,都是沒有克度,怎麼量出4ML的水? 答案解析: 接滿 3ml 水杯,將其倒入 5ml 水杯中 再接滿 3ml 水杯,將 5ml 水杯倒滿(此時 3ml 水杯中含 1ml 水)

原创 [益智]:1000!有幾位數,爲什麼?

答案 2568位 答案解析 求多個數相乘的位數只要求他的常用對數和就可以 例如: 用科學計數法表示 b = a * 10^X,其中 1 < a <10,x 爲整數,則 b 有 1 + x 位數。 比如:1509 = 1.509 *

原创 [益智]:有3箱水果,一箱是蘋果,一箱是橘子,一箱是兩種水果的混裝

題目描述 有3箱水果,一箱是蘋果,一箱是橘子,一箱是兩種水果的混裝。 三個箱子上都貼了標籤,但所有的標籤都貼錯了現在你只拿出一個水果來判斷3個箱字裏的情況 題目解析 從貼着混裝標籤的箱子中拿水果 拿出來的是蘋果,則這箱子裏裝的

原创 C++知識點博文彙總

C++系列 該文章收錄在學習C++過程中的大大小小知識點。目的是在學習後再次梳理各知識點的基礎知識,爲掌握C++重難點打基礎,同時也會第一手的複習資料。學習C++路途漫長,知識點繁多,及時的總結、梳理知識點是相當有必要。將文章做成

原创 Linux:理解阻塞信號與函數重入

信號阻塞信號的阻塞在內核中的表示信號集處理函數sigprocmask函數sigpending函數簡介信號 SIGPIPE、SIGCHLDvolatile 關鍵字可重入函數可重入與線程安全聯繫可重入與線程安全區別 信號的阻塞 指一

原创 Linux:帶你理解線程池

線程池概念爲什麼用線程池應用場景實現一個線程池 概念 線程的池子,有很多線程,但是數量不會超過池子的限制。(需要用到多執行流並行進行任務處理的時候,就從池子中取出) 一種線程使用模式。線程過多會帶來調度開銷,進而影響緩存局部性和

原创 [益智]:有7克,2克砝碼各一個,天平一個,如何利用

題目描述 有7克、2克砝碼各一個,天平一隻,如何只用這些物品稱三次,將140克的鹽分成50、90克各一份? 答案解析 將140克的鹽平分成兩份(70, 70) 將一份70克的鹽平分成兩份(35,35,70) 將兩個砝碼分別放在天

原创 [益智]:一樓到十樓的每層電梯門口都放着一顆鑽石,鑽石大小不一。

題目描述 一樓到十樓的每層電梯門口都放着一顆鑽石,鑽石大小不一。你乘坐電梯從一樓到十樓,每層樓電梯門都會打開一次,只能拿一次鑽石,問怎樣才能拿到最大的一顆? 答案 拿一樓的鑽石 答案解析 拿到手裏纔是真(參考蘇格拉底讓弟子拾麥穗)

原创 [益智]:假設你有8個球,其中一個略微重一些

題目描述 假設你有8個球,其中一個略微重一些,但是找出這個球的惟一方法是將兩個球放在天平上對比。最少要稱多少次才能找出這個較重的球? 答案 最少要稱2次 答案解析 天平左右兩邊各放3個球 若平衡,則對比剩下兩個球找到其中較重的球

原创 Linux:簡單理解System V -- 共享內存、消息隊列、信號量

System V共享內存共享內存的操作流程:共享內存函數消息隊列信號量 共享內存 本質原理: 多個進程要是映射同一塊物理內存,就可以通過這塊內存實現數據共享 在物理內存上開闢一塊內存空間 多個進程可以將這塊物理內存映射到自己的