随笔分类 - C++开发
摘要:服务器程序经常需要在命令行中显示错误消息、状态或者用来跟踪程序的执行路径,最简单的方法是使用printf。ACE提供了更强大日志设施:1、可以在编译时启用或禁用宏;2、可以动态的启用或禁用宏;3、支持日志严重级别;4、支持日志重定向;5、支持多线程安全和线程级配置;使用ACE的日志相关功能,需要引入...
阅读全文
摘要:参考APG里的说法:平台差异及不兼容性的一个特别的方面,是对象的运行时初始化和程序关闭时这些对象的相应析构。ACE为了明确管理对象的清理,定义了ACE_Object_Manager类,这个类不仅涉及到对象的管理,还与ACE库的初始化与关闭相关。ACE中应用了大量的设计模式,本篇顺便研究ACE的程序入...
阅读全文
摘要:ACE服务端编程系列的第三篇,探究ACE解决不同编译器之间分配堆内存的差异。在ACE的官方示例中会看到大量的ACE_NEW_RETURN,ACE_NEW这样的宏,这是ACE为了消除不同编译器编译的代码在堆上分配内存失败的行为差异。具体来说:使用 malloc/calloc 等分配内存的函数时,一定要...
阅读全文
摘要:ACE网络库的主要优势之一就是跨平台,ACE提供了操作系统API和编译器级别的跨平台解决方法,使开发人员不用再去关心操作系统和编译器的差异,但因此也带来了ACE的复杂性。ACE网络库的组织结构主要分为四层:OS适配层、wrapper facade层、框架层、服务层,其中OS适配层为操作系统API提供...
阅读全文
摘要:最近为了解决IM消息记录的高速度写入、多文档类型支持的需求,决定使用MongoDB来解决。考虑到MongoDB对VS版本要求较高,与我现有的VS版本不兼容,在leveldb、ssdb、redis、hbase等NoSQL中转了一圈,最后还是选择了MongoDB,应了那句话:没有最好的,只有最合适的。M...
阅读全文
摘要:ACE是一个跨平台的用于并发通信的C++框架,项目开始时使用的是ACE 5.6发布版,目前最新的ACE版本是6.3.0。网上一直有一种黑ACE的氛围,主要黑点在于ACE的复杂和作者的背景,结合实际应用的经验来说,ACE还是C++里最成熟、稳定、全面的网络通信框架,看看有多少论文是与ACE有关的就能验...
阅读全文
摘要:昨天写到《使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法》中提到服务端使用std::string处理字符串,std::string对多字节字符集支持并不是很完善,std::string中的函数没有对多字节字符集进行直接的支持。例如直接调用std::string的subs...
阅读全文
摘要:随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC、Android、IOS、WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题。多字节字符集MBCS不是跨平台的首选字符集,面向跨平台、国际化的推荐字符集肯定是UNICODE。写VC的人都知道,在以前VC++6.0中默认的字符集是多...
阅读全文
摘要:PNG格式的图片是支持透明通道的,BMP格式的图片是没有透明通道的,所以当PNG格式的图片转换为BMP格式时,对于PNG图片的透明背景就需要进行特别的处理。VC++中的HBITMAP是支持透明色的,如果HBITMAP是PNG格式图片的句柄,使用CImage:Save或其它方式保存到文件时,透明背景会...
阅读全文
摘要:因为在工作中基于迅雷Bolt开发的是IM产品,需要实现自定义用户头像的功能。但Bolt中对图像的默认拉伸锯齿效果非常明显,所以自己实现了图像拉伸函数,代码已共享,具体可查看:《迅雷Bolt图像拉伸不清晰的解决办法》。不过在这个函数的使用中,遇到了使用ClipSubBindBitmap裁切后再拉伸,图...
阅读全文
摘要:之前写了一篇《VC++使用CImage在内存中Jpeg转换Bmp图片》,通过CImage实现了在内存中Jpeg转Bmp。既然Jpeg能转Bmp,那CImage也支持Bmp转Jpeg,与上一篇文章依赖CImage的Load函数相反,Bmp转Jpeg通过Save函数实现:使用的也是IStream接口的函...
阅读全文
摘要:迅雷Bolt库中的图像拉伸的效果锯齿比较严重,常见的导致锯齿的情况:1、在使用ImageObject时,drawmode为1拉伸模式下;2、使用Bitmap类的Stretch函数拉伸图像;虽然ImageObject有antialias属性支持反走样,不过设置后没有特别明显的优化效果。解决锯齿的办法就...
阅读全文
摘要:VC++中Jpeg与Bmp图片格式互转应该是会经常遇到,Jpeg相比Bmp在图片大小上有很大优势。本文重点介绍使用现有的CImage类在内存中进行转换,不需要保存为文件,也不需要引入第三方库。Libjpeg库在8以后也支持了内存读取和转换,不过使用起来较为麻烦,还需要手动编译,用CImage类完全可...
阅读全文

浙公网安备 33010602011771号