原创 【FFmpeg雜記】音頻解碼輸出PCM格式數據分析

  FFmpeg音頻解碼後輸出的爲PCM數據,PCM中的聲音數據沒有被壓縮。   FFmpeg中音視頻數據基本上都有Packed和Planar兩種存儲方式,對於雙聲道音頻來說,Packed方式爲兩個聲道的數據交錯存儲,交織在一起

原创 Linux I/O 多路複用之select、poll、epoll詳解與代碼示例

如果寫過最基礎的TCP服務,那就應該清楚 accept 和 recv 函數是阻塞式的(默認),也就是說程序就卡在這個地方等待,直到有連接或者數據來到。單線程處理這種事情時,一旦有數據到來就會一直處理這個連接的數據,而沒法接收新的連

原创 Node.js Async 流程控制庫與 Promise 流程控制

Async庫學習筆記 Async是個功能比較強大的異步流程控制庫,常用的流程控制模式有串行,並行和瀑布流模式。注意和【async await】區分開。 1. Async串行控制 串行控制的函數爲 function series

原创 工作這幾年,我都會個啥

從畢業開始工作也差不多三年了,有時候想想涉獵的面也挺多,但是很多都研究不夠深入,可謂瞎基霸學,稍微深入一些就露餡了。現在這個現狀分析一下有兩個原因,一來 我對新鮮的技術比較感興趣,涉獵廣泛。二來 也和工作有關係,服務器開發用的東西

原创 通過OpenSSL生成自簽名證書,認識RSA算法

前言 OpenSSL是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。OpenSSL本身是一個基於C語言的庫,但是它也提供一個名爲openssl的可執

原创 Android Activity 之間傳遞數據

1. 簡單的數據傳遞 假設 Activity1 啓動 Activity2 的時候給其傳遞數據 Activity1.java Intent intent = new Intent(Activity1.this, Activity2.

原创 UDP Socket示例程序:使用fgets函數獲取屏幕輸入

  前一篇文章的UDP Socket示例程序的Client是循環發送固定的一句話,有時候我們希望像聊天軟件一樣可以自己輸入數據。讀取屏幕字符串可以使用gets函數和fgets函數,然而因爲安全方面的因素,推薦使用後者。 ch

原创 Android Studio 引用 assets 文件夾中的內容

  看教程,在Eclipse+ADT環境下開發Android應用多數都把音視頻之類的文件放在res/raw目錄下,但是在AS環境下沒法這麼幹,後來發現AS開發中多把這類文件放在與 res 目錄同級的 assets 目錄下,因爲系統

原创 Android 在 Java 代碼中實現佈局

今天看eoe的視頻學習的佈局,做個筆記。常見的是在res/layout/activity_xxx.xml文件中實現Android界面佈局,也可以在JAVA代碼中實現佈局,這種方法也是比較靈活,也比較常用。可以使用 LinearLa

原创 C語言const限定詞基本用法

它限定一個變量不允許被改變,產生靜態作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一定幫助。 1. 作用:防止誤操作只讀內存 像這種"H

原创 UDP Socket示例程序

  通常我們涉及到的網絡編程,也稱爲Socket編程,多數是TCP和UDP協議的編程,二者最大的區別就是:1. TCP是可靠的傳輸,需要三次握手建立連接再傳數據,而UDP是無連接的,即使沒有接收方,也可以一個勁往一個地址發數據,所

原创 【Linux C代碼分享〇】寫在最前面的話

  接觸Linux有好幾年了,學習Linux C也有些時日了,感覺看的這些關於Linux C編程的書,主要內容一般爲這幾個部分:I/O編程、進程操作、線程操作、網絡編程、數據庫編程。看過的有些就忘了,感覺還是總結一下比較好,總結一

原创 C/C++語言中值傳遞、指針傳遞和引用傳遞

在C/C++語言中值傳遞、指針傳遞和引用傳遞(C++ only)這三種函數參數傳遞方式是比較基本的知識,用的比較普遍,但不仔細分析其實質的話,時間長容易記混了。網上的資料也較多但多數都不繫統,本文力求用最白話的表達和簡單的示例把

原创 Node.js 數組 forEach 同步處理上下文語句

習慣了C語言系的思維方式,剛接觸Node.js,它的異步處理讓我頭大。 寫代碼遇到這麼一個場景,需要循環對一個數組中的元素進行處理,全部處理完成後再執行一個last操作。但是JS的異步特性會使這個last語句先執行,所以花點時間研