Time of Update: 2018-12-03
看完了 W. Richard Stevens 的傳世經典《UNIX 網路編程》, 能照著例子用 Sockets API 編寫 echo 服務, 卻仍然對稍微複雜一點的網路編程任務感到無從下手? 書中範例程式碼把商務邏輯和 Sockets 調用混在一起,似乎不利於將來擴充?網路編程中的遇到一些具體問題該怎麼辦?例如程式在本機測試正常,放到網路運行上就經常出現資料收不全的情況?TCP
Time of Update: 2018-12-03
集12個main為一身的C程式竟然也能運行,而且可移植性為100% 作者:張桂權 這樣的程式竟然也能運行,不是一個工程只能包含一個main嗎? 沒想到吧 ! 什麼事情都有可能發生,而且這樣的事情還多著呢? 如果你只是被它的結構迷惑,那沒關係,不過…… 程式的運行結果可能會讓你更加吃驚了…… 結果是什嗎?編譯運行一下你就知道了。 這不得不讓我想起“The Tao of Programming”中的一句話“編程大師的程式再淩亂,也用不著測試,因為它是正確的”。
Time of Update: 2018-12-03
一個無常的C程式作者:張桂權 謹慎代碼中的bug, 不要做出沒有必要的犧牲。#include <stdio.h>main(){ printf("%g", sqrt(2));}結果:1.531132e-309#include <stdio.h>#include <math.h>main(){ printf("%g",
Time of Update: 2018-12-03
淺談C語言點陣字模編程之一作者:張桂權 漢字點陣式編程之一,DOS下64點陣“我愛你!”的實現。我是在Win-TC編程環境下通過漢字點陣產生工具直接產生512byte的64點陣數組,然後再對起進行操作的來實現的。代碼很簡單。原代碼如下:#include <Conio.h>#include <graphics.h>#define closegr closegraph/*初始化運行環境,註冊驅動程式以實現程式的獨立運行(脫離與Win-TC之間的關係)的功能*/
Time of Update: 2018-12-03
淺談C語言中數組和指標的互操作 作者: 張桂權
Time of Update: 2018-12-03
Please "Learning Standard C++ as a New Language", and "Speaking C++ as a Native"朋友的公司還在用C++的環境編寫著“帶類的C”代碼,每天回來就倒苦水,我曾經工作過的一家公司也有動輒幾千行的C風格的函數這裡概述一下C++最最基本的用法,只能算是入門前的準備工作一、編程本身描述問題,用於與人交流描述解決方案,用於與電腦交流假設解決方案就是問題的描述本身,那麼,這是完美的,例如 Select * From
Time of Update: 2018-12-03
就像<<Ruminations on C++>>一樣,<<Modern C++ Design>>關注的首先是Design,它明確的將這種設計命名為了“基於Policy的編程”,而不再用“模組化”、“封裝變化”等泛泛的術語;其次是C++,核心是TypeList;如果<<Ruminations on C++>>是C++初創的十幾年中Classic
Time of Update: 2018-12-03
可以把這本書重新命名為<<C++設計模式>>,也可以重新命名為<<C++編程思想>>,甚至還可以叫它<<C++語言的設計和演化>>,總之,Koening談到了以上所有方面,並且首先是編程思想和設計原則,其次才是C++,而其與Bjarne
Time of Update: 2018-12-03
再談C語言中數組和指標之間的互操作 作者: 張桂權
Time of Update: 2018-12-03
(翻譯的太差了)一、文法細節C++不允許修改內建類型的臨時變數預設參數根據靜態類型獲得重載的new和delete操作符永遠都是靜態,不管你聲明static沒有二、慣用法選擇前置遞增,只有打算使用初始值時才使用後置遞增,並且使用前置遞增來實現後置遞增注意由隱式轉換建立的隱藏臨時對象;避免這個問題的好辦法,是使用explicit建構函式,避免編寫轉換操作符永遠不要#include不必要的標頭檔;當前置聲明足夠時,永遠不要#include標頭檔明智的使用名稱空間:如果將一個類放入一個名字空間內,那麼一
Time of Update: 2018-12-03
一個讓人發狂的PI求解C程式作者: 張桂權long a=10000, b, c=2800, d, e, f[2801], g;main{ for(;b-c;) f[b++]=a/5;for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c; d+=f[b]*a, f[b]=d%--g, d/=g--, --b; d*=b);
Time of Update: 2018-12-03
慚愧,很久沒有來寫點或者共用點有用的代碼了,一來是工作很忙,二來也是自己懶惰。借今天國慶放假最後一天在家,把自己前段時間積累的點滴放在這裡,以饗大家,如有不合胃口,那就唾之~。在上一篇中,我介紹了一種線程池實現方式(利用系統提供的線程池API)。在這裡,我介紹一個自己實現的線程池方案。線程池的概念我就不再贅述了,可以參看這裡,這裡。線程池是一種模式,類似於作業系統中的緩衝區的概念。下載:CSDN目的:
Time of Update: 2018-12-03
C++ 標準庫中的allocator是多餘的我認為C++的allocator是依賴注入的一次失敗的嘗試。 C/C++裡的記憶體配置和釋放是個重要的事情,我同意,在寫library的時候,除了預設使用malloc/free,還應該允許使用者指定使用記憶體配置的函數。用現在的話說,如果library依賴於記憶體配置與釋放,就應該允許使用者注入這種依賴。我看到有些C
Time of Update: 2018-12-03
Item 4: 確保 objects(對象)在使用前被初始化作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/C++ 看上去在對象的值的初始化方面變化莫測。例如,如果你這樣做,int x;在某些情形下,x 會被初始化(為 0),但是在其它情形下,也可能沒有。如果你這樣做,class Point { int x, y;};...Point p;p 的 data
Time of Update: 2018-12-03
(點擊此處,接上篇)當 object references(引用)和 pointers(指標)可以做到時就避免使用 objects。僅需一個類型的聲明,你就可以定義到這個類型的 references 和 pointers。而定義一個類型的 objects 必須要存在這個類型的定義。 只要你能做到,就用對 class declarations(類聲明)的依賴替代對 class definitions(類定義)的依賴。注意在你聲明一個使用一個 class 的函數時絕對不需要有這個 class
Time of Update: 2018-12-03
期待C++的ABI轉型(cast)其實是一種編譯器指令,大部分情況下它並不改變一個指標所含的真正地址,它隻影響“被指出之記憶體的大小和其內容”的解釋方式;那麼,什麼情況下轉型會導致指標的值發生變化呢?多重繼承時轉向不同基類?Global Objects的記憶體保證會在程式啟用的時候被清0;Local Objects配置於棧中,heap
Time of Update: 2018-12-03
(點擊此處,接上篇)iterator_traits 通過兩部分實現這一點。首先,它強制要求任何 user-defined iterator(使用者定義迭代器)類型必須包含一個名為 iterator_category 的嵌套 typedef 用以識別適合的 tag struct(標籤結構體)。例如,deque 的 iterators(迭代器)是隨機訪問的,所以一個 deque iterators 的 class 看起來就像這樣:template < ... >
Time of Update: 2018-12-03
Item 24: 當希望將 type conversions(類型轉換)應用於所有 parameters(參數)時,請聲明為 non-member functions(非成員函數)作者:Scott Meyers 譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/在本書的 Introduction(導言)中我談到讓 classes 支援 implicit type
Time of Update: 2018-12-03
The Ten Commandments for C Programmers(Annotated Edition)by Henry Spencer1Thou shalt run lint frequently and study its pronouncements with care, for verily its perception and judgement oft exceed thine.This is still wise counsel, although many
Time of Update: 2018-12-03
Item 48: 感受 template metaprogramming(模板元編程)作者:Scott Meyers譯者:fatalerror99 (iTePub's Nirvana)發布:http://blog.csdn.net/fatalerror99/template metaprogramming (TMP)(模板元編程)是寫 template-based(基於模板)的運行於編譯期間的 C++ 程式的過程。考慮一下:一個 template metaprogram(模板元程式)是用 C++