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

通信协议总结

IIC

基本特点

同步,半双工
标准100KHz,最高400KHz(IIC主要应用于低速设备)

硬件组成

需外接上拉电阻

通信过程

空闲状态

SDA和SCL都处于高电平

开始信号S和终止信号P

请添加图片描述

在数据传输过程中,当SCL=0时,SDA才可以跳变;当SCL=1时,SDA必须保持稳定,一旦有电平跳变就代表是起始信号或终止信号。

  • 起始信号S:SCL=1时,SDA由1->0
  • 终止信号P:SCL=1时,SDA由0->1
数据有效性

在这里插入图片描述

在数据传输过程中,当SCL=0时,SDA才可以跳变;当SCL=1时,SDA必须保持稳定,一旦有电平跳变就代表是起始信号或终止信号。

在SCL=1时,SDA数据线稳定,数据有效。

应答信号

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据

主机将SCL拉高,读取SDA电平:

  • SDA=0,表示有效应答位(ACK),表示从机已成功接收该字节
  • SDA=1,表示非应答位(NACK),表示从机接收该字节失败

每次传输时,接收方都要返回一个ACK给发送方,才能继续数据通信

IIC写数据

请添加图片描述

1.主机发送设备地址(前7位为设备地址,第8位代表W);
2.各从机比对自己的地址,匹配则发送ACK;
3.主机收到ACK,继续发送要访问的寄存器地址;
4.从机成功接收,发送ACK;
5.主机发送DATA。

写AT24C02时序:
在这里插入图片描述

IIC读数据

请添加图片描述

1.主机发送设备地址(前7位为设备地址,第8位代表W);
2.各从机比对自己的地址,匹配则发送ACK;
3.主机收到ACK,继续发送要访问的寄存器地址;
4.从机成功接收,发送ACK;
5.主机重新发送一个S信号,发送设备地址(第8位为R)
6.从机成功接收,发送ACK;
7.从机紧接着返回对应地址寄存器数据,直到主机不在返回ACK。

读AT24C02时序:
在这里插入图片描述

SPI

基本特点

同步、全双工
最高50MKHz

硬件组成

需外接上拉电阻

通信过程

包括主机和从机(可实现一主多从)
主机和从机构成一个环形结构,通过移位寄存器实现串行传输,这就意味着:

  • 写数据:必定会接收到从机的数据,丢弃即可
  • 读数据:必定需要向从机发送无用数据,才能读到需要的数据
    在这里插入图片描述
    在这里插入图片描述
一主多从
  • 多NSS
    在这里插入图片描述

  • 菊花链
    在这里插入图片描述
    数据流向:
    在这里插入图片描述
    所以不难发现,菊花链模式充分使用了SPI其移位寄存器的功能,整个链充当通信移位寄存器,每个从机在下一个时钟周期将输入数据复制到输出。

ISOSPI

在这里插入图片描述

CAN

基本特点

异步、半双工、差分
ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准(闭环,需要添加终端电阻120Ω,用于阻抗匹配,减少回波反射)
IS011519-2是针对通信速率为125Kbps以下的低速通信标准(开环)

硬件组成

CAN控制器、CAN收发器、终端电阻
在这里插入图片描述

电平标准

隐性电平:逻辑1(CAN_RX/TX=3.3v) 电压差=0V(CAN_H=2v,CAN_L=2v)
显性电平:逻辑0(CAN_RX/TX=0v) 电压差=2V(CAN_H=3.5v,CAN_L=1.5v)

