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

第二节——计算机网络(四)物理层

  • 车载以太网采用差分双绞线
  • 车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。传统以太网一般使用RJ45连接器连接。
  • 车载以太网物理层需满足车载环境下更为严格的EMC要求,100BASE-T1\1000BASE-T1对于非屏蔽双绞线的传输距离可达15m(屏蔽双绞线可达40m)
  • 车载以太网(如100BASE-T1)可以通过回音消除技术实现在一对双绞线上进行全双工通信。回音消除技术的主要过程:作为发送方时,节点会将自己的差分电压施加到双绞线上;而作为接收方时,节点会从总电压中减去自己施加的电压,从而得到对方节点发送的电压。此机制属于回音消除技术,也应用在其它以太网系统中。所以在全双工通讯的情况下,示波器是无法读取有效的波形,在单向发送或接收时就可以通过示波器测量相应的数据。

  • 车载以太网通信架构的每一条链路都是点对点连接,即每根电缆只连接2个节点。

  • CAN总线中,波特率=比特率。但在以太网中,波特率≠比特率。 这是因为以太网使用了不同的编码方案来传输数据。波特率是指每秒钟传输的符号数(symbols per second),而比特率是指每秒钟传输的比特数(bits per second)。编码方案决定了每个符号代表多少个比特。所以100BASE-T1中的100Mbps指的是比特率为100Mbps,而不是波特率。

  •  汽车以太网,涵盖了ISO/OSI分层模型的所有层

        

1、车载以太网诞生背景

        汽车以太网源于刷写时间的要求,当时BMW需要将1GB的数据在15min内刷完,使用CAN总线大概需要16h,而使用快速以太网100Base-TX可以达到目标。

        于是BMW在2008年将100Base-TX应用到OBD口。也就有了我们现在常听到的DoIP!

        而100Base-TX是基于两对双绞线的以太网,CAN等传统总线技术是基于一对双绞线,100Base-TX以太网相对于CAN来说,在总线上是没有优势的。

        因此BMW通过与Broadcom等公司合作,发明了基于一对双绞线的BroadR-Reach汽车以太网,这也就是后来被IEEE规范化的100Base-T1的以太网技术!

        当然,现在大多数厂商除了100Base-T1以外,也已经使用了1000Base-T1。现在可能1Gbps也都无法解决带宽需求。

2、车载以太网与其他总线对比 

3、车载以太网分类

汽车上使用的以太网分为两种,

 一个是车外:OBD对外的通信:一般通过100BASE-Tx技术。OBD对外通信是两对双绞线。在ISO13400-3中有一些描述,常规使用的是3、11、12、13 这四个引脚,当然还要外加一个8引脚的激活(Activation)线。这是一个通过OBD的对外的DoIP的诊断。

100BASE-TX,加激活线的原因(减少电磁干扰):100BASE-TX如果在车辆运行时使用,会对EMC的辐射干扰很大,辐射干扰超出限值限,并将在调频广播中引起声音接受失真。为了确保100BASE-TX的UTP以太网连接不会在运行时造成失真,所以添加了“激活线”,这种激活线可确保只有当外部的测试仪被连接时,车内100BASE-TX的UTP以太网连接才会被激活

标准:车载诊断标准ISO+13400-3中文 - 百度文库

一个是车内:ECU之间的通信:一般通过 100BASE-T1 或 1000BASE-T1 两种技术,具体使用哪种看ECU对通信速率的需求。出于对EMC干扰的考虑,我们选择使用1000BASE-T1的时候,会选择使用一对屏蔽双绞线。  

T1(1对双绞线,通过回音消除在一对双绞线上实现发送和接收):用于车内节点的通信

Tx(2对双绞线,一对专门用于发送数据TX±,另一对专门用于接收数据RX±):用于车内节点与车外节点的通信,常用于诊断

100BASE-T1:1对非屏蔽双绞线,最大传输距离为 15米。不支持自动协商机制。

1000BASE-T1(1G):1对屏蔽双绞线,最大传输距离为 15米

