当前位置: 首页 > news >正文

用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据

需求背景

给一个客户对接人脸识别的设备,最后需要通知服务端进行一些消息推送。

简单例子


# 作者 陈老师
# https://v.iiar.cn
import json
import paho.mqtt.client as mqtt
import requests
from flask import Flask, requestapp = Flask(__name__)# MQTT配置
mq_broker = "127.0.0.1"  # MQTT测试服务器
mq_port = 1883  # 非加密端口
zt = 'ddddd'def http_post(data):url = "http://127.0.0.1:6688/api/user/mqtt_msg"try:res = requests.post(url, json=data)print(res.text)except Exception as e:print(e)# MQTT连接回调函数
def on_connect(client, userdata, flags, rc):if rc == 0:client.subscribe(zt)print("MQTT连接成功")else:print(f"MQTT连接失败,返回码:{rc}")# 处理接收到的MQTT消息
def on_message(client, userdata, msg):mqtt_message = msg.payload.decode()  # 解析MQTT消息print('收到消息', mqtt_message)http_post(json.loads(mqtt_message))# 连接MQTT服务器
mq = mqtt.Client()
mq.on_connect = on_connect
mq.on_message = on_message
mq.connect(mq_broker, mq_port, 60)
# 启动MQTT客户端线程
mq.loop_start()def send_mqtt_msg(text):mq.publish(zt, text)@app.route('/', methods=['POST'])
def index():data = request.jsonprint('给机器发消息', data)t = json.dumps(data)t = json.loads(t)send_mqtt_msg(t)return 'ok'# 调试模式运行
if __name__ == '__main__':# debug=True,app.run(port=6699, host='0.0.0.0')# 安装依赖
# pip install -r requirements.txt# 导出依赖库
# pip freeze > requirements.txt

所需安装拓展

requirements.txt

blinker==1.9.0
certifi==2024.8.30
charset-normalizer==3.4.0
click==8.1.7
Flask==3.1.0
idna==3.10
importlib_metadata==8.5.0
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==3.0.2
paho-mqtt==2.1.0
requests==2.32.3
urllib3==2.2.3
Werkzeug==3.1.3
zipp==3.21.0

实际应用例子

# 作者 陈老师
# https://v.iiar.cn
import json
from datetime import datetime
import paho.mqtt.client as mqtt
import requests
from flask import Flask, requestapp = Flask(__name__)# MQTT配置
mq_broker = "127.0.0.1"  # MQTT测试服务器
mq_port = 1883  # 非加密端口
sb = '123456789' # 我的设备号
zt = f'fungxi_{sb}_downLink'  # 发给设备
zt2 = f'fungxi_{sb}_upLink'  # 设备上报def http_post(data): # 接收mqtt回调的apiurl = "http://127.0.0.1:6688/api/user/mqtt_msg"try:res = requests.post(url, json=data)print(res.text)except Exception as e:print(e)# MQTT连接回调函数
def on_connect(client, userdata, flags, rc):if rc == 0:client.subscribe(zt)client.subscribe(zt2)print("MQTT连接成功")else:print(f"MQTT连接失败,返回码:{rc}")# 处理接收到的MQTT消息
def on_message(client, userdata, msg):mqtt_message = msg.payload.decode()  # 解析MQTT消息try:data = json.loads(mqtt_message)except json.JSONDecodeError:print("无效的JSON数据")returnif msg.topic == zt:if data['cmd'] == 'heartD':returnprint('发给设备', mqtt_message)elif msg.topic == zt2:if data['cmd'] == 'heartU':bot_heartbeat()returnelif data['cmd'] == 'strangerRecordU':  # 陌生人returnelif data['cmd'] == 'verifiedRecordU':  # 人脸库的# http_post(['data'])check_successfully(data['data'])print('设备上报', mqtt_message)# 连接MQTT服务器
mq = mqtt.Client()
mq.on_connect = on_connect
mq.on_message = on_message
mq.connect(mq_broker, mq_port, 60)
# 启动MQTT客户端线程
mq.loop_start()def send_mqtt_msg(text):mq.publish(zt, text)# 机器返回心跳
def bot_heartbeat():r = {"cmd": "heartD","time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")}t = json.dumps(r)send_mqtt_msg(t)def check_successfully(data):data = data[0]user_id = data['num']  # 用户idname = data['name']  # 用户名img = data['liveImageBase64']  # 扫脸图片verifiedCode = data['verifiedCode']  # 识别状态bot_time = data['time']  # 机器里识别时间personType = data['personType']if personType == '1' and verifiedCode == 0:  # 通过passsend_data = {'user_id': user_id,'name': name,'img': img,'verifiedCode': verifiedCode,'bot_time': bot_time,'personType': personType}# print(bot_time)http_post(send_data)@app.route('/', methods=['POST'])
def index():data = request.jsonprint('给机器发消息', data)t = json.dumps(data)t = json.loads(t)send_mqtt_msg(t)return 'ok'# 调试模式运行
if __name__ == '__main__':# debug=True,app.run(port=6699, host='0.0.0.0')# 安装依赖
# pip install -r requirements.txt# 导出依赖库
# pip freeze > requirements.txt

