什么是物联网 IoT 平台?
目录
物联网IoT平台的定义
物联网 IoT 平台发展历程
物联网IoT平台数据的特征
物联网IoT平台的处理流程
专为物联网 IoT 平台处理而生的时序数据库
物联网 IoT 平台时序数据处理面临的挑战及解决方案
收益与价值
物联网 IoT 平台企业案例
至数摇光 x TDengine
华自科技 x TDengine
睿信物联网平台 x TDengine
苍穹数码 x TDengine
参考文献
物联网IoT平台的定义
物联网IoT平台 是什么?物联网(Internet of Things,简称 IoT)是指通过互联网将各种物理设备、传感器、软件和网络连接起来,实现彼此之间的通信和数据交换的网络系统。物联网 IoT 平台的核心理念是将物理世界与数字世界相连接,通过智能化和自动化的方式,实现设备之间的互操作性和智能化管理。[1]
物联网 IoT 平台的基本原理是通过传感器、标签、RFID 等技术将物理设备与互联网连接起来,使其能够实时收集、传输和分析数据。这些数据可以包括设备的状态、位置、温度、湿度等各种信息。通过云计算和大数据分析,这些数据可以被处理和利用,以实现更高效、智能和自动化的应用。
物联网 IoT 平台的应用范围广泛,涵盖了各个行业和领域。例如,智能家居可以通过物联网技术将家庭中的各种设备和系统连接起来,实现智能化控制和管理;智能城市可以通过物联网技术实现交通、能源、环境等各个方面的智能化管理;工业物联网则可以实现工厂设备的远程监控和管理,提高生产效率和质量。
物联网 IoT 平台的发展带来了许多机遇和挑战。一方面,物联网 IoT 平台可以带来更高效、智能和便捷的生活和工作方式,改善人们的生活品质和提高生产效率。另一方面,物联网也面临着数据安全、隐私保护、设备兼容性等方面的挑战,需要制定合适的政策和标准来解决这些问题。
总的来说,物联网 IoT 平台是一个连接和互联各种物理设备和系统的网络系统,通过收集、传输和分析数据,实现智能化和自动化的应用。它具有广泛的应用前景,将对社会、经济和生活带来深远的影响。
物联网 IoT 平台发展历程
早期发展(1990 年代 - 2000 年代初):物联网 IoT 平台的概念最早于 1999 年被提出,但在这一阶段,技术和基础设施仍然相对薄弱。主要是一些技术先驱和研究机构开始探索和研究物联网的概念和技术。
技术推动(2000 年代中期 - 2010 年代初):这一阶段,物联网 IoT 平台的发展受益于无线通信技术的进步,特别是无线传感器网络和 RFID 技术的发展。这些技术的成熟使得物联网的应用开始扩大,包括智能家居、智能城市、智能交通等领域。
大规模应用(2010 年代中期至今):随着移动互联网技术的普及和云计算技术的成熟,物联网 IoT平台的发展进入了一个新的阶段。越来越多的物理设备和传感器被连接到互联网上,数据的收集和分析能力大大增强。物联网的应用场景也更加多样化,包括智能健康、智能农业、智能工业等领域。
未来发展(未来):物联网的发展仍在不断演进和创新。随着 5G 技术的普及和边缘计算技术的发展,物联网 IoT 平台将更加强大和智能化。预计物联网将与人工智能、大数据、区块链等技术相结合,进一步推动物联网的发展,并为社会、经济和生活带来更广泛的影响。
2021 年 7 月13日,中国互联网协会发布了《中国互联网发展报告(2021)》,物联网市场规模达1.7 万亿元,人工智能市场规模达 3031 亿元[2]。
2021 年 9 月,工信部等八部门印发《物联网新型基础设施建设三年行动计划(2021-2023年)》,明确到 2023 年底,在国内主要城市初步建成物联网新型基础设施,社会现代化治理、产业数字化转型和民生消费升级的基础更加稳固。[3]
物联网IoT平台数据的特征
物联网 IoT 平台领域各种类型的设备和传感器都会产生海量的时序数据,这些数据将占世界数据总量的 90% 以上。
时序数据的特点[4]:
- 时间戳:每个数据点都带有时间戳,这个时间戳对于数据的计算和分析十分重要。
- 结构化:与来自网络爬虫、微博、微信的海量数据不同,联网设备或监控系统生成的数据都是结构化的。这些数据都具有预定义的数据类型或固定长度,比如智能电表采集的电流、电压就可以用 4 字节的标准的浮点数来表示。
- 流式:数据源以近似恒定速率生成数据,如音频或视频流。这些数据流彼此独立。
- 流量平稳可预测:与电商平台或社交媒体网站的数据不同,时序数据的流量在一段时间内是稳定的,并且可以根据数据源的数量和采样周期来进行计算和预测。
- 不变性:时序数据一般都是 append-only,类似于日志数据,一般不容许而且也没有修改的必要。很少有场景,需要对采集的原始数据进行修改。
时序数据通常用于比较当前数据与历史数据、检测异常、生成实时警报以及预测未来趋势。时序数据解决方案一般考虑以下问题:
- 时序数据量通常很大,因此在执行存储、索引、查询、分析等操作时变得更加困难。
- 时序数据需要实时计算和分析,以便于实时检测异常并告警。 延迟可能会导致故障和业务影响。
- 通常需要关联来自不同传感器和其他源的数据,这使情况变得更复杂。
- 不管是原始数据查询、还是聚合数据查询,时序数据的查询一般都会带上查询时间范围,一方面是根据时间范围计算聚合时间窗口,另一方面是为了更高效的检索数据,提高查询效率,避免大量无效数据的扫描。
- 数据在一段时间内的变化趋势比单个数据点重要得多。例如,考虑到网络不可靠性或传感器读数异常,我们可能会在一段时间内的某个平均值超过阈值时设置警报,而不是在单个数据点上这样做。
TDengine 这类 时序数据库,是基于时序数据的特点以及应用的特点进行优化和设计的,专为解决上述问题而生。这类专业的数据库使时序数据的处理变得更加高效,性能也比通用数据库更好。
物联网IoT平台的处理流程
数据采集:
数据采集是物联网应用的基础层,一般是由各种传感器,识读器,读写器,摄像头,终端,GPS等智能模块和设备构成。而采集就是通过这些模块和设备来识别,读取和采集来完成信息获取,例如温度、湿度、压力、位置等信息。其中所运用的技术主要包括RFID技术、传感控制技术、短距离无线通信技术等。
数据传输:
传输层是物联网IoT平台设备实现连接的通道,承担连接终端设备、边缘、云端的职责,负责将感知层识别和采集的信息进一步传递,其中涉及到多种网络通信技术,通信技术可分为无线传输技术和有线传输技术,而根据实际应用发展情况,无线传输是主要发展趋势,因此物联网传输层主要关注点在无线传输技术。
数据存储:
数据存储是将采集到的数据保存在云端或本地服务器中,以备后续的数据分析和应用。存储可以采用关系型数据库、分布式数据库、对象存储等不同的技术方案。
数据处理:
当数据传输至服务器端或云计算平台后,接下来服务器或云计算平台就会对数据进行收集、记录、分析、处理、提取、再处理,存储、管理等,然后再将得出的结论数据,反馈给各个终端应用设备的过程。
数据分析:
在数据处理后,对数据进行分析和挖掘,探索数据中的模式、关联和趋势。这可以通过统计分析、机器学习、深度学习等技术实现,从而提取有价值的信息和洞察。
数据应用:
等到服务器或云计算平台得出数据结论后,就会将结论数据下传至各个终端应用设备,而终端应用设备则根据这些数据,来自动执行相应的指令和操作。最终以更快的速度,来智能和自动解决人们的需求,或实现其目的。
专为物联网 IoT 平台处理而生的时序数据库
随着物联网 IoT 平台和云的出现,时序数据的量开始以前所未有的方式呈指数级增长:
1. 连接设备和物联网的兴起,仪表、汽车、电梯、甚至自行车等设备都在源源不断地生成数据;
2. IT 基础设施在高速增长,物理服务器、虚拟机、容器、微服务等等都会生成海量时序数据。
庞大的时序数据集是关系数据库和 NoSQL 数据库面临的主要挑战,大体分为以下几个方面:
- 时序数据积累得非常快,每秒产生数百万条数据,通用数据库并不是为处理这种规模的数据而设计的。关系数据库在非常大的数据集上表现很差,NoSQL 数据库虽然解决了扩展能力,但是其通用的数据组织方式并不完全适用于对时序数据存储和查询需求,用户必须根据实际应用场景,进行特殊设计甚至大量数据冗余存储才能较好的利用资源处理请求。
- 随着数据量的增加,访问速度越来越慢。同时,大多数通用数据库为了提升查询性能,针对大量数据建立索引,由此消耗大量的系统资源。对于海量的时序数据,通用数据库无法高速加载并满足实时处理需求。
- 设备和应用在 7*24 小时不间断地生成数据——有时一天的数据量就超过 1 TB。关系数据库和 NoSQL 数据库没有针对时序数据的特点来压缩这些数据,因此,存储成本会变得很高。
上述问题主要是处理大数据集的效率问题,但通用数据库往往连时序数据应用的一些基本需求都无法支持:
- 数据生命周期管理:时序数据具有时效性,超过一定时长的数据通常不再具有价值,时序数据一旦老化,就需要对超过保存时长的数据进行批量删除处理,而不是针对单条数据的删除。
- Roll-up:用户定时聚合历史数据保存至新的数据表。原始数据和 rolled-up 的数据可能具有不同的生命周期和保留策略。
- 特殊的分析功能:除了一般数据库提供的功能外,数据库还要针对时序数据的处理进行扩展,提供累计求和、时间加权平均、移动平均、变化率等众多时序数据分析功能。
- 插值:时间序列分布会在一些时间线上,且序列会随着时间的增长往后发展。本质上是在一个固定的时间点记录数据,但如果要检查某个具体时间的设备采集的某个量,而传感器实际采集的时间不是这个时间点,这就要求数据库能够根据相邻的数据点和规则对数据进行插值。
- 连续查询:在时序应用的场景下,对于依照时间推进顺序写入的实时数据,用户有时会希望每隔一段固定时间,就能够按照一定的查询条件对该时间范围内的时序数据做一次计算(例如:对该时间范围内的数据求一次聚合计算),并将计算结果另行保存下来。因此,数据库需要提供连续查询(即一种简化的流计算能力),能够在时间窗口结束后对窗口内的数据进行计算。
- 窗口查询:时序数据常常需要根据采集时间对数据进行查询,本质上是在时间轴上划分出时间窗口,并对窗口内的数据进行聚合和查询计算。在实际生产应用中,业务场景要求的查询条件往往比这个更复杂,需要数据库能够按照不同规则、沿时间轴进行窗口划分,并对各个窗口内的时序数据分别进行聚合、选择计算等操作。
对于通用数据库,研发人员需要投入精力通过编写代码来实现这些功能。不同场景,不同数据量都需要不同的解决方案,极大增加了研发成本。因此,无论数据集的大小如何,使用专门构建的时序数据库都是最好的选择。
物联网 IoT 平台时序数据处理面临的挑战及解决方案
物联网存在海量的设备、传感器,时序数据处理的传统方案有如下问题:
- 数据入库慢:单机写入吞吐量低,很难满足时序数据上千万级的写入压力;
- 存储成本大:在对时序数据进行压缩时性能不佳,需占用大量机器资源;
- 维护成本高:单机系统,需要在上层人工进行分库分表,维护成本高;使用 Pi 等组件则对点位数有限制,随着点位增多需要更多的开销;
- 非云原生:不支持分布式,对部署的平台有限制,没有好的扩展性、韧性、可观测性,部分产品比如 Pi 有一定的;
- 查询性能差:海量实时数据的聚合分析性能差。
- 数据孤岛:边云协同能力差。
TDengine 作为一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB),针对物联网的数据特点及读写需求做了特定的优化,广泛运用于物联网各类场景中,并且提供基于数据订阅的数据同步工具 taosx 来支撑异地多活、边云协同。
收益与价值
高性能:可以支持百万级别的并发写入、万级的并发读取,大量聚合查询时依然有高性能表现
高可用:可支持集群部署,可横向扩展,不存在单点故障,为生产环境稳定运行提供基础
低成本:数据库对硬件资源要求低,数据压缩率高,平均至少节省70%的硬件资源
高度一体化:具备消息队列、流式计算和缓存的功能,大幅简化架构
易上手:使用 SQL 进行数据库操作,简单易学,支持复杂查询,减少开发难度和运维压力
自带边云协同组件:轻松跨隔离同步数据
物联网 IoT 平台企业案例
至数摇光 x TDengine
目前改造工作已经全部完成,改造后有大约 80% 左右的指标模型放到了 TDengine 中,20% 左右的主数据或维表数据存放在 MySQL 数据库中。相较于改造前的 80% 指标模型存放在 MySQL 中,20% 指标数据存放在 OpenTSDB 数据库中,结果刚好进行了颠倒,服务器资源使用情况也有所下降。应用整体的页面影响速度显著提高,数据模型及数据指标上也可以更加地灵活多变。[5]
业务背景
至数物联网平台场景多、数据模型复杂,改造前数据库采用 OpenTSDB + MySQL 结合的方式实现,由于 OpenTSDB 无法满足复杂查询场景,因此 80% 的场景指标只能基于 MySQL 数据库来实现,这样带来的问题就是 MySQL 数据库的数据增长迅速,需要定时做冷热数据分离及数据库表维护动作。在对 TDengine 进行充分调研后,至数摇光决定从 时序数据库 OpenTSDB 迁移到 TDengine,并基于 TDengine 的特性对系统进行彻底性的改造。
架构图
查看案例详情
华自科技 x TDengine
当前项目数据测点大概在 18 万左右,改造后数据存储周期由原来的 5 分钟减少到 1 秒钟,存储的数据维度更精细了,能为平台的智能诊断、智能分析服务提供更准确的数据支持,同时各业务场景下的计算查询性能也提升了不少,数据库服务器由原来的 6 台减少到目前的 3 个节点集群。[6]
业务背景
华自科技旗下的物联网数据平台是电站及泵站智慧运维平台的核心组成。在数据存储上,此前其采用 MySQL 分库分表方案来存储历史数据,使用 Redis 来存储实时数据,在测点数较少或者集控需求不是很多的场景下,基本满足需求,但随着平台业务的发展,接入的站点越来越多,运维难、开发难、成本高等问题逐渐凸显。为了解决这些问题,华自科技决定重新进行技术选型,寻找替代方案,升级目前数据库存储方案。结合平台实际需要,其调研了 InfluxDB、庚顿、麦杰、TimescaleDB、TDengine 这几款数据库产品,最终选择了 TDengine。
改造迁移
由于 TDengine 采用了类 SQL 的语法,支持 MyBatis 等 ORM 框架,因此老业务在代码层面的改动非常少,改动最多的就是将原来的 MySQL 函数结合应用代码的一些计算逻辑直接用 TDengine 的函数替换掉。在通过业务系统观察和验证各项功能正常之后,就可以进行历史数据的迁移了。由于 TDengine 的表结构与原来的 MySQL 存储结构基本类似,因此物联网数据平台开发人员直接采用 DataX 的 TDengine 插件,历史数据就很轻松地迁移过来了。
查看案例详情
睿信物联网平台 x TDengine
TDengine 的安装部署非常简单,配合 Docker 容器,在几分钟内就能完成。迁移到 TDengine 之后,我们的运营监控工作也变简单了,只需要对 TDengine 的几个进程进行监控,占用的磁盘空间减少到了原来的 1/5,使用的主机也减少到原来的 1/5,极大节省了资源开销。遇到技术难题,不仅可以直接在官方渠道 https://github.com/taosdata/TDengine 提 issue,也可以在 TDengine 的技术社区提问,TDengine 的技术专家响应非常快。[7]
业务背景
睿信物联网平台此前采用 OpenTSDB 进行时序数据的存储,功能上基本满足现有需求,但是由于 OpenTSDB 架构复杂,体量过重,给开发测试、安装部署以及运维管理等工作带来了不小的麻烦。随着业务的发展,问题逐渐凸显,开始影响工作效率,具体可以归纳为安装难、调试难、运维难、成本高四大问题。从业务发展的角度出发,睿信开发人员决定重新进行技术选型,寻找 OpenTSDB 的替代方案,分别对 InfluxDB、TimescaleDB 和 TDengine 三款时序数据库进行调研。
架构图
查看案例详情
苍穹数码 x TDengine
我们以近 10 年全省的雨量站小时雨量数据为测试数据,从常用的应用场景对 TimescaleDB 和 TDengine 两款数据库进行对比分析,历史数据批量入库场景中 TimescaleDB 用时 24 小时,TDengine 用时仅仅 2 小时;入库后数据文件大小对比结果中 TimescaleDB 是 38GB,TDengine 是 698MB;常见查询场景比对中 TDengine 也均优于 TimescaleDB。从入库、压缩比及查询 3 个维度来看,TDengine 都是完胜。[8]
业务背景
在地灾专业监测物联网平台项目中,首先需要解决的就是海量时序数据的存储和计算问题,其有着体量大、时间长,写入、查询要求高等特点,传统关系型数据库已经无法满足实时写入与高性能查询要求。该项目在 2018 年创建之初采用的是大型企业级数据库 Oracle,目前已经无法满足实时写入与高性能查询要求,特别是当雨季来临,传感器数据采集频率提高到秒级、毫秒级别,数据入库就会阻塞,效率非常低下。苍穹数码选择接入 TDengine 以解决海量时序数据的存储和计算问题。
架构图
查看案例详情
通过上面几个实践我们也能看到,时序数据积累得非常快,每秒产生数百万条数据,通用数据库并不是为处理这种规模的数据而设计的——关系数据库在非常大的数据集上表现很差,NoSQL 数据库虽然解决了扩展能力,但是其通用的数据组织方式并不完全适用于对时序数据存储和查询需求,用户必须根据实际应用场景,进行特殊设计甚至大量数据冗余存储才能较好的利用资源处理请求。
而在时序数据库(Time Series Database)的选择上,企业也要擦亮双眼,进行充分的调研测试,选择性能最好资源使用率最高的产品,此前我们基于第三方性能基准测试平台 TSBS 测试发布的 IoT 场景下 TDengine 3.0 性能对比分析报告,大家也可做参考。如果你正面临数据处理难题,欢迎添加小T微信(tdengine)寻求帮助。
参考文献
[1] 《物联网:概念,架构与关键技术研究综述》.严晨晨-《数码设计》
[2] 《中国互联网发展报告(2021)》.中国互联网协会
[3]《物联网新型基础设施建设三年行动计划(2021-2023年)》.工业和信息化部等部门印发
[4]《物联网、工业互联网大数据的特点》.陶建辉-物联网IoT平台、工业互联网大数据的特点 - TDengine | 涛思数据
[5]《从 OpenTSDB 到 TDengine,至数物联网平台技术改造之路》.李友龙-从 OpenTSDB 到 TDengine,至数物联网IoT平台技术改造之路 - TDengine | 涛思数据
[6]《服务器减少一半,TDengine 在华自科技的落地实践》.宁龙-服务器减少一半,TDengine 在华自科技的落地实践 - TDengine | 涛思数据
[7]《基于 TDengine 进行睿信物联网平台的迁移改造》.RisingStar-基于 TDengine 进行睿信物联网IoT平台的迁移改造 - TDengine | 涛思数据
[8]《助力地质灾害专业监测,他们选择将 Oracle 替换为 TDengine》.小牛-助力地质灾害专业监测,他们选择将 Oracle 替换为 TDengine - TDengine | 涛思数据
相关文章:
什么是物联网 IoT 平台?
目录 物联网IoT平台的定义 物联网 IoT 平台发展历程 物联网IoT平台数据的特征 物联网IoT平台的处理流程 专为物联网 IoT 平台处理而生的时序数据库 物联网 IoT 平台时序数据处理面临的挑战及解决方案 收益与价值 物联网 IoT 平台企业案例 至数摇光 x TDengine 华自科技…...
PostgREST:无需后端 快速构建RESTful API服务
在现代 Web 开发中,API 已成为连接前后端的核心桥梁,传统的做法是通过后端框架来构建API接口,然后由前后端人员进行联调。 PostgREST是基于无服务器的一种实现方案,允许开发者将PostgreSQL数据库直接暴露为RESTful API࿰…...
3天北京旅游规划
北京 第一天应该集中在故宫和市中心区域,比如天安门、人民广场。这样可以体验到北京的历史和政治文化。午餐推荐烤鸭,因为这可是北京的特色。下午可以安排南锣鼓巷,既有古色古香的胡同,又有丰富的美食选择。 第二天的话࿰…...
MySQL--day1--数据库概述
(以下内容全部来自上述课程) 概述 1. 为什么要用数据库 持久化:内存中的数据断电之后就不存在了,所以需要持久化–>需要相关介质。 其中的一个介质就是数据库:存储数据量大、存储数据类型多 2. 数据库与数据库…...
[思维模式-38]:看透事物的关系:什么是事物的关系?事物之间的关系的种类?什么是因果关系?如何通过数学的方式表达因果关系?
一、什么是事物的关系? 事物的关系是指不同事物之间存在的各种联系和相互作用,它反映了事物之间的相互依存、相互影响、相互制约等特性。以下从不同维度为你详细阐述: 1、关系的类型 因果关系 定义:一个事件(原因&a…...
图像识别与 OCR 应用实践
图像识别是一种让计算机具备“看”与“理解”图像能力的人工智能技术,其目标是从图像或视频中提取有意义的信息,如物体、人物、场景或文字。在现实生活中,这项技术被广泛应用于面部识别、自动驾驶、安防监控、医疗诊断、图像搜索等多个领域。…...
深入理解卷积神经网络:从基础原理到实战应用
在人工智能领域,卷积神经网络(Convolutional Neural Network,简称 CNN)凭借其强大的图像识别、处理能力,成为深度学习中不可或缺的技术。无论是自动驾驶汽车识别道路标志,还是医学影像分析辅助疾病诊断&…...
51单片机——交通指示灯控制器设计
设计目标 1、设计一交通灯控制,控制东西方向的红、黄、绿灯和南北方向的红、黄、绿灯。 2、可手动控制和自动控制,设置两个输入控制开关。 手动/自动开关,通过P11的按键输入控制 3、手动:设置开关P11,两种情况&#x…...
vue2 头像上传+裁剪组件封装
背景:最近在进行公司业务开发时,遇到了头像上传限制尺寸的需求,即限制为一寸证件照(宽295像素,高413像素)。 用到的第三方库: "vue-cropper": "^0.5.5" 完整组件代码&…...
面向对象设计模式之代理模式详解
文章目录 面向对象设计模式之代理模式详解面向对象思想:现代软件开发的基石代理模式:巧妙的中间层设计JavaScript 语法点与代理模式的结合JavaScript 实现代理模式示例代理模式的应用场景 面向对象设计模式之代理模式详解 在现代软件开发的浩瀚领域中&a…...
Leetcode209做题笔记
力扣209 题目分析:想象一个窗口遍历着这个数组,不断扩大右边界,让r。往窗口中添加数字: 此时我们找到了这个窗口,它的和满足了大于等于target的条件,题目让我求最短的,那么我们就尝试来缩短它&…...
SVG 知识详解:从入门到精通
SVG 知识详解:从入门到精通 作为一名前端开发者,我经常会被SVG的魅力所折服。这种基于XML的矢量图形格式,不仅能完美适配各种屏幕分辨率,还能通过CSS和JavaScript进行灵活控制。今天,就让我们一起来深入探索SVG的世界…...
编译openssl源码
openssl版本 1.1.1c windows 安装环境 perl 先安装perl,生成makefile需要 https://strawberryperl.com/releases.html nasm nasm 也是生成makefile需要 https://www.nasm.us/ 安装完perl输入一下nasm,看看能不能找到,找不到的话需要配…...
土壤温湿盐分传感器用于节水农业灌溉引领者三针设计原理便于安装维护
土壤温度部分是由精密铂电阻和高精度变送器两部分组成。变送器部分由电源模块、温度传感模块、变送模块、温度补偿模块及数据处理模块等组成,彻底解决铂电阻因自身特点导入的测量误差,变送器内有零漂电路和温度补偿电路,对使用环境有较高的适…...
Kotlin Compose 与传统 Android UI 开发对比
在移动应用开发领域,Android 开发一直是技术演进的前沿阵地,而 UI 开发作为用户与应用交互的核心环节,其技术体系的变革更是备受瞩目。 技术演进背景 Android UI 开发体系发展脉络 原生 View 体系阶段 在早期的 Android 开发中,原生 View 体系占据了主导地位。开发者通…...
docker-compose——安装redis
文章目录 一、编写docker-compose.yaml文件二、编写redis.conf文件三、启动docker-compose 一、编写docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…...
MFC 调用海康相机进行软触发
初始化相机类文件 #pragma once #include "MvCameraControl.h" class CMvCamera { public:CMvCamera();~CMvCamera();//初始化相机int InitCamera();int SaveCurrentImage(CString filePath);//关闭相机void CloseCamera();//设置int SetEnumValue(IN const char* s…...
第二章 变量和运算符
主要内容 关键字和标识符变量和常量八大基本数据类型Scanner键盘输入基本数据类型的类型转换算术运算符赋值运算符扩展赋值运算符比较运算符逻辑运算符三目运算符运算符的优先级别 学习目标 知识点要求关键字和标识符理解变量和常量掌握八大基本数据类型掌握Scanner键盘输入…...
【starrocks】StarRocks 常见 HTTP 操作与导入错误排查指南
文章目录 一、Stream Load:通过 HTTP 导入数据二、导入状态查询三、取消导入任务四、节点状态监控查看所有 Backend 状态:查看所有 Frontend 状态: 五、导入失败的排查方式1. 查询导入任务状态2. 下载详细错误日志3. 查看 FE/BE 节点日志FE 日…...
网络协议分析 实验七 FTP、HTTP、DHCP
文章目录 实验7.1 FTP协议练习二 使用浏览器登入FTP练习三 在窗口模式下,上传/下传数据文件实验7.2 HTTP(Hyper Text Transfer Protocol)练习二 页面提交练习三 访问比较复杂的主页实验7.3 DHCP(Dynamic Host Configuration Protocol) 实验7.1 FTP协议 dir LIST&…...
ET ProcessInnerSender类(实体) 分析
ProcessInnerSender 作用是进程内部发送Actor消息 字段 TIMEOUT_TIME 超时时间RpcId 用来累加requestCallback 存储RPC的回调事件list 用来获取MessageQueue中的Actor消息 方法 Awake 初始化在MessageQueue中注册待处理的消息队列Destroy 移除在MessageQueue中的消息队列U…...
远程连接工具
绿色轻便ToDesk https://www.todesk.com/download.html 向日葵 https://sunlogin.oray.com/download...
MySQL库级管理:数据库管理与存储引擎剖析
引言 各位数据库爱好者们好!今天我们要深入探讨MySQL数据库的基本操作,这是每位开发者必须掌握的"内功心法" 💪。无论你是刚接触MySQL的小白,还是需要复习基础的老手,这篇教程都将带你系统学习数据库的核心…...
MongoDB 的核心概念(文档、集合、数据库、BSON)是什么?
MongoDB 是一个面向文档的数据库,它的核心概念与传统的关系型数据库(RDBMS)有所不同。以下是它的四个主要核心概念: 文档 (Document) 定义: 文档是 MongoDB 中的基本数据单元。它类似于关系型数据库中的一行记录&#…...
占位符读取标准输入缓冲区规则
1、如果标准输入缓冲区中的前若干个字符都是空白字符,%s,%d,%f都能直接跳过并且从第一个非空白字符开始读取,但%c不能,而是直接读取。 2、%s遇到空白字符时停止,不会读取遇到的空白字符。 3、%d遇到非数字…...
使用Docker部署MongoDB
使用Docker部署MongoDB 使用Docker部署MongoDB是一种快速、便捷的方式,以下是详细步骤: 1. 基本部署 拉取MongoDB镜像 docker pull mongo:latest运行MongoDB容器(最简单方式) docker run --name mongodb -d -p 27017:27017 m…...
如何通过命令提示符(CMD)检查虚拟化是否已启用
想确认 Windows 11 或 10 电脑或笔记本上的虚拟化是否已启用,可以使用命令提示符或 PowerShell 中的 systeminfo 命令。之前已经介绍过使用图形界面的检查方法。在大多数现代系统中,虚拟化默认在 BIOS 中启用,但我们无需打开 BIOS/UEFI 固件菜单即可确认这一点。 虚拟化是一…...
【氮化镓】AlGaN合金中成分相关的辐射响应
2025年,美国宾夕法尼亚州立大学Miaomiao Jin等人基于分子动力学模拟方法,研究了AlGaN合金中成分依赖的辐射响应。研究结果表明,AlGaN合金的辐射损伤特性与铝含量密切相关:随铝含量增加,单次碰撞事件产生的缺陷减少,但由于累积效应,富铝系统更易形成扩展间隙缺陷簇,导致…...
『 测试 』软件测试全流程与Bug管理核心要点解析
文章目录 1 软件测试生命周期2 Bug2.1 Bug 的概念2.2 提出清晰的 Bug2.3 Bug 级别2.4 Bug 的生命周期2.5 作为测试人员与开发人员发生冲突怎么办 1 软件测试生命周期 软件测试贯穿于软件的整个生命周期; 需求分析 测试前需要对需求进行分析, 分析通常站在三个角度去考虑, 即用…...
【springcloud学习(dalston.sr1)】使用Feign实现接口调用(八)
该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一) (一)Feign的理解 前面文章【springcloud学习(dalston.sr1)】服务消费者通过restTemplat…...
嵌入式Linux Qt开发:2、Qt creator简单配置、Qt Designer使用以及信号槽机制使用
一、前言 Qt creator比较轻量,而且是Qt自带的IDE,基本可以开箱即用,个人使用起来感觉还是比较舒服的,并且其自带的FakeVim也可以做一些Vim的配置,其主界面可以简单配置显示很多的窗口,让开发更加顺畅。 Q…...
【Vue 3 + Vue Router 4】如何正确重置路由实例(resetRouter)——避免“VueRouter is not defined”错误
在使用 Vue 3 和 Vue Router 4 开发中大型 SPA 应用时,我们经常会遇到需要动态添加或删除路由的场景。尤其是在权限控制和用户登出后重置路由的需求中,正确地实现 resetRouter 非常关键。 然而,许多开发者在迁移或初始化项目时,会…...
企业内部通讯,企业级即时通讯软件选择
企业内部的沟通往往涉及大量敏感信息,如商业机密、财务数据、客户信息等。BeeWorks IM即时通讯平台采用全私有化部署,企业可以将服务器部署在自己的数据中心或私有云环境中,确保所有数据的存储和传输都在企业可控的网络内完成。这种部署方式从…...
300. 最长递增子序列
理解最长递增子序列(LIS)是解决该问题的关键。子序列是从给定数组中按顺序选取的元素序列,例如数组 [1, 2, 3, 4, 5] 的子序列可以是 [2, 3, 4]。需要注意的是,子序列的元素在原数组中不一定是连续的。因此,最长递增子…...
MongoDB入门
1.MongoDB 基本概念详解 2.MongoDB 快速实战 3.MongoDB 核心操作与原理详解 Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译 成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。Mongodb是一款非关系型数据库…...
MySQL基础原理
目录 一、MySQL架构 1、四层架构 2、MySQL运行机制 二、MySQL存储引擎 1、不同存储引擎对比 2、InnoDB存储结构 2.1 内存结构 2.2 磁盘结构 3、日志先行策略 3.1 核心思想 3.2 关键组件与流程 3.3 数据安全保证 3.3.1 崩溃恢复 3.3.2 持久性保障 一、MySQL架构 …...
Python刷题练习
文章目录 1.寻找相同字串2.密钥格式化3.五键键盘的输出4.单词重量5.输出指定字母在字符串的中的索引6.污染水域7.九宫格按键输入8.任务最优调度9.高效的任务规划 1.寻找相同字串 题目描述: 给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输…...
基于GPUGEEK 平台进行深度学习
一、平台简介 GPUGEEK 是一个专注于提供 GPU 算力租赁服务的平台,在人工智能与深度学习领域为用户搭建起便捷的算力桥梁。它整合了丰富多样的 GPU 资源,涵盖 RTX - 4090、RTX - 3090、A100 - PCIE 等多种型号,满足不同用户在模型训练、数据处…...
基于Matlab的非线性Newmark法用于计算结构动力响应
基于Matlab的非线性Newmark法用于计算结构动力响应,主要针对材料非线性或几何非线性问题。 1. Newmark法基本原理 Newmark法是一种隐式时间积分方法,通过预估-校正步骤更新位移、速度和加速度: 预测步: un1unΔtvn…...
Oracle — PL-SQL
介绍 Oracle PL/SQL是专为Oracle数据库设计的过程化编程语言,深度融合SQL语句与结构化编程逻辑,旨在高效处理复杂数据操作与业务规则。其核心特征为“块结构”,程序由声明、执行、异常处理三部分组成,支持模块化开发,显…...
第七节第二部分:接口的综合案例
案例分析 代码: Student类 package com.Interface_Demo;public class Student {private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name name;this.sex sex;this.scor…...
【AI古风美学渲染】:淡雅光影中的细腻呈现
“顶作AI”作为国内首个深度融合中文语义的生成式AI平台,以近百亿级参数的Lens跨模态模型为核心,开创了“自然语言即生产力”的创作模式。该平台突破传统工具对专业术语的依赖,用户仅需输入如“水墨风格的山间庭院,晨雾中若隐若现…...
JVM学习专题(二)内存模型深度剖析
目录 1.JVM结构体系 编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧: 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器: 3.方法区 4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…...
Prometheus 的介绍与部署(入门)
一、什么是Prometheus; 1.介绍 Prometheus 是一个功能强大的监控工具,适用于各种环境。通过简单的安装和配置,可以快速实现对系统和服务的监控。无论是单机环境、容器化环境还是 Kubernetes 集群,Prometheus 都能提供灵活…...
JavaSwing之-JDialog
JavaSwing之-JDialog JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。 与 JFrame 不同的是,JDia…...
配置Nginx解决http host头攻击漏洞【详细步骤】
前言 大概内容: 安全系统渗透测试出host头攻击漏洞,下面是解决步骤,本人已测过无问题。 server_name aaabbb.com; if ($http_Host !~* ^127.0.0.1|aaabbb.com|localhost$){return 403;}...
如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?
一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...
LeetCode 热题 100 35.搜索插入位置
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: Java代码: 题目: 题目描述: 题目链接: 35. 搜索插入位置 - 力扣&…...
电流检测放大器的优质选择XBLW-INA180/INA181
前言: 在当前复杂的国际贸易环境下,关税的增加使得电子元器件的采购成本不断攀升,电子制造企业面临着巨大的成本压力。为了有效应对这一挑战,实现国产化替代已成为众多企业降低生产成本、保障供应链稳定的关键战略。对此芯伯乐推出…...
序列化和反序列化:从理论到实践的全方位指南
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...