通信过程

  1. 空闲状态
    当总线上的上出现连续的11位隐性电平,那么总线就处于空闲状态。

  2. 数据传输
    每次发送数据前,节点都会监听总线的状态,如果总线状态为空闲时,它就会立即向总线上发送自己的数据,这个数据里不仅有数据,还有本身的ID信息或者其他的控制指令,应称为数据包(数据帧),也叫做报文

  3. 仲裁机制(利用线与和回读机制

    以上只是节点1主动发送数据,但是万一节点1和节点2同时向节点3发送数据的时候,如何判定先后呢?采用非破坏性位仲裁机制,即对各个消息的标识符(即ID号)进行逐位仲裁(比较),如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。

    因为显性电平会覆盖隐性电平,两个节点同时发送报文时,0会将1覆盖(线与),而每个节点在发送完之后都会进行回读操作:如果自己发的1,都回来的却是0,那仲裁失败,进入空闲状态;自己发的和回读的一样则获得总线控制权。( ID:000000 00010 比 000000 00011 的优先级要高)

在这里插入图片描述

  1. 位时序
    can的数据帧中没有用于同步的标志,它的同步是靠位时序实现的。
    在这里插入图片描述
    CAN将一位又分为4段, 同步段(SS)、传播时间段(PTS)、相位缓冲段 1(PBS1)、相位缓冲段 2(PBS2)。分解后最小的时间单位是 Tq,而一个完整的位由 8~25 个 Tq 组成。通过这些段可以计算出CAN的波特率。
    在这里插入图片描述
    同时每一个段又能用来进行数据同步,分为硬同步和重新同步:
  • 硬同步:在帧起始信号时(SOF)同步总线上所有器件的位时序,无法确保后续一连串的位时序都是同步的(可以理解为节点在检测到帧起始信号时才开始“设置段”)

在这里插入图片描述

  • 重新同步:在检测到总线上的时序与节点使用的时序有相位差时(即总线上的跳变沿不在节点时序的 SS 段范围),通过延长 PBS1 段或缩短 PBS2 段,来获得同步。
    在这里插入图片描述

硬同步和重新同步都是使用SS段来检测,而同步的目的就是让SS段把跳变沿包含进来
区别在于:
硬同步是在数据传输开始时(SOF处)设置SS段包含跳变沿,类似于初始化;
重新同步是在数据传输过程中设置PBS段以实现SS段包含跳变沿

数据格式

传输的报文包括数据帧,遥控帧,错误帧,过载帧,帧间隔。

数据帧:
请添加图片描述
数据帧和遥控帧有标准格式和扩展格式两种格式,标准格式有 11 个位的ID,扩展格式有 29 个位的 ID。

  • SOF:联系前文可知,当数据帧发出第一位时(0为显性电位),总线就由空闲状态转为传输状态,同一时间只能允许一个节点传输数据。
  • Identify:接下来的仲裁段有11位,即本数据帧的 ID 信息,决定着数据帧发送的优先级,也决定着其它设备是否会接收这个数据帧,禁止高 7 位都为隐性(禁止设定:ID=1111111XXXX), ID 信息的作用:① 如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);② 目标节点通过 ID 信息来接受数据(验收滤波技术)。这些将在下文提出。
  • RTR:(Remote Transmission Request BIT) 位用于标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性(逻辑 0)。
  • IDE:(Identifier Extension Bit),是用于区分标准格式与扩展格式,在标准格式中 IDE 位为显性,在扩展格式里 IDE 位为隐性。
  • r0:保留位,必须以显性电平发送。
  • DLC:由 4 位组成,MSB 先行(高位先行),它的二进制编码用于表示本报文中的数据段含有多少个字节,DLC 段表示的数字为0到8,若接收方接收到 9~15 的时候并不认为是错误。
  • Data:数据帧的核心内容,它由 0~8 个字节(0 ~ 64位)组成,MSB 先行。
  • CRC:该段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;接收方以同样的算法计算 CRC 值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;计算和出错处理一般由 CAN 控制器硬件完成或由软件控制最大重发数。该段由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)组成,它为隐性位,主要作用是把CRC 校验码与后面的 ACK 段间隔起来。
  • ACK:由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位组成,在 ACK 槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答。在 ACK 槽和帧结束之间由 ACK 界定符间隔开,为隐性位。(发送 ACK/返回 ACK这个过程使用到回读机制,即发送方先在 ACK 槽发送隐性位后,回读到的总线上的电平为显性0,发送方才知道它发送成功了,不用重发)
  • EOF:由发送端发送 7 个隐性位表示结束。