详细说明文档

由chatGPT整理

中文解释文档

1. 项目简介

该项目实现了一个基于 MQTT 协议和 Flask 框架的应用。它的功能主要包括:

  • 接收来自设备的上报消息(如人脸识别结果、心跳等)。
  • 向设备发送下行指令(如心跳响应等)。
  • 通过HTTP请求将接收到的数据转发到本地服务器进行处理。

该应用集成了 MQTT 客户端库 paho.mqtt.client,用于与设备进行通信,并使用 Flask 框架提供一个HTTP接口,接收外部发送的消息并转发给设备。

2. 主要功能
  1. MQTT通信:

    • 设备通过MQTT协议发送上报消息(如人脸识别结果、心跳等),服务器接收并进行处理。
    • 服务器可以向设备发送下行消息(如心跳响应、命令等)。
  2. HTTP接口:

    • 服务器提供一个HTTP接口(POST /)接收外部请求,通过MQTT协议向设备发送消息。
  3. 人脸识别处理:

    • 设备通过MQTT上报人脸识别结果,服务器将识别结果转发给本地API进行进一步的处理(如存储、通知等)。
3. 主要模块
3.1 MQTT配置
mq_broker = "127.0.0.1"  # MQTT测试服务器
mq_port = 1883  # 非加密端口
sb = '123456789' # 我的设备号
zt = f'fungxi_{sb}_downLink'  # 发给设备
zt2 = f'fungxi_{sb}_upLink'  # 设备上报
  • mq_broker:MQTT服务器的IP地址,用于连接设备。
  • mq_port:MQTT服务器的端口号,使用非加密连接(默认为1883端口)。
  • sb:设备的唯一序列号。
  • zt:发送给设备的消息主题,用于控制设备或向设备发送指令。
  • zt2:设备上报消息的主题,用于接收设备的上报数据(如识别结果)。
3.2 HTTP POST请求
def http_post(data):url = "http://127.0.0.1:6688/api/user/mqtt_msg"  # 本地API接口地址try:res = requests.post(url, json=data)  # 发送POST请求print(res.text)  # 打印服务器响应内容except Exception as e:print(e)  # 打印异常信息
  • http_post(data):这个函数用于将数据通过HTTP POST请求发送到本地的API接口。一般用于将设备上报的数据转发到其他服务进行处理。
3.3 MQTT消息处理
def on_connect(client, userdata, flags, rc):if rc == 0:  # 连接成功client.subscribe(zt)  # 订阅设备下行消息client.subscribe(zt2)  # 订阅设备上行消息print("MQTT连接成功")else:  # 连接失败print(f"MQTT连接失败,返回码:{rc}")
  • on_connect:当MQTT客户端连接成功时,会订阅两个主题:zt(发送给设备)和zt2(设备上报的消息)。
  • on_message:处理接收到的MQTT消息,根据主题分发不同的处理逻辑。
