原创 linux多線程學習

1.Linux“線程”      進程與線程之間是有區別的,不過Linux內核只提供了輕量進程的支持,未實現線程模型。Linux是一種“多進程單線程”的操作系統。Linux本身只有進程的概念,而其所謂的“線程”本質上在內核裏仍然是進程

原创 linux--posix多線程編程----第一篇

一   線程創建 1.1 線程與進程 相對進程而言,線程是一個更加接近於執行體的概念,它可以與同進程中的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。在串行程序基礎上引入線程和進程是爲了提高程序的併發度,從而提高程

原创 用GDB調試程序(七)

改變程序的執行 ———————     一旦使用GDB掛上被調試程序,當程序運行起來後,你可以根據自己的調試思路來動態地在GDB中更改當前被調試程序的運行線路或是其變量的值,這個強大的功能能夠讓你更好的調試你的程序,比如,你可以在程序

原创 C++宏中的“#”與“##”用法

在C/C++的宏中“#”與"##"用法:         “#”宏參數變爲一個字符串,簡單說就是在它引用的宏變量的左右各加上一個雙引號;”##“宏是把兩個宏參數貼合在一起,就是將兩個宏參數合併成一個名字。 如定義:#define M

原创 KMP算法

二.KMP算法     KMP算法之所以叫做KMP算法是因爲這個算法是由三個人共同提出來的,就取三個人名字的首字母作爲該算法的名字。其實KMP算法與BF算法的區別就在於KMP算法巧妙的消除了指針i的回溯問題,只需確定下次匹配j的位

原创 QQ遊戲百萬人同時在線服務器架構實現

QQ遊戲於前幾日終於突破了百萬人同時在線的關口,向着更爲遠大的目標邁進,這讓其它衆多傳統的棋牌休閒遊戲平臺黯然失色,相比之下,聯衆似乎已經根本不是QQ的對手,因爲QQ除了這100萬的遊戲在線人數外,它還擁有3億多的註冊量(當然很多是重複註

原创 Redis快速入門

1.redis是什麼 2.redis的作者何許人也 3.誰在使用redis 4.學會安裝redis 5.學會啓動redis 6.使用redis客戶端 7.redis數據結構 – 簡介 8.redis數據結構 – stri

原创 用GDB調試程序(六)

七、設置顯示選項     GDB中關於顯示的選項比較多,這裏我只例舉大多數常用的選項。     set print address      set print address on          打開地址輸出,當程序顯示函數信

原创 C++中的SFINAE

這幾天神遊到一段is_base_of的代碼迷惑了很久, 在查資料的過程當中, 發現C++中一種稱之爲SFINAE的技巧, 全稱爲"匹配失敗並不是一種錯誤(Substitution Failure Is Not An Error)". 這是

原创 Effective C++讀書筆記(一)

一、讓自己習慣C++    條款01:視C++爲一個語言聯邦    將C++視爲一個由相關語言組成的聯邦而非單一語言,由四個主要的次語言組成。 C。說到底C++仍是以C爲基礎。區塊,語句,預處理器,內置數據類型,數組,指針統統來自C

原创 Builder模式——設計模式學習

Buileder(生成器)—對象創建型模式 一 意圖 將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 二 適用性 在以下情況使用Build模式: 1 當創建複雜對象的算法應該獨立於該對象的組成部

原创 msys2 安裝筆記

以前一直在用 msys,最近發現還有個 msys2,並且msys2 配套的編譯器是MinGW-w64。 就試着用了用,感覺還不錯,這裏把安裝過程記錄一下。 簡單的說,MSYS2 是MSYS的一個升級版, 提供了bash shell, 

原创 KMP算法

字符串匹配是計算機的基本任務之一。   舉例來說,有一個字符串"BBC ABCDAB ABCDABCDABDE",我想知道,裏面是否包含另一個字符串"ABCDABD"?   許多算法可以完成這個任務,Knuth-Morris-P

原创 使用 C++ 處理 JSON 數據交換格式

使用 C++ 處理 JSON 數據交換格式   一、摘要     JSON 的全稱爲:JavaScript Object Notation,顧名思義,JSON 是用於標記 Javascript 對象的,JSON官方的解釋爲:JSON 是一

原创 Effective C++讀書筆記(二)

二、構造/析構/賦值運算 條款05:瞭解C++默默編寫並調用哪些函數 如果你自己沒聲明,編譯器就會爲它聲明(編譯器版本的)一個copy構造函數,一個copy assignment操作符和一個析構函數。此外如果你沒有聲明任何構造函數,編