100BASE-TX:2对非屏蔽双绞线,最大传输距离为 100米。在汽车以太网中,100BASE-TX 标准本身并不强制要求使用激活线(Wake-up Line),但为了适应汽车环境的特殊需求,很多系统会添加激活线。

这个XXBASE的XX指的是比特率,不是波特率。

4、车载以太网应用的网络拓扑(域控制器)

车载以太网典型的网络拓扑是基于Domain架构的,在这种架构里,按逻辑功能将整车功能分为几个功能域,各家的分法可能有些差异,但大致上分为如信息娱乐域,自动驾驶域,车身域,动力域等;各个控制器通过以太网主干网连接,各子网节点通过CAN/LIN/ETH等连接到域控制器。  

在上图所示的以太网典型拓扑图里,OBD端通过快速以太网100BASE-TX连接(DoIP,一般做诊断的时候会用到快速以太网),车内主干网/子网通过T1以太网连接,根据带宽需求不同,可以选择100BASE-T1/1000BASE-T1。

 5、以太网命名规则

6、主流车载以太网 

        当下主流的车载以太网协议主要为IEEE 100BASE-T1以及IEEE 1000BASE-T1,常规使用可采用100BASE-T1,如果需要更高带宽,可选择1000BASE-T1。 

100Mbps或者1000Mbps并不是Ethernet的全双工模式,仅仅是它的半双工通信速率,如果全双工,按照CAN总线通信速率计算方式,Ethernet的通信速率翻倍。(指的是收和发均为100/1000Mbps,而不是收和发加起来才100/1000Mbps)

 100BASE-TX"带宽不共享" 意味着在全双工模式下,100BASE-TX的100Mbps带宽在每个方向上都是独立的,每个方向都可以达到100Mbps的带宽。这种模式下,数据传输效率更高,不存在数据冲突的问题。(100BASE-T1通常工作在全双工模式下,这意味着带宽是不共享的,每个方向都有独立的100Mbps带宽。1000BASE-T1同理。)

100BASE-T1、1000BASE-T1、100BASE-Tx,这三个都是同时收发,收支持100/1000,发支持1000,数据的发送和接收是同时进行的,并且不共享带宽。

100BASE-T1在物理连接上使用了一对双绞线实现全双工的信息传输(回音消除技术),而100BASE-TX则使用了两对双绞线实现全双工,一对用于收,另一对用于发。

同步方式:同步符号流。利用主节点和从节点可以解决此问题:主节点生成一个连续符号流,从节点与之同步。(100BASE-T1:微控制器的基础软件将PHY配置为主节点或从节点;1000BASE-T1:主/从节点不是固定的,而是使用自动协商机制进行协商)

100 BASE-T1相比100BASE-Tx具有更好的抗电磁干扰和抗噪声性能,以便于车辆可以在雷雨等恶劣天气中稳定通信。

6.1 100BASE-T1

"

7、100/1000BASE-T1编码规则

PHY模块结构:我们这里需要注意的是RXD 和TXD都是4个bit。

  • 物理层编码规则(以100BASE-T1、1000BASE-T1为例):首先,总线上的电平信号有三种:-1、0、1。数据和电平的编码转换关系如下表:(即2根线的电平即可表示3位bit
  • 主要数据到电平转换过程为以下四步:
  1. 首先从MII接收到数据(4bit 4bit...)
  2. (4B→3B时钟转换)接下来分割成(3bit3bit...)进行处理;接收MII传递的数据后,PHY层首先进行4B/3B转换。这种转换不是分块编码,仅是一种时钟转换,25MHz传输的4bit数据块(4B)转换成时钟频率为33.33MHz的3bit数据块(3B)(100/3=33.33)
  3. (3B→2T编码)根据上表,电平与数据编码的关系,转换为申平信号。即每3bit数据(3B)编码成一对三进制符号(2T),标称值分别为-1,0和+1。
  4. (2T→PAM3)完成了3B/2T编码的一对三进制符号(2T)后,为了能在双绞线上传输,需要将2T中的-1,0,+1对应成低电平,0或高电平,这种三电平脉冲幅度调制方式即PAM3。对应的电平值分别是-1V、0V、1V。

注:1)上面步骤的2、3是PCS子层。4是PMA层。

