自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(196)
  • 资源 (3)
  • 收藏
  • 关注

原创 如何使用ElasticSearch存储和查询数据

在大多数的场景里,存储数据都是用MySQL这类关系型数据库,这类数据库的特点是数据存储安全性和一致性高,可以用于事务操作,但是随着数据量的增加,查询的速度也会随之降低,并且其扩展能力有限,因此在日志记录和查询等场景下,MySQL就显得力不从心,为了解决对海量数据的搜索、分析和计算,引入ES(ElasticSearch)搜索引擎。在save方法中共有两个入参,第一个参数就是自己想存储的数据,里面的字段根据业务自定义,第二参数就是定义一个在es中的索引,其索引就像MySQL中的表名字。

2023-08-06 09:33:17 1654

原创 前端和后端代码部署及路由配置

1. 引言目前的后台系统都是前后端分离的项目,前端开发者关注页面的编排、后端开发者专注于API逻辑开发。开发流程为:各自开发后好,后端服务先部署到云端,前端在本地进行接口调试,调试好后发布到服务器。两者都部署后,在前端获取到的数据包括两部分,其一是开发的、其二是。那前端在调用的时候是如何去区分是拿静态文件还是接口数据呢?2. 项目部署和路由配置。

2023-07-01 23:45:54 614

原创 实现设备的延时控制

其工作原理是在APP端设置一个未来的时间戳和运行的周期,这些表示未来时间的数据和控制指令会被放入云端数据库存储起来,云端会启动定时任务,比如每隔5s去扫描数据库数据,如果时间满足,就会将设置的控制命令下发到设备,从而实现了设备控制。综上所述,以上介绍了RocketMQ实现延时消息的实现方法,在实现延时的时候,需要根据业务提前确认好delayLevel,该方式也常用于延时关闭支付订单。在人们使用设备的场景中,存在一种定时/延时的场景,比如这种家里的烟机延时3分钟后再关机,那定时/延时场景是如何实现的呢?

2023-06-14 23:22:56 352

原创 设备如何实现配网和注册

如图所示,在配网的时候,设备可以和APP建立socket连接,因此此时APP可以获取到设备的MAC地址、设备的类型、所属用户的手机号、设备型号等信息;然后将信息通过SDK中API地址传递到云端;云端收到注册请求后,会对设备进行验证,确保设备标识符的唯一性和设备信息的合法性,通过验证后会分配一个唯一的标识符(设备ID),并将云端自身的信息返回给设备端进行保存,之后设备就用该设备id和云端进行通信。在设备连接路由器的时候,APP可以将路由器的接入密码分享给设备,那设备就可以连接到路由器,最后就实现了设备上网。

2023-05-30 22:17:03 366

原创 如何顺序处理设备上报的数据

其中较为重要的一步是注册消息监听器,在该方法中,使用了顺序消费,即在队列里面的消息会根据存储的先后顺序推送给消费者,进行消费。需要注意的是,在RocketMQ中,同一消息队列上的消息是有序的,但不同消息队列之间的消息是无序的。为保证状态推送的有效性,需要指定消息的关键字,其中设备ID是唯一标识设备,因此同一个设备上报的状态就被同一个队列中,这样就能保持统一设备的状态是有序的。在消息生产的时候保持了有序性,为了实现消息消费的有序性,消费消息时需要严格按照接收—处理—应答的语义处理消息。

2023-05-24 23:44:27 694

原创 常见的两种通信方式

综上所述,介绍了服务之间的两种通信方式,第一种更多用在业务量较小的情况下,实现也比较简单;第二种主要用于应对流量冲击,流量尖峰的场景下,能有效地阻止上游服务压垮下游服务,其中RocketMQ就是采用第二种方式。参考-RocketMQ官网。

2023-05-17 23:07:01 910

原创 OTA实现设备升级方案

收到触发来源后,进行规则判断,判断该设备是否在本次的升级任务中,如果没有就直接结束,否则进入下一步进行模组判断,判断该模组和规则中是否一致,且版本低于规则中的版本,如果符合就将设备放入。行业非常的重要,当随着市场上的产品越来越多,保有量也越来越多,随着时间的推移,很多设备的功能比较老旧,逐渐落伍。版本,该版本就提供了一个非常高级的硬件设备,之后如果提出更高阶的自动驾驶程序,就可以通过。中查询设备升级过程中的状态,当状态还在升级中,就将设备信息放入。简要的升级方式,涉及的中间件较多,但整个流程比较好理解。

2023-05-15 23:08:40 831

原创 最简单的设计模式之工厂方法

