原创 Unix網絡編程—— shutdown與close

TCP的連接終止序列: TCP建立一個連接需要三次握手,但是終止一個連接需要四次揮手: 1. 當某個應用進程主動調用close時,它向對端發送一個FIN分節,表示這端需要關閉連接 2. 當對端接收到FIN分節時,read函

原创 許願2016

你之所以這麼晚不想睡,是因爲沒有結束今天,面對明天的勇氣。 1.堅持學習、寫博客——所有不做記錄的讀書學習都是不負責任的 2.切勿浮沙築高臺 3.簡單生活、輕裝上陣、運動的人最美麗 4.見心明性,相由心生

原创 Unix網絡編程——常見輔助函數總結

主要總結:網絡編程接口中網絡字節序與主機字節序的轉換、主機信息與套接字信息的解析、點分十進制字符串與十進制整數的轉換等。 網絡字節序與主機字節序的轉換函數: #include <arpa/inet.h> uint32_t hton

原创 [C++雜談]C++的多態

C++的多態實現了“一種接口,多種方法”,即當給一個對象發送一個通用的信號時,該對象能夠調用正確的方法來響應。多態可以引用多個類的實例,醫用多態,程序員可以給一個對象發送消息來完成一系列操作,而不用關心軟件系統在系統設計階段是如何

原创 [C++算法]六種簡單算法

#define SIZE_OF_ARRAY(x) (sizeof(x) / sizeof(x[0])) void swap(int &a,int &b) { int tmp = a; a = b; b = tmp; }

原创 [C++雜談]:MFC中使用excel2007讀寫excel表格

環境:vs2015,excel2007,win7 64位 第一步:建立MFC工程,導入Application Range Workbook Worksheet Workbooks Worksheets //最終要包含的exc

原创 more effective c++——Item M29 引用計數(一)簡略的rfstring類設計和寫時拷貝

引用計數的特點及作用 1. 引用計數允許多個相同值得對象共享這個值得實現 2. 引用計數可以節省空間、拷貝及析構的開銷 3. 引用計數可以簡化對象的追蹤過程,比如在垃圾體系回收中 引用計數的簡單實現: 如果要

原创 more effective c++——Item M30 代理類(一)多維數組的實現

代理類:用一個類來實現我們所需要的而 C++語言中並沒有提供的東西,用戶並不需要該類的具體實現 總結: 1.模板類中,輸入輸出操作符重載不能在模板類外部實現 2.數組類需要提供基本的操作:單參構造,拷貝構造,賦

原创 [C++雜談]C++遇到的坑

一、宏在字符串中的使用 在使用C++調用SQLITE的demon中,將宏替換寫入了一個字符串中,但運行的時候與預期不一致。 先看代碼: #define _VAR_ARG_20 (20) #define _VAR_ARG_40 (

原创 more effective c++——Item M30 代理類(二)通過代理類識別operator[]的讀寫操作

在我們的帶引用計數的string類中對於operator[]的操作分爲cosnt和非const,const對象調用不會修改string對象的值的函數,並假定非const的operator[]調用時會修改string對象的值,因此非co

原创 effective STL 讀書筆記——第四章:迭代器

條款26:儘量用iterator代替const_iterator,reverse_iterator和const_reverse_iterator 1.四個迭代器的轉換關係 iterator可以轉換爲其他三個迭代器,const的迭代器之間可

原创 01 C#截圖操作(一、基本操作)

前言: 截圖的幾種實現思路 圖片的基本操作 獲取屏區域 獲取屏幕截圖 將指定圖片灰度化 在圖片的指定區域繪圖 bitmap 和 image 轉換 Bitmap 和 byte[] 轉換 前言: 最近學習C#,想找個練手

原创 十三張/十三水 最優組合

十三水規則: 二到四人對局,,一副牌,除去大王,小王,剩下總共52張牌;遊戲中每人獲得13張牌; 遊戲規則 每位玩家需將手上的13張牌分成頭、中、尾三墩牌,頭墩三張,中尾墩各五張。 2) 普通牌型(3、5張牌)

原创 [C++雜談]——C++指針

 1.何爲指針:   程序運行時,任何變量都是存放在內存中的,通過將內存以字節的大小劃分,爲每個字節增添索引,某一變量的地址就是該變量在內存中所佔的第一個字節的索引。此時,定義一變量用來存放開始第一個字節的索引,這個變量就被稱爲指針,通

原创 C++數據結構與算法——第八章:二叉樹

注意: 1.成員函數指針的聲明/定義及使用(typedef void(BinaryTree::*VISIT)(treenode *node);) 2. destroy時不能進行前序/中序遍歷,最好使用非遞歸的層次遍歷進行刪除 3.在類