在这里插入图片描述

在这里插入图片描述

手把手教你驯服Apache IoTDB,开启时序数据管理新征程!

本文是一篇幽默风趣的 Apache IoTDB 时序数据库安装使用教程。从 “这东西能不能吃” 的灵魂拷问切入,先科普 IoTDB 的 “真实身份”—— 一款专为时序数据设计的数据库利器,适用于物联网、工业监控等场景。接着手把手带读者搞定环境准备、单机部署(附 Linux 实操)、数据库连接等操作,用生活化比喻拆解数据写入、查询等核心操作,还贴心整理了端口冲突等 “踩坑指南”。哪怕是数据库小白,也能跟着本文轻松驯服这个 “时序猛兽”,开启高效管理时序数据的新技能!

一、Apache IoTDB 是什么?能吃吗?

loTDB

刚看到 “Apache IoTDB” 这个名字的时候,你是不是和我一样,心里犯嘀咕:这是个啥?能吃吗?咳咳,打住打住,它可不是什么美味佳肴,而是一款超厉害的时序数据库!简单来说,它就像是一个超级智能的仓库,专门用来存放那些和时间紧密相关的数据。

想象一下,你的家里有无数个传感器,时刻记录着温度、湿度、用电量等等信息。这些数据就像潮水一样涌来,普通的数据库应付起来可能会手忙脚乱,但 Apache IoTDB 却能轻松应对,将它们安排得明明白白。它具有高吞吐量读写、低硬件成本、丰富查询语义等特点,在物联网、能源电力、工业制造等领域都有广泛应用,比如智能工厂里设备运行状态的监测数据,电网中实时的电力数据等,都可以用它来高效管理。

二、前期准备:工欲善其事,必先利其器

(一)环境要求

在安装 Apache IoTDB 之前,咱们得先把环境这道 “门槛” 跨过去。首先,它对 Java 环境有要求,需要你安装 JDK 1.8 及以上版本 ,并且要把JAVA_HOME环境变量配置好。这就好比你要开车,得先给车加好油,配置环境变量就是在给 IoTDB “加油”,让它能顺利跑起来。如果你还没安装 JDK,别慌,去 Oracle 官网或者 OpenJDK 官网下载一个,安装过程就像给手机安装 APP 一样简单,一路 “下一步” 就行。

另外,IoTDB 运行时会打开很多文件和建立大量连接,所以最好把系统的最大文件打开数和最大连接数都设置为 65535。要是你用的是 Linux 系统,可以通过ulimit -n 65535命令设置最大文件打开数,用sysctl -w net.core.somaxconn=65535命令设置最大连接数。这一步可不能省,不然 IoTDB 跑起来可能会 “发脾气”,出现各种奇怪的问题。

(二)安装包获取

环境准备好了,接下来就是获取 IoTDB 的安装包啦。你可以前往 Apache IoTDB 的官方下载页面:https://iotdb.apache.org/Download/ 。

在这里插入图片描述

这里的安装包版本众多,就像进了一家糖果店,各种口味任你选。一般来说,建议选择最新的发行版本,新的版本往往修复了之前的一些小毛病,还可能增加了新的功能,就像手机系统更新一样,会带来更好的体验。

如果你是个追求稳定的人,也可以看看历史版本,说不定某个旧版本更符合你的 “胃口”。下载的时候,注意选择适合你系统的安装包,比如 Windows 系统就选 Windows 版本的,Linux 系统就选 Linux 版本的。下载完成后,就可以准备进入下一步的安装环节啦,是不是有点小期待呢?

三、安装过程:步步为营,轻松搞定

(一)单机部署(以 Linux 为例)

准备好环境和安装包后,就可以正式开始安装啦!这里我们以 Linux 系统为例,来一场和 Apache IoTDB 的 “安装之约”。

首先,把下载好的安装包解压 ,就像打开一个装满宝藏的盒子。假设你的安装包是apache-iotdb-1.3.2-all-bin.zip ,在终端输入解压命令:

unzip apache-iotdb-1.3.2-all-bin.zip

解压完成后,进入解压后的目录:

cd apache-iotdb-1.3.2-all-bin