工厂方法包括4部分,分别为:抽象工厂、具体工厂、抽象产品和具体产品。如上图所示,为4个部分组成的关系图。抽象工厂:最顶级的接口类,对外提供入口,其他的工厂都需要实现其接口,创建不同的具体工厂类。具体工厂:该类需实现抽象工厂,并且实现抽象工厂中的方法,在方法中导入产品依赖,就可以根据产品的不同创造出不同的产品。抽象产品:最顶级的接口类,对工厂提供入口,在接口中提供方法,统一定义该产品的功能。具体产品:该类实现与抽象产品,需要重写抽象产品接口,实现具体产品的功能。

2023-05-09 23:19:48 69

原创 浅聊AIOT

综上所述:云端可以深入全球大数据分析,适应对延迟不敏感的数据处理场景,而边端专注于本地、小规模、实时和按需任务。云边缘终端协作实现终端设备,充分利用边端和云中心的计算资源,最大限度地减少服务延迟。

2023-05-03 15:11:23 757

原创 还在用MySQL存日志?

随着智能硬件成本降低和互联网网络的发展,在生活中场景的设备都已接入了网络中,其中传感器成为了设备获取外界信息的眼睛,网络成为设备交流的桥梁。在设备的交互中,往往存在着触发源,即标识控制指令的来源,在后端开发中,除了进行功能逻辑处理外,其中日志记录也非常重要,但是怎样去记录也非常的关键。比如用户在`APP`端点击了某个功能开关,场景的执行记录等等,这些云端都需要进行记录。这些记录在排查客诉的时候就能起到至关重要的作用,而不用大海捞针无脑去排查。接下来列举`2`中记录日志的方式,推荐第二种方式,介绍一个中心

2023-04-28 15:47:36 785

原创 使用OpenFeign实现接口访问

在微服务横行的年代,后端根据业务的不一样分成了很多单独运行的服务,比如在物联网中,根据业务拆分为定时服务、设备控制等服务。当前端想控制设备时,其请求首先到其对应的后端服务,后端服务再调用设备控制服务,才能实现业务需求。

2023-04-22 22:05:29 2016

原创 如何防止设备被重复控制

在做设备之间联动的时候,云端只解析上报,除了存在定时上报外,当控制指令下发后,也会触发状态上报(其协议头和定时上报是同一个),因此云端只会关注上报。但是存在一个问题,云端只解析同一种协议,如何区分是控制的上报还是定时的上报的?

2023-04-15 16:40:01 672

原创 设备是如何实现延时关机的

在设备联动中,有些场景需要保持设备继续工作一段时间再关机。比如在厨房场景下,存在燃气灶和烟机的联动场景,以燃气灶为条件,烟机为结果。当打开燃气灶后,烟机自动打开;当关掉燃气灶后,烟机需要延时`3`分钟再关机。

2023-04-09 22:59:35 712

原创 真实的后端服务

虽然具体的业务逻辑是在web后端进行处理的,但是在前后端交互的时候,两者之间是存在一整个链路。真正的一个系统并不是只有前端和后端组成,它们只是这个系统的最前和最后的两个点,在之间还有很多服务发挥着作用。比如阿里云的SLB(Server load Balance)服务,为系统提供可靠的服务起到至关重要的作用、比如kong起着鉴权的作用。

2023-04-07 23:27:53 427

原创 搭建SpringBoot和Mysql Demo

在上一篇文章中,介绍了如何搭建一个SpringBoot项目;本篇文章,在上一篇文章的基础上,接着介绍下怎样实现SpringBoot和MySQL的整合。在后端开发中,数据库开发是绕不开的话题,开发中很多的时间都是在和数据库打交道。比如APP传递的数据需要进行持久化,方便下一次来获取;存储设备运行日志,将设备的执行日志存放到数据库中,方便排查错误,开放接口方便用户进行自主查询。因此,接下来就来搭建一个SpringBoot和MySQL项目,并且在结尾的地方会指出新手会触犯的一些规范。

2023-04-05 15:31:45 673

原创 如何搭建一个SpringBoot项目

来简单介绍一个Spring Boot Demo项目,包括Spring Boot框架的基本特性和功能。其中Spring Boot是一个流行的基于Java的框架,它简化了Spring应用程序的开发和部署,是企业级开发的首选框架。

2023-04-02 15:20:44 511

原创 如何实现接口调用的重试

在控制设备的时候,常规的方式是利用同步控制的方式,当下发控制后,需等待控制结果;但随之会造成主线程阻塞,在大量控制中可能出现批量失败的情况,造成严重损失。因此,在控制流量很大的情况下,常采用异步控制的方式。异步方式将控制下发和结果回调进行拆分,所以主线程不会受到影响,并且能被动知道控制的结果,服务能力得到很大提升。因此为了提高回调的可用性,在回调的时候会尝试重试请求,保证结果的一致性。其中有个结果回调,用于告知主线程此时的控制结果。因此,在上图中的回调,就不能直接告知控制结果,而是将控制的参数放入。

