原创 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