接下来就是配置环节,这可是个关键步骤,就像给新房子布置家具一样,得根据自己的需求来。进入conf目录,里面有一堆配置文件,比如iotdb-common.properties(系统通用配置文件)、iotdb-confignode.properties(ConfigNode 配置文件)、iotdb-datanode.properties(DataNode 配置文件)等 。

一般情况下,单机部署使用默认配置就行,不过要是你想修改一些参数,也没问题。比如,你想修改 DataNode 对外提供服务的端口号(默认是 6667),就打开iotdb-datanode.properties文件 ,找到dn_rpc_address这一行 ,把后面的端口号改成你想要的,改完保存。
配置好后,就可以启动 IoTDB 啦!在apache-iotdb-1.3.2-all-bin目录下执行启动脚本:

bash sbin/start-standalone.sh

如果启动过程中没有报错,那就恭喜你,离成功又近了一步!你可以查看logs目录下的日志文件 ,确认 IoTDB 是否成功启动。要是看到类似 “IoTDB has started” 的信息,就说明它已经欢快地跑起来啦!

不过,安装过程中难免会遇到一些小麻烦。比如,启动时提示端口被占用,这时候你就得找出占用端口的程序,把它干掉或者换个端口。可以用lsof -i:端口号命令查看是哪个程序占用了端口,然后根据情况处理。要是遇到其他奇怪的错误,先别慌,去官方文档或者社区论坛找找答案,说不定有很多小伙伴都遇到过同样的问题,已经找到了解决办法呢。

(二)集群部署(简单介绍)

单机部署就像是一个人的小团队,而集群部署则是一个超级大团队。集群部署可以把多个节点组合在一起,提供更强的扩展性和高可用性,就像把多台电脑连接起来,一起工作,处理能力大大增强。在集群中,数据会分布在多个节点上,就算某个节点出了问题,其他节点还能继续工作,保证系统的稳定运行 。

集群部署的安装和配置比单机部署要复杂一些,涉及到多个节点的协调和配置。比如,要设置好各个节点之间的通信、数据同步等参数 。不过别担心,后续我会专门出一篇文章详细讲解集群部署的步骤和注意事项,感兴趣的小伙伴可以持续关注哦。现在,你只要知道有集群部署这回事,并且了解它的优势就行啦。

四、连接数据库:初次见面,请多关照

IoTDB 安装启动成功后,就可以尝试连接数据库了,就像是终于打通了和神秘仓库的通道,心里还有点小紧张呢。

(一)使用命令行连接

IoTDB 自带了命令行客户端工具 ,通过它可以很方便地连接到数据库。在安装目录的sbin文件夹下 ,有一个start-cli.sh(Linux 或 MacOS 系统)或start-cli.bat(Windows 系统)脚本 ,这就是启动命令行客户端的 “钥匙”。

假设你是在本机安装的 IoTDB,并且没有修改默认端口,那么在终端执行以下命令(以 Linux 系统为例):

bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

这里的-h指定服务器地址(127.0.0.1表示本机),-p指定端口号(默认是 6667),-u指定用户名,-pw指定密码 。IoTDB 默认的用户名和密码都是root ,就像一个简单的 “通关密码”,初次连接时可千万别输错了,不然就像拿着错误的钥匙,打不开数据库的大门哦。

如果一切顺利,你会看到 IoTDB 的命令行提示符,比如IoTDB> ,这就表示你已经成功连接到数据库啦,是不是很有成就感?

(二)使用客户端工具连接(以 DBeaver 为例)

除了命令行,我们还可以使用一些可视化的客户端工具来连接 IoTDB,这样操作起来更加直观,就像从文字版说明书升级到了图文版。这里以 DBeaver 为例,给大家介绍一下连接方法。

在这里插入图片描述

首先,打开 DBeaver 软件 ,点击菜单栏中的 “数据库” -> “新建连接” 。在弹出的 “新建数据库连接” 窗口中,找到 “IoTDB” 驱动(如果没有,需要手动添加驱动,下载对应的 IoTDB JDBC 驱动包,然后在 DBeaver 的驱动管理器中添加)。

接着,在连接设置页面,填写连接信息:

  1. 主机名 / 地址:填写 IoTDB 服务器的地址,要是在本机安装的,就填127.0.0.1
  2. 端口:填6667,这是 IoTDB 默认的 RPC 端口。
  3. 数据库:留空就行,因为 IoTDB 是通过存储组来管理数据的,不是传统意义上的数据库名称。
  4. 用户名和密码:还是root

