Time of Update: 2018-12-05
// 再一個線程函數裡面libvlc_instance_t* pVLCInstance = (libvlc_instance_t*)param;libvlc_log_t *log = libvlc_log_open (pVLCInstance);libvlc_set_log_verbosity (pVLCInstance, 2);unsigned int level = libvlc_get_log_verbosity (pVLCInstance);debug_print("vlc log
Time of Update: 2018-12-05
安全通訊端層(Secure Sockets Layer,SSL)會話中的安全握手非常重要,這是因為該串連中的所有安全性都是在握手過程中建立的。本文將介紹如何增強 SSL 握手的安全性,從而防止中間人(MITM)攻擊 —— 此時入侵的一方會偽裝成另外一個可信源。本文還會介紹數位憑證的概念,以及 OpenSSL API
Time of Update: 2018-12-05
如果沒有安全的伺服器應用程式,那麼也就不需要安全的客戶機應用程式。使用 OpenSSL,我們可以建立安全的伺服器應用程式,儘管文檔讓這一切看起來非常複雜,但實際上並非如此。本文中我們將學習如何使用在這個 3 部分系列文章 的 第 1 部分 中學習到的概念來構建安全的伺服器應用程式。本系列文章的前兩部分討論了使用 OpenSSL 來建立客戶機端應用程式的內容。第 1 部分 討論了使用 OpenSSL 建立基本安全客戶機的問題,而 第 2 部分
Time of Update: 2018-12-05
在Fast Cache工程中, 當建立 nfs mount 目錄 時, 如果 nfs 網路斷開情況時, 函數 stat/opendir/df -k 等命令被掛住. 問題產生了, 如何在程式中檢查 nfs mount 目錄的可訪問性而程式又不被掛住?解決思路:1, mount 採用 soft 方式, 當 一個 major timeout 到達後, stat 能返回給調用者. 但如果是 hard方式, 當一個 major timeout 到達後, 僅在 console 上報告一個錯誤, 並不返回.
Time of Update: 2018-12-05
// 一個Windows下C++讀寫鎖的代碼,實現共用讀,獨佔寫class ReadWriteLock{public: int m_currentLevel; int m_readCount; HANDLE m_unlockEvent; HANDLE m_accessMutex; CRITICAL_SECTION m_csStateChange;public: ReadWriteLock() {
Time of Update: 2018-12-05
以下是serial_port同步讀寫串口裝置的範例程式碼: #include <iostream>#include <boost/asio.hpp>#include <boost/bind.hpp>using namespace std;int main(int argc, char* argv[]){try{boost::asio::io_service io;boost::asio::serial_port sp(io,
Time of Update: 2018-12-05
windows上偷懶,直接下了一個編譯過的安裝版搞定,ubuntu下就自己用源碼編譯了。configure出現以下幾個問題點:1."Basic XLib functionality test failed!"解決方式:apt-get install libX11-dev libXext-dev libXtst-dev2."Xrender support cannot be enabled due to functionality
Time of Update: 2018-12-05
簡單的提升進程許可權代碼,裡面用到的許可權參數根據不同需要設定: HANDLE hToken; TOKEN_PRIVILEGES tkp; //提升許可權 if(!::LookupPrivilegeValue(NULL, SE_DEBUG_NAME,&tkp.Privileges[0].Luid))
Time of Update: 2018-12-05
一、TCP的滑動視窗大小實際上就是socket的接收緩衝區大小的位元組數二、對於server端的socket一定要在listen之間設定緩衝區大小,因為,accept時新產生的socket會繼承監聽socket的緩衝區大小。對於client端的socket一定要在connet之前設定緩衝區大小,因為connet時需要進行三向交握過程,會通知對方自己的視窗大小。在connet之後再設定緩衝區,已經沒有什麼意義。三、由於緩衝區大小在TCP頭部只有16位來表示,所以它的最大值是65536,但是對於一些
Time of Update: 2018-12-05
記憶體對應檔技術 1. 用途和基本操作用於不同進程之間的記憶體共用操作, 可以將一個物理檔案對應到記憶體當中然後直接利用分配到的或者開啟的命名共用記憶體的地址空間實現資源共用訪問2. 相關流程1) 建立命名共用記憶體首先利用CreateFile或者CreateFileForMapping獲得一個用於映射的物理檔案控制代碼, 然後利用該檔案控制代碼結合CreateFileMapping得到一個命名的共用記憶體對應檔控制代碼。//CreateFileMapping
Time of Update: 2018-12-05
上一篇把我寫的取日誌代碼貼了上來,但不知道為何設定了記錄層級後,沒有效果。經過小小的研究(google到了一些國外論壇上的資訊),發現想要記錄層級設定生效,需要關閉再重新開啟日誌:libvlc_log_t *log = libvlc_log_open (pVLCInstance);libvlc_set_log_verbosity (pVLCInstance, 10000);unsigned int level = libvlc_get_log_verbosity
Time of Update: 2018-12-05
Boost官網的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost庫的命名,摘錄如下:以 libboost_regex-vc71-mt-d-1_34.lib 為例:lib 首碼:除了Microsoft Windows之外,每一個Boost庫的名字都以此字串開始。在Windows上,只有普通的靜態庫使用lib首碼;匯入庫和DLL不使用。
Time of Update: 2018-12-05
在實際的應用中,會碰到需要遍曆容器中的元素,並且在判斷某些的條件後,將某個元素從容器中清除的情境:#include <stdio.h>#include <map>#include <set>#include <list>#include <vector>#include <deque>template<class T>void del(T t, int pos){// 測試迴圈遍曆中的刪除操作int i = 0;
Time of Update: 2018-12-05
seq_parameter_set_rbsp( ) {// profile_idc level_idc 指明所用 profile、levelprofile_idc// constraint_set0_flag 等於 1 時表示必須遵從附錄 A.2.1 所指明的所有制約條件。等於 0 時表示不必遵從所有條件。constraint_set0_flag// constraint_set1_flag 等於 1 時表示必須遵從附錄 A.2.2 所指明的所有制約條件。等於 0
Time of Update: 2018-12-05
編譯方式和arm交叉編譯類似,不過我用的交叉編譯器版本非常老,是3.40的boost庫,可以使用任意版本,:http://www.boost.org編譯方法1. 下載解壓boost庫到任意位置,如/home/boost_1_48_0/2. 切換目錄至/home/boost_1_48_0,運行bootstrap.sh,此時在目前的目錄下會產生bjam這個程式,另外產生project-config.jam編譯設定檔3. 修改project-config.jam為以下內容
Time of Update: 2018-12-05
H264和AAC資料流 RTMP推送的音視頻流的封裝形式和FLV格式相似,由此可知,向FMS推送H264和AAC直播流,需要首先發送"AVC sequence header"和"AAC sequence header",這兩項資料包含的是重要的編碼資訊,沒有它們,解碼器將無法解碼。 AVC sequence header就是AVCDecoderConfigurationRecord結構,該結構在標準文檔“ISO-14496-15 AVC file format”中有詳細說明。
Time of Update: 2018-12-05
QtWebkit模組使得Qt widget能夠通過HTML的object標籤嵌入到web頁面中,並通過JavaScript代碼進行訪問,而Qt對象也能相應的訪問web頁面元素。將Qt對象插入到web頁面中首先繼承並實現QWebPluginFactory類(C++):class MyPlugin: public QWebPluginFactory { Q_OBJECT public: MyPlugin(QObject* parent = 0); //
Time of Update: 2018-12-05
這幾天在學習Action Script,在網上亂逛發現QT與flash互操作的可能性,實驗了一把,居然成功了。首先是QT調用Flash中的函數:QT中有一個控制項叫QAxWidget,載入一個.swf檔案代碼如下:QAxWidget flash(this,NULL); flash.setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
Time of Update: 2018-12-05
下載解壓boost,我現在用的是1.48,安裝交叉編譯器至指定位置,設定編譯器路徑到 PATH1.首先運行boost解壓目錄下的./bootstrap.sh 2.修改產生的project-config.jam檔案修改:using gcc : arm : arm-none-linux-gnueabi-gcc ; 修改(這邊不改也沒事):option.set prefix :(交叉編譯器所在位置);option.set exec-prefix :(交叉編譯器所在位置)/bin
Time of Update: 2018-12-05
我們在編寫php項目的時候會遇到本地調試運行正確,但部署到伺服器運行就出現問題的情況,此時可能不容易定位錯誤原因,因此使用zend進行遠端偵錯是一種很好的解決方案。廢話不多說了,看下面的步驟。本次介紹以開發環境為windows而運行環境為linux舉例1.下載安裝zend studio,可以去官網下載2.下載Studio Web Debugger(zend debugger),我用的是64位系統,因此下的檔案名稱為 ZendDebugger-20110410-linux-glibc23-x86_