原创 3Gpp 物理層協議學習-開篇

2018年就這麼結束了,打算2019年好好學習下3Gpp物理層協議,就用博客來做筆記吧,後續把自己學的東西記錄下來。

原创 Linux makefile 教程

教程寫得很仔細,轉載過來方便以後閱讀。 陳皓 (CSDN) 概述 —— 什麼是makefile?或許很多Winodws的程序員都不知道這個東西,因爲那些Windows的IDE都爲你做了這個工作,但我覺得要作一個好的和p

原创 linux下使用C獲取mp3 ID3數據時的一些注意事項(v1,v2.3,v2.4)

最近自己寫了一個獲取ID3數據的函數,剛開始也是在網上找了大量的資料,衆說紛紜,當時我也是被搞得有點暈了,所以現在結合他人的資料把我自己覺得應該注意的地方寫下來。以便以後查看。 首先科普下mp3幀的知識: MP3文件是由幀構成,幀是 MP

原创 c函數指針詳解

一 通常的函數調用    一個通常的函數調用的例子: //自行包含頭文件 void MyFun(int x); //此處的申明也可寫成:void MyFun( int ); int main(int argc, char* arg

原创 Linux 的多線程編程的高效開發經驗

背景 Linux 平臺上的多線程程序開發相對應其他平臺(比如 Windows)的多線程 API 有一些細微和隱晦的差別。不注意這些 Linux 上的一些開發陷阱,常常會導致程序問題不窮,死鎖不斷。本文中我們從 5 個方面總結出 L

原创 多線程編程-互斥鎖

1.引言: 互斥鎖,是一種信號量,常用來防止兩個進程或線程在同一時刻訪問相同的共享資源。可以保證以下三點: 原子性:把一個互斥量鎖定爲一個原子操作,這意味着操作系統(或pthread函數庫)保證瞭如果一個線程鎖定了一個互斥量,沒有其他線程

原创 Linux環境下段錯誤的產生原因及調試方法小結

最近在Linux環境下做C語言項目,由於是在一個原有項目基礎之上進行二次開發,而且項目工程龐大複雜,出現了不少問題,其中遇到最多、花費時間最長的問題就是著名的“段錯誤”(Segmentation Fault)。藉此機會系統學習了一下,這

原创 ID3v2 中文文檔ver2.3.0

1. ID3標籤信息(版本2.3.0) 1.1 文檔說明 1.2 摘要 2. 約定 3. ID3v2概述 3.1 ID3v2 標籤頭(header) 3.2 ID3v2 擴展標籤頭(extended header) 3

原创 linux高級編程基礎系列:線程間通信

線程間通信機制: 線程是一種輕量級的進程。 進程的通信機制主要包括無名管道、有名管道、消息隊列、信號量、共享內存以及信號等。這些機制都是由linux內核來維護的,實現起來都比較複雜,而且佔用大量的系統資源。 線程間的通信機制實現起來

原创 linux下iconv()函數的用法

linux shell 配置文件中默認的字符集編碼爲UTF-8 。UTF-8是unicode的一種表達方式,gb2312是和unicode都是字符的編碼方式,所以說gb2312跟utf-8的概念應該不是一個層次上的。在LINUX上進行編碼

原创 C語言獲取漢字拼音首字母

C語言獲取漢字拼音首字母 下面是程序,用了glib裏面的一個函數g_convert,用iconv也可以,g_convert更方便一些就直接拿來用了。 #include <stdio.h>#include <stdlib.h>#includ

原创 linux線程資源回收方法

在寫網絡服務器程序時可能需要實現多線程接收多個客戶端的數據,我實現方式比較傻,死循環等待client的connect,connect之後創建thread,這樣其實有一個問題,服務器程序需要長期運行,長時間線程的創建,線程資源的回收就是一