- 博客(42)
- 收藏
- 关注
原创 鼠标轨迹算法
延迟随机化:操作间隔 = 基础时间(如200ms) + 随机值(0-300ms)。首次移动到目标点附近,再通过小范围循环逼近(如2-3次微调)。对高频操作(如输入框点击)增加额外延迟(50-150ms)。或在直线路径上添加随机偏移量(如正弦波扰动),模拟手部抖动。分段速度控制:将移动过程分为加速、匀速(可选)、减速阶段。对高频操作(如输入框点击)增加额外延迟(50-150ms)随机波动:在基础速度上叠加微小随机值,避免匀速运动。在目标点附近减速,并随机停留一段时间。在目标点附近减速,并随机停留一段时间。
2025-07-10 11:39:31
538
原创 Airtest+OCR方案
ocr = PaddleOCR(use_textline_orientation=True, lang="ch") # 中文识别。print("识别结果:", result[0]["rec_texts"])print("未识别到文字")
2025-07-10 10:50:46
202
原创 AirTest教程
游戏渲染] → [GPU帧缓冲] → [虚拟机显存] → [DMA传输] → [虚拟设备] → [宿主捕获程序]现代游戏使用DirectX/OpenGL直接操作GPU显存,不经过Windows的GDI图形管道。在Windows平台上使用传统截图方法(如PIL.ImageGrab或win32gui)捕获游戏窗口时出现失效的现象。游戏常用覆盖渲染技术(如Steam/FPS显示覆盖),这些层对GDI不可见。主要源于现代游戏采用的图形渲染技术与传统GDI截屏机制的不兼容性。# 可选:安装图像处理增强包。
2025-07-08 14:28:36
224
原创 SikuliX操作功能函数详解
all_matches = screen.findAll("item.png") # 返回所有匹配项。screen.click("button.png") # 点击当前屏幕上的 button.png。match = screen.find("dialog.png") # 返回第一个匹配项。调整相似度:Pattern("image.png").similar(0.9)screen.capture("screenshot.png") # 全屏截图。
2025-07-03 15:41:37
453
原创 SikuliX环境搭建
https://launchpad.net/sikuli 网页下载 sikulixapi-2.0.5.jar。保存文件到C:\\sikulix\\sikulixapi-2.0.5.jar。pip install JPype1 安装 JPype。安装 Java JDK 8+ 环境。安装 Python 3 环境。使用python写代码。SikuliX环境搭建。
2025-07-03 14:58:07
202
原创 谁才是面向对象的王者
先认可对方的感受:”我理解你会这么想“表达共情:”换做是我可能也会很烦“适时复述对方观点,确保理解准确。一起讨论可行的解决方案。等情绪平复后再讨论解决方案。用身体语言表示你在认真听。面向对象的方法(OOP)
2025-02-18 10:18:47
120
原创 ALPG 的工作原理
ALPG 模块的核心是一个 状态机 或 微控制器,它根据 Pattern 代码逐步执行测试模式生成任务。ALPG 根据 Pattern 代码生成测试模式,并通过接口(如存储器接口、数字接口)输出。测试模式可以是简单的数据序列,也可以是复杂的算法生成模式(如伪随机序列、递增/递减序列)。ALPG 的状态机逐条读取 Pattern 代码,并根据操作码执行相应的操作。跳转操作: 根据条件跳转到指定的 Pattern 代码地址。ALPG 可以捕获被测设备(DUT)的响应,并与预期结果进行比较。
2025-02-18 10:15:22
832
原创 Java后端框架迭代历程
简化了 Java 中的数据库操作,使得 Java 类和数据库表之间的映射更加简单,避免了大量的 JDBC 代码。通过约定优于配置的原则,提供了开箱即用的功能,并且内置了常见的 Web 服务器(如 Tomcat)强调极快的启动时间和低内存占用,应对无服务器架构和微服务的挑战而设计的,支持原生镜像。就不能使用自己的数据库不然每个节点一个数据库,那么数据就不统一了,需要使用外部的mysql。Spring 框架的崛起(2002年 - 2005年)轻量级框架和微框架的兴起(2010年 - 2015年)
2025-02-18 10:13:31
230
原创 FPGA介绍
硬件编程 可以进行硬件级的编程,灵活性高 基于处理器的指令集,通常通过软件编程实现功能。功耗 通常较低,尤其在需要并行计算的场景中 低功耗,但在计算任务量大的时候相对较高。并行处理能力 强大的并行处理能力,适合高吞吐量应用 通常是串行执行任务,适合一般计算任务。规模的扩张未必能带来人们期待的能力提升,因为这些预测并非建立在严谨的理论基础之上,而仅仅是基于“更大就是更好”的经验观察。
2025-02-18 10:10:36
282
原创 写代码也需要读诗
ECC(Error-Correcting Code,错误纠正码)是一种内存技术,用于检测和修正内存中的数据错误。ECC算法会计算出一个校验码并存储在内存中,读取数据时,ECC会检查数据是否与校验码匹配。ECC内存通过增加额外的校验位(通常是一个或多个附加的比特)来进行数据校验,当数据写入内存时,《把时间当作朋友》:做事不一定要图快,马跑起来比骆驼快,但骆驼一生走过的路却是马的两倍。一万小时定律:持续投入一万小时的努力,足以使人在某个领域达到专家水平,随着知识量增多,是否会触及学习广度的边界。
2025-02-18 09:36:19
221
原创 Python介绍
这意味着在多核 CPU 上,Python 的多线程并不能充分利用多个 CPU 核心进行并行计算,Python 本身是一种解释型语言,其支持的并发性有限,主要受到 全局解释器锁(GIL) 的影响。GIL 是 Python 解释器(特别是 CPython)中的一个机制,它确保同一时刻只有一个线程能够执行 Python 字节码。因此 Python 的高并发能力会受到一定限制。
2025-02-18 09:24:44
121
原创 tcpdump工具使用介绍
捕获并保存数据包到文件: -w 参数会将捕获的数据包保存到指定的文件中,通常是 .pcap 格式。捕获特定接口的流量: -i 参数指定接口,eth0 是你要监听的网络接口。tcpdump 是一个非常强大的命令行网络抓包工具,用于捕获和分析网络数据包。
2025-02-17 11:07:41
163
原创 Rust的深入浅出,从入门到废弃
rustup-init.exe是Rust的安装和管理工具,默认情况下,它会同时安装这些工具:rustc、rust-std、cargo、rust-docs、rustfmt、clippy。把Cargo当作习惯,对于简单项目,Cargo并不比rustc提供了更多的优势,不过随着开发的深入,终将证明其价值。一旦程序壮大到由多个文件组成,亦或者是需要其它的依赖,让Cargo协调构建过程就会简单得多。rustc是Rust的编译工具,cargo是Rust的包管理工具。Rust代码文件使用.rs后缀。
2025-02-17 11:06:21
308
原创 硬件虚拟分享
联合文件系统是Docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同Docker容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。容器内的应用进程直接运行在宿主的内核,容器内没有自己的内核,也没有进行硬件虚拟。控制组可以提供对容器的内存、CPU、磁盘IO等资源的限制和审计管理。命名空间是Linux内核一个强大的特性,每个容器都有自己单独的命名空间,
2025-02-17 11:05:47
271
原创 调试的技巧分享
"type": "调试器类型", // 调试器类型,比如 "node", "cppdbg", "python" 等。"request": "launch", // 启动请求类型,常见的值是 "launch" 或 "attach""program": "${workspaceFolder}/path/to/executable", // 目标程序的路径。"miDebuggerPath": "/path/to/gdb", // 指定调试器路径。
2025-02-17 11:04:12
363
原创 RuoYi的开发框架介绍
多种功能组件:例如用户管理、权限管理、角色管理、日志管理等,常见的企业管理系统功能都已实现。前后端分离:支持前后端分离的架构,前端通常使用 Vue.js 或 ElementUI,大型互联网平台都在排斥链接,它们的共识就是,必须把用户留在自己的花园,防止他们离开。模块化设计:若依框架具有较好的模块化设计,用户可以根据需要选择不同的模块。主要用于构建快速开发、可维护、可扩展的 Java Web 应用程序。抖音、快手、百度、小红书、B站。JDK >= 1.8 (推荐1.8版本)1.独立网站流量减少。
2025-02-17 10:58:50
894
原创 数据分析介绍
NumPy:支持常见的数组和矩阵操作,通过ndarray类实现了对多维数组的封装,提供了操作这些数组的方法和函数集。处理包含不同类型数据的表格和时间序列。Matplotlib:一个包含各种绘图模块的库,根据我们提供的数据创建高质量的图表。从原始数据中抽取出有价值的信息的这个过程我们就称之为数据分析,它是数据科学工作的一部分。当今世界对信息技术的依赖程度在不断加深,随着数据越来越多,发现有价值的信息却越来越难。优化和驱动业务,推动数字化运营。找出潜在的市场和产品的上升空间。监控数据波动和异常,找出问题。
2025-02-17 10:54:09
213
原创 专利的分类
Zed基于Rust语言,充分利用多核CPU和GPU,追求极致性能,速度极快。它的开发非常活跃,GitHub仓库的星星已经达到了49K。只有Mac版本最完善,Linux版本遇到不少问题。专利申请:专利正在审查中,尚未获得授权。有效专利:专利已经被授权并保持有效。无效专利:专利由于种种原因被判无效。生态还没完善,很多地方还没来得及做。VS Code编辑器的下一站是Zed?
2025-02-17 10:46:28
265
原创 漏洞利用介绍
SYN Flood: 控制每个IP的连接速率、SYN Cookie技术。负载均衡算法:支持多种负载均衡算法,如轮询、最少连接、源地址哈希等。健康检查:自动检测后端服务器的状态,自动将流量切换到健康的服务器。三:网络层:IP、ICMP、ARP、RARP、AKP、UUCP。可以发送IP、ICMP、ARP、RARP、AKP、UUCP包。一:物理层:机械、电子、定时接口通信信道上的原始比特流传输。七:应用层:HTTP、FTP、SMTP、POP3。六:表示层:信息的语法语义以及它们的关联。
2025-02-17 10:43:53
206
原创 Vue + Element UI + axios 环境配置
/ 引入 Element UI 组件库。// 引入 Element UI 的样式。选择npm 包管理工具。安装element-ui。main.js中加入。
2025-02-17 10:41:20
265
原创 DDOS介绍
攻击者伪造源IP地址,向易受攻击的服务器(DNS或NTP)发送请求,服务器的响应会被发送到目标,造成流量浪涌。SYN洪水:利用TCP三次握手中的SYN请求,发送大量未完成的连接请求,导致服务器资源耗尽。碎片化攻击:通过发送大量小的IP数据包,导致目标设备在重新组装数据包时耗费大量资源。UDP洪水:发送大量UDP数据包到随机端口,目标设备需要处理这些包,消耗带宽和资源。Slowloris:通过慢速发送HTTP请求保持连接打开,耗尽目标的并发连接数。TCP洪水:发送大量TCP数据包,试图耗尽目标的资源和带宽。
2025-02-17 10:40:48
230
原创 半导体芯片介绍
DUT ctrl:执行DUT段的指令,产生R、W...TS、CYP等控制向量。不同芯片设计针对不同的应用需求,不如功耗、性能、成本等,决定了时序的设置。芯片内部电路的设计,包括逻辑门的数量、布局和连接方式也会影响时序。ALPG可以实时产生存储类芯片测试所需的地址、数据、读写控制等测试向量。Data gen:执行data段的指令,产生D/SD数据向量。循环指令,让有限的指令存储空间,产生无限的测试向量。工作电压的不同会直接影响芯片的开关速度,进而影响时序。温度、负载变化等外部条件也会影响芯片的时序特性。
2025-02-17 10:39:32
436
原创 CPU大小核的理解
由大量的逻辑单元(查找表、触发器和输入/输出块)组成,可以根据需要灵活配置,支持并行处理,能够实现复杂的自定义硬件逻辑。ARM处理器基于RISC架构,具有简化的指令集,支持高效的流水线操作,支持多种处理模式以优化性能和功耗。在提供较高性能的同时,保持低功耗,ARM架构经过优化,适合长时间运行的移动和嵌入式应用。可以提供非常高的性能,尤其在并行处理方面,功耗取决于实现的复杂性和使用的逻辑单元数量。在C++中,std::thread 并不提供直接的方法来指定线程在特定的CPU(大核)上运行,
2025-02-17 10:38:03
545
原创 SQlite结构介绍
SQLite是一种轻量级的关系数据库,它使用动态类型系统,不需要创建表时严格指定列的数据类型。存储二进制大对象,允许存储任意字节的数据,包括图像或其它文件格式。
2025-02-17 10:30:59
154
原创 Qt的项目文件解析
易于学习和使用,有丰富的动画、控件、界面更酷炫现代,随着前端的发展,QML更切合时代发展,Qt官方比较重视,QML发展比较快,也是未来趋势。qmake是一个工具,它读取.pro文件,并生成标准的Makefile或者对应的项目文件(window的VS,MacOS的Xcode)cmake拥有强大的跨平台能力和对复杂项目的支持,许多开源的项目都用cmake,适合构建中大型项目。总体来说,cmake更流行,功能更强大,更通用,后续Qt新项目我会考虑使用cmake。qmake专注与Qt项目,适合构建小型的Qt项目。
2025-02-17 10:16:32
502
原创 同步和异步的理解
可以在协程之间进行对称的挂起和恢复,不需要特定的调用者-被调用者关系,可以任意两个协程之间发生。协程的yieId和resume是完全由用户控制的,和线程不同,线程的运行和调度由操作系统自动完成。在单线程内,协程不能并行执行,而是顺序执行,只能是一个协程结束或yieId后,再执行另一个协程。需要特定的调用者-被调用者关系实现,只能在调用栈的顶部进行,独立保存和恢复执行上下文。C++的异步模型是一种编程规范,任务的承载者可以用线程、协程、纤程。生成器协程:一种在函数执行期间可以暂停和恢复的特殊函数。
2025-02-14 16:52:46
152
原创 ToB端的软件、ToC端的软件对比
点击率:图标、软件描述、渠道(广告、软文、营销视频、网红推荐等)使用率:UI布局、UI风格(市场取向)、功能交互引导、隐私安全、留存率:提供个性化内容、建立社区、老用户慰问、签到、埋点收集分析。安装率:官网、安装人数、评论人数、评论内容和星级、安装包大小。付费率:更多订阅选项、定价、增强功能的痛点、限时促销、试用。分享率:一键分享入口、激励机制、品牌。注重功能需求的实现、以及软件稳定性。不同点:ToC端更重视用户留存、软件体验。
2025-02-14 16:51:09
279
原创 Valgrind操作教程
通过动态二进制翻译和内存监控技术,实现了强大的内存调试和性能分析功能。运行程序: valgrind ./your_program。检查结果:Valgrind会输出内存使用情况即潜在的问题。内存调试工具,检测内存泄露、未初始化内存读取等问题。
2025-02-14 16:49:19
208
原创 算法分类笔记
循环神经网络(RNN):适用于序列数据处理,如时间系列预测、自然语言处理等。训练过程:CNN通过反向传播算法进行训练,利用损失函数来优化权重参数。池化层:降低特征图的维度,减少计算量,防止过拟合,同时保留重要特征。生成对抗网络(GAN):用于高质量图像生成,能够控制生成图像的风格。激活函数:通常在卷积后应用激活函数,使模型能够学习复杂的模型。卷积神经网络(CNN)是一种深度学习模型,主要用于处理图形数据。卷积层:CNN的基础组件,通过卷积操作提取局部特征。全连接层:用于将提取到的特征映射到最终的输出类别。
2025-02-14 16:47:47
231
原创 谷歌端测试框架
TearDownTestCase() :在TestSuite里的最后一个TestCase之后执行。SetUpTestCase() :在TestSuite里的第一个TestCase之前执行。当待测试方法的行为取决于传入的参数时,而且这些参数的不同组合有多种。针对多个用例之间需要进行数据共用的测试场景,用于多样测试。不会执行里面的测试用例,而是输出测试用例的列表。执行测试用例时,同时也执行被置为无效的测试用例。用来测试其内部代码,其内部断言决定最终的测试结果。对执行的测试用例进行过滤,支持通配符。
2025-02-14 16:47:10
331
原创 grpc使用
维护一个任务队列的异步调用,无法获取返回信息,只能知悉通讯状态。异步回调API,需要通过回调获取返回信息,不方便。C++20协程只是提供协程机制,而不是提供协程库。grpc提供了两种API:同步API和异步API。
2025-02-14 16:46:29
139
原创 设计模式笔记
提高代码复用性:成熟通用的解决方案,特定应用场景,重复使用减少代码的重复。状态模式:适用于对象有多种状态,并且每个状态下的行为不同的情况、工厂模式:适用于创建不同类型的对象,不希望暴露对象的创建逻辑。封装原则:数据和操作数据的方法绑定在一起,并限制外部对数据的直接访问。访问者模式:适用于需要对象结构中的元素进行不同操作的情况。适配器模式:适用于将不兼容接口的类结合到一起的情况。创建型模式:涉及对象的创建,帮助系统独立于如何实例化对象。装饰者模式:适用于扩展功能而不影响其他对象的情况。
2025-02-14 16:44:08
328
原创 面向对象开发的理解
允许我们在更高的层次上进行思考,不局限于具体的实例,讨论“动物”这个抽象概念时,不需要逐一列举。能在不同情境下重用相同的概念或解决方案,设计模式提供了可复用的解决方案来应对特定的场景。通过观察不同事务之间的相似性,识别出模式,抽象出公式和定理,适配不同的数值和场景。关注事务的核心特征,而不是细节,通过类和接口来抽象出对象的行为和属性。不仅适用于科学和数学,还广泛应用于艺术、哲学和日常生活中。抽象不再追求现实的再现,而是通过色彩和形状表达情感与思想。使用类和对象来隐藏实现细节,只暴露必要的接口。
2025-02-14 16:41:42
242
原创 windows端远程Ubuntu开发教程
sudo systemctl restart NetworkManager :有时虚拟机断网重启一下网络管理解决。sudo systemctl status ssh:查询ssh服务启动状态。sudo systemctl enable ssh:设置开启自启。VsCode Remove-SSH连接 username@IP。Ubuntu安装ssh server。ifconfig查询虚拟机IP。
2025-02-14 16:40:25
165
原创 VS Code的插件UI开发
VS Code 是基于 Electron 框架开发的,而 Electron 的核心是 Chromium。因此,VS Code 的渲染引擎与 Chromium 的渲染引擎一致。Webview 是 VS Code 中用于显示自定义 HTML 内容的组件,使用 Chromium 的 Blink 引擎来渲染。RemoteSigned 策略要求本地创建的脚本可以运行,而从互联网下载的脚本必须是经过签名的才能运行。Skia 的角色:作为 Chromium 的底层图形库,间接参与 Webview 的渲染过程。
2025-02-14 16:39:38
286
原创 SSD组成
烧录固件时,通常会使用引导程序(bootloader)或厂商提供的工具。造商会提供专用的固件烧录工具,通过USB或其他介质将固件传输到SSD。SLC缓存:某些低成本SSD会使用一部分闪存作为SLC缓存,以提升写入性能。DRAM缓存:一些高性能SSD会使用DRAM作为缓存,以提高数据传输速度。NVMe是为固态硬盘设计的高速传输协议。使用NVMe协议进行固件烧录。
2025-02-14 16:34:46
236
原创 《鸟哥的Linux私房菜》《程序员修炼之道:从小工到专家》《高效程序员的45个习惯》读后笔记
要先搞清楚为什么需要这项新技术,它试图解决什么样的问题,可以被用在什么地方。学习新的技术和新的开发方法,摒弃陈旧和过时的开发方法。Linux系统:一个开源且稳定的操作系统,以其安全性而闻名。文件系统:管理文件和目录的方式,是Linux系统的基础。让系统尽早的跑起来,然后根据需要给他完善细节。欲速则不达,要解决真正的问题,不要治标不治本。对事不对人,能容纳自己并不接受的想法。唯有变化是永恒,增量和迭代式的学习。可工作的软件胜过面面俱到的文档。进程管理:监控和控制系统中运行的进程。个体和交互胜过过程和工具。
2025-02-14 15:32:34
311
原创 Deepseek的创新理解
ChatGPT的大致思路:让模型在预测下一个字的过程中产生智能,然后通过监督微调来让模型学会人类的问答模式,最后通过 RLHF 让模型输出符合人类偏好的回答。要实现ChatGPT那样的问答,需要进行第二阶段的训练,称之为监督微调,需要人为构造一批问答数据,让AI学习人类的问答模式。让模型读一本小说,小说的结尾是“凶手是_”,如果模型能准确预测凶手的姓名,有理由相信模型读懂了整个故事,它拥有"智能"因为模型输出的回答有时好,有时差,还需要人工针对模型输出的内容进行标注:给好的回答打高分,给不好的回答打负分。
2025-02-14 15:28:24
430
原创 程序员们不再互相提问,AI 回答了大部分问题
我们正在创造 AI 一代程序员,他们可以向 AI 提出正确的问题,但不理解 AI 给出的答案。到目前为止,AI 还不足以完全取代程序员,但随着 AI 的进步,这种情况只会变得更糟。以前,我花费数小时来理解某个解决方案为何有效,现在,我只是照着 AI 建议实施。每当我们让 AI 解决我们自己可以解决的问题时,我们就是用短期生产力换取长期理解,我们以牺牲明天的能力为代价来完成今天的效率。以前,解决新问题是编程乐趣的一部分。我的感觉是,AI 不会让我们成为10倍效率的程序员,只会让我们对它的依赖程度增加10倍。
2025-02-14 15:27:25
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