- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 Ice插件开发
ICE插件开发都要从Ice::Plugin继承,实现initialize()和destroy()两个接口,如ICEloggerPlugin的实现:Class ICE_API LoggerPlugin : public Ice::Plugin{Public:LoggerPlugin(constCommunicatorPtr& communicator, const LoggerP
2014-03-25 10:43:39
2401
原创 libjson的使用问题
原先项目中一直使用boost的property_tree构造json,如果json格式比较简单而且数据量不大时,没感觉到什么问题,但结构内嵌有3层对象以上,并且有数组结构时,性能问题就突显出来了,实在慢的难以忍受。所以决定舍去寻求另一个更快的json库,根据google搜索量选择了jsoncpp,比boost的快6~7倍左右,但是还觉得不够快,因为同样的json格式还需要2毫秒左右。最后寻找到了l
2014-03-17 14:58:01
3453
3
转载 ICE的连接机制
1、当使用ICE的proxy进行方法调用时,ICE运行环境会建立一个到服务器的连接。当proxy提供了多个endpoint时 默认的ICE运行环境选择endpoint的行为为random,可以通过ice_endpointSelection设置选择endpoint的方式为order 也可以通过设置属性:Ice.Default.EndpointSelection、name.Endpoi
2014-03-03 15:42:27
2587
原创 Ice 配置部署
ICE提供了灵活的配置部署方案,但为了减轻运维人员的工作量,开发的时候统一约定了一种规则,以便能够简易安装部署,所以总结了一套配置的规则。1.1 目录结构1.2 Icegridregistry配置与运行根据高可用的方案,启动两个registry,一个作为master,另一个作为replica。1) config.master的配置如下
2014-03-03 15:33:07
7921
原创 Ice 安装说明
环境:centos 6.4gcc 4.8.2make 3.81ice 3.5.1安装步骤:1) 安装依赖库Mcpp从www.zeroc.com 下载ThirdParty-Sources-3.5.1.tar.gz$ tar xvf ThirdParty-Sources-3.5.1.tar.gz $ cd ThirdParty-Sources-3.5.1$ tar xv
2014-03-03 15:17:01
5578
原创 Ice Session的使用
IceGrid提供了一种资源分配的方案,用于协调访问IceGrid应用的对象和服务。客户端创建session首先要通过IceGrid注册服务或者Glacier2路由器的验证,才能获得资源服务的使用权。如果客户端在一段时间内(默认60秒)没有keepAlive或者主动放弃session,资源服务会被释放(注:资源服务被分配,资源服务会被激活启动,释放的时候会被关闭),这时其它客户端才能有机会获得资源
2014-03-03 14:50:15
4138
转载 查看系统块大小
查看操作系统块大小在WINDOWS系统上,可以用命令fsutil来查看,测试如下:C:\Documents and Settings\administrator>fsutil fsinfo ntfsinfo c:NTFS 卷序列号 : 0x72ccb5f2ccb5b129版本 : 3.1区数量 : 0x0000000008ff8235簇总数 : 0x00000000011f
2013-11-20 09:58:56
1197
原创 编写的windows程序,崩溃时产生crash dump文件的办法
一、引言dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草。windows程序产生dump文件和linux程序产生dump文件的方式不一样,linux默认是不让产生core dump文件,只要在用户自己的~/.bash_profile文件中增加ulimit -S -c u
2013-08-01 14:59:42
23917
10
原创 修复windows环境zookeeper服务器重启有可能会导致客户端CPU占用率100%的问题
在项目中规划使用到了zookeeper当做分布式锁和服务器间session共享,在预研的过程中有个问题,当使用zookeeper提供客户端API连接上zookeeper服务器之后,将zookeeper服务器直接关闭有可能会导致客户端CPU占用率达到满负荷,所以就单步调试跟了进去,发现问题出处在mt_adaptor.c的425行上。函数代码清单:#ifdef WIN32unsigned _
2013-08-01 11:20:22
3677
3
原创 控制台输出重定向到MFC的view对象里
一、闲扯今天领导心血来潮说服务器的运行界面是一个黑乎乎的控制台,太低端了,看我们能不能把它图形化,至少做成一个窗口有按钮点启动、停止。好吧,领导拍脑袋就叫人干活的事不少,也没有产品规划,也就是让他看的舒服,只能去做了。其中有一个关键性问题,就是原先是往控制台输出的信息,使用mfc图形化之后该往哪输出,工程维护人员肯定还是希望能在图形界面上能够看到这些信息的,因此就涉及到了如何获取到输出控制
2013-07-24 17:37:09
4237
原创 jrtplib使用笔记
一、简述RTP 是目前解决流媒体实时传输问题的最好办法,而JRTPLIB 是一个用C++语言实现的RTP库,包括UDP通讯。刚使用JRTPLIB,对JRTPLIB的理解还不够深,当做使用时,积累的一些经验写个笔记吧。二、RTP协议实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,RTP协议详细说明了在互联
2013-07-03 15:33:06
21822
2
原创 boost::interprocess 内存映射文件的用法
一、闲聊 今天项目中要读写一个将近40M的文件,发现使用fstream读文件时,预先分配一个40M的缓冲区buffer时,随机性的会申请内存失败,因此查了下相关资料,发现使用内存映射文件可以解决此类读写大文件的问题。内存文件映射其实是内存中分配了一块区域映射到文件所在的物理磁盘上,内存和物理磁盘的数据交换是以页大小处理的,因此在操作过程中,不会将整个文件缓存到内存上,因此使用的内存特别的小,
2013-06-29 18:42:56
9321
原创 boost asio 异步实现tcp通讯
一、前言boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的。而tcp通讯是项目当中经常用到通讯方式之一,实现的方法有各式各样,因此总结一套适用于自己项目的方法是很有必要,很可能下一个项目直接套上去就可以用了。二、实现思路1.通讯包数据结构Tag:检查数据包
2013-02-04 16:48:06
25963
26
原创 使用curl获取web页面
一、前言看到公司项目中有个功能是要从web服务器上获取html页面,然后分析里面的文章抽取出可用的信息,然后看了下前人写的实现代码,除了通讯还有http协议的解析一大堆代码,看了比较烦,想到过去有看过curl这个东西,于是乎想用curl代替公司的这套东西。curl可支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LD
2013-01-31 18:08:37
6064
原创 轻量级序列化库boost serialization
对象序列化是项目中最经常看到的场景,因此实现该功能的库也有很多,如:thrift、protobuf、avro,但我觉得这些库都太过沉重,因为他们还提供了rpc的功能,如果只是单纯做对象序列化,boost serialization是个不错的选择,以下boost serialization简称BS。一、代码目录1.$BOOST_HOME/archive存档方式类目录类型
2013-01-31 17:02:30
9514
转载 MySql实现远程连接
1、进入mysql,创建一个新用户root,密码为root: 格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; grant select,update,insert,delete on *.* to root@192.168.1.12 identified by "root"; 原先数
2013-01-28 17:23:23
900
原创 使用boost::circular_buffer_space_optimized实现OTL数据库连接池
引言数据库连接是一种关键的有限的昂贵的资源,因此对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接
2013-01-28 10:32:13
4378
原创 mysql connector/c++ for vs2005
今天由于项目中需要c++连接mysql数据库,查了下相关资料,找到了mysql connector/c++,既然是mysql官方给的开源库,那就相信这个吧,因此决定使用了。我的环境:操作系统:windows xpmysql:5.5.16mysql connector/c++:1.1.1boost:1.37编译环境:vs2005刚开始时,看到mysql官网上有
2013-01-09 16:31:50
1874
原创 使用boost::iostreams库压缩和解压数据
今天项目中正好要用到gzip对数据进行压缩,正好查到了boost::iostreams这个库,因此查了相关资料,下面记录下自己对这个库的一些理解吧。iostreams主要有两类东西组成,一个是device,另一个是filter,可以到源码目录下找,iostreams目录下有这两个目录可以找到相关类。device像是一种设备,不能单独使用,要配合普通流stream或stream_bu
2013-01-06 17:11:46
17203
6
原创 mysql 远程连接不上,由于bind-address问题
刚安装了mysql服务器,使用远程管理工具总是连接不上,因为知道mysql的默认端口是3306,于是使用telnet连接这个端口,telnet 192.168.1.10 3306还是连接不上,于是怀疑是防火墙问题,便将防火墙关掉,service iptables stop再次telnet,还是没办法连上这个端口,然后通过netstat查看3306的端口状态是怎么样的
2012-12-27 11:29:58
55462
2
转载 feof()和EOF的用法—— C中文件结尾的判断
转:http://blog.csdn.net/bingqing07/article/details/5785080昨天突然被一位朋友问到了关于文件结尾的程序问题。在用feof()判断文件时,复制会多产生一个字符。这个问题在大一的时候,老师上课就强调过,但那时只是模糊的记得个大概,记得这个函数如果用的不对就是会出现问题,解决是要先读一下,然后再判断,具体的什么还真实忘了。而且平常
2012-12-17 11:47:54
1203
原创 使用thrift串行化对象
1 场景在项目开发中往往有这样的需求出现,需要将一个对象串行化成字符串之后,通过网络传到远方或者写入数据库,另一个程序再将这个字符串取出来反串行化成对象。一般在开发网络通讯当中都会有这样的需求,根据不同的对象结构我们不断的编写串行化和反串行化的操作,相当的麻烦,然而thrift就提供了一个很好的方案,只需要一个脚本,一个命令,就可以生成我们需要的代码,因此下面我会通过例子讲解如何使用thrif
2012-12-14 16:43:00
2814
1
翻译 Thrift的层次结构
1 概念Thrift的网络堆主要有4部分组成,分别是Transport、Protocol、Processor、Server,下图是thrift网络堆的层次图:2 传输层(Transport)传输层为网络的读写提供了一个简单抽象的接口,使得thrift的传输从系统底层摆脱出来(例如:序列化和反序列化)。下列是传输层开放的接口:· open·
2012-12-12 18:49:51
1777
1
转载 thrift数据类型
1 前言 Thrift是facebook技术核心框架之一,不同开发语言开发的服务可以通过该框架实现通信。Thrift通过接口定义语言 (interface definition language,IDL) 来定义数据类型和服务,Thrift接口定义文件由Thrift代码编译器生成thrift目标语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang,
2012-12-12 16:45:23
8854
原创 【学习笔记】thrift下载与安装
一、简介thrift来自于facebook,是一个软件框架,用来进行可扩展且跨语言的服务的开发。允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。它可支持 C++、 Java,、Python,、PHP、C#等等一些主流的语言,类似于Google的protobuf,关于两者之间的比较网上也有很多,还有一个
2012-12-12 15:52:53
4308
原创 【学习笔记】log4cxx配置详解
一、简述由于log4cxx是log4j的C++版本的实现,因此配置也是沿用log4j的配置,没有太大的差异,在互联网上找到讲解的log4cxx的配置的文章也很多,因此一些基本的配置和语法我不在过多陈述,为了笔记我会从互联网上摘抄一部分,然后加些自己的理解,尽量将这个配置说清楚。二、主要组成部分1.优先级Logger的语法: log4j.rootL
2012-12-11 23:21:38
10672
原创 【学习笔记】log4cxx安装和使用
一、简介log4cxx是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,log4cxx是apache软件基金会的开源项目,基于APR实现跨平台支持。一个良好的日志系统不管是开发、调试和维护,对一个项目来说是多么的重要,我想做过开发的同学深知这点。我用过的日志框架比较少,所以在这里不做与其它日志框架的比较,类似的日志框架还有GLog、
2012-12-10 23:00:44
20710
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人