2022 IoTDB Summit:京东刘刚《Apache IoTDB 在京东万物互联场景中的应用》

news2025/1/12 6:09:26

12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态,企业如何与开源社区紧密配合,实现共赢。

我们邀请到京东科技 IoT 技术负责人刘刚参加此次大会,并做主题演讲——《Apache IoTDB 在京东万物互联场景中的应用》。以下为内容全文。

795f41100b748d880a6016f55be50c12.gif

目录

京东物联场景介绍

京东物联技术架构

时序数据和 Apache IoTDB

京东物联解决方案和应用

总结和展望

大家好,我是来自京东科技 IoT 团队的刘刚。今天给大家讲的这个主题是 《Apache IoTDB 在京东万物互联场景中的应用》。京东科技的话,主要是京东集团是对外去技术服务的主要单位,我也是京东科技 IoT 团队技术的负责人。今天讲的这个课题主要分五部分。

第一部分我们会简单介绍一下京东的物联场景,后面介绍一下在这个场景中,我们是用什么样的技术架构来解决这些问题的。那么这里面用到了时序数据库,并且应用了 Apache IoTDB。最后我们会介绍一下这块的解决方案和应用的成果。最后部分是总结和展望。

01

京东物联场景介绍

那我们开始第一部分,京东物联场景的介绍。京东做物联网最开始是从消费这个领域开始的,主要是在做数字家庭,主要是解决智能家居设备的连接和数据采集的问题。所以,京东积累到现在已经有亿级的设备连接量,在家居品类的跨品牌、跨品类的泛在互联上来讲,是属于行业领先的地位。

那么,后面京东也把这部分能力扩充到更多的领域,来服务外部的客户,包括城市的数字化建设、新的分布式的可再生能源以及工业互联的方向。京东也是今年有幸成为国家工业互联网双跨平台之一,也是希望借助京东的技术能力,为我们国家打造新型工业化作出自己的贡献。

1fcd99b8b313c13ba87e20086070c21f.png

简单来讲,京东的物联解决方案主要是在四个大的板块,每一块刚才介绍过:工业互联网,也是融合了京东的云、物联网还有大数据和AI区块链等先进的能力,把京东在整个产业链、供应链方面的优势赋能给行业。在能源双碳这个领域,主要也是基于现在整个分布式的可再生的能源,它由于新的趋势的发生,所以它在技术上来讲带来很多挑战,可能需要就是用基于数字化、云原生技术来重构数字化的底座。家居方向前面已经介绍过了。另外一块,也是结合京东在物流,包括金融方面的一些积累,我们也是在给仓库提供数字化的解决方案,从而来实现包括货物或者仓单的数字化,以及构建在这个上面的数字化的业务创新。这是京东整体的四个解决方案的方向。

88500f4e0b04b166530cbb4381a4ae31.png

那么,从场景上来讲的话,我们一般会认为物联网来讲,它是一个典型的“云、边、端“”的结构。那么从分层的角度来讲,我们会认为它里面有一个技术的层面,也就是建立这个 T-PaaS 层。那么在这个之上,这个 T-PaaS 是提供了一个通用的平台,那么对于业务平台层,可能它就会针对不同的解决方案的方向,或者业务的方向,来提供对应的业务平台的能力,然后在此基础之上,再构建相应的应用。那么从最底下来讲,就可以连接泛在互联,连接各种类型的互联设备或者智能设备。

ca492919973b336fe7eaae630f8529d4.png

02

京东物联技术架构

好,上面就介绍了我们整个主要解决的问题的范畴。下面我们会介绍一下技术的架构,包括在这里面可能用到的时序数据处理的一些情况。

京东的业务架构,刚才讲过了,它是基于京东自己十几年以来在整个领域里面的一些积累,不管是零售、物流或者是工业品的采购。那么基于这些积累,然后把这些能力通过云原生的技术,打造成了一个通用的平台层。这里面包含刚才前面提到的物联网的平台、大数据的平台、AI示范平台,包括区块链的平台以及经过验证过的一整套非常丰富的安全运维的机制,在上层的话支撑整个不同的业务。

