凌哥E编程模块 - 用心打造专业的易语言编程通用模块
代码结构设计注重高内聚、低耦合;在追求高效率的同时,同样重视程序的稳定性和兼容性。
模块充分考虑了多线程环境下的兼容性,并为每个函数提供详尽的注释说明,以确保代码的可读性和可维护性
对象参数、返回值严格按照数据类型定义,而不是靠易语言自动转换(如变体型),对黑月的汇编编译模式完全兼容
模块功能设计:旨在提供一套丰富的可调节参数,并为这些参数配置了合理的默认值,以满足不同技能水平开发者的需求
对于新手开发者,利用预设的默认参数可以迅速开始使用模块,并逐步深入理解模块的设计原理
而对于经验丰富的开发者,则可以自由地调整这些参数,以实现更高层次的个性化定制需求
模块运用了内联汇编技术,并集成了高效的内存池,有效克服了易语言原始代码在数值运算、内存读写以及内存分配器方面的性能限制
通过充分利用AVX2、SSE2和SSE4.2等指令集的潜力,实现了性能的显著提升 (在运行时动态判断当前CPU支持哪些指令集)
面对从百万到千万级别的数据集处理任务,不仅显著加快了处理速度,还展现出了卓越的系统性能
模块的所有类方法中的 创建() / 销毁() / 初始化() 等类似的功能,均设计为可以安全地重复调用,无需担忧在多线程环境下可能出现的冲突问题
【释放文件路径规范】C:\Users\administrator\AppData\Roaming\凌哥E编程模块\
路径中的 administrator 代表当前计算机登录的用户名;模块释放的各种插件DLL都会存放在这个目录里面
查看当前程序数据路径方式: L_文件_执行 (L_目录_取特定目录 (8) + "凌哥E编程模块" )
部分功能介绍
线程池 - 超高性能的封装方式 - 可直接传递字节集参数给队列
-
线程自动回收:一定时间内没有接收到新任务,多余线程会被自动收回,总线程数减少至设定的最小线程数;以免空跑循环吃资源
-
最小/最大线程数、最大队列数、线程空闲回收时间、线程初始栈大小、线程后台模式 均可「随时修改」并且是实时生效的
-
每个队列可以选择执行不同的子程序,以及直接传递通用型数据
-
内部对超大量投递的队列进行了性能优化处理,同时不影响每条队列的响应速度,做到了真正的千万级时速
-
可以随时暂停/恢复工作,包括正在执行中的队列也会暂停/恢复(可选)
-
支持自动安全销毁、自定义线程事件回调、获取实时状态等;配合通用型传参与模块配套的支持库可以很方便地实现传递各种复杂数据类型
基础数据类型/数组混合 一键打包解包
-
制作了一个支持库,提供两个命令:L_打包数据(通用型, ...)、L_解包数据(字节集, 通用型, ...) 无限参数
-
本方法可以将大量数据类型打包成字节集的形式用于实现方便快捷的传参/网络通讯,是 L_字节集数组_保存()、L_字节集数组_读取() 的完美替代方案
-
用法非常简单,打包时传入的变量顺序是怎样的,解包时也一样即可,也可以任意截断数据只解包头几个变量
-
内部解包的逻辑在各个位置均有数据完整性校验,避免编写服务端程序时因为被恶意攻击而出现崩溃的情况:
1.全部读完后校验内存读写位置不通过(解析一切正常但还有剩余的字节没读, 也就是说数据结构被修改/调试了)
2.解包时发现【欲解包的数据】不足以填满你设置的参数数量
3.内存访问超出【欲解包的数据】范围
-
性能极高,内部采用纯内存指针读写+内存缓冲区的方式处理数据,性能瓶颈仅受限于调用核心库内存分配方法的部分
-
特殊兼容:字节型数组变量 与 字节集变量 可以相互混用,因为它们在内存中的数据结构是完全相同的
内存池 - 用于提升软件的内存分配速度
-
我原创的纯易语言代码实现低碎片高性能内存池方案, 原生线程安全,并且实现了内存归还给操作系统的功能(定时扫描) 已移除
-
额外封装了微软的mimalloc内存池(通过模块配置工具启用),如果当前系统不支持则自动切换到
我自己写的内存池 系统内存堆函数
-
整个模块内部的内存分配器使用全局内存池,性能极高
虚表 - 易语言界首款深度封装的高性能虚表方案
-
L_虚表(类) 允许用户以使用普通超级列表框的思维操作,对比其他人封装的虚表更好用,直接就可以多线程高并发读写(比单线程快)
-
支持用户自定义表格线颜色、单元格文字颜色、单元格背景色,同时提供了可批量修改的方法
-
全表的所有数据状态由模块内部自动接管、自带行锁、自带快速排序 用户只需要以普通超级列表框的方式使用即可,易用性MAX
-
循环操作1000万个单元格的性能测试:置标题()=400ms, 排序=300ms, 查找表项(全表搜索一个不存在的字符)=120ms
-
虚表的置标题()、插入表项()等功能与UI的刷新操作是异步进行的,也就是说可以在疯狂更新UI的同时还不影响多线程读写的速度
-
例子提供了将虚表作为日志刷新显示的UI、挂接事件、排序、插入、设置表格线.文字.背景色、实时1000万次置标题性能 等演示
Curl库 - 支持超大文件随意多线程上传
-
Curl是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。
它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。
Curl还包含了用于程序开发的libcurl(模块封装的就是这个)
Curl支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。
Curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。
-
本模块封装了Curl大部分功能,Curl的一些功能调用比较复杂,你可能需要花时间研究才行
-
模块额外对Curl的HTTP功能进行了封装整合,使得调用更加方便:L_curl_http2winhttp(类)
本类特点:深层次的封装、全局连接缓存更适合多线程使用、内部Cookie同步机制与 L_winhttp(类) 相同
直接把本类当做winhttp对象一样调用即可;经过测试,6000线程稳定运行
并且将模块的全局内存池挂接到了Curl内部的内存分配函数中,进一步拉高了使用Curl相关功能时的性能上限
-
L_curl_http2winhttp(类) 封装支持了GET、POST、PUT、HEAD、PATCH、DELETE请求
hp-socket
-
HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系统,提供C/C++、C#、Delphi、E(易语言)、Java、Python等编程语言接口。HP-Socket对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket提供基于事件通知模型的API接口,能非常简单高效地整合到新旧应用程序中。
-
模块内部深度封装了同步通讯功能,仅需三句代码即可实现,兼容多线程!具体使用方法请看例子
-
本模块是以中文封装命令,每个子程序/参数都有详细的注释,多看看就懂用了
-
目前只封装了pack模型,已经能够完美支持自己程序相互通讯了,以后封装其他模型
-
附带远程屏幕差异传输、弹出网页的例子,包含 [客户端断线重连、数据打包传输] 比较容易理解的方案
WebSocket客户端
-
Multi-Client方式 用很少的线程管理很多连接、自动合并非结束帧
-
支持为每个连接绑定不同的回调事件、支持绑定主动心跳事件来帮助处理`主动心跳包`
-
支持为每个连接设置HTTP/HTTPS/SOCKS5代理
-
支持同步接收(不走异步回调直接在当前线程下不漏包同步接收服务器返回的消息数据)
-
支持为每个连接绑定不同的本地出口IP
-
支持自动合并非结束帧
-
支持自定义附加协议头
-
支持自动处理ping/pong心跳包
-
支持自定义SSL证书
coost 库封装协程
-
基本概念:
1.协程是运行于线程中的轻量级调度单位
2.协程之于线程,类似于线程之于进程
3.一个进程中可以存在多个线程,一个线程中可以存在多个协程
4.协程所在的线程一般被称为调度线程
5.协程发生 io 阻塞或调用 sleep 等操作时,调度线程会挂起此协程
6.协程挂起时,调度线程会切换到其他等待中的协程运行
7.协程的切换是在用户态进行的,比线程间的切换更快
-
协程非常适合写网络程序,可以实现同步的编程方式,不需要异步回调,大大减轻了程序员的思想负担
-
coost库的协程有如下特性:
1.支持多线程调度,默认线程数为系统 CPU 核数。
2.共享栈,同一线程中的协程共用若干个栈(大小默认为 1MB),内存占用低,Linux 上的测试显示 1000 万协程只用了 2.8G 内存(仅供参考)
3.协程创建后,始终在同一个线程中运行,而不会切换到其他线程
4.各协程之间为平级关系,可以在任何地方(包括在协程中)创建新的协程
-
感谢群员"醉酒成梦"提供的C++源代码例子,让我可以编译成DLL供易语言调用(目前暂无法内存加载)
-
模块内部将大量的同步等待代码进行了协程化处理,并且自动识别代码是否运行在协程环境中,可以实现更高的性能
比如:L_winhttp(类)、L_curl_http2winhttp(类) 在用法不变的前提下直接兼容协程环境
RocksDB
-
RocksDB是一个高性能的键值存储库,专为快速存储系统设计,如固态硬盘。它是基于Google的LevelDB进行优化和扩展而来。
-
RocksDB 是一种可持久化的、内嵌型 kv 存储。它是为了存储大量的 key 及其对应 value 设计出来的数据库。它使用了日志结构合并树(LSM-Tree)作为其核心数据结构,这使得RocksDB在处理大量写操作时表现出色。可以基于这种简单 kv 数据模型来构建倒排索引、文档数据库、SQL 数据库、缓存系统和消息代理等复杂系统。
-
基于键值对存储的数据,任意字节数组可作为键,并可存储相关值。字节数组可以是字符串、整数、序列化对象或自定义数据结构。任何类型的数据都可以作为值存储。键和值都是任意长度的字节数组,没有任何预定义数据类型。
-
模块内使用 内联汇编+通用型+指针 的方式将RocksDB与易语言联动,保留高性能方法的同时又兼顾了易用性
ncnn - 高性能神经网络推理计算框架
-
支持卷积神经网络,支持多输入和多分支结构,可计算部分分支;无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架
-
ARM Neon 汇编级良心优化,计算速度极快;精细的内存管理和数据结构设计,内存占用极低
-
支持多核并行计算加速,ARM big.LITTLE CPU 调度优化;支持基于全新低消耗的 Vulkan API GPU 加速
-
模块封装了对darknet框架模型的推理功能:L_ncnn_yolo(类) 线程安全
OpenCV - 计算机视觉和机器学习软件库
-
它最初由英特尔公司发起开发,并以BSD许可证授权发行,可以在商业和研究领域中免费使用
-
这个库广泛应用于人脸识别、物体识别、动作识别、图像分割、运动跟踪等领域
-
由于其开源和高效的特点,OpenCV在学术研究和工业界都得到了广泛的应用和支持
-
模块中封装的OpenCV编译了dnn、openmp、ipp、tbb、opengl、Vulkan等功能
Cookie智能管理(线程安全)
-
内部自动处理cookie信息 Max-Age、Secure、domain、path 与浏览器的处理方式差不多
-
比其他易语言模块的Cookie管理更标准,而且可以避免很多目标网站在cookie设下的大坑
-
我这个应该是易语言史上最完美的Cookie管理类,是完全按照Cookie规则来处理的
-
在多线程中可以不加锁直接操作,内部自带锁,考虑过去除内部临界许可,但是那样效率会很低
-
Cookie操作方法中都带有一个参数【唯一标识】;对每个cookie做标记,适用于多账号POST登录处理时的Cookie管理
当然也有其他特殊用途,自己发掘吧~
键盘/鼠标连发 - 易语言界数十年来唯一纯易语言代码实现的稳定完美方案
-
使用本功能开发 DNF连发程序 仅需要5行代码即可实现基础连发功能(有例子)
-
真正意义上的连发,按住鼠标/键盘指定键即可实现重复单击这个键,默认自动屏蔽windows自带的重复按键
-
内部有一个回调,可以自己写执行模拟键盘鼠标代码,可以是驱动也可以是别的,详情请看压缩包附带的例子
监视热键
-
花了很多心思弄这个,解决了很多情况下被外部屏蔽热键的问题,有些屏蔽强的场景触发率也能保持在98%以上
-
支持多键同时监听,100%互不冲突;同时兼容两种键代码:区分左右键或不区分左右键的键代码,以及兼容小键盘上的键代码
-
内置键盘钩子与线程消息队列,内部已处理好按下与放开的事件,使用方便并且键盘按住不会重复触发事件,从按下到放开都只会分别触发一次
-
按下/放开事件是在线程中执行的,不会影响到键盘的正常输入;不要在回调事件里面执行死循环代码,否则接收不到按键弹起的事件
大漠插件
-
完美兼容黑月,模块内的大漠命令调用未添加任何无关代码、天生支持多线程、效率第一
-
内置四个大漠插件类模块(全部都是免注册调用的)分别是:
L_大漠插件 (3.1233版本的普通封装)
L_大漠插件_附带DLL (内置3.1233版本的DLL文件)
L_大漠插件破解版 (5.1423版本破解,自带DLL文件,所有收费功能都可以直接使用)
L_大漠插件_付费版 (对7.1814版本功能的封装)
VMP壳加强适配版本
-
可以通过模块配置工具开关模块内部vmp置入代码标记的功能
多线程安全调用窗口组件(独立模块)
-
额外写了一个新的模块,该模块允许用户进行简单地初始化后,即可在多线程代码中无脑操作读写窗口组件数据(无锁)
不会出现任何异常情况,新的模块因为封装了易语言窗口组件,所以额外附带了扩展界面等支持库
也正是这个原因,所以才与主模块进行拆分(避免影响到黑月编译)。模块源码与使用例子在群文件目录:多线程安全调用窗口组件
v4.2.2.Dev
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_虚表(类) 支持了允许用户双击单元格进行编辑标题的功能,例子文件名:例程_虚表双击编辑.e
-
新增:L_WSS_HTTP请求头格式到键值数组() 快速将HTTP请求头格式转换成 L_键值 数组,用于 L_WSS_连接() 的请求头参数
-
新增:L_WSS_连接(使用同步接收消息) 默认为假,开启后当前连接的文本/字节集消息只能使用 L_WSS_接收同步消息() 来获取
-
新增:L_WSS_接收同步消息() 从当前连接ID的内部队列中拉取消息;有消息返回真,没有消息返回假
-
新增:L_编码_是否为GB18030()、L_编码_是否为ANSI()、L_编码_是否为BASE64()、L_编码_是否为BASE16();写推理工具时封装的
-
新增:L_目录_删除空目录() 删除现有空目录;如果目录里面还有文件/子目录的话则失败
-
新增:L_目录_删除() 删除一个存在的目录及其中的所有子目录和下属文件,请务必谨慎使用本命令。成功返回真,失败返回假
-
优化:L_文件_删除() 新增参数:处理只读属性。默认为真,会自动处理文件的"只读"属性
-
优化:L_编码_是否为utf8()、L_编码_是否为utf82() 代码更新,性能提升;写推理工具时封装的
-
优化:L_虚表(类) 更多方法增加了虚表是否创建完毕的判断,避免在虚表还没创建的时候被调用导致出现奇怪的问题
-
优化:OpenCV目标检测中的GPU模式删除了Vulkan后端,现在使用OpenCL
-
优化:L_CV模板匹配()、L_CV模板匹配Ex() 新增参数【匹配模式】:默认为0=归一化相关性系数匹配,适用于目标图像的亮度和对比度变化较大,但形状保持不变的情况。1=归一化相关匹配,适用于目标图像的亮度和对比度变化不大,但存在一些噪声干扰的情况。2=归一化平方差匹配,适用于大多数情况,特别是当模板与目标图像之间的亮度差异较大时。
-
修复:L_RocksDB(类) >>> 清空() 在新版RocksDB可能会死循环的问题,我换了一种写法
-
修复:L_窗口_取控件内容()、L_窗口_取控件内容W() 返回值字符串末尾丢失一个字符的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl:更新至8.10.1_3版本
-
其他附加依赖库的更新省略...
v4.2.1.20240927
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_虚表(类) >>> 置禁止调整列宽()
-
新增:L_指针_比较内存() 汇编版;逐个字节比较两个内存数据是否相同,遇到不同的字节立刻返回;相同返回真,不同返回假
-
新增:【多线程安全调用窗口组件】进度条EX_位置()
-
新增:【多线程安全调用窗口组件】超级列表框EX_置项目图标_整数()、超级列表框EX_置项目图标_字节集()、超级列表框EX_置项目图标_空()
-
新增:【多线程安全调用窗口组件】窗口_载入()
-
新增:L_时间_取第几周2() 返回本年第几周与本月第几周
-
新增:L_运行计时(类) >>> 取时间格式2() 返回文本型,取出从开始计时到执行本命令的时间
-
新增:L_CV矩阵_编码到内存() 将矩阵转换为指定图像格式,返回编码结果
-
优化:L_异常捕获(类) >>> 初始化(注册顶级全局异常捕获链) 对MSVC的兼容性提升,注释更新:默认为真;本功能可以让异常捕获的触发优先级尽量最高,可能会出现很多异常记录,有兼容性问题可以设置为假;如果设置为假,异常捕获可能会被干扰。全局实时代码流程日志 不受本参数影响
-
优化:L_运行计时(类) >>> 取时间格式() 使用汇编重写了计算部分,速度更快,并且增加了【年】的计算
-
修正:【新】动态数据类型_生成代码_1.4.2.e 对内存池调用的代码更新到与模块匹配
-
删除:L_线程反馈事件(类) 本类是以前的老旧代码,早已被 【多线程安全调用窗口组件】替代,主线程函数调用的例子也发过了
-
删除:【多线程安全调用窗口组件】超级列表框EX_置项目图标() 通用型参数改成了具体的数据类型
-
修复:L_时间_取第几周() 返回值不符合预期的问题
-
修复:L_时钟(类) 在时钟周期设置为0后还会再触发一次时钟周期事件的BUG
-
修复:L_CV矩阵_从字节集创建()、L_CV矩阵_从内存图像创建() 无法加载webp格式图片的问题
第三方库 或 模块附带功能/软件的更新:
-
hpsocket:更新至6.0.3版本,启用mimalloc提升性能,并进一步缩减体积
-
Curl:更新至8.10.1_2版本
-
RocksDB:更新至9.6.1版本
-
OpenCV4:更新至4.8.0#22版本
-
其他附加依赖库的更新省略...
v4.2.0.20240901
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:OpenCV相关功能,例子已上传git;目前主要封装了模板匹配,代码结构还在规划,后续看需求增加更多功能
-
新增:【多线程安全调用窗口组件】超级列表框EX_置项目图标() 感谢[无昵称]会员额外赞助88元
-
新增:L_文件_写到文件()、L_文件_读入文件() 用于替代以及扩展易语言核心库的文件读写命令,易语言核心库这两个命令有时候会卡住几秒...
-
新增:L_协程(类) >>> 取当前任务数() 取出当前一共有多少个子程序在执行,可以通过这个值来控制并发数
-
优化:【多线程安全调用窗口组件】内部缓存数据的功能逻辑重写,大幅度增加了性能,增加了几乎所有组件的缓存功能~
并且现在每个组件的详细内容都会分别缓存,比如超级列表框每一行每一列;性能差距在5950x上测试对比无缓存大约提升了70倍
同时提供了立即刷新缓存的参数,以便于在修改指定组件的内容后需要立刻同步的场景
-
优化:重写了模块异常捕获中关于『全局实时代码流程日志』的功能,可以在发布版的软件中使用了,并且极大缩减了对硬盘空间的占用率
以及写了配套的数据检索功能,不再需要手动复制粘贴解析处理
-
优化:模块内部封装的NCNN代码与OpenCV解耦合,在只使用OpenCV时体积占用更小
-
优化:模块内滥用读写锁的情况修正了,换回微软自己的锁,避免在CPU负载100%的场景下出现性能损失的情况
-
优化:L_虚表(类) 内部行锁对系统资源的占用降低了
-
优化:L_虚表(类) UI优先模式调整,并且避开了有可能存在的死锁问题
-
优化:L_虚表(类) 减少了处理窗口消息过程中的内存分配释放频率
-
优化:L_运算_位属性是否存在() 改成了纯汇编版本
-
优化:L_线程池(类) 内部访问类私有成员变量的寻址过程缩减了,硬生生用内联汇编怼,经过上一个版本的多次更新,综合性能提升了30%
-
优化:L_ncnn_yolo(类) yolo检测结果 中的 左边,顶边,宽度,高度 坐标改成了整数型(四舍五入取整)
-
修复:L_文件读写_插入数据() 之前写的逻辑不太好导致有崩溃的情况,重写了一份新的
-
修复:L_线程池(类) >>> 取当前线程数() 在线程池未创建或已经销毁时再调用会崩溃的BUG(内部的锁逻辑换了,释放后这里没注意)
-
修复:【多线程安全调用窗口组件】高级表格_取数据() 返回通用型内存泄漏的问题
第三方库 或 模块附带功能/软件的更新:
-
易语言代码异常捕获处理:更新至6.2.0版本
-
NCNN:更新至20240820版本
-
mmkv:更新至1.3.9版本
-
Curl:更新至8.9.1_3版本
-
hpsocket:更新至6.0.2.1版本
v4.1.0.20240724
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
删除:L_内存池(类) 内部我之前用纯易语言代码实现的内存池结构已移除,现在只留下了mimalloc,原有的内存池模式1变为:不使用内存池
重命名为:L_内存池_*() 子程序,不再使用全局变量类,这样可以减少几次寻址,性能提升了一丢丢
-
新增:L_正则_创建()、L_正则_搜索全部()、L_正则_取匹配数量()、L_正则_取匹配文本_从索引()、L_正则_释放搜索结果()、L_正则_销毁()
封装的pcre2库,支持JIT编译器,通用型函数调用+内部使用纯指针封装模式,接入了模块的全局内存池,高性能,线程安全
-
新增:L_虚表(类) >>> 创建(UI优先模式) 默认为假=子线程优先, 此时子线程会更快与UI线程抢占数据, 大并发下可能会导致UI卡顿;真=设置内部锁的逻辑以确保UI更新为优先, 此时所有对虚表进行的操作都会优先等待UI刷新, 也就是说如果UI卡住, 虚表的操作速度也会下降
-
新增:【多线程安全调用窗口组件】超级列表框EX_置项目文本_W、富文本框EX_置光标位置、富文本框EX_取光标位置、富文本框EX_插入文本、富文本框EX_插入文本_W、富文本框EX_置选择文本长度、富文本框EX_置选择区字符格式、富文本框EX_取内容、富文本框EX_置内容
感谢[无昵称]会员为这些新增功能额外赞助288元
-
新增:编辑框_取内容()、单选框_选中()、选择框_选中()、编辑框EX_取内容()、选择框EX_选中() 这些命令增加了新参数[缓存时间]
单位毫秒;默认为0=不缓存数据;本参数指定读取某个组件后,将状态缓存多久以便下次直接使用(用于降低对组件的直接占用,避免卡窗口)
每个组件的缓存时间互不干扰,多线程下直接就是并发读取的性能
-
新增:L_运算_计算数组成员地址() 汇编运算;返回值=起始地址 + (成员 - 1) × 成员大小
-
新增:L_运算_计算对齐数值_整数()、L_运算_计算对齐数值_长整数()、L_运算_计算对齐数值_双精度()、L_运算_计算对齐数值_小数() 汇编版本
-
新增:L_通用对话框_打开文件(最低支持的文件数量) 本参数是缓冲区数量;默认为100,如果要支持多选非常多的文件时,可以将这个参数调高
-
新增:L_MMKV(类) >>> 分类_取全部分类() 取出所有分类信息
-
新增:L_RocksDB(类) >>> 列族_取全部列族() 取出所有列族信息
-
新增:L_线程池(类) >>> 创建(队列释放事件回调) 设置线程池内部队列数据 在释放之前 将调用的子程序回调(子程序接收1个整数型参数: 队列ID)
你可以在这里释放队列额外的数据,比如压入队列时直接传递数据指针后,需要在中途停止线程池时很有用;每个队列只会执行1次当前回调函数
-
优化:L_文件读写_写出文本()、L_文件读写_插入文本行()、L_文件读写_插入文本()、L_文件读写_写文本行() 文本型参数改为了通用型,支持传入文本型变量或者指针
-
优化:L_队列(类) 改进了内部弹出队列时的超时等待逻辑,并且与 L_线程池(类) 解耦合
-
优化:L_线程池(类) 与 L_队列(类) 交互的地方有改进
-
优化:L_线程池(类) 在销毁的时候,内部线程退出的速度更快了
-
优化:L_线程池(类) >>> 创建()、停止并清除所有任务() 注释内容有所修改
-
优化:L_虚表.查找表项() 速度提升了30%
-
优化:使用VC-LTL重新编译了mimalloc内存池,使其体积减小了一倍,对不同版本的操作系统兼容性有了极大的提升
-
优化:L_进程任务池_主进程(类) 内部逻辑重写
-
修复:L_进程任务池_主进程(类) 内存重复释放导致崩溃的BUG
-
修复:L_文件读写_插入文本行() 内部使用多项选择用法错误的问题
-
修复:L_MMKV(类) 读取数据可能会失败的BUG(没取到内部数据的实际长度,写入的数据还是安全的)
-
修复:L_增量更新(类) >>> 在某一次更新后 合并差异补丁() 内的代码指针偏移计算错误导致崩溃的问题
-
修复:L_运算_双精度到文本()、L_运算_双精度到文本2()、L_运算_双精度到文本Ex()、L_运算_双精度到文本Ex2() 有概率返回错误数据的问题
-
修复:L_通用对话框_打开文件(返回_选择的文件路径) 在多选文件时返回的路径末尾没有"\"的问题
第三方库 或 模块附带功能/软件的更新:
-
模块配套支持库:更新至2.2版本,支持库初始化方式更规范了
-
mmkv:更新至1.3.6版本 (使用VC-LTL编译,支持XP系统)
-
mimalloc:更新至2.1.7版本 (使用VC-LTL编译,支持XP系统)
-
Curl:更新至8.9.0_1版本
-
RocksDB:更新至9.2.1版本
-
OpenCV4:更新至4.8.0#21版本
-
flatbuffers:更新至24.3.25版本
-
libjpeg-turbo:更新至3.0.3版本
-
openjpeg:更新至2.5.2#1版本
-
liblzma:更新至5.6.2版本
-
libpng:更新至1.6.43#2版本
-
libwebp:更新至1.4.0#1版本
-
protobuf:更新至4.25.1版本
-
quirc:更新至1.2版本
-
tiff:更新至4.6.0#4版本
-
受其他库更新影响而重编译的库:NCNN
v4.0.0.20240523
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_ncnn_yolo(类) 线程安全;支持darknet框架(yolov3、yolov4)模型推理,带一键转换模型源码,支持GPU等优化
-
新增:L_MMKV(类) 线程安全;性能比RocksDB高一些;适用于需要将数据存储在硬盘中,并能接受对比哈希表时性能略低一些的场景
-
新增:L_通用对话框_打开文件夹() 通过Hook的方式创建用于 打开文件夹 的通用对话框
-
新增:L_打包器_创建()、L_打包器_添加数据()、L_打包器_取打包结果()、L_打包器_销毁()、L_解包器_创建()、L_解包器_销毁()、L_解包器_取数据()
-
新增:L_校验_Xor运算()、L_校验_Xor运算2() 类似rc4,但是性能更高
-
新增:L_信号量(类) 以及对应的子程序版本
-
新增:L_线程池(类) >>> 加入队列通用型()、取任务参数通用型() 避免每次传入参数时都要转换成字节集,效率更高
-
新增:L_热键_等待指定键() 与注册热键差不多,但 是在当前线程主动去判断的
-
优化:模块的调试/编译速度加快了一些
-
优化:L_热键_*() 内部原始输入监听将运行在非主线程上,性能更稳定
-
优化:L_虚表(类) >>> 插入列_批量() 现在 [列宽] 和 [对齐方式] 允许留空了,并且 数组成员数<列标题 也可以
-
优化:L_虚表(类) >>> 保证显示() 现在可以在插入新表项后直接调用了
-
优化:L_文件_创建() 目录不存在时将会自动创建它
-
优化:L_文本_删首尾空() 增加了两个参数(默认为真):删除首部、删除尾部
-
优化:L_文本_取拼音() 多音字的结果现在与易语言核心库的相同了,并且优化了首次调用时内部初始化的速度,提升显著
-
优化:L_RocksDB(类) 内部设置调整,解决了日志文件体积无限增加的问题;新增了一些优化设置
-
优化:L_大数_*() 相关子程序,针对传入空文本的情况做了判断
-
优化:L_文本_子文本替换从数据指针() 现在对不区分大小写的判断使用了正确的方式
-
优化:L_内存池(类) 现在默认使用mimalloc单线程模式
-
优化:编码转换底层方法使用汇编重写+减少内存拷贝,性能提升了1倍
-
优化:L_WSS_连接() 改进了s5代理的握手过程,额外增加了一些连接失败的返回信息
-
修复:L_线程池(类) >>> 加入队列() 时填写超时时间后会导致句柄泄漏的问题
-
修复:L_线程池(类) >>> 加入队列() 传入空字节集队列参数导致的死循环问题
-
修复:L_文本_取文本字符类型() L_文本_取特定文本() 中对全角标点与中文进行了区分
-
修复:L_异常捕获(类) 使用后在易语言调试状态下,调试运行结束后可能会导致易语言崩溃的问题(很奇怪)
-
修复:L_RocksDB(类) >>> Flush() 多线程调用会崩溃的问题
-
修复:动态数据类型(生成器) 规避了易语言全局变量引用为0导致的销毁问题
第三方库 或 模块附带功能/软件的更新:
-
微软mimalloc内存池:
升级至2.1.6版本
-
Curl:
DLL升级至8.8.0_1版本
v3.5.6.20240420
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
重写:L_进程任务池_主进程(类) 内部代码重新设计,提供了高级控制方法;同时保留了之前的用法
-
新增:L_RocksDB(类) 可以将它理解为硬盘版的哈希表使用,能存储非常大的数据。模块使用内联汇编+通用型的方式封装 查看详细介绍
-
新增:L_hash_*() 相关子程序,支持md5、sha1、sha224、sha256、sha384、sha512以及hmac方法
-
新增:L_字节集数组_成员取数据地址和长度() 一次取两个参数,极限情况下还能榨出一点性能
-
新增:L_运算_整数到文本u() 无符号整数的表达
-
新增:L_文本_换行符统一() 汇编写法,用于将\r、\r\n、\n,这些混合换行符格式二次修正并去除空行
-
新增:L_文本_取文本字符类型() 汇编写法,判断指定文本中有哪些字符(中文、英文、数字、符号)
-
优化:L_队列(类) 多线程中对锁的抢占优先级做了调整,性能提升了17%到200%
-
优化:模块内所有 延时() sleep() 均改成了使用定时器+事件的等待方式,避免CPU单核占用100%时的线程抢占调度问题
-
修复:L_虚表(类) 在按住ctrl键选中表项行时会把检查框也一起选中的问题
-
修复:L_虚表(类) >>> 取标题源指针() 调用后虚表卡住的问题,死锁了
-
修复:L_字节集_分割从字节集() 最后2个参数不生效的问题,我增加功能的时候这里忘记改了
-
修复:L_速率限制算法(类) 会报数组访问错误的问题
-
修复:L_整数型数组_删除成员() 执行后内部记录的数组成员数没按预期减少的问题
-
修复:L_配置文件读写(类) >>> 写配置项目() 实际执行结果不符合预期的问题
-
修复:L_运算_整数到文本()、L_运算_整数到文本2() 转换8位数字时,前面可能多出一个0的问题
-
修复:L_运算_双精度到文本Ex()、L_运算_双精度到文本Ex2() 数值为0时不会自动填充指定小数位数的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.7.1_7版本
-
落的汇编版哈希表v2.9:
1.添加 取值_指针、枚举键值_指针、枚举键_指针、枚举值_指针 方法(用法参考[取键值指针示例])
2.修复 删除() 方法,减容时键值数量为0会触发 除0异常 问题
3.修复 内存池触发异常崩溃的情况
v3.5.5.20240307
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_Curl_http2winhttp(类) >>> SetUploadDHead() 设置上传数据时的请求头格式
默认为假=使用【Content-Length: 数据长度】; 为真=使用【Transfer-Encoding: chunked】
避免出现对某些HTTP服务端POST/PUT数据时,由于目标服务器对HTTP协议的封装不完善
导致完全无法识别 Transfer-Encoding: chunked 请求头从而获取不到上传数据的问题 (比如E2EE)
所以做了这个开关以确保兼容性(写死的话担心有些服务端强制要 Transfer-Encoding: chunked)
-
新增:L_文本类型_添加数据从文件() L_文本类型_写到文件(); L_字节集类型_添加数据从文件() L_字节集类型_写到文件() 快速导入导出文件数据
-
新增:L_虚表(类) >>> 事件_当前表项被改变() 回调接收3个整数型参数:hwnd, 表项索引, 项目数值
-
新增:L_WSS_连接() 增加新参数:返回_连接错误信息,在连接失败时可以通过本参数判断具体是在哪个阶段出错的
-
优化:模块内部的代码封装针对这个问题进行了修改,以前是从来没触发过这个BUG,但是为了安全起见还是改了
https://github.com/OpenEpl/TextECode/issues/10
-
优化:L_虚表(类) >>> 取标题源指针() 补全了注释,方便理解该命令的行为
-
优化:模块内自定义窗口/线程消息值 现在按系统规范使用 RegisterWindowMessage 函数注册,而不是自己随便定义一个值来判定
此项改动受影响的代码有:L_虚表(类)、L_热键_*(子程序)
-
优化:重写了 L_整数型数组_*(),乘法运算的部分变少了,代码逻辑更加合理
-
优化:模块内的 文本/字节集 寻找/倒找 汇编代码有调整,影响范围:几乎整个模块
-
优化:现在 L_WSS_连接() 失败时,不会触发连接断开事件了
-
优化:L_字节集类型_添加数据从字节集() 增加了返回值,返回内部数据长度
-
修复:L_字节集类型_添加数据从字节集()、L_字节集类型_置数据从字节集() 传入空字节集变量会崩溃的问题(用汇编重写后忘记判断0了)
-
修复:L_DC截图(类)、L_位图_截图(子程序) 在部分情况下返回的位图数据不标准的问题,整个易语言社区内开源过的截图功能都不标准
起因是我将截图结果传递给Opencv的时候发现会报错,在调试过程中发现微软的文件管理器也没办法正确显示缩略图
最离谱的是一些图片查看器完全不报错,之前写完觉得就没问题了,这次我上外网查了半天资料,终于修好了...
-
修复:L_运算_计算对齐数值() 中如果 输入值=对齐值 则 返回值=输入值+对齐值 的BUG,正常应该是 返回值=输入值
-
修复:L_WSS_连接() 对服务器返回的HTTP状态码判断出错导致 主动断开TCP连接的问题(原因是hpsocket的2字节返回值我读了4字节)
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.6.0_4版本
-
hpsocket:
DLL升级至6.0.1.6版本
v3.5.4.20240110
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:异常捕获功能增加了全自动处理E代码的方案,也就是说以后不需要手动去生成代码了,只需要配置一下初始化,然后静态编译即可~
-
新增:L_有序输出队列(类) 适用于 单线程有序输入→多线程乱序并发执行→单线程有序输出 的需求
比如:1.多线程视频文件处理;2.屏幕多线程编码解码传输
-
新增:所有文本/字节集分割的方法增加新参数:删除空成员
-
优化:L_链表_*() 用汇编重写了
-
优化:L_线程池(类)、L_队列(类) 用汇编替换了部分代码
-
优化:L_异常捕获(类) 内部增加了2个已知的异常代码值
-
优化:L_延时() 无限等待的条件改成了<0 才触发
-
优化:L_线程池.加入队列() 新增[队列已满如何处理]参数值为2的行为:
强制加入队列(适用于在队列子程序内需要调用 加入队列() 的情况,可以避免与 [最大队列数] 的等待产生冲突)
-
优化:模块内部的 【API静态加速优化】测试发现有点玄学问题,为了避免出现奇怪的兼容性问题所以删除掉了
以后尽量避免封装这类带有全局Hook原理的方法 (配置工具暂时没改动,开关已失效)
-
修复:null (稳得一批)
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.5.0_4版本
-
coost协程库:升级至3.0.2版本
-
hpsocket:
DLL升级至5.9.4.1版本,主要将openssl 从 1.1.1v 升级到 3.0.12 版本
受影响的功能:模块中wss的方法,遇到兼容性问题请马上反馈给我
v3.5.3.20231121
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_文本_文本长度校验()
-
新增:L_通用对话框_打开文件()、L_通用对话框_保存文件() 以 打开文件/保存文件 的方式创建一个通用对话框,比易语言自带的功能多
-
新增:L_配置文件读写(类) >>> 置导出文件名() 设置 写配置项目() 自动保存时输出的文件路径,如果不设置的话默认为 导入()时的路径
-
新增:L_进程_是否为管理员()、L_程序_是否为管理员()
-
新增:L_文本_寻找文本2() 纯指针的版本
-
新增:模块提供的所有文本分割方法均增加新参数:不区分大小写 (为真不区分大小写,为假区分。默认: 假)
-
新增:L_内存分配_复制内存2()、L_指针_复制内存2() 复制内存-内存区域不允许重叠
-
删除:L_文本_寻找文本_GBK()、L_文本_取长度_短() 这些命令已废弃
-
删除:L_配置文件读写(类) >>> 创建()
-
改名:L_配置文件读写(类) >>> 销毁() → 清空()
-
优化:L_文本_寻找文本()、L_文本_倒找文本()、L_文本_取长度()、L_字节集_寻找字节集()、L_字节集_寻找字节集2()
L_文本_取长度W()、L_文本_取长度W_指针() 改成了白银的方案
-
优化:L_文本_比较相似度() 性能提升
-
优化:L_内存分配_复制内存()、L_指针_复制内存() 改用 memmove
-
优化:L_文本类型*()、L_字节集类型_*() 相关方法再次用汇编进行了优化,现在汇编代码覆盖率达到了80%,当然性能也提升了
-
修复:L_编码_ansi到unicode() 传入空文本会出现异常数据的情况
-
修复:L_时间_取随机时间戳() 会崩溃的BUG。整数转字符串的方法更新后这里没按新规范写导致的
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.4.0_6版本
v3.5.2.20231015
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_WSS_*()相关子程序,可同时支持ws/wss通讯 点击此处查看详细介绍
-
新增:L_文本_子文本替换从文本型() L_文本_子文本替换从数据指针() 内联汇编混写的超高性能方法
-
优化:多线程安全调用窗口组件(独立模块) 增加了大量EXUI支持库的UI命令支持
-
优化:L_文本类型_取文本型数据() 减少了一次确认字符串长度的耗时
-
优化:L_多文件缓冲输出(类) 支持了相对路径的文件名格式,并且现在会自动创建目录了,不再需要主动确认目录是否存在
-
优化:L_多文件缓冲输出(类) >>> 写文本() 文本参数改成了通用型
-
修复:L_多文件缓冲输出(类) 写出次数刷新阈值 功能的线程安全问题(会出现在多线程中自动刷新数据到硬盘的行为不符合预期的情况)
-
修复:L_文本类型_创建() 后不写入数据,直接 L_文本类型_取文本型数据() 有可能会导致软件崩溃的安全隐患
-
修复:L_编码_usc2到unicode() 返回空字节集的BUG
-
修复:L_大数_*() 运算方法传入空变量会崩溃的BUG
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.4.0_2版本
v3.5.1.20230914
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
制作了一个支持库,提供两个命令:L_打包数据(通用型, ...)、L_解包数据(字节集, 通用型, ...) 无限参数 点击此处查看详细介绍
-
新增:L_速率限制算法(类) 线程安全;可用于速率控制(上传下载带宽、并发等),速率控制精确到毫秒 点击下载该功能例子
-
新增:L_文本型数组_映射到易语言数组() L_文本型数组_映射结束() 用易语言的方式直接读取数组成员
-
优化:L_运算_整数到文本() 现在会返回写入缓冲区的字符串长度了
-
优化:L_文本_分割文本从文本型() 文本参数改为了通用型(用法不变,无需改动原有代码) 适用性更强一点
-
优化:L_Hook键鼠(类) >>> 安装原始输入监听() 的内部处理逻辑调整,写法与微软文档的解释对应
-
优化:虚表内部UI绘制逻辑调整:现在仅会重绘主动修改过的表项,数据量很大并且UI更新很频繁的时候能感觉到更流畅了(本质上UI多卡都不影响代码速度)
-
修复:L_编码_url解码() 数据末尾会乱码的BUG,是之前把 取空白字节集() 全部替换成 L_字节集_取空白字节集(, 假) 导致的。已复查了一遍
-
修复:L_运算_位属性是否存在() 判断不合理的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.3.0_1版本
-
coost协程库:升级至3.0.1版本
1.协程调度优化
2.协程锁、协程事件可以在任何地方调用了
3.其他改进、错误修复等
4.调整协程的销毁逻辑
v3.4.7.20230813
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_进程任务池_主进程(类)、L_进程任务池_子进程(类) 允许进行简单初始化后直接通过子进程去并发运行任务
适用于调用了某些有BUG的模块/库,但无法修复的情况,此时就可以用这两个类将会崩溃的代码转移至子进程运行
点击下载该功能例子
-
新增:L_系统_允许休眠() L_系统_禁止休眠() 防止系统在应用程序运行时进入睡眠状态或关闭显示器(需要定时循环调用)
-
新增:L_指针_到短整数型_无符号()、L_指针_到短整数型1_无符号()、L_指针_到短整数型2_无符号()、L_指针_到短整数型3_无符号()、L_指针_到短整数型4_无符号();读取指定地址的2字节数据并转换为整数型
-
删除:L_读写锁_*()、L_读写锁(类) 中与 【读锁优先级】 相关的方法/参数
-
优化:L_虚表(类) 微调了虚表内部的UI更新以及表格线绘制的逻辑
-
优化:L_类引用计次_*() 相关功能有调整,可控性更高了
-
修复:L_协程.事件_等待() 直接崩溃的BUG
-
修复:L_全局_日志系统_多文件(类) 文件创建失败的BUG
-
修复:模块内对CPU支持的指令集判断失误,导致在部分老旧CPU上运行时可能会崩溃的问题(调用了不支持的指令集)
-
修复:上个版本更新后导致模块内部所有的文件枚举相关命令出现问题的BUG
-
修复:L_编码_unicode到usc2() 部分Unicode表情会乱码的BUG
第三方库 或 模块附带功能/软件的更新:
-
Hpsocket:
DLL升级至5.9.3.1版本
-
Curl:
DLL升级至8.2.1_5版本
-
zyjson:
更新至4.0.8版本
修复了 到自定义() 空文本数据会失败的问题
修改了 拷贝时的文本转义问题, 还依据标准转义 '/' 字符
修改了 取文本() 类型为 null 则返回 "" 文本
修复了 合并() 方法内存泄漏的BUG
从这个版本开始不再需要主动调用 创建() 方法
v3.4.6.20230609
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:为新版【动态数据类型】写了一个代码生成器,一键生成对指定数据类型的操作方法
-
新增:L_虚表(类) >>> 可有焦点()
-
新增:L_校验_取md5_ASM() 原作者:落
-
新增:L_文本_到字节集() 与 到字节集() 结果一样,但性能更高
-
新增:现在可以在配置工具里面自定义模块内部释放的DLL文件目录名称了
-
优化:L_校验_取md5()、L_校验_取md5_文本() 性能提升
-
优化:L_程序_禁止重复运行(窗口句柄, 是否结束, 唯一标识, 全局有效) 现在作为系统服务运行也可以正常与用户桌面的exe进行交互了
-
优化:模块内部的所有内存地址判断逻辑对内存大小超过2G的情况做了兼容;之前是无脑判断内存地址是否大于0,现在判断内存地址是否等于0
-
优化:L_编码_url解码() 性能提升
-
优化:L_时间_取月初()、L_时间_取月末() 原先来自精易模块的代码有BUG,取出的5月份天数为30而不是31,我直接重写了
-
优化:L_时间_取随机时间戳() 重写,性能提升
-
优化:L_Curl_http2winhttp(类) 现在允许 Open() 后多次 Send() 了
-
优化:L_Curl_http2winhttp(类) >>> SetDownloadFilePath() 现在内部会在 Send() 之后自动释放对指定文件的占用了
-
优化:L_虚表(类) 内部UI更新逻辑,并且修复了一处小BUG;现在推荐只用 L_虚表.请求更新UI() 本方法异步刷新,效率高
L_虚表.刷新显示()、L_虚表.重画() 这两个是堵塞同步更新的模式(UI更新耗时多久这两个函数就得执行多久),不建议在对性能要求较高的代码段中调用
-
修复:L_时间_格式化() 原先来自精易模块的代码有BUG,取出的时间格式与预期不符;重写了,并且补全了备注
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.1.2_3版本
-
zyjson:
更新至4.0.6版本;重写了解析算法以及其他优化
v3.4.5.20230503
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:设计了另一个版本的【动态数据类型】这套方案同时支持引用/拷贝变量,同样对各种嵌套数据类型都完美兼容
只需要修改变量数据类型然后复制粘贴使用即可,禁止对外发布
-
新增:L_文件读写_插入字节集()、L_文件读写_插入文本()、L_文件读写_插入文本行()、L_文件读写_插入数据() 把数据快速插入到当前的读写位置
-
改版:L_读写锁(类) 使用了"白银"提供的方案,内部控制逻辑更加合理,性能对比win自带的读写锁更高,而且支持XP系统
同时提供了子程序版本:L_读写锁_*()
-
优化:模块内部设计了一个新方案,可以全自动适应使用了某些库的状态进行初始化处理
比如使用了 L_协程(类) 后,模块内部的大量代码会自动协程化处理;后续对hpsocket进行改版封装的时候也可以利用上这个方案
比如当使用到迷你版hp中阉割掉的功能,则全自动在初始化的时候直接启用完整版hp(目的是优化软件体积,优先使用迷你版DLL)
-
优化:L_全局_异常捕获(类) 恢复了栈回溯信息的记录
-
优化:L_全局_异常捕获(类) 全新的代码内存泄漏检测逻辑,兼容性高了不少
-
优化:L_线程许可区(类)、L_线程许可区_*(子程序) 略微提升了性能
-
优化:模块内部的字节集分割方法用汇编重写了指针读写以及运算的部分(上个版本更新的时候遗漏了)
-
修复:异常捕获配套工具中使用F11.F12快捷处理代码功能逻辑上的BUG
-
修复:L_虚表(类) >>> 置标题() 细节部分与预期运行结果不符合的问题
-
修复:L_文本型数组_*() 在添加成员时,字符串末尾补0字符的汇编执行结果与预期不符的问题
-
修复:L_内存文件映射_映射到内存() 偏移计算错误的问题
-
修复:L_运算_计算对齐数值() 向下取整时返回值与预期不符的问题
-
修复:L_Hook键鼠(类) >>> 安装原始输入监听() 键盘事件中的[虚拟键码]参数无法正确返回shift、ctrl、alt对应虚拟键码的问题
这个BUG会影响 L_热键_注册() 中对用户按下的shift、ctrl、alt键判断是左边还是右边的逻辑
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.0.1_8版本
-
微软mimalloc内存池:
升级至2.1.2版本
v3.4.4.20230408
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_大数_* 提供对超大浮点数、整数进行加减乘除运算以及比较大小的方法,支持负数以及自定义小数点长度;数据使用文本型存储
-
新增:L_原子锁_* 补充大量原子锁操作方法(短整数型、整数型、长整数型) 以及对应类型的指针方式
-
新增:L_运行速度计算(类) 本类可以允许用户设置采样时间,使用 中位值平均滤波法 计算运行速度(天速、时速、分钟速、秒速),测速精准平滑
-
新增:L_Curl_http2winhttp(类) >>> 获取证书信息()
-
新增:L_文本_倒找文本() 汇编版本,原作者:白银,他说这是80386汇编下最快的写法
-
新增:L_文本_寻找文本_GBK() 兼容中文字符的模式;作者:落
-
新增:L_文本_取长度_短() 如果你能确定字符串比较短(大约<16或32字节),那么直接用本函数平均速度对比 L_文本_取长度() 快一些;
如果在 L_文本_取长度() 中检测到CPU均不支持AVX2、SSE2、SSE42指令集时会自动调用本函数
-
优化:模块内部的所有文本/字节集分割方法性能提升,用汇编重写了指针读写以及运算的部分
-
优化:L_虚表(类) >>> 引用虚表(虚表类)、引用结束() 引用一个虚表类,之后对本类进行的操作都会映射到目标虚表中
如果你需要创建好几个相同的虚表并同时操作一样的右键菜单时,可以用一个临时变量来表示当前右键点击的【虚表类】然后操作这个变量
-
优化:L_虚表(类) >>> 置标题() 性能提升,减少了内存重新分配的次数
-
优化:L_多文件缓冲输出(类) >>> 初始化() 新增参数:写出次数刷新阈值;默认为-1=不使用本条件;当对同一个文件调用 写*() 方法到一定次数后,直接将该文件数据刷新到硬盘
-
优化:L_文本_取出现次数() 使用纯汇编版本,性能提升很大
-
优化:L_文本_寻找文本() 现在支持不区分大小写寻找;整合了白银与落的方案,优先在CPU指令集支持的情况下用"落"的
-
优化:L_文本_格式化() 性能提升
-
优化:L_文本_取长度() 新增支持SSE4.2指令集;自动选择CPU指令:AVX2、SSE2、SSE42、80386;
当CPU支持AVX2指令集且要获取的文本长度非常大时,性能对比其他指令集/算法提升很恐怖;
如果你能确定字符串比较短(大约<16或32字节),请直接使用 L_文本_取长度_短() 此时速度稳定,会快一些
-
修复:L_文本_格式化() 中使用 %.0f格式时,也就是小数点末尾数量=0的格式,输出的双精度小数型会有一个"."的问题
-
修复:L_读写锁(类) 会导致锁在极端情况下会失效的BUG,有可能会导致多线程代码运行冲突(仅在XP及以下的系统会引发)
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至8.0.1_6版本
-
微软mimalloc内存池:
升级至2.1.1版本
v3.4.3.20230317
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:Curl封装增加了一个【Tls指纹魔改版】模块配置工具同步更新
-
新增:L_虚表(类) 大量API参数常量查阅自 黑月界面类模块,查询了很久的微软文档,费了不少时间
本类允许用户以使用普通超级列表框的思维操作,对比其他人封装的虚表更好用,直接就可以多线程高并发读写(比单线程快)
支持用户自定义表格线颜色、单元格文字颜色、单元格背景色,同时提供了可批量修改的方法
全表的所有数据状态由模块内部自动接管、自带行锁、自带快速排序 用户只需要以普通超级列表框的方式使用即可,易用性MAX
循环操作1000万个单元格的性能测试:置标题()=400ms, 排序=300ms, 查找表项(全表搜索一个不存在的字符)=120ms
例子提供了将虚表作为日志刷新显示的UI、挂接事件、排序、插入、设置表格线.文字.背景色、实时1000万次置标题性能 等演示
-
新增:L_字节集_取出现次数()、L_字节集_取出现次数2() 计算指定字节集在数据中出现的次数,与 L_字节集_分割***() 相同的高性能写法
-
优化:Curl内部连接缓存控制逻辑,1000以上的并发请求性能有提升
-
优化:L_时间_取现行时间戳()、L_时间_到时间戳() 算法改进,原算法用精易模块的有BUG:https://bbs.125.la/thread-14763018-1-1.html
-
优化:L_进程_枚举Ex() 现在可以枚举出大量的详细系统进程信息了
-
优化:L_字节集类型_插入数据*()、L_字节集类型_置数据*()、L_字节集类型_添加数据*() 内部命令用汇编优化了,减少call,性能测试提升了三倍左右
-
优化:L_系统_取操作系统类别()、L_系统_取操作系统类别2() 新增对win11 server2019 server2022 的支持
-
优化:L_编码_url编码()、L_编码_url编码W() 新增参数 [符号与中文使用小写] 默认为假=使用大写,适用于一些特殊情况,比如需要md5加密与部分网站的结果相同,类似这个需求:https://bbs.125.la/thread-14763265-1-1.html
-
优化:L_文本类型_添加数据从**() 内部部分代码用汇编重写了,性能有所提升
-
调整:L_文本_取右边()、L_文本_取左边1() 中【起始寻找位置】的参数注释,避免对用法产生疑惑
-
修复:L_多条件综合权值排序(类) 内部成员数为0时异常崩溃的BUG.忘记判断了
-
修复:L_Curl_http2winhttp(类) 在协程中异常崩溃的BUG(有个逻辑值写反了...)
-
修复:L_位图_截图() 在更新的时候写错返回值类型导致调用时编译报错的BUG
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.88.1版本
v3.4.2.20230131
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
L_Curl_http2winhttp(类):
优化:现在可以在 L_协程(类) 中进行高并发请求使用了
新增:SetDownloadFilePath(文件路径, 记录重定向数据) 设置本次HTTP请求接收的数据保存到本地的文件路径
文件路径:本参数设置后调用GetResponseBody、GetResponseText、GetResponseTextAuto、GetResponseTextUtf8ToAnsi将会返回空数据
记录重定向数据:是否将301.302的网页内容包含进去(如果SetRedirect设置为真的话),默认为假=只写出最后一次重定向的url内容
新增:SetTimeouts(连接超时, 低速超时, 低速限制, 整体超时) 增加了两个可选超时参数
新增:内部增加了我自己写的全局连接缓存处理,能够极大程度提升HTTP性能(Curl原始的全局连接缓存有BUG)
新增:SetConnectMode() 设置连接控制模式,可以按照自己需求来调整
新增:L_Curl_初始化(, 设置_全局连接缓存最大数量, 设置_全局连接数量最大限制)
新增:L_Curl_设置(设置_全局连接数量最大限制)
设置_全局连接缓存最大数量:设置的数量将用作在HTTP请求完成后可能保留在连接缓存中同时打开连接的最大数量;
留空默认为实时正在使用的 L_Curl_http2winhttp(类)数量*4
设置_全局连接数量最大限制:默认为0=无限制;本参数限制全局范围内最大打开的TCP连接数量
超出这个连接数量的HTTP请求将会被挂起并等待,直到超出 L_Curl_http2winhttp.SetTimeouts() 中 [连接超时] 设置的时间
新增:AutoDecompress() 用户反馈在特殊情况下需要自己解压,所以加了个开关;设置内部是否自动解压 br,gzip,deflate
-
新增:L_多条件综合权值排序(类) 本类可计算多个条件的综合权值来进行排序操作,可自定义每个权重的大小,适用范围很广,具体用途可以发挥想象力~
-
新增:L_Hook键鼠(类) >>> 安装原始输入监听() 回调子程序分别增加了两个参数:设备ID, 设备名称;指向当前触发输入事件的硬件设备标识
-
新增:L_网页_解析域名后缀() 通过内置的域名后缀列表来逐个对比判断传入的域名后缀名称
-
新增:L_运算_对数变换()、L_运算_归一化()、L_运算_均值标准化() 对数据进行一些处理,懂的自然懂
-
新增:L_程序_Call_Auto() 以 Stdcall 方式调用函数;自动平栈
-
优化:L_程序_Call0() 到 L_程序_Call15() 性能提升
-
优化:L_数组_打乱顺序()、L_数组_打乱顺序2()、L_数组_滚动()、L_数组_滚动2()、L_数组_反转()、L_数组_反转2() 支持自定义成员长度了
默认为4;文本型、字节集、整数型、小数型、自定义数据类型=4;长整数型、双精度小数型=8;短整数型=2;字节型=1
-
优化:L_DXGI截图(类)、L_DC截图(类) 性能提升,主要处理了内存分配以及内存复制的地方,特别是dxgi的全屏截图速度提升非常大
-
优化:L_文本_比较()、L_文本_删首尾空()、L_文本_删首尾指定文本()、L_文本_删首尾指定文本s() 性能提升明显,字符串参数改成了通用型
-
优化:L_队列(类) 部分指针读写代码用汇编重写了,性能有所提升
-
优化:模块内部的编码转换 [删除末尾0] 的功能做了改动,减少了一次内存分配和内存释放(处理超大数据的时候性能会提升不少)
-
修复:L_文本_删首尾空()、L_文本_删首尾指定文本()、L_文本_删首尾指定文本s() 执行类似 L_文本_删首尾空(" ") 命令会崩溃的BUG
-
修复:L_编码_utf8到gb2312() 结果不符合预期的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.87.0_2版本
-
hpsocket:
DLL升级至5.9.1版本
-
微软mimalloc内存池:
DLL升级至2.0.9版本,DLL内部修复BUG;模块修复了传递给DLL的设置
v3.4.1.20221217
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_多文件缓冲输出(类) 线程安全+性能极高的多文件输出方案,可自定义缓冲区大小,主动刷新数据到硬盘,锁细化到文件数量
在AMD 5950X CPU上单线程测试:循环写出100万次仅耗时约200毫秒,按照设计原理来说多线程跑会快50%以上
-
新增:L_物理内存扩展_*() 相关函数 可以申请超过4G以上的物理内存使用;相关例子已上传到gitee
-
新增:L_运算_加法_*()、L_运算_减法_*()L_运算_乘法_*()、L_运算_除法_*()、L_运算_位或_*()、L_运算_位异或_*()、L_运算_位与_*()、L_运算_位取反_*()、L_运算_左移_*()、L_运算_右移_*()、L_运算_求余数_*()、L_运算_比较大小_*()
-
新增:L_程序_开启恶魔权限() 需要在管理员权限下运行;让你的程序在没有system权限的情况下能够突破文件和注册表访问权限
-
新增:L_v8js引擎(类) 以及面向过程的子程序版本:L_V8_*() 多线程安全稳定 无内存泄露,相关例子已上传到gitee
-
优化:L_线程池(类) >>> 加入队列() 性能提升,几个版本之前做兼容性改动后性能下降,原因是用了局部变量类。。。
-
优化:L_线程池(类) 的销毁判断逻辑,之前是在任务线程尾删除当前线程记录,在销毁的时候判断线程数量是否为0
然而这种方式我忽略了一个地方,就是 当线程池中有1000以上的大量线程数时,线程的回收并没有想象中那么快...
会出现模块释放完数据后线程还没完全被系统回收而崩溃的BUG(仅限于软件退出的时候);优化后的逻辑会完全等待任务线程被系统回收才返回
-
优化:L_校验_取rc4() 性能提升了10倍左右
-
修复:L_线程许可区(类)、L_线程许可区_(子程序) 在协程环境中逻辑不正常导致异常崩溃的BUG
-
修复:L_DXGI截图(类)、L_位图_截图() 中一处会导致崩溃的BUG
-
修复:L_原子锁_*() 返回值与实际情况不符导致依赖于这些功能的逻辑控制代码可能会异常的BUG
-
修复:L_内存池(类) mimalloc单线程模式在极端情况下可能会崩溃的BUG
-
修复:L_校验_取md5_文本() 取中文MD5失效的BUG
-
修复:L_模块_退出() 中忘记给全局变量标记赋值导致其他类在销毁时判断不到空指针,然后异常崩溃BUG
-
修复:L_文本_格式化() 使用自定义小数点长度的参数(%.1f 到 %.9f)时, 值如果为0返回文本会被截断的BUG
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.86.0_2版本
-
coost协程库:
DLL升级至3.0.0版本,全新版本.大量改动优化
-
微软mimalloc内存池:
DLL升级至2.0.7版本,修复BUG+提升性能
-
模块配置工具:
新增了一个自定义选项 ↓↓↓
控制模块内部资源是否启用压缩壳友好模式;开启后模块内部的DLL等资源就不会被加密,关闭后进行UPX压缩并不会大幅减少文件体积
v3.3.3.20221026
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
新增:L_异常捕获(类) >>> 初始化(, , , , , , , , , ,注册顶级全局异常捕获链)
默认为真;本功能可以让异常捕获的触发优先级尽量最高,如果有兼容性问题可以设置为假
-
新增:L_异常捕获(类) >>> 初始化(, , , , , , , , , , ,使用全局实时代码流程日志) 默认为假;使用本功能可以检查到常规异常捕获无法发现的问题
如:代码死锁、异常回调被干扰等;本功能开启后会严重影响软件性能,仅供本地调试使用
日志文件保存在[当前目录\异常捕获日志\线程ID.txt] 日志内容可以粘贴到异常捕获工具里面解析
-
新增:L_Curl_http2winhttp(类) >>> GetSendHeaders() 获取本次HTTP请求发送的请求头内容(能用于检查自己设置的HTTP请求头是否有误)
-
新增:L_Hook键鼠(类) 中的鼠标钩子回调 增加了一个参数:是否真实鼠标[逻辑型] 如果有使用这个鼠标钩子的话请务必在源码上增加这个参数
-
新增:L_文本_删首尾空() 比易语言自带的更好;循环删除文本首尾的空字符;字符(9), 字符(10), 字符(13), 字符(32), 全角空格;有遗漏的可以联系我补充
-
新增:L_DXGI截图(类) >>> 使用dxgi进行屏幕截图,速度非常快,但是GPU在满载的时候截图速度会下降
-
新增:L_DC截图(类) >>> 通用快速截图方案,支持截取1.4.8.16.24.32位图,完美不出错
-
新增:L_位图_截图() 基于 L_DC截图(类),但是速度没有DC截图类快,因为每次调用都会初始化DC对象,DC截图类只初始化一次
-
新增:L_文本_删首尾指定文本s() 参数2传入文本型数组用于循环删除多个字符
-
调整:L_线程池(类) >>> 创建() 中的一些默认参数有些许微调
-
优化:L_winhttp(类) 与 L_Curl_http2winhttp(类) 的方法:SetRequestHeaders() 现在允许传入非标准格式的协议头值了
-
优化:L_队列(类) 删除了 置快速响应阈值() 现在内部会全自动适应等待的中线程数量,不再需要手动瞎调了
-
优化:L_线程池(类) 优化了加入队列的响应速度,在某些极端情况下的性能提升2倍
-
优化:L_文本_格式化() 性能提升
-
优化:L_超时等待_初始化 ()、L_超时等待(类) 性能提升
-
优化:L_运算_计算数据哈希范围() 性能提升,顺便修复了个BUG
-
修复:L_线程池(类) 「线程空闲回收时间」设置过大会影响线程池销毁速度的问题(是L_队列(类)联动的)
-
修复:L_鼠标_移动() 鼠标位置与实际坐标有误差的BUG
-
修复:L_超时等待(类) 在上次更新后遗漏了一处判断导致 不执行 开始() 时 直接调用 是否超时() 返回假的BUG,正常应该返回真
-
修复:编码转换相关功能传入空内容的变量导致崩溃的问题,忘记判断空指针了
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.85.0_8版本
-
微软mimalloc内存池:
DLL升级至2.0.6版本
v3.3.2.20220803
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
L_Curl_http2winhttp(类):
新增:GetErrorString() 当http请求失败后可以调用这个方法获取相对详细的错误说明文本
新增:open() 现已支持GET、POST、PUT、HEAD、PATCH、DELETE请求
新增:GetResponseTextAuto() 取返回文本;自动识别编码;自动解压br,gzip,deflate
优化:现在内部会全自动初始化了,不再需要主动调用 创建()
优化:自动重定向的判断逻辑调整
修复:Curl封装内部有个回调参数写错可能会导致崩溃的问题
删除:内部的全局连接缓存,以后我会自己去实现一个
-
L_超时等待(类):
优化:减少了重复使用时创建-销毁内部对象的次数
调整:初始化() 改为 开始() 功能:开始计时,如果之前的计时还未到期则重新开始计时,不影响 是否超时() 设置的等待时间
新增:停止计时() 功能:停止内部计时器的运行,此时 是否超时() 在到达超时时间后返回假
删除:销毁() 此功能改动后已无意义,代码中有引用的话直接删除即可
-
新增:L_文件_禁用重定向() L_文件_恢复重定向() L_目录_禁用重定向() L_目录_恢复重定向() 点击查看参考资料
-
新增:L_运算_计算鼠标贝茨移动轨迹() 有7个可调参数,用于生成鼠标移动轨迹,防检测~(也就是贝塞尔轨迹)
-
调整:L_窗口_寻找() 参数顺序有变动,为了以后增加更多条件做准备,并且新增了一个参数:条件_仅查找可见窗口
-
调整:数据类型[L_Curl_POST数据] 名字修改为:[L_Curl_上传数据]
-
调整:L_文件读写_打开文件() 参数1[文件名] 改为了通用型,现在支持读写Unicode编码的文件了
仅支持传入[文本型]或[字节集]类型,如果是字节集的话代表当前文件名是Unicode编码,字节集的末尾要有标准的2个0字节作为结尾
以后会考虑将一些有ANSI与Unicode版本的API都做成通用型的模式
-
优化:L_异常捕获(类) 减少处理后的文件体积以及内存占用,加快了处理大量代码时的编译速度。不兼容以前的版本
-
优化:L_窗口_取标题() L_窗口_取标题W() 重写获取窗口标题方式,优化检测速度(第二次改动)
-
优化:L_窗口_激活() 我算是跟这个功能杠上了...
-
优化:L_文本_取拼音() L_文本_取随机姓氏() 性能提升,并且现在兼容黑月的汇编编译模式了
-
修复:L_热键_注册() 与 L_线程池(类) 中易语言自带的[通用型可空参数]读取有问题、模块没正确读取到回调函数地址后直接call导致崩溃
现已用汇编读ebp+内存读写的方式检测通用型参数是否可空,完美解决。
-
修复:L_文件读写_写出数据()、L_文件读写_读入数据() 没有严格按照微软文档封装可能会产生BUG的问题
-
修复:L_文件_取尺寸() 忘记释放文件句柄了
-
修复:L_读写锁(类) 在XP系统下有一处会导致数据冲突的BUG
-
修复:L_POST数据封装_字节集(类) >>> 取Content_Type() 注释写错了,会影响你们对这个功能的行为判断
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.84.0_8版本
v3.3.1.20220522
更新内容 - 红色字段代表比较重要的更新或提示,鼠标停留可显示部分记录更新的时间
-
L_全局_异常捕获(类) >>> 初始化() 增加新功能:统计内存泄露与句柄泄漏情况(已完成内存泄漏检测,句柄泄漏下次弄)
易语言代码异常捕获处理工具同步更新
-
新增:L_增量更新(类) 封装经典的bsdiff算法,可以通过旧版本数据+新版本数据生成一个体积小的补丁
通过旧版本数据+补丁数据就可以生成新版本数据,适用于文件版本更新等,可以降低带宽使用量
-
新增:L_文件读写_刷新到硬盘() 刷新指定文件的缓冲区并将所有缓冲数据写入文件,由于系统有硬盘缓存,多次频繁执行刷新会导致读写性能下降
-
优化:L_队列(类) >>> 弹出() 删除了最后一个因为版本更新所遗留的参数
-
优化:L_内存文件映射_映射到内存() 参数2[开始位置]行为调整:
默认为0,模块内部自动向下取整为操作系统的内存分配粒度,并且由参数4返回预期的读写起始位置(方便读写数据)
-
优化:L_内存文件映射_映射到内存() 新增参数4:返回_内存读写起始地址;本参数返回基于映射视图[开始位置]的相对偏移地址
-
优化:L_窗口_寻找() 在部分情况下的性能
-
优化:L_Curl_http2winhttp(类)>>>Open() 新增参数:清空自定义选项;设置Open之后是否自动清空之前使用 设置Curl选项() 设置的值
-
优化:L_Curl_http2winhttp(类)>>>设置Curl选项() 现在内部会记录设置的选项值,自动在HTTP跳转时重用
-
优化:L_窗口_激活() 现在支持窗口内部的控件激活并设置焦点了
-
优化:L_热键_注册() 键盘按下与放开的回调现在直接支持传入 [整数型] 或 [&子程序] 了
-
修复:L_Curl_http2winhttp(类) 中 HTTP重定向功能会重复对一个url执行多次的BUG
-
修复:L_字节集数组_保存()、L_字节集数组_读取() 会导致软件崩溃的BUG,这个命令以前用的是别人的写法
解决方法是我直接重写了,额外新增 L_字节集数组_读取_废弃版本() L_字节集数组_保存_废弃版本()
这两个是修复之前的数据结构,有崩溃的BUG,仅为了兼容你旧版本已编译的软件使用,请尽快升级你的所有软件
-
修复:L_内存池(类) 中的一处严重BUG,这个问题会导致高并发情况下的内存泄漏
-
修复:L_POST数据封装_字节集(类) 在之前重写时遗留的BUG导致与Curl功能配合使用发生异常的问题
-
修复:L_哈希表(类) 在多线程环境下不稳定的问题,原作者说哈希表自带的内存池一直有BUG,不推荐使用,所以现在禁用了哈希表的内存池选项
-
修复:L_超时等待(类) >>> 是否超时() 只会生效一次的BUG,正常应该是超时后不管执行多少次 是否超时() 都要返回[真]。
-
修复:L_文件_取文件名() 中 「是否带后缀」 这个参数的设置不符合预期的问题(写着默认是真,实际默认是假)
-
修复:L_Curl_http2winhttp(类) 中自动HTTP重定向的一处不常见错误;L_winhttp(类)也有这样的问题,但暂时不处理
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.83.1版本
-
zyjson:
更新至3.2.6版本,修复多线程中崩溃的问题
v3.2.8.20220215
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_模块_退出() 该功能适用于编写DLL时正确释放模块内部一些全局变量,避免异常崩溃(编译成exe也可以在结束之前调用)
-
新增:L_DLL_远程线程注入()、L_DLL_远程线程卸载() 我这个是目前来说最正确的远程线程注入写法,除权限不足外不可能注入失败
-
新增:L_运算_坐标是否在多边形内()
-
新增:L_指针_递增()、L_指针_递减() 将指定内存地址指向的值(+ -)1,返回递(增减)结果
-
新增:L_线程池(类) >>> 创建() 里面增加了两个参数:线程创建事件回调、线程销毁事件回调
-
优化:L_CPU_取占用率_* 提升了内部线程等待精度
-
优化:L_读写锁(类)、L_线程许可区(类) 中的自动初始化逻辑,经过测试之前代码写在 _初始化 这个方法中编译为DLL时会导致一些莫名的崩溃问题
并且顺便检查了整个模块的所有类初始化代码,目前已确定100%安全
-
优化:已修正 DLL命令定义表 中部分函数调用未按照黑月高性能规范编写的遗漏
-
优化:补充/修复部分函数的注释
-
修复:L_全局_内存池(类) 中的一处严重BUG,该BUG会导致软件性能大幅度下降的同时,还有几率崩溃
-
修复:L_窗口_寻找() 中逻辑错误导致返回结果不符合预期的问题
-
修复:L_线程_创建事件_挂接() L_线程_创建事件_删除() L_线程_销毁事件_挂接() L_线程_销毁事件_删除()
在编译成DLL,DLL释放时导致软件异常崩溃的问题(已重写该功能)
-
修复:L_Winhttp(类)、L_Curl_http2winhttp(类) 自动跟踪HTTP重定向跳转结果不符合预期的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl:
DLL升级至7.81.0版本
-
hpsocket:
DLL升级至5.8.6版本
-
多线程安全调用窗口组件(独立模块):
新增:选择框_取标题() 选择框_置标题()
v3.2.7.20211225
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_异常捕获(类) >>> 停止异常捕获() 临时暂停当前线程上的异常捕获处理,异常捕获的所有功能全部不执行,此时就像完全没使用异常捕获一样,该功能优先级最高(用于兼容一些第三方库需要利用异常崩溃的代码)
-
新增:L_异常捕获(类) >>> 启动异常捕获() 恢复当前线程上的异常捕获处理,所有功能将正常运行
-
新增:L_异常捕获(类) >>> 进入安全执行段() 设置当前线程标记为安全执行,这时执行的任何代码在崩溃时都会自动跳过异常点并继续往下执行,此时不处理异常数据
-
新增:L_异常捕获(类) >>> 退出安全执行段() 如果在安全执行段中触发过异常则返回真;取消当前线程的安全执行标记;异常捕获将正常执行代码并处理异常数据
-
新增:L_异常捕获(类) >>> 是否异常() 获取当前线程是否触发过异常捕获处理(进入安全执行段的异常不会记录)
-
新增:L_文本_比较相似度() 多维空间向量方法计算文本相似度
-
新增:L_Curl_http2winhttp(类) >>> SendEx() 功能全面的数据提交方案,支持长度超过4G的文件数据,可随意拼接
-
新增:L_POST数据封装_字节集(类) >>> 取数据到Curl_POST结构() 用于 L_curl_http2winhttp(类)>>>SendEx()
-
优化:L_异常捕获(类) 现在允许异常后继续往下执行代码了
-
优化:L_异常捕获(类) 中异常数据文本保存方式
-
优化:L_异常捕获(类) 栈回逆解析方式提高了性能
-
优化:L_POST数据封装_字节集(类) >>> 写(, , , value) 参数注释添加内容:
当前参数仅支持文本型与字节集两个类型,如果传入字节集则不自动转码,传入文本型会按 L_POST数据封装_字节集.置UTF8编码()的设置处理
在L_curl_http2winhttp(类)>>>SendEx()中使用的话支持设置为文件路径,文本格式是:"<file=路径>" 开头的<file=是区分大小写的
-
优化:L_POST数据封装_字节集(类) 现在输出的键值顺序会固定按照执行 写() 的顺序导出
-
优化:L_Curl_http2winhttp(类) 现在执行 创建() 时会自动初始化Curl了,多线程性能不受影响以及线程安全
-
优化:现在未使用协程时将不会自动加载协程库了(减小体积占用)
-
修复:L_Curl_http2winhttp(类)、L_winhttp(类) 中自动跟踪http返回头跳转结果不符合预期的问题
-
修复:模块内部分协程化代码逻辑值写反导致执行结果异常的情况
-
修复:hpsocket中封装的同步消息功能异常的问题
第三方库 或 模块附带功能/软件的更新:
-
Curl库封装重构:
修复:原先代码中的一处严重错误(小量请求根本测不出来,好坑...)
上面这个经过后来的测试发现不是zycurl代码的问题,是Curl共享组件自身有BUG导致的崩溃
所有Curl命令重写了,以后不再依赖于zycurl的更新,所有内容由我自己100%控制
封装增加了Curl的一些新特性,增加了功能
DLL升级至7.80.0版本,在这之后的Curl将会默认自动解压br,gzip,deflate(需要更新Ling.dll)
-
多线程安全调用窗口组件(独立模块)更新:
1.优化内部代码结构,方便以后增加功能
2.新增 编辑框_加入文本()
3.兼容异常捕获相关设置
-
co协程库更新至v2.0.3版本:
添加co::maybe
添加os::system()
修复co::Event析构函数中的错误
修复windows上的内存泄漏
内存方面优化
改善operator、fastream、fastring
v3.2.6.20211102
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_运算_取随机数() >>> 快速模式(如果为真,则强制不使用RdRand指令)
-
新增:L_全局_异常捕获(类) >>> 初始化() >>> 内存堆异常检测参数 - 默认为假;开启本功能可检测内存堆损坏的情况(会损失部分性能)
-
新增:L_整数型数组_创建() >>> 使用内存池 - 指定内部是否使用内存池进行内存分配,默认为真
-
新增:L_字节集类型_*()丶L_字节集数组_*()丶L_字节集_分割从数据指针()丶L_字节集_分割从字节集()丶L_定长数组_*()
-
新增:L_保护_检测虚拟机() 检测软件是否运行在虚拟化平台上 原作者帖子
-
优化:L_全局_内存池(类) 内存块存储方式调整为 L_整数型数组_*() 性能提升
-
优化:L_全局_内存池(类) 内存分配数量阈值调优,性能更高了(小内存块的预分配数量为32-64KB)
-
优化:L_文本类型_*() 部分命令优化,避免写又臭又长的子程序名称,功能不变
-
优化:删除了 文本类型、字节集类型丶文本型数组丶字节集数组丶整数型数组 中的 减少引用计次(),统一使用 销毁() 来管理
-
优化:L_文本_取随机字符()、L_文本_取随机数字() 性能提升
-
优化:调整部分窗口句柄、进程操作
-
修复:L_文本类型_插入数据* 中计算插入位置的BUG
-
修复:L_整数型数组_删除成员() 在成员数为1的时候并不会删除成员的逻辑BUG
-
修复:L_全局_内存池(类) 内部控制线程在归还内存给操作系统时数组越界的BUG
-
修复:L_winhttp(类) 在协程中运行会导致返回数据全空的问题(代码写错了)
-
异常捕获配套工具更新:
1.适配模块增加的新参数:内存堆异常检测
2.在解析代码的地方提前检测子程序是否有批量注释
3.填写IP的地方增加了个快捷键:鼠标右键快速输入 127.0.0.1 方便调试使用
v3.2.5.20211010
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_协程(类) 封装自co协程库,感谢 醉酒成梦° 提供的帮助。查看详细介绍
-
新增:L_全局_内存池(类) 内部重新封装mimalloc内存池(在非XP系统下启用)
-
新增:L_全局_异常捕获(类) 将以前的栈回逆功能添加进去了
-
优化:L_全局_内存池(类) 解决了使用mimalloc内存池时线程数量过多导致内存占用非常大的问题
-
优化:L_线程许可区(类) L_超时等待(类) L_读写锁(类) L_winhttp(类) 进行了协程化处理
-
优化:异常捕获在使用远程服务器接收信息时,如果TCP连接断开了,将会尝试重新连接
-
优化:如果异常捕获向远程服务器发送异常数据失败,将正常弹出错误提示
-
修复:L_原子锁_* 返回值与预期不同的问题导致连带着其他功能出现小问题
-
修复:L_线程池(类) 在还有队列时执行 线程池.销毁() 或 线程池.停止并清除所有任务() 会崩溃的问题
-
修复:L_全局_异常捕获(类) "欲操作的内存地址" 这个值一直是0的BUG
-
修复:L_按键连发(类) 的一处逻辑BUG
-
修复:模块内编码转换功能的一处可能导致异常的隐患
-
Curl库升级至7.79.0版本,重新下载Ling.dll替换即可生效(记得先关闭易语言进程)
v3.2.4.20210909
更新内容 - 红色字段代表比较重要的更新或提示
-
内存池:模块内部的全局内存池(L_内存池) 新增内存归还到系统的功能,并且提升了大量线程并发申请/释放内存的性能;
删除了之前额外封装的mimalloc内存池库,经过测试发现这个库有小问题
-
新增:模块内部的资源文件(大漠插件等)会在每次编译时自动加密(每次生成的加密内容都不同) 避免被第三方恶意检测
-
新增:L_线程许可区(类) >>> 置简易模式() 该功能允许在同一条线程内进入无数次,在需要退出的地方仅需退出一次即可(默认开启)
-
新增:L_文本_匹配通配符A()、L_文本_匹配通配符W()、L_文本_匹配通配符W2() 高性能的通配符匹配,支持多组数据。原作者:醉酒成梦°
-
新增:L_文本_分割文本从文本型()、L_文本_分割文本从数据指针() 超高性能的文本分割功能
后期将会把 L_快速文本(类) L_快速字节集(类) 全部改写成 L_文本类型_* L_字节集类型_*
-
新增:大量的数组操作功能(寻找、取值、排序等),支持自定义数据类型(快速排序法),相关例子在群文件,原作者:落
-
新增:L_文本类型_取中间到文本型()、L_文本类型_取中间到文本类型()、L_文本类型_取左边到文本型()、L_文本类型_取左边到文本类型()
L_文本类型_取右边到文本型()、L_文本类型_取右边到文本类型()
-
优化:L_Curl_http2winhttp(类) >>> send() POST提交文本型数据的时候内部会默认处理一下UTF8编码,避免出现兼容性问题
-
优化:模块宏插件现在会缓存内部编译的数据,在易语言不关闭的状态下,重复调试/编译软件时能提升编译速度,避免重复加载
-
优化:修正模块内所有关于 "线程初始栈" 的备注文本与行为控制
-
修复:HPSocket类 重复销毁时会导致软件崩溃的问题
-
Curl库升级至7.78.0版本,重新下载Ling.dll替换即可生效(记得先关闭易语言进程)
v3.2.3.20210805
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_异常捕获(类) >>> 初始化() 增加了三个参数:自定义上报异常信息服务器IP、服务器端口、自定义上报软件名称
以后就可以使用异常捕获工具直接远程接收到详细的异常信息了,不再需要让软件用户主动打包数据给我们
异常捕获工具更新至4.0版本,具体使用方法等我录制教程(不难,就点点鼠标的事情)
-
新增:L_字节集_倒找字节集()、L_字节集_倒找字节集2() 自动选择SSE2、AVX2版本,作者:落
-
新增:L_队列(类) >>> 置快速响应阈值() 当队列数小于或等于阈值时,牺牲大量压入时的性能让多线程压入后弹出的响应速度得到提升
-
新增:L_键盘_置禁止重复击键()、L_键盘_置允许重复击键() 设置系统禁止/允许在按住键盘某个键时的自动连击功能
-
新增:L_全局_是否64位系统(全局变量) 64位=真.32位=假;软件可以通过判断本变量确定是否运行在64位系统中
-
新增:L_进程_取内存占用信息(进程ID)、L_系统_取内存状态() 用于实时获取当前系统内存占用状态
-
优化:L_线程池(类) 联动 L_队列(类) 新增的 自定义快速响应阈值,将其与 最大线程数 绑定(旧版本阈值是默认锁定1000)
达到的效果是:当线程池内部有空闲线程的时候,自动注重响应速度(在执行 加入队列() 的瞬间就会被执行)
当线程池满载运行的时候,自动停止内部使用 事件 的功能,提升了大批量 加入队列() 时的性能(在我的硬件上大约提升7倍)
-
优化:L_全局_内存池(类) 引入了微软的mimalloc内存池库(在非XP系统时自动切换使用)
-
优化:L_字节集_寻找字节集()、L_字节集_寻找字节集2() 提升小部分性能
-
优化:L_系统_取启动时间() 速度提升了一倍
-
优化:模块内大量寻找文本的代码替换成了 L_文本_寻找文本();性能提升很多
-
优化:L_按键连发(类) 的内部控制逻辑,避免潜在bug;L_鼠标连发(类) 的控制逻辑同步修改
-
修复:L_异常捕获(类) 部分异常信息无法正确触发响应的问题
-
修复:L_按键连发(类) L_鼠标连发(类) 句柄泄漏的情况
-
修复:L_进程_取命令行() 句柄泄漏的情况,并且现在同时支持32*64位系统了
-
修复:L_字节集_到文本格式() 在传入空字节集的时候只返回 "}" 的问题
v3.2.2.20210719
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_整数型数组_*()、L_文本型数组_*()、L_文本类型_*() 高性能实现,更多相关功能正在补充
-
新增:L_网页_解析url_高性能()、L_网页_解析url_读结构数据() 抠自谷歌浏览器的url解析,感谢 醉酒成梦° 提供的方案
-
新增:L_易键鼠(类) 封装适配幽灵键鼠的功能,注释齐全
-
优化:将模块的全局内存池挂接到了Curl内部的内存分配函数中,进一步拉高了使用Curl相关功能时的性能上限
-
优化:L_网页_访问() 新增参数:是否自动补充常用协议头
-
优化:L_异常捕获(类)、L_内存池(类)、L_内存堆(类) 初始化后将会启用系统的堆损坏检测功能
-
优化:模块初始化后将会启用系统的堆损坏检测功能
-
优化:L_按键连发(类) 重写了一遍,之前的方案有概率会导致连发停不住,现在完美了
-
修复:L_异常捕获(类) 触发异常后无法自动弹出详细数据的问题(原因是之前信息框改了一下实现方式导致逻辑判断不生效)
-
修复:L_异常捕获(类) 内部异常回调可能会导致软件出现二次异常崩溃、异常信息无法存储的隐患
-
修复:L_字节集_文本格式还原() 会导致内存堆损坏的问题
-
修复:L_字节集_文本格式还原() 丢失第一个字节数据的问题
-
修复:L_字节集_寻找字节集() 崩溃的问题,替换成了"落"提供的字节集搜寻方案,性能极高
-
修复:L_网页_访问() 中禁止重定向失效的问题(逻辑值写反了)
-
宏插件内封装的HPSocket精简版DLL更新至5.8.3版本
v3.2.1.20210606
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_配置文件读写(类) >>> 写配置项目()、读配置项目() 与易语言支持库的用法一样
-
优化:L_队列(类) 当内部队列数量<1000时,会使用事件同步对象来快速触发队列响应;队列数量>1000时,会丢弃所有事件。避免了大量投递队列时出现性能瓶颈的同时,兼顾了响应速度 - L_线程池(类)受益
-
优化:L_线程池(类) 内部队列ID将不再使用数字递增的方式存储,改为了直接调用全局内存池,性能拉高了不少
-
优化:L_内存文件映射_* 子程序的命名,更加容易理解了
-
优化:L_文件读写_打开文件() 内部常量,现在「共享方式」可以与外部程序进行正常交互了,比如读写文件时允许记事本访问
-
优化:L_线程池(类)>>>创建()、销毁()写了二次判断,现在可以安全地并发调用这两个方法了
-
修复:L_线程池(类) 内存泄漏 会导致所有加入的队列参数一直在占用内存池
-
修复:L_程序_禁止重复运行() 中创建全局命名对象失败的问题
v3.1.4.20210514
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_协程(类) 在多任务处理时会有优异的性能表现,使用方法见群文件的例子;不懂的话老老实实用线程池,别用这个
-
新增:L_程序_Call() 速度比 L_程序_调用子程序() 快1倍左右,为之后的 L_协程(类) 做准备
-
新增:L_链表(类) 基于 L_内存池(类) 实现的一个超高性能的链表结构
-
优化:L_队列(类) 内部队列由调用完成端口API升级为 L_链表结构(类) 性能提升30倍以上
-
优化:L_内存池(类)>>>重新分配() 的内部逻辑,条件允许时会将之前超出[最大分配内存]的地址重新转入内存池中
-
优化:L_线程池(类) 内部队列由调用完成端口API升级为新的 L_队列(类)
-
优化:L_文本_删首尾指定文本() 新增了一个参数:循环删除; 指定是否一直删除直到条件不匹配为止
-
优化:L_网页_解析url()、L_网页_解析请求参数() 直接使用正则表达式,现在对异常url信息的解析鲁棒性更高了
-
优化:L_线程池(类) 内部投递队列以及线程管理方案进行了修改,改善了应对大量队列投递时的性能表现
-
优化:L_线程池(类)>>>暂停所有任务()、恢复所有任务() 的逻辑
-
优化:L_链表(类) 调整了一下代码执行逻辑
-
优化:重写了所有 L_编码_*() 相关的子程序,取其精华去其糟粕;之前的改动无法通过多线程暴力测试...
-
修复:L_winhttp>>>Open() 中自动清空Cookie与请求头功能默认行为不符合预期的问题
-
修复:L_队列(类) 升级后 弹出() 方法删除了一个无用参数导致模块内其他代码编译不通过的问题
-
修复:L_内存池(类)>>>重新分配() 在内部使用内存堆分配大数据时导致崩溃的问题
-
修复:L_队列(类) 内存访问越界导致模块全局内存池数据异常的问题
-
修复:L_链表(类) 由内存池分配的内存数据未清零导致的内存泄漏与死循环的问题
-
修复:L_快速字节集(类)>>>分割字节集() 忘记计算分隔符长度导致分割结果不符合预期的问题
-
修复:L_Gzip(类) 解压一些异常数据可能会导致代码死循环的问题
-
修复:L_时钟(类) 销毁时可能会导致死锁的问题
v3.1.3.20210415
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_日志_多文件(全局变量类) 通用的无锁多文件形式保存的日志系统(初始化一个目录就可以无脑多线程写入)
-
新增:L_文件_延迟删除s(文件名数组, 时间) 支持删除多个文件
-
新增:L_线程_创建事件_挂接() L_线程_创建事件_删除() L_线程_销毁事件_挂接() L_线程_销毁事件_删除() 感谢 醉酒成梦°提供的方案
-
新增:L_全局_压缩算法_Lz4(类) 用法:L_lz4.初始化() L_lz4.压缩() L_lz4.解压()
该算法注重的是解压缩性能,并且压缩率不错。适用于对解压缩性能需求较高的场景,比如 远程屏幕 等
-
新增:L_链表结构(类) 基于 L_内存池(类) 实现的超高性能链表结构,目前仅完成了部分功能
-
优化:完善了 L_热键_注册() L_热键_注册鼠标事件() 的注释
-
优化:完善了 L_帮助_*() 这些子程序的数据
-
优化:重写了 L_队列(类) 实测性能提升了30倍以上
-
优化:L_线程池(类) 中使用的队列方案从完成端口替换为 L_队列(类)
-
优化:删除了L_Hook键鼠>>>安装键盘钩子2()、安装鼠标钩子2();并且 安装键盘钩子() 与 安装鼠标钩子() 的第一个参数改为了通用型
-
优化:L_异常捕获(类) 释放线程资源的触发回调由ApiHook转为L_线程_销毁事件_挂接()
-
优化:L_内存池(类) 将默认分配的内存数量与长度设置得更加激进,效率提升
-
优化:根据用户需求对L_winhttp(类) L_Curl_http2winhttp(类) 中的Cookie与请求头管理方式进行了改动,原先的方案有一些瑕疵
现在可以在任意位置进行增删改查了,并且可以在 Open() 这个方法内设置是否清空数据
不清空的话下次访问会带上之前的请求头以及缓存的Cookie,顺便同步了一下两个类的一些方法与注释
-
优化:模块内部所有主动内存分配的方式全部改为调用 L_内存池(类)
-
修复:L_热键_注册() 与 L_Hook键鼠.安装原始输入监听() 在某些窗口下热键失效的情况(旧版本遗留问题忘记搞了)
-
修复:L_Hook键鼠>>>安装原始输入监听() 中的鼠标事件回调逻辑异常以及键盘回调参数数量不正确的问题(升级迭代疏忽导致)
-
修复:L_窗口_枚举窗口句柄() 取到的部分窗口句柄会丢失的问题,windows api的锅,不是模块的BUG
-
修复:L_winhttp(类) L_Curl_http2winhttp(类) 无法自动跟踪301/302跳转的BUG,原因是逻辑写错了...
-
修复:L_文件_强制删除() 部分情况下删除失败的问题,以及更换了临时文件目录删除的方案,避免删除目录失败
-
模块内封装的Curl版本更新至7.75.0完全版,支持所有功能(http2等)
v3.1.2.20210316
更新内容 - 红色字段代表比较重要的更新或提示
-
删除:L_程序_处理事件() 该命令对易语言来说没有任何意义,并且会与易语言自带的窗口消息循环产生冲突
有需求的话建议直接使用支持库的 处理事件()
-
删除:L_窗口_取句柄_模糊() 这个功能太拉胯了,我自己重写了个全新的窗口句柄搜寻功能
-
新增:L_窗口_寻找(窗口标题,窗口类名,使用正则表达式,父窗口句柄,搜寻所有子窗口,仅包含指定进程ID,仅包含指定进程名,返回_窗口句柄)
一直以来我自己在写代码的时候,偶尔碰见需要取窗口句柄的功能,然后发现有些束手束脚,主要原因是大部分模块提供的取句柄功能都不咋样,如「窗口_取句柄_模糊」,或者就是使用的时候代码量变多了,不够优雅;现在我按照自己的想法封装了个~功能十分强大,具体可以自己感受一下10
-
新增:L_窗口_枚举窗口句柄(返回_窗口句柄数组, 父窗口句柄)
-
新增:L_hosts配置(类) 用于读写系统hosts文件配置信息,鲁棒性(应对异常信息的能力)较高
-
新增:L_文本_格式化() 纯易语言算法实现,用于更方便地拼接字符串,并且性能要比传统的 文本 = "1"+变量+"2" 写法高很多
-
新增:L_内存文件映射_创建自内存()、L_内存文件映射_创建自文件() 可用于快速读写超大文件的数据与进程间共享数据
-
新增:L_内存文件映射_刷新() 通知操作系统强制将内存文件映射中已经修改的部分或所有数据立刻写入硬盘中
-
新增:L_配置文件读写(类) 功能强大的配置文件读写功能,支持随意读写插入相同名称的节点/项目
-
新增:L_内存池(类) >>> 重新分配() 用于调整已分配的内存指针
-
新增:L_快速字节集数组(类)
-
新增:L_CPU_取占用率_初始化()、L_CPU_取占用率_读取(总占用率, 内核状态比例, 用户状态比例, 闲置率)、L_CPU_取占用率_停止()
-
新增:L_互斥锁_*() 子程序,用法和 线程许可区 一样,只不过它是能跨进程的,性能会比线程许可区 低一些
-
优化:重写了所有 L_编码_*() 相关的子程序,为了能有更好的稳定性
-
优化:L_快速字节集(类) 在使用内存缓冲写法的同时引入了 L_内存池 申请释放内存的速度更快了
L_快速文本(类) 也一样
-
优化:L_文件读写_打开文件() 参数4:[缓存优化] 改成了传递常量的方式 #L_文件访问缓存_* 兼容旧版写法
-
优化:L_窗口_激活() 逻辑改动
-
优化:L_窗口_枚举所有窗口句柄() 现在直接可以枚举出窗口控件了
-
优化:L_窗口_枚举所有窗口信息() 改名为 L_窗口_枚举顶层窗口信息() 并修改了实现方式
-
修复:L_程序_禁止重复运行() 中的逻辑错误
-
修复:L_HPSocket_TcpPackServer(类)>>>发送_同步消息() 报数组访问越界错误的BUG,原因是我之前随手改了一下代码忘记初始化数组了
-
修复:zyjson >> L_JsonValue(类) 中的内存泄漏BUG 已更新至3.2.1版本
v3.1.1.20210128
更新内容 - 红色字段代表比较重要的更新或提示
-
新增:L_异常捕获(类) >>> 初始化() 增加了 [注册顶级SEH] [VEH插入首部] 两个参数;用于兼容某些需要主动触发异常实现一些功能的库
-
新增:L_异常捕获(类) >>> 初始化() 增加了一个自定义异常信息回调子程序参数,子程序接收两个文本型参数(错误信息, 代码流程)
以后大家可以自己挂接异常信息回调然后将信息直接post到服务器存储,免得还要和以前一样让用户手动发送错误信息过来
我接下来应该会写一个配套的http服务端用来接收异常数据,应该会开源
-
新增:异常捕获代码生成工具现在支持直接拖放.e文件进行解析生成代码了,使用更加方便 (保留了以前的复制粘贴生成方式)
-
新增:异常捕获代码生成工具现在使用了RSA加密代码的方式,记录代码流程的功能可以完全放心地使用在发布版的软件中
-
新增:L_PE操作(类) 作者:z博士 来源:https://bbs.125.la/thread-14541536-1-1.html
-
新增:L_线程许可区_* L_内存堆_* L_内存文件映射_* 以后尽量将能写成子程序直接调用的功能都弄一下
-
新增:L_DLL_名称取路径(DLL名称) 通过自身程序的某个DLL文件名获得它的路径
-
新增:L_快速文本型数组(类) L_快速整数型数组(类) 我之前开源过、适用于所有需要频繁加入成员并且无法确定最终数组成员数的情况能够极大地提升处理速度(内部也使用了 L_内存池(类))
-
新增:L_窗口_禁止截图(窗口句柄, 开关) 设置窗口防截图功能 win7及以上的系统有效
-
新增:L_文件_合并(欲合并的文件路径, 保存的文件路径, 读写缓冲区大小) 将指定的文件数组按顺序合并为一个新的大文件
-
新增:L_文件_创建(文件路径, 要创建的大小, 覆盖原文件) 瞬间创建一个指定大小的文件,大小不限
-
新增:L_文件_枚举_回调() 枚举某个目录下的指定类型文件并调用回调函数,回调函数返回1则停止枚举;行为逻辑与 L_文件_枚举() 相同
-
优化:L_进程_提升权限(权限, 开关, 仅提升当前线程) 增加了详细参数以及常量 #L_提升权限_
-
优化:L_文件_枚举() 新增参数:搜寻所有子目录 并提升了枚举速度(使用了 L_快速文本型数组(类))
-
优化:L_文件_取文件名() 代码逻辑修改,兼容性提升,并且新增了两个返回参数:返回_文件前缀名 返回_文件后缀名
-
修复:L_内存池(类) 一个逻辑值写反导致异常崩溃的BUG
-
修复:L_大漠插件破解版(类) 无法编译的问题(之前调试的时候不小心遗留了一段代码在里面忘记删除)
-
修复:L_时钟(类) 之前回档更新的时候疏忽导致无法正常销毁的问题
-
修复:L_POST数据封装(类) L_POST数据封装_字节集(类) 初始化逻辑错误导致数据无法写入的问题
-
修复:L_事件(类) 创建对象设置名称标识失效的问题
-
修复:使用Curl库的SSL功能时偶尔出现调用失败的情况
-
优化:模块初始化时会自动执行:L_进程_提升权限_常用() 用于避免日常操作时权限不足的问题
警告:备份与恢复文件这两个权限比较危险,有需要的话自己调用 L_进程_提升权限()
-
删除了部分更新过程中遗留下来的无用DLL命名定义表、常量、自定义数据类型
-
封装的HPSocket更新为5.7.3版本
-
封装的zyCurl更新为7.70.0版本
-
封装的zyjson更新为3.2版本
v3.1.0.20201217 回档更新
更新内容 - 红色字段代表比较重要的更新或提示
-
升级:L_异常捕获(类) 内存释放机制优化,现在改成了Hook ExitThread(线程结束之前系统会自动调用它, 刚好契合我的异常捕获结构)
更改后的好处:代码中不再需要 L_异常捕获.进入异常处理块 ()、L_异常捕获.退出异常处理块 () 这里两个命令了
同时减少了不必要的判断;优化了内存处理方案,现在直接利用编译器的特性来存储数据
经过测试一千万次循环耗时由742毫秒减小至100毫秒,性能提升87%;记录代码流程运行耗时:500毫秒 相比之前性能提升了80%
现在支持记录代码执行流程了,在多线程中也能够清晰地了解程序代码执行过程,方便分析异常原因 [点击查看效果图]
-
新增:L_Hook(类) 原名改成 L_Hook键鼠(类) 、 可以轻松Hook函数地址/API,稳定高效~
-
新增:L_全局_内存池(类) 原生线程安全,已声明为全局变量"L_内存池" 我自己撸的纯易语言代码实现低碎片化高性能内存池
-
新增:L_单向链表(类)、L_单元内存池(类) → 替换了原先的单元内存池, 性能有所提升
-
新增:L_文本_到大小写()、L_文本_寻找文本()、L_文本_到双精度()、L_文本_到长整数()、L_文本_到整数()
性能较高,并且替换了模块内所有与之相关的代码
-
新增:SE保护壳常量:#L_保护_SE_默认保护 #L_保护_SE_乱序变形 #L_保护_SE_虚拟 #L_保护_SE_虚拟_乱序变形 #L_保护_SE_结束
TMD壳的函数:L_保护_TMD_是否在虚拟机运行() L_保护_TMD_代码是否被打补丁() L_保护_TMD_是否受到破解程序攻击()
TMD壳的常量:#L_保护_TMD_代码混淆加密 #L_保护_TMD_字符串A保护 #L_保护_TMD_代码虚拟化_*_开始
-
新增:L_硬盘_读硬盘扇区() L_硬盘_取硬盘机器码_md5() 不可伪造的机器码,重装系统机器码会变
-
新增:L_易语言文本代码解析(类) 用于解析/生成易语言文本格式的代码
-
新增:L_内存堆(类) >>> 分配内存_对齐()、释放内存_对齐()
-
新增:L_字节集_到文本格式() L_字节集_文本格式还原() L_文本_删首尾指定文本()
-
新增:L_计算数组排列组合(类) 用于取出指定数组的所有排列组合 并且可以随时保存恢复进度
-
新增:L_易键鼠(类) >>> 鼠标_左键按下()、鼠标_左键放开()、鼠标_左键单击()
-
优化:L_线程池(类) 调整内部线程控制方案,加强了突发情况下的大量队列进入的响应速度
-
优化:L_线程池(类) 线程池现在可以主动 创建() 销毁() 了
-
优化:L_线程池(类) 现在内部的[队列ID]将会在大于2147483640时初始化为1,避免溢出
-
优化:L_读写锁(类) 现在可以在同一个线程下随意进入锁多次 只要退出一次即可,已增加对XP系统的支持
-
优化:L_热键_注册() 现在回调子程序允许在代码中执行一些稍微"耗时"的操作了,比如延时个几秒那种
但还是禁止在回调事件里面执行死循环,因为会导致当前的热键事件被挂起
-
优化:L_线程本地存储(类) L_线程许可区(类) 初始化顺序调整,以免出现一些奇怪的问题
-
优化:L_函数_构造类方法地址() L_函数_构造cdecl地址() 现在直接使用内存堆而不是虚拟内存,以免申请太多数据导致失败
-
优化:L_运行计时(类) 增加了精确度
-
优化:L_快速文本(类) L_快速字节集(类) >>> 写到文件() 性能提升
-
优化:调整内部的全局内存DLL维护顺序
-
优化:删除了 L_延时2() 并且在 L_延时() 子程序中增加第三个参数:是否UI线程
[参数说明] 默认自动判断;如果为真则使用 L_程序_处理事件() 做消息处理,避免卡窗口;如果为假则直接使用 Sleep()
-
修复:L_键盘_等待() 行为不符合预期的情况
-
修复:L_文件读写_读入一行() 结果不符合预期的问题,现在可以精准判断换行符格式了
-
修复:L_队列(类) 可能会引发异常的一个隐患,已重写代码
v3.0.0.20190702 已回档更新 这是最后一个免费版本
更新内容 - 红色字段代表比较重要的更新或提示
-
3.0版本数据存放方式改为易语言宏命令(体积更小) 删除了子模块的方案,恢复成以前的一体式
使用3.0版本必须将 "Ling.dll" 文件放到易语言根目录下的 "plugins" 文件夹中,否则会报错~
之前的子模块方案有一点小瑕疵,这次基本完美了,不仅体积小,而且更方便维护模块
编译后的软件不依赖 "Ling.dll" 请放心
-
新增:L_内存堆(类) 更完善的堆内存操作,有清晰的注释
-
新增:L_动态内存池(类) L_单元内存池(类) 以后模块的一些内存操作会尽量使用这两个类,提升性能
-
新增:L_时钟队列(类) 由一个线程维护所有时钟事件(一条线程可以开几万个时钟)封装的是TimerQueueTimer定时器
-
新增:L_线程本地存储(类) 这个你们懂得用就好,不懂就算了
-
新增:访问控制机制相关子程序:L_令牌访问_* | L_用户和组_* | L_访问权限_* | L_本地策略操作(类)
-
新增:L_校验_取crc32() L_校验_取crc32_整数() L_校验_取crc32_大文件() L_校验_Crc32_取码表指针() L_校验_Crc32_ASM()
-
新增:L_系统_通信测试() 功能的几个参数(发送数据长度、回复字节数、回复TTL、Ping状态等)
-
新增:L_系统_域名DNS解析() 可以自己指定使用任意DNS地址去解析一个域名的CNAME解析或A解析
-
修复:L_Curl_http2winhttp(类) 中设置超时时间不符合预期结果的问题(忘记做超时时间记录了...)
-
修复 V8引擎 多线程情况下容易崩溃的问题,现在将最大并发数限制在了一个稳定的范围
-
修复:L_线程池(类) 一处逻辑错误
-
修复:L_时间_取北京时间戳() 获取异常的问题,现在改成了读取百度的时间
-
修复:L_快速字节集(类) L_快速文本(类) >>> 从文件读() 读取的数据丢失了一段的问题(逻辑错误产生的)
-
修复:大漠插件类 在win10 1903中无法创建对象的问题
-
修改:L_热键_注册() 接受易友建议,现在热键回调子程序需要接收一个整数型变量:热键ID,方便你们同时监视多个热键判断
-
修改:L_哈希表(类) 使用了全汇编的版本,效率提升并且支持自定义数据类型;
保留了 创建自字节集() 与 保存到字节集()
-
修改:L_系统_通信测试() 的代码,按照msdn文档规范来执行:如果Iphlpapi.dll中没有函数再调用Icmp.dll的
-
优化:L_异常捕获(类) 修复各种BUG,爆炸性能!因为是无锁的结构所以多线程效率不受影响(使用了线程本地存储技术)
-
优化:L_Curl_http2winhttp(类) 与 L_Winhttp(类) 的Cookie管理结构,内存占用降低
-
优化:L_文本_取文本长度()、L_编码_base64编码()、L_编码_base64解码() 使用AVX2、SSE2、80386指令性能显著提升 作者: 落
-
优化 模块内所有的取随机数相关功能,现在会自动选择使用RdRand、RdSeed 指令(如果CPU支持的话) 作者: abc2330292
-
优化:模块内部分功能性能有所提升
-
优化子程序命名:L_系统_取CPU名称 >>> L_CPU_取名称 | L_系统_取CPU型号 >>> L_CPU_取型号
L_系统_取CPU序列号 >>> L_CPU_取序列号 | L_系统_取CPU数量 >>> L_CPU_取线程数
原有命令为了向下兼容将保留
v2.0.1.20190504
更新内容 - 红色字段代表比较重要的更新或提示
-
修改:L_Curl_http2winhttp(类)[子模块_Curl] 重构了大量代码,现在与我封装的winhttp特性完美兼容了!
如果 L_winhttp(类) 满足不了你的需求,请试试 L_Curl_http2winhttp(类),这个也是我自己必须使用的,稳定可靠
-
升级 子模块_Curl 封装的Curl库为最新版:7.64.1
-
升级 主模块 内封装的hp-socket库文件版本为:5.4.4.1
-
修复:所有子模块调用中 可能出现的一些安全隐患(虽然暂未出现这种问题)
-
修复:L_时钟(类) 中的一些BUG,并且提升了性能
-
修复:L_线程安全变量_*(类) 中读写数据不符合预期结果的问题,原因是逻辑写反了...
-
修复:url编码解码异常的问题,请使用 L_编码_url编码()、L_编码_url解码()
-
修复:L_网页_解析url 中 url的域名后面没有/ 会导致解析出现异常的问题,原因是我逻辑写反了一个,嘿嘿...
-
修复:L_winhttp(类) 中HTTP请求头与Cookie的大小写处理不规范的问题,现在按照标准规则处理:
HTTP请求头不区分大小写,Cookie区分大小写,并且针对一些细节做了性能优化
-
修复:子模块_Curl 中的 L_Curl_http2winhttp(类) >>> SetAcceptLanguage()设置失败的问题
以及修复了进行一次POST请求后,之后的任何GET请求都变成POST的BUG(内部一个变量未重置导致的)
-
修复:L_键盘_等待() 中的逻辑错误
-
新增:L_Cookie解析(全局类) 模块所有Cookie解析的操作均由本类完成,方便更新以及维护(包括Curl)
-
新增:L_易键鼠(类) 封装了易键鼠USB硬件的操控方法,编写DNF脚本的用户似乎用的也是这个设备吧(更多功能看心情封装)
-
新增:L_文件读写_* 封装了一些文件读写操作的方法,支持大文件
-
恢复 L_JScript_Mujs(类) 子模块 封装了mujs引擎,虽然该引擎对某些js语法不太兼容,但可以用来解析jother编码(直接eval即可)
-
优化:模块内所有调用 GetSystemInfo 函数的速度,现在全局仅初始化一次
-
修改:L_异常捕获(类) 增加了一些功能 推荐与 《凌哥_易语言异常捕捉》这个工具配套使用
-
删除:L_编码_url编码_utf8 、L_编码_url编码_gbk 由统一的 L_编码_url编码()、L_编码_url解码() 实现
-
删除:L_线程_启动3、L_线程_启动4;线程启动的命令优化了一下,现在只有 L_线程_启动 与 L_线程_启动2,第一个参数改为了通用型
-
删除:L_线程池(类) >>> 加入队列2() 请直接替换成 加入队列(),参数1: 子程序地址 修改成了通用型
v2.0.0.20190212
更新内容 - 红色字段代表比较重要的更新或提示
-
2.0版本全新升级 模块将一些占用体积较大的库给分离了出来,好处是:
主模块体积超小,需要什么库就引用什么模块,同时加快了编译/调试的速度,也方便你们反编译查看~
注意:子模块的功能需要依靠主模块才可以使用,具体的请看例子。
-
修改:L_字节集数组_保存() L_字节集数组_保存2() L_字节集数组_读取() L_字节集数组_读取2() 性能提升,使用crc32做校验
-
修改:L_内存加载DLL(类) 内部现在会维护全局的DLL句柄,在程序关闭后,没有释放的句柄会随之释放掉
-
修改:子模块_Curl 中的所有Curl函数操作判断,避免了程序关闭之前没有调用 L_Curl_卸载() / 代码操作不当导致的程序崩溃问题
-
修改:L_进程_ID是否存在() 详细查询了msdn文档,对一些细节做了处理
-
删除:L_异常保护_开始() L_异常保护_结束() 由全新的 L_异常捕捉(类) 替代
-
删除:L_压缩算法_gzip(类) >>> 初始化() 本方法已经没有意义,调用本类任意功能将自动初始化
-
删除:L_压缩算法_lzma(类) >>> 初始化() 本方法已经没有意义,调用本类任意功能将自动初始化
-
删除:L_JScript_Mujs(类) 经过多次测试,该引擎不兼容一些特殊js语法(微软的垃圾引擎都支持...)
-
新增:L_异常捕捉(类) 封装自《无名侠》的易语言结构化异常处理类(完美支持多线程运行环境)
帖子地址:https://bbs.125.la/forum.php?mod=viewthread&tid=13801143
-
新增:L_HPSocket_TcpAgent(类) 适合创建超级多的客户端连接使用(由IOCP维护所有的TCP连接)
-
新增:L_JScript_v8(类) 封装的谷歌V8引擎(这个多牛逼就不介绍了)兼容多线程调用
v1.2.0.20190116
更新内容 - 红色字段代表比较重要的更新或提示
-
修改:L_HPSocket_服务端_PACK(类) 更名为 L_HPSocket_TcpPackServer(类) 为以后的功能扩展做准备
-
修改:L_HPSocket_客户端_PACK(类) 更名为 L_HPSocket_TcpPackClient(类) 为以后的功能扩展做准备
-
删除:L_数组_打乱顺序_整数型() 由 L_数组_打乱顺序() 替代
-
删除:L_数组_打乱顺序_文本型() 由 L_数组_打乱顺序() 替代
-
删除:L_数组_打乱顺序_字节集() 由 L_数组_打乱顺序() 替代
-
新增:L_文件枚举(类) >>> 属性是否存在();方便判断文件/目录属性
-
新增:L_HPSocket_服务端_PACK(类) >>> 回应同步消息() 发送_同步消息() 向指定客户端发送同步消息,并返回客户端回应的消息内容
-
新增:L_HPSocket_客户端_PACK(类) >>> 回应同步消息() 发送_同步消息() 向服务端发送同步消息,并返回服务端回应的消息内容
-
新增:L_JScript_Mujs(类) 封装了mujs引擎,可以用来解析jother编码(直接eval即可)
-
新增:L_数组_打乱顺序(通用型数组变量, 打乱次数) 直接交换指针、高效率、支持任意数据类型!
-
新增:L_快速字节集(类) >>> 添加_从指针() 取指针() 可以直接操作内部指针
-
新增:L_字节集_寻找字节集() L_字节集_寻找字节集2() 翻译C++的BM算法 全汇编 高性能
-
新增:L_hook(类) >>> 安装原始输入监听() 卸载原始输入监听() 监视全局键盘鼠标事件,兼容虚拟机里发生的事件
-
新增:L_事件(类) 封装了常用的Event事件对象操作(HP的同步消息也有用到)
-
新增:L_哈希表(类) >>> 枚举(子程序指针, 整数型) 通过回调子程序枚举整个哈希表的键值
-
优化:降低所有与内存DLL相关的功能内存占用率以及提升了性能
-
优化:L_热键_注册() 监视方案由Hook更改为监听原始输入消息+线程消息队列实现高性能、低消耗的热键监控
-
优化:L_热键_注册() 新增参数4:防屏蔽超时 如果启用,将检测按下→弹起的时间是否大于60毫秒,小于60毫秒的事件全部丢弃
-
优化:修改HP的内存加载方案为全局加载一次,避免重复加载浪费资源
-
优化:L_快速字节集(类) >>> 置内存增量() 内存增量值改变为固定长度(与易语言的 快速字节集对象 相同)
-
优化:L_快速字节集(类) >>> 添加() 插入() 效率提升
-
优化:L_快速字节集(类) >>> 寻找字节集() 使用Boyer-Moore算法
-
优化:L_快速文本(类) >>> 某些操作增加了50%以上的效率
-
优化:L_快速文本(类) >>> 增加了一些方法,与 L_快速字节集(类) 同步
-
优化:L_文件_是否存在() L_目录_是否存在() L_目录_创建() 使用了更靠谱的方案
-
修复:L_枚举对象(类) 触发数据执行保护的BUG
-
修复:L_hook(类) 键盘hook的按键状态在按住alt键时无法捕获的问题,受影响的功能有:L_热键_*
-
修复:L_winhttp(类) 访问部分https网站失败
-
修复:L_winhttp(类) 没有重置winhttp对象导致的Cookie提交异常问题
-
修复:L_哈希表(类) >>> 保存到字节集() 创建自字节集() 可能会崩溃的BUG
-
修复:L_编码_Url解码_utf8() 解码错误的一个情况,原因是代码页搞错了
-
修复:L_文件_枚举() 不管任何情况都是枚举所有文件的问题(之前修改的时候没注意)
v1.1.9.20181010
更新内容 - 红色字段代表比较重要的更新或提示
-
模块内部部分细节代码优化了格式以及性能(忘记具体修改了哪些,就不详细列举了)
-
DD键盘鼠标驱动插件更新至85590版本(在32位系统上依旧释放并使用81010版本)作者说以后的版本不再支持32位系统了!
-
修复:L_winhttp(类) 内部自动重定向会多访问一次的问题,并且现在完全遵循POST提交时的重定向规范:
HTTP/1.1 303 See Other:对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。
HTTP/1.1 307 Temporary Redirect:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。
-
修复:L_winhttp(类) 在黑月编译下 send 一些数据时会导致程序崩溃的BUG,太坑了...
-
新增:L_winhttp(类) >>> GetTheLastAccessToUrl() 获取内部最后一次访问的url,没有发生重定向也可以取到
-
优化:L_winhttp(类) 一些细节进行了优化:修改了自动提交补全请求头信息,优化代理IP设置方案
-
新增:L_POST数据封装_字节集(类) 封装multipart/form-data编码进行POST上传文件的格式,大多数是ajax或form表单提交才用到这种
-
修复:L_指针_写字节集() 传递空字节集数据导致崩溃的问题、提升效率,并删除了 L_指针_到字节集2() 请自行改为核心库的 指针到字节集()
-
更新模块内封装的Curl为 7.60.0 版本
-
修复:L_curl_http2winhttp(类) 的BUG:调用Curl功能的方式没写对
-
修复使用Curl后软件关闭出现崩溃的情况(其实影响不大,主要是我没注意易语言程序结束后变量的释放顺序导致的)
-
更新:L_hook(类) >>> 安装键盘钩子() 新增一个参数:是否真实按键 整数型, 1=真实按键 0=模拟按键
可以避免在某些游戏或者QQ登录时,回调接收到各种奇奇怪怪的信息导致判断出错的情况(可以直接记录键盘输入的QQ密码了)
受影响的功能有:L_热键_注册() 我写无限法则压枪功能的时候发现热键异常,就想出了这个方案...
-
重写:L_内存加载DLL(类) L_内存加载DLL_E(类)
-
新增:L_内存调用支持库(类) 可以直接加载支持库到内存调用(不需要静态库)
-
优化:L_进程_取程序路径() 现在内部封装了四种方案获取路径,争取做到最大的兼容性(已测试几乎所有x86.x64程序都可以取)
-
新增:L_快速字节集(类)/L_快速文本(类) >>> 从文件读() 写到文件() 寻找字节集(自写算法)
-
优化:L_快速字节集(类) >>> 插入() 删除字节() 方法由复制内存更换为移动内存,避免操作大内存时崩溃,并且效率更高
-
新增:L_程序_结束() 快速关闭自身程序,msdn上面找到的函数
-
新增:L_线程_进入后台模式() L_线程_退出后台模式() L_线程_动态提升优先级() L_线程_设置优先级() L_线程_打开()
对于多线程http并发的程序,将http请求的线程设置进入后台模式,能够有效降低对前台程序的影响:
降低当前线程线程的资源调度优先级,以便它可以执行后台工作而不会显着影响前台中的活动
L_线程_进入后台模式() L_线程_退出后台模式() 不支持Windows Server 2003系统
-
新增:L_字节集_寻找字节() L_字节集_倒找字节() 汇编写法
-
新增:L_硬盘_取所有分区盘符() L_硬盘_取分区DOS名称()
-
更新:L_热键_注册() 现在不仅兼容易语言键代码常量,也兼容真实键代码(区分键盘左右键以及数字键盘)
并且优化了性能(改动为线程消息队列的处理方式,在键盘按键的时候给所有线程发送通知)
实现了响应时间在1ms以内的同时,对比之前的延时10毫秒循环判断,CPU资源占用更小了
-
修改:L_进程_枚举() 的返回参数,返回自定义数据类型数组:L_进程名ID信息;以前那种用两个数组分别返回进程名和进程ID的方案不好
-
删除:L_指针_交换变量指针() L_指针_交换变量数据() 合并为 L_指针_交换变量() 这是以前封装时留下的重复功能
-
新增:L_指针_是否可读() L_指针_是否可写() L_指针_写通用型() L_指针_到通用型()
-
新增:L_运算_初始化浮点数() 在非易语言中创建的线程/hook接口中可能会导致易语言的数值运算出错,在子程序开头执行这个初始化即可
-
新增:L_网页_解析请求参数() 做WEB服务器的时候可以用到,方便处理url参数
v1.1.8.20180818
更新内容 - 红色字段代表比较重要的更新或提示
-
【释放文件路径规范】C:\Users\administrator\AppData\Roaming\凌哥E编程模块\
路径中的红色字体代表当前计算机登录的用户名;模块释放的各种插件DLL都会存放在这个目录里面
查看当前程序数据路径方式: L_文件_执行 (L_目录_取特定目录 (8) + “凌哥E编程模块\”)
-
新增:Curl功能,封装了:http、ssl、smtp(邮件)功能,顺便封装了一个类:L_curl_http2winhttp 就是把Curl的http功能封装成类似winhttp对象那样调用,会方便一些(对多线程做了优化但经过测试 4000线程后似乎不太稳定,而且占用资源比较大、还是推荐使用 L_winhttp(类))
-
重构:L_winhttp(类) 使用方式不变,代码全改,特别是Cookie的地方实现了完美同步
-
修复:L_哈希表(类) 占用内存过多(独立的堆过多会导致内存暴涨然后崩溃)的问题
-
优化:热键监视功能大更新,性能更高,资源占用更低;使用方式:L_热键_注册()
-
新增:L_进程_打开Ex() L_进程_打开_NT() L_进程_取程序路径() L_进程_取程序路径2() L_进程_提升权限() L_进程_枚举Ex()
-
优化:L_文件_执行() 更换成 ShellExecuteExA 这个API;增加了【等待程序运行完毕】的功能,并且修复了设置默认当前目录的问题
-
新增:L_键代码_键名取键代码() 一些情况下能用到
-
新增:L_快速文本(类) 是基于 L_快速字节集(类) 封装的,以后会增加 分割字节集 取字节集左边 之类的功能
-
新增:L_注册表操作(类) 收录自精易模块 并修复了常量BUG以及优化判断系统是否64位的地方,保留 方法_置为32位() 方法_置为64位()
-
新增:L_DD驱动键盘鼠标_HID(类) 大部分游戏都不会屏蔽这个版本,但是安装驱动的时候杀毒软件100%报毒,自己看着办吧...
-
修复:L_内存加载DLL(类) 加载某些DLL会导致触发数据执行保护的问题
-
优化:L_内存加载DLL(类) 的功能以便适配Curl内存运行(也可以额外做很多兼容了)
-
新增:L_系统_取操作系统类别() L_系统_取操作系统类别2()
支持获取win98、win2000 、winXP、win2003 、win2008 、win7 、win8 、win2012、win8.1 、win10 系统版本。
-
修复:L_时钟(类) 创建时会立刻执行一次时钟周期事件的问题
-
修复:大漠插件类 全局只能创建一次的问题
-
更新封装的 hp-socket 组件的DLL版本为最新的5.4.1-bate8
-
修改:L_异常保护_开始 () L_异常保护_结束 () 的方案,并且增加了两个读取错误信息的功能,请查看例子
-
优化:L_网页_Cookie合并更新() 合并方案与 L_winhttp(类) L_curl_http2winhttp(类) 相同,我自己写的比较可靠~
但我依旧推荐你们使用 L_Cookie管理(类) 这个Cookie管理我花了很多时间改动,与浏览器的管理结果基本相同!
-
优化:L_文件枚举(类) >>> 打开() 新增参数名:返回_路径属性 备注:返回值包含多个属性,看常量 #L_路径属性_
判断是否存在某属性:位与(返回_路径属性, #L_路径属性_只读文件) =1就是存在 =0就是不存在
v1.1.7.20180620
更新内容
-
优化:键盘hook回调事件参数更新:
4个参数:键代码(整数型 兼容易语言键代码常量),状态(整数型 1=按下 2=放开),虚拟键码(整数型 操作系统对应的按键的编码),扫描码(整数型 键盘硬件对应的按键的编码);返回值是整数型. 1:吃掉消息 0:放行消息
现在键代码参数完美兼容易语言的键代码常量了(为热键监视改版做准备)
-
删除:L_运算_加法() L_运算_减法() L_运算_乘法() L_运算_除法() L_运算_位与() L_运算_位或() 因为实际测试这些效率没有核心库直接运算快
-
修复:L_线程反馈事件(类) 的一些问题,并且删除了部分方法的参数
-
新增:L_系统_取外网IP() 使用多个接口(淘宝、新浪)获取本机的外网IP
-
新增:L_内存加载DLL_E(类) 兼容易语言编译的DLL
-
修正 L_HPSocket_服务端_PACK(类)、L_HPSocket_客户端_PACK(类) 中的几处注释错误(现在能够更好地理解了)
-
新增:L_异常保护_开始() L_异常保护_结束() 具体用法请看压缩包附带的例子
-
优化:L_字节集数组_读取() 升级成更完美的数据长度校验,避免恶意攻击以及读取错误的字节集导致崩溃的问题
-
新增:L_POST数据封装(类) >>> 取数据_cookie格式() 返回 cookie格式 的数据
-
修改2个子程序命名:
L_类_取内部方法地址() >>> L_函数_构造类方法地址()
L_类_释放内部方法地址() >>> L_函数_释放类方法地址()
-
新增:L_函数_构造cdecl地址() L_函数_释放cdecl地址() 用于解决易语言没有 cdecl 回调的问题
-
修复:L_内存加载DLL(类) 中因为系统开启了【数据执行保护】导致的闪退问题,受影响的功能有:
L_HPSocket_服务端_PACK、L_HPSocket_客户端_PACK
L_压缩算法_lzma、L_内存皮肤、L_压缩算法_gzip
-
修改:L_大漠插件(类)、L_大漠插件_附带DLL(类) 的免注册方案为调用云外归鸟的库
-
新增:L_压缩算法_nt(类) 封装的是ntdll中的解压缩函数,支持两种压缩格式:lzma、Xpress
v1.1.6.20180601
更新内容
-
在易语言IDE上方增加了模块版本、QQ群信息显示
-
优化:L_线程池(类) 细节微调
-
优化:修改了所有类模块的内部调用自身语法:方法() >>> 自身类名.方法(),标准一点总是比较好的~
-
新增:L_位图_图像到位图句柄() L_位图_转换色深() L_字体_创建字体() L_字体_计算文本尺寸()
-
新增:L_gdi(类) 可以完成一些简单的gdi绘画
-
修复:HP-Socket 一些功能的调用方案中的几处BUG、更新DLL至5.3.1.1版本
-
优化:L_Cookie管理(类) 内部过期时间处理精确至毫秒级
-
优化:更新注释文本:L_线程池(类) >>> 加入队列() 因为获取任务字节集参数的方案早就改了但是注释还没改,所以这次更新补上
-
新增:L_线程反馈事件(类) 分组框、超级列表框 操作,以及窗口移动功能
-
新增:L_压缩算法_gzip(类) Gzip算法就不多解释了,一般是POST用
-
新增:L_哈希表(类) >>> 枚举相同值() 可以取出值是相同的键名
-
新增:L_文件枚举(类) 可以同时声明多个变量供多线程使用,不冲突(易语言的文件枚举不能多线程)
-
优化:修改了模块内所有文件枚举子程序,改为 L_文件枚举(类) 的封装 (为了支持多线程)
v1.1.5.20180501
更新内容
-
新增:L_HPSocket_服务端_PACK(类) L_HPSocket_客户端_PACK(类)
-
新增:L_原子锁_* 与 L_线程安全变量_整数型(类) 原理相同
-
新增:L_Cookie管理(类) 增加了“唯一标识”适用于多账号登录的时候区分cookie,或者别的情况需要区分cookie也可以用到
-
修复:L_Cookie管理(类) >>> 写单条Cookie() 中的一个BUG,会导致写入无用的cookie数据(也没办法读取它)
-
新增:L_Cookie管理(类) >>> 读单条Cookie()
-
优化:L_Cookie管理(类) >>> 获取Cookie() 效率提升
-
优化:L_Cookie管理(类) >>> Cookie的domain管理现在更加规范了
-
修复:L_线程池(类) 强制销毁任务线程后导致出现异常的问题
-
修改:L_剪辑版监控(类) 的功能实现方式
-
修改:L_JsonValue(类) 新增方法:插入成员()
-
修改:L_文件_执行() 新增一个参数【启动路径】:用来告诉应用程序它的运行目录,某些程序运行时没有设置这个路径会出现奇怪的问题,比如 CSOL:启动后会在执行它的程序路径下更新游戏文件(很坑)
-
新增:L_快速字节集(类) 高速累加,循环一千万次仅耗时600毫秒,速度非常快;同时将模块内部需要用到累加的地方都改为本方案。
-
新增:L_进程_指定CPU()、L_线程_指定CPU() 有很多地方能用到这功能
-
优化:L_线程_启动 / L_线程_启动[2.3.4] / 增加了一个参数:自行分配CPU{ 如果为真,模块内部将自行选择线程运行的CPU(按CPU线程顺序平均放置,性能会提升很多);如果为假,则让系统自动选择CPU。默认为假 } 模块内部的其他功能(如:线程池)线程创建方案,这个参数值是:假
-
新增:L_线程许可区(类) >>> 置自旋次数() 内部默认为8000;旋转次数越高,效率也越高,CPU占用率随之提升。
-
新增:L_POST数据封装(类) 适合POST请求时使用;可以打包三种格式:普通的post/get请求、请求协议头、json格式
v1.1.4.20180401
更新内容
-
新增: L_文本_取特定文本()、L_文本_是否为数字()、L_文本_是否为小写字母()、L_文本_是否为大写字母()
L_文本_是否为字母()、L_文本_是否为中文()
-
新增:L_压缩算法_lzma(类) 以后会封装别的算法库
-
优化:L_窗口_枚举所有窗口句柄()、L_窗口_枚举所有窗口信息()
-
优化:L_DD驱动键盘鼠标(类)中的动态调用DLL方式,效率提升
-
修复:L_线程_等待_不卡UI() 占CPU的问题,更换新的实现等待不卡UI方案
-
新增:L_超时等待(类) >>> 是否超时() 新增一个参数:判断时间 特殊情况可以用到
-
修复:L_线程池(类) >>> 停止并清除所有任务() 中的一处BUG
-
新增:L_线程池(类) >>> 等待运行完毕() 等待线程池所有任务执行完毕
-
优化:L_线程池(类) >>> 获取任务字节集参数方法改变:取任务参数(队列ID)
-
新增:L_字体_加载临时字体() L_字体_卸载临时字体() 将指定字体加载到自身程序中,字体仅允许当前进程使用
-
新增:L_线程反馈事件(类) 适用于多线程操作窗口组件使用,与 标签.调用反馈事件 意义相同,不同的是我这个传递的是字节集参数
-
新增:L_Cookie管理(类) 内部自动处理cookie信息 Max-Age、Secure、domain、path 与浏览器的行为差不多、比普通的管理更标准
-
新增:L_JsonValue(类) 封装自kyozy的 纯算法解析json模块,内部命令命名、数据类型已全部改名,避免产生冲突
-
优化:L_编码_base64编码() L_编码_base64解码() 改为汇编处理方式:http://bbs.eyuyan.com/read.php?tid=357939
-
优化:L_线程_初始化com() 多了一个参数,可以为空、使用方法不变;有兴趣了解线程并发模型的可以去看命令注释
-
更新:L_大漠插件_付费版(类) 支持大漠插件7.1814版本
v1.1.3.20180211
更新内容
-
修复:一处隐藏的BUG,调试中很难发现...
-
优化:大漠插件类内部增加自动卸载安装在系统中的大漠插件dll
-
修复:大漠插件破解(类)可能导致崩溃的BUG
-
修复:L_线程池(类) 创建线程逻辑出错导致的BUG
-
修复:L_线程池(类) 内部检测线程空闲回收时间异常的问题
-
更新:L_线程池(类) 现在初始化后就会立刻将内部线程保持在最小线程数
-
新增:L_剪辑版监控(类) 可以实时监控剪辑版的变化
-
新增:L_暂离检测(类) 监视用户在指定时间内没有操作键盘鼠标时、触发指定事件
-
新增:L_时钟(类) 封装的线程时钟,与部分api时钟类似但操控很稳定,并且销毁时会确保代码执行完毕从而避免产生不必要的崩溃
-
新增:L_程序_禁止重复运行() 新增一个参数:唯一标示,以便特殊情况使用
-
L_大漠插件_付费版(类) 更新兼容最新的7.1807版本
-
L_DD驱动键盘鼠标(类) 更新插件至81010版本
v1.1.2.20180125
更新内容
-
优化:L_线程池(类) 大更新,功能更强大,使用方式不变,只有 初始化() 的参数变动与 取当前任务参数()改动获取参数方式,请自行修改
-
新增:L_完成端口_**() 操作I/O完成端口,可以作为队列使用或者别的用途
-
更新:DD驱动键盘鼠标插件至81000版本
-
更新:L_大漠插件_付费版(类) 兼容最新的7.1802版本
-
修复:所有大漠插件类均少一个命令的问题,一键生成的时候没处理好
-
新增:L_变体型_置*** 返回包含指定数据类型的变体型,方便在某些情况下使用,比如运行js函数传参
-
新增:L_文件_强制删除() 可以删除掉所有类型的文件包括运行的程序
-
新增:L_读写锁(类) 相对于普通的锁而言,能提高并发性
-
优化:L_超时等待(类) → 初始化() 新增自动销毁内部对象方案,避免创建后没调用销毁从而重复创建导致的句柄泄漏
-
优化:L_窗口_枚举所有窗口信息() 现在多线程枚举速度很快了
-
新增:L_窗口_枚举所有窗口句柄() 与 L_窗口_枚举所有窗口信息() 原理相同,区别是只获得句柄,效率高
v1.1.1.20180105
更新内容
-
修复:L_哈希表 中的一些BUG 【模块中所有调用哈希表的命令均受影响,如线程池、文本去重复等】
-
新增:L_键盘_组合按键 - 传递数组,比如:L_键盘_组合按键({#Ctrl键, #A键})
-
修复:模块内部保存默认堆句柄的方式出错导致的哈希表崩溃问题(易语言的变量初始化顺序问题)
-
修复:线程池中一处会导致整个线程池卡住的问题
-
修改:线程池中 停止并清除所有任务() 与 加入队列()命令中的等待队列方案有冲突的问题,现在只要执行了 停止并清除所有任务,那么加入队列()会立刻返回,不做多余操作,直到线程池重新初始化完毕。
-
优化:L_线程_启动、L_线程_启动2、L_线程_启动3;优化内部传递指针方式,速度提升100% 并且新增了部分功能
-
新增:L_字节集数组_取成员数() L_字节集数组_取成员数2()
-
修正:判断() 与 如果() 的用法,增加效率!
-
新增:L_字节集_取长度、L_字节集_到十六进制、L_字节集_十六进制还原、L_数组_取成员数
-
优化:L_文本_逐字分割() 测试处理百万字节仅需600毫秒,而精易模块的需要48100毫秒,差了80倍
-
新增:L_文本_加密、L_文本_加密2、L_文本_加密X
-
修复:L_延时 与 L_超时等待(类) 特殊情况可能出现卡死的BUG(超级模块、精易模块均有此问题)
-
修复:L_超时等待(类) 中 是否超时() 返回的逻辑值颠倒的问题,咳咳,小BUG而已不要在意这些细节
-
新增:L_系统_取启动时间() 需要CPU支持高精度计时器(一般都有),不支持win98系统。可解决开机超过28天后返回负数的问题、本函数返回的毫秒精度最高。
-
优化:加密保存模块内部调用的大漠插件DLL/免注册DLL、DD驱动键鼠插件等资源,避免误报
-
优化:L_键盘鼠标钩子 拆分为两个独立的类模块:L_键盘钩子、L_鼠标钩子 (后期命名或许还会修改,因为要增加别的钩子)
-
新增:L_程序_调用子程序3() - 本函数执行速度较快,推荐优先使用
-
优化:选择() 与 多项选择() 中影响效率的地方、精易模块与超级模块都有这个问题
-
新增:热键监视功能: L_热键_注册() L_热键_注销() 内部已经处理好了一切,兼容多线程调用
-
更新:L_大漠插件_付费版(类) 兼容最新的7.1753版本大漠插件
-
修复:L_类_取内部方法地址() 之前版本的所有调用此功能的类模块均会出现问题
v1.1.0.20171129_正式版
更新内容
-
新增:L_系统_hosts修改重定向()
-
新增:内存加载DLL功能:L_类_内存加载DLL
-
优化:线程池内部处理线程逻辑,为以后的功能扩展做准备
-
修复:拖放对象内部窗口消息返回值没处理好导致部分外部程序或使用EXUI窗口崩溃的情况
-
修复:键盘鼠标连发类 鼠标连发右键无效,并且与左键冲突的BUG
-
优化:键盘鼠标连发类的效率,内部有些不需要加锁的地方已经去掉了
-
修复:键盘鼠标连发类、L_线程_启动、L_线程_启动2 可能存在的死循环隐患(使用 L_超时等待 判断是否超时)
-
新增:键盘鼠标连发类 新增两个事件回调:置连发开始回调() 置连发停止回调()
-
修复:L_超时等待、L_延时、L_延迟中 MsgWaitForMultipleObjects 函数参数没写好导致的一系列卡顿问题
-
模块介绍与更新记录从txt文档更换为html格式,嘿嘿...
v1.0.4.20171020_RC
更新内容
-
修复:部分小BUG,命令参数没写好
-
新增:L_线程池 (真正意义上的完整线程池结构,并且扩展了很多功能,例子请稍等)
-
新增:L_大漠插件_付费版,兼容7.1746版本
-
修复:L_键盘_等待 卡死的BUG
-
新增:L_超时等待 内部有一个超时对象,用来判断是否超时
-
优化:修改命令 L_延时(精度较高的等待) 增加 L_延迟 (普通延时,不卡窗口) 删除 L_延时_高精度
-
优化:修改一些命令中的内部超时判断 取启动时间() 改为 L_超时等待
备注
-
准备开发的功能:cookie管理类(与浏览器处理结果相同)、TCP通讯(自动分包)、L_多线程管理(类模块,从线程池中阉割出来用于多线程的控制)
-
凌哥E编程模块已经相当成熟了,基本上不存在导致错误的Bug,正式版即将到来,敬请期待!
v1.0.3.20171110_Beta
更新内容
-
删除:L_键盘_按键 中原先的代码 因为它是使用keybd_event函数模拟的键盘
微软官方:"此功能已被取代,请使用 SendInput 代替。" 所以重写模拟键盘的命令
-
修复:L_键盘鼠标钩子 类中的一些BUG,加上了鼠标钩子
基本是把钩子事件全部封装下来了(不懂用请看 例程_键盘鼠标钩子.e)
增加一项命令:L_帮助_复制鼠标钩子回调子程序() 方便使用鼠标钩子
-
修改:键盘钩子回调的状态返回值,固定为 1=按下 2=放开 (之前忘记修改了...)
-
新增:位运算功能:L_运算_*
-
新增:L_哈希表 修改自kyozy大神的【通用型哈希HashTableT v1.2】提速并修复了一处BUG
-
修改:L_编码_* 命令中的大写英文字母改为小写,写代码的时候方便一些
-
删除:L_数组_去重复 新增:L_数组_去重复_文本型 L_数组_去重复_整数型 L_数组_去重复_字节集 (内置哈希表高速处理,比精易模块的快很多)
-
修改:L_文本_去重复文本 (内置哈希表高速处理,亲测速度比精易模块的快了5倍)
-
新增:L_文本_取中间_批量_正则方式()
-
修复:L_程序_调用子程序() 代码,之前的会出现内存泄漏的情况
-
新增:L_鼠标连发(类)
-
新增:大量键盘鼠标操作命令,请自行查看
v1.0.2.20171030_Beta
更新内容
-
删除:L_指针_取变量地址 L_指针_取变量数据地址 (通用型不够严谨,并且有BUG)
-
优化:线程许可区中的调用方式修改为指针传递,这样效率更高,避免每次调用api的时候易语言内部重复取指针
-
新增:L_线程安全变量_整数型 增加了一个方法:判断赋值(数值,预期值) 使用方式请看原注释
-
新增:L_线程_启动 L_线程_启动2 L_线程_启动3;不同的地方请看原注释
-
修改:L_DLL_调用函数 L_程序_调用子程序 参数不变,现在完美支持_CDECL和_stdcall
-
删除:L_延时_api() 改为api声明:sleep() 方便调用
-
新增:L_键盘鼠标钩子(类)、L_按键连发(类)、L_拖放对象(类)
之前我开源了那个解决管理员权限不能拖放的问题,然后参考了呵呵仙的拖放对象注册方法完成本类
呵呵仙的那个有个小BUG,嘿嘿,我是不会告诉他滴
-
修复:3个大漠插件类中多线程创建对象时可能出现的一处安全隐患
-
新增:L_网页_取页面地址、L_网页_取域名、L_网页_取端口(均为 L_网页_解析url 的二次封装)
-
新增:添加了其他新的函数、类模块,请自行查看
v1.0.1.20171018_Alpha
更新内容
-
新增:添加了一部分新的函数、类模块,请自行查看
-
优化:修正 L_线程_启动 错误的注释文本
-
优化:L_系统_是否64位操作系统
-
修复:L_线程_启动 可能出现的一个死循环BUG
-
修复:L_窗口_枚举所有窗口信息 多线程出错的问题(已加锁)
-
删除:winhttp api 更换为 winhttp对象 (经过严格测试 api版本有BUG)
-
新增:L_指针_取变量地址 L_指针_取变量数据地址
-
新增:L_目录_取特定目录 新增一个参数,用来取出标准长路径名,而不是短路径(过时的东西)
-
新增:在DD驱动键盘鼠标的基础上封装了一些功能方便使用
v1.0.0.20170925_Alpha
更新内容
开始
2017-8-19 16:00:49 - 我:想做个模块