自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 关于boost库的Asio中设置connect超时和read超时的一种解决方案

编写Asio中的同步或异步客户端时,库本身并没有提供超时机制,网上看了很多解决方案,看起来不是很简洁,想了一种思路,欢迎讨论在使用同步client的时候,有时候会出现一种情况,可以成功打开客户端链接,但是数据发过去之后,很长时间收不到返回值,这个时候就会将进程或者线程阻住,影响其它业务的执行,所以想到用一个异步定时器,来控制超时,定时器代码实现如下:#pragma once#...

2019-09-04 11:42:52 7418 1

原创 Kafka性能优化---2

接上一篇:http://blog.csdn.net/zhu_0416/article/details/79102010题外话: 上一篇简单说了一下自己对kafka的一些基础理解,以及c++中如何利用librdkafka来实现我们自己的业务需求。这一篇就来研究研究一些另类玩法,跟代码无关,用到的技术也不算新,但是令我感到意外的是,竟然没有人这么使用过,实践过。。。 我挺难受的,这

2018-01-20 11:36:47 3256 2

原创 Kafka性能优化---1

吐槽语:17年初的时候听说了Kafka这个东西,传闻甚巨,传其有神鬼莫测之性能,于是抱着站在巨人肩膀上的态度开始虚心钻研,从此就踏上了一条踩巨人肩膀的坑之不归路。。。初时,花了两天时间查阅了Kafka相关资料,胸有成竹之际从官网下载了最新的Kafka和最新的zookeeper,想搭建一个环境来测试一二。按照网上的教程一步一步,摩擦摩擦,结果biu的一下就搭建好了,so easy?!  遂开

2018-01-19 22:31:28 7643 2

原创 C++通用数据库操作类实现

业务中涉及到要实现数据库操作的通用化,想了一种思路,欢迎讨论sql语句在xml配置时写法  读取配置文件里的查询语句,XML里需要注意特殊符号转换  XML里表示=需要加  XML文档中包含类似"Elements look like "的文本,其中的""将被解析程序解 释成一个元素,而人们实际想要的是""所表示的原义文本。    CDATA区:它的全称为charac

2016-12-12 15:16:02 11982 41

转载 C++中将某个目录下的所有文件名读到一个数组里

#include // project->settings->general->Use MFC in a shared DLL#include using namespace std;void FindAllFile(CString path, CString* filenames, int& count){ CFileFind finder; BOOL working = fi

2015-03-20 18:20:44 1289

转载 C++中用 GetModuleFileName()函数 获得程序当前的运行目录

在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetModuleFileNamDWORD WINAPI GetModuleFileName( HMODULE hModule, LPTSTR lpFileName, DWORD nSize);hModule:要获取文件名的模块名柄,null表示当前模块lpFileName:输出参数,存放取得的文件名nSize

2015-03-20 18:09:13 20406

转载 C++文件操作

C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来)打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来

2015-03-13 10:20:22 740

转载 VC环境下Debug版本和Release版本的根本区别

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不

2015-03-11 14:32:34 489

转载 Microsoft Visual Studio C 运行时库在 XXX.exe 中检测到一个错误。