填好后,点击 “测试连接” 按钮 ,要是显示 “连接成功”,就大功告成啦!之后点击 “完成”,就能在 DBeaver 中看到 IoTDB 的连接了,通过它可以方便地执行 SQL 语句、查看数据等操作,就像有了一个超级助手,帮你轻松管理数据库。

五、基本操作:小试牛刀,初尝甜头

成功连接到 IoTDB 数据库后,就像打开了一个装满宝藏的宝箱,接下来就可以对里面的数据进行各种操作啦,比如写入和查询,这就像是往宝箱里放东西和从宝箱里找东西一样。

(一)数据写入

在 IoTDB 中写入数据,可以使用 SQL 语句来完成。假设我们有一个智能设备,它会实时采集温度和湿度数据 ,设备的路径是root.device1 ,温度测点是temperature ,湿度测点是humidity 。现在要往数据库里写入一条数据,时间戳为1677721600000(对应 2023 年 3 月 1 日 00:00:00),温度是 25.5 摄氏度,湿度是 60%,SQL 语句如下:

INSERT INTO root.device1(timestamp,temperature,humidity) VALUES(1677721600000,25.5,60)

这条语句就像是给 IoTDB 下了一道指令,告诉它在root.device1这个设备下,在指定的时间戳记录下温度和湿度的值。你可以把 IoTDB 想象成一个超级秘书,只要你用正确的格式(SQL 语句)告诉它要记录什么,它就会乖乖地把数据记下来 。

如果要批量写入数据,也很简单。比如有 10 条数据要写入,只需要把VALUES后面的数据按照顺序罗列即可 ,就像给秘书一次性安排多项任务。例如:

INSERT INTO root.device1(timestamp,temperature,humidity) VALUES(1677721600000,25.5,60),(1677721660000,25.3,61),(1677721720000,25.7,59)......

这样就能一次性把多条数据快速写入 IoTDB ,大大提高了数据写入的效率,就像批量发送快递,比一个一个单独发送要快得多。

(二)数据查询

写入数据后,当然要查询出来看看啦。IoTDB 提供了丰富的查询语句,让你能轻松找到自己想要的数据。比如,我们想查询root.device1设备在 2023 年 3 月 1 日这一天的所有温度数据 ,可以使用如下 SQL 语句:

SELECT temperature FROM root.device1 WHERE time >= 1677721600000 AND time < 1677808000000

这里的time就是时间戳,通过>=<来限定时间范围 ,就像在一个大仓库里,通过时间这个 “坐标”,精准地找到我们需要的数据。这就好比你在图书馆找某一天出版的书籍,只要告诉管理员时间范围,管理员就能帮你找到相关的书籍,IoTDB 就是这个超级智能的 “管理员”。

如果你想查询root.device1设备的温度和湿度数据 ,并且按照时间倒序排列,只显示最新的 10 条数据 ,SQL 语句可以这样写:

SELECT temperature,humidity FROM root.device1 ORDER BY time DESC LIMIT 10

ORDER BY time DESC表示按照时间倒序排列 ,LIMIT 10表示只显示前 10 条数据 。这就像你在查看自己的购物记录时,想看看最近买的 10 件商品,通过这样的查询语句,IoTDB 就能快速把你想要的数据呈现出来 。

再比如,你想统计root.device1设备在一段时间内的平均温度和平均湿度 ,可以使用聚合函数:

SELECT AVG(temperature),AVG(humidity) FROM root.device1 WHERE time >= 1677721600000 AND time < 1677808000000

AVG函数就是用来计算平均值的 ,通过这样的查询,你就能快速得到设备在指定时间段内的平均温度和湿度情况,就像老师统计全班同学的平均成绩一样,IoTDB 能轻松完成这些统计任务。

六、常见问题及解决:打怪升级,一路向前

在安装和使用 Apache IoTDB 的过程中,就像玩游戏一样,难免会遇到一些 “小怪兽”,不过别担心,下面就给大家分享一些常见问题及解决方法,助你轻松 “打怪升级” 。

(一)端口冲突

