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

Jave EE 网络原理之网络层与数据链路层

文章目录

  • 1. 网络层
    • 1.1 IP 协议
      • 1.1.1 协议头格式
      • 1.1.2 地址管理
        • 1.1.2.1 认识 IP 地址
      • 1.1.3 路由选择
  • 2. 数据链路层
    • 2.1 认识以太网
      • 2.1.1 以太网帧格式
      • 2.1.2 DNS 应用层协议

1. 网络层

网络层要做的事情,主要是两个方面

  1. 地址管理
    (制定一系列的规则,通过地址,描述出网络上一个设备的位置)
  2. 路由选择
    (网络环境比较复杂,从一个节点到另一个节点之间,存在很多条不同的路径,就需要通过这种方式,筛选/规划出更合适的路径进行数据传输)

1.1 IP 协议

1.1.1 协议头格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本,对于IPv4来说,就是4(也有 ip v6)
  • 4位首部长度:IP 协议的报头,也是变长的(0 - 0xf 也就是 0 - 60字节)
  • 8位服务类型:能够让 IP 协议,切换形态
    3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为0)
    4位TOS分别表示:最⼩延时,最大吞吐量,最高可靠性,最⼩成本
    这四者相互冲突,只能选择⼀个
    这四个位,彼此之间是冲突的,只有一位设为 1,不同的位设为 1,表示 IP 协议不同的形态
  • 16位总长度:描述了 IP 数据包最长是多长
    IP 协议,确定也存在 64 这样的限制,但是 IP 协议本身支持“拆包组包”功能

通过 16位标识、3位标志字段、13位片偏移 ,来实现拆包组包

  • 16位标识:如果一个大的 IP 数据包要拆成多个小的,此时拆出来的这多个小包,16 表示就是相同的数值
  • 13位片偏移:描述当前每个小的数据包(分片)的相对位置
  • 3位标志字段:其中有一位表示 是否允许拆包,还有一位表示是否是最后一个包(类属于单链表 的结束标记)
  • 8位生存时间(Time To Live,TTL):描述了这个 IP 数据包,在网络上还能继续存活多久
    TTL 的单位是次数,数据包构造出来的时候,TTL 会被设置成一个初始值
    数据包在转发的过程中,每次经历一个路由器转发,TTL 就会 -1
    如果这个数据白,已经把 TTL 耗尽了,还没有顺利到达对方,就会被丢弃掉
    这个机制,还是非常有用的,给网络能够进行兜底
    假设构造一个数据包,目的 IP 写作不存在的 IP,这个数据包不可能到达目标
    显然这样的包,也不可能允许在网络上一直存在
  • 8位协议:描述的是,IP 数据包的载荷部分,是一个 UDP 数据包还是 TCP 数据包(传输层是哪个协议)
  • 16位首部校验和:这个校验和,只是校验 IP 数据的首部,不管 IP 数据的载荷
  • 32位源地址和32位目标地址:IP 数据包中,最关键的内容
    IP 地址,本质上就是一个 32位的整数
    为了方便人来理解,写作点分十进制 方式

1.1.2 地址管理

IP 地址,是一个 32位的整数
2 ^ 32 : 42亿9千万

地址,理论上来说,是不应该重复的

互联网发展到今天,能上网的设备,非常多,早就超过了这个数字了


如何解决这个 IP 地址不够用的问题呢?

方案一:动态分配 IP
这个方案,治标不治本,提高了 IP 地址的利用率,并没有增加 IP 地址的数目
(虽然是一个 过渡方案,这个方案目前仍然是广泛存在的)

方案二:NAT 机制(网络地址转换)
本质上 让一个 IP 地址,代表一批设备


把 IP 地址分为两大类:

(1)内网 IP(局域网 IP)
如果一个IP 地址,是以 10.* 或者 172.16.* - 172.31.* 或者 192.168.*
(复合上述条件之一,IP 就是内网 IP)
在同一个局域网内部,内网 IP 之间,不能重复
在不同的局域网中,内网 IP 之间,能重复
在这里插入图片描述

(2)外网 IP(广域网 IP)
剩下的 IP 都是外网 IP
外网 IP 则始终都不允许重复,务必唯一
在这里插入图片描述
这个外网 IP 其实是所在的一个大的片区,共用一个外网 IP


