
计算机
在他乡奋斗
工作四年,一直从事C/C++开发工作
展开
-
用分形法画Koch Snowflake 曲线
【前言】自然界中的许多景物,如山脉、云彩、树木、烟雾等,由于它们缺乏简单的宏观结构,找不出正规的特征,很难讲它们清晰地表达出来。分形几何方法的出现,为上述自然景物的计算机模拟与造型提供了一种强有力的工具。德国数学家Georg Cantor于1883年定义了一个在[0,1]上的点集,即著名的Cantor三分集。从作图的角度看,Cantor三分集是逐渐完成的。如果有一个线段a,则用两段小线原创 2009-12-30 22:16:00 · 3982 阅读 · 2 评论 -
中转服务器
中转传输采用3层设计,分别为:用户事件处理层、命令解析层、消息事件驱动层。在事件驱动层中,将相关消息发送给对应的用户事件处理函数处理。 在命令解析层中发送和接收数据。在接收到数据时,需要验证数据合法性,收到一帧完整的数据后调用消息驱动层的send相关方法,调用该类方法后会将消息传递给用户事件处理中。在命令解析层中,会引入socket控制,同时管理多个socket的读。 在用户事件处理中,需要像MFC那样,定义消息处理的映射表。只有在用户层定义了消息映射表,命令解析层接收到的命令才能被处理,否则被原创 2014-04-20 20:25:29 · 4852 阅读 · 0 评论 -
x264内存泄露的解决办法
也许我使用的x264库比较原始,但经过测试,x264的库存在内存泄露.面对内存泄露,如何在尽量少改动的前提下解决这个问题。下面是我解决的思路:由于x264相关的内存分配与释放都有封装一层函数,我们可以在从这两个函数入手。将分配的内存记录到一个链表中,释放时从链表中删除。程序执行完后,如果链表中有记录,说明是内存泄露,清空链表即可。所以具体操作如下:1.增加一个链表;2.修改x264_malloc函数,将分配的内存记录在链表中;3.修改x264_free函数,从链表中释放节点;4.最后统一原创 2014-05-10 21:12:17 · 2182 阅读 · 0 评论 -
最大公约数算法
摘自x2/**************************************************************************** * x264_reduce_fraction: 求出最大公约数,并约去最大公约数 *********************************************************************原创 2014-05-07 13:51:53 · 547 阅读 · 0 评论 -
include自身
作者:吴建凰 wjh_2010@163.com如需转载请声明出处:http://write.blog.youkuaiyun.com/postlist最近写代码遇到这样的麻烦事,文件A中需要多次保护文件B,如下:#ifdef MFH_DLL_DEF#undef MFH_DLL_DEF#endif#define MFH_DLL_DEF MFH_DLL_FUN_TYPE原创 2014-06-22 21:56:04 · 927 阅读 · 0 评论 -
应用程序正常初始化失败0xc0150002 错误
出现该问题,一般是由缺少什么库文件或者库文件不兼容导致的。我的开发环境为vs2008,并在程序发布时放入了vs2008的运行库(参考附件4.1)。编译另外一个测试程序,在一样的环境中运行,却没有问题。所以排除vs2008库的问题。 该问题可能出现在使用的库上,如果使用的Lib和其dll文件不一致也有可能导致该问题。我专门编写一个测试程序,测试使用的Lib文件。 特别注意:如果依赖的一个lib文件,如果不使用其方法,该lib文件会被忽略。原创 2014-11-12 15:45:11 · 2560 阅读 · 0 评论 -
live555单线程原理
Live555单线程原理1. 概述 在live555-Server库中,使用单线程实现了多用户请求视频数据,这似乎多线程才能实现的功能,并且用户请求视频数据各个流程衔接的都十分完美,其执行效率非常高。 live555是如何实现单线程的?其动力系统有什么借鉴的地方? 2. 动力系统原理一个无关的话题: 某人A有一堆任务要办理,但他一次原创 2014-12-19 10:14:33 · 2419 阅读 · 3 评论 -
live555断流
最近在弄live555服务器的库,出现了断流的现象。我这边总结一下与大家一同分享。现象描述:布好Live555服务器后,在pc上用vlc播放视频OK,长时间不会断流。但是在嵌入式设备上播放却只能接收几秒钟的视频数据,然后就不再向客户端发送数据,直到超时断开。问题原因:在live555库中,RTPInterface::sendDataOverTCP函数中,当socke原创 2014-12-26 14:14:49 · 2505 阅读 · 0 评论 -
http服务器二次开发SDK
http协议能够将可见协议与二进制协议有效融合,并且其结构良好,分头域与实体两部分,而且头域的结构一致,并能够随意扩展。我们可以基于头域结构的形式,模拟MFC消息结构,设计一个高效,易扩展的解析架构。 本程序的设计初衷就是模拟MFC的消息机制来实现http头域的解析,并使得能够基于该结构实现私有协议的解析,实现http协议的基本框架,使得二次开发时能够基于该框架快速实现开发。 如果需要基于本架构实现http协议的二次开发,首先需要花时间区了解下http协议的基本结构。原创 2015-05-11 23:03:50 · 1558 阅读 · 0 评论 -
http服务器--session处理
http服务器--session处理1. 概述Session处理是一般带有会话功能服务器必须处理的功能.使用session记录一个会话,能够有效处理短连接或者断线重连的需求。session是存放在服务器的内容,具有如下特性:A. 时间性,创建的session如果长时间没有响应,则服务器需要删除该session,以防止session的无限增长。B. 唯一性,在同一个服务器上,sess原创 2015-06-01 23:08:35 · 2686 阅读 · 1 评论 -
windows下bat批处理实现守护进程
转自:http://blog.chinaunix.net/uid-23381466-id-3373533.htmlhttps://www.hdj.me/check-process-by-bat-in-windows实现:检查是否有notepad,要用的话就算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start.bat) @ec转载 2016-01-27 22:32:47 · 1336 阅读 · 0 评论 -
C语言最快吗
C语言最快吗 很多人认为C语言的运行效率是除汇编之外最高的语音,有段时间我也这么认为过,但我编程并不很在乎运行效率,因为很多时候并不需要高效。但昨天我写的脚步解析器运行结果,让我彻底放弃C语言是最高效的语言。 各种编程语言,无非就是解释顺序、判断和循环三个逻辑,谁解释的好,谁的效率就高,有些时候同样表意的代码,脚本都比C语言高效。但有些时候,你又不得不佩服C语言原创 2016-04-05 10:11:42 · 941 阅读 · 0 评论 -
快速全球索引
最近在弄GPS的东西,写了个GPS算法,模拟测试10万个数据源。之前详细了解过geohash,我在这算法的基础上优化了算法。不知道有没有更好的算法。若有,请不吝赐教。如下是我程序输出的:初始化 100000 个GPS 共消耗 172 毫秒100000个GPS 更新 10次共消耗 1031 毫秒在 100000 个GPS中执行矩形区域查询 100000 次,共消耗 6原创 2016-02-26 21:15:03 · 799 阅读 · 0 评论 -
geohash算法
geohash算法的原理是将区域进行4分,让后将每一块区域继续进行四分,直到符合精度要求停止,这样得到一个二进制的数据,然后将这二进制的数据进行base32转换得到一个字符串原创 2016-05-13 23:08:25 · 767 阅读 · 0 评论 -
基于时序数据库的GPS处理方案
运动中的GPS数据是典型的时序数据,是由设备在一段时间内连续间隔一定时间生成GPS坐标信息。少量设备的GPS信息处理可以用简单的算法处理,但对于成千上万的设备,就需要考虑算法的执行效率。特别是针对大量用于查询的情况下,例如公交车查询、物流查询等。 时序数据库解决了大量用户更新GPS和查询GPS的性能问题,特别是在附近点查询和最近设备的查询方面能够实现非常高效的性能,并且具有高效的截面数据查询,能够瞬时恢复某一时刻的整体场景。一般时序数据库支持的大量数据的插入与高效的单点查询,本时序数据库同样原创 2016-05-28 09:06:46 · 2452 阅读 · 3 评论 -
快速全球索引-最近n个点
最近完成查找离指定点最近的n个点的相关算法,效果没有预期的好,勉强能够满足要求。在10万个数据源中查找指定点最近的20个点,耗时1.6秒。原创 2016-07-06 21:29:45 · 741 阅读 · 0 评论 -
模仿MFC消息驱动机制
欢迎向我索要模仿MFC消息驱动的实例源码,希望能与更多的人讨论。邮箱:wjh_2010@163.com 在微软推出的MFC架构中,其消息驱动机制是其精髓,使用简单,效率高,而且思路清晰。如果能够模拟MFC的消息驱动机制,并添加一些自己的消息映射(例如消息可以用字符串表示),那么在程序的移植上就会有非常大的帮助。原创 2014-04-03 23:01:30 · 1922 阅读 · 0 评论 -
字符编码转换概要设计
本文主要讨论Unicode、GBK和UTF8的转换。在很多场合都需要考虑字符编码的问题,深入了解字符编码对编写程序有非常大的帮助。这篇文章中写的概要设计,并将其实现了。原创 2014-01-16 20:59:09 · 919 阅读 · 0 评论 -
关于信号与槽
关于信号与槽<br />信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。建立信号与槽的连接<br />信号与槽的类必须是QObj原创 2010-08-16 10:13:00 · 800 阅读 · 0 评论 -
代码应该具有什么样的结构
这段时间在设计一个项目的代码结构。之前设计结构时很注意回调函数,的确回调函数能够解决模块间的耦合问题。但今天突然觉得,我们的代码结构应该像一个食物链,层次分明。这样维护起来就比较好。上层通过方法可以知道下层的属性,并依赖下层,但下层不能依赖上层。就像兔子和草的关系。如何设原创 2011-09-09 11:38:40 · 1303 阅读 · 1 评论 -
在自己的网页上添加分享功能
实现将自己做的网页被分享到QQ空间、人人网等网上应该是很多做网站人的想的。其实实现这一功能一点都不难,只要在静态网页代码上添加如下代码即可实现。http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=你原创 2011-09-20 15:55:04 · 6610 阅读 · 0 评论 -
C# 设置对话框返回值
定义一个窗口,派生与Form。在别的的程序中使用ShowDialog显示该窗口,其返回值影响这后续处理。其实只要在close有关的方法中设定DialogResult即可。例如代码 public partial class Login : Form在onclosing函原创 2011-09-23 10:39:21 · 240 阅读 · 0 评论 -
base64 加密算法的实现
1. 关于base64编码Base64编码将3个8位的字符串转换为4个6位的字符串。转换后的编码用64个字符对应。在网上有很多关于base64加密解密的说法,我感觉很多不是真正的加密,因为如果不是自己设置密匙,总会觉得怪怪的,会认为是采用统一的密匙加密(这样就很容易破解了原创 2011-08-26 14:26:08 · 8016 阅读 · 1 评论 -
InstallShield -6058 错误
声明:转载请注明出处,谢谢。 今天只做安装程序,添加vs生成的可执行文件后编译installshield出现了6058错误。具体症状参见:http://kb.flexerasoftware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=Q209268&sliceId=1&docTypeID=原创 2011-12-04 20:06:25 · 2368 阅读 · 0 评论 -
获取主机IP地址
以下代码的参考网上找的资料,具体哪个网页记不清了。希望对其他人有用。需要:#include "winsock2.h"#pragma comment( lib, "ws2_32" ) 代码如下:CString GetHostIp(){ char szHostName[128]; const char* pszAddr = NULL; struct hosten转载 2013-02-28 23:17:59 · 836 阅读 · 0 评论 -
安全可靠的3G传输中IP地址的解决方案
安全可靠的3G传输中IP地址的解决方案1.概述 采用3G网络做为传输方式时,会碰到服务器IP地址不可知的问题。如何解决这个问题,根据实际情况不同的公司或者个人会采取不同的方式。有中间服务器进行中转的方式,有采用绑定域名的方式(如绑定花生壳软件),有借用中间服务器保存服务器IP地址的方式等。各种不同的方式都各有优劣,这边我们提供一种节约成本、易扩展并且开发容易的解决方案。基原创 2013-03-01 00:00:33 · 1481 阅读 · 0 评论 -
解决QT程序触摸屏不可用的问题
情况说明开发版自带QT程序,开机能够显示界面,并且触摸屏可用。但是我自己编译好的程序放到开发板中,能够正确运行,触摸屏却不可用。在网上查了好些资料,对于我这个初学者很难入手,因为说明的操作过程不完整不清楚如何入手。问题分析在命令行中输入qt4可以执行,并且触摸屏可用。理论上来讲与我们自己的程序关系不大,主要是环境没有配置好。我们首先分析下qt4是如何执行的。一般输入qt4会在/原创 2013-05-16 17:17:36 · 9444 阅读 · 7 评论 -
编译sqlite动态库及测试
工程下载:http://download.youkuaiyun.com/detail/wjh_monkey/56610671.关于sqlite数据参考百度百科:http://baike.baidu.com/view/19310.htmSQLite是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范例,SQL原创 2013-06-27 20:30:21 · 2155 阅读 · 0 评论 -
Linux下发布QT程序
Linux下发布QT程序概述 无论在windows下还是在linux下,可执行程序的运行都依赖于相关的运行库,我们需要将依赖的库找到放到特定的位置,让可执行文件能够找到。在不知道可执行文件依赖哪些库时,有时可以让它自己告诉你,例如直接运行程序会输出缺少的库名,执行ldd命令查看可执行文件的依赖库。所以发布程序就是将必要的文件放到指定的位置,并修改某些系统配置。我发布的原创 2013-08-09 16:40:34 · 8462 阅读 · 1 评论 -
eval解析JSON中的注意点
eval解析JSON中的注意点在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:1.一种为使用eval()函数。2. 使用Function对象来进行返回解析。使用eval函数来解析,并且使用jquery的each方法来遍历用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器转载 2013-08-25 11:27:14 · 664 阅读 · 0 评论 -
Ftp客户端概要设计
Ftp客户端概要设计1.概述 ftp是基于TCP的文件传输协议,主要是用于控制远程文件,如下载、上传、续传、重命名、删除等。其命令是基于可见字符,易于理解的方式交互的。客户端与服务器端的交互遵循一应一答的方式,而且各命令间遵循一定的顺序。FTP的应答原则:a. 所有应答都以3个数字开头以“\r\n”结束b. 一个应答的第4位如果为’-’,原创 2013-09-06 16:18:56 · 3808 阅读 · 0 评论 -
自定义WM_NOTIFY消息
自定义WM_NOTIFY消息习惯了用自定义用户消息进行各种状态的通知,特别是子窗口与父窗口之间的交互。但ON_MESSAGE没有控件ID的限制,如果有多个子窗口发送同一个消息给父窗口时,父窗口就不知道哪个窗口发的(当然可以用参数进行约定)。如何解决这个问题?有几种思路:1.重写ON_MESSAGE宏,增加ID的限制;2.模拟按钮单击消息;3.自定义WM_NOTIFY消息。基于这原创 2013-10-30 09:36:58 · 4592 阅读 · 0 评论 -
QTreeView的模型的写法注意事项
原文: http://johnsmith9th.iteye.com/blog/11780341. 写一个树型数据结构 2. 从QAbstractItemModel派生一个类,这个类包含或引用上述树形数据结构。 3. 至少实现 index, parent, data, rowCount和columnCount这5个纯虚函数。index和parent函数其实就是从树形数据结构转换出合适的Q转载 2013-12-06 11:50:20 · 1005 阅读 · 0 评论 -
快速全球索引-百万数据源测试
对比可知,使用遍历法查询时间与数据源的个数成线性关系。但若使用索引查找,矩形区域查询成logN的关系,最近n点查询则时间基本固定。经过本测试也可认为,本算法可以使用在百万基本的数据查询中,能够提供非常高效的查询效率。如果使用集群处理,能够轻松处理亿级数据源的数据量。如果使用在普通的车辆位置查询上,则一台普通PC机即可满足要求。原创 2016-09-06 23:18:25 · 571 阅读 · 0 评论