无ACK:
在这里插入图片描述
有ACK:
在这里插入图片描述
在数据帧的拓展格式中,与标准格式不同处在于:

  • 仲裁段为 29 位;
  • 多出的SRR 位(Substitute Remote Request BIT),用于替代标准格式中的 RTR 位。SRR 位为隐性位,由于 RTR 在数据帧为显性位,所以在两个 ID 相同的标准格式报文与扩展格式报文中,标准格式的优先级较高;
  • 控制段中的 r1 和 r0 一样都为保留位,默认设置为显性位;
  • 扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX)

位填充
为防止突发错误而设定,CAN协议中规定,当相同极性的电平持续五位时,则添加一个极性相反的位。填充位的添加和删除是由发送节点和接收节点完成的,CAN-BUS只负责传输,不会操纵信号。请添加图片描述

stm32中的CAN

在这里插入图片描述

  • 具有 3 个发送邮箱,发送报文的优先级可以使用软件,可以记录发送的时间;
  • 有 2 个 3 级深度的接收 FIFO,可以使用过滤功能只接收或不接收某些 ID号的报文;
  • 不支持使用 DMA 进行数据收发
  • 可变的过滤器组(最多 28 个)。
接收FIFO

CAN的FIFO用于缓存CAN数据包,最多存放3个。一旦超出3个数据就无法收到新数据,需要及时读出,并释放邮箱。

接收消息分为:

  • 挂起:一旦FIFO有消息挂起位(pending)就会置位
  • 上溢:FIFO满了(最多有3个消息)
    在这里插入图片描述
过滤器组

过滤器用于在数据包送到接收FIFO之前,只接受指定数据,过滤掉不需要的数据。
每个过滤器X(共28个)由两个32位的寄存器组成:CAN_FxR1和CAN_FxR2

过滤器可设置两种筛选方法:

  • 标识符掩码:筛选一组符合条件的报文
    ID:指定ID的报文可进入FIFO中
    掩码:含义是根据CAN_FxR2中哪些位为1,筛选出ID这些位与CAN_FxR1中这些位相同的报文(即0xFFFF0000可筛选出前16位相同的报文)
  • 标识符列表:筛选两个符合条件的报文
    ID:只能筛选出两种指定ID的报文

在这里插入图片描述

DMA

DMA不属于通信协议,但和上述几个通信协议一起记录,是因为它们会经常关联使用

基本特点

DMA可以实现在没有CPU干预的情况下完成数据的传输

请添加图片描述

硬件组成

在这里插入图片描述
能够使用DMA的外设:
在这里插入图片描述

通信过程

配置DMA:

  • 传输模式:单次/循环
  • 传输方向:source,destination
  • 传输大小
  • 传输通道
  • 使能中断:发送完成中断,发送空闲中断,发送一半中断

优势

通过串口接收数据,若采用中断方式,在数据量很小的情况下很有用,但是一旦数据量大了,CPU将频繁被中断打断;而采用DMA+中断的方式,DMA只有在一次性传输size个数据(或者空闲)后才会请求DMA传输完成中断,告知CPU传输完成,而数据的传输工作都是由DMA完成的。

相关文章:

通信协议总结

IIC 基本特点 同步,半双工 标准100KHz,最高400KHz(IIC主要应用于低速设备) 硬件组成 需外接上拉电阻 通信过程 空闲状态 SDA和SCL都处于高电平 开始信号S和终止信号P 在数据传输过程中,当SCL0时,SDA才…...

Pinia + 组合式写法 + 选项式写法

选项式: 1.定义Store import { defineStore } from pinia// option api 选项式 export const useAlterStore defineStore(alter, {state: () > {return {num: 1}},getters: { // 可以看做是计算属性doubleCount: (state) > state.num * 2},actions: {// 同…...

vCenter-vAPI-Endpoint service health shows as Yellow

