【Linux网络】以太网(数据链路层)
认识以太网
两台主机在同一个局域网下是可以进行通信的,因为每台主机都有自己的标识符.
太网是负责直接相连的两个设备之间的可靠数据传输,"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容.在局域网中,通过物理地址(MAC地址)识别设备,将数据封装成帧进行传输
以太网帧格式
MAC 地址是唯一的,每一台设备的网卡都有唯一的MAC地址号,是由48位二进制进行组成,通常前24位代表厂商代码,后24位由厂商进行自主分配
-
目的MAC地址(6字节):接收设备的物理地址,相当于目的主机的身份号。
-
源MAC地址(6字节):发送设备的物理地址,相当于发送方主机的身份证号,用于告诉接收方这条数据的来源也为了进行接收目的主机的确认和处理后的数据。
-
类型/长度(2字节):标明数据部分属于哪种协议(如IPv4、ARP)。
-
数据(46-1500字节):实际传输的信息。
-
帧校验序列(FCS)(4字节):用于检测传输中是否发生错误(如CRC校验)。
如何进行分离?
以太网帧的报头是采用定长的方式,一共是14个字节.
如何进行分用?
通过以太网帧头中的数据类型,数据链路层根据此字段决定将数据提交给哪个网络层协议处理
基于协议重谈是局域网进行数据转发的原理
数据包通过数据链路层的协议进行封装成数据帧,数据帧在局域网中进行传输时是可以被局域网中的所有主机进行查看到的(监听),当非目标主机进行识别数据帧发现目的MAC地址并不是自己后就会将监听的数据进行丢弃,只有当目的主机进行收到数据后会将数据进行获取.
抓包原理
这里说一下抓包工具的原理,抓包工具的原理依赖于将网卡设置为混杂模式(Promiscuous Mode)。默认情况下,网卡仅接收目标地址为本机MAC或广播/组播的数据帧,而混杂模式会解除这一限制,使网卡接收所有流经其物理接口的数据帧。
在集线器(Hub)网络中,混杂模式可捕获局域网内所有流量;但在交换机(Switch)网络中,由于交换机仅转发目标相关的流量,需结合ARP欺骗、端口镜像等技术才能实现类似效果。
抓包工具(如Wireshark)需通过内核接口(如libpcap
)获取原始数据,并依赖管理员权限开启混杂模式
数据碰撞问题
由于在局域网中,任意两台主机进行通信,其他主机也是可以机型看到数据帧的,当同一时刻由不同的主机在局域网中进行发送数据,就会导致局域网中的数据发生碰撞,数据在物理层进行传输是通过二进制的形式,类似于物理中的波纹,一旦出现数据碰撞问题,就会导致数据无效.
进行思考,为什么要将数据进行分片(站在数据链路层)
一定程度进行减少数据碰撞
避免数据进行碰撞的策略
主机中是有碰撞检测和碰撞避免的算法的
通过交换机进行"隔绝"
交换机进行识别局部新碰撞,对碰撞的数据不进行转发,左侧已经发生数据碰撞了,直接进行"隔绝",m1->m6进行发送数据也不在进行转发,防止左侧的碰撞影响右侧的正常通信.
ARP协议
同一个局域网下的主机(主机和主机,主机和路由器,路由器和路由器)之间我们是是默认他们之间可以进行正常的通信的,但是我们现在知道了在同一局域网下进行通信必须知道对方发MAC地址,这是如何进行得知对方的MAC地址的呢?这就涉及ARP协议。
ARP数据报的格式
协议的原理
以一号路由器和九号主机进行通信为例
数据到达目标网络,只知道对应目标主机的IP地址,并不知道MAC地址,要想进行通信,首先要先进行ARP申请,将数据包进行封装上ARP报文,由于不知道目的主机的IP地址,目的MAC地址字段填写为全0或者空代表不知道目的主机的MAC地址,然后交给MAC帧,由MAC帧进行封装上以太网帧报头,将以太网目的MAC地址继续进行填写成FFFFFF代表不知道目的主机的MAC地址,然后把数据发送到局域网上,由于目的主机的MAC地址是FFFFFF,所有主机都可以进行获取这个以太网帧,获取数据后进行通过MAC帧进行解包,然后分析报文中的OP,先看是请求还是应答,然后通过对比目的IP和自己的IP是否一致,如果不一致将数据进行丢弃;如果一致,进行应答,这次应答是知道对方的IP地址和MAC地址的,通过应答将自己的MAC地址进行通知对方,这就是ARC协议的原理.
整体进行理解网络通信的流程
应用层:
应用程序通过
socket()
创建套接字,并(服务器端)调用bind()
绑定端口。TCP 需要
connect()
进行 三次握手 建立连接,而 UDP 直接发送数据。传输层:
TCP:数据拆分为多个 TCP 段,加上 TCP 头部(包括序号、校验和等),然后传给网络层。
UDP:数据加上 UDP 头部(源端口、目标端口、长度等),传给网络层。
网络层(IP):
添加 IP 头(源 IP、目的 IP)。
检查数据长度,若超过 MTU,则进行 IP 分片。
通过 路由表 查找下一跳,发送给路由器。
链路层(以太网/无线):
先查找 ARP 缓存,获取目的 IP 对应的 MAC 地址。
如果没有,则发送 ARP 请求获取 MAC 地址。
组装 以太网帧(源 MAC、目标 MAC、数据)。
通过交换机/无线 AP 传输数据,最终到达目的 MAC 地址的主机。
目标主机接收数据:
网卡检查 MAC 地址匹配后,将数据交给 网络层。
网络层检查 IP 地址匹配后,将数据交给 传输层(TCP/UDP)。
传输层根据端口号交给 应用层 处理(如 HTTP 服务器解析请求)。
ARP欺骗
为什么会存在ARP欺骗
ARP是被缓存的,将一些主机的IP和MAC地址进行缓存到ARP缓存表中,并且缓存表是会进行动态更新的,ARP在进行收到应答时,会以最新的为主.
ARP欺骗的原理
ARP欺骗的基本原理是通过伪造ARP响应(即伪装成目标设备的响应)来修改局域网中设备的ARP缓存表。具体来说,ARP是用来将IP地址映射到MAC地址的协议,在局域网内设备之间进行通信时,发送方会查找目标IP地址对应的MAC地址。如果ARP缓存表中没有该映射,设备会广播一个ARP请求,询问网络中谁拥有该IP地址,并希望获得其MAC地址。正常情况下,目标设备会回应其MAC地址。
而在ARP欺骗中,攻击者伪造一个ARP响应,宣称自己的MAC地址对应目标IP地址(或者伪造目标设备的MAC地址对应自己的IP)。这样,目标设备就会将攻击者的MAC地址映射到错误的IP地址,造成数据流向攻击者,而不是正确的目的地。
重新看待OSI七层模型
表示层--协议的定制,序列化和反序列化
DNS协议
网络协议栈中只有IP,我们通过访问网站都是用的域名,便于互联网的商业化而DNS协议就是用于域名转化成IP地址.
早期实现的原理:配置文件进行建立关系
DNS协议的基本工作原理:
-
查询过程: 当你在浏览器中输入一个网址时,计算机会首先查询本地的DNS缓存,看看是否已有该域名对应的IP地址。如果没有,它会向配置的DNS服务器发起查询请求。
-
递归查询: 如果本地DNS服务器没有该信息,它会向更高层级的DNS服务器发起递归查询,直到找到权威DNS服务器并返回域名对应的IP地址。
-
权威DNS服务器: 每个域名都有一个或多个权威DNS服务器,负责存储并提供该域名的实际解析记录。当递归查询最终到达权威DNS服务器时,它会提供正确的IP地址。
-
缓存机制: 为了加快解析过程,DNS服务器会缓存域名和IP地址的映射关系。缓存数据有时效性,称为TTL(Time To Live)。TTL过期后,DNS服务器会重新查询。
域名解析服务器是多叉树的结构,先进行问自己最近的服务器,本质kv映射
底层是UDP
根域名服务器(AI)
开始回答并不是回答问题的本身,而是组织进行框架条理
纯应用层,忽略OS为我们做的
非常好的体系,非常好表达能力
热爱生活保持乐观
ICMP协议
ICMP协议的功能
网络出现问题了,网络排查故障的功能
一些常用的命令
ping命令
- 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
- ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
- ping命令会先发送一个 ICMP Echo Request给对端; 对端接收到之后, 会返回一个ICMP Echo Reply;
注意:
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息
traceroute命令
是一个网络诊断工具,用于显示数据包从源主机到目标主机的传输路径。它可以帮助分析数据在互联网上的路由情况,通常用于排查网络延迟或路由问题。
语法
traceroute [options] <destination>
---------------------------------------------------------------------------------------
NAT技术
NAT IP转换技术
NAT IP 技术原理
源IP不断进行替换的技术称为NAT IP转换技术.
NAPT技术
当局域网下的 私有 IP 设备 访问公网时,数据包经过 NAT 设备(如路由器),其源IP地址不断进行替换成路由器的LAN口IP,最后被替换为公网IP,然后发送到公网服务器。服务器在处理完请求后,将数据返回到该公网 IP 地址。但此时,服务器 只能看到 NAT 设备的公网 IP,而无法直接识别原始的私有 IP 地址,因此返回的数据仅能到达路由器,而路由器需要知道如何将数据包正确分发回 具体的内网设备。
然而,每台主机都运行着 TCP/IP 协议栈,而多个进程或线程可能同时访问同一个服务器,如果 NAT 仅仅进行 IP 地址转换,那么所有访问公网的请求都会显示相同的公网 IP,导致 返回数据无法区分不同的内网主机或进程。这时,NAPT 技术(也称 PAT,端口地址转换) 通过在 NAT 映射表中 记录端口号,使得路由器在收到服务器返回的数据时,能够根据 端口号 找到具体的内网 IP 和进程端口号,并将数据正确返回给对应的主机和进程。
NAPT的技术原理
唯一的四元组 源IP+源端口号 目的IP+目的IP端口号
转化表中进行维护的就是唯一四元组。
-
出站连接:当内网主机向外部网络发送数据包时,NAPT 路由器会记录数据包的源 IP 地址和端口号,然后将这些信息转换为公共 IP 地址和一个新的、唯一的端口号。转换后的映射关系会存储在转换表中。
-
入站数据:当外部服务器回复数据时,数据包会携带目的公共 IP 地址和目标端口号。NAPT 路由器通过查找转换表,确定原始的内网 IP 地址和端口号,将数据正确地转发到相应的内网主机。
代理服务器
反向代理服务器
反向代理服务器时在客户端和公司服务器之间的服务器,代理用户进行请求,通过很多算法进行分摊流量使得服务器集群中的服务器尽可能的负载均衡,防止客户端进行访问公司服务器主机集群时,用户全部进行访问的是这个服务器主机集群中的某一部分,造成服务器主机集群的忙先不均问题,严重甚至某个服务器主机压力过大,导致整个服务器集群崩溃的问题。
正向代理服务器
正向代理服务器时在客户端和公司服务器之间的服务器,代理客户端进行访问资源,由于网络限制或隐私保护,客户端无法直接访问目标服务器,因此请求会先发送给正向代理服务器。正向代理服务器代表客户端访问目标服务器,并获取数据。正向代理服务器将数据返回给客户端,让客户端以为自己直接访问了目标服务器,并且正向代理服务器代理用户进行访问服务器中的资源然后将资源进行返回,这个资源在正向服务器中进行缓存,当其他的客户端进行访问相同的资源时,直接进行访问正向服务器中的资源,不需要再进行访问目标服务器中的资源,提高访问效率,减少目标服务器中的压力。
相关文章:
【Linux网络】以太网(数据链路层)
认识以太网 两台主机在同一个局域网下是可以进行通信的,因为每台主机都有自己的标识符. 太网是负责直接相连的两个设备之间的可靠数据传输,"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容.在局域网中&#x…...
大模型学习五:DeepSeek Janus-Pro-7B 多模态半精度本地部署指南:环境是腾讯cloudstudio高性能GPU 16G免费算力
一、说明介绍 由于前面玩过了,所以啥也别说,就是显存不够玩,要优化,没钱就是这么回事,看下图,显存实际只有15360M,确实是16G 如何获取算力 二、如何获取算力 1、进入网址 Cloud Studio 2、没有…...
Spring 中的事务
🧾 一、什么是事务? 🧠 通俗理解: 事务 一组操作,要么全部成功,要么全部失败,不能只做一半。 比如你转账: A 账户扣钱B 账户加钱 如果 A 扣了钱但 B 没收到,那就出问…...
2025-04-06 NO.2 Quest3 基础配置与打包
文章目录 1 场景配置1.1 开启手势支持1.2 创建 OVRCameraRig1.3 创建可交互 Cube 2 打包配置 环境: Windows 11Unity6000.0.42f1 Quest3 开发环境配置见 2025-03-17 NO.1 Quest3 开发环境配置教程_quest3 unity 开发流程-CSDN博客。 1 场景配置 1.1 开启手势支持 …...
人脸考勤管理一体化系统(人脸识别系统,签到打卡)
人脸考勤管理一体化系统 项目介绍 本项目是基于Flask、SQLAlchemy、face_recognition库的人脸考勤管理一体化系统。 系统通过人脸识别技术实现员工考勤打卡、人脸信息采集、人脸模型训练等功能。 项目采用前后端分离的技术框架,基于Flask轻量级Web框架搭建后端服务…...
LeetCode 每日一题 2025/3/31-2025/4/6
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 3/31 2278. 字母在字符串中的百分比4/1 2140. 解决智力问题4/2 2873. 有序三元组中的最大值 I4/3 2874. 有序三元组中的最大值 II4/4 1123. 最深叶节点的最近公共祖先4/5 1…...
mybatis plus 实体类基于视图,更新单表的时候报视图或函数‘v_视图名‘不可更新,因为修改会影响多个基表的错误的简单处理方法。
1、之前的文章中写了一下基于视图的实体,因为当前测试通过了,可能有缓存。 2、然后今天又用到了这个方法,发现报错了: 建了一下视图,将实体类绑定到了视图中,并不是原表中。 3、用mybatis提供的注解或者x…...
语法: i8=make8( var, offset);
MAKE8( ) 语法: i8make8( var, offset); 参数: var是16位或32位整数; offset是字节的偏移量,为1,2或3; 返回值: 返回值是一个8位整数; 功能: 该函数用来摘取以var为基址, offset为偏移量,所指向单元的字节;除了执行单字节复制之外,还相当于i8( ( var>>(offset…...
Seata TCC模式是怎么实现的?
Seata TCC 模式实现原理 TCC(Try-Confirm-Cancel)是 Seata 提供的分布式事务解决方案之一,适用于 高并发、高性能 场景,通过 业务补偿 保证最终一致性。其核心思想是将事务拆分为三个阶段: Try:预留资源(冻结数据,检查约束)。Confirm:确认提交(真正扣减资源)。Can…...
sentinel新手入门安装和限流,热点的使用
1 sentinel入门 1.1下载sentinel控制台 🔗sentinel管理后台官方下载地址 下载完毕以后就会得到一个jar包 1.2启动sentinel 将jar包放到任意非中文目录,执行命令: java -jar 名字.jar如果要修改Sentinel的默认端口、账户、密码ÿ…...
对责任链模式的理解
对责任链模式的理解 一、场景1、题目【[来源](https://kamacoder.com/problempage.php?pid1100)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 二、不采用责任链模式1、代码2、缺点 三、采用责任链模式1、代码2、优点 四、思考 一、场景 1、题目【来源】 …...
AGI大模型(11):RAG系统
1 RAG概念 RAG(Retrieval Augmented Generation)顾名思义,通过检索外部数据,增强大模型的生成效果。 RAG即检索增强生成,为LLM提供了从某些数据源检索到的信息,并基于此修正生成的答案。RAG基本上是Search + LLM 提示,可以通过大模型回答查询,并将搜索算法所找到的信…...
请问你了解什么测试方法?
测试方法在软件测试中是保障软件质量的关键手段,我将从黑盒测试、白盒测试、灰盒测试等方面为你介绍常见的测试方法: 黑盒测试方法 黑盒测试把软件看作一个黑盒子,不考虑内部结构和实现细节,只关注输入和输出。 等价类划分法:将输入数据划分为有效等价类和无效等价类,从…...
【springcloud】快速搭建一套分布式服务springcloudalibaba(三)
第三篇 基于nacos搭建分布式项目 分布式事务(分布式锁事务) 项目所需 maven nacos java8 idea git mysql(下单) redis(分布式锁) 本文主要讲解客户下单时扣减库存的操作,网关系统/用户系统/商品系统/订单系统 请先准备好环境࿰…...
Nginx-keepalived-高可用
Nginx 高可用 通常 借助 Keepalived 实现, Keepalived 能通过 VRRP (虚拟路由冗余协议)让多个 Nginx 服务器 组成一个 热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。 一、环境准备 角色IP 地址主…...
Linux系统管理(十九)——欧拉系统硬盘挂载、网络配置以及Docker环境安装
挂载硬盘 如果数据盘在安装操作系统的时候没有挂载,需要自己做一下硬盘的挂载 查看需要挂载硬盘的路径 fdisk -l这里的可挂载的硬盘路径为:/dev/sdb MBR分区方式转换成GPT MBR分区能挂载的硬盘空间有限,无法挂载全部硬盘空间࿰…...
vue记忆卡牌游戏
说明: 我希望用vue做一款记忆卡牌游戏 游戏规则如下: 游戏设置:使用3x4的网格,包含3对字母(A,B,C,D,E,F)。 随机洗牌:初始字母对被打乱顺序,生成随机布局。 游戏流程:…...
LearnOpenGL-笔记-其九
今天让我们完结高级OpenGL的部分: Instancing 很多时候,在场景中包含有大量实例的时候,光是调用GPU的绘制函数这个过程都会带来非常大的开销,因此我们需要想办法在每一次调用GPU的绘制函数时尽可能多地绘制,这个过程就…...
开源软件与自由软件:一场理念与实践的交锋
在科技的世界里,“开源软件”和“自由软件”这两个词几乎无人不知。很多人或许都听说过,它们的代码是公开的,可以供所有人查看、修改和使用。然而,若要细究它们之间的区别,恐怕不少朋友会觉得云里雾里。今天࿰…...
关于使用HAL_ADC_Start函数时为什么要放在while里的解释
HAL_ADC_Start() 是一个用于启动 ADC(模数转换器)转换的函数,那为什么有时候我们会看到它被放在 while 循环里呢?其实取决于你使用的是哪种ADC采样方式,我们来细说👇: 🧠 一、先搞清…...
Qt 入门 2 之窗口部件 QWidget
Qt 入门2之窗口部件 QWidget Qt Creator 提供的默认基类只有QMainWindow、QWidget和QDialog 这3种,这3种窗体也是以后用得最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而它们全部继承自QWidget。不仅如此,其实所有的窗…...
在 Windows 上安装 WSL Ubuntu 的完整避坑指南:从报错到成功运行
问题背景 最近在尝试通过 Windows Subsystem for Linux (WSL) 安装 Ubuntu 时,遇到了一系列报错。最初的步骤是直接使用 wsl --install 命令,但安装完成后发现系统中并未自动安装默认的 Ubuntu 发行版。随后尝试通过命令行手动选择发行版&a…...
STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
主题内容教学目的/扩展视频看门狗什么是看门狗,原理分析,启动喂狗方法,读标志位。熟悉在程序里用看门狗。 师从洋桃电子,杜洋老师 📑文章目录 一、看门狗核心原理1.1 工作原理图解1.2 经典水桶比喻 二、STM32看门狗双雄…...
Hyperlane 框架路由功能详解:静态与动态路由全掌握
Hyperlane 框架路由功能详解:静态与动态路由全掌握 Hyperlane 框架提供了强大而灵活的路由功能,支持静态路由和动态路由两种模式,让开发者能够轻松构建各种复杂的 Web 应用。本文将详细介绍这两种路由的使用方法。 静态路由:简单…...
webpack js 逆向 --- 个人记录
网站 aHR0cDovL2FlcmZheWluZy5jb20v加密参数 参数加密位置 方法: 1. 构造自执行函数 !function(e) {// 加载器 }(// 模块1;// 模块2 )2. 找到js的加载器 3. 把上述代码放入第一步构造的自执行函数(完整扣取一整个加载器里的代码),并用一…...
代码随想录回溯算法03
93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:代码随想录 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔…...
SOMEIP通信矩阵解读
目录 1 摘要2 SOME/IP通信矩阵详细属性定义与示例2.1 服务基础属性2.2 数据类型定义2.3 服务实例与网络配置参数2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)2.5 SOME/IP-SD Unicast 配置2.6 SOME/IP-SD ECU 配置参数详解 3 总结 1 摘要 本…...
keys简单通用命令
目录 一、通配符匹配key 二、key的常用命令 1)exists 判断某个key是否存在 2)删除key 3)expire设置key的过期时间、ttl查询key的过期时间 4)type可以获取key对应的value的类型 一、通配符匹配key redis作为键值对类型的数据…...
Linux : 页表
目录 一 前言 二 深入理解页表 三 页表的实际组成 四 总结 一 前言 页表是我们之前在讲到Linux : 进程地址空间-CSDN博客的时候说到的,它是物理内存到进程程序地址空间的一个桥梁,通过它,物理内存的数据和代码才能映射到进程的程序地址空间…...
多智能体优秀开发框架
原文链接:https://i68.ltd/notes/posts/20250402-multi-agent/ motia-面向软件工程师的智能体框架 项目仓库:https://github.com/MotiaDev/motia 1.3k官方网站:https://motia.devMotia 允许开发人员在几分钟内创建,测试和部署生产就绪的 AI 代理,在一个…...
JavaScript创建对象与构造函数
目录 创建对象 一、创建对象的 5 种核心方式 1. 对象字面量(直接量) 2. 使用 Object.create() 3. 工厂模式 4. 构造函数模式 5. ES6 class 语法(语法糖) 二、构造函数与 new 关键字 1. 构造函数的作用 2. 构造函数的特征…...
【langchain4j系列教程-02】Langchain4j调用DeepSeek
文章目录 依赖引入代码示例api key如何获取模型名称及价格为什么调用DeepSeek API用的是OpenAIChatModel 这篇文章主要介绍了如何在Java项目中引入DeepSeek的依赖,并提供了调用DeepSeek API的代码示例。 依赖引入 DeepSeek是一个与OpenAI接口标准兼容的人工智能平台…...
c++STL入门
目录 什么是STL? vector容器 构造函数 赋值操作 vector容量和大小 vector存放内置数据类型 vector存放自定义数据类型 存放指针 vector容器嵌套容器 string容器 构造函数 赋值操作 字符串拼接 查找和替换 string字符串比较 string字符存取 string插…...
公有云子账号认证的原理和步骤
1 为什么使用子账号 1.1 子账号认证的背景 主账号权限过大:公有云账号(主账号)对账号中的资源具有完全管理权限,且无法调整其权限大小,多人共用时无法在审计日志中区分出具体使用人,一旦泄露风险极大且难以追溯。 安全需求:为了提高安全性,避免因主账号信息泄露而导致…...
基于Flask的微博舆情数据分析系统
【Flask】基于Flask的微博舆情数据分析系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统能够高效收集、处理微博上的海量数据,实时反映公众对某些事件或话题的舆论倾向&am…...
Mac OS 禁用 SIP 系统完整性保护
关闭并重新启动 Mac,CommandR在启动时按住以进入Recovery Mode.进入Recovery模式后打开终端 -bash-3.2# csrutil disable Turning off System Integrity Protection reguires modifying system security.Allow booting unsigned operating systems and any ker…...
第十四届蓝桥杯省赛真题解析(含C++详细源码)
第十四届蓝桥杯省赛 整数删除满分思路及代码solution1 (40% 双指针暴力枚举)solution 2(优先队列模拟链表 AC) 冶炼金属满分代码及思路 子串简写满分思路及代码solution 1(60% 双指针)solution 2࿰…...
整车CAN网络和CANoe
车载网络中主要包含有Can网络,Lin网络,FlexRay,Most,以太网。 500kbps:500波特率,表示的数据传输的速度。表示的是最大的网速传输速度。也就是每秒 500kb BodyCan车身Can InfoCan娱乐信息Can 车身CAN主要连接的是ESB电动安全带 ADB自适应远光灯等 PTCan动力Can 底盘Can...
从扩展黎曼泽塔函数构造物质和时空的结构-16
都是一样的泽塔函数,却呈现出不同的性质,而不同的性质无关于自然数还是质数,完全是由s来决定的。可以猜想, 就是光子,而如果, 就是物质粒子。其中不同的k指出不同的周期或者对应于不同的质数p,虽…...
【C++】list模拟实现
📝前言: 这篇文章我们来讲讲STL中list的模拟实现: 🎬个人简介:努力学习ing 📋个人专栏:C学习笔记 🎀CSDN主页 愚润求学 🌄其他专栏:C语言入门基础,…...
人脸专注度检测系统(课堂专注度检测、人脸检测、注意力检测系统)
人脸专注度检测系统 项目介绍 本项目是基于Flask、MobileNetV2、Mediapipe的人脸专注度检测系统。 项目采用tensorflow.keras库内置的MobileNetV2预训练模型,对自主采集的少量人脸图片数据迁移训练而得到最终的人脸专注度检测模型。 项目采用前后端分离的技术框架…...
文件操作和IO ——Java
初识文件 首先文件分为: 1.狭义的文件 – 保存在硬盘上的文件。 2.广义的文件 – 操作系统进行资源管理的一种机制。很多的软件/硬件资源,抽象成“文件”来进行表示。 (println > 控制台,scanner > 控制台的标准输入&#…...
dmsetup 清理ceph osd残留磁盘分区
在物理机上接入磁盘并准备格式化时,发现磁盘中存在之前残留的 Ceph OSD 分区。尝试运用 fdisk 重新分区、重新格式化,以及使用 sgdisk 格式化,甚至重写磁盘头,都未能成功清理掉这些 OSD 残留分区。最终,借助 dmsetup 直…...
每日一题(小白)字符串娱乐篇16
分析题意可以了解到本题要求在一串字符串中找到所有组合起来排序递增的字符串。我们可以默认所有字符在字符串中的上升序列是1,从第一个字符开始找,如果后面的字符大于前面的字符就说明这是一个上序列那么后面字符所在的数组加一,如果连接不上…...
【Mac 从 0 到 1 保姆级配置教程 11】- Mac 基础配置 Finder、触控板、常用快捷键等
文章目录 前言配置 Finder1. 把我们的家目录请出来2. 显示文件扩展名3. 展示隐藏文件4. 显示路径栏和状态栏5. 固定文件夹到工具栏 基础快捷键1. Finder 导航快捷键2. 文件操作快捷键3. 视图和显示快捷键4. 搜索和选择快捷键5. 实用技巧6. 关于文件创建 配置触控板1. 右键设置2…...
Redis 渐进式rehash怎么判定rehash完成了?
Redis 渐进式 Rehash 的完成判断机制 在 Redis 的字典(dict)结构扩容或缩容时,会使用 渐进式 Rehash 来避免一次性迁移所有键值对导致的阻塞。以下是判断旧哈希表(ht[0])是否全部迁移完毕的核心逻辑: 1. 渐进式 Rehash 的核心流程 Redis 的字典结构包含两个哈希表: t…...
Redis的常用数据结构
三. Redis 的常用数据结构 (redis提供的查询功能, 不像mysql这么强大) 1. 认识数据类型和编码方式 常见数据结构 (数据类型) : string (字符串), list (列表), hash (哈希), set (集合), zset (有序集合). Redis 底层在实现上述数据结构的时候, 会在源码层面进行优化, 来达到…...
c++中的虚函数
在C中,虚函数(Virtual Function)是一种实现多态的重要机制,它允许在派生类中重写基类的函数,从而在运行时根据对象的实际类型调用相应的函数版本。 1. 虚函数的定义 虚函数是在基类中使用关键字virtual声明的函数。例…...
unreal engine5开发仿鬼泣5的游戏,把敌人击飞到空中4连击
UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、具体蓝图 前言 unreal engine5开发仿鬼泣5的游戏,把敌人击飞到空中4连击,先看下效果 一、实现思路 unreal engine5开发仿鬼泣5的游戏,把敌人击飞到空中4连击 在Unreal Engi…...
蓝桥杯嵌入式第十四届模拟二(PWM、USART)
一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lc…...