b5d1192ac97a94d8932ad2808ec360b0.png

那么,京东的物联网平台,它有几个重要的特点。第一个就是前面讲的,从智能家居、数字家庭这个领域开始,京东在解决的就是一个泛在互联的问题,就是更多地怎么去打通这些设备数据连接的孤岛,把它们变成一个更大的连接的网络。所以在这方面,就是会去做一些模型化、通用化以及标准化的事情,这样尽可能的去更广泛的连接更多的设备和服务。这里面就会做很多设备的适配以及翻译。通俗来说,这里面会有一个普通话的层级,在底下会去翻译各种方言,对应用层来讲,它就可以实现非常统一的应用的接口。在这个基础之上,我们基于比较大的连接能力,也是不断的去优化单设备连接的成本。

连接规模刚刚已经讲过了。另外一块:视频,这个是最近不管是在安防或者安全,各种领域都有非常多的使用,所以这里面有一整套的物联视频计算的框架。这个是包含“云、边、端”一体的,尤其视频的数据量会比较大,所以很多会是在边缘上去做本地化的处理,所以这里面就会涉及到边缘的智能。这个计算搬到这个数据发生的地方,而不是把这个数据都统一弄到云上,去做成一个中心化的处理。边缘计算,包括基于视觉的边缘智能也是一个比较重要的方向和特点。

整体来讲,大家都在基于物联网的技术,去构建整个数字化的底座。那怎么能去更长期地降低这块的维护成本,包括各个客户能够自己去开发自己的业务,所以这里面就需要基于低代码或者无代码的技术来提供应用适能的能力。安全上来讲,一直是物联领域的、或者工业界的一个很重大的挑战,所以这里面一直是我们需要持续关注和打造的能力。

d67fd05938bf1ea18f2346e80c85e700.png

刚才讲了整个平台的几个主要的特点,这里面就是基于前面的内容,有一个更细化的、到组件级的架构图。前面讲过,这个里面会分技术平台层和业务平台层,来完成对整个场景解决方案的能力的支撑。

cea6bc3964d5f9e00beb6b6b43769318.png

边缘就是,这块刚才前面已经讲到过了,它会有很多设备。那么这里面为了能够在本地实现数据的处理和自治,它需要有一些事件的总线和数据的总线,这样保证在本地化的设备尽可能地能实现即插即用。大部分的数据处理尽可能地在本地完成,只有一些高度聚合的、或者结构化的数据,它才会去往更中心化的云上的节点去传播。

a54ccbff59272e7678a87b335cf6dd76.png

基于以上的这个技术架构,我们在每个领域里面都有去解决这个问题。比如说像智能家居或者数字家庭,这里面就会进一步把屋内和屋外的设备都连通起来,可以去采集很多智能化的设备每时每刻的状态和属性,实现在场景里面的互联互通,从而可以构建一些设备之间的联动,或者场景这里面有一些任务,或者有一些引擎,这样可以达到更加智能化的效果。

7b26428a06413da0dfac8e37d9173fd6.png

数字仓库主要解决的问题是把整个仓库的底层,包括货物,还有就是人车的进出都进行数字化,这样可以实现对整个仓储有一个非常好的实时的感知,并且借助区块链的技术,它可以跟上下游,不管是物流、运输还有贸易、交易整个这些环节全打通,这样可以提供一个可信的数字化交易的基础。那么在这个基础之上,也是服务了很多的客户。这个方向也是大家最近发展比较快或者密切关注的领域。

3d6358fd88c4d3a53283a28c8c1051b8.png

碳计量这个相对来讲,解决方案比较新一点。整个国家或者世界的趋势是,我们在关注怎么去有更可持续的发展能力,国家也提出来了“双碳”的战略。这种情况下怎么去比较好的去计量每个企业的生产过程,不管是范围一、范围二还是范围三,这个过程中间到底做了多少碳排放,对这些能耗或者碳排放到底怎么来去感知,并且经过不同的可再生的能源的使用,怎么去做好最好的算法的调度和测量,这些都是基于物联网的底层的技术来去完成这一整套的能力,所以这里面也是会涉及到很多时序数据的采集。

