CoAP 协议介绍及应用场景
CoAP 协议,即受限应用协议(Constrained Application Protocol),是专为资源受限的设备和网络设计的一种应用层协议 ,旨在让小型、低功耗的设备能够接入物联网(IoT),并以最小的资源与更广泛的互联网进行通信。该协议由互联网工程任务组(IETF)于 2014 年推出,自问世以来,在物联网领域发挥着越来越重要的作用。
一、CoAP 协议的设计背景与目标
物联网的快速发展使得大量资源受限的设备需要接入网络进行通信,这些设备通常具有有限的计算能力、内存和能源供应,同时所处的网络环境也可能存在带宽有限、延迟高、稳定性差等问题。传统的互联网协议,如 HTTP,由于其复杂性和较高的资源消耗,并不适合这些受限设备。CoAP 协议应运而生,其设计目标主要包括以下几点:
- 适应受限环境:能够在低功耗、低计算能力的设备上运行,减少对设备资源的占用。例如,在智能家居系统中,许多传感器节点采用电池供电且计算芯片性能有限,CoAP 协议可确保这些设备在有限资源下实现稳定通信。
- 高效通信:在低带宽、高延迟和不稳定的网络环境中,实现高效的数据传输。以工业物联网场景为例,工厂车间内的网络信号容易受到各种干扰,CoAP 协议通过自身机制保障数据的有效传输。
- 与现有互联网集成:能与传统的互联网协议和应用进行交互,便于物联网设备融入现有的互联网生态。
二、CoAP 协议的特点
- 轻量级:CoAP 协议的设计极为简洁,消息头和选项字段较少,占用的网络带宽和资源极少。其消息格式紧凑,采用二进制编码,大大减少了数据传输量。相比 HTTP 协议,CoAP 的消息头最小仅为 4 字节,而 HTTP 消息头通常几十字节甚至更多,这使得 CoAP 在资源受限的设备和网络中具有明显优势。
- 基于 UDP:CoAP 通常运行在 UDP 之上,而非 TCP。UDP 的无连接特性使得 CoAP 更适用于追求无连接、低延迟和高效率的通信场景。同时,CoAP 通过自身的机制,如使用 CON(Confirmable)可确认消息和 ACK(Acknowledgment)确认消息,来保障消息的可靠性。例如,在智能交通系统中,车辆与路边设施之间需要快速交换信息,CoAP 基于 UDP 的特性能够满足这种低延迟的通信需求。
- RESTful 架构:采用 RESTful 架构风格,与 HTTP 类似,支持 GET、POST、PUT 和 DELETE 等常用的 HTTP 方法,用于资源的读取、创建、更新和删除操作。它使用统一资源标识符(URI)来标识资源,客户端可通过 URI 定位和操作特定资源。这种架构风格使得 CoAP 具有良好的可读性和可扩展性,方便开发人员理解和使用。
- 低能耗和低带宽消耗:针对资源受限设备和网络进行了优化,具有出色的低能耗和低带宽消耗特性。例如,通过观察(Observing)模式,客户端可以订阅服务器上资源的变化,服务器在资源状态改变时主动向客户端推送数据,减少了不必要的轮询请求,降低了通信开销;分组(Grouping)机制则允许对多个设备进行批量操作,提高了通信效率。在智能农业中,大量分布在农田中的传感器节点需要长期依靠电池供电,CoAP 的低能耗特性可有效延长电池使用寿命。
- 支持 IP 多播:允许一对多的通信方式,对于物联网中多个设备同时接收更新或指令的场景非常实用。比如在智能城市的照明系统中,可通过多播方式同时向大量路灯发送开关或调光指令,提高控制效率。
- 可靠性:尽管基于 UDP,但 CoAP 协议通过重传和确认机制来确保消息的可靠传递。发送方在一定时间内未收到确认消息时,会自动重发消息,直到收到确认或达到最大重传次数。这一机制保证了在不可靠的网络环境下,关键数据也能准确送达。
- 安全性:可与 DTLS(Datagram Transport Layer Security)结合使用,提供端到端的安全通信。DTLS 基于 UDP 设计,能够在保障安全的同时,尽量减少对设备资源和通信开销的影响,确保 CoAP 通信的机密性和完整性。在医疗健康领域,可穿戴设备与医疗服务器之间传输敏感的健康数据时,通过 CoAP 结合 DTLS 可保障数据安全。
- 自定义选项:允许在消息头中包含自定义选项,以满足特定应用的需求,这使得它在不同场景下具有很强的灵活性和可扩展性。例如,在一些特殊的工业控制场景中,可以通过自定义选项传递特定的控制指令或设备状态信息。
三、CoAP 协议的工作原理
CoAP 协议采用请求 - 响应模型,类似于 HTTP。客户端通过发送请求消息来获取、修改或操作服务器上的资源,服务器则返回相应的响应消息。
- 消息类型:
- 可确认消息(CON):需要接收方返回确认消息(ACK),以确保消息可靠传输。若发送方在规定时间内未收到 ACK,将重发 CON 消息。
- 不可确认消息(NON):无需接收方确认,适用于对可靠性要求不高、数据量较小的场景,如一些实时性要求高但偶尔丢失少量数据不影响整体功能的传感器数据上报。
- 确认消息(ACK):用于响应 CON 消息,告知发送方消息已成功接收。
- 重置消息(RST):当接收方收到无法处理的消息时,发送 RST 消息通知发送方。
2.请求方法:支持与 HTTP 类似的方法,如:
- GET:用于获取资源的当前状态或数据。例如,智能家居系统中,手机客户端向智能温度传感器发送 GET 请求,获取当前室内温度。
- POST:用于在服务器上创建新的资源或向现有资源提交数据。如在智能灌溉系统中,传感器将采集到的土壤湿度数据通过 POST 请求发送给服务器,服务器根据这些数据判断是否需要启动灌溉设备。
- PUT:用于更新服务器上资源的状态或数据。比如,用户通过手机应用远程调整智能恒温器的目标温度,就是向恒温器设备发送 PUT 请求,更新其温度设定值。
- DELETE:用于删除服务器上指定的资源。在一些设备管理系统中,可通过 DELETE 请求删除不再使用的设备资源记录。
3.资源发现:内置资源发现机制,通过 “core” 标准资源实现。设备可通过查询其他设备上的 “core” 资源,获取该设备上可用资源的列表,了解有哪些资源可供访问以及如何与之交互。在一个新的物联网设备加入智能家居网络时,它可以通过资源发现机制自动找到网络中其他设备的可用资源,如智能灯泡的亮度调节资源、智能门锁的开锁控制资源等。
四、CoAP 协议的应用场景
- 智能家居自动化:由于其低开销和高可靠性,在智能家居系统中得到广泛应用。各种智能家居设备,如智能灯泡、智能插座、智能窗帘、智能摄像头等,可使用 CoAP 协议进行通信。不同品牌和类型的设备基于 CoAP 协议能够实现高度的互操作性,新设备也能轻松加入网络。用户可以通过手机应用,利用 CoAP 协议向智能灯泡发送 GET 请求获取其当前亮度状态,或发送 PUT 请求调整亮度;向智能插座发送 POST 请求控制电器的开关等。
- 工业物联网:在工业领域,可靠性和效率至关重要。传感器、执行器、工业控制器等设备可使用 CoAP 协议进行通信,实现对工业过程的实时监控和控制。例如,在工厂的生产线中,通过 CoAP 协议,温度传感器、压力传感器等将采集到的数据实时发送给控制系统,控制系统根据这些数据通过 CoAP 协议向执行器发送控制指令,调整生产过程。CoAP 对组播通信的支持,使得在工业场景中,一个设备可以同时向多个相关设备发送控制信号或数据更新,提高了生产控制的效率和实时性。
- 可穿戴设备与医疗健康:可穿戴设备如智能手环、智能手表,以及医疗健康领域的各种监测设备,如心率监测仪、血压监测仪等,通常为小型电池供电设备,需要相互通信或与中央服务器通信。CoAP 协议的低开销和低功耗需求,使其成为这类应用场景的理想选择。例如,智能手环通过 CoAP 协议将实时监测到的心率、运动步数等数据发送给手机或云端服务器,医生可以通过远程服务器,利用 CoAP 协议获取患者医疗监测设备的数据,实现远程医疗诊断和健康管理。
- 能源管理:在能源管理系统中,CoAP 协议用于实现对能源使用的实时监控和控制。智能电表可以通过 CoAP 协议将实时电量数据发送给能源管理中心,能源管理控制器也可通过 CoAP 协议向智能插座、智能家电等设备发送控制指令,实现对能源消耗的优化管理。比如,在用电高峰时段,能源管理系统通过 CoAP 协议向一些非关键的智能家电发送指令,降低其功率或暂时关闭,以平衡电网负载。
- 智能交通:在智能交通系统中,车辆与车辆之间(V2V)、车辆与基础设施之间(V2I)的通信对实时性和可靠性要求极高。CoAP 协议基于 UDP 的低延迟特性以及自身的可靠性机制,能够满足这种需求。例如,车辆通过 CoAP 协议接收交通信号灯的状态信息,提前调整车速,避免不必要的停车和启动,提高交通流畅性;交通管理中心也可以通过 CoAP 协议向车辆发送路况信息、限行指令等。
- 环境监测:在环境监测领域,分布在不同区域的大量传感器,如空气质量传感器、水质传感器、气象传感器等,需要将采集到的数据传输到监测中心。这些传感器设备通常资源有限,且所处环境网络条件复杂。CoAP 协议的轻量级和适应复杂网络环境的特点,使其能够胜任这一任务。传感器通过 CoAP 协议将监测数据发送给附近的网关设备,网关再将数据转发至监测中心,实现对环境数据的实时监测和分析。
相关文章:
CoAP 协议介绍及应用场景
CoAP 协议,即受限应用协议(Constrained Application Protocol),是专为资源受限的设备和网络设计的一种应用层协议 ,旨在让小型、低功耗的设备能够接入物联网(IoT),并以最小的资源与更…...
【并发编程】基于 Redis 手写分布式锁
目录 一、基于 Redis 演示超卖现象 1.1 Redis 超卖现象 1.2 超卖现象解决方案 二、Redis 的乐观锁机制 2.1 原生客户端演示 2.2 业务代码实现 三、单机部署 Redis 实现分布式锁 3.1 分布式锁的演变和升级 3.2 setnx 实现分布式锁 3.2.1 递归调用实现分布式锁 3.2.2 循…...
adb命令查询不到设备?
一、背景 -----以鸿蒙系统为例,其他系统类似--- 1、确保adb在电脑上成功安装 2 、连接手机 adb devices 列表中无显示设备 二、解决 1. 手机打开开发者模式 手机型号不同,所以选项不一样 2. 一般流程是:设置--搜索--“开发”--会出现开…...
JavaScript 数组去重:11 种方法对比与实战指南
文章目录 前言一、使用 Set 数据结构二、使用 filter indexOf三、使用 reduce 累加器四、双重 for 循环五、利用对象属性唯一性六、先排序后去重七、使用 Map 数据结构八、使用 includes 方法九、优化处理 NaN 的 filter 方法十、利用 findIndex十一.利用Set和展开运算符处理多…...
SlideLoss与FocalLoss在YOLOv8分类损失中的应用及性能分析
文章目录 一、引言二、YOLOv8 损失函数概述三、SlideLoss 详解(一)SlideLoss 的原理(二)SlideLoss 的代码实现 四、FocalLoss 分类损失函数详解(一)FocalLoss 的原理(二)FocalLoss 的…...
AI 驱动数据库交互技术路线详解:角色、提示词工程与输入输出分析
引言 在人工智能与数据库深度融合的趋势下,理解AI在数据库交互流程中的具体角色、提示词工程的运用以及各步骤的输入输出情况,对于把握这一先进技术路线至关重要。本文将对其展开详细剖析。 一、AI 在数据库交互流程中的角色 (一࿰…...
Jmeter中的BeanShell如何使用?
在JMeter中,BeanShell 是一种基于Java语法的脚本工具,可以通过编写脚本实现动态逻辑处理、变量操作、条件判断等功能。以下是BeanShell的详细使用方法和常见场景示例: 1. BeanShell组件类型 JMeter提供多种BeanShell组件,根据场…...
JDBC工具类的三个版本
一、JDBC连接数据库的7个步骤 1、加载驱动 2、获取连接 3、编写sql 4、获取执行sql的stmt对象 有两种 stmt(存在sql注入问题 字符串拼接) pstmt(预编译可以防止sql注入) 5、执行sql 拿到结果集 6、遍历结果集 7、关闭资源…...
安达发|制药车间生产计划准备性的关键影响因素及优化策略研究
在高度规范的制药行业,生产计划的准备性直接影响企业的运营效率和合规水平。根据FDA统计,2024年因生产计划不当导致的药品短缺案例增加了23%,暴露出制药企业在生产计划管理方面的系统性挑战。本文将从设备、物料、人员、环境、法规五个维度&a…...
独立按键控制LED
目录 1.独立按键介绍 2.原理图 3.C51数据运输 解释:<< >> 编辑 解释:& | 解释:^ ~ 编辑 4.C51基本语句 5.按键的跳动 6.独立按键控制LED亮灭代码 第一步: 第二步: 第三步࿱…...
【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用
目录 一、getters 二、 mapState 三、 mapGetters 四、 mapMutations 五、 mapActions 学到这儿来个小总结:四个map方法的使用 总结不易~ 本章节对我有很大的收获, 希望对你也是!!! 本节素材已上传至Gitee&…...
小程序初始化加载时间优化 步骤思考与总结
回想起来,正确的小程序初始加载时间优化步骤应该为: 一、梳理小程序初始化的步骤,以用户点击小程序为开始(尽可能靠近),以页面渲染出来的时刻为结束—也就是用户感知到的时间。 二、页面渲染时࿰…...
前端弹性布局:用Flexbox构建现代网页的魔法指南
引言:布局的进化史 在网页设计的黑暗时代(2010年前),开发者们用float、position和inline-block这些原始工具进行布局,就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范,前端世界终于迎…...
Python基于Django的高校教室管理系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践
金仓数据库在金融行业的两地三中心容灾架构实践 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 引言 随着国家对信息技术应用创新࿰…...
利用多AI协作实现AI编辑器高效开发:创新架构与实践基本构想
在当今快速发展的科技领域,AI技术正以前所未有的速度重塑软件开发的流程和模式。传统的软件开发过程往往需要不同专业人员协同合作,从需求分析到产品设计,再到技术实现,每个环节都需要耗费大量的时间和人力。然而,随着…...
【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
我们非常高兴地向大家介绍 Seed-Coder,它是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体。Seed-Coder 通过以下亮点促进开放代码模型的发展。 以模型为中心:Seed-Coder主要利用大语言模型&#…...
C++GO语言微服务之gorm框架操作MySQL
目录 01 01-gorm介绍 02 02-MySQL操作回顾 03 03-gorm创建表 04 04-MySQL的init函数说明 05 05-gorm框架提供的MySQL连接池 06 06-gorm插入数据 07 07-gorm查询数据 08 08-gorm更新数据 09 09-gorm软删除-创建表 10 10-gorm软删除-实现 11 10-MySQL的8小时时区问题 …...
Webug4.0靶场通关笔记-靶场搭建方法(3种方法)
目录 一、虚拟机绿色版本 1. 开启phpstudy 2. 访问靶场 二、Docker版本 1.拉取镜像 2.启动镜像 三、源码安装版本 1. 搭建环境 (1)安装PHPStudy (2)WeBug4.0靶场源码 (3)安装Navicat ÿ…...
HTTP/3展望、我应该迁移到HTTP/2吗
1. HTTP/3展望 HTTP/3 基于 QUIC 协议,完全解决了“队头阻塞”问题,弱网环境下的表现会优于 HTTP/2;QUIC 是一个新的传输层协议,建立在 UDP 之上,实现了可靠传输;QUIC 内含了 TLS1.3,只能加密通…...
【Linux基础】系统监控和进程管理指令
目录 ps命令 top命令 kill命令 killall命令 1.1 命令介绍 1.2 命令格式 1.3 常用选项 1.4 示例 1.4.1 交互模式确认 1.4.2 指定信号 shutdown命令 ps命令 作用:查看当前进程信息。 常用选项: 作用 -e 显示所有进程,包括其他用户…...
【Linux实践系列】:进程间通信:万字详解共享内存实现通信
🔥 本文专栏:Linux Linux实践项目 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 人生就像一场马拉松,重要的不是起点,而是坚持到终点的勇气 ★★★ 本文前置知识: …...
无法更新Google Chrome的解决问题
解决问题:原文链接:【百分百成功】Window 10 Google Chrome无法启动更新检查(错误代码为1:0x80004005) google谷歌chrome浏览器无法更新Chrome无法更新至最新版本? 下载了 就是更新Google Chrome了...
CenOS7切换使用界面
永久切换 在开始修改之前,我们首先需要查看当前的启动模式。可以通过以下命令来实现: systemctl get-default执行此命令后,系统会返回当前的默认启动模式,例如graphical.target表示当前默认启动为图形界面模式。 获取root权限&…...
# YOLOv3:深度学习中的目标检测利器
YOLOv3:深度学习中的目标检测利器 引言 在计算机视觉领域,目标检测是一项核心任务,它涉及到识别图像或视频中的物体,并确定它们的位置。随着深度学习技术的快速发展,目标检测算法也在不断进步。YOLO(You …...
2025数维杯数学建模A题完整参考论文(共36页)(含模型、可运行代码、数据)
2025数维杯数学建模A题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、符号定义与说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2模型…...
在 Flink + Kafka 实时数仓中,如何确保端到端的 Exactly-Once
在 Flink Kafka 构建实时数仓时,确保端到端的 Exactly-Once(精确一次) 需要从 数据消费(Source)、处理(Processing)、写入(Sink) 三个阶段协同设计,结合 Fli…...
Python数据分析
目录 一、数据分析的核心流程 (一)明确数据分析目标 (二)数据收集 (三)数据清洗 1. 处理缺失值 2. 去除重复值 3. 修正错误值和异常值 (四)数据探索与可视化 1. 计算描述性…...
Java单例模式总结
说明:单例模式的核心是确保一个类只有一个实例,并提供全局访问点。饿汉式和懒汉式是两种常见的实现方式 一、饿汉式和懒汉式 1. 饿汉式(Eager Initialization) public class EagerSingleton {// 类加载时直接初始化实例private…...
《P7167 [eJOI 2020] Fountain (Day1)》
题目描述 大家都知道喷泉吧?现在有一个喷泉由 N 个圆盘组成,从上到下以此编号为 1∼N,第 i 个喷泉的直径为 Di,容量为 Ci,当一个圆盘里的水大于了这个圆盘的容量,那么水就会溢出往下流,直到…...
Pycharm(二十)张量的运算与操作
一、张量的数据类型转换 1.演示data.type(trch.DoubleTensor) #1.创建张量对象 [6 6 6;6 6 6] datatorch.full([2,3],6) print(data.dtype)#默认为torch.int64(LongTensor) #2.转化为double类型 datadata.type(torch.DoubleTensor) print(data.dtype) #3.转换成int类型 datad…...
JVM之内存管理(二)
部分内容来源:JavaGuide二哥Java 说⼀下 JDK1.6、1.7、1.8 内存区域的变化? JDK1.6、1.7/1.8 内存区域发⽣了变化,主要体现在⽅法区的实现: JDK1.6 常量池在方法区 JDK1.7 JDK1.6 使⽤永久代实现⽅法区:JDK1.7 时发…...
蓝桥杯嵌入式第十一届省赛真题
(一)题目 首先要知道P37对应的CubeMx上面的引脚是PB15,给PB15设置成ADC采集。使用到的PA6和PA7的端口要进行定时器配置 100Hz80 000 000/800 *1000 200Hz80 000 000/400 *1000 ADC采集只需要选择好adc1、adc2 再选择好它的通道就可以了,不…...
LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读
LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读 导读:这篇OpenAI帮助文档全面介绍了将GitHub连接到ChatGPT进行深度代码研究的方法、优势和注意事项。通过连接GitHub,用户可以充分利用ChatGPT强大的代码理解和生成…...
多环境开发
# 应用环境(公共环境,写一些公共配置) spring:profiles:active: dev --- # 设置环境 # 生产环境 spring:config:activate:on-profile: pro server:port: 80 --- # 开发环境 spring:config:activate:on-profile: dev server:port: 81 --- # 测试环境 spring:config:activate:on-…...
游戏引擎学习第269天:清理菜单绘制
回顾并为今天的工作设定目标 昨天我们对调试系统中的菜单处理做了一些清理工作,今天我想继续对它们的展示和使用方式进行一些打磨和改进。今天的计划还不完全确定,我还没有完全决定要做什么,但是我希望能够完成这部分工作,所以我…...
《解锁React Native与Flutter:社交应用启动速度优化秘籍》
React Native和Flutter作为当下热门的跨平台开发框架,在优化应用启动性能方面各有千秋。今天,我们就深入剖析它们独特的策略与方法。 React Native应用的初始包大小对启动速度影响显著。在打包阶段,通过精准分析依赖,去除未使用的…...
Web3 初学者的第一个实战项目:留言上链 DApp
目录 📌 项目简介:留言上链 DApp(MessageBoard DApp) 🧠 技术栈 🔶 1. Solidity 智能合约代码(MessageBoard.sol) 🔷 2. 前端代码(index.html script.js…...
Innovus 25.1 版本更新:助力数字后端物理设计新飞跃
在数字后端物理设计领域,每一次工具的更新迭代都可能为项目带来巨大的效率提升与品质优化。今天,就让我们一同聚焦 Innovus 25.1 版本(即 25.10 版本)的更新要点,探寻其中蕴藏的创新能量。 一、核心功能的强势进 AI…...
Git简介和发展
Git 简介 Git是一个开源的分布式版本控制系统,跨平台,支持Windows、Linux、MacOS。主要是用于项目的版本管理,是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间,Linux内核开发团队使…...
adb 实用命令汇总
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 基础adb命令 # 重启adb adb kill-server# 查看已连接的设备 adb devices# 进入命令行 adb shell# 使用 -s 参数来指定设备 adb -s <设备序列号> shell…...
DAX 权威指南1:DAX计算、表函数与计算上下文
参考《DAX 权威指南 第二版》 文章目录 二、DAX简介2.1 理解 DAX 计算2.2 计算列和度量值2.3 变量2.3.1 VAR简介2.3.2 VAR的特性 2.4 DAX 错误处理2.4.1 DAX 错误类型2.4.1.1 转换错误2.4.1.2 算术运算错误2.4.1.3 空值或 缺失值 2.4.2 使用IFERROR函数拦截错误2.4.2.1 安全地进…...
使用fdisk 、gdisk管理分区
用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令: fdisk 设备名 fdisk 命令以交互方式进行操作的,在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…...
Python----神经网络(《Deep Residual Learning for Image Recognition》论文和ResNet网络结构)
一、论文 1.1、论文基本信息 标题:Deep Residual Learning for Image Recognition 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 单位:Microsoft Research 会议:CVPR 2016 主要贡献:提出了一种深度残…...
PostgreSQL 的 pg_collation_actual_version 函数
PostgreSQL 的 pg_collation_actual_version 函数 pg_collation_actual_version 是 PostgreSQL 中用于检查排序规则实际版本信息的函数,主要与 ICU (International Components for Unicode) 排序规则相关。 函数基本概念 函数定义 pg_collation_actual_version(…...
使用Simulink开发Autosar Nvm存储逻辑
文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑,本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…...
嵌入式STM32学习——继电器
继电器模块引脚说明 VCC(): 供电正极。连接此引脚到电源(通常是直流电源),以提供继电器线圈所需的电流。 GND(-): 地。连接此引脚到电源的负极或地。 IN(或…...
更换内存条会影响电脑的IP地址吗?——全面解析
在日常电脑维护和升级过程中,许多用户都会遇到需要更换内存条的情况。与此同时,不少用户也担心硬件更换是否会影响电脑的网络配置,特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系,帮助读者理解这两者之间的本质…...
AWS SNS:解锁高并发消息通知与系统集成的云端利器
导语 在分布式系统架构中,如何实现高效、可靠的消息通知与跨服务通信?AWS Simple Notification Service(SNS)作为全托管的发布/订阅(Pub/Sub)服务,正在成为企业构建弹性系统的核心组件。本文深度…...
【Java ee初阶】网络编程 TCP
TCP的socket api 两个核心的类 ServerSocket 创建一个这样的对象,就相当于打开了一个socket文件。 这个socket对象是给服务器专门使用的 这个类本身不负责发送接收。 主要负责“建立连接” Socket 创建一个这样的对象,也就相当于打开了一个socket文…...