3.4 处理接收到的MQTT消息
def on_message(client, userdata, msg):mqtt_message = msg.payload.decode()  # 解析MQTT消息try:data = json.loads(mqtt_message)  # 将消息转为JSON格式except json.JSONDecodeError:  # 如果无法解析为JSONprint("无效的JSON数据")returnif msg.topic == zt:  # 如果是下行消息if data['cmd'] == 'heartD':  # 如果是心跳消息,直接返回returnprint('发给设备', mqtt_message)elif msg.topic == zt2:  # 如果是设备上报消息if data['cmd'] == 'heartU':  # 如果是设备上报的心跳消息bot_heartbeat()  # 发送机器心跳returnelif data['cmd'] == 'strangerRecordU':  # 陌生人记录returnelif data['cmd'] == 'verifiedRecordU':  # 人脸识别记录check_successfully(data['data'])  # 检查是否识别成功print('设备上报', mqtt_message)
  • on_message:处理接收到的消息,并根据消息的主题和命令类型(如心跳、陌生人记录、人脸识别记录等)执行不同的操作。
3.5 发送MQTT消息
def send_mqtt_msg(text):mq.publish(zt, text)  # 向设备下行主题发送消息
  • send_mqtt_msg:将文本消息通过MQTT协议发送到设备,通常用于向设备发送指令或控制消息。
