TCP协议在初始化连接时,分为三步: (1)、发起端发送 SYN 请求到接收端。 (2)、接收端发送 SYN+ACK 数据包到发送端。 (3)、发送端发送 ACK 请求到接收端。 有人对为什么需要这三步存颖,觉得两步就够了,实际上是没有完全理解他们分别做了什么。 (1)、SYN 请求就不用说了,发起端通知接收端我要和你
月度归档: 2014 年 12 月
如何设计一个程序的启动界面(Splash)
程序的启动界面是为了让需要较长时间的程序启动时,避免用户错误的以为程序没有打开或者没有响应,而设计的一个“小甜点”,但许多人设计时,却忽略了根本,反而将启动界面用Sleep等延时方法,强制在主屏上显示一段时间,以增加“存在感”,这显然是违背启动界面设计初衷的。 那么,这个启动界面,我们应该在什么时候创建和显示呢?这就需
使用Form作为一个复杂的提示窗口实现示例
嫌VCL默认的提示窗口太单调乏味?没关系,你可以完全按照自己的需要用窗体实现一个。什么?继承自THintWindow?那个需要完全自己重画,太麻烦好不好。 这里提供另一种思路,简单易用疗效好,看效果: 影影绰绰的半透明效果,编辑框,提示文字~~~~,是不是感觉特别高大上?好了,源码打包奉上,具体自己凑合着瞅吧。当然了,
MsgPackView – MessagePack 格式数据查看工具
MsgPackView 是使用 QMsgPack 实现的一个数据内容查看及检索工具,方便您查找生成的 MessagePack 数据包的内容。同时,它支持 Json 格式的数据的打开和保存,方便在 Json 和 MessagePack 格式之间相互转换数据格式。 1、增加 在结点列表上,使用右键菜单中的右键选择添加。如果
QMsgPack更新-修正了SaveToStream时忘记截断流造成结果数据流大小不正确的问题
【问题描述】 该问题是由于InternalEncode函数在编码时,为了减少数据流的的空间分配次数,一次性预分配16KB,而在数据流分配完成时,却忘记截断数据流为实际长度造成。通过修改SaveToStream函数将其正常截断即可。 【严重程度】 高 【更新级别】 推荐 【特别感谢】 觉悟
歧路亡羊话网络:引子
夜,黑夜,漆黑的午夜。 一只羊不知道受了很么惊吓,从杨庄的大路上向前飞奔,羊蹄踏在坚硬的路面上,那扬起的灰尘在夜色中虽然没人能看的见,但那突兀的蹄音却将杨庄的人惊醒了。 “什么声音?” 杨子就是被半夜的羊蹄声惊醒的众人之一,赶紧穿上了衣服。实际上,被窝很暖和,杨子也不愿意起来,不过作为庄上的村民联防队的队长,他职责所在
QPlugins的一些设计构想讨论
讨论时间:2014-12-29 讨论范围:QDAC官方QQ群 讨论内容: (1)、QPlugins 大概的实现时间约在2015年春末夏初。 (2)、QPlugins 将是一种微内核的插件框架,内核只管理以下事情: 插件的注册/反注册 插件实例的集中调度(查询、创建、释放) 扫描并加载各种加载器(Loader) (3)、
QSocket设计的一些构想讨论
讨论时间:2014年12月29日 讨论范围:QDAC官方QQ群 讨论内容: (1)、QSocket将包含单连接多会话并发的支持。一个客户端与服务器端只有一个连接,但这个连接采用某些技术手段,可以并行的发送多个会话。会话之间通过优先级控制,高优先级的会话会得到更高的发送机率,而低优先级的会话发送机率只是更小。同时,采用帧
2014-感谢有你
转眼之间,2014年就要从我们的之间溜走了,QDAC 项目也走过了两年半的岁月。在这一段逝去的岁月里,QDAC 项目从一个混沌中慢慢长成,许多的朋友与我相知相伴,一起为项目的未来增砖添瓦,在此,特别的表示感谢,没有你们的支持和鼓励,QDAC 也许会像许多开源项目一样很快沉寂。没有你们使用和测试,QDAC 也不过是一个孤
国内公共DNS地址整理(非运营商)
【114DNS】 纯净 无劫持 无需再忍受被强扭去看广告或粗俗网站之痛苦 服务地址为:114.114.114.114 和 114.114.115.115 拦截 钓鱼病毒木马网站 增强网银、证券、购物、游戏、隐私信息安全 服务地址为:114.114.114.119 和 114.114.115.119 学校或家长可选拦截
12306 大规模数据泄露事件中招查询工具-附源码
这个工具的目的是在不传播那些用户数据的前提下,给大家提供一个查询自己是否中招的工具。这个工具不需要联网,不需要安装,直接查询本地的12306.hashs这个MD5摘要数据,由于您输入的身份证号信息只与本地的12306.hashs文件中的指纹数据进行对比,而12306.hashs没有任何个人敏感信息,所以您可以放心使用它
QDB.QDataSet.Merge函数功能需求说明
QDataSet 支持合并相同的结构的不同结果集,这一功能透过函数Merge来实现。 procedure Merge(const ACmdText:QStringW;AMethod:TQDataMergeMethod;AWait:Boolean); procedure Merge(ADataSet:TQDB;AMeth
QWorker更新-修正了早期Delphi版本编译提示Clear函数已声明的问题
【问题描述】 该问题是由于早期的Delphi版本重载时,只关心参数而未考虑返回值的情况引起的。问题发生在下面的两处重载: /// <summary>清除指定信号关联的所有作业</summary> /// <param name=”ASingalId”>要清除的信号ID</par
QWorker演示-统计代码行数的工具 CodeLines 源码
直接看疗效,支持Delphi/C++/Java,当然通过设置实际上可以支持任何编程语言。程序主要演示了以下QWorker功能: 在主线程中使用For并行作业的用法(设置AMsgWait属性为True),来计算每个文件的代码行数; 二进制文件请自行下载源码编译,或者直接编译 QDAC 的 Demos\Delphi\VCL
QSocket的一份总体框架构想图
看了下libevent和libuv的文档,结合自己原来QSocket的一样想法,重绘了一个架构图。 注意:这份图仅是一个构想,并不代表最终的项目实现结果。
QWorker更新-新增TQWorkers.Clear函数的一个重载实现
【更新内容】 新增TQWorkers.Clear函数的一个重载,以方便清理特定的一组作业。 /// <summary>清除指定的句柄列表中对应的作业</summary> /// <param name=”AHandles”>由Post/At等投递函数返回的句柄列表</param
QJson更新-修正了在StrictJson为False时,解析包含//和/**/注释的内容时仍出错的问题
【问题描述】 此问题是由于 QJson 对注释位置的出现考虑不全面造成的,象解析下面的Json代码时会出错。 { “A”:”B”// 这是注释 } 新版 QJson 修正了这一问题并使用下面的测试用例进行了测试: //This is demo {//Json Start “A”/*Name*/:/*Value Star
QDB.TQDBProvider接口设计
下图是QDB中与负责与数据库连接的数据提供者对象的接口定义,UML 文件为 StartUML 的格式,如有需要,请在 QQ群 联系。 【简介】 TQDBProvider用于建立数据集和数据库之间的桥梁及辅助功能。TQDBProvider提供的接口类别主要有: 1、属性 ProviderName ̵
判断一个点是否在一个多边形中的算法
这个算法抄自Graphics 32 的 GR32_Polygons.pas ,大名鼎鼎的开源图形组件,官网地址请大家上导航里找。 function PtInPolygon(const Pt: TPoint; const Points: array of TPoint): Boolean; var I: Integer;