QSocket-为什么TCP连接建立需要三步握手过程?

TCP协议在初始化连接时,分为三步: (1)、发起端发送 SYN 请求到接收端。 (2)、接收端发送 SYN+ACK 数据包到发送端。 (3)、发送端发送 ACK 请求到接收端。 有人对为什么需要这三步存颖,觉得两步就够了,实际上是没有完全理解他们分别做了什么。 (1)、SYN 请求就不用说了,发起端通知接收端我要和你

如何设计一个程序的启动界面(Splash)

程序的启动界面是为了让需要较长时间的程序启动时,避免用户错误的以为程序没有打开或者没有响应,而设计的一个“小甜点”,但许多人设计时,却忽略了根本,反而将启动界面用Sleep等延时方法,强制在主屏上显示一段时间,以增加“存在感”,这显然是违背启动界面设计初衷的。 那么,这个启动界面,我们应该在什么时候创建和显示呢?这就需

使用Form作为一个复杂的提示窗口实现示例

嫌VCL默认的提示窗口太单调乏味?没关系,你可以完全按照自己的需要用窗体实现一个。什么?继承自THintWindow?那个需要完全自己重画,太麻烦好不好。 这里提供另一种思路,简单易用疗效好,看效果: 影影绰绰的半透明效果,编辑框,提示文字~~~~,是不是感觉特别高大上?好了,源码打包奉上,具体自己凑合着瞅吧。当然了,

Json与MsgPack格式相互转换工具函数

上面提供了两个函数,JsonToMsgPack 用于直接将函数内容转换到 TQMsgPack 对象,MsgPackToJson 函数执行反过程,用于将 MsgPack 的内容转换为 Json 格式。由于 MsgPack 支持的类型要比 Json 更多一点

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 也不过是一个孤

12306 大规模数据泄露事件中招查询工具-附源码

这个工具的目的是在不传播那些用户数据的前提下,给大家提供一个查询自己是否中招的工具。这个工具不需要联网,不需要安装,直接查询本地的12306.hashs这个MD5摘要数据,由于您输入的身份证号信息只与本地的12306.hashs文件中的指纹数据进行对比,而12306.hashs没有任何个人敏感信息,所以您可以放心使用它

QDB.QDataSet.Merge函数功能需求说明

QDataSet 支持合并相同的结构的不同结果集,这一功能透过函数Merge来实现。

第一种形式直接传递脚本,第二个使用数据集,第三种和第四种直接从流中融合。 融合数据的方式有下面三种选择: 追加到末尾 替换原有数据集内容 合并重复的数据并将不重复的数据

QWorker更新-修正了早期Delphi版本编译提示Clear函数已声明的问题

【问题描述】 该问题是由于早期的Delphi版本重载时,只关心参数而未考虑返回值的情况引起的。问题发生在下面的两处重载:

通过将后一个函数改名为 ClearSingleJob 解决此问题。 【严重级别】 高 【更新级别】 推荐 【特别感谢】 星五

QWorker演示-统计代码行数的工具 CodeLines 源码

直接看疗效,支持Delphi/C++/Java,当然通过设置实际上可以支持任何编程语言。程序主要演示了以下QWorker功能: 在主线程中使用For并行作业的用法(设置AMsgWait属性为True),来计算每个文件的代码行数; 二进制文件请自行下载源码编译,或者直接编译 QDAC 的 Demos\Delphi\VCL

QWorker更新-新增TQWorkers.Clear函数的一个重载实现

【更新内容】 新增TQWorkers.Clear函数的一个重载,以方便清理特定的一组作业。

注:此功能新增,请谨慎测试,大胆使用:) 【更新级别】 可选 【特别感谢】 lionet

QJson更新-修正了在StrictJson为False时,解析包含//和/**/注释的内容时仍出错的问题

【问题描述】 此问题是由于 QJson 对注释位置的出现考虑不全面造成的,象解析下面的Json代码时会出错。

新版 QJson 修正了这一问题并使用下面的测试用例进行了测试:

 【严重级别

QDB.TQDBProvider接口设计

下图是QDB中与负责与数据库连接的数据提供者对象的接口定义,UML 文件为 StartUML 的格式,如有需要,请在 QQ群 联系。   【简介】 TQDBProvider用于建立数据集和数据库之间的桥梁及辅助功能。TQDBProvider提供的接口类别主要有: 1、属性 ProviderName &#821

判断一个点是否在一个多边形中的算法

这个算法抄自Graphics 32 的 GR32_Polygons.pas ,大名鼎鼎的开源图形组件,官网地址请大家上导航里找。

具体算法的原理俺没研究,图形算法不是俺的强项,俺只负责抄一下。