3.6 心跳响应
def bot_heartbeat():r = {"cmd": "heartD",  # 命令类型:心跳"time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")  # 当前时间}t = json.dumps(r)  # 将数据转换为JSON字符串send_mqtt_msg(t)  # 发送心跳消息
  • bot_heartbeat:当设备向服务器发送心跳时,服务器通过MQTT向设备响应心跳消息,表明设备仍然在线。
3.7 人脸识别结果处理
def check_successfully(data):data = data[0]  # 获取识别结果中的第一条数据user_id = data['num']  # 用户IDname = data['name']  # 用户名img = data['liveImageBase64']  # 扫脸图片的Base64编码verifiedCode = data['verifiedCode']  # 识别状态(0为通过)bot_time = data['time']  # 机器识别的时间personType = data['personType']  # 人员类型(1为已登记用户)if personType == '1' and verifiedCode == 0:  # 如果是已登记用户且识别通过pass  # 这里可以处理已通过的情况# 构造发送数据send_data = {'user_id': user_id,'name': name,'img': img,'verifiedCode': verifiedCode,'bot_time': bot_time,'personType': personType}# 打印识别时间(可用于调试)# print(bot_time)# 发送数据到本地APIhttp_post(send_data)
  • check_successfully:该函数处理设备上报的人脸识别数据,将其解析并将成功的识别结果转发到本地API进行进一步处理。
3.8 Flask HTTP接口
@app.route('/', methods=['POST'])
def index():data = request.json  # 获取请求中的JSON数据print('给机器发消息', data)  # 打印发送给机器的消息t = json.dumps(data)  # 将数据转换为JSON字符串t = json.loads(t)  # 重新解析JSON(这里可以进行进一步的数据处理)send_mqtt_msg(t)  # 发送消息给设备return 'ok'  # 返回成功响应
  • index:这是Flask应用提供的HTTP接口,接收外部的POST请求。请求中的数据会通过MQTT协议转发给设备。
4. 运行说明
  1. 安装依赖
    在项目根目录下创建 requirements.txt 文件,列出项目的依赖库:

    pip install -r requirements.txt
    
  2. 启动服务
    运行Flask应用:

    python app.py
    

    服务器将会监听在 6699 端口上。

  3. 导出依赖
    如果需要将当前环境的依赖导出为 requirements.txt 文件,可以运行:

    pip freeze > requirements.txt
    
5. 总结

该项目主要通过MQTT协议与设备进行实时通信,通过Flask框架提供一个HTTP接口接收外部请求并转发给设备。它主要应用于设备控制、实时数据处理和系统集成等场景。

延伸了解

这种基于 MQTT 协议和 Flask 框架的系统,通常会应用于需要实时设备控制、数据收集和状态反馈的场景。以下是一些典型的应用场景:

1. 智能门禁系统

在智能门禁系统中,设备(如门禁机、门锁等)可能需要通过人脸识别来判断是否允许某人进入。设备通过MQTT协议将人脸识别结果(例如是否识别成功、人员身份等)上报到服务器,服务器根据识别结果进行处理,并反馈给设备是否允许打开门锁。

  • 设备角色:门禁设备、门锁、门禁卡读卡器、人脸识别摄像头等。
  • 系统需求
    • 设备上报用户识别数据(如人脸识别结果、时间戳等)。
    • 系统根据识别结果决定是否打开门锁。
    • 系统向设备发送状态更新(如心跳包、设备状态监控等)。

使用场景

  • 办公楼、住宅小区、公共场所等的智能门禁控制。
  • 企业考勤系统,自动记录员工进出。

2. 智能监控与安防

在智能监控系统中,摄像头、传感器等设备可能会使用人脸识别、动作检测等技术监控环境。当发现可疑人物或异常行为时,设备会通过MQTT协议将监控数据上传至服务器,服务器进行处理(如报警、记录日志等),并根据规则发送指令给设备(如开启警报、录像等)。

  • 设备角色:摄像头、传感器、警报器、录像设备等。
  • 系统需求
    • 实时接收设备的监控数据或报警信号。
    • 根据设备上报的结果,向设备发送指令(如触发警报、录像等)。
    • 与外部系统(如安防公司、移动端APP等)集成,进行信息转发或展示。

使用场景

  • 智能家居安防系统,监控家庭安全。
  • 企业或公共场所的智能安防系统,防盗、监控等。

3. 智能家居系统

在智能家居场景中,设备之间的交互和控制通常通过MQTT协议实现。例如,用户通过手机APP控制家里的智能灯泡、空调、门锁等设备,设备将状态更新上报到服务器,服务器再根据控制指令下发新的状态更新给设备。

  • 设备角色:智能灯泡、空调、窗帘、智能插座、门锁等。
  • 系统需求
    • 设备实时上报状态(如温度、湿度、是否开锁、是否开灯等)。
    • 用户通过手机APP发送控制指令(如开关灯、调节空调温度等)。
    • 系统根据用户指令向设备发送MQTT消息进行控制。

使用场景

  • 智能家居控制系统,用户通过手机控制家居设备。
  • 智能办公环境,自动调节温度、照明等。

4. 远程医疗与健康监测

在医疗设备或健康监测系统中,传感器(如心率监测仪、血压计、体温计等)通过MQTT将患者的健康数据实时上传到服务器,服务器将数据存储并进行分析,同时向设备发送指令进行实时干预(例如在心率异常时提醒设备报警)。

  • 设备角色:健康监测设备、传感器、智能手表等。
  • 系统需求
    • 设备上报患者的实时健康数据(如心率、血压、体温等)。
    • 系统根据数据分析,给设备发送指令(如报警、记录日志等)。
    • 数据存储与远程监控,医生或护理人员可以实时查看患者状态。

使用场景

  • 老年人健康监护,实时监测老年人的身体状况。
  • 慢性病患者的远程健康管理。

5. 工业物联网(IIoT)

在工业物联网(IIoT)应用中,传感器和设备需要实时监控生产线或设备的状态,例如温度、压力、湿度、运行速度等数据。这些设备通过MQTT协议上传状态数据,服务器根据数据进行故障预警、生产调度等。

  • 设备角色:工业传感器、监控设备、生产机器、自动化设备等。
  • 系统需求
    • 设备实时上报生产数据(如设备运行状态、温度、湿度等)。
    • 系统根据设备数据进行状态监控,发现异常时发出报警指令。
    • 向设备发送控制指令(如调整温度、改变生产参数等)。

使用场景

  • 工厂自动化,实时监控生产线设备的运行状态。
  • 智能制造,优化生产流程,减少故障率。

6. 智慧停车系统

在智慧停车系统中,停车场的入口、出口、车位传感器等设备通过MQTT协议上传实时的停车数据。例如,设备上报车辆进出情况、空闲车位数等,系统根据这些信息提供停车导航、收费结算等服务。

  • 设备角色:停车场摄像头、车位传感器、停车收费机等。
  • 系统需求
    • 设备上报实时停车数据(如车位是否空闲、车辆进出时间等)。
    • 系统根据数据向用户提供停车位信息、导航指引。
    • 向设备发送指令进行车位管理或收费操作。

使用场景

  • 智慧停车场,实时监控停车位使用情况。
  • 城市交通管理,优化停车资源利用。

7. 智能农业与环境监测

在智能农业和环境监测系统中,设备(如土壤湿度传感器、气象站、灌溉系统等)通过MQTT协议实时上传环境数据,系统根据数据分析向设备发送指令(如启动灌溉、调整温室温度等)。

  • 设备角色:土壤湿度传感器、温度传感器、气象站、自动化灌溉系统等。
  • 系统需求
    • 设备上报环境数据(如温度、湿度、土壤湿度等)。
    • 系统根据数据自动调整设备参数(如启动灌溉、调节温湿度等)。
    • 数据存储与远程监控,农业管理人员可以随时查看环境数据。

使用场景

  • 智能温室,自动调节温湿度,控制灌溉系统。
  • 智能农场,精准农业,减少水资源浪费。

总结

这种需求主要出现在那些 需要实时监控、数据收集、设备控制与反馈的场景。利用MQTT协议和Flask框架实现的系统能够高效地处理设备之间的消息传递和数据流转。典型的应用场景包括:

  • 智能门禁与考勤系统
  • 智能安防与监控
  • 智能家居控制
  • 远程医疗健康监测
  • 工业物联网(IIoT)
  • 智慧停车与交通管理
  • 智能农业与环境监测

这些场景都涉及到设备与服务器之间的高效通信、状态反馈和远程控制,且对于实时性、稳定性和可扩展性有较高的要求。

相关文章:

用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据

需求背景 给一个客户对接人脸识别的设备,最后需要通知服务端进行一些消息推送。 简单例子 # 作者 陈老师 # https://v.iiar.cn import json import paho.mqtt.client as mqtt import requests from flask import Flask, requestapp Flask(__name__)# MQTT配置 mq…...

img引入svg如何修改颜色

方法1:通过css中filter:drop-shadow 首先需要一个容纳图标的父盒子(下方实例中的.svg-img),通过css造一个图标的‘影子’(.svg-color中的drop-shadow),然后设置‘影子’的颜色,再把图标本体移出父盒子&…...

计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

【Python】使用Numpy实现余弦相似度计算

本文详细介绍了如何使用 NumPy 实现两个向量之间的余弦相似度计算,帮助理解向量相似度在推荐系统、文本处理等领域的应用。 1. 余弦相似度定义 余弦相似度是衡量两个向量在高维空间中夹角大小的指标,其公式为: c o s ( θ ) A ⋅ B ∥ A ∥…...

nginx中的root和alias的区别

alias 在E:\\test\\目录下创建一个index.html文件 在nginx.conf文件配置alias,路径填写为绝对路径,但是要注意,这里结尾是文件夹的名字 然后下面的/aa/ 是随便起的名字,也不是文件夹的名字,在浏览器访问的使用的 在浏览器使用 …...

探索Telnet:实现Windows远程登录Ubuntu的实践指南

前言 在互联网技术日新月异的今天,远程登录已经成为许多开发者和系统管理员日常工作中不可或缺的一部分。虽然SSH已经成为远程登录的首选协议,但了解并掌握Telnet这一经典协议仍然具有重要意义。本文将带您一起探索如何使用Telnet实现Windows远程登录Ub…...

在 Vue 2 中隐藏页面元素的方法

目录 在 Vue 2 中隐藏页面元素的方法 引言 1. 使用 v-if 指令 2. 使用 v-show 指令 3. 使用自定义类名与 v-bind:class 4. 使用内联样式与 v-bind:style 5. 使用组件的 keep-alive 和条件渲染 在 Vue 2 中隐藏页面元素的方法 引言 在开发 Web 应用时,我们经…...

【Java】Java8的4个函数式接口简单教程

什么是函数是接口? 函数式接口是一个包含 单个抽象方法 的接口,且可以有任意多个默认方法或静态方法。为了增强可读性,Java 8 引入了 FunctionalInterface 注解,用于标识该接口是一个函数式接口,编译器会帮助我们检查…...

计算机组成原理与系统结构——微程序控制

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 基本概念 微指令 将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制…...

【Swift】集合类型 - 数组、集合、字典

文章目录 集合的可变性数组数组类型简写语法创建空数组使用默认值创建数组通过合并两个数组创建一个新数组使用数组字面量创建数组访问和修改数组 Swift 提供了三种主要的 集合类型,分别是数组、集合和字典,用于存储值集合。数组是有序的值集合。集合是无…...

3D 视觉定位技术:汽车零部件制造的智能变革引擎

在汽车零部件制造领域,传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求,促使企业寻求突破之道。而 3D 视觉定位技术,为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...

操作系统的基本认识

操作系统的感性认识 操作系统这个词可能或多或少听说过,比如windows, linux, macOS。这些其实都是工程师们经过实践后的具象化产物。而操作系统原理这六个字就是操作系统的抽象化,更准确的说,操作系统原理是很理论化的东西。举一个不是很恰当…...

使用pycharm连接远程服务器

使用pycharm连接远程服务器 1.在你的项目里配置 SSH ,放到服务器上去跑 主机为服务器的IP地址,输入用户名和密码 配置项目位置、选择编译器 2.设置本地更改代码保存后即上传到服务器 在本地使用 pycharm 调试代码,pycharm 上面的代码更改…...

【Linux SH脚本】LinuxCheck 应急检查信息脚本

LinuxCheck 1.下载地址 【Linux SH脚本】LinuxCheck 应急检查信息脚本 2.简介 LinuxCheck 是一个开源的自动化检查脚本,旨在快速检测 Linux 系统的安全配置和潜在问题。它支持多种发行版,能够扫描并生成详细的报告,涵盖用户管理、权限配置…...

apifox创建一个mock接口

1、新建接口 2、选择mock,开启云端mock; 3、新建期望; 4、编辑响应体; 5、快速请求,测试; (主要可能是网络问题,也可以自己python mock一个;apifox简单快速&#xf…...

设计一个基础JWT的多开发语言分布式电商系统

在设计一个分布式电商系统时,保证系统的可扩展性、性能以及跨语言的兼容性是至关重要的。随着微服务架构的流行,越来越多的电商系统需要在多个服务间共享信息,并且保证服务的安全性。在这样的场景下,JSON Web Token(JW…...

委托(Delegate)与事件(Event)-(上篇)

C#中的委托(Delegate)是一种类型安全的函数指针,它允许将方法作为参数传递给其他方法,并且可以用来实现回调机制。委托是C#中实现事件处理、异步编程以及面向对象设计模式的重要工具之一。在C#中,委托被定义为引用类型…...

Scala根据身份证前两位数判断地区

方法一 val id "339005200101010928"// 取出id前两位 val province id.substring(0, 2) /*//println(province)if (province "42") {println("湖北")}else if (province "11") {println("北京")}else if (province &qu…...

freeswitch(开启支持视频H264通话)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景介绍: 内部默认是不支持的,视频通话,需要开启模块使用方法: 第一步:进入vars.xml 下面找到global_codec_prefs和outbound_codec_pr…...

启发式搜索算法和优化算法的区别

启发式搜索算法和优化算法在计算机科学中都有广泛的应用,但它们之间存在一些明显的区别。 一、定义与核心思想 启发式搜索算法 定义:启发式搜索算法是一类基于经验和直觉的问题求解方法,通过观察问题的特点,并根据某种指…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...