NAT 机制具体是怎么工作的?
在这里插入图片描述
我的电脑就会构造一个 IP 数据包
在这里插入图片描述
我的电脑会把报头发给运营商,此时,运营商路由器,也是一个 NAT 设备,也就能够对当前这里的源 IP 进程替换
(内网 IP,无法在广域网上使用)

站在服务器的角度,看到的源 IP 就是经过转换过后的 IP

如果进行反向操作也是相同的操作
运营商路由器,内部会记录一个映射关系
刚才是把 192.168.0.200 这个 ip 给替换成了 123.139.168.15
现在响应报文回来了,就需要把这个 ip 替换回去

此时运营商路由器,NAT 设备,就相当于一个中转站


如果当前局域网内,有多个主机,都访问同一个网站服务器
此时服务器返回的响应,经过路由器,要交给哪个主机呢?

在这里插入图片描述

当服务器返回数据之后,路由器如何决定这个数据要交给哪个设备?
是要结合端口号,来进行区分
端口号,可以用来区分同一个主机的不同进程,也可以区分不同主机的不同进程

虽然 ip 一样,但是这两个请求来自于不同的端口返回的响应数据,自然也会带有不同的目的端口

服务器返回的两条数据
一个目的端口是 10001,另一个目的端口是 8888
路由器就知道了,10001 的这个,就需要把 ip 替换回 第一个主机 ip (192.168.0.100)
8888 这个,就需要把 ip 替换回 第二个主机的 ip(192.168.0.200)


如果两个端口号一样,这个时候,路由器就可以主动把相同的端口,替换成不同的端口

第一个主机的数据包:
源 ip: 192.168.0.100
源端口 8888
目的 ip: 1.2.3.4
目的端口 80

第一个主机的数据包:
源 ip: 192.168.0.100
源端口 8888
目的 ip: 1.2.3.4
目的端口 80

到达路由器之后,路由器这回发现这两个数据包的目的 ip 和目的端口都一样(访问同一个服务器)
源端口也一样
路由器直接把源端口也一起给替换掉
路由器内部会记录映射关系

第一个主机:
源IP: 123.139.168.15
源端口 1001
目的IP: 1.2.3.4
目的端口 80

第二个主机:
源IP: 123.139.168.15
源端口 1002
目的IP: 1.2.3.4
目的端口 80

这样就不怕端口号一样了


当前的网络环境,就是以 NAT + 动态分配的方式来解决 IP 地址不够用的问题

NAT 机制,最大的优势,“纯软件的方案”
也正是因为这个机制,局域网内部的设备,能够主动访问外网的设备
外网的设备无法主动访问局域网内部的设备
(之前写的 UDP echo server 必须部署到云服务器上才能执行了)
当然,这个局限性也不是坏事,反而更好的保护了电脑的安全

最终解决这个问题的方式就是:IPv6
IPv6:IPv6并不是IPv4的简单升级版,这是互不相干的两个协议,彼此并不兼容
IPv6用16字节128位来表示⼀个IP地址
但是⽬前IPv6还没有普及

1.1.2.1 认识 IP 地址

把一个 IP 地址,会分为两个部分
网络号(标识了一个局域网) + 主机号(标识了局域网中的一个设备)
在这里插入图片描述
同一个局域网中的设备,网络号必须相同,主机号必须不同

在这里插入图片描述
一个 IP 地址,哪个部分是网络号,哪个部分是主句还,是不一定的
子网掩码,就是用来确定网络号的
在这里插入图片描述
子网掩码是 32 位的整数
左侧都是 1,右侧都是 0,不会出现1 0 交替出现
在这里插入图片描述
这里的 1 也不一定就非得是 24 哥,可以根据实际的网络环境,灵活配置
一般来说,家用的路由器,子网掩码就是 255.255.255.0


在这里插入图片描述
这是以前的网络划分的图,不过到了现在基本不使用了


如果一个 IP 地址,主机号全 0,当前这个 IP 就表示“网络号”
192.168.100.0
255.255.255.0
这是代表是一个局域网,不能给一个具体的主机,分配这个 IP


如果一个 IP 地址,主机号全是 1,当前这个 IP 就是一个“广播地址”
192.168.100.255
255.255.255.0
也是不能给具体的主机分配这个 IP 的