7c68a6af757245268f956a39023ca4cd.png

03

时序数据和 Apache IoTDB

以上,介绍了京东的整个解决的问题的领域,以及技术的架构,那么下面我们就在这里面,对时序数据的使用以及我们应用 Apache IoTDB 的一些经验做一些技术上的分享。

那么,从前面大家已经看到很多这个领域的问题,我们总结这里面对于物联的时序数据的话,它有几个基本的特征。那么最重要的,包括在技术上大家都是知道,它是写多读少,不同于以前,我们在很多领域都用关系型数据库来处理,那些场景都是写少读多的。那么写多读少,这是时序数据的一个很重要的特征。

那么从整个时序数据在物联领域的应用来看的话,它还有另外的几个特征,比如说它的采集源是相对单一稳定的,也就是说我们一般固定的是从一个传感器上,从这个设备上去感知它的这个数据,它会产生连续的时序数据,那么这个采集源的单一稳定就给我们在技术上来讲,去给它做优化奠定了很好的前提和基础。

另外一块的话,时序数据的采集规模一般非常大,取决于我们的采集频率,以及业务上或者从应用上来讲,对这个时序数据感知的颗粒度的需要。所以它不管怎么样,这里面都会产生巨大的数据规模,一般来讲这个可能是我们以前连接人产生的数据规模的好几个数量级。

为了要达到应用的效果,在业务层产生价值,所以它很多时候是要做实时的聚合的,所以这里面不光只是说新产生的数据,还要结合历史的数据,跟实时数据进行聚合。这里面从最开始最源头,采集源采集的数据,它结构化或者语义相对会比较弱,所以它在不断的过程中间,还需要进行聚合其他源的数据,来产生更强的语义,能产生可感知或者可解读的,包括最后智能化的,它可以用于可调控的,那它就需要达到更高的语义。所以这里面需要做到很多聚合,那么在时间效率上来讲的话,它需要很高的实时性。

前面讲了另外一个特点,大家能看到,不管是数字家庭、数字能源工业还是数字仓库、数字城市的领域,现在一个很大的趋势就是,我们不是搬数据,而是把计算搬到数据源产生的地方去,尽可能的在本地发生计算。在本地做完计算,某种意义上来讲、趋势上来讲,它会需要实现某种本地的自治,这样就会对时序数据的处理有一些新的要求。

3d4d84db69759d6d0919742839a9b946.png

那么,从上面的五个大的特征,我们也总结了时序数据处理的几个大的目标。因为它是写多读少的,所以它就需要有一个非常高并发、高吞吐的写入;数据规模比较大,那就是说我们在技术上来讲,需要有一些更低成本、更高效的处理;其他还有一些特点,比如说它要做实时的,那就是说,我们原则上来讲尽量需要去做流式的处理,然后不要把数据不必要的搬来搬去;它需要做实时的聚合查询;那么整个这一套,它如果需要去做到比较大范围的应用的话,它需要是一个分布式高可用的系统

以上就是时序数据库,它在处理解决我们前面讲的一些常见的物联场景或者解决方案里面,它需要具备的基本的能力。

09007afae55a5125514109a43087eded.png

我们看一下在这几个角度来讲,按照典型的云边端的,前面讲过的架构,它在每个环节上其实来讲都是会有非常重要的挑战,但都有各自的不同。那么从端上来讲的话,它是因为要部署在终端上,那么某种意义上来讲,这个地方应该是需要更低结构化,那么就会更灵活,所以这样它可以实现可插拔式的接入。所以这里面它应该尽可能是弱 Schema 的,这样它可以解决采集端的异构的复杂度。这里面可能有不同的设备类型,不同的通信方式,有线的或者无线的,不同的连接协议,尤其现在已有的工业协议多达几百种之多。

那么在边上,它可能就会需要具备一定的处理能力,而不仅仅简单只是做一个存储或者转发。所以它需要有边缘计算的框架,通过去中心化的分布式的架构,来实现比较方便便捷的远程的运维。那么安全性上来讲,也是会有比较大的挑战。它不像以前集中式的数据处理,它整个是得到比较好的完整的保护的,这种是分散式的,去中心化的,那怎么去保证整个数据或者隐私的安全,这是一个非常重要的挑战。

