原创 Effective STL 50條有效使用STL的經驗筆記

Scott Meyers大師Effective三部曲:Effective C++、More Effective C++、Effective STL,這三本書出版已很多年,後來又出版了Effective Modern C++。 Effect

原创 從FFmpeg 4. 2源碼中提取dshow mjpeg code步驟

之前在https://blog.csdn.net/fengbingchun/article/details/103735560 中介紹過在Windows上通過vs2017編譯FFmpeg源碼進行單步調試的步驟,爲了進一步熟悉FFmpeg這

原创 More Effective C++35個改善編程與設計的有效方法筆記

Scott Meyers大師Effective三部曲:Effective C++、More Effective C++、Effective STL,這三本書出版已很多年,後來又出版了Effective Modern C++。 Effect

原创 視頻編解碼類型MJPEG數據格式介紹

Motion JPEG(M-JPEG或MJPEG,Motion Joint Photographic Experts Group,FourCC:MJPG)是一種影像壓縮格式,其中每一幀圖像都分別使用JPEG編碼。M-JPEG常用在數字相機

原创 C++11中std::packaged_task的使用

C++11中的std::packaged_task是個模板類。std::packaged_task包裝任何可調用目標(函數、lambda表達式、bind表達式、函數對象)以便它可以被異步調用。它的返回值或拋出的異常被存儲於能通過std::

原创 C和C++安全編碼筆記:格式化輸出

C標準中定義了一些可以接受可變數量參數的格式化輸出參數,參數中包括一個格式字符串。printf()和sprintf()都是格式化輸出函數的例子。格式化輸出函數是由一個格式字符串和可變數目的參數構成的。在效果上,格式化字符串提供了一組可以由

原创 從openssl rsa pem文件中提取公私鑰數據實現

RSA爲非對稱加密算法,關於其介紹可以參考:https://blog.csdn.net/fengbingchun/article/details/43638013。 OpenSSL最新版爲 1.1.1g,在Windows上和Linux上編

原创 通過OpenSSL的接口實現Base64編解碼

對openssl genrsa產生的rsa私鑰pem文件,使用普通的base64解碼會有問題,如使用https://blog.csdn.net/fengbingchun/article/details/85218653 中介紹的方法,一是

原创 C和C++安全編碼筆記:整數安全

5.1 整數安全導論:整數由包括0的自然數(0, 1, 2, 3, …)和非零自然數的負數(-1, -2, -3, …)構成。 5.2 整數數據類型:整數類型提供了整數數學集合的一個有限子集的模型。一個具有整數類型的對象的值是附着在這個對

原创 ASN.1簡介及OpenSSL中ASN.1接口使用舉例

ASN.1(Abstract Syntax Notation One)是一套標準,是描述數據的表示、編碼傳輸、解碼的靈活的記法。它提供了一套正式、無歧義和精確的規則以描述獨立於特定計算機硬件的對象結構。OpenSSL的編碼方法就是基於該標

原创 對稱加密算法AES之GCM模式簡介及在OpenSSL中使用舉例

AES(Advanced Encryption Standard)即高級加密標準,由美國國家標準和技術協會(NIST)於2000年公佈,它是一種對稱加密算法。關於AES的更多介紹可以參考:https://blog.csdn.net/fen

原创 GitHub/GitLab/Gitee中項目互拷貝後仍保留歷史提交記錄的方法

GitHub、GitLab、Gitee等在同一個網站中執行復制或拷貝一個已有項目到一個新項目比較簡單,因爲它們在每一個項目上都有一個Fork按鈕,直接點擊此Fork按鈕即可,Fork後的新項目會保留原有項目的歷史提交記錄。但是如果不在同一

原创 C和C++安全編碼筆記:動態內存管理

4.1 C內存管理: C標準內存管理函數: (1).malloc(size_t size):分配size個字節,並返回一個指向分配的內存的指針。分配的內存未被初始化爲一個已知值。 (2).aligned_alloc(size_t alig

原创 libusb中的熱插拔使用舉例

以下爲判斷usb設備是插入還是拔出狀態(熱插拔)的測試代碼: 在Windows下是不支持的,在Linux是支持的,下一個版本可能會支持Windows下的熱插拔: #include <chrono> #include <thread> #

原创 libusb介紹及簡單使用

libusb是一個開源的用C實現的,應用程序與用戶的USB設備進行通信的庫。它是可移植的,對外使用統一的API,支持Windows、macOS、Linux、Android。它是用戶模式(user-mode),應用程序與USB設備通信不需要