前面都说 UDP 天然能支持广播,就是和这个 IP 有关系
使用UDP socket 给这个地址发送 UDP 数据报,此时局域网中所有的设备,都能收到这个数据报
TCP 则无法和这个地址,建立连接


如果一个 IP 是 127 开头,此时这个 IP 就是“环回 ip”(loopback)

127.0.0.1(最常用的)
都表示“设备自身”,自己发给自己

这是操作系统提供了一个特殊的“虚拟网卡”,关联到了这个 IP 上

这里的 环回 IP 主要的用途就是进行一些测试性的工作
环回 IP 能够排除 网络不通 这个干扰因素,更好的排查代码中的问题

1.1.3 路由选择

路由选择,就是描述了 IP 协议(IP 数据报)转发过程


从 A 到 B ,中间可能有很多条可行的路径,到底如何走也是一个问题
平时,使用 地图软件,一搜索,就会出现很多条路径

地图软件能够做出这样的路径规划,主要是因为,开了全图的整个地图的信息,路径信息,都是在地图的服务器上全都存储的,可以给出“最优解"


但是 IP 数据报转发的时候,每个路由器,都是无法知道 网络的“全貌”的

只知道一些局部信息(一个路由器能只带那些设备和它自己是相连的)

这就意味着 IP 数据在这转发过程中,是一个“探索式”“启发式”过程

这个过程,很难给住“最优解”,只能是“较优解”


一个网络层的数据白,每次到达一个路由器,就会进行“问路”的操作
(一个接一个的进行询问)

每个路由器内部都有一个数据结构“路由表”,根据数据报中的 目的 IP,查询路由表

如果查到了,就直接按照路由表给定的方向(从哪个网络接口进行转发),继续转发就行了

如果没有查到,路由表里有一个“默认的表项”(下一跳地址),按照默认的表转发即可

这里的路由表的数据结构中的内容如何来

  1. 手动配置(网管可以根据需要手动配置)
  2. 自动花钱(北邮还有一系列的 路由表生成算法)

2. 数据链路层

2.1 认识以太网

在数据链路层也有很多协议,其中一个比较常见的常用的,就是“以太网协议”
通过网线 / 光纤,来通信,使用的协议,就是以太网协议

以太网,横跨数据链路层 + 物理层

网线水晶头,都是标准的
网线的水晶头,和电话的水晶头就不一样

2.1.1 以太网帧格式

以太网数据帧格式:
帧头 + 载荷(IP 数据报)+ 帧尾
在这里插入图片描述

  • 目的地址/源地址:
    6 个字节,不过不是 IP 地址,是网络中的另一套地址体系,mac 地址(物理地址)

mac 地址 的 定位和 IP 地址是有一点的冲突/重合的
由于最开始搞网络的时候,网络层协议和数据链路层协议,是各自独立被发明的
地址这个东西就被搞了两份出来
这俩地址就被用到了不同的场景中

mac 地址由于是 6 个字节,能表示的方位,比 ip 地址大了 6w 多倍
ip 地址虽然早就不够用了,但是 mac 地址还是够用的
目前来说,每个设备都有唯一的 mac 地址

mac 地址,在网卡出厂的时候就被写死了,不会被改变
(mac 也可以作为一台网络设备 的身份标识)
在这里插入图片描述
mac 地址通常是 十六进制 表示的
两个十六进制数字就是一个字节
字节和字节之间通常使用 - 或者 : 来分割

IP 地址和 mac 地址各自的用途是什么?
IP 协议立足于全局,完成整个通信过程的路径规划工作
以太网 则是关注局部,相连两个设备之间的通信过程

传输层关注的是,起点和终点
网络层关注的是,从起点到终点的路径
数据链路层关注的是,“相邻节点”之间如何转发

源 IP 和 目的 IP 始终是整个通信过程中的,最初的起点和终点 (这里是不考虑 NAT 的情况)
源 mac 和 目的 mac 会根据你当前转发的过程,每次到达一个节点,往下一个节点转发的时候,源 mac 和 目的 mac 都会随之改变

  • 类型:
    描述载荷数据是什么样子的数据
    在这里插入图片描述
    这里的 IP 数据报不能超过 1500 字节

MUT:数据链路层的数据报能携带的最大载荷长度