Microsoft Visual Studio C 运行时库在 XXXX.exe 中检测到一个错误。按“中断”以调试程序,或按“继续”以终止程序。当点击中断调试的时候,程序会执行到绿色这一行:void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved){  /* assign 0 to _debugger_hook_dummy

2015-02-25 15:37:24 3804

翻译 activemq-cpp-library-3.8.3中的README.txt中文翻译文档

ActiveMQ-CPP库-------------------------------------------------- ------------------------ActiveMQ-CPP库是一个可以使用多种协议来跟MOM(如ActiveMQ)交互的消息库。1需知----------------------------------------

2015-02-03 14:54:05 941

转载 ActiveMQ的开发步骤及相关教程

原文:http://www.cnblogs.com/blsong/archive/2012/09/26/2704337.html一、特性及优势1、实现JMS1.1规范,支持J2EE1.4以上2、可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM)3、支持多种语言客户端(java, C, C++, AJAX, ACTION

2015-02-02 18:40:06 1758

转载 解决ActiveMQ中,Java与C++交互中文乱码问题

原帖出处:http://witcheryne.iteye.com/blog/1032720 最近在尝试使用ActiveMQ做系统间的继承,当然少不了Java和C++客户端的交互问题。由于Java与C++在字符串上采用了不同方式的编码(Java-Unicode, C++ - ascii)造成了文本数据传输过程中的编码问题, 下面记录一下解决方环境:C++ 端:

2015-02-02 17:18:49 1355

转载 消息队列ActiveMQ

参考文档:官网(http://activemq.apache.org/)开源中国社区(http://www.oschina.net/p/activemq)专门介绍原理(http://blog.csdn.net/kongjing0815/article/details/8177459)基础知识1. 基本信息:1. 下载a

2015-02-02 12:14:45 958

转载 STL中map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有

2015-02-02 11:43:44 482

转载 WSAStartup函数的使用

一、WSAStartup函数                 int WSAStartup                       (                           WORD wVersionRequested,                           LPWSADATA lpWSAData                         

2015-02-02 11:36:05 1705

转载 #pragma once 与 #ifndef 解析

为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。    方式一:    #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 声明、定义语

2015-02-02 10:15:54 431

转载 define typedef的区别以及常量的定义

typedef用法 1、 为现有数据类型定义同义词  typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。 例如: typedef int size; 此声明定义了一个 int 的同义字,名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size:    void measu

2015-02-02 10:09:20 1163

转载 Flash游戏破解参考

编 者按:工作、学习之余,玩一会Flash小游戏,放松一下紧绷的神经,是不少朋友的最爱。不过,大部分Flash小游戏并不提供SWF文件的下载,想玩游 戏就必需打开网页,也给我们带来了不小的麻烦。当然,小小的问题难不倒我们,通过各种途径,我们依然可以获取各种被加密的SWF文件,从而无需联网,便能 在本地运行Flash小游戏。对症下药,玩转Flash游戏下载Flash游戏下载,关键便在

2014-05-24 11:59:26 12984 1

转载 C++异常处理

异常(exception)是c++中新增的一个特性,它提供了一种新的方式来结构化地处理错误,使得程序可以很方便地把异常处理与出错的程序分离,而且在使用上,它语法相当地简洁,以至于会让人错觉觉得它底层的实现也应该很简单,但事实上并不是这样。恰恰因为它语法上的简单没有规定过多细节,从而留给了编译器足够的空间来自己发挥,因此在不同操作系统,不同编译器下,它的实现是有很大不同的。这篇文章介绍了window

2014-03-20 02:54:46 1217

转载 游戏逻辑层在Lua中的内存泄漏与防范

Lua会造成内存泄露的表征分析:#因素一:(实例型)实体资源的创建持有者和调用者,相互之间如果太过信任,那么对调用者就会形成过高的要求,创建者可以让任意的调用者进行任意的create,调用者消费后以为创建者会管理(销毁),但其实并非如此,比如有这样一个实体管理器xxxManager,它有接口createXXX/removeXXX, 那么,创建和销毁的权利都丢给了调用者,如果调用者光create

2014-02-28 03:53:12 997

转载 游戏开发中内存泄露的一些防范措施

在OpenRO项目过程中,遇到了一些Memory Leak的问题,采取了一些预防措施后,发现有利也有弊,在此总结一下。关于内存泄露,最共性的就是new一个内存块后忘记delete了,对此,我介绍2个措施,shared_ptr 与 DEBUG_NEW。一,shared_ptr:这是boost库里的引用计数指针,它的好处是,把资源的释放交给shared_ptr管理,只要内存中存在指针的

2014-02-28 03:51:32 1080

转载 线程和进程

对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。这个说法不准确,但是可以指出期间的差别;进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中

2014-02-28 03:46:14 524

转载 常用的排序算法

所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。当待排序记录的关键字都不相同时,排序结果是惟一的,否则排序结果不惟一。在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生改变,则称这种排序方法是不稳定的。要注意的是,排序算法的稳定性是针对所有输入实例而言

2014-02-28 03:42:17 503

转载 STL中的map和hashmap数据结构

STL中map的数据结构1.map定义map是键-值对的集合。map类型通常可以理解为关联数组:可使用键作为下标来获取一个值,正如内置数组类型一样。而关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置来获取。map模板原型:template ,                 class Allocator = allocator > > class ma

2014-02-28 03:35:55 7395 1

转载 几种常见容器的比较:vector,map,hashmap,list,set

list支持快速的插入和删除,但是查找费时;vector支持快速的查找,但是插入费时。map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的。如果我自己写,我也会用二叉检索树,它在大部分情况下可以保证对数复杂度,最坏情况是常数复杂度,而std::map在任何情况下都可以保证对数复杂度,原因是它保证存诸结构是完全二叉检索树,但这会在存诸上牺牲一些时间。STL   中的  

2014-02-28 03:30:36 2822

转载 游戏中自动寻路通用算法

寻路是游戏中非常重要的一个元素,如何找到一条最短的路径是程序需要设计的算法,现在最为流行的寻路算法是A*算法。A*算法与状态空间搜索结合的相当紧密。    状态空间搜索,就是将问题求解的过程表现为从初始状态到目标状态寻找这个路径的过程,通俗的说就是在解一个问题的时候找到一条解题过程可以从求解的开始到问题的结束。    由于求解过程中求解条件的不确定与不完备性使得问题的求解过冲中的分支有很多

2014-02-28 03:22:26 3009

转载 深度优先算法和广度优先算法

深度优先搜索算法(Depth-First-Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。深度优先搜索是图论中的

2014-02-28 03:19:29 4259

转载 new/delete和malloc/free的使用场合和区别

相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

2014-02-28 03:08:29 644

转载 c/c++和java层函数互调

本文主要实现两个功能:(1)通过Android sdk的API得到应用程序的包名(PackageName),然后传递给c++层函数。(2)通过c++函数调用Android的java层函数,显示一个对话框,点击按钮退出程序。1. 首先来简单学习一下JNI的相关知识,我这篇文章中简单实现了怎么在Android Java层调用c++函数。要想使用JNI,必须得包含头文件,android是使用

2014-02-28 02:55:02 735

转载 const与#define优缺点

http://bbs.csdn.net/topics/310170662

2014-02-28 02:37:38 618

转载 游戏中常用的设计模式

使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,伍但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一:观察者Observer观察者的设计意图和作用是: 它将对象与

2014-02-28 02:35:17 1458

转载 C++中四种类型转换方式

类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些

2014-02-28 02:30:16 441

转载 extern “C”作用详解

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。这个功能十分有用处,因为在C

2014-02-28 02:29:01 516

转载 虚函数和纯虚函数的区别

虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtual void Eat(){……};void Move();pr

2014-02-28 02:26:52 978

转载 C++中引用和指针的区别

温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自

2014-02-28 02:24:51 441

空空如也

空空如也

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

TA关注的人

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