在云端的话,更重要的是说,这里面要去做更强的结构化的理解。现在大家不管是说数据仓库、数据库还是库仓一体,那它是需要提供一个统一的数据的应用的接口,给到云上更丰富的应用能力,这里面包含了存量数据的融合、语义的增强、以及怎么去更友好的给算法来提供原料。这里面就介绍了整个时序数据处理的挑战。

3e63a73cbb0f417af4998f68216d49a3.png

在物联平台里面,时序数据来讲,它其实给物联平台提供了最核心的实时感知的能力,那么它主要处理的数据都是时序的数据。那物联平台这里面可能更多的,它会存储设备级的很多,从某种意义上来讲可以叫它元数据,或者设备模型的数据。并且也需要通过这个数据平台,再去聚合更多的一些数据源,这样做到更强的语义和更结构化的理解。所以这是时序数据在整个工业互联里面的一些核心重要的作用。

e417df8811e6fc49fe57736b482e9638.png

那么,为什么京东对整个 Apache IoTDB 非常关注,也愿意在自己的一些应用场景里面去使用?这个跟 Apache IoTDB 的很重要的一些特点是密切相关的。

那么最重要的一点就是 Apache IoTDB 是一个很开放的系统架构,这样比较容易去使用,它能支持海量的数据存储。刚才讲到了,在 Apache IoTDB 底层是用了 TsFile,这是一个非常低 Schema 的,或者你可以认为比较容易在端侧实现即插即用的效果的。Apache IoTDB 正如它的名字所言,它是为物联网去做的,有专属的模型,所以它比较能支持像这种树状的结构,有单节点就能管理百万的设备或者千万条的时间序列,所以它这样会更灵活。

那么因为它底层是基于文件的,所以在边上的话它是可以跑一个小型版 standalone 的版本,这样可以实现自治。那么不管是端跟边,或者边跟云这边数据的同步,如果基于文件这种数据格式的话,基本上来讲这个数据同步的逻辑也会相对比较简单

另外一块,Apache IoTDB 在数据处理上有很高的压缩比,主要是在写入性能上去做优化,包括通过高效的设计存储的引擎,用 LSM-Tree 来实现这一点。在查询上也做了类似的优化,可以保证整个在做聚合,包括一些物联网场景常需要的一些降采样有特殊的支持。这样保证了有很好的写入能力的同时,也会有不错的按照适用的查询的能力

另外一块 Apache 整个生态是比较丰富的,IoTDB 在这方面跟 Apache 的其他的很多相关的一些系统,比如像 Flink、Spark,还有其他的一些数据监控的一些系统, Grafana 这些,都有很好的集成,所以能极大地拓展整个方案的丰富性

以上都是 Apache IoTDB 的,它就是专门为物联网这个场景打造的一个时序数据的数据库

b4df27278de96e6c6d4ad44d9529320b.png

04

京东物联解决方案和应用

第四部分,给大家介绍一下我们基于这些思考,包括应用的一些成果。

那么首先来看数字能源的领域,数字能源领域的话,它主要处理的设备,刚才前面讲过了,它都是分散式的。那么现在比如说,分布式的光伏以及风机,那么它很多都是在,比如像乡村的光伏都是在乡村居民的屋顶上的,对于城市里面,园区屋顶上或者一些建筑屋顶上,它要铺这个光或者小型的风机或者其他的储能设备,那这些都是分散在各处的。甚至包括一些用能设备,比如说充电桩这些,或者一些电池,这些都是分散在各处的。

所以这里面就需要通过边缘的一些节点,在这里面实现对这些数据的采集。这里面很多都是一些时序的数据,比如说裂变器、发电的情况,像它目前的实际的一些工作的运营状况,那么这些数据都是需要做到实时化的采集。同时在边缘侧,也是需要去完成、做一些聚合的计算,这样方便有可能在源和储做一些本地化的调度和策略,来实现本地电循环或者能量循环的平衡。这是在数字能源里面应用的案例。