- 问题摘要:vAPI-Endpoint service health shows as Yellow - 解决方案/工作方法: 使用命令重启vAPI Endpoint service后该服务运行正常。 service-control --stop vmware-vapi-endpoint service-control --start vmware-vapi-endpoint VMware KB&…...

2018年全国大学生数学建模竞赛A题高温服装设计(含word论文和源代码资源)

文章目录 一、部分题目二、部分论文三、部分Matlab源代码问题11 求解h1h22 已知h1h2求解温度分布 问题21 求解第二层最佳厚度 四、完整word版论文和源代码(两种获取方式) 一、部分题目 2018 年高教社杯全国大学生数学建模竞赛题目 A 题 高温作业专用服…...

UEFA EURO 2024 GERMANY

UEFA EURO 2024 GERMANY 画个流程图,哈哈...

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中,资讯需要排版,一般都是在135编辑器排好以后,复制到平台中UEditor编辑器中,所以,他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器,发现人家就支持集成…...

C++ type list 模板

C 实现一个type list 模板,在编译期计算。这个type list主要有构造,列表头类型,列表尾类型,concat操作,去除列表元素重复,获取指定元素,删除指定元素的操作。实现代码贴在下面: #pr…...

vscode刷LeetCode算法题环境配置

首先,下载nodejs 在vscode中安装LeetCode插件 安装好进行配置 选择leetcode-cn 填上刚才下载node.exe的路径 完成之后重启一下vscode 重启之后登陆LeetCode 完成之后就可以看到题目了 点击 code now 就可以开始刷题了...

OpenCV报错已解决:Vector析构异常OpencvAssert CrtlsValidHeapPointer

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 在使用OpenCV进行图像处理时,我们可能会遇到Vector析构异常OpencvAssert CrtlsValidHeapPointer的问题。本文将…...

AudioLM音频生成模型

GPT-4o (OpenAI) AudioLM(Audio Language Model)是一种生成音频的深度学习模型。它可以通过学习语言模型的结构来生成连贯和高质量的音频信号。这类模型通常应用于语音合成、音乐生成和音频内容生成等领域。以下是一些与AudioLM相关的核心概念和技术细…...

Shardingsphere-Proxy 5.5.0数据迁移

Shardingsphere-Proxy 5.5.0数据迁移 Shardingsphere系列目录:背景配置集群部署搭建Zookeeper修改shardingsphere-proxy配置重启shardingsphere-proxy 执行数据迁移连接代理数据库实例(Navicate)应用代理数据库注册目标分片数据库存储单元注销…...

c语言中的for循环

