原创 城市ID

#ifndef __CITYDATA_H__#define __CITYDATA_H__#ifdef __cplusplusextern "C"{#endifextern int cd_get_city_id(const char *pc

原创 RTTI & dynamic_cast

RTTI:Run-Time Type Identification。 那麼RTTI如何來體現呢?這就要涉及到typeid和dynamic_cast這兩個知識點了。爲了更好的去理解,那麼我們就通過一個例子來說明。這個例子大家已經非常熟悉

原创 C++系列(友元)

我們提到過C++中存在一種朋友關係,這種朋友關係如果體現在函數上,那麼我們就稱之爲友元函數;如果體現在類上,我們就稱之爲友元類。友元函數對於我們定義函數的情形來說,一種情況是將函數定義爲全局函數,另一種情況是將函數定義在一個類當中,使其成

原创 RTMP、RTSP、HTTP視頻協議詳解(附:直播流地址、播放軟件)

一、RTMP、RTSP、HTTP協議這三個協議都屬於互聯網 TCP/IP 五層體系結構中應用層的協議。理論上這三種都可以用來做視頻直播或點播。但通常來說,直播一般用 RTMP、RTSP。而點播用 HTTP。下面分別介紹下三者的特點。1,R

原创 IO多路複用 IO異步

IO多路複用 IO異步一、概念說明同步IO和異步IO,阻塞IO和非阻塞IO分別是什麼,到底有什麼區別?不同的人在不同的環境給出的答案是不同的。所以先限定一下本文的環境。本文討論的背景是Linux環境下的network IO在進行解釋之前,

原创 鏈表基礎

/* * =========================================================================== * * Filename: Linklist.c *

原创 Linux下查看CPU、內存佔用率

Linux下查看CPU、內存佔用率我們經常需要查看CPU和內存佔用率,否則一旦存在情況很快就會有IDC(或客戶)找上門,Linux上查看資源使用情況有多種命令可以參考,CPU、內存、IO、NETWORK等資源使用情況都可以通過某些命令查詢

原创 C++單例模式(懶漢 & 餓漢)

單例模式存在的意義是保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該實例被所有程序模塊共享。懶漢示例如下:#ifndef SINGLETON_H #define SINGLETON_H #include <iostream> #i

原创 Linux進程放入後臺

Linux下進程放入後臺執行幾種方法:1. nohup顧名思義,nohup的用途就是讓提交的命令忽略所有的hangup信號。使用方法:nohup COMMAND [ARG]…nohup 示例1234567[root@pvcent107 ~

原创 播放器二(FFMPEG+SDL+AUDIO)

AUDIO大致流程://初始化輸入avformat_open_input()           -- 打開對應音頻文件avformat_find_stream_info()     -- 從輸入文件中獲取到流的相關信息,例如:文件中流的

原创 select

select函數:  系統提供select函數來實現多路複用輸入/輸出模型。原型:  #include <sys/time.h>  #include <unistd.h>  select函數:  系統提供select函數來實現多路複用輸入

原创 linux中send函數MSG_NOSIGNAL

linux下當連接斷開,還發數據的時候,不僅send()的返回值會有反映,而且還會向系統發送一個異常消息,如果不作處理,系統會出BrokePipe,程序會退出,這對於服務器提供穩定的服務將造成巨大的災難。爲此,send()函數的最後一個參

原创 對象數組

對象數組   前面課程我們已經學會了如何實例化一個對象,只有實例化對象後,才能通過這個對象去訪問對象的數據成員和成員函數。但是在很多場合下,一個對象是遠遠不夠用的,往往需要一組對象。比如,我們想表示一個班級的學生,並且假設這個班級有5

原创 虛擬機磁盤清理

vmware磁盤空間佔用越來越大背景vmware虛擬機安裝操作系統,在使用過程中,不知什麼原因,磁盤佔用空間越來越大。原因虛擬機在使用過程中,需要安裝的軟件我都是通過拖拽上傳的安裝包。由於虛擬機會緩存拖拽文件,不自動刪除,導致系統佔用空間

原创 播放器一(FFMPEG+SDL+VIDEO)

知識點如下:1、pFrameYUV爲sws_scale縮放接口的出參,通過指針方式將pFrameYUV數據賦值給bmp2、播放器函數簡介av_register_all():註冊所有組件avformat_opent_input():打開輸入