自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 原子操作及对C++编程的意义

介绍所谓原子操作,就是“不可中断的一个或一系列操作”。在C/C++标准中,一个变量除了使用atomic相关的函数和编译器自带的一些扩展函数(interlocked系列函数)以外,  不保证所有的操作是原子操作,这个取决于运行程序的CPU。在单核心处理器系统中,能够在一条机器指令中完成的操作都可以认为是原子操作,因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and

2015-11-06 18:55:01 1989

原创 MFC CObject简析

//VS2008代码如下class AFX_NOVTABLE CObject{public:// Object model (types, destruction, allocation) virtual CRuntimeClass* GetRuntimeClass() const; virtual ~CObject() = 0; // virtual destructors a

2015-10-29 17:28:34 548

原创 linux源码中关于内存移动或复制的函数详细解说: memmove, memcpy, strcpy

本文讨论的是关于内存复制中内存重叠和不重叠的情况:memmove/*** memmove - Copy one area of memory to another* @dest: Where to copy to* @src: Where to copy from* @count: The size of the area.** Unlike memcpy(), mem

2015-04-19 11:33:59 2206

原创 C++ 中wchar_t范围来判断其是否是中文,数字还是其他

下面是各语言在Unicode中的范围:0000:Basic Latin 基本拉丁语0080:Latin-1 Supplement 拉丁语-1补遗0100:Latin Extended-A 拉丁语扩充-A0180:Latin Extended-B 拉丁语扩充-B0250:IPA Extensions 国际音标02B0:Spacing Modifier Letter

2015-03-11 11:20:28 3718

转载 从字体文件中获取字体名字

IntroductionEveryone can get a font name of one of installed fonts. But what if the font is still not installed in the system and you want to know what is that, programmatically? Of course you can

2015-01-05 10:38:15 1996

转载 GUID生成

windows下使用微软guidgen.exe//--生成GUID的代码//--相关程序/微软guidgen.exe#include "stdafx.h"#include #include //--生成GUIDconst char* newGUID(){ static char buf[64] = {0}; GUID guid; if (S_OK == ::CoCrea

2014-12-29 13:54:16 499

转载 strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l

将一个字符串的字符复制给另一个。strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l 的这些版本如 CRT 中的安全功能 所述,其安全得到了增强。 重要事项_mbsncpy_s 和 _mbsncpy_s_l 不能在 Windows 运行时中执行的应用程序中使用。 有关详细信息,请参见 CR

2014-12-12 17:43:29 3496

转载 C++ 异常

一、什么是异常处理        一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想        C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这

2014-12-08 14:29:39 622

原创 protocol buffer出现大量链接错误

最近拿到公司一个与protocol buffer有关的

2014-09-05 11:44:33 719

原创 timer.hpp

class timer{ public:         timer() { _start_time = std::clock(); } // postcondition: elapsed()==0//         timer( const timer& src );      // post: elapsed()==src.elapsed()//        ~time

2014-09-02 14:22:34 293

转载 mkdir函数-linux

mkdir函数头文件库:#include #include 函数原型:int mkdir(const char *pathname, mode_t mode);函数说明:mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。返回值:若目录创建成功,则返回0;否则返回-1,并将错

2014-06-26 15:55:35 3941

转载 Linux下eclipse修改Makefile参数的方法

我再Linux下使用eclipse时,Makefiel文件可以由eclipse自动生成,可以通过修改它的工程配置来改变Makefile的参数 如:在使用线程操作时,需要添加-lpthread才能编译通过,修改方法如下:1、打开eclipse工程文件属性: 选择C/C++ Build-->GCC C Link-->Miscellaneous: 

2014-06-24 14:22:57 4421

转载 gcc中-pthread和-lpthread的区别

用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样:Shell代码  gcc -c x.c  gcc x.o -ox -lpthread   而gcc手册里则指出应该在编译和链接时都增加 -pthread 选项,像这样:

2014-06-24 14:17:09 564

转载 Makefile经典教程(掌握这些足够)

makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写make

2014-06-24 09:00:17 2840

转载 Eclipse开发C/C++之使用技巧小结

我需要在Linux下开发C++项目,没有VS,用Vim开发是不错,但项目大了,效率就跟不上IDE了,所以选了Eclipse+CDT插件。当然,Vimers觉得我说的不对的请勿喷哈,我也是水手一个。Eclipse是个很不错的集成开发环境,安装CDT插件后即可开发C/C++项目。我的默认安装了CDT,没有装的网上一搜一大堆。这里不再赘述,直入主题吧。内容概要

2014-06-23 13:28:55 548

原创 设计模式中的委托形式

委托():是一种组合方式

2014-06-12 17:55:29 358

原创 创建模式之生成器BUILDER

先看结构图:

2014-06-12 15:56:43 258

原创 创建模式之抽象工厂Abstract Factory

此模式相对比较简单,是简单的

2014-06-12 15:15:04 235

原创 设计模式之创建型:抽象工厂和生成器的混合使用

#pragma once#include #include namespace MazeSite{//====================================================================================================================/// /// 方向, 依次是: 北,

2014-06-12 11:37:57 298

转载 C#与C/C++的交互

最近在编写Warensoft3D游戏引擎,并预计明年年初发布测试版本,底层引擎使用DirectX和MONO来编写,上层的逻辑使用C#来编写,因此编写了大量C#与C++互调的代码,现在经验写出来与大家分享,并希望后来者少走弯路。C#与C++交互,总体来说可以有两种方法:利用C++/CLI作为代理中间层利用PInvoke实现直接调用第一种方法:实现起来比较简单直

2014-06-05 10:35:12 679

原创 行为模式之解释器模式-INTERPRETER

稍后

2014-06-03 13:29:03 444

原创 行为模式之命令模式-COMMAND

稍后继续

2014-05-31 12:10:52 229

原创 行为模式之职责链-CHAIN OF RESPONSBILITY

应用

2014-05-30 23:07:42 258

原创 行为模式之访问者模式-VISITOR

应用开发一个编译器,

2014-05-30 17:55:18 426

原创 行为模式之观察者-OBSERVER

本文参考书籍:《Design Patterns Elements of Reusable Obje

2014-05-30 12:57:56 291

原创 设计模式总结之行为模式总览

行为模式设计到两个方面的内容: 类之间的关系和duixi

2014-05-30 10:41:52 251

转载 提高编程能力的7条建议

编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的。很多人在学习编程之初就被困难击败了。  当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识。只要你通过了这一困难的学习阶段,你就会发现一个全新的世界。   以下是一些能够帮助你快速提高编程技巧的建议。  1.  多写代码  学习某件事情最好的办法就是练习。你应该花大量时间

2014-05-29 13:31:40 550

转载 C++11 中的线程、锁和条件变量

线程类std::thread代表一个可执行线程,使用时必须包含头文件。std::thread可以和普通函数,匿名函数和仿函数(一个实现了operator()函数的类)一同使用。另外,它允许向线程函数传递任意数量的参数。1234567891011121314

2014-05-26 10:40:38 781

转载 最丑陋的C语言特性:tgmath.h

是一个在C99引入的,标准C语言库提供的头文件。对于Fortran编写的数值软件,它向C语言提供更加简洁的接口。跟C语言不同,Fortran提供了编写在该语言内部的“固有函数”,其表现得更像操作符一样。固有函数接受不同类型的参数,并根据参数的类型返回对应类型的返回值。同时,Fortran中的普通函数(“外部函数”)的行为跟C语言中的函数类似,对类型要求严格(即函数参数的类型必须符合,返回值

2014-05-26 10:37:24 766

转载 C\C++代码优化的27个建议

本文由 伯乐在线 - 周昌鸿 翻译自 cs.clemson.edu。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。1. 记住阿姆达尔定律:funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经

2014-05-26 10:24:42 637

翻译 使用VS从DLL中产生LIB文件

Generate a .lib from a DLL with visual studio

2014-05-23 09:09:43 677

转载 Unix/Linux编程日期时间汇编

Unix/Linux 时间类型Unix/Linux下有以下几种时间结构:1、time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒;由函数time()获取;     该类型定义在头文件 /usr/include/sys/time.h 中:     #define _TIME_T       typedef   long   ti

2014-05-22 20:15:40 485

转载 Windows下日期时间编程简单总结

Windows下日期时间编程简单总结

2014-05-22 20:14:27 550

转载 c++钻石-菱形继承

在C++中,什么叫做钻石问题(也可以叫菱形继承问题),怎么避免它?下面的图表可以用来解释钻石问题。假设我们有类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C。因为上述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)。现在,我们将上面的图

2014-05-22 20:11:10 918

转载 DllMain和多线程死锁

感谢源作者:http://blog.csdn.net/guke1978_123/article/details/625773

2014-05-22 20:07:20 1179

转载 A Fractal Model of the Lifecycle of Reusable Objects

A Fractal Model of the Lifecycle of Reusable Objects

2014-05-21 14:06:05 694

原创 GDI将CDC中的位图保持bmp格式文件,解决GetDIBits调用出错的情况

/// /// 保存图像/// /// 路径/// 图片/// CDCvoid vOrientMap::SaveBmpFile(const char* pPath,CBitmap& bitmap,CDC* pDC){ BITMAP bitm; bitmap.GetBitmap(&bitm); //1.BITMAP文件头部 BITMAPFILEHEADER bfh; bfh

2014-05-20 12:02:29 939

原创 BUILDER 和 FACTORY METHOD

目前在写一个地图编辑器,zai

2014-05-16 14:30:52 120

转载 windows下的_mkdir 和 linux下的mkdir

需要注意的是 windows下的_mkdir()只需要一个路径的参数,而linux下的mkdir()需要两个参数,第一个是路径,第二个是权限。以下是linux下的mkdir的讲解:NAMEmkdir - make a directorySYNOPSIS#include sys/stat.h>int mkdir(const char *path, mode_t

2014-05-13 15:55:25 6945

转载 伙伴算法

伙伴算法在内存管理中用来消除外部碎片,用Wolfgang Mauerer(《深入linux内核架构》的作者)的话说“伙伴系统基于一种相对简单然而令人吃惊的强大算法,已经伴随我们几乎40年。它结合了优秀内存分配器的两个关键特征:速度和效率。”那么就来介绍下伙伴算法的实现。首先先来了解下linux内存管理的架构,用于了解伙伴算法所在的位置:这张图的原型来自ULK p303,这张图能较直观的

2014-05-13 13:08:40 1941

ET++ An object-oriented application framework in C++

ET++ An object-oriented application framework in C++

2014-05-23

Unix v6源代码

Unix v6源代码,与<<莱昂氏UNIX源代码分析>>相匹配。 代码大多位于/usr/sys:/usr/sys/ken:/usr/sys/ken中。

2012-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除