Time of Update: 2018-12-05
用C++實現HTTP伺服器 - 如何控制一個通訊端的發送頻寬作者: 闕榮文日期: 2011/7/15目的對HTTP伺服器的每一個客戶通訊端限制發送頻寬.前提用IOCP管理通訊端,不能阻塞線程影響到別的串連.如何?思路1. 每次調用 WSASend()的時候,計算一下當前頻寬,如果超出限制,那麼只發送一個最小的包,比如1個位元組使頻寬慢慢降到合適.優點:
Time of Update: 2018-12-05
C++ TR1正則庫使用樣本作者: 闕榮文時間: 2011/8/13[背景介紹]要想在程式中使用Regex,首先需要有庫支援.目前比較有影響的C++正則庫主要有GNU Regex Library,它是glibc的一部分.另一個就是PCRE全稱是Perl Compatible Regular Expressions.從名字我們可以看出PCRE庫是與Perl中Regex相相容的一個Regex庫.PCRE是免費開源的庫,它是由C語言實現的,這裡是它的官方首頁:http://www.pcre.org/
Time of Update: 2018-12-05
本來也沒指望能賺到錢,也不是什麼多好的代碼.就是想看一看到底有沒有可能.結果一個詢價都沒有收到,事實證明程式員很不容易,尤其在中國.獨樂樂不如眾樂樂,開放原始碼,請指教.有不對的,不完善的,效率不夠的或者有更好的解決辦法的請指明,不要搞人身攻擊,滿口粗話,這也是國內網路上的惡習呀.請移步: http://blog.csdn.net/querw/article/details/6593328 查看 Que's HTTP Server的更多詳情和下載原始碼.
Time of Update: 2018-12-05
說在前面資料結構和演算法是程式設計的靈魂。坦誠的說,我在這方面是弱的可以。雖然工作這麼多年了,因為種種借口,這塊知識一直是我的痛處。曾經在面試時大言不慚的說,這些知識在工作中很少用到,所以當年學習的東西早就還給學校了。其實不然,失去了靈魂的程式員如我,總是要逆襲的。所以以後的學習中會有一些如孩童筆記般的文章出現在我的blog中,請大師們不要嘲笑,要提攜。定義線性表可以說是最簡單的資料結構,它的描述為:n個資料元素的有限序列。記為:L=(a1,a2,...,an)按照儲存結構它又可以分為順序儲存結
Time of Update: 2018-12-05
/* * LinkedList * linc * 2013.2.26 */#include <stdio.h>#include <stdlib.h>#include <time.h>#define OK 1 #define ERROR -1 #define TURE 1 #define FALSE 0 struct Node{int data;struct Node *next;};typedef struct Node *Head;typedef
Time of Update: 2018-12-05
俗語云:出來混,遲早是要還的。下面是一道初級記憶體泄露題,程式員小懶兒顯式的用new動態分配了記憶體,卻忘記了用delete釋放。請找出問題的所在,代碼如下:#include <iostream>#include <cstring>using namespace std;class Student{int student_number;char* name;public:Student(int,char*);};Student::Student(int
Time of Update: 2018-12-05
眼見的事實尚有假,背後的言語未必真。---諺語當使用另一種方式去實現相同的任務時,過往的經驗可以協助你更快速的分析和實現。但有時候經驗也會產生負面影響。下面的一段例子表示當一個對象以值的形式包含另一個對象時,會自動調用另一個對象的解構函式。#include <iostream>#include <cstring>using namespace std;class Tyre{char* brand;public:Tyre(Tyre
Time of Update: 2018-12-05
有兩種有意思的線性表,它們分別是棧(stack)和隊列(queue)。棧是這樣規定的,它的元素遵守先進後出的原則,且出入口只有一個,叫做棧頂。進棧的動作叫做push,出棧的動作叫做pop。因為它基於線性表,又有這麼簡單清晰的定義,所以實現上還是比較容易的。//2013.3.6//lincoln//stack sequence storage structure#include <stdio.h>#define OK 1#define ERROR -1#define TRUE
Time of Update: 2018-12-05
人類的最大的敵人是遺忘。---小懶人語這個問題還算容易發現,因為這是一個典型。例如:一、Object是一個類,Object *object = new Object[3];...balabala...delete object;//problem這時就已經引發記憶體泄露了,因為此時釋放掉的只是object[0]的記憶體(編譯器以&object[0]的地址為參數調用一次解構函式),等同於delete[1] object;而正確的釋放應該是delete[] object;或者是delete[
Time of Update: 2018-12-05
1. 類需要建構函式嗎?2. 資料是否需要保持私人的?方案一public: int length;方案二public: const int& length;//在建構函式中length = true_length;這樣由於是const變數,只能讀,不能修改。private: int true_length;方案三public: int length() const;//3. 是否需要一個無參的建構函式?如果沒有無參的建構函式,那麼Point p;Point
Time of Update: 2018-12-05
1.仔細區別指標和引用pointer可以任意指向,referecnce一旦確定不可改變。pointer需要多一次測試是否為null,引用必有所引。當你確定會指向某一個東西,而且絕不會改指其他東西,或者由於文法的實現所限制用指標無法實現的,請選擇reference,其他情況盡量使用指標。2.盡量使用C++轉型static_cast:完成準系統const_cast:消除常量性dynamic_cast:基類指標向衍生類別指標類型轉型,失敗返回null,也可以轉型引用reinterpret_cast:編
Time of Update: 2018-12-05
more-effective-c++ 序列1 new和delete的測試1,在堆記憶體中指派至,而且欲對堆記憶體的分配使用自己的方式。Widget *pWidget = new Widget():1,調用operator new 分配記憶體2,將記憶體上的對象調用建構函式3,轉換為Widget*賦值給pWidget故而可以通過重寫operator new 和delete來自己決定記憶體配置方式。下面的代碼在operator new中調用的malloc,在operator delete
Time of Update: 2018-12-05
more effective c++關於異常這一大節,會有一篇總體的文章(還在一點點的往下寫的過程中),以比較簡短的語句來描述異常這一大節的每一個小節的精髓,而整個大節會涉及很多測試,每一個測試會有一篇文章,對應著每一個小節。這一篇文章是針對第9節如何利用局部對象管理資源的。思想:局部對象管理資源,當中途調用出現異常的時候,利用局部對象的解構函式必須被調用的策略,在解構函式中做釋放資源的操作。一個局部對象存放[必須自動歸還的資源],利用對象的解構函式歸還資源。auto_ptr, scoped_
Time of Update: 2018-12-05
標題: 臃腫的C++ - 淺談過度封裝作者: 闕榮文(querw@sina.com)日期: 2010-12-3摘要: 淺談由於對C++物件模型的濫用導致C++程式臃腫不堪的狀況.幾乎所有使用OO語言(C++, Java)的程式員都有過度封裝的傾向. 不管什麼都先用類包一層.代碼的層次非常厚.很多C++原始碼由於封裝層次過多,有時候甚至為了封裝而封裝,讀起來非常費勁.
Time of Update: 2018-12-05
EffectiveC++手記1 視C++為一個語言聯邦C,object-oriental C++, TemplateC++,
Time of Update: 2018-12-05
文章標題:C原 作 者:querw原 出 處:www.vczx.com發 布 者:querw發布類型:原創發布日期:2004-10-05今日瀏覽:8總 瀏 覽:144// 國慶沒事寫著玩的,英文很爛,請把注意力集中在代碼上,呵呵:) // c++基於流的檔案操作使很多C轉過來的程式員在操作檔案時還是選擇了 FILE* // :)其實,C++的流操作檔案也很方便啊 // 下面這個例子就是檔案使用執行個體代碼 #pragma warning(disable:4786) #include
Time of Update: 2018-12-05
在公司半年以來,在周圍看到的代碼都是以簡單完整當前任務為目的,沒有考慮過架構,沒有考慮過設計模式,沒有預先的設計,甚至沒有嚴謹的錯誤偵測,僅僅是完成任務就行。自己看了些c++的書,但是始終編碼能力不行,寫不出高品質的代碼,這個是自己練習過少的原因。這幾天編譯了webrtc庫,在windows和linux都編譯通過了,可以好好看看它的內部代碼了。今天是個很激動的日子,看了talk/base目錄下的代碼,真的寫的特別好,處處體現著effective
Time of Update: 2018-12-05
現在搞iphone開發,一直不是很懂object-c的記憶體管理機制,看到apple的官方文檔寫的不錯而又沒有找到翻譯的文章。於是自己在學習它的過程中就順便把它翻譯了,自己的英語不是太好,文字組織能力那就更菜了,讀的蹩腳之處還望大家指出,我好在以後的翻譯過程中好好改正。第一次翻譯,歡迎拍磚,可不要把我拍死了呀!!!文章中帶有LPSTUDY的字樣表明是我個人的理解,可能會有不對的地方,敬請指教。文章原文連結地址:[html] view
Time of Update: 2018-12-05
如何處理完成連接埠模型(IOCP)的逾時問題.作者: 闕榮文 2011/7/12前言完成連接埠(IOCP)是所有Windows I/O模型中最複雜,也是效能最好的一種.在關於IOCP的編程中,痛點之一就是逾時控制.以下以HTTP伺服器程式為例說一說.其實逾時控制也不是很難,問題是Windows的IOCP模型本身並沒有提供關於逾時的支援(也行以後的版本會有?),所以一切都要有程式員來完成.並且逾時控制對於伺服器程式來說是必須的: HTTP伺服器程式對一個新的用戶端串連需要在完成連接埠上投遞一個
Time of Update: 2018-12-05
用C++實現HTTP伺服器 - Windows平台軟體名: Que's HTTP Server (點擊下載最新版含原始碼)作者: 闕榮文 - Que's C++ Studio 著作權說明: 免費,開放原始碼,禁止用作商業用途.日期: 2011.7.81.