2)4B->3B时钟转换时,当输入数据位数不是3的倍数则必须插入1或2个填充位。填充位的值并不重要,因为他们将在接收端被移除,因而标准中没有规定填充位的值

总结一下,100BASE-T1物理层的工作原理就是通过4B/3B转换,3B/2T编码,PAM3调制,最终通过一对双绞线上的差分信号以及回音消除技术实现100Mb/s的全双工通信。

    

  

100Mbps 速度的由来:

在微控制器的每个时钟周期中,MII接口到来的数据是4个bit,PHY从MII接口收到数据后,会首先进行一个4B3B的转换,为了匹配25MHz*4bit=100Mbit/s的速率,PHY的MI接口时钟周期应该是33.3333M每次接收3bit,也实现了33.3333M*3bit=100Mbi t/s的速率。之后PHY要再进行3B2T的操作,将每次接收到的3个bit转化为2个申平值(取值范围是-1,01),具体的对应关系如上图中的表所示。3个bit有8种组合(即2的三次方),两个电平值有9种组成(即3的平方),所以后者可以覆盖前者。此时时钟周期仍然是33.333M,但是每个时钟周期中的两个电平就能够表示3个bit了,所以此时的数据速率仍然是100Mb it/s,每个电平实际上包含了1.5bit信息。最后一步是 PAM3,将逻辑的-1,0,1转化为在双绞线上的电压,所以,最终在总线上信号的波特率(每秒传输的符号数量)是66.666MH z,但是它实现了100Mbit/s的通信速率(每秒传输的比特数量)(66.66*1.5=100)即:66.6MHz的电压频率即可完成100Mbps数字信号的模拟传输

8、物理层

物理层主要作用:1)定义硬件接口;2)定义信号与编码;3)定义数据与信号之间的转换收发;4)确保发送方和接收方的时钟同步,以便正确接收数据。

 以太网设计的硬件主要由三个部分组成:

  • Processor:常见的MCU,MPU,SoC等
  • MAC:Media Access Control。介质访问控制,是典型的数字电路。
  • PHY:physical layer。物理层收发器,包含大量模拟器件。

        如下图所示,Processor通过DMA直接存储访问与MAC之间进行数据的交互,MAC通过MII介质无关接口与PHY之间进行数据的交互,考虑到芯片面积,以及数模电路混合架构等原因,常见的以太网硬件结构是:将MAC集成进Processor芯片,将PHY留在Processor片外,做成单独的收发器芯片。这也是为什么目前我们在市场看到不同的独立的PHY芯片。

MAC:将数字信号发送给PHY,又能接收PHY转换好的数字信号。

8.1 PHY模块

 对于其他总线(egCANLINFlexray),我们习惯简称TransceiverTrcv对于Ethernet,我们称对应Transceiver芯片为PHY芯片(Physical Layer,物理接口层)。PHY的主要作用是进行数/模转换,而软件处理中,只关注数字信号。

以太网所有物理层的功能全部集中在一个称为PHY的模块中,它将以太网控制器以及物理介质连接在一起,并且通过一个标准化接口MII连接,同时PHY模块与底层介质通过MDI接口连接,以100BSASE-T1所示,如下图所示:

PHY是IEEE802.3定义的标准模块,主要结构组成如下图所示。在发送数据时,PHY接收从MAC过来的数据,将并行的数据转化为串行流数据,按照物理层的编码规则把数据编码,再变为模拟信号把数据发出去。接收数据时的流程则相反。 

Process通过MII接口与PHY进行数据的交互,通过MIIM接口(MDIO/MDC)使用管理帧对PHY进行管理/控制。

1) 100BASE-TX PHY结构

PHY的内部分为了三个子层

