原创 使數據庫輸出結果按照拼音排序進行輸出和輸出指定範圍的結果

排序 :https://blog.csdn.net/qq_27727251/article/details/82733067 指定範圍的結果:比如要 select * from camera limit 2,4 //輸出第3行到

原创 c++藉助stringstream實現類型轉換

無意中發現的一個小模板,可以方便地進行類型轉換,從而避免調用多個函數地麻煩。 #include <iostream> #include <sstream> #include <string> using namespace std

原创 c++結構體初始化未生效

在c語言中,我們通常都是用memset來初始化一個結構體。但是在c++中,使用memset來初始化一個結構體,卻經常得不到正常的結果。這是爲什麼呢? 問題其實是出在了,結構體成員變量類型上了,因爲使用了非ADT類型(大致就是c++

原创 RAII封裝

在c++中可以藉助RAII來完成對對象地處理,避免到處異常釋放對應地資源。 #ifndef __ONCE_RAII_H__ #define __ONCE_RAII_H__ #include <functional> using n

原创 位操作封裝

在封裝協議和解協議的時候,我們經常需要使用到位操作,在c++中可以藉助bitset庫,也可以使用自己封裝的小函數來完成類似的功能。下面提供了一個小小的實例。 #ifdef _WIN32 #include <windows.h> #

原创 UDP打洞

提到UDP打洞,先提一個概念叫做NAT。NAT就是把局域網內多個ip地址映射到公網上,從而能完成局域網到公網的訪問。但是NAT有一個特性,就是必須先從局域網到公網上建立映射,而後公網才能和局域網之間進行相互通信。如果兩個局域網之間

原创 c++獲取系統時間戳的方法

在程序中,我們經常需要獲取當前的時間戳到毫秒甚至微妙級,但是頻繁的調用API會對程序的性能有些許影響,並且要還要考慮不同平臺的影響。參考大佬https://www.jianshu.com/p/c9b775d831fb的實現,積累下

原创 TLV格式解析與打包

TLV,簡單理解就是type,length,value。是一種結構化的數據。一般type爲4個字節的枚舉,length爲4個字節,表示value的長度。value即爲實際的值。TLV直接可以嵌套,比如大的TLV中的value又是一

原创 C++禁止拷貝虛基類

在c++中經常經常需要禁止某些類的拷貝,提供一個小工具,使用時只需繼承就可以。 #ifndef __NONCOPY_H__ #define __NONCOPY_H__ class NonCopyable { public: No

原创 進制轉換工具庫

進制轉換封裝庫 #include <iostream> #include <string> using namespace std; /**********************************************

原创 BOOL類型、int型、float型及指針變量與“零值”比較

原文鏈接:https://blog.csdn.net/ZYZMZM_/article/details/102717590 bool值 bool flag; if(flag) if(!

原创 無法解析的外部符號_imp_fprintf和_imp__iob_func

遇到_imp_fprintf和_imp__iob_func無法解析的問題,根本原因是程序中使用到的庫和現在程序編譯的環境不一樣。舉個例子,比如你的程序用到了libcurl.dll這個動態庫,但是這個動態庫是在VS 2013的工具集

原创 c++簡單對象池(或連接池)的實現

在服務器的開發中,對象池或者連接池的使用有兩種特別的使用場景:一是對象的產生和銷燬會消耗很大,二是對象的數量受到限制,比如mysql的連接對象。這個時候就可以採用池化的技術來解決該問題。池化的意思就是將對象一開始創建好放進池中,當

原创 使用shared_ptr代替new來管理緩存區

在開發的過程中,經常需要使用到緩存區。當緩存區過大(一般棧的大小默認爲1M,當申請的緩存區大小超過1M,就不能使用棧來開闢對象。或者需要調整棧的帶線啊哦),又或者我們一開始不知道需要開闢多大的空間,只有當程序運行的時候,才能獲知需

原创 大小端

int main() { int num = 0x12345678; uint8_t * p = (uint8_t*)&num; for (int i=0;i<4;++i) { //小端模式,低地址存放低位,p+0