dcfadc078e8e65ba5a7ef617f69949b3.png

那么在数字仓库里面,这里面也是需要做到实时的感知。以前面对仓储在没有数字化之前,大家如果要去做大宗商品的质押贷款,或者把它证券化的话,是需要派人去仓库里面巡查。有了数字化的技术之后,它就可以做到实时 24 小时的,随便的去调取。并且可以在边缘上去跑一些算法,这样可以对一些异常情况去报警,或者进行监控。那么通过把这个时序数据和更多的数据打通,形成一个长的数字链,那在这块造假的成本很高,使得在这个基础之上,基于一些数字化的舱单进行数字化的交易就有了依据,也能开展更丰富的数字化的业务

4f814700d96614bd31956ef5299457cc.png

水电气场景的话,这个大家比较容易理解,就是家里面都会有水表、电表、气表,这个就是一个典型的时序的数据。那么经常可能会需要做到一些水电气使用量的统计,然后这里面要去做一些聚合,包括它要跟其他的设备产生联动,这里面有一些丰富的应用场景。这里面也是会需要去根据不同的级别,去用存储的技术,给它进行分级的管理

这些就介绍了我们在实际中,应用时序数据来解决刚才前面介绍的几个大的核心的方面,不管是数字家庭、数字城市、工业互联网还是数字的能源这些地方的一些应用成果。

7720c66c10cea0f3d64f1097fcea4ee2.png

05

总结和展望

那么最后,我们也就这些做一些总结和展望。

从长期来看的话,时序数据库只是一个早期,那么不管是国内还是国外,其实这方面都发展非常快,Apache IoTDB 可以算这里面的佼佼者。那么从更长期来看的话,这里面还有很多问题是待解决的。我们认为未来作为一个时序数据库,要发展得比较好的话,那它需要具备的几个特点。

第一个肯定是云原生,因为前面讲过了,我们需要做到分布式的高可用。云原生已经是大家在其他数字化领域里面使用过的、验证的,它的整个弹性能力是比较好的,可以实现非常高效的部署和运维,从长期来讲降低大家使用的数字化的成本,所以这是第一条。

另外一条就是,时序数据肯定也需要跟关系型的数据库,因为它要产生更丰富的应用的价值,不仅仅只是单纯的对物理世界、物理量的感知,它需要更结构化的一些理解,那它就需要跟关系型数据库或者 key-value 的数据库,要做一些深度的融合,可能会要用到现在大家经常谈到的隐私计算、联邦学习一些框架。这样来保障形成一个相对统一的数据化的能力,能给更上层的应用提供标准化的接口。这是第二点,讲的是多源融合

第三条的话,我们对整个处理的时效性要求是非常高的,所以它就要做到尽可能的实时的、流式的处理。这个过程中间,从技术上来讲还能极大地减少读写放大的因子,从而能更高效的、更经济的来为上层数字化的应用来提供服务。

分布式高可用刚才我们讲了,不管在工业的应用领域,还是其他一些领域,这些数据都是需要具备很好的可靠性和高可用性。这样来保障我们基于上层应用的决策的基础,它不能出现数据质量的问题或者掉链子。

大家在目前的整体发展,不管是数字化的系统,或者数据库,可观测性都是大家很密切关注的一个点。这也是在之前,我们整体国内的一些软件做的相对来讲,还不够完善的地方。在这个方面,我相信未来这里面还有很长的路可以走,那么怎么去更好的感知这个软件本身,那也是一个基本的能力。

所以,在这个基础之上,基于这几点思考,我们京东在这方面就是有一个相对自有的看法,就是说我们期望把整个数据处理的四个环节:采集、存储、计算和算法应用,这几个希望一体化来考量。这样就是以应用价值为牵引,避免做不必要的投入或者建设,能极大地降低这块的成本,从而提升、加快我们在上层做数字化应用的创新的节奏。

3330c202e082aba88a2c3e8caae8cf8b.png