PCS:Physical coding Sublayer编码子层,主要进行初始编码,实现特定于以太网速度和传输介质要求的子层中的一部分。

PMA:Physical Medium Attachment介质连接层,结余PMA和PCS之间,其中PM D是按照bit串行处理方式,而PCS则是按照数据块处理方式,因此PMA则是起到中间转换的作用,此外还起到数据冲突检测的功能。

PMD:Physical Medium Dependent介质依赖层,主要职责是转换PMA的数据与实际网络上的信号。发送时,它从PMA读取数据并执行实现该功能所需的必需的低级行编码功能设计的媒介。接收时,它会读取并解释这些内容编码信号,然后将它们转换回位以发送到PMA。

2) 100BASE-T1 PHY结构

PHY的内部分为了两个子层:

PCS物理编码子层:实现MII接口和PMA的数据收发,进行4B/3B和3B/2T编码,

PMA物理介质连接子层:实现PCS和物理介质之间的收发,并且提供连接管理和PHY控制功能。

同样​以信号发送为例,100BASE-T1在进行信号传输时,主要进行了以下几个过程处理。

1. PHY的PCS物理编码子层以25MHz的速率从MII接收数据位宽为4bit的数据,然后使用4B/3B分块编解码技术进行编码,把4Bit的数据转换为3bit的code-Group,如果数据长度不是3bit的整数倍,在帧结束时还需要插入1或2bit的填充位。

2. PCS进一步会把3bit的比特字映射到三级符号,即3B/2T映射。把经过扰码后的3比特字Sdn[2:0]映射到三级符号向量(An,Bn)。当PHY处于不同的模式(空闲模式,数据模式)时,有不同的映射关系。

3. PCS转换后的数据以33.3MHz(25MHz*4bit/3bit = 33.3MHz)的速率传递给PMA物理介质连接子层,接着PMA将2D的三级符号向量转换为1D,然后使用PAM3三级脉冲幅度调制发送信号。

4. 经过上述处理后,PHY以66.7MBaud(100/3*2)波特率将数据传输到双绞线上。

常见的100BASE-T1车规级的物理层(PHY)有以下几种,

博通:BCM89810、BCM89811;

恩智浦:TJA1100、TJA1102。

使用不同的速率的Ethernet,对应的PHY芯片不同。不同通信速率的以太网标准有不同的物理层要求,因此需要不同的PHY芯片来实现这些要求。

虽然不同速率的以太网通常需要不同的PHY芯片,但市场上也存在一些多速率PHY芯片,它们可以支持多种速率。例如,有些PHY芯片可以同时支持10/100/1000 Mbps的速率,或者支持1000BASE-T和10GBASE-T。这些多速率PHY芯片通常用于需要灵活适应不同网络环境的设备,如交换机、路由器和网络适配器

相关文章:

第二节——计算机网络(四)物理层

车载以太网采用差分双绞线车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。传统以太网一般使用RJ45连接器连接。车载以太网物理层需满足车载环境下更为严格的EMC要求,100BASE-T1\1000BASE-T1对于非屏蔽双绞线的传…...

【接口封装】——11、Qt 的单例模式