2023-04-02 09:59:26 473

原创 搭建一个中心化的定时服务

综上所述,一共讨论了两种定时的实现方式,所有的操作都是基于SpringBoot框架实现的;每种方式都要自己的优势所在,可以根据自己业务的难易进行选择;以上的步骤亲测可以实现,欢迎留言讨论。

2023-03-11 18:05:03 432

原创 手把手搭建一个压测脚本

以上就是利用Python中Locust的包实现了接口的压力测试。搭建非常的方便,并发数量方便可控制、各项数据展示非常清晰。如果有时间,可以本地搭建,测试本机能承受的最高压力喔。

2023-03-04 23:35:08 1805

原创 如何确定RocketMQ中消费者的线程大小

随着物联网行业的发展、智能设备数量越来越多,随着设备活跃量过大,常常存在一些高并发的请求,形成了流量尖峰,过多的请求会压垮服务器,影响其他服务运行。因此,为了保护云端服务,需要对请求进行缓冲,`RocketMQ`就是一款非常优秀消息队列的中间件,在互联网领域久经考验,也被各个行业广泛应用。

2023-02-25 18:35:52 2532

原创 物联网中RocketMQ的使用

以上是关于RocketMQ在物联网中的使用介绍,只是皮毛而已,里面还有很多的功能可以挖掘。

2023-02-18 19:07:12 1320

原创 物联网中设备是如何联动的

随着移动互联网、云平台的快速发展,物联网行业也得到了空前的发展。大家在网络上都经常看到万物互联、全屋智能等一个个高大上的名词,殊不知很多的智能场景已经慢慢进入了我们的视野,比如华为的全屋智能系统、小米物联网生态;

2023-02-07 15:16:35 1226

原创 [实例讲解]计算机处理任务的方法和原理--线程

在介绍线程之前,我们先介绍一下计算机中的任务执行:首先任务需放在内存,当得到调度的时候就需要分配`CPU`时间,有了`CPU`支持,任务才可以执行。常见的执行方式有两种:当我们采用一种串行的方式去执行任务,即`CPU`处理好当下的任务,才会去处理下一个任务,这样的执行时间就是每个任务时间的总和;当在性能要求较高的场景下,我们会采用一种并发的方式去执行任务,在每个线程执行任务时,会获得`CPU`时间片,在这一点时间内可以处理当前任务。在并发的方式中,每个任务都能通过一定的方式获取到一部份`CPU`时间。这样宏

2023-01-07 21:40:13 521

原创 物联网-初步探索lua

在物联网行业中,存在各种协议;比如在电控和云端进行通信的时候需要对功能进行解码和编码;当云端下发到设备的时候需要将Json格式的命令转换成电控码;当云端进行上报或者返回的时候,需要将16进制的电控码转为Json格式,方便APP和云端处理。比如:假设16转换成的Json格式。

2023-01-02 12:01:02 604

原创 物联网-异步控制多个设备

在这个万物互联的时代了,物联网设备起到了关键性的作用,那我们怎么去联动一个个物联网设备。比如一个家庭,里面有很多的设备,比如洗衣机,加湿器、空调、除湿机、灯光等等这些智能设备。假如在一个场景中存在多个空调、多个除湿机,人们在米家`APP`或者语言进行一键控制的时候,云端是如何去控制设备呢?  当然在云端会存在很多设备的控制指令,但是控制服务暴露的地址只有一个,如果我们只采用简单的遍历去控制设备,那整体的控制时间是每个设备控制的总和。如果网络稍微延迟,就会导致用户体验差。那为了避免这样

2022-12-11 13:53:58 1134

原创 物联网-常见的服务架构演变

以上就是简单的梳理,在分布式架构中还有CAP原则,BASE理论。在这些理论中,主要强调,可用、性能、一致性的取舍。为了满足用户的良好体验,我们在设备的过程中,需要跟多地满足可用和性能两个要素,其中的数据一致性,我们更多地采用一种软一致性,通过一种时间换空间的方式来保证数据的一致性。

2022-11-27 15:25:16 1479

原创 SpringBoot框架中的ParseJson

在目前开发主流中,数据在前后端,各个服务间之间沟通的时候都是采用json格式的数据格式。但我们在程序中处理的时候,json并不能

2022-11-25 16:37:10 263

原创 获取某月有多少天

今天在开发的过程中,有个地方需要对传来的天数进行判断,是否是某个月的最大的值。当我还在伸出左手边的拳头数那个月是31天,哪些是30天的时候,突然发现。通过传入的月份,可以对应到当月的最大天数,并且可以判断是否是闰年来确定2月是29天还是28天。这个方法, 自认为这个代码写的很精致。来看看它是怎么实现的?