这里面就是再强调一下前面讲的可观测性,比如可能怎么去更好的对这个时序数据进行管理,不管是用户权限、对它分组、或者它任务的管理、多级的数据管理,以及做到更可视化的、更傻瓜式的运维,能知道它系统每个重要的状况的信息,并且有一些指标的统计。那么,在遇到一些问题的时候,想知道整个数据链路血脉的质量的时候,或者要去解决一些数据的问题的时候,它也要有一个非常强大的分析追踪的引擎,能够快速的去定位解决问题,降低长期运维维护的成本。

所以,如果谈到经济性的话,目前因为对于时序数据库来讲,它更多的是写多读少,从应用层来讲基本主要是去读取,所以我们如果讨论把采、存、算、用一体化的话,那么更多的就会去看它单位读取的经济的效果。那么我们就会以应用的角度来讲,倒过来去看这地方应该怎么来去优化它的采集的技术、怎么去优化它存储的技术、怎么去优化它计算的技术,并且这里面去做一些实时的聚合,并且去做尽可能流式的处理,就是前面讲到的,极大地降低这里面读写放大的因素。相应这样做下来,我们能把物联时序数据的应用更快的推到一个更高速发展、更快速发展的一个节奏上去。

所以,以上就介绍了整个京东解决的一些方案,包括在这些方案里面技术的架构,以及我们是如何看待时序数据库的,以及应用 Apache IoTDB 在一些解决的应用的效果和成果。最后也给大家讲了整个我们对未来时序数据库的展望。这次的整体的分享就到这里,谢谢大家。

32905302e0eee5c186db02b66c24ad87.png

可加欧欧获取大会相关PPT

微信号:apache_iotdb

9ba316d3306254381f39d69b20ad13c6.gif

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JavaSpringMvc+mybatis实现学生信息管理系统

基于JavaSpringMvcmybatis实现学生信息管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

IOS Theos Tweak 之 HelloWorld

一、目标 Theos是什么? 是一套跨平台的开发工具套件,不仅可以开发Ios,Mac、Windows和Linux也可以的哦,开源免费。 Tweak是什么? 可以理解成动态链接库,有搞过Windows下dll注入的同学应该可以秒懂了。Android的同学…

JavaWeb——redis_1/6

链接: day23_redis_代码&资料 提取码:ijyg 今日内容redis——数据库软件1. 概念2. 下载安装3. 命令操作1. redis的数据结构2. 字符串类型 string3. 哈希类型 hash4. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部&#xff0…

硬件工程师成长之路(0)----认识元件

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录前言1、电阻①、贴片电阻②、金属膜电阻③、水泥电阻④、制动电阻⑤、电位器⑥、压敏电阻⑦、热敏电阻⑧、光敏电阻⑨、…

奇舞周刊478期:算法工程师深度解构 ChatGPT 技术

记得点击文章末尾的“ 阅读原文 ”查看哟~下面先一起看下本期周刊 摘要 吧~奇舞推荐■ ■ ■算法工程师深度解构 ChatGPT 技术本文用专业视野带你由浅入深了解 ChatGPT 技术全貌。它经历了什么训练过程?成功关键技术是什么?将如何带动行业的变革&#xf…

Spark学习(8)-SparkSQL的运行流程,Spark On Hive

1. SparkSQL的运行流程 1.1 SparkRDD的执行流程回顾 1.2 SparkSQL的自动优化 RDD的运行会完全按照开发者的代码执行, 如果开发者水平有限,RDD的执行效率也会受到影响。而SparkSQL会对写完的代码,执行“自动优化”, 以提升代码运…

In-Context Learning玩法大全

卷友们好,我是rumor。虽然ChatGPT在大众眼里的热度可能已经过去了,但它prompt出了我的焦虑,于是最近一直在补大模型相关的工作。比起小模型,大模型有一个很重要的涌现能力(Emergent ability)就是In-Context…

CORS 跨域资源共享 与 JSONP

