一般的网络业务处理都是请求+应答式的,当然有时候可以不需要应答(我们可以称之为通知)。但是,请求发送过去后,这个连接在服务器端处理完成返回数据之前,是处于空置状态的,而且也不利于充分利用服务器的处理性能,所以在 QSocket 我将为大家提供一个单连接多请求处理协议(暂定名)实现,它的目的是将请求和返回的结果顺序异步化
分类: QDAC
[QSocket]QSocket 总体设计框架说明
QSocket 是 QDAC 开源组件的一个重要的组成部分,终于要开始开工了,为了方便大家了解 QSocket,对 QSocket 的总体设计的一些想法,我在这里给大家简要的描述一下。 首先,QSocket 同 QDAC 的其它组成部分一样,是跨平台的,这意味着你可以在不同的操作系统中,体验 QSocket 为你带来的
泛型数组清空数据
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知 我是怀疑泛型数组 setlength后会不会清零,弄了个小demo,不知道为什么我会有这个想法,难道是我看数据结构入魔了,记得记录指针需要另类释放问题。 记不清了 脑袋完蛋了 上demo ,事实证明setlengt
Qxml如何添加cdata
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 我们再使用的时候,往往需要包含这些特殊字符,要求保持这些特殊字符不变。 这个时候就需要用<![CDATA[ 我是保持不影响XML解析的特殊字符”<>’等 ]]
QXML转义问题
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 procedure TForm4.btn1Click(Sender: TObject); var MyQXML: TQXML; begin MyQXML := TQXML.Create; try m
Qjson中把json字符串,当做子节点的方法
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 procedure TForm4.btn2Click(Sender: TObject); const //外部的一个Json做子节点 AJsonStr = ‘{“name”:”奥巴马”,”age”:18}’; v
qjson中把记录或类型或泛型数组转换为json字符串
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Class
[QWorker] 更新:修正了信号作业清理的一处问题,并更改了信号容器
【问题描述】 1、信号作业清理原来使用的哈希表忘记考虑哈希桶位置重复,造成未正确清理掉。 2、信号作业的容器由哈希表改为普通的数组,以提升效率(此业务场景更适合用普通的数组)。 【严重程度】 高 【更新级别】 推荐 【特别感谢】 MLSkin
[QWorker] 更新:修正了信号作业触发的一处Bug并优化了按名称触发的效率
【问题描述】 1、查找信号对应的作业时,忘记处理哈希重复的问题,造成特定场景下触发不了。 2、为已经注册的信号名称加入索引,以提高查找效率。 【严重程度】 高 【更新级别】 推荐
[QJSON] 更新:修正了一处内存访问越界的问题
【问题描述】 该问题是由于 JsonCat 函数在计算需要的内存空间时,考虑不周造成的。新版修正了这一问题。 【严重程度】 高 【推荐程序】 高 【特别感谢】 熊猫叔叔
[QWorker] 更新:增加信号的顺序触发并修正 Delay 函数存在的问题
【更新说明】 1、QWorker 的信号作业原来是触发时立即就会调度后台线程执行,这样存在的问题就是后触发的信号可能被先执行。而有些场景下,我们需要它们按照触发的顺序执行,所以 QWorker 对信号的触发这块做了一些额外的处理: 增加了一个 SignalQueue 属性,来管理信号触发队列,队列的默认大小为 4096
[QLog] 更新:新增 CalcPerf 函数来统计一个函数的执行时长
【更新说明】 1、新增的 CalcPerf 函数可以用来统计一个函数的执行时间,只需要在函数的开始位置调用它就可以了。您需要为它指定一个字符串标签(Tag),以便在日志中区分不同的函数调用。示例代码如下: procedure TForm2.Button2Click(Sender: TObject); begin Cal
[QString] 新增 UrlMerge 函数说明
QString 新增了一个 UrlMerge 函数用来替代Delphi自身 System.Net.UrlClient 单元提供的 TURI.PathRelativeToAbs 函数。为啥要替换它?理由只有一个:它的解析支持有点小问题,所以自己重写一个。 URL 相对路径转换为绝对路径有几种情况: 相对路径实际上是一个带
【付费教程】Delphi 下基于 QWorker 的多线程编程之三:实战
【价格】 以人民币计价: 个人用户:50元 企业用户:300元 【视频长度】 ≥ 51 分钟 【视频语言】 中文,普通话 【视频编码】 格式:H.264 MP4 分辨率:1364×768 【教程源码】 包含示例工程源码 【上架时间】 预计 2016 年 5 月 6 日 【付款方式】 申请加入 QDAC 视
[QJSON] 更新:修正了 IOS 64 无法编译的问题
【问题描述】 该问题是由于 IOS 64 编译器未正确分区 TStream.Seek,不知道如何调用引起的。修正的代码强制进行了类型转换,以让其正确识别。 【严重程度】 低(仅影响IOS64) 【推荐级别】 可选 【特别感谢】 wealsh
[QWorker] 更新:修正了枚举作业状态的两处问题并修改了 At 函数一个重载的行为
【更新说明】 1、EnumJobStates 返回的运行中作业状态时,IsRunning 标志位设置不正确; 2、PeekJobState 正在运行作业的信息没有正确处理; 3、修改了 At 传递日期时间类型为参数的行为,原来忽略日期时间部分的日期部分,现在改为不忽略日期时间类型中的日期部分; 【严重程度】 中 【推荐
【付费教程】Delphi 下基于 QWorker 的多线程编程之二:进阶
本节是基于 QWorker 的多线程编程的四节课程的第二节,侧重讲解 QWorker 的教程基本用法。本视频以 Delphi 录制,但由于 Delphi 和 C++ Builder 使用同一 IDE,所以绝大部分内容同样适用于 C++ Builder。 【价格】 以人民币计价: 个人用户:50元 企业用户:300元 【
【付费教程】Delphi 下基于 QWorker 的多线程编程之一:基础
基于 QWorker 多线程编程由于知识点较多,将分四节课讲解。前两节侧重讲解 QWorker 的教程基本用法,后两节侧重与高级的用法及设计思路剖析。本视频以 Delphi 录制,但由于 Delphi 和 C++ Builder 使用同一 IDE,所以绝大部分内容同样适用于 C++ Builder。 【价格】 以人民币
[QPlugins] 多文档界面插件支持示例已经提供
示例代码已经放到 Demos\Delphi\MDI 目录下,实际运行效果: 注意,使用 MDIChild 类型的窗体做为服务,宿主和插件都必需同时包括 rtl 和 vcl 两个运行时包,否则无法检测到 MDI 主窗体。另外,要求插件和宿主程序必需使用同一编译器版本编译。
[QString] QString 中那些与字符串解析相关的函数
QString 提供了很多与字符串相关的函数来简化字符串的解析,不使用这些函数当然也可以解析字符串,这些函数只是简化字符串解析时的代码: DecodeToken DecodeToken 按指定的分隔符来解析出第一个字符串,分隔符可以有多种。 SplitToken SplitToken 按指定的分隔符分解所有的字符串内容