问题现象:启动 IoTDB 时,报错提示某个端口被占用,比如常见的 6667 端口(默认的 RPC 端口) 。这就好比你要租一个房子,结果发现已经有人住进去了,IoTDB 也没办法在被占用的端口上启动服务。

解决办法:首先,找出占用端口的程序。在 Linux 系统下,可以使用lsof -i:端口号命令 ,比如lsof -i:6667 ,它会列出占用 6667 端口的程序信息。如果是 Windows 系统,可以在命令提示符中输入netstat -ano | findstr 端口号 ,比如netstat -ano | findstr 6667 ,会显示占用该端口的进程 ID(PID) 。知道是哪个程序占用端口后,如果这个程序是你不需要运行的,就可以直接结束它的进程。在 Linux 系统下,可以用kill -9 PID命令结束进程(PID是实际的进程 ID) ;在 Windows 系统下,可以打开任务管理器,在 “详细信息” 选项卡中找到对应的 PID,然后结束任务 。要是这个程序你还想用,那就只能给 IoTDB 换个端口啦。找到 IoTDB 的配置文件(比如iotdb-datanode.properties) ,修改对应的端口号,保存后重新启动 IoTDB,它就会在新的端口上运行啦 。

(二)Java 环境问题

问题现象:启动 IoTDB 时,提示找不到 Java 环境或者 Java 版本不兼容 。这就像汽车没有合适的发动机,IoTDB 没有正确的 Java 环境就无法正常启动。

解决办法:先检查JAVA_HOME环境变量是否配置正确 。在 Linux 系统下,可以编辑.bashrc或.bash_profile文件 ,确认JAVA_HOME变量指向了正确的 JDK 安装目录 ,并且PATH变量中包含了$JAVA_HOME/bin 。比如:

export JAVA_HOME=/usr/local/jdk1.8.0_361
export PATH=$JAVA_HOME/bin:$PATH

修改完后,执行source ~/.bashrc(或source ~/.bash_profile)使配置生效 。在 Windows 系统下,右键 “此电脑”,选择 “属性” -> “高级系统设置” -> “环境变量” ,在 “系统变量” 中检查JAVA_HOME和PATH变量是否正确配置 。如果 Java 版本不兼容,那就去下载符合要求的 JDK 版本 ,安装完成后重新配置JAVA_HOME环境变量 ,再尝试启动 IoTDB 。

(三)连接失败

问题现象:使用命令行客户端或可视化工具连接 IoTDB 时,提示连接失败 ,就像你拿着钥匙却打不开门,急得团团转。

解决办法:先检查 IoTDB 服务器是否已经成功启动 ,可以查看logs目录下的日志文件确认 。如果服务器已经启动,再检查连接信息是否正确,比如服务器地址、端口号、用户名和密码 。要是使用的是远程连接,还要确保服务器的防火墙没有阻止连接 。在 Linux 系统下,可以暂时关闭防火墙(systemctl stop firewalld) ,测试连接是否成功 ,如果成功,再重新配置防火墙规则,开放 IoTDB 使用的端口 。如果是使用 DBeaver 等可视化工具连接,还要检查驱动是否正确安装 ,可以尝试重新添加或更新驱动 。

(四)数据写入或查询异常

问题现象:在进行数据写入或查询操作时,出现语法错误或者查询结果不符合预期 ,就像你写了一篇作文,结果语法错误连篇,或者老师给的评语和你想的不一样。

解决办法:如果是语法错误,仔细检查 SQL 语句 ,IoTDB 的 SQL 语法和标准 SQL 有一些差异,比如时间戳的表示方式等 ,可以参考官方文档中的语法说明 。如果查询结果不符合预期,先检查查询条件是否正确 ,比如时间范围、设备路径等 。还可以尝试简化查询语句,逐步排查问题 。要是数据写入异常,检查数据格式是否符合 IoTDB 的要求 ,比如数据类型、时间戳格式等 。另外,也可以查看logs目录下的日志文件 ,里面可能会有详细的错误信息,帮助你定位问题 。

七、总结与展望:未来已来,携手共进

