原创 常見開源產品epoll網絡事件模型分析

摘要:redis、thrift-noblocking-server、memcached、nginx等開源產品 四種不同場景下不同網絡模型 分析最近利用業餘時間對基於epoll的網絡服務模型做了一些調研和測試,既是複習也是一次再學習。在調研

原创 glib scanner

Re: [gtk-list] Glib Lexical ScannerFrom: Tim Janik <timj gtk org>To: Gtk Li

原创 如何使用 epoll? 一個 C 語言實例

通常的網絡服務器實現, 是對每一個連接使用一個單獨的線程或進程。對高性能應用而言,由於需要同時處理非常多的客戶請求, 所以這種方式並不能工作得很好,因爲諸如資源使用和上下文切換所需的時間影響了在一時間內對多個客戶端進行處理。另一個可選的途

原创 在Linux下使用IO通道(IO Channels)

由於BlueZ裏面使用到了IO Channel,所以找了一點資料閱讀。IO Channels是Glib庫的一個特性,讓便攜設備IO變得簡單和高效。Linux Glib庫的IO Channels提供了幾種有用的特性:緩衝IO:它提供了用戶進

原创 怎樣診斷SLAB泄露問題

Slab allocator是Linux kernel的內存分配機制,各內核子系統、模塊、驅動程序都可以使用,但用完應該記得釋放,忘記釋放就會造成“內存泄露”(memory leak)。如果導致泄露的代碼使用率很低倒也罷了,若是使用率很高

原创 C++11:可變參數的模板

概述 在C++11之前,類模板和函數模板只能含有固定數量的模板參數。C++11增強了模板功能,允許模板定義中包含0到任意個模板參數,這就是可變參數模板。 可變參數模板和普通模板的語義是一樣的,只是寫法上稍有區別,聲明可變參數模板時需要在t

原创 Visual Studio UTF-8 無 BOM 一站式解決辦法

一:解決自己源碼的編碼格式 方法A(推薦):工具->擴展和更新->聯機->搜索 forceutf8    選擇No BOM 的那一個。   在你保存文件的時候,這個插件會將文件自動保存爲UFT8 無 BOM。 方案B:文件-> 高級保存選

原创 bind原理圖釋

(原文:http://blog.think-async.com/2010/04/bind-illustrated.html) 本文解釋了bind 是如何工作的。爲了清晰,我對圖中的語法作了一些簡化(例如,省略函數調用操作符的參數類型),並

原创 Gtest源碼剖析:1.實現一個超級簡單的測試框架xtest

下面的代碼模仿gtest實現,主要說明了以下兩點: ASSERT_* 和 EXPECT_*系列斷言的原理和作用. gtest是怎樣通過宏自動註冊測試代碼讓其自動運行的. 1 #include <iostream> 2 #inclu

原创 C++11 中的std::function和std::bind

1. 可調用對象 可調用對象有一下幾種定義: 是一個函數指針,參考 C++ 函數指針和函數類型; 是一個具有operator()成員函數的類的對象; 可被轉換成函數指針的類對象; 一個類成員函數指針; C++中可調用對象的雖然都有一個比較

原创 MSVC中C++ UTF8中文編碼處理探究

字符編碼的問題,上大學那會兒就遇到過,一直都是雲裏霧裏,沒太搞清楚。最近又遇到了問題,想在C++的控制檯上輸出Utf-8編碼的漢字字節流。嘗試了好多次都是亂碼,後來花了些時間查查資料,又和同事交流了一下,算是把C++上對於UTF8編碼的處

原创 ASN.1 key structures in DER and PEM

Format Name Description PKCS #7 Cryptographic Message Syntax Standard A PKCS #7 file can be used to store certificates,

原创 用實例給新手講解RSA加密算法

   RSA加密算法是最常用的非對稱加密算法,CFCA在證書服務中離不了它。但是有不少新來的同事對它不太瞭解,恰好看到一本書中作者用實例對它進行了簡化而生動的描述,使得高深的數學理論能夠被容易地理解。我們經過整理和改寫特別推薦給大家閱讀,

原创 ring3層一種佔用文件的方法(DuplicateHandle以後,把佔用文件的句柄丟給系統進程,導致被佔用)

前段時間,一個測試工程師問我關於怎樣長時間的佔用一個文件,而使別的程序無法再訪問這個文件,想起以前很多病毒木馬經常劫持hosts文件不放,除非你找到佔用文件的程序,並強行結束掉,否則怎麼也訪問不了hosts文件,病毒通過劫持這個文件來達到

原创 謹慎使用多線程中的fork

  前言 在單核時代,大家所編寫的程序都是單進程/單線程程序。隨着計算機硬件技術的發展,進入了多核時代後,爲了降低響應時間,重複充分利用多核cpu的資源,使用多進程編程的手段逐漸被人們接受和掌握。然而因爲創建一個進程代價比較大,多線程編程