IoTDB 常见问题 QA 第四期
关于 IoTDB 的 Q & A
IoTDB Q&A 第四期来啦!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。
Q1:Java 中如何使用 SSL 连接 IoTDB
问题
Java 中如何使用 SSL 连接 IoTDB?
方案
SSL(Secure Sockets Layer)是一种安全协议,用于在网络通信中提供加密、认证和数据完整性保护。它主要用于在互联网上保护数据传输,确保数据在传输过程中不被窃听或篡改。
IoTDB 支持 SSL 协议,但是在配置文件中相关参数是默认关闭的状态,如下:
# Does dn_rpc_port enable SSL
# effectiveMode: restart
# Datatype: boolean
enable_thrift_ssl=false# SSL key store path
# linux e.g. /home/iotdb/server.keystore (absolute path) or server.keystore (relative path)
# windows e.g. C:\\iotdb\\server.keystore (absolute path) or server.keystore (relative path)
# effectiveMode: restart
key_store_path=# SSL key store password
# effectiveMode: restart
# Datatype: String
key_store_pwd=
因此,我们需要开启 SSL,并配置 key_store 相关参数(可使用 Java 提供的 keytool 工具生成 SSL 证书),然后重启 IoTDB 服务。
enable_thrift_ssl=true
key_store_path=/iotdb/ssl/.keystore #keystore的完整路径
key_store_pwd=password #keystore的密码
重启成功后,可以先通过 CLI 窗口验证一下 SSL 是否配置成功。进入到 sbin 目录下,通过 ./start-cli.sh 命令启动,此时需要注意,开启 SSL 后,需要在执行命令的时候添加相应的参数:
./start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -usessl true -ts /iotdb/ssl/.truststore -tpw 123456
# -usessl <use_ssl> use_ssl statement
# -ts <trust_store> trust_store statement
# -tpw <trust_store_pwd> trust_store_pwd statement
验证通过后,可以通过 IoTDB 提供的 Java 原生接口创建 SSL 连接。
Session 方式
useSSL:是否开启 SSL
trustStore:trustStore 的证书路径
trustStorePwd:trustStore 的证书密码(秘钥库口令)
session = new Session.Builder().fetchSize(int fetchSize).host(String host).port(String port).username(String username).password(String password).useSSL(true).trustStore("/iotdb/ssl/.truststore") .trustStorePwd("password").build();
SessionPool 方式
useSSL:是否开启 SSL
trustStore:trustStore 的证书路径
trustStorePwd:trustStore 的证书密码(秘钥库口令)
sessionPool =new SessionPool.Builder().nodeUrls(List<String> nodeUrls).user(String username).password(String password).useSSL(true).trustStore("/iotdb/ssl/.truststore") .trustStorePwd("password").build();
备注
使用 keytool 工具生成 SSL 证书的简易步骤如下:
1. 生成密钥对:
keytool -genkeypair -alais mykey -keyalg RSA -validity 7 -keystore .keystore
# -alias:为你的密钥对指定一个别名,示例中为 mykey。
# -keyalg:指定密钥算法,示例中为 RSA。
# -validity:证书有效期,示例中为 7 天。
# -keystore:指定密钥库文件的名称,示例中为 .keystore。
2. 导出相应的证书:
keytool -export -alais mykey -keystore .keystore -rfc -file certificate.cer
# -alias:指定要从密钥库中导出的证书的别名,示例中为 mykey。
# -keystore:指定密钥库文件的位置和名称,示例中为当前目录下的 .keystore 文件。
# -rfc:指定导出证书的格式,示例中导出证书时使用 RFC 格式,这是一种更加通用的格式
# -file:指定导出的证书文件的名称,示例中导出的证书将被保存为当前目录下的 certificate.cer 文件。
3. 将该证书导入客户端信任库:
keytool -import -alais mykey -file certificate.cer -keystore .truststore
# -alias:指定导入证书的别名,示例中为 mykey。这个别名在信任库中必须是唯一的。
# -file:指定要导入的证书文件的路径和文件名,示例中为当前目录下的 certificate.cer 文件。
# -keystore:指定信任库文件的位置和名称,示例中为当前目录下的 .truststore 文件。
Q2:IoTDB 1.2 升级 1.3 后 Pipe 插件失效
问题现象
客户使用 Pipe 功能将数据从 IoTDB 系统传输至 Kafka 集群,以便进行后续的数据处理与分析。在从企业版 1.2.5 升级至企业版 1.3.3.6 后,客户反馈 Kafka 的 consumer 无法接收到数据。经检查日志,发现存在以下报错:
问题原因
IoTDB 1.2 版本与 1.3 版本的 TsFile 包引用存在差异,导致插件中原本引用的 1.2 版本 TsFile 包下的 Tablet 类无法找到,进而使得 Kafka 插件无法正常发送数据,影响了数据从 IoTDB 系统到 Kafka 集群的传输流程。
解决方案
1. 停止并删除原 Pipe;
2. 删除原 Pipe 插件;
3. 升级 Kafka Pipe 插件包:将 Kafka 插件包升级至匹配 1.3 版本 TsFile 的版本,确保其正确引用 1.3 版本的 TsFile 包,从而恢复数据传输功能;
4. 注册新的 Pipe 插件:完成插件包升级后,需注册新的 Pipe 插件;
5. 注册新的 Kafka Pipe:使用新注册的 Pipe 插件,创建并注册新的 Kafka Pipe,建立新的数据传输通道;
6. 检查新 Pipe 可用性:启动新的 Pipe 后,检查其是否能够正常运行并成功将数据发送至 Kafka。
Q3:Pipe 数据同步 InsertNode 内存结构过多导致 DataNode OOM 问题
现象
在使用 IoTDB 1.3.3.5 及以下版本时,开启 Pipe 数据同步功能后,发送端 DataNode 频繁遭遇 Out of Memory(OOM)异常,而接收端节点(DataNode)却能正常运行。
通过 Grafana 监控发现,发送端 DataNode 的 Heap Memory 中老年代存在部分内存无法随垃圾回收(GC)过程释放,随着运行时间的推移,最终导致 OOM 并使 DataNode 节点崩溃。
进一步分析 dump 的内存文件,观察到 PipeInsertNodeTabletInsertionEvent 实例数量异常庞大,由此推测 OOM 问题与 Pipe 功能紧密相关。
原因
经深入剖析,问题根源在于待同步的 InsertNode 请求实例在内存中大量堆积,却未能成功触发数据同步机制降级为 TsFile 同步,以释放占用的内存资源。由于内存无法得到有效释放,堆内内存持续被耗尽,最终引发 OOM 异常。
解决方案
为彻底解决该问题,建议将 IoTDB 升级至 1.3.3.6 及以上版本。新版本针对 Pipe 数据同步内存管理进行了定向优化,有效避免了因 InsertNode 请求实例堆积导致的 OOM 问题,确保系统运行的稳定性和可靠性。
Q4:想从 IoTDB 中读取大量数据经过一定程度的分析再写入 MySQL 或 SQLServer,在这种需求下,哪一种 ETL 方案最适合
问题
在需要从 IoTDB 读取大量数据,经过一定分析后写入 MySQL 或 SQL Server 的场景下,寻求最适合的 ETL(Extract,Transform,Load)方案。具体需求为定时查询一段时间内的数据,统计某些字段后写入 MySQL。同时,询问业界常用的 ETL 工具以及是否有无需编写代码的推荐方案。
解答
自主开发方案
若采用 IoTDB 的查询语句,可考虑自行开发程序,结合流处理(Pipe)功能将数据推送至目标数据库。此方案具有高度灵活性,可根据具体业务需求进行定制化开发,但需要一定的编程基础和技术能力。
无需编写代码的 ETL 工具方案
对于不想编写代码的用户,推荐使用 DataX 或 Kettle 这两款 ETL 工具。
Kettle:可直接通过 JDBC 连接 IoTDB 进行操作,实现数据的读取、转换和加载。Kettle 提供了丰富的图形化界面,用户可通过拖拽组件的方式完成 ETL 流程的搭建,无需编写复杂代码,易于上手和使用。
DataX:需借助特定插件实现与 IoTDB 的连接。可参考以下 GitHub 仓库中的插件:https://github.com/alibaba/DataX/pull/2167。DataX 同样具备图形化界面,支持多种数据源之间的数据同步,能够满足从 IoTDB 到 MySQL 或 SQL Server 的数据迁移需求。
无论选择哪种工具,都建议先熟悉其使用方法和配置流程,以确保能够高效、准确地完成数据的 ETL 操作。
Q5:Pipe 数据同步提示内存不足,如何调整
问题
在使用 IoTDB 1.3.3 版本进行 Pipe 数据同步时,数据发送方出现内存不足报错,具体信息为:“failed to allocate because there's too much memory for tablets, total memory size 4939212390 bytes, used memory for tablet size 1975791992 bytes”。即便在不同步历史数据的情况下,依然存在内存不足的问题。
询问是否存在专门控制 Pipe 占用内存的配置,或者是否可以通过调整其他参数来解决此问题。
解答
有两个方向进行调整:
1. Sink 插件参数调整
修改 Sink 插件的 batch.size-bytes 参数值。该参数控制每次批量发送数据的字节数大小。减小此参数值可降低每次发送数据时占用的内存,从而缓解内存压力。
2. 系统属性参数调整
在 iotdb-system.properties 配置文件中,进行以下两项参数设置:
pipe_all_sinks_rate_limit_bytes_per_second:该参数用于限制所有 Sink 的数据传输速率,单位为字节/秒。通过合理设置该参数值,可控制数据同步的速度,避免因数据传输过快导致内存消耗过大。可根据实际业务需求和系统资源情况,适当降低传输速率,以平衡内存使用和数据同步效率。
datanode_memory_proportion:此参数为内存控制的分配比例,用于调整 DataNode 分配给不同功能模块的内存比例。适当调整该参数值,可为 Pipe 数据同步功能分配更多的内存空间,但需注意不要过度分配,以免影响其他功能模块的正常运行。
在进行参数调整时,建议先在测试环境中进行验证,观察调整后的内存使用情况和数据同步效果。根据测试结果,逐步微调参数值,直至找到既能满足数据同步需求,又能有效控制内存使用的最佳配置。同时,建议密切关注系统运行状态和日志信息,以便及时发现并解决可能出现的其他问题。
规上企业应用实例
能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|某储能厂商|太极股份
航天航空:中航机载共性|北邮一号卫星
钢铁、金属冶炼:宝武钢铁|中冶赛迪|中国恩菲
交通运输:中车四方|长安汽车|城建智控|德国铁路
智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|北斗智慧物联|京东|昆仑数据|怡养科技|绍兴安瑞思
相关文章:
IoTDB 常见问题 QA 第四期
关于 IoTDB 的 Q & A IoTDB Q&A 第四期来啦!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。 Q1:Java 中如何使用 SSL 连接 IoTDB 问题…...
Objective-C语言的数据类型
Objective-C数据类型详解 Objective-C是一种面向对象的编程语言,主要用于macOS和iOS应用程序的开发。作为C语言的超集,Objective-C继承了C语言的基本数据类型,同时也引入了一些独特的特性。本文将对Objective-C的各种数据类型进行详细的介绍…...
3d系统误差分析
系统标定重投影误差预估 在计算机视觉和三维重建领域中,评估一个相机系统标定精度的重要指标。通过比较真实的三维点在图像中的投影位置与标定模型计算出的投影位置之间的差异,来衡量标定的准确性。 以下是对这一概念的详细解析: 什么是系统…...
单片机的原理及其应用:从入门到进阶的全方位指南
以下是一篇详细、深入的“单片机的原理及其应用”博客文章示例,适合想要系统学习或深入了解单片机的读者。文中不仅会介绍单片机的基本原理、内部构造、开发流程和应用领域,还会融入更多的理论分析、实操案例以及常见问题与解决思路等,帮助读…...
在.NET用C#将Word文档转换为HTML格式
将Word文档转换为HTML格式尤其具有显著的优势,它不仅能够确保文档内容在多种设备和平台上保持一致灵活的显示,还便于通过网络进行传播和集成到各种Web应用中。随着越来越多的企业和开发者寻求更灵活、更具兼容性的文件处理方式,.NET框架下的C…...
智能学习平台系统设计与实现(代码+数据库+LW)
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装智能学习平台系统软件来发挥其高效地信息处理的作用&#…...
ASP .NET Core 学习(.NET9)配置接口访问路由
新创建的 ASP .NET Core Web API项目中Controller进行请求时,是在地址:端口/Controller名称进行访问的,这个时候Controller的默认路由配置如下 访问接口时,是通过请求方法(GET、Post、Put、Delete)进行接口区分的&…...
探索与创作:2024年CSDN平台上的成长与突破
文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN:编程新手的避风港初学者的福音:细致入微的知识讲解考试复习神器:技术总结的“救命指南”曾经的自己:为何迟迟不迈出写博客的第一步兴趣萌芽:从“读”到“想写”的初体验…...
[Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明
登录Qualcomm CreatePoing Qualcomm CreatePointhttps://createpoint.qti.qua...
【python_钉钉群发图片】
需求: **在钉钉群发图片,需要以图片的形式展示,如图所示:**但是目前影刀里面没有符合条件的指令 解决方法: 1、在钉钉开发者后台新建一个自建应用,发版,然后获取里面的appkey和appsecret&am…...
数据可视化:让数据讲故事的艺术
目录 1 前言2 数据可视化的基本概念2.1 可视化的核心目标2.2 传统可视化手段 3 数据可视化在知识图谱中的应用3.1 知识图谱的可视化需求3.2 知识图谱的可视化方法 4 数据可视化叙事:让数据讲故事4.1 叙事可视化的关键要素4.2 数据可视化叙事的实现方法 5 数据可视化…...
ElasticSearch下
DSL查询 叶子查询:在特定字段里查询特定值,属于简单查询,很少单独使用复合查询:以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理: 排序:按照1个或多个字段做排序分页…...
T-SQL语言的数据库交互
T-SQL语言的数据库交互 引言 随着信息技术的不断发展,数据库在各个行业中扮演着越来越重要的角色。数据库的有效管理和优化对于企业的数据安全、效率提升和决策支持至关重要。T-SQL(Transact-SQL)作为微软SQL Server的重要扩展语言…...
.Net 6.0 .Net7.0 .Net8.0 .Net9.0 使用 Serilog 按日志等级写入日志及 appsetting.json 配置方式实现
前言 最近使用最新版的Serilog记录日志时,发现以前有些关于Serilog的Nuget弃用了,最关键的是有些配置写法也改变,于是就整理了一下最新版的Serilog配置方式(appsetting.json)的使用 说明:我是用的.Net6,最新长期支持…...
[Qt]事件-鼠标事件、键盘事件、定时器事件、窗口改变事件、事件分发器与事件过滤器
目录 前言:Qt与操作系统的关系 一、Qt事件 1.事件介绍 2.事件的表现形式 常见的Qt事件: 常见的事件描述: 3.事件的处理方式 处理鼠标进入和离开事件案例 控件添加到对象树底层原理 二、鼠标事件 1.鼠标按下和释放事件(单击&#x…...
从零开始:Gitee 仓库创建与 Git 配置指南
引言 Git 是一款广泛使用的版本控制工具,它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee(码云)是国内知名的 Git 托管平台,它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…...
大文件上传的解决办法~文件切片、秒传、限制文件并发请求。。。
1、项目背景:针对大文件上传,如果将文件作为一个请求去发送给后端,会有以下几种问题,首先是上传时间长,用户不能进行其他操作,包括页面刷新等操作,其次有的接口会设置响应时间限制,可…...
如何在日常工作中使用AI
### 如何在日常工作中使用AI:提高效率与创造力 随着人工智能(AI)技术的不断发展,它已经成为我们日常工作的重要助手。无论是在准备演示文稿、进行知识搜索还是寻求技术支持方面,AI都能够提供有力的支持。本文将探讨如何…...
计算机网络 (47)应用进程跨越网络的通信
前言 计算机网络应用进程跨越网络的通信是一个复杂而关键的过程,它涉及多个层面和组件的协同工作。 一、通信概述 计算机网络中的通信,本质上是不同主机中的应用进程之间的数据交换。为了实现这种通信,需要借助网络协议栈中的各层协议&#x…...
医疗集群系统中基于超融合数据库架构的应用与前景探析
一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…...
2024年度推进可解释人工智能迈向类人智能讨论总结分享
目录 一、探索“可解释人工智能”:AI如何从“黑箱”走向“透明大师” 二、走进可解释人工智能:让AI的决策变得透明 (一)几种常见的特征导向方法 (二)像素级方法 1. 层次相关传播(LRP&#…...
【Unity】使用Canvas Group改变UI的透明度
目录 一、前言二、Canvas Group三、结合DOTween达到画面淡进的效果 一、前言 在平时开发中,可以通过控制材质、Color改变UI透明度,除此之外还可以CanvasGroup组件来控制透明度。 二、Canvas Group 官方文档链接👉👉 点击进入 …...
【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
小例Java结合Spring框架和MyBatis ORM来实现 ERP项目中实现读写分离
前记:大家带着挑剔的眼光,多多批判和指正!🙏 在ERP项目中实现读写分离,我们可以使用Java结合Spring框架和MyBatis ORM来实现。以下是一个简化的例子,展示了如何在ERP项目中配置和使用读写分离。 一、项目…...
.gitignore配置忽略out目录
文章目录 说明操作 说明 可以结合IDEA可视化操作git,只要不删除远程仓库,如果本地操作项目出现错误,可以直接修改远程仓库的.gitignore文件,并重新拉取项目到本地。 操作 在项目根目录下找到 .gitignore 文件,打开并…...
mac 安装mongodb
本文分享2种mac本地安装mongodb的方法,一种是通过homebrew安装,一种是通过tar包安装 homebrew安装 brew tap mongodb/brew brew upate brew install mongodb-community8.0tar包安装 安装mongodb 1.下载mongodb社区版的tar包 mongdb tar包下载地址 2…...
向harbor中上传镜像(向harbor上传image)
向 Harbor 中上传镜像通常分为以下几个步骤: 1、登录 Harbor 2、构建镜像 3、标记镜像 4、推送镜像到 Harbor 仓库 1、登录 Harbor 首先,确保你已经能够访问 Harbor,并且已经注册了账户。如果还没有 Harbor 账户,你需要先注册一…...
项目太大导致 git clone 失败
git克隆也分深浅,大项目clone可以先用浅克隆,只克隆源代码和最新的提交记录。 具体分两步: 1. 浅克隆 git clone https://github.com/google/mydemo.git --depth 1 只会克隆最新的一次提交,没有历史记录, 2. 拉取剩…...
开发神器之cursor
文章目录 cursor简介主要特点 下载cursor页面的简单介绍切换大模型指定ai学习的文件指定特定的代码喂给ai创建项目框架文件 cursor简介 Cursor 是一款专为开发者设计的智能代码编辑器,集成了先进的 AI 技术,旨在提升编程效率。以下是其主要特点和功能&a…...
Python爬虫学习前传 —— Python从安装到学会一站式服务
早上好啊,大佬们。我们的python基础内容的这一篇终于写好了,啪唧啪唧啪唧…… 说实话,这一篇确实写了很久,一方面是在忙其他几个专栏的内容,再加上生活学业上的事儿,确实精力有限,另一方面&…...
MySQL触发器:概念、作用
MySQL触发器:概念、作用与问题解决 在MySQL数据库管理系统中,触发器是一项强大且实用的功能。它为数据库的操作提供了一种自动化响应机制,在许多场景下极大地提升了数据管理的效率和数据的完整性。本文将深入探讨MySQL触发器是什么ÿ…...
ASP.NET Core 中基于 Cookie 的身份鉴权实现
在 ASP.NET Core 应用中,基于 Cookie 的身份鉴权是一种常见的身份验证方式,特别适用于传统的 Web 应用程序。Cookie 能够在用户的浏览器中存储身份验证数据,从而在用户访问应用的不同页面时保持登录状态。 一、配置 Cookie 身份验证 首先&a…...
从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…...
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录 模版 先序遍历 中序遍历 后序遍历 力扣原题 相同的二叉树 力扣原题 翻转二叉树 遍历树的层数 题目 静态变量 核心逻辑 模版 // 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {valuev;}} 先序遍历 …...
麒麟操作系统服务架构保姆级教程(十二)keepalived高可用
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 随着业务的扩大,服务器集群也越来越大,用户多了起来就要保证用户访问,服务绝对不能宕机,那么这个时候咱们除了做灾备以外,负载均衡服务器会…...
docker 部署confluence
1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042 4.编写do…...
【English-Book】Go in Action目录页翻译中文
第8页 内容 前言 xi 序言 xiii 致谢 xiv 关于本书 xvi 关于封面插图 xix 1 介绍 Go 1 1.1 用 Go 解决现代编程挑战 2 开发速度 3 • 并发 3 • Go 的类型系统 5 内存管理 7 1.2 你好,Go 7 介绍 Go 玩具 8 1.3 总结 8 2 Go 快速入门 9 2.1 程序架构 10 2.2 主包 …...
奉加微PHY6230兼容性:部分手机不兼容
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...
SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输
前言 大家好,我是雪荷。最近我在灵犀 BI 项目中引入了 SSE 技术,以保证图表的实时渲染,当图表渲染完毕服务端推送消息至浏览器端触发重新渲染。 什么是 SSE? SSE 全称为 Server-Send Events 意思是服务端推送事件。 SSE 相比于 …...
HJ3 明明的随机数(Java版)
一、试题地址 明明的随机数_牛客题霸_牛客网 二、试题内容 描述 对于明明生成的 nn 个 11 到 500500 之间的随机整数,你需要帮助他完成以下任务: 删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;然后…...
C++ 模拟真人鼠标轨迹算法 - 防止游戏检测
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Linux-----线程同步(条件变量)
目录 相关API restrict关键字 线程间条件切换函数 条件变量pthread_cond_t 案例 在前面的锁的基础上进一步提高线程同步效率,也就是两个线程只用锁去执行的话依然会存在资源竞争的情况,也就是抢锁,这里就需要在锁的这边加上限制…...
58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1
进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压,发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分,下面是PHP部分代码(HTML太长了,先放一…...
小汽车维修记录程序(PC版)
我需要一个小程序,记录我的小车保养相关的情况:时间,地点,某种零件,以什么价格被保养使用。这样我才能清楚的知道我的小车下一次保养,然后我可以有的放矢的去准备下一次的零件和时间,避免过度保…...
回顾2024年在CSDN的成长
文章目录 我与CSDN的初次邂逅初学阶段的阅读CSDN:编程新手的避风港初学者的福音:细致入微的知识讲解考试复习神器:技术总结的“救命指南”曾经的自己:为何迟迟不迈出写博客的第一步兴趣萌芽:从“读”到“想写”的初体验…...
AI编程工具使用技巧——通义灵码
活动介绍通义灵码1. 理解通义灵码的基本概念示例代码生成 2. 使用明确的描述示例代码生成 3. 巧妙使用注释示例代码生成 4. 注意迭代与反馈原始代码反馈后生成优化代码 5. 结合生成的代码进行调试示例测试代码 其他功能定期优化生成的代码合作与分享结合其他工具 总结 活动介绍…...
解读InnoDB数据库索引页与数据行的紧密关联
目录 一、快速走进索引页结构 (一)整体展示说明 (二)内容说明 File Header(文件头部) Page Header(页面头部) Infimum Supremum(最小记录和最大记录) …...
KubeSphere 与 Pig 微服务平台的整合与优化:全流程容器化部署实践
一、前言 近年来,为了满足越来越复杂的业务需求,我们从传统单体架构系统升级为微服务架构,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过 RPC 或者是 Rest 协议来进行通信,可以按照业务领域来划分成独立的单元。但是微服务系统相对…...
虚幻基础2:gameplay框架
能帮到你的话,就给个赞吧 😘 文章目录 ue框架:gameplay组成game modeactorcomponent player controllergame state 工作流程 ue框架:gameplay 组成 game mode 游戏类型和规则。可以控制游戏的开始与结束以及一些其他功能。 ac…...
在线base64转码工具
在线base64转码工具,无需登录,无需费用,用完就走。 官网地址: https://base64.openai2025.com 效果:...