IP 数据报的分包组包,大概率是因为 MTU 引起的,而不是触发 64KB 上限引起的

不同数据链路层的协议的 MTU 是不一样的
(也和物理层的介质有关)
MTU 可以考虑成一辆汽车的载重量,路是土路,汽车太重了,就容易压坏,路是沥青的路,载重量就更大,路是高速公路级别的,载重量就更大

在这里插入图片描述

下面的这两种次协议不是传输“业务数据”,而是辅助转发的协议

像交换机这样的设备,收到以太网数据帧的时候,就需要进行转发
(这个转发过程就需要能够根据 mac 地址,判断出数据要走哪个网口)

这里的网口是“物理意义”上查网线的口
(IP 协议,路由器,走哪个网络接口,其实是抽象的概念,最终还是要在数据链路层才能觉得是走哪个网口)
在这里插入图片描述
具体如何转发?
交换机内部也有一个数据结构“转发表,和前面说的路由表,还是有点像,但其实还是有一系列差别
转发表是一个简单的像 hash 这样的映射
(当然这个表不一定是软件实现的,也可能是硬件实现的)

转发表如何构造(里面的内容咋来的?)
主要就是通过 arp 协议来生成的

2.1.2 DNS 应用层协议

这是一个 域名解析系统
使用 IP 地址,来描述设备在网络上的位置

为了让自己的网站可以得到宣传,就引入了“域名”来进行解决
(IP 地址不适合进行宣传)

域名是一串“单词”来表示实际意义
比如:www.baidu.com

这样就需要有一套自动的系统,把域名翻译成 IP 地址
(域名 和 IP 想象成一组键值对)


最早的域名解析系统,是通过一个简单的文件来实现的(hosts 文件)
在这里插入图片描述
但是真的打开 host 文件,大概率是空的(这个机制已经不使用了)
不过有时候进行一些测试工作的时候,需要手动编辑这个

使用 hosts 文件来维护 域名 和 ip 的映射关机,非常不方便

这个时候 就有了 DNS 系统(一组服务器)
把上述这样的映射关系,保存到这个服务器中了
如果想访问某个域名,就先给这个 DNS 服务器发起请求,询问一下当前域名对应的 IP,然后再访问目标网站
后续如果有域名的更新,只需要更新这一组指定的服务器即可,不需要修改每个用户电脑的 hosts


全世界,无时不刻都有很多设备需要进行 DNS 的请求,这一组的服务器,能扛得住这么高的请求量吗?

一个服务器硬件资源是有限的(CPU,内存,硬盘,网络带宽…)
服务器处理每个请求,肯定都是要消耗一定的资源的
单位时间内,请求太多,消耗的总资源超过了机器本身的资源上限,这样机器就挂了

这种所谓的“高并发”问题,核心思路,就是两条

  1. 开源
    搭建DNS系统的大佬们,就开始号召各个网络运营商,你们都可以自己搭建一组 “DNS 镜像服务器”,镜像服务器的数据,都从他们这边来同步
    此时用户就会优先访问离自己最近的镜像服务器
  2. 节流
    让请求量变少,让每个上网的设备,搞一个本地缓存
    我的电脑 1min 之内要访问 10 次 www.sogou.com
    只是让第一次请求 DNS 即可,把请求得到的结果保存到本地,后面 9 次请求都使用第一次的结果即可
    (域名的变换,没有那么频繁)

相关文章:

Jave EE 网络原理之网络层与数据链路层