恭喜你,一路 “披荆斩棘”,完成了 Apache IoTDB 的安装与初步使用,是不是感觉自己离技术大神又近了一步呢?回顾一下,我们从认识这个神奇的时序数据库开始,就像打开了一扇通往新世界的大门 。接着准备好环境和安装包,一步步完成了单机部署,成功连接到数据库后,还进行了数据写入和查询的操作,是不是很有成就感呢?在这个过程中,虽然遇到了一些问题,但我们也都一一解决了,每一次解决问题都是一次成长,现在的你,已经掌握了 IoTDB 的基本使用方法,是不是可以小小地骄傲一下啦!

不过,IoTDB 的强大功能远不止这些,它就像一个神秘的宝藏库,还有很多高级特性等待你去挖掘 。比如,它的分布式存储和查询功能,可以让你轻松应对海量数据的处理;和大数据生态系统(如 Hadoop、Spark 等)的集成,能让你进行更复杂的数据分析 。后续我也会持续分享更多关于 IoTDB 的高级教程,记得关注哦!

在未来,随着物联网、工业互联网等领域的快速发展,时序数据的应用场景会越来越广泛 。Apache IoTDB 作为一款优秀的时序数据库,必将在这个数据的海洋中发挥重要作用 。希望大家能继续深入探索 IoTDB,用它来解决更多实际问题,让数据创造更大的价值 。说不定哪天,你用 IoTDB 做出的项目,就能改变世界呢!加油,未来的技术之星们!

了解博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92345.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92345.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92345.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剧本杀小程序系统开发:开启沉浸式推理社交新纪元

在数字化浪潮席卷的当下&#xff0c;传统娱乐方式正经历着前所未有的变革&#xff0c;剧本杀这一融合了推理、角色扮演与社交互动的热门游戏&#xff0c;也搭上了科技的快车&#xff0c;剧本杀小程序系统开发应运而生&#xff0c;为玩家们开启了一扇通往沉浸式推理社交新世界的…

Ubuntu系统VScode实现opencv(c++)视频的处理与保存

通过OpenCV等计算机视觉工具&#xff0c;开发者可以像处理静态图像一样对视频流逐帧分析&#xff1a;从简单的裁剪、旋转、色彩校正&#xff0c;到复杂的稳像、目标跟踪、超分辨率重建。而如何将处理后的高帧率、高动态范围数据高效压缩并封装为通用格式&#xff08;如MP4、AVI…

三坐标测量技术解析:从基础原理到斜孔测量难点突破

基础原理 三坐标测量仪&#xff08;Coordinate Measuring Machine&#xff0c;CMM&#xff09;这种集机械、电子、计算机技术于一体的三维测量设备&#xff0c;其核心技术原理在于&#xff1a;当接触式或非接触式测头接触感应到工件表面时&#xff0c;测量系统会瞬间记录三个坐…

【MySQL基础篇】:MySQL常用内置函数以及实用示例

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;MySQL篇–CSDN博客 文章目录内置函数一.日期函数二.字符串函数三.数学函数四.其他函数内置函…

Mirror学习笔记

Mirror官方案例操作 一、导入Mirror 在unity商城订阅Mirror https://assetstore.unity.com/packages/tools/network/mirror-129321 使用unity创建工程 &#xff08;推荐版本&#xff1a;目前建议使用 Unity 2020 或 2021 LTS 版本&#xff1b;超出这些版本的可能可以运行…

R4周打卡——Pytorch实现 LSTM火灾预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、准备工作 1.1导入数据 1.2数据集可视化 二、构建数据集 2.1数据集预处理 2.2设置X、Y 2.3检查数据集中有没有空值 2.4划分数据集 三、构建模型 3.1定义训…

【视觉识别】Ubuntu 22.04 上编译安装OPENCV 4.12.0 鲁班猫V5

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

基于vue的财务管理系统/基于php的财务管理系统

基于vue的财务管理系统/基于php的财务管理系统

机器学习技术在订单簿大单检测中的应用研究

订单簿数据的特点 订单簿&#xff08;Order Book&#xff09;是记录市场上所有未成交买卖订单的数据结构&#xff0c;通常包括价格、数量、买卖方向等信息。订单簿数据具有以下特点&#xff1a; 高频率&#xff1a;订单簿数据更新速度极快&#xff0c;通常以毫秒甚至微秒为单位…

Spring MVC框架中DispatcherServlet详解