CORS 1、接口的跨域问题 我们使用express编写的 GET 和 POST接口,存在一个很严重的问题:不支持跨域请求。 解决接口跨域问题的方案主要有两种: CORS(主流的解决方案,推荐使用)JSONP(有缺陷的…

excel查重技巧:如何用组合函数快速统计重复数据(下)

数据源照旧,如下图所示,要求统计出不重复的客户数:在上期我们掌握了破解公式的方法后,今天我们再来看看计算不重复数据个数的第二个公式套路。套路2:COUNT和MATCH的组合这个公式的难度就稍微有点大了,一起看…

Word控件Spire.Doc 【Table】教程(3):如何在C#、VB.NET中设置Word表格样式

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

聊聊帮助别人这件事--爱摸鱼的美工(12)

年近了,上班途中依然匆忙 看女孩子们渐渐开始倒腾 做了新发型,做了美美的指甲 换上了新衣服,买了新包 电话里讨论着 去哪里过年,买什么年货 好像以前的我也这样 今年挣得少了,不想添新衣(不能) …

基于QWidget和QImage的水印添加实现

目录 1. 基于QWidget的屏幕阅读水印的添加 1.1 平铺 1.1.1 核心代码 1.1.2 构造函数中设置透明度和鼠标穿透 1.1.3 调用 1.1.4 效果展示 1.2 指定位置添加水印 1.2.1 核心代码 1.2.2 设置水印透明度和鼠标穿透 1.2.3 调用 1.2.4 效果展示 2、基于QImage的屏幕水印的…

QT 学习笔记(十四)

文章目录一、TCP/IP 通信过程简介1. Socket 通信2. Linux 下的 TCP/IP 通信过程3. QT 下的 TCP/IP 通信过程3.1 在 QT 中实现 TCP/IP 服务器端通信的流程3.2 客户端通信流程二、TCP/IP 通信过程操作实现1. 服务器端2. 客户端三、服务器端和客户端实现代码1. 主函数 main.c2. 服…

重装系统重新分区方法教程

对电脑进行系统重装以后,若是想电脑使用起来更稳定舒适,就要对电脑硬盘进行系统分区,但是许多用户都不知道怎样分区,今天小编就来为大家详细介绍一下重装系统重新分区方法教程。 工具/原料: 系统版本:win1…

11 个非常实用的 Python 和 Shell 拿来就用脚本实例!

我工作中用到的几个脚本,主要分为:Python和Shell两个部分。 Python 脚本部分实例:企业微信告警、FTP 客户端、SSH 客户端、Saltstack 客户端、vCenter 客户端、获取域名 ssl 证书过期时间、发送今天的天气预报以及未来的天气趋势图&#xff…

Verilog语法笔记(夏宇闻第三版)-赋值语句和块语句

目录 赋值语句: (1).非阻塞(Non_Blocking)赋值方式( 如 b < a; ): (2).阻塞(Blocking)赋值方式( 如 b a; ): 例&#xff1a; 块语句&#xff1a; 顺序块&#xff1a; 例&#xff1a; 并行块&#xff1a; 例&#xff1a; ​编辑 块名&#xff1a; 起始时间和结束…

php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02

php运算符&#xff0c;类型转换&#xff0c;打印输出语句相较于其他语言的特殊部分php运算符php的类型转换php打印输出语句php运算符 1.php运算符与其他高级语言相同的部分 算术运算符&#xff08;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%&#xff09;&#xff0…

使用Flask快速部署PyTorch模型

对于数据科学项目来说&#xff0c;我们一直都很关注模型的训练和表现&#xff0c;但是在实际工作中如何启动和运行我们的模型是模型上线的最后一步也是最重要的工作。 今天我将通过一个简单的案例&#xff1a;部署一个PyTorch图像分类模型&#xff0c;介绍这个最重要的步骤。 …

OAK-PoE设备故障排查详解

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

Linux小黑板(5):磁盘与文件系统

"这月蹦迪没我" 一、浅谈磁盘 磁盘作为计算机硬件里&#xff0c;唯一的机械设备。在数据存储的领域&#xff0c;有着不可磨灭的作用。相较于&#xff0c;保持通电情况下具有保持数据的不丢失的内存&#xff0c;磁盘能够"永久性"地存储 数据。 磁盘是计算机…