文章目录 1. 网络层1.1 IP 协议1.1.1 协议头格式1.1.2 地址管理1.1.2.1 认识 IP 地址 1.1.3 路由选择 2. 数据链路层2.1 认识以太网2.1.1 以太网帧格式2.1.2 DNS 应用层协议 1. 网络层 网络层要做的事情,主要是两个方面 地址管理 (制定一系列的规则&am…...

ElasticSearch 使用映射定义索引结构

动态映射 dynamic 可选值解释true默认值,启用动态映射,新增的字段会添加到映射中runtime查询时动态添加到映射中false禁用动态映射,忽略未知字段strict发现未知字段,抛出异常 显示映射 创建映射 PUT user {"mappings&qu…...

HTML---网页布局

目录 文章目录 一.常见的网页布局 二.标准文档流 标准文档流常见标签 三.display属性 四.float属性 总结 一.常见网页布局 二.标准文档流 标准文档流常见标签 标准文档流的组成 块级元素<div>、<p>、<h1>-<h6>、<ul>、<ol>等内联元素<…...

python 普通存款(单利)计算公式:

python 普通存款&#xff08;单利&#xff09;计算公式&#xff1a; 代码如下&#xff1a; #普通存款 单利计算公式&#xff1a;a:原值&#xff0c;n:计算年限&#xff0c;li&#xff1a;利率&#xff08;小数&#xff09;, def danli(a,n,li):print("普通存款(单利)计…...

什么是 PHP 内存溢出 ?遇到了要如何解决呢 ?

PHP内存溢出指的是在PHP应用程序中&#xff0c;分配给脚本执行的内存超出了PHP配置文件中设置的限制。当脚本尝试使用比可用内存更多的内存时&#xff0c;就会发生内存溢出错误。 一、内存溢出可能由以下几个原因引起&#xff1a; 循环引用&#xff1a;如果存在循环引用&#…...

本地使用 docker 运行OpenSearch + Dashboard + IK 分词插件

准备基础镜像 注意一定要拉取和当前 IK 分词插件版本一致的 OpenSearch 镜像: https://github.com/aparo/opensearch-analysis-ik/releases 写这篇文章的时候 IK 最新版本 2.11.0, 而 dockerhub 上 OpenSearch 最新版是 2.11.1 如果版本不匹配的话是不能用的, 小版本号对不上…...

【JavaEE初阶一】线程的概念与简单创建

1. 认识线程&#xff08;Thread&#xff09; 1.1 关于线程 1.1.1 线程是什么 由前一节的内容可知&#xff0c;进程在进行频繁的创建和销毁的时候&#xff0c;开销比较大&#xff08;主要体现在资源的申请和释放上&#xff09;&#xff0c;线程就是为了解决上述产生的问题而提…...

三叠云工程劳务管理,优化建筑施工管理,提升效率与质量

随着建筑行业的蓬勃发展&#xff0c;工程施工现场管理变得愈发复杂。传统的人员管理方式已经无法满足企业快速发展的需求。如何提高施工效率、优化人力资源管理成为了建筑企业亟待解决的问题。逐渐走向数字化的工程建设行业&#xff0c;急需一种足以匹配这一时代变革、高效管理…...

RocketMQ连接报错RemotingConnectException: connect to <192.168.57.129:9876>解决

文章目录 前言一、RocketMQ 连接报错处理1.1 报错信息1.2 修改 broker.conf 文件1.3 Linux 开放端口1.4 项目启动成功 前言 上一篇文章&#xff1a;基于SpringBoot整合RocketMQ异步发送短信功能在项目启动的过程中报了 RocketMQ 连接错误。针对这个问题&#xff0c;本文给予记…...

设计模式--桥接模式

实验9&#xff1a;桥接模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解桥接模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用桥接模式解决实际问题。 [实验任务]&#xff1a;两个维度的桥接模式 用桥接模式…...

redis基本用法学习(C#调用StackExchange.Redis操作redis)

StackExchange.Redis是基于C#的高性能通用redis操作客户端&#xff0c;也属于常用的redis客户端之一&#xff0c;本文学习其基本用法。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装StackExchange.Redis&#xff0c;如下图所示&#xff1a;   StackExchange.…...

单挑力扣(LeetCode)SQL题:1308. 不同性别每日分数总计

相信很多学习SQL的小伙伴都面临这样的困境&#xff0c;学习完书本上的SQL基础知识后&#xff0c;一方面想测试下自己的水平&#xff1b;另一方面想进一步提升&#xff0c;却不知道方法。 其实&#xff0c;对于技能型知识&#xff0c;我的观点一贯都是&#xff1a;多练习、多实…...

Vue3组合式-依赖注入provideinject

一、注意点 专门强调了是3.0且是组合式&#xff0c;不是2.0不支持也不是选项式不支持provide&&inject&#xff0c;是支持但是有很明显的弊端&#xff0c;不建议使用 二、场景 官方的解释: 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会…...

SRE 与 DevOps 的不同之处

尽管网站可靠性工程 (SRE) 理念早在 2003 年就由 Google 的 Ben Treynor Sloss 提出&#xff0c;但其近年来却一直受到追捧。随着 DevOps 实践已经在许多组织中牢固确立&#xff0c;两者之间的冲突是否已经显现&#xff1f;SRE 只不过是一种过时的趋势吗&#xff1f;是 SRE 补充…...

【湖仓一体尝试】MYSQL和HIVE数据联合查询

爬了两天大大小小的一堆坑&#xff0c;今天把一个简单的单机环境的流程走通了&#xff0c;记录一笔。 先来个完工环境照&#xff1a; mysqlhadoophiveflinkicebergtrino 得益于IBM OPENJ9的优化&#xff0c;完全启动后的内存占用&#xff1a; 1&#xff09;执行联合查询后的…...

SpringCloud跨服务调用失败Seata无法回滚解决办法

遇到的问题 在微服务项目中 有A、B、C三个服务 其中 A调用B服务 &#xff0c;B调用C&#xff0c; 这些就是跨服务调用了&#xff0c;在A服务中 还调用了一个当前模块执行插入数据的方法(在这里我就叫它为AA 也就是mybatis/spring管理的本地事务) A服务开启全局事务注解 Globa…...

OSG三维渲染引擎编程学习之一百零一:“第十一章:OSG粒子” 之 “11.2 粒子模拟过程”

目录 第十一章 OSG粒子 11.2 粒子模拟过程 第十一章 OSG粒子 虚拟现实中有很多效果,如雨效、雪效、雾效等,这些都可以通过粒子条统来实现。一个真实的粒子系统的模式能使三维场景达到更好的效果。 粒子系统是一个非常复杂的粒子模拟过程。在OSG中,专门定义了新的名字空间o…...

Autosar CAN开发03(从实际应用认识CAN总线的物理层)

建议同时阅读本专栏的&#xff1a; Autosar CAN开发03&#xff08;从实际应用认识CAN总线的物理层&#xff09; Autosar CAN开发04&#xff08;从实际应用认识CAN报文&#xff09; Autosar CAN开发05&#xff08;从实际应用认识CAN波特率&#xff09; 前言 在上一章的《AU…...

vue中父子组件传值

父传子 传: 在"标签"上传属性 <Card :name"name"></Card> 接: 在props中 export default {props: {name: String},setup(props) {console.log(props.name);} } 子传父 传: 触发,给一个事件传值 setup(props,{emit}) {emit("get…...

【网络编程】基于UDP数据报实现回显服务器/客户端程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…...

sqlilabs第三十二三十三关

Less-32&#xff08;GET - Bypass custom filter adding slashes to dangerous chars) 手工注入 由 宽字符注入可知payload 成功触发报错 http://192.168.21.149/Less-32/ ?id1%df 要写字符串的话直接吧字符串变成ascii码 注意16进制的表示方式 自动注入 sqlmap -u http:…...

第二十一章博客

计算机应用实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据。编写网络应用程序前&#xff0c;首先必须明确所要使用的网络协议…...

PSoc62™开发板之按键控制LED

实验目的 使用板子上的用户自定义按键控制LED亮灭&#xff0c;当按键按下时LED亮起来&#xff0c;不按下则不亮 电路图 按键电路 板子有两组按键&#xff0c;分别是系统复位按键和用户自定义按键&#xff0c;这里我们选择控制用户自定义按键&#xff0c;可以看到MCU_USER_B…...

Vue-Pinina基本教程

前言 官网地址&#xff1a;Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容&#xff0c;需要有vuex的基础&#xff0c;下面很多概念会直接省略&#xff0c;比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库&#xff0c;它允许您跨…...

大批量数据导出csv,平替导出excel性能优化解决方案封装工具类

阿丹&#xff1a; 有些业务逻辑需要在导出非常大量的数据&#xff0c;几百甚至几千万的数据这个时候再导出excel来对于性能都不是很友好&#xff0c;这个时候就需要替换实现思路来解决这个问题。 本文章提供了两种解决的方案&#xff0c;也是两种从数据库中拿取数据的方式一种是…...

C++ Qt开发:Charts绘制各类图表详解

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TreeWidget与QCharts的常用方法及灵活运用。 …...

【SassVue】仿网易云播放器动画

简介 仿网易云播放动画 效果图&#xff08;效果图&#xff09; 最终成品效果 动画组件 src/components/music/MusicPlayAnimate.vue <template><div class"music-play"><div></div><div></div><div></div></di…...

CentOS进入单用户模式

一、重启 二、出现内核选项 按“e” 三、编辑这一行 输入 rw init/sysroot/bin/sh 四、进入单用户模式 ctrlx 进入 五、切换目录 chroot /sysroot 六、然后你就操作你的系统了。 修改密码等等...

微信小程序~如何设置页面的背景色

微信小程序~如何设置页面的背景色 众所周知&#xff0c;微信小程序每个页面由.json&#xff0c;.scss&#xff0c;.ts&#xff0c;.wxml这四个文件组成。 有的小伙伴会发现&#xff0c;需要给页面加背景色的时候&#xff0c;只需在此页面的.scss文件中写个page{background-colo…...

图灵日记之java奇妙历险记--输入输出方法数组

目录 输入输出输出到控制台从键盘输入使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 猜数字方法方法定义方法调用的执行过程实参和形参的关系(重要)方法重载 数组数组的创建数组的初始化动态初始化静态初始化 数组的使用元素访问遍历数组 数组是引用类型null数组应…...

CSS新手入门笔记整理:CSS3弹性盒模型

特点 子元素宽度之和小于父元素宽度&#xff0c;所有子元素最终的宽度就是原来定义的宽度。子元素宽度之和大于父元素宽度&#xff0c;子元素会按比例来划分宽度。在使用弹性盒子模型之前&#xff0c;必须为父元素定义“display:flex;”或“display:inline-flex;”。 弹性盒子…...

OCP NVME SSD规范解读-1

OCP&#xff08;Open Compute Project&#xff09;是一个由Facebook于2011年发起的开源项目。其目标是重新设计和优化数据中心的硬件&#xff0c;包括服务器、存储、网络设备等&#xff0c;以提高效率&#xff0c;降低运营成本&#xff0c;并推动技术的创新和标准化。 在OCP中&…...

大规模和复杂问题挑战——分治思想来应战

分治思想利用了问题的内在结构和性质&#xff0c;使得大规模和复杂的问题能够被有效地解决。具体来说&#xff0c;分治思想的本质是通过问题分解、递归处理和解的合并&#xff0c;将一个复杂问题转化为一系列更简单的子问题&#xff0c;并最终得到原问题的解。 1、分治思想的本…...

六西格玛的科技漩涡——张驰咨询如何促成企业变革

在管理的海洋里&#xff0c;六西格玛管理是一艘稳健的航船&#xff0c;在质量管理的汪洋中乘风破浪&#xff0c;尽管质疑之声像远处的风暴不断逼近&#xff0c;但张驰咨询公司依靠这艘航船坚持初心&#xff0c;驭风而行。 20载耕耘&#xff0c;张驰咨询不仅仅是培养了超过8000…...

由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。

问题描述&#xff1a; 由于被认为是客户端对错误&#xff08;例如&#xff1a;畸形的请求语法、无效的请求信息帧或者虚拟的请求路由&#xff09;&#xff0c;服务器无法或不会处理当前请求。 在实现向数据库中添加记录时&#xff0c;请求发送无效&#xff0c;参数也未传递到控…...

【案例】图片预览

效果图 如何让图片放大&#xff0c;大多数的UI组件都带有这种功能&#xff0c;今天给大家介绍的这个插件除了放大之外&#xff0c;还可以旋转、移动、翻转、旋转、二次放大&#xff08;全屏&#xff09; 实现 npm i v-viewer -Smain.js 中引入 import viewerjs/dist/viewer.c…...

ubuntu 18/20/22 安装 mysql 数据库

这里写自定义目录标题 ubuntu 18/20/22 安装 mysql 数据库1. 准备2. 安装 mysql3. 配置4. 测试 demo 用户5 服务管理5.1 查看服务状态5.2 启动服务5.3 停止服务5.4 重启服务 ubuntu 18/20/22 安装 mysql 数据库 1. 准备 安装前需要知道 root 用户的密码 假如不知道 root 用户…...

通过U盘:将电脑进行重装电脑

目录 一.老毛桃制作winPE镜像 1.制作准备 2.具体制作 下载老毛桃工具 插入U盘 选择制作模式 正式配置U盘 安装提醒 安装成功 具体操作 二.使用ultrasio制作U盘 1.具体思路 2.图片操作 三.硬盘安装系统 具体操作 示例图 ​编辑 一.老毛桃制作winPE镜像 1.制作准…...

C# SqlSugar 数据库 T4模板

生成效果 模板代码 <# template debug"false" hostspecific"true" language"C#" #> <# output extension".cs" #> <# assembly name"System.Core" #> <# assembly name"System.Data" #>…...

ARM AArch64的TrustZone架构详解(下)

目录 五、软件架构 5.1 顶层软件架构 5.2 信任消息(message) 5.3 调度 5.4 OPTEE...

《Nature》预测 2024 科技大事:GPT-5预计明年发布等

《Nature》杂志近日盘点了 2024 年值得关注的科学事件&#xff0c;包括 GPT-5 与新一代 AlphaFold、超算 Jupiter、探索月球任务、生产「超级蚊子」、朝向星辰大海、试验下一代新冠疫苗、照亮暗物质、意识之辩第二回合、应对气候变化。 今年以来&#xff0c;以 ChatGPT 为代表…...

「Verilog学习笔记」并串转换

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 串并转换操作是非常灵活的操作&#xff0c;核心思想就是移位。串转并就是把1位的输入放到N位reg的最低位&#xff0c;然后N位reg左移一位&#xff0c;在把1位输入放到左移后…...

应急响应常用命令

应急响应的基本思路 a. 收集信息&#xff1a;收集告警信息、客户反馈信息、设备主机信息等 b. 判断类型&#xff1a;安全事件类型判断。&#xff08;钓鱼邮件、Webshll、爆破、中毒等&#xff09; c. 控制范围&#xff1a;隔离失陷设备 d. 分析研判&#xff1a;根据收集回来的…...

使用React和ResizeObserver实现自适应ECharts图表

关键词 React ECharts ResizeObserver 摘要 在现代 Web 开发中&#xff0c;响应式布局和数据可视化是非常常见的需求。本文将介绍如何使用React、ResizeObserver和ECharts库来创建一个自适应的图表组件。 什么是ResizeObserver ResizeObserver是JavaScript的一个API&#x…...

修改第三方npm包

文章目录 一、前言二、补丁方案2.1、patch-package2.2、pnpm patch 三、换日方案四、总结五、最后 一、前言 在开发过程中&#xff0c;发现某个npm包有Bug&#xff0c;应该怎么办&#xff1f;可以试试下面这2种方案&#xff1a; 代码量少&#xff0c;可以直接修改npm包代码的&…...

Redis性能优化:关键配置和最佳实践

大家好&#xff0c;我是升仔 Redis作为一个高性能的键值存储系统&#xff0c;在现代应用架构中扮演着至关重要的角色。性能优化是Redis部署与维护中的一个关键环节。本文将从关键配置、持久化配置、实践场景和异常处理配置等方面&#xff0c;详细介绍如何优化Redis的性能。 关…...

华为数通方向HCIP-DataCom H12-831题库(多选题:241-249)

第241题 (NEW) 以下哪些操作可能会影响客户网络的正常运行? A、从设备上下载日志 B、软件升级 C、路由协议配置变更 D、debug核心交换机上转发的所有IP报文 答案:ABCD 解析: 第242题 对于防火墙的默认安全区 Trust 和 Untrust 的说法,正确的有 A、从 Trust 区域访问 Untr…...

typeorm联表查询:副表json格式放到主表字段下或多个副表字段并列主表字段

实体类字段不做映射&#xff0c;typeorm实现联查查询 1、副表json格式放到主表字段下 //goods表和member表联表&#xff0c;关系goods.id member.uid&#xff0c;member表数据json对象格式放到主表userInfo下 //leftJoinAndMapOne配合getMany实现 const builder await getCo…...

Flume采集日志存储到HDFS

1 日志服务器上配置Flume,采集本地日志文件&#xff0c;发送到172.19.115.96 的flume上进行聚合&#xff0c;如日志服务器有多组&#xff0c;则在多台服务器上配置相同的配置 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1# Describe/con…...

redis—String字符串

目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型&#xff0c;而且其他几种数据结构也都是在字符串类似基础.上构建的&#xff0c;例如列表…...