在C语言中,for循环是控制结构之一,用于多次执行一段代码。其具体用法如下: 语法 for (初始化表达式; 条件表达式; 更新表达式) {// 循环体 }参数说明 初始化表达式:在循环开始前执行一次,用于初始化循环控制变量。条…...

大模型微调(finetune)方法

lora adapter prefix-tuning p-tuning prompt-tuning 大模型微调后灾难行遗忘 1、主流解决大模型微调后灾难行遗忘的方法是在微调过程中加入通用的指令数据。 2、自我蒸馏方法主要是通过模型本身对任务数据进行生成引导,构建自我蒸馏数据集,改变任务数…...

Bootstrap 5 卡片

Bootstrap 5 卡片 Bootstrap 5 是一个流行的前端框架,它提供了一套丰富的组件和工具,用于快速开发响应式和移动设备优先的网页。在 Bootstrap 5 中,卡片(Card)是一个非常重要的组件,用于展示内容,如文本、图片、列表等。卡片组件具有高度的灵活性和可定制性,可以轻松地…...

【ONLYOFFICE 8.1】的安装与使用——功能全面的 PDF 编辑器、幻灯片版式、优化电子表格的协作

🔥 个人主页:空白诗 文章目录 一、引言二、ONLYOFFICE 简介三、安装1. Windows/Mac 安装2. 文档开发者版安装安装前准备使用 Docker 安装使用 Linux 发行版安装配置 ONLYOFFICE 文档开发者版集成和开发 四、使用1. 功能全面的 PDF 编辑器PDF 查看和导航P…...

「51媒体」浙江地区媒体邀约

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 浙江地区的媒体邀约资源丰富多样,涵盖了电视台…...

2-18 基于matlab的关于联合对角化盲源分离算法的二阶盲识别(SOBI)算法

基于matlab的关于联合对角化盲源分离算法的二阶盲识别(SOBI)算法。通过联合对角化逼近解混矩阵。构建的四组信号,并通过认为设置添加噪声比例,掩盖信号信息。通过SOBI算法实现了解混。程序已调通,可直接运行。 2-18联合…...

C++中常用的标志库

标准库 C标准库是一个强大的工具集&#xff0c;它包含了一组丰富的类和函数&#xff0c;可以帮助开发者进行各种操作&#xff0c;如输入输出、字符串操作、数据结构管理、算法实现等。以下是一些常用的C标准库及其使用方法。 1. 输入输出库 <iostream> 用于标准输入输…...

近期计算机领域的热点技术

随着科技的飞速发展&#xff0c;计算机领域的新技术、新趋势层出不穷。本文将探讨近期计算机领域的几个热点技术趋势&#xff0c;并对它们进行简要的分析和展望。 一、人工智能与机器学习 人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;是近年来计算…...

HarmonyOS Next 系列之可移动悬浮按钮实现(六)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…...

如何获得更高质量的回答-chatgpt

在与技术助手如ChatGPT进行交互时&#xff0c;提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧&#xff0c;可以帮助你在与ChatGPT的互动中获得更有效的回答&#xff1a; 1. 清晰明了的问题 技巧&#xff1a;确保问题清晰明了&#xff0c;避免含糊不清或模糊的…...

ASP.NET Core 6.0 使用 Log4Net 和 Nlog日志中间件

前言 两年前,浅浅的学过 .NET 6,为啥要记录下来,大概是为了以后搭架子留下引线,还有抛砖引玉。 1. 环境准备 下载 建议使用 Visual Studio 2022 开发版 官网的下载地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具借助 Visual Studio 设计,具有自动完成…...

使用Spring Boot实现与ActiveMQ的消息队列集成

使用Spring Boot实现与ActiveMQ的消息队列集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 消息队列在现代分布式系统中扮演着至关重要的角色&#xff0c;…...

深度学习 - Transformer 组成详解

整体结构 1. 嵌入层&#xff08;Embedding Layer&#xff09; 生活中的例子&#xff1a;字典查找 想象你在读一本书&#xff0c;你不认识某个单词&#xff0c;于是你查阅字典。字典为每个单词提供了一个解释&#xff0c;帮助你理解这个单词的意思。嵌入层就像这个字典&#xf…...

ONLYOFFICE 8.1编辑器桌面应用程序来袭——在线全面测评

目录 ✈下载✈ &#x1f440;界面&#x1f440; &#x1f44a;功能&#x1f44a; &#x1f9e0;幻灯片版式的重大改进&#x1f9e0; ✂无缝切换文档编辑、审阅和查看模式✂ &#x1f3b5;在演示文稿中播放视频和音频文件&#x1f3b5; &#x1f917;版本 8.1&#xff1a…...

《Windows API每日一练》6.4 程序测试

前面我们讨论了鼠标的一些基础知识&#xff0c;本节我们将通过一些实例来讲解鼠标消息的不同处理方式。 本节必须掌握的知识点&#xff1a; 第36练&#xff1a;鼠标击中测试1 第37练&#xff1a;鼠标击中测试2—增加键盘接口 第38练&#xff1a;鼠标击中测试3—子窗口 第39练&…...

[C#]基于opencvsharp实现15关键点人体姿态估计

数据集 正确选择数据集以对结果产生适当影响也是非常必要的。在此姿势检测中&#xff0c;模型在两个不同的数据集即COCO关键点数据集和MPII人类姿势数据集上进行了预训练。 1. COCO&#xff1a;COCO关键点数据集是一个多人2D姿势估计数据集&#xff0c;其中包含从Flickr收集的…...

lambda-map.merge

map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)...

pppd 返回错误码 含义

错误码 00&#xff1a; pppd已经断开&#xff0c;或者已经成功建立连接后请求方又中 断了。 01&#xff1a; 发成了一个严重错误&#xff0c;例如系统调用失败或者访问非法内存。 02&#xff1a; 处理给定操作是检测到错误&#xff0c;例如使用两个互斥的操作。 03&#xff1a;…...

XML 技术

XML 技术 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它由万维网联盟(W3C)开发,并在1998年成为正式标准。XML的设计目标是既易于人类阅读,也易于机器解析。它是一种自描述的语言,允许用户定义自己的标签和文档结构。XML被广泛应用于各种领域,包括网络服…...

基于RabbitMQ的异步消息传递:发送与消费

引言 RabbitMQ是一个流行的开源消息代理&#xff0c;用于在分布式系统中实现异步消息传递。它基于Erlang语言编写&#xff0c;具有高可用性和可伸缩性。在本文中&#xff0c;我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。 安装RabbitMQ 在 Ubuntu 上安装 Rabbi…...

Golang | Leetcode Golang题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; func rangeBitwiseAnd(m int, n int) int {for m < n {n & (n - 1)}return n }...

竞争性谈判中,主要谈判什么内容?(电子化招采系统)

问&#xff1a;竞争性谈判中&#xff0c;主要谈判什么内容&#xff1f; 答&#xff1a;竞争性谈判是指采购人或代理机构通过与多家供应商&#xff08;不少于3家&#xff09;进行谈判&#xff0c;最后从中确定中标供应商的一种采购方式。在谈判的过程中&#xff0c;谈判的主要内…...

youlai-boot项目的学习(4) 前后端本地部署

环境 1、macOS, brew, IntelliJ IDEA, WebStrom 2、后端&#xff1a;https://gitee.com/youlaiorg/youlai-boot.git , master, 9a753a2e94985ed4cbbf214156ca035082e02723 3、前端&#xff1a;https://gitee.com/youlaiorg/vue3-element-admin.git, master, 66b913ef01dc880ad…...

Redis 5 种基础数据结构?

Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)在面试中经常会被问到&#xff0c;这篇文章我们一起来回顾温习一下。 还有几种比较特殊的数据结构(HyperLogLogs、Bitmap 、Geospatial、Stream)也非常重要&#xff0c;我们后面下次再聊&#xff01; 下面是正文。…...

