原创 搭建AppRTC服務器 (AppRTC+Collider+Coturn) 2019

本文介紹使用域名 HTTPS 的方式部署AppRTC服務,信令服務和STURN/TURN服務。 本文使用虛擬機橋接模式下的Ubuntu18.04系統和小飛機代理。 因爲項目需要本地搭建一個AppRTC服務器,研究了好幾天才基本弄完,

原创 快速申請 Let's Encrypt 免費SSL證書 / CA證書

標題之所以說快速,因爲如果你手速快的話3分鐘就能申請成功~ 參考:https://github.com/Neilpang/acme.sh/wiki/說明 Let’s Encrypt是由Internet Security Resea

原创 Git fork分支後與原倉庫保持同步

假設原倉庫爲 https://github.com/lmshao/OldHub.git, fork後的新倉庫爲:[email protected]:lmshao/NewHub.git。 1. clone新倉庫 $git clone git@

原创 C++ 智能指針 shared_ptr 詳解與示例

shared_ptr 是C++11提供的一種智能指針類,它足夠智能,可以在任何地方都不使用時自動刪除相關指針,從而幫助徹底消除內存泄漏和懸空指針的問題。 它遵循共享所有權的概念,即不同的 shared_ptr 對象可以與相同的指針相關

原创 C++ 智能指針 unique_ptr 介紹與示例

unique_ptr 是 C++ 11 提供的用於防止內存泄漏的智能指針中的一種實現,獨享被管理對象指針所有權的智能指針。unique_ptr對象包裝一個原始指針,並負責其生命週期。當該對象被銷燬時,會在其析構函數中刪除關聯的原始指針

原创 註冊國際版PayPal購買Google One谷歌網盤的心塞經歷

鑑於國內的網盤都不太道德,研究發現谷歌雲盤目前還比較友好,谷歌雲端硬盤Google Drive免費空間15G,掛上SS後基本滿速上傳和下載。這陣子聽歌啥的都收費了,之前收藏了好多flac存硬盤裏面想聽的時候不方便再往手機裏面導,感覺用

原创 C++ JSON 庫 jsoncpp 新API的使用方法(CharReaderBuilder / StreamWriterBuilder)

既然看到了這篇文章你肯定知道Json是什麼東西了,網上有很多解析Json的開源庫,最近工作需要用到Json解析,研究發現jsoncpp使用很方便,網上也有很多使用方法介紹,目前爲止能查到的基本都是比較老的API使用方法,編譯器會提醒

原创 C/C++普通函數指針和類成員函數指針的使用

之前一直以爲C++成員函數沒法取地址,一直使用靜態函數來充當回調函數,直到近日看別人的代碼才發現類成員函數也有指針。。。總結記錄一下。 普通函數指針 這面是普通函數的指針的使用方法。 #include <stdio.h> voi

原创 WebRTC中的信令和內網穿透技術 STUN / TURN

Translated from WebRTC in the real world: STUN, TURN and signaling. 最近剛接觸到WebRTC,網上看到這篇介紹WebRTC的文章不錯,仔細讀了讀還算有用,分享出來能幫

原创 AES算法描述及C語言實現

前言 AES算法是當前最流行的對稱加密算法,也是一種分組加密算法,分組密碼就是把明文分爲固定長度的一組一組,每次加密一組數據,直到加密完整個明文數據。AES算法根據分組長度可以分爲AES128, AES192,AES256,其所要求的祕鑰

原创 RSA算法原理

RSA算法原理 RSA加密算法是一種非對稱加密算法。對稱加密算法中加密和解密都得用同一個祕鑰,必須保證祕鑰不泄露才能保證數據的安全,加解密兩方之間密鑰的傳遞是存在安全隱患的。非對稱加密算法中加密和解密使用不同的祕鑰(公鑰和私鑰)。比如:甲

原创 伽羅華域運算及C語言實現

伽羅華域(Galois Field)簡介 在數學中,有限域(或稱伽羅華域)是一個包含有限元素的域。與其他域一樣,有限域是進行加減乘除運算都有定義並且滿足特定規則的集合。其中加法和乘法必須滿足交換、結合和分配的規律。加法和乘法具有封閉性,即

原创 Unix I/O複用:select函數與poll函數詳解與示例

先從一個簡單的場景來理解什麼叫I/O複用。學習過UNIX TCP網絡編程的同學肯定知道accept和recv是阻塞的函數,accept函數是等待客戶端連接,接受連接後返回,繼續執行recv函數等待讀取客戶端發送過來的請求。但是如果一直沒有

原创 C語言調用so動態庫的兩種方式

方式1:類似靜態庫的調用(使用頭文件) 這種方式生成的程序會在啓動時候就加載so動態庫。 add.h int add(int x, int y); add.c #include "add.h" int add(int x, int

原创 【FFmpeg 3.x API應用四】音頻編碼

摘要 這篇文章介紹音頻編碼,示例程序是讀取上一節生成的PCM格式的音頻文件,對其進行編碼輸出。 初始化 這個必備的操作就不多說了。 void AudioEncoding::init() { avcodec_register_all