宏定义: Q_GLOBAL_STATIC(NotifyManager,theInstance) 函数定义: class NotifyManager : public QObject {Q_OBJECTpublic:NotifyManager(QObject *parent nullptr);~NotifyManager();static NotifyManager*getInstance(); //单例模式 } 源代码&#…...

理解字母形状,从而获得含义

英文字母,都是象形符号,所以,理解其形象,所象之形,是一项重要的工作,和非常有意义事情。也是我们快速记住大量单词,将单词从底层逻辑开始理清,融会贯通扩展记忆容量的重要办法之一。…...

redis揭秘-redis01-redis单例与集群安装总结

文章目录 【README】【1】安装单机【1.1】安装环境【1.2】安装步骤 【2】redis集群主从模式配置【2.1】集群架构【2.2】redis集群主从模式搭建步骤【2.3】redis集群主从模式的问题(单点故障问题) 【3】redis集群哨兵模式配置【3.1】集群架构【3.2】redis…...

mini-spring源码分析

IOC模块 关键解释 beanFactory:beanFactory是一个hashMap, key为beanName, Value为 beanDefination beanDefination: BeanDefinitionRegistry,BeanDefinition注册表接口,定义注册BeanDefinition的方法 beanReference:增加Bean…...

RVO动态避障技术方案介绍

原文:RVO动态避障技术方案介绍 - 哔哩哔哩 我们在开发游戏的时候经常会遇到这样的问题,当我们寻路的时候,其它人也在寻路,如何避免不从其它人的位置穿过。这个叫做动态避障,目前主流的解决方案就是RVO。本节我们来介绍…...

HTML CSS JS基础考试题与答案

一、选择题&#xff08;2分/题&#xff09; 1&#xff0e;下面标签中&#xff0c;用来显示段落的标签是&#xff08; d &#xff09;。 A、<h1> B、<br /> C、<img /> D、<p> 2. 网页中的图片文件位于html文件的下一级文件夹img中&#xff0c;…...

【C语言】二叉树(BinaryTree)的创建、3种递归遍历、3种非递归遍历、结点度的实现

代码主要实现了以下功能&#xff1a; 二叉树相关数据结构定义 定义了二叉树节点结构体 BiTNode&#xff0c;包含节点数据值&#xff08;字符类型&#xff09;以及指向左右子树的指针。 定义了顺序栈结构体 SqStack&#xff0c;用于存储二叉树节点指针&#xff0c;实现非递归遍历…...

MySQL Workbench 数据库建模详解:从设计到实践

目录 数据库建模基础概念MySQL Workbench 简介与安装 什么是 MySQL Workbench&#xff1f;安装与环境配置 MySQL Workbench 数据库建模功能详解 EER 图&#xff08;实体关系图&#xff09;数据库反向工程数据库正向工程模型同步与版本管理 MySQL Workbench 数据库建模实战教程…...

【字体】Fire Code连字效果开启

Vscode 开启方法 1、设置字体Fire Code 放在最前面的即可&#xff1a; 2、启用连字 继续往下找到“在 settings.json 中编辑”&#xff0c;然后设置"editor.fontLigatures": true &#xff1a; 保存即可。 Sublime 开启方法 设置中设置字体后&#xff0c;启…...

springboot kafka在kafka server AUTH变动后consumer自动销毁

前言 笔者使用了kafka用来传输数据&#xff0c;笔者在今年10月写了文章&#xff0c;怎么使用配置化实现kafka的装载&#xff1a;springboot kafka多数据源&#xff0c;通过配置动态加载发送者和消费者-CSDN博客 不过在实际运行中&#xff0c;kafka broker是加密的&#xff0c…...

第六届国际科技创新(IAECST 2024)暨第四届物流系统与交通运输(LSTT 2024)

重要信息 会议官网&#xff1a;www.lstt.org 大会时间&#xff1a;2024年12月6-8日 大会地点&#xff1a;中国-广州 简介 第六届国际科技创新暨第四届物流系统与交通运输国际&#xff08;LSTT 2024&#xff09;将于2024年12月6-8日在广州举办&#xff0c;这是一个集中探讨…...

【Vue3】【Naive UI】< a >标签

【Vue3】【Naive UI】< a >标签 超链接及相关属性其他属性 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;n-button&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;a&#xff1e; 标签 <a> 标签HTML中的一个锚&…...

Fortran mpi在Linux的安装

最近编译一个程序需要需要 Fortran mpi 编译器&#xff0c;则需要安装 Fortran编辑器和MPI库&#xff0c;以下是具体的安装步骤&#xff1a; 一、安装 Fortran 编译器&#xff08;gfortran&#xff09; 在conda环境中安装&#xff1a; conda install -c conda-forge gfortra…...

蓝桥-希尔排序模板题

第一眼看到这个题还在想希尔排序模板不记得了&#xff0c;于是去网上了搜了一个&#xff0c;但是考虑到这种题只看测试点能不能通过&#xff0c;于是用Arrays方法试了一下&#xff0c;发现也可以。 1.希尔排序模板ac代码 package yunkePra;import java.util.Scanner;public cl…...

深入学习指针(5)!!!!!!!!!!!!!!!

文章目录 1.回调函数是什么&#xff1f;2.qsort使用举例2.1使用qsort函数排序整形数据2.2使用sqort排序结构数据 3.qsort函数的模拟实现 1.回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递…...

windows 应用 UI 自动化实战

UI 自动化技术架构选型 UI 自动化是软件测试过程中的重要一环&#xff0c;网络上也有很多 UI 自动化相关的知识或资料&#xff0c;具体到 windows 端的 UI 自动化&#xff0c;我们需要从以下几个方面考虑&#xff1a; 开发语言 毋庸置疑&#xff0c;在 UI 自动化测试领域&am…...

nodejs相关知识介绍

1、nodejs官方文档&#xff1a; https://nodejs.org/zh-cn nodejs可以用nvm进入安装&#xff1b; 2、npm说明&#xff1a; npm官方教程&#xff1a;https://npm.p2hp.com/ npm是 Node.js 的标准包管理器&#xff0c;也就是说nodejs安装好&#xff0c;npm也就安装好了&#…...

How to monitor Spring Boot apps with the AppDynamics Java Agent

本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。 使用 AppDynamics Java 代理可以&#xff1a; 监视应用程序使用环境变量配置 AppDynamics Java 代理 在 AppDynamics 仪表板中检查所有监视数据 How to monitor Spring Boot app…...

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本。 原因是&#xff1a;当前操作系统版本为Windows Server 2016 Standard版本&#xff0c;其自带的Microsoft .NET Framework 版本为4.6太低&#xff0c;不满足要求。 根据报错的提示&#xff0c;点击链接…...

TypeScript核心语法(5)——函数

简介​ 函数的类型声明&#xff0c;需要在声明函数时&#xff0c;给出参数的类型和返回值的类型。 function hello(a: string): void {console.log("hello " txt); } 上面示例中&#xff0c;函数hello()在声明时&#xff0c;需要给出参数a的类型&#xff08;stri…...

【MyBatis】验证多级缓存及 Cache Aside 模式的应用

文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口&#xff0c; 采用 Redis 会引入什么问题&#xff1f;万一遇到需强一致场景&#x…...

ARIMA-神经网络混合模型在时间序列预测中的应用

ARIMA-神经网络混合模型在时间序列预测中的应用 1. 引言 1.1 研究背景与意义 时间序列预测在现代数据科学中扮演着越来越重要的角色。从金融市场的价格走势到工业生产的需求预测,从气象数据的天气预报到用电量的负荷预测,时间序列分析无处不在。传统的统计方法和现代深度学习…...

Scala关于成绩的常规操作

score.txt中的数据&#xff1a; 姓名&#xff0c;语文&#xff0c;数学&#xff0c;英语 张伟&#xff0c;87&#xff0c;92&#xff0c;88 李娜&#xff0c;90&#xff0c;85&#xff0c;95 王强&#xff0c;78&#xff0c;90&#xff0c;82 赵敏&#xff0c;92&#xff0c;8…...

【Maven】项目创建

3. Maven的应用 本章主要内容&#xff1a; 使用 Maven 创建 JavaSE 项目使用 Maven 创建 JavaWeb 项目&#xff0c;在本地部署 Tomcat 测试导入 Maven 项目 3.1 基于Maven开发JavaSE的项目 3.1.1 流程 1、File—>new—>Project—>Empty Project Location&#xff1…...

基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现

背景 LlamaFactory 的 LoRA 微调功能非常便捷&#xff0c;微调后的模型&#xff0c;没有直接支持 vllm 推理&#xff0c;故导致推理速度不够快。 LlamaFactory 目前支持通过 VLLM API 进行部署&#xff0c;调用 API 时的响应速度&#xff0c;仍然没有vllm批量推理的速度快。 …...

Vue进阶之单组件开发与组件通信

书接上篇&#xff0c;我们了解了如何快速创建一个脚手架&#xff0c;现在我们来学习如何基于vite创建属于自己的脚手架。在创建一个新的组件时&#xff0c;要在新建文件夹中打开终端创建一个基本的脚手架&#xff0c;可在脚手架中原有的文件中修改或在相应路径重新创建&#xf…...

HCIE IGP双栈综合实验

实验拓扑 实验需求及解法 本实验模拟ISP网络结构&#xff0c;R1/2组成国家骨干网&#xff0c;R3/4组成省级网络&#xff0c;R5/6/7组成数据中 心网络。 配置所有ipv4地址&#xff0c;请自行测试直连。 R1 sysname R1 interface GigabitEthernet0/0/0ip address 12.1.1.1 255.…...

Unity 超链接文本类

注&#xff1a;该脚本在文本显示不全时会有问题。 HyperlinkText.cs using System; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems;namespace MYT…...

Vim小白学习指南

博客 Vim编辑器简介 Vim是一个非常高效的文本编辑器&#xff0c;最初源于Vi编辑器。它以其强大的文本编辑能力和快捷键而闻名于程序员和系统管理员。Vim的特别之处在于它提供了多种模式&#xff0c;每种模式都有不同的功能。 Vim的基本模式 1. 普通模式&#xff08;Normal …...

【微服务】Nacos配置管理

一、统一配置管理 1、配置统一管理 2、微服务获取配置 ①引入Nacos的配置管理客户端依赖(usersevice下) <!--nacos的配置管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-confi…...

从单机缓存到分布式缓存那些事

作者&#xff1a;秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义&#xff0c;用于电脑工程领域。当时没有 Cache&#xff0c;CPU 和内存都很慢&#xff0c;CPU 直接访…...

华为新手机和支付宝碰一下 带来更便捷支付体验

支付正在变的更简单。 11月26日&#xff0c;华为新品发布会引起众多关注。发布会上&#xff0c;华为常务董事余承东专门提到&#xff0c;华为Mate 70和Mate X6折叠屏手机的“独门支付秘技”——“碰一下”&#xff0c;并且表示经过华为和支付宝的共同优化&#xff0c;使用“碰…...

element ui select绑定的值是对象的属性时,显示异常.

需要声明 value-key"value",如果还不行可能是数据类型不一致数字0和字符串0是不一致的. el-select v-model"value" clearable placeholder"Select" value-key"value" style"width: 240px"><!-- <el-option v-for&…...

基于Springboot开发的时光兼职网

一、功能介绍 时光兼职网包含管理员、用户、商家三个角色以及前后台系统。 前台系统功能 首页、兼职信息推荐、查看更多等 职位申请、申请日期、上传简历、点击下载简历、留言反馈等 个人中心、上传图片、更新信息等 后台系统功能 用户登录&#xff1a; 个人中心、修改密码…...

Vue3 Ts 如何获取组件的类型

vue3 Ts ref 子组件 1、默认写法 typeof&#xff1a;获取ts类型 InstanceType&#xff1a;获取模版的实例 <tempolate><myComponent ref"myCompRef"> </tempolate><script setup lang"ts"> import { ref } from "vue&quo…...

Unity类银河战士恶魔城学习总结(P146 Delete Save file-P147 Encryption of save data删除数据和加密数据)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了快速删除存档和加密存档 以下是加密前和加密后的对比 SaveManager.cs using System.Collections; using System.Collection…...

Uniapp 使用自定义字体

技术栈&#xff1a;Uniapp 简介 为了更好的还原UI图片效果&#xff0c;往往需要使用特殊字体&#xff0c;引入字体包。 因实际业务运行平台在微信小程序上&#xff0c;对发布包的项目文件大小有限制&#xff0c;项目中某些比较大的静态资源需要放在服务器上来远程加载&#x…...

Scala

统计成绩练习 1.计算每个同学的总分和平均分 2.统计每个科目的平均分 3.列出总分前三名和单科前三名&#xff0c;并保存结果到文件中 解题思路如下&#xff1a; 1.读入txt文件&#xff0c;按行读入 2.处理数据 &#xff08;1&#xff09;计算每个同学的总分…...

fnOS中安装HAOS,集成haier

只作为自己记录重要事项&#xff0c;不做详细教程。大致流程 安装飞牛OS&#xff0c;简称fnosfnos中有集成Docker在docker中安装haos在haos中安装hacs在hacs中添加haier 在docker中安装haos 安装好fnos后&#xff0c;docker里面找到haos&#xff0c;里面下载最多的&#xff0c…...

基于群晖搭建个人图书架-TaleBook based on Docker

前言 在群晖Container Manager中部署失败&#xff0c;转通过ssh部署。 一、准备工作 名称备注群晖SSH“终端机和SNMP”中启用SSH软件secureCRT等docker-compose.ymlGithub下载并修改 二、过程 2.1 创建本地文件夹 本地路径为&#xff1a; /docker/Calibre/data 2.2 下载d…...

spring导出多个文件,要求打包成压缩包

背景 业务要求我们批量生成一批excel&#xff0c;并将这些excel压缩成一个压缩包导出给前端。 实现 java自带了ZipOutputStream&#xff0c;可以直接生成压缩包&#xff0c;因此&#xff0c;我们直接使用这个&#xff0c;在内存中生成压缩包&#xff0c;直接返回给前端。&am…...

Vue 3中实现多个自定义组件之间的切换

在 Vue 3 中&#xff0c;如果你想在 HTML 页面中实现多个自定义组件之间的切换&#xff0c;你可以使用 Vue 的条件渲染功能&#xff0c;比如 v-if、v-else-if 和 v-else 指令&#xff0c;或者使用 <component> 标签结合 is 属性来动态绑定组件。 1. 打开HBuilder X 图1 …...

opengl 三角形

最后效果&#xff1a; OpenGL version: 4.1 Metal 不知道为啥必须使用VAO 才行。 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <vector>void framebuffer_size_callback(GLFWwindow *window, int width, int heigh…...

shell脚本练习(2)

1. 使用case实现成绩优良差的判断 2. for创建20用户 用户前缀由用户输入 用户初始密码由用户输入 例如&#xff1a;test01,test10 3. for ping测试指网段的主机 网段由用户输入&#xff0c;例如用户输入192.168.2 &#xff0c;则ping 192.168.2.10 --- 192.168.2.2…...

JS数组的一些方法

前言 忘了在哪里听说JS是用来处理各种各样的数据的&#xff0c;所以掌握一些数组的处理方法极其重要 而最近学校要进行测试&#xff0c;本着复习回顾的想法&#xff0c;决定将一些我所知道的数组处理方法整理整理 不过难免有遗漏与错误&#xff0c;还望各位大佬指正 forEac…...

学习threejs,使用CubeCamera相机创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️CubeCamera 立方体相机 二、…...

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现01-笑脸漏洞(vsftpd)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

使用nginx请求转发时前端报跨域问题解决

当其他接口都没有问题&#xff0c;后端也进行了跨域的配置时&#xff0c;此时问题应该就出现在nginx中 我发现当上传文件大小小于1m时并不会发生错误&#xff0c;所以我们应该配置一下nginx允许上传文件的大小 在nginx.conf中添加 在nginx目录下重启nginx即可 &#xff08;Wi…...

贪心算法入门(二)

第1题 越野跑 查看测评数据信息 为了能在下一次跑步比赛中有好的发挥&#xff0c;桐桐在一条山路上开始了她的训练 。桐桐希望能在每次训练中跑得尽可能远&#xff0c;不过她也知道农场中的一条规定&#xff1a;独自进山的时间不得超过M秒(1 < M < 10,000,000)。 整条…...