1. DispatcherServlet概述1.1 什么是DispatcherServlet&#xff1f;DispatcherServlet是Spring MVC框架的核心组件&#xff0c;它本质上是一个Java Servlet&#xff0c;作为前端控制器(Front Controller)负责接收所有HTTP请求&#xff0c;并根据特定规则将请求分发到相应的处理…

DBA急救手册:拆解Oracle死锁图,ORA-00060错误秒级定位终极指南

关于“死锁图”&#xff08;Deadlock Graph&#xff09;的一点浅见 当 Oracle 检测到死锁时&#xff0c;检测到死锁的会话中的当前 SQL 将被取消&#xff0c;并执行“语句级回滚”&#xff0c;以释放资源并避免阻塞所有活动。 检测到死锁的会话仍然“存活”&#xff0c;并且事务…

C++中的默认函数学习

今天在学习QT别人的项目时看到有个函数在声明和调用时参数个数不一样&#xff0c;查了下是c中的一种函数类型&#xff0c;这个类型的函数可以让代码更简洁、灵活。定义&#xff1a;在函数声明时&#xff0c;给某些参数预先设定一个默认值。调用函数时&#xff0c;如果省略这些参…

HBase分片技术实现

HBase分片技术实现概述HBase是基于Hadoop的分布式、可扩展的NoSQL数据库&#xff0c;采用列族存储模型。HBase的分片机制通过Region自动分割和负载均衡实现水平扩展&#xff0c;支持PB级数据存储和高并发访问。HBase架构核心组件HMaster: 集群管理节点&#xff0c;负责Region分…

Python爬虫实战:研究awesome-python工具,构建技术资源采集系统

1. 引言 1.1 研究背景 Python 凭借语法简洁、生态丰富等特点,已成为全球最受欢迎的编程语言之一。截至 2024 年,PyPI(Python Package Index)上的第三方库数量已突破 45 万个,涵盖从基础工具到前沿技术的全领域需求。然而,海量资源也带来了 "信息过载" 问题 —…

【实时Linux实战系列】实时视频监控系统的开发

随着技术的不断发展&#xff0c;实时视频监控系统在安防、交通管理、工业自动化等领域得到了广泛应用。实时Linux系统因其高效的实时性和稳定性&#xff0c;成为开发高性能视频监控系统的理想选择。掌握基于实时Linux的视频监控系统开发技能&#xff0c;对于开发者来说不仅能够…

力扣-11.盛最多水的容器

题目链接 11.盛最多水的容器 class Solution {public int maxArea(int[] height) {int res 0;for (int i 0, j height.length - 1; i < j; ) {res Math.max(res, Math.min(height[i], height[j]) * (j - i));if (height[i] < height[j]) {i;} else {j--;}}return r…

大型音频语言模型论文总结

大型音频语言模型&#xff08;Large Audio Language Model, LALM&#xff09;是一类基于深度学习的智能系统&#xff0c;专门针对音频信号&#xff08;如语音、音乐、环境声等&#xff09;进行理解、生成、转换和推理。它借鉴了大型语言模型&#xff08;LLM&#xff09;的“预训…

如何解决网页视频课程进度条禁止拖动?

function skip() {let video document.getElementsByTagName(video)for (let i0; i<video.length; i) {video[i].currentTime video[i].duration} } setInterval(skip,6666)无法拖动视频进度。 使用F12启动调试模式。 function skip() {let video document.getElements…

基于deepSeek的流式数据自动化规则清洗案例【数据治理领域AI带来的改变】

随着AI大模型的大量普及&#xff0c;对于传统代码模式产生了不小的影响&#xff0c;特别是对于大数据领域&#xff0c;传统的规则引擎驱动的数据治理已经无法满足数据增长带来的治理需求。因此主动型治理手段逐渐成为主流&#xff0c;因此本文介绍一个基于deepSeek的流式数据自…

【论文分析】【Agent】SEW: Self-Evolving Agentic Workflows for Automated Code Generatio

1.论文信息标题&#xff1a;SEW: Self-Evolving Agentic Workflows for Automated Code Generatio&#xff1a;用于自动代码生成的自我进化的代理工作流程收录的会议/期刊&#xff1a;作者信息&#xff1a;arxiv&#xff1a;&#x1f517;github网站&#xff1a;&#x1f517;g…