- 博客(5)
- 资源 (13)
- 收藏
- 关注
原创 Windows下hiredis分布式组件移植
1. 问题描述分布式组件项目使用了Redis,在Windows平台使用QT+VS2010编译环境。但Redis客户端库hiredis在Windows平台只提供静态库,而且必须用VS2013以上的版本才能编译。由于VS2013要更新部分组件才能避免编译错误,最终以VS2015编译hiredis.lib静态库。这样就面临如下问题:VS2010不支持完整的C++11特性,linux能直接使用std:...
2018-03-11 21:22:45 746
原创 没有tcp server能直接connect建立连接?
建立tcp 连接通常的做法是:server端创建server socket之后listen;client端创建client socket之后向server发起connect请求;server accept连接请求,新建一个client socket,就建立了和对方的一个连接。 但实践中发现另一种做法可以不需要server:两端分别创建client socket,先后向对方发起connec
2017-09-06 17:59:44 995
原创 安全的使用new分配内存
C++早期版本的new在失败时会返回NULL,但新版本不是这样。这不利于严格的内存检查,可能会造成隐患。安全的做法是:#include ……char *pch=new(std::nothrow)char[1000000000];if(pch==NULL){ //错误处理}为了方便使用,还可以定义下面的宏:#define sfnew new(std::n
2017-08-25 10:22:33 331
原创 网络接收数据缓存机制的分析和改进
在异步网络接收数据等场合,剥离数据接收和数据缓存的对于提高处理能力具有重要影响。相比之下,接收即处理的做法不能很好的适应高速数据吞吐。因为后者的处理如果稍有延迟,就会导致严重的数据堵塞或数据丢失。下面以libuv接收UDP数据包加入缓存、应用程序从缓存提取数据的应用为例(来于公司项目开发),总结如何实现一个有效的缓存机制。1. 分析失败的缓存案例最初的缓存数据提取是从缓存队列每次
2017-08-24 20:01:56 1944
原创 libuv源码分析(windows版)
网上深入讲解libuv内部机制的的资料实在太难找,好在这个库开放了全部源码。直接阅读源码,不仅能够深入掌握其异步I/O机制,而且还能汲取优秀的设计思想,提高软件设计水平。分析代码不等同于设计,不必拘于细节,而是要牢牢把握主线。libuv在统一的外部接口之下,实现了Windows和Unix(含Linux、Android等)两个版本。实践中发现两种实现的确存在一定的差异,但这主要是操作系统造成的。
2017-08-24 19:37:01 4242
用VS2015编译的hiredis.dll
2018-03-18
矩阵计算函数集合
2017-09-06
基于udp协议的穿透nat程序(以验证通过)
2017-05-17
vc实现的可标示关键字和注释等特征的文本编辑器
2014-01-04
数独解算器源代码
2013-08-11
自动完成拨号宽带连接的程序源码
2011-11-25
VC编写的具有浮动窗口的例程
2010-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人