原创 把線程放到指定CPU中運行

前言 當前計算機都是多核的,linux2.6提供了進程綁定cpu功能,將進程指定到某個core上執行,方便管理進程。 linux提供了sysconf系統調用可以獲取系統的cpu個數和可用的cpu個數。 使用方法 //目前在線的CPU數量

原创 自定義內存檢測原理及方案

在項目開發中,或多或少都會遇到一些內存泄露的問題,今天就來總結下檢測內存泄露的原理及其方法 1 將使用的系統的動態申請/釋放內存的函數重新重載實現一遍,如new、delete、malloc、free等等 2 創建一個鏈表來保存申請/釋放信

原创 Qt中路徑問題小結

在做Qt項目的時候,我們難免遇到到文件路徑問題。 如QFile file("text.txt")加載不成功、QPixmap("../text.png") 加載圖片不成功等等。今天就來做一個關於Qt路徑問題的小結! 首先需要弄清楚兩個概念

原创 Qt中定時器使用的兩種方法

        Qt中定時器的使用有兩種方法,一種是使用QObject類提供的定時器,還有一種就是使用QTimer類。          其精確度一般依賴於操作系統和硬件,但一般支持20ms。下面將分別介紹兩種方法來使用定時器。 方法一:

原创 C與Lua交互之將C結構體組成table傳遞到Lua

概述 前面的Lua與C交互之函數註冊中講述了怎麼將C函數註冊到Lua中讓Lua使用。 當Lua中調用C提供的獲取數據的接口時,C怎麼將多個結構體類型轉換成Lua的嵌套table類型呢? 下面通過一個例子來講解 例子詳解 C數據類型  ty

原创 DHCP協議原理及抓包分析

DHCP的作用: DHCP 全稱Dynamic Host configuration protocol, 動態主機配置協議。 它可以爲客戶機自動分配IP地址、子網掩碼以及缺省網關、DNS服務器的IP地址等TCP/IP參數, 簡單來說, 就

原创 C使用lua_next遍歷嵌套的table(上)

概述前面的 Lua筆記-關於lua table的C API 文章中已經講到了關於Lua table的一些函數,如setfield、settable等等今天我們講如何通過lua_next函數來遍歷table,當然取內容的時候還是要用到前面介

原创 C與Lua交互之交互原理

lua作爲腳本語言,就是用來擴展宿主程序或者嵌入到宿主程序中的,這裏宿主程序使用C來講解下Lua與C交互的原理。在這之前先講下C語言是如何調用函數以及函數參數的。C函數和參數的調用我們都知道C語言的函數調用時通過函數調用棧實現的,當一個函

原创 Lua與C交互之函數註冊

概述 前面講了C與Lua交互的原理,其中講到了Lua調用C的接口時,需要C將函數通過註冊機制註冊到當前lua_State的全局變量中,接下來通過一個實例具體介紹怎麼註冊並調用到C的函數接口。 1 實現實際操作的C函數 static int

原创 Qt程序打包發佈

概述: 我們在開發Qt項目時,難免會遇到程序打包發佈的問題。有的時候我們將程序編譯生成一個程序,放到別人的電腦上就運行不起來了。 這是因爲別人的電腦上沒有安裝開發環境。其實如果我們自己講生成的可執行程序包換個路徑再打開,也許你就運行不了了

原创 設計模式之三種工廠模式與實例詳解

這兩天學習了下設計模式中的工廠模式,寫個總結方便以後記憶和查看。 工廠模式包括:簡單工廠模式、工廠方法模式和抽象工廠模式,其中簡單工廠模式不是23種標準的設計模式  並且簡單工廠模式也沒有遵循開閉原則,抽象工廠模式在每一個系列的子系列中符

原创 TCP長連接與短連接的區別

TCP長連接與短連接的區別 1. TCP連接 當網絡通信時採用TCP協議時,在真正的讀寫操作之前,server與client之間必須建立一個連接,當讀寫操作完成後,雙方不再需要這個連接時它們可以釋放這個連接,連接的建立是需要三

原创 Lua筆記-關於lua table的C API

//Lua筆記-關於lua table的C API //Lua版本5.2 /*相關API: lua_createtable 原型: void lua_createtable (lua_State *L, int narr

原创 wireshark工具使用詳解以及Tcp三次握手抓包解析

概述 今天學習了下抓包工作的使用,寫個文檔記錄下筆記總結。 Wireshark介紹 wireshark是非常流行的網絡封包分析軟件,可以截取各種網絡封包,顯示網絡封包的詳細信息。 wireshark用處:         wiresha

原创 數據隱藏之Qt中d指針詳解

最近看到代碼有用到了Qt中的Q_D指針,就去學習了下,發現真的很好用,因此寫一篇文章總結下。 //student.h class CStudent { public: CStudent(); ~CStudent(); private: