1 Simple Simple

尚未进行身份认证

生命不止,编程不息

等级
博文 61
排名 8w+

C++内存越界导致的std::map异常

C++内存越界导致的std::map异常     前段时间在定位一个程序崩溃的问题,虽然有dump文件,能够看到出问题的具体代码行数,问题都出在同一个map上。     dump1显示map下标插入数据时异常。     dump2显示调用ma...

2019-06-13 21:14:23

LoadLibrary失败,GetLastError= 193

LoadLibrary失败,GetLastError=193LoadLibrary失败,GetLastError报错193时,一般是加载的dll所依赖的某个dll它的依赖项不存在所报的错,可以用DependencyWalker验证该dll所依赖的加载项是否都存在。DependencyWalker安装vs时一般都自带有,如果没有也可以去官网下载http://www.dependencywal...

2019-06-10 09:02:40

内存映射文件的应用

内存映射文件的应用一,操作系统加载EXE和DLL二,读写大文件三,进程间通信     内存映射文件是windows开发下常用的一种技术,既可以用来读写磁盘上的大文件,也可以用来实现进程间的通信,本文主要对内存映射的几大用途做一个简述。一,操作系统加载EXE和DLL     当一个应用程序启动时...

2019-06-08 11:31:35

RabbitMQ-死信队列DLX

RabbitMQ-死信队列DLX一,死信队列二,消息变成死信的几种情况三,死信队列的设置1,使用策略配置2,使用可选队列参数配置3,通过web管理界面设置死信队列四,死信队列的优点一,死信队列     利用DLX,当消息在一个队列中变成死信(deadmessage)之后,它能被重新publish到另一个Exchange,这个Exchan...

2019-05-07 23:23:40

RabbitMQ-operation queue.declare caused a channel exception precondition_failed错误

RabbitMQ-operationqueue.declarecausedachannelexceptionprecondition_failed错误今天早上有个同事在RabbitMQ服务器上做测试时,连续publishmessage两次都导致RabbitMQ服务挂掉,进程直接中止。但是按照他的描述我发布同样的消息,却是正常的。第一反应是查看日志,进入mq的日志目录,默认位置为:...

2019-05-07 22:44:51

RabbitMQ-topic主题模式

RabbitMQ-topic主题模式     Topic:所有符合routingKey(此时可以是一个表达式)的routingKey所绑定的队列可以接收消息;     发送到topic类型交换机的消息的routing_key不能随便设置–它必须是多个单词组成,用点分割。单词可以是任意的,但它们...

2019-05-05 19:48:34

RabbitMQ-direct直通模式

RabbitMQ-direct直通模式     direct:把Exchange上的消息发送到匹配routingkey的队列中。     消费者队列绑定关键字到交换机上,发送者将数据根据关键字发送到交换机上,交换机根据关键字去遍历绑定到它上面的队列,将数据发送至指定关键字的队列。&nbs...

2019-05-02 15:10:46

C++进程间通信之SendMessage和PostMessage

C++多进程通信之SendMessage和PostMessage1,使用介绍2,需要注意的地方3,WM_COPYDATA的原理     SendMessage和PostMessage在Win32编程中是很常见的,主要是用来发送消息到指定的窗口,一般用于工作线程传输数据到UI线程。其中SendMessage函数将指定的消息发送到一个或多个窗口。此函...

2019-04-28 10:27:48

C++虚表地址和虚函数地址

C++虚表地址和虚函数地址虚函数是c++实现多态性的一个重要知识点,本文主要解析虚函数在内存中的地址,以及与虚表地址的关系。声明一个类,包含两个虚函数,一个普通成员函数和一个类成员。调试程序,查看test对象的内存分布如下:_vptr是一个指向虚表的指针,可以理解为一个int*p[2],在本例中,p[0]是指向Test::func1()地址的指针,p[1]是指向Test::func2...

2019-04-12 20:17:44

C++ RabbitMQ封装

C++RabbitMQ封装RabbitMq的源码可以在官网下载https://www.rabbitmq.com/,需要使用cmake转为vs工程。由于源码不大,此处选择编译librabbitmq,生成librabbitmq.4.lib静态库,直接链接到自己的程序中。附上vs版的源码,我使用的是vs2017,低版本的可以自行百度修改vs版本。首先封装CQueue类,包含队列的持久化,自动创建...