2022-11-14 21:41:33 2814

原创 实际开发中,还在用Date?现在都是LocalDateTime

在和前端交互的过程中,常常需要和时间打交到,比如前端传入一个开机时间,云端定时后将控制设备开机;或者传入的时间和数据库里的时间进行比较,或者和当前的时间进行比较,或者转为时间戳等等。接下来就来梳理一下在实际工作中常见的时间操作。随着jdk的发展,对于时间的操作已经摒弃了之前的Date等方法,而是采用了LocalDateTime方法,因为LocalDateTime是线程安全的。

2022-11-12 15:06:46 587

原创 SpringBoot之SpringBootVersion

在启动`SpringBoot`项目的时候,在`Console`中打印出来`SpringBoot`的版本号,那他是怎样实现的呢?一起来看看吧。

2022-09-10 17:16:16 1947

原创 一文了解BeanNameGenerator

在springboot的项目中,我们会使用到很多的注解,比如@Service,@Bean等,添加这些注解SpringBoot框架会帮忙创建bean,并且用唯一的名字来区分,那我们就来看看源是怎么实现的吧。

2022-08-30 17:57:39 562

原创 SpringBoot中的Banner(Banner)

继续跟踪:里面有两个方法,一个是获取资源,另一个是获取类加载器。已经被封装,看看是用的那个方法。代码如下:一个打印的方法,一个模式的选择:关掉不打印、打印到。那这个是怎么实现的呢?在这两个方法中都有一个。方法,都是通过该方法从。接着定位到资源加载器。构造完成之后就是打印。...

2022-08-03 22:40:03 2185

原创 docker简介-创建nginx镜像和启动容器

首先对docker进行简单介绍,对比;接着使用命令创建nginx镜像和启动容器。

2022-06-21 21:43:36 2272

原创 如丝般添加缓存来优化服务

在一个项目在使用的过程中,随着数据或者用户的增多,慢慢就会了出现老化;当请求个别接口就出现了返回缓慢的情景,严重影响了用户的使用体验,随之就需要对服务进行优化升级。优化不是我们重新去编写这个项目,而是用一些中间件去优化,常见的就是去缓存啦,因为很多时候我们的项目的瓶颈不是CPU等这些硬件,而是IO操作,因此对IO优化后会很好地提高项目能力。...

2022-06-06 20:47:04 282

原创 XML和Object的转换

XML和Object之间的转换

2022-06-01 19:10:35 1948

原创 如何在后端去访问第三方API

如何在后端去访问第三方给的API    在后端开发中,我们除了编写供前端调用的接口外,有时我们在后端也会去调用第三方接口实现业务处理,那我们如何去调用第三方接口呢?    我们都知道http包含头部和body,因此我们需要去模仿构造一个header和body,那在开发中有什么快捷的方式实现嘛?首先构造http头部HttpHeaders httpHeaders = new HttpHeaders();    其中HttpHeaders()属于Spring框架—import org.spring

2022-05-25 21:27:13 2650 2

原创 2022年主要的编程语言及应用

如图一所示,展示了2022年编程语言的排行榜,有很多我们熟知的,也有很多不太清楚的语言,接下来就以我的理解来说一下各类主流语言的主要用途。

2022-04-19 22:53:33 2988

原创 怎样理解认证与授权

认证与授权是web开发中绕不开的话题,任何开发的系统都需要对用户身份信息进行认证和授权,那什么是认证和授权呢?

2022-04-10 16:14:04 4483

原创 保姆级教学---怎样使用码云把本地的代码托管到远程的仓库

随着信息技术的发展,各种编程语言渗透到各个行业,影响着各个行业;很多人也迫切提高自己的编程能力来提升自己处理信息的效率,其中脚本语言`Python`在很多行业应用广泛,深受用户喜爱。那如果我们在编写代码之后,仅把代码保存在本地,对于以后的使用和维护非常的不方便,为此怎么对代码进行远程管理呢?以至于我们换电脑或者远程办公也可以用到自己之前写的代码呢?

2022-03-30 20:41:02 563

原创 如何用Python对目录下的所有xls文件进行合并输出

在电商行业中,每天都要去导流量来源信息进行商品数据分析,并需要对多天的数据进行粘贴复制,合并成一个数据表。多个表复制意味着重复的工作,基于此,怎样使用脚本对多个表进行合并,提高工作的效率呢?

2022-03-26 22:51:22 1642

在Windows环境下,适合64位的Lua处理Json的依赖包

在Windows环境下,适合64位的Lua处理Json的依赖包。5.4 版本下可用。

2023-01-07

计算机网络.xmind

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

2020-07-19

Redis.xmind

redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。利用Xmind绘画出Redis的主要知识点,用来复习和回顾相当不错!

2020-07-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除