原创 C++技術問題總結-第0篇 類型轉換
從今天開始,對C++常用技術做個總結。 參考書籍:《C++Primer》、《C++對象模型》、《設計模式》、《Windows核心編程》、《STL解密》。 1. static_cast等四個cast的具體意義 C++類型轉換:隱式轉換和
原创 C++調用Java的Jar包
一個簡單需求:用C++調用Jar包。 實現基本思路:調用CreateProcess API來啓動cmd.exe運行jar包。 調用類CJarAppCall。 JarAppCall.h #pragma once class CJarAp
原创 COM編程VS實踐
目錄 1. COM實踐簡介...2 2. COM實踐VC.2 2.1. VC創建COM組件...2 2.2. 使用VC調用...5 2.3. 使用C#調用...8 3. COM實踐C#.9
原创 hadoop2.7.0實踐- WordCount
環境要求 說明:本文檔爲wordcount的mapreduce job編寫及運行文檔。 操作系統:Ubuntu14 x64位 Hadoop:Hadoop 2.7.0 Hadoop官網:http://hadoop.apache.or
原创 虛函數相關問題探索
虛函數相關問題探索 本篇文章中對虛函數做五個方面的探索。 1) 虛函數單一繼承對象模型。 2) 虛表指針與虛表的創建釋放時機。 3) 析構函數設置爲虛函數。 4) 構造函數調用虛函數。 5) 析構函數調用虛函數。 1.
原创 智能指針仿真-002-值型智能指針
1. 概述 本篇對值型的智能指針進行仿真,這類指針所有權是不能共享的。 仿真指針主要有。 1) 舊式stl智能指針:auto_ptr。 2) Boost智能指針:scoped_ptr。 3) C++ 11 tr1的智
原创 智能指針仿真-003-共享智能指針
1. 概述 本篇對共享所有權的智能指針進行仿真。 仿真指針主要有:boost/c++ 11 tr1中的shared_ptr、weak_ptr。 boost與c++ 11 tr1的關係這裏稍微做一下類比,shared_ptr在b
原创 C++技術問題總結-第15篇 內存泄露有哪些方法定位,崩潰有哪些方法定位
Visual C++內存泄露檢測,可採用VLD工具。 VLD:Visual Leak Detector。VLD是一款用於Visual C++的免費的內存泄露檢測工具。他的特點有:可以得到內存泄漏點的調用堆棧,如
原创 模式步步演化組合使用示例
本篇模擬隨着需求的變化,模型步步演化,做個殺雞使用牛刀的組合示例。 參考:設計模式之複合模式。 系統:Windows 7 64位 IDE:VS 2012 1、策略 需求:池塘邊有一羣紅頭鴨(RedheadDuck)和綠頭鴨(Mal
原创 C++技術問題總結-第11篇 網絡通信中主機序網絡序
網絡通信經常涉及到字節序轉化,接下來理解主機序和網絡序有什麼異同。 ①主機字節順序HBO(Host Byte Order) 採用小頭序(little-endian),從低到高的順序存儲。 低位字節排放在內存的低地址端,高位地址排放在高位地
原创 單例模式的多線程安全支持(C++)
單例模式的多線程支持,可以分兩種類型。 1、懶漢模式 C++11要求編譯器保證內部靜態變量的線程安全性,可以不加鎖。但C++11以前,仍需要加鎖。 Lock/UnLock可以採用boost中的技術技術。 class CSingleton
原创 智能指針仿真-001-基礎篇
1. 前言 本次技術研究關注C++中智能指針的原理,對各種類型指針進行仿真實現,將底層核心源碼一段段曝光出來,從頭到外理一遍。 對應文章有三篇,從簡入深。 1) 《智能指針仿真-001-基礎篇》,介紹所需基礎知識。 2) 《智
原创 C++技術問題總結-第14篇 常用設計模式及其應用場景
設計模式是對設計原則的具體化。用江湖話說就是武林祕籍,總結出來的一些固定套路,編程界的《葵花寶典》。 個人意見,編程過程中設計原則進行遵循,對設計模式進行借鑑。完全按照套路來,有時反而簡單問題複雜化。
原创 檢測vector空間自動分配策略
看過《STL源碼剖析》可以知道vector空間的自動分配策略是空間加倍。 由於stl的版本比較多,針對常用的兩個做下檢測,vs2012與gcc 5.3.0 size():獲取當前使用大小 capacity():獲取當前容器大小 分配
原创 STL Sort的五種使用示例
Sort是一種高效的排序算法,常使用的五種示例如下。 示例代碼採用編譯器vs2012,任何一款支持c++11標準的編譯器都可以運行。 包含頭文件 #include <iostream> #include <vector> #includ