2019-03-28 18:43:00

RabbitMQ-fanout广播模式

RabbitMQ发送模式之fanout     fanout:所有bind到此exchange的queue都可以接收消息(纯广播,绑定到RabbitMQ的接受者都能收到消息);     消息的接受者需要创建一个队列,绑定到该fanout交换机上,监听来自发送端的消息广播。广播是实时的,prod...

2019-03-28 18:25:15

memcmp比较结构体

memcmp比较结构体例子1:例子2:在日常编码中,有时为了方便,当一个结构体内不含有指针成员时,我没会使用memcmp来对两个结构体进行比较,但是这种做法不是一个正确的方法,也可能会导致错误的比较结果,我们以下面的例子来进行验证。例子1:#include<iostream>structInfo{ chara; intb;};intmain(){ I...

2019-03-14 22:37:46

makefile通用模板

makefile通用模板结合自己编译redis测试代码,总结出一个makefile模板,以下makefile是以redis的测试代码为例进行验证的(请见我另一篇博文Linux下C++访问Redis)#wildcard把指定目录./和../lib下的所有后缀是cpp的文件全部展开。SRCS=$(wildcard*.cpp)#OBJS将$(SRCS)下的.cpp文件转化为.o...

2019-02-20 22:30:01

Linux下C++访问Redis

Linux下C++访问Redis编译redis例子gcc编译编译redis开发包的下载和编译在其他文章中已经介绍,不熟悉的可以转至[Linux下redis环境搭建]学习。(https://blog.csdn.net/bajianxiaofendui/article/details/87642244)编译完成后进入redis-2.8.3/deps/hiredis目录,可以看到下面已经编译出了l...

2019-02-20 22:20:58

Visual Studio 2010 配置Redis

VisualStudio2010配置Redis下载Redis开发包编译redis项目环境配置例子下载Redis开发包下载地址:https://codeload.github.com/MicrosoftArchive/redis/zip/2.8编译redis解压下载包,在msvs目录下打开RedisServer.sln工程,编译hredis项目:注意项目的运行库配置,保证使用该库的...

2019-02-18 22:08:25

Linux下redis环境搭建

Linux下redis环境搭建1,Redis安装下载redis服务端,输入命令:wgethttp://download.redis.io/releases/redis-2.8.3.tar.gzredis的版本可以自己选择。对压缩包进行解压,输入命令:tarxzfredis-2.8.3.tar.gz然后进入redis-2.8.3目录,输入命令make进行编译编译完成后,...

2019-02-18 20:05:22

Windows下redis环境搭建

Windows下redis环境搭建1,Redis安装,下载地址:https://github.com/MSOpenTech/redis/releases。Redis支持32位和64位。这个需要根据你系统平台的实际情况选择,我的机器是64位,所以下载Redis-x64-xxx.zip压缩包,解压后,将文件夹重新命名为redis,存放路径为E盘。打开redis文件夹如图所示:...

2019-02-18 19:40:29

TeamTalk客户端源码分析七

TeamTalk客户端源码分析七一,CBaseSocket类二,select模型三,样例分析:登录功能     上篇文章我们分析了network模块中的引用计数,智能锁,异步回调机制以及数据的序列化和反序列化操作,本文主要介绍该模块中socket通信的实现。一,CBaseSocket类&

2019-02-13 19:55:05

memmov和memcpy区别

memmov和memcpy区别     memcpy()和memmove()都是c语言的库函数,在头文件string.h中,作用是拷贝一定长度内存的内容。它们唯一的区别是当内存发生局部重叠时,memmove可以保证拷贝正确,memcpy拷贝的结果是未定义的(取决于编译平台内部对memcpy的优化处理)。函数声明如下:void*memmov...

2019-02-12 13:16:13

多线程下的单例模式实现

多线程下的单例模式实现一,单线程下的单实例1,懒汉模式2,饿汉模式二,多线程下的单实例1,加锁2,原子操作     单实例设计模式是我们平常接触最多的一种设计模式,它的特点在于保证一个类只有一个实例,并且对类成员的访问都是通过一个全局访问点来进行的。单实例主要用在整个场景中只能有一个该操作类对象,不允许再有其他的该操作类对象,比如:Http传...

2019-02-11 18:00:38
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。