搜维尔科技:SenseGlove Nova2国内首款支持手掌心力回馈手套开售

《SenseGlove Nova 2》现正全球发行中! 搜维尔科技独家代理最新上市的 SenseGlove Nova 2 是世上首款&#xff0c;也是目前市面上唯一一款提供手掌力回馈的无缐VR力回馈手套&#xff0c;它结合了三种最先进的反馈技术&#xff0c;包括主动反馈、强力反馈及震动反馈&#xff0c…...

Java中的函数式编程入门

Java中的函数式编程入门 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我来为大家介绍一下Java中的函数式编程。随着Java 8的发布&#xff0c;函数式编程成…...

idea 自动生成序列化数字

目标&#xff1a;当类继承Serializable后自动生成序列化Uid 网上查了很多说勾选class without ‘serialVersionUID’ 但是我勾选没用 最后发现&#xff0c;我勾选的是Serialization issues里面的配置&#xff0c;要勾选的是JVM languages下的 如下图所示&#xff0c;记录一下…...

Java数据结构算法(最长递增序列二分查找)

前言: 最长递增子序列&#xff08;Longest Increasing Subsequence, LIS&#xff09;是指在一个给定的序列中&#xff0c;找到一个最长的子序列&#xff0c;使得这个子序列中的元素是单调递增的。子序列不要求在原序列中连续。 实现原理 使用一个 tails 列表&#xff0c;其中…...

编译VTK静态库

编译VTK静态库遇到问题 vtkCommonCore-9.3d.lib(vtkSMPToolsAPI.obj) : error LNK2019: unresolved external symbol "public: bool __cdecl vtk::detail::smp::vtkSMPToolsImpl<1>::IsParallelScope(void)" (?IsParallelScope?$vtkSMPToolsImpl$00smpdetai…...

Python中的@property装饰器:深入理解与应用

Python中的property装饰器&#xff1a;深入理解与应用 在Python中&#xff0c;property装饰器是一个强大的工具&#xff0c;它允许我们将方法作为属性来访问&#xff0c;使得代码更加简洁、清晰&#xff0c;并提供了更好的封装性。本文将深入探讨property装饰器的工作原理、应…...

springCloudalibabaAI孵化(一)

目录 1、what 1、简介 2、核心概念 3、高级特性 Prompt 和 AiResponse 4、功能 2、How 1、前言 2、在项目 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依赖&#xff1a; 3、在 配置文件中加入以下配置&#xff1a;application.yml 4、编写聊天服务实现类&a…...

【封装】Unity编辑器模式GUID加载资源

介绍 在编辑器模式下通过GUID获取工程目录下的指定资源的接口工具封装 工具原理 借助AssetDatabaseAPI FindAssets : 获取 GUID GUIDToAssetPath : 通过GUID获取路径LoadAssetAtPath<T>: 通过路径加载资源 代码&#xff1a; public static class GetAssetUtil {pub…...

安装 Docker 环境(通过云平台创建一个实例实现)

目录 1. 删除原有 yum 2. 手动配置 yum 源 3. 删除防火墙规则 4. 保存防火墙配置 5. 修改系统内核。打开内核转发功能。 6. 安装 Docker 7. 设置本地镜像仓库 8.重启服务 1. 删除原有 yum rm -rfv /etc/yum.repos.d/* 2. 手动配置 yum 源 使用 centos7-1511.iso 和 Xi…...

MySQL之可扩展性(六)

可扩展性 向外扩展 12.重新均衡分片数据 如有必要&#xff0c;可以通过在分片间移动数据来达到负载均衡。举个例子&#xff0c;许多读者可能听一些大型图片分享网站或流行社区网站的开发者提到过用于分片间移动用户数据的工具。在分片间移动数据的好处很明显。例如&#xff…...

C++ | Leetcode C++题解之第202题快乐数

题目&#xff1a; 题解&#xff1a; class Solution { public:int ProductSum(int n){int sum 0;while(n){int temp n % 10;sum temp*temp;n / 10;}return sum;}bool isHappy(int n) {int slow n,fast n;// 快慢指针&#xff0c;找环的相遇位置do{slow ProductSum(slow)…...

NIST网络安全框架体系应用

NIST网络安全框架体系应用 NIST网络安全框架&#xff08;NIST Cybersecurity Framework, NIST CSF&#xff09;由美国国家标准与技术研究院&#xff08;NIST&#xff09;发布&#xff0c;是一套广泛应用于各种组织的网络安全管理指南。该框架通过识别、保护、检测、响应和恢复…...

【LeetCode】七、树、堆、图

文章目录 1、树结构2、二叉树3、二叉树的遍历4、堆结构&#xff08;Heap&#xff09;5、堆化6、图 1、树结构 节点、根节点、叶子节点&#xff1a; 高度、深度、层三者的示意图&#xff1a; 2、二叉树 相比其他树&#xff0c;二叉树即每个节点最多两个孩子&#xff08;两个分…...

FPGA PCIe加载提速方案

目录 1.bit流压缩 2.flash加载速度 3.Tandem模式 1.bit流压缩 set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 2.flash加载速度 打开bitstream setting&#xff0c;设置SPI的线宽和速率&#xff08;线宽按原理图设置&#xff0c;速率尽可能高&#xff09…...

Hi3861 OpenHarmony嵌入式应用入门--轮询按键

本篇介绍使用轮询方式读取gpio状态来判断按键状态。 原理图如下 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_idx id, hi_gpi…...