Time of Update: 2015-08-20
標籤:轉自: http://coolshell.cn/articles/4102.html昨天寫了一篇如何學好C語言,就有人回複問我如何學好C++,所以,我把我個人的一些學習經驗寫在這裡,希望對大家有用。首先,因為如何學好C語言中談到了演算法和系統,所以這裡就只談C++語言。C++是最難的語言。這個世界上最難的程式設計語言可能非C++莫屬了。你千萬不要以為幾天就可以學好C++,C++的學習曲線是相當BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到了有點BT和恐怖的地步。我甚
Time of Update: 2015-08-19
標籤:c語言 記憶體配置 strlen sizeof 還是在大學時代接觸的C語言,當時學習數組、指標等概念時,怎一個“暈”字了得。最近在學習之餘,瘋狂地惡補了相關知識,故總結之,如有錯誤,請大家多多指點。一、 記憶體位址分析1) 先來看一個最基礎的例子:int a[4];提問:&a[0], a, &a, a
Time of Update: 2015-08-19
標籤:基本測試代碼#include<iostream>#include<functional>void func(void){ std::cout << __FUNCTION__ << std::endl;}void callback(std::function<int(int,char*)> fr){ fr(1,"gdg");}int strlength(int n,constchar* str){return n + strlen(
Time of Update: 2015-08-19
標籤:建議87:區分WPF和WinForm的執行緒模式WPF和WinForm表單應用程式都有一個要求,那就是UI元素(如Button、TextBox等)必須由建立它的那個線程進行更新。WinForm在這方面的限制並不是很嚴格,所以像下面這樣的代碼,在WinForm中大部分情況下還能運行(本建議後面會詳細解釋為什麼會出現這種現象):private void buttonStartAsync_Click(object sender, EventArgs e) { Task t =
Time of Update: 2015-08-19
標籤:不知道怎麼評價這個特性。。。代碼#include<iostream>#include<type_traits>//繼承integral_constant可以方便寫靜態變數structGetSize: std::integral_constant<int,1>{};template<class T,T v>struct integral_my{staticconst T value = v;typedef T
Time of Update: 2015-08-19
標籤:在使用CodeBlocks編譯C++程式時, 編譯器的時候出現如下錯誤:undefined reference to `[email protected]‘undefined reference to `[email protected]‘undefined reference to `[email protected]‘undefined reference to `[email protected]‘undefined
Time of Update: 2015-08-19
標籤:下載見C++開發的論壇系統 - BBS:Fetch_source_code_release_vse2008_v1.2.1.7z眼下先暫存在百度雲上,最近會放入github目前的版本號的代碼使用的標準C/C++在Windows上開發。使用的是Visual C++ Express 2008編譯如有問題可增加QQ群:117399430------------------------------------------------
Time of Update: 2015-08-19
標籤:#define min(x,y) ({ \ typeof(x) _x = (x); \ typeof(y) _y = (y); \ (void) (&_x == &_y); \ // 為了當x,y 是運算式的時候,編譯報錯如i++,j++; 或者是 x y
Time of Update: 2015-08-20
標籤:條款7 辨別使用()與{}建立對象的差別基礎知識 目前已知有如下的初始化方式:int x(0);int y = 0;int z{0};int z = {0}; // the same as above 在以“=”初始化的過程中沒有調用賦值運算,如下例所示:Widget w1; // default ctorWidget w2 = w1; // copy ctorw1 = w2; // assignment, operator
Time of Update: 2015-08-20
標籤:今天得空繼續掃了一下(https://computing.llnl.gov/tutorials/pthreads/,這次沒有用c++,直接參考的tutorial中的c語言實現)pthread中提供的另一種線程同步的方法:condition variables既然已經有了mutex,為什麼還要有condition variables這樣的技術手段呢?原文的闡述是:“While mutexes implement synchronization by controlling
Time of Update: 2015-08-20
標籤:瞭解編譯過程的益處c++工程相關的問題什麼是庫?靜態庫和動態庫又有什麼區別?標頭檔起什麼作用?編譯過程簡介名詞:編譯:把源檔案中的原始碼翻譯成機器語言,儲存到目標檔案中。如果編譯通過,就會把CPP轉換成OBJ檔案。編譯單元:每個cpp就是一個編譯單元,每個編譯單元相互之間是獨立且相互不知的。一個編譯單元(Translation Unit)是指一個.cpp檔案以及這所include的所有.h檔案,.h檔案裡面的代碼將會被擴充到包含它的.cpp檔案裡,然後編譯器編譯該.cpp檔案為一
Time of Update: 2015-08-20
標籤:因為要做流體布局,但兩個控制項沒辦法組合,就做自訂控制項。這個控制項需要一個text設定文本,一個pic設定圖片顯示,圖片通過選擇擷取,在屬性面板裡能夠修改。添加使用者控制項之後就可以自己隨意設定控制項內容了,這裡說下關於屬性的一些設定。自訂控制項顯示在工具箱的開關:將true改為false就可以不顯示了。[ToolboxItem(true)]public partial class UserControl1 :
Time of Update: 2015-08-20
標籤:建議90:不要為抽象類別提供公開的構造方法首先,抽象類別可以有構造方法。即使沒有為抽象類別指定構造方法,編譯器也會為我們產生一個預設的protected的構造方法。下面是一個標準的最簡單的抽象類別: abstract class MyAbstractClass { protected MyAbstractClass(){}
Time of Update: 2015-08-20
標籤:方法一:我使用XmlReader來處理,因為覺得XmlReader簡單點。我自己做了個例子來說明,例子裡的XML不是很複雜,沒有子節點的。XML 檔案(a.xml):<?xml version="1.0" encoding="utf-8" ?><PROFILE> <PROFILEID>0001</PROFILEID> <DESCIPTION>我的內容</DESCIPTION>
Time of Update: 2015-08-19
標籤:c# json 序列化 javascriptserializer 還原序列化 /// <summary> /// 將對象轉換為 JSON 字串 /// </summary> /// <typeparam
Time of Update: 2015-08-19
標籤:建議85:Task中的異常處理在任何時候,異常處理都是非常重要的一個環節。多線程與並行編程中尤其是這樣。如果不處理這些背景工作中的異常,應用程式將會莫名其妙的退出。處理那些不是主線程(如果是表單程式,那就是UI主線程)產生的異常,最終的辦法都是將其封裝到主線程上。在工作平行程式庫中,如果對任務運行Wait、WaitAny、WaitAll等方法,或者求Result屬性,都能捕獲到AggregateException異常。可以將AggregateException異常看做是工作平行程式庫編程中
Time of Update: 2015-08-19
標籤:建議89:在並行方法體中謹慎使用鎖除了建議88所提到的場合,要謹慎使用並行的情況還包括:某些本身就需要同步啟動並執行場合,或者需要較長時間鎖定共用資源的場合。在對整型資料進行同步操作時,可以使用靜態類Interlocked的Add方法,這就極大地避免了由於進行原子操作長時間鎖定某個共用資源所帶來的同步效能損耗。回顧建議83中的例子。static void Main(string[] args) { int[] nums = new int[] { 1, 2, 3, 4 };
Time of Update: 2015-08-19
標籤:建議88:並行並不總是速度更快並行所帶來的背景工作及任務的管理,都會帶來一定的開銷,如果一項工作本來就能很快完成,或者說迴圈體很小,那麼並行的速度也許會比非並行要慢。看這樣一個例子,我們比較在同步和並行狀態下的時間消耗:static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); DoInFor(); watch.Stop();
Time of Update: 2015-08-19
標籤:建議86:Parallel中的異常處理建議85闡述了如何處理Task中的異常。由於Task的Start方法是非同步啟動的,所以我們需要額外的技術來完成異常處理。Parallel相對來說就要簡單很多,因為Parallel的調用者線程會等到所有的任務全部完成後,再繼續自己的工作。簡單來說,它具有同步的特性,所以,用下面的這段代碼就可以實現將並發異常封裝到主線程中:static void Main(string[] args) { try { var
Time of Update: 2015-08-19
標籤:欲成為海洋大師,必知曉海中每一滴水的真名。剛開始只是想找一個轉換JSON數組的方法,結果在MSDN翻到一大把。搜尋過程中免不了碰到一大堆名詞:WCF => DataContract => DataMember =>