初识Linux · 数据链路层
目录
前言:
以太网帧协议
ARP协议
ARP协议理解
ARP协议字段
交换机
前言:
前文我们通过OSI模型,一直到TCP/IP四层模型,经过了三篇文章左右的功夫,我们把网络层介绍完毕,主要还是介绍的IP协议的iphdr,以及内网公网的概念,最后是一个IP分片。那么经过一系列介绍,我们最终也到了TCP/IP四层模型的最后一层——数据链路层。
那么数据链路层我们这么介绍,从以太网帧协议到认识MAC地址,再到arp协议,最后引入一个交换机的概念,数据链路层我们也就收官了。
当数据链路层讲完,我们下一篇文章再补充一点细节部分,具体之后再说咯,那么废话不多说,我们直接进入主题。
以太网帧协议
首先,在网络报文传输的时候,我们重点讨论的是报文从一个子网到达另一个子网的过程,那么我们并没有重点讨论在一个局域网内报文是怎么传输的,是怎么从一个主机到达另一个主机的,而数据链路层,要讨论的就是这个问题。
在网络层报文传输的时候,报文通过IP协议封装,到数据链路层之后也有对应的协议进行封装,这个协议叫做以太网帧协议。不过它非常的简单:
它就只有这么多字段,其中目的地址和源地址代表的是MAC地址,而对于MAC地址来说,设定的就是6字节,我们也可以通过ifconfig查看mac地址:
其中etho的ethre代表的就是MAC地址,由6字节组成,什么是MAC地址我们在第一节网路的时候就谈论了,MAC就相当于临时的地址。
以太网帧的CRC是校验码,我们不谈,中间的数据部分是46字节到1500字节,其中如果中间的数据不够46字节,OS就会采取一点措施,比如给数据中加入一定数量的1或0,总之能够到达46字节就可以了,当然了,数据也是不能超过MTU的,这是上文我们已经介绍了的。
这里面的重点是类型,类型可以代表IP报文,ARP请求/应答,RARP请求/应答。那么有了类型,我们就可以通过类型判断它是需要向上交付的报文,还是用来请求MAC地址或应答MAC地址的。
那么具体的涉及到了ARP协议,我们先不谈。但是有了以上的理解,如何解包,如何分用我们也就清楚了。
ARP协议
ARP协议理解
在数据链路层中存在两个协议,一个是以太网帧协议,一个是ARP协议,而ARP协议是建立在IP层和以太网帧协议的中间,但是实际上ARP协议也是在数据链路层的,就像这样:
那么ARP协议是什么我们要清楚,ARP协议是用来交换双方的MAC地址的,相当于是进行一个IP地址到MAC地址的转换,那么RARP协议代表的就是reverse ARP,完成的工作是MAC地址到IP地址的转换。
那么问题来了,我们明明可以通过IP直接进行通信,为什么要在数据链路层新增加一个ARP协议和以太网帧协议呢?因为MAC地址是物理层和数据链路层通信的地址,它们是固定的硬件地址,而IP地址是动态分配的,所以要实现本地通信,仍然需要落实到MAC地址上。即便说可以通过IP地址直接通信,那么每层都要理解什么是IP地址,这无疑增加了各种成本,所以使用MAC地址,也是更好的实现了分层,还记得吗?我们在最开始介绍协议的时候,说到了一个非常重要的话题就是:协议的出现,可以让通信更好的解耦合。
所以上述给出的定论是:ARP协议是用来进行IP地址到MAC地址的转换的,RARP协议是用来进行MAC地址到IP地址的转换的。当然了,大部分情况下都是使用的ARP协议,因为知道MAC地址但是不知道IP地址的情况还是比较少见的。
ARP协议字段
前面的14字节是以太网帧协议,后面的28字节是ARP协议。
对于硬件类型来说,一般都是1,表示以太网,对于协议类型来说,有多种取值,用来判读上层协议类型或者是ARP请求/应答,具体可以参考这个表格:
值(十六进制) | 协议类型 | 描述 |
---|---|---|
0x0800 | IPv4 | Internet Protocol v4(最常用) |
0x86DD | IPv6 | Internet Protocol v6(IPv6 不使用ARP,而使用 NDP) |
0x0806 | ARP | 仅在以太网帧类型字段中使用 |
0x8035 | RARP | Reverse ARP(已过时) |
0x809B | AppleTalk | Apple公司网络协议 |
0x8137 | IPX | Novell公司网络协议(已过时) |
对于OP来说,分别有4个取值,1代表ARP请求,2代表ARP应答,3代表RARP请求,4代表RARP应答。对于硬件地址长度来说,实际上就是MAC地址的长度,对于协议地址长度,比如IPv4地址的长度。对于发送端以太网地址和目的以太网地址来说,都是6字节,实际上就是MAC地址,对于发送端IP地址和目的IP地址来说,实际上就是IP地址。
那么我们可以模拟一下如何确认MAC地址的:
假设存在多台主机,主机A第一次给主机E发送消息,那么它会构建一个ARP请求,其中包含了两个IP地址,两个MAC地址,一个MAC地址是A的,一个MAC地址是E的,但是并不知道是多少,然后主机A将这个报文发送到了子网中,那么在局域网中每个主机都是可以收报文的,那么假设主机B收到了,解析的时候一看IP地址主机B的,那么该报文在主机B的数据链路层就会丢弃该报文。其中主机E收到了,一看IP地址是自己的,所以就会再发送一个报文到子网中,其中同样包含IP地址A和E的,MAC地址A和E的,OP被设置为2,代表这是一个ARP应答,其他主机收到一看,自己没有发送ARP请求,所以会抛弃该报文,主机A收到并成功解析,而这个过程ARP报文中最重要的就是OP。
一看OP知道该报文的类型是什么,才决定该主机是直接抛弃还是开始解析。
那么现在有一个问题:我们明显发现以太网帧协议中有MAC地址,帧类型,我们发现,以太网帧协议中的三个字段和ARP协议中的字段似乎重复了?
字段名称 | 出现位置 | 是否重复 | ARP中是否必须存在 | 原因解释 |
---|---|---|---|---|
源 MAC 地址 | 以太网帧头 + ARP协议中(Sender MAC) | ✅ 是 | ✅ 必须 | ARP协议需要明确声明“谁在发送请求”,供接收方写入 ARP 缓存表,且链路层信息上层无法直接访问 |
目标 MAC 地址 | 以太网帧头 + ARP协议中(Target MAC) | ✅ 是 | ✅ 必须 | 请求时目标MAC未知,帧头用广播地址,ARP中用全0,占位并供应答者填写;响应时明确告知目标MAC |
协议类型(IPv4) | 以太网帧头(Type 字段)≈ ARP协议字段(Protocol Type) | ⚠️ 部分重复 | ✅ 必须 | 以太网Type字段告诉接收方“上层协议是ARP”,而ARP内部还需指明它解析的是哪种上层协议地址(如IPv4) |
所以就像一物多用,在每一层都有自己的用处的,ARP缓存表我们可以通过arp -a查看:
当然了,从协议方面两个协议分别指明协议不同,以便更好的交付,加上最开始MAC地址不知道,所以需要明确MAC地址,就要使用ARP协议的MAC地址,加上还要缓存ARP缓存表,所以重复虽然是有,但是也是有用的。
交换机
我们清楚的知道一个子网就是一个碰撞域,所以在碰撞域类,如何避免碰撞是一个重要的话题,这里面就涉及到了碰撞算法,同学们可自行了解。
而如果发生了碰撞,就可能会导致两台主机休眠,谁先醒来谁就继续发数据,那么我们应该是经历过这么一个情况的:一大堆人在操场,会发现网络很卡,这就是因为在这个局域网内,数据碰撞的太多了,从而导致主机一直休眠。
那么如果一台主机往里面发送很多垃圾数据,让其他主机发生碰撞,就会导致其他主机休眠,自己的主机虽然发生了碰撞,但是它厚脸皮啊,它发的都是垃圾效率,所以可以疯狂重连,只要让其他主机退避就可以了,它只在乎发送垃圾数据。
那么为了解决一条物理信道有多台主机发送数据导致碰撞的问题,可以引入交换机:
在第一次交换机工作的时候是不知道左右两边的MAC地址的,但是在多台主机发送ARP之后,交换机内部会记录对应的MAC地址,这个时候就能真正分割对应碰撞域了。
对于数据链路层我们暂时说到这里,对于ARP的具体过程和ARP欺骗我们之后再谈~
感谢阅读!
相关文章:
初识Linux · 数据链路层
目录 前言: 以太网帧协议 ARP协议 ARP协议理解 ARP协议字段 交换机 前言: 前文我们通过OSI模型,一直到TCP/IP四层模型,经过了三篇文章左右的功夫,我们把网络层介绍完毕,主要还是介绍的IP协议的iphdr…...
Linux探秘:驾驭开源,解锁高效能——基础指令
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
【Linux】第二十二章 访问网络附加内存
1. NFS的主要功能是什么? NFS是由Linux、UNIX及类似操作系统使用的互联网标准协议,主要功能就是提供网络文件共享,允许不同的计算机系统之间通过网络共享文件,它使得网络上的计算机能够像访问本地文件系统一样访问远程计算机上的…...
Revit BIM 模型批量转换为 Datasmith 格式教程
Revit BIM 模型批量转换为 Datasmith 格式教程 一、背景与痛点 在建筑信息模型(BIM)与游戏开发的协同工作中,常需将 Revit 模型导入虚幻引擎(UE)。虽然 Revit 的 Datasmith 插件可实现单文件转换,但面对成百上千个模型时,手动操作效率极低。本文将分享如何开发一个自动…...
Linux 磁盘扩容实战案例:从问题发现到完美解决
Linux 磁盘扩容实战案例:从问题发现到完美解决 案例背景 某企业服务器根目录 (/) 空间不足,运维人员通过 df -h 发现 /dev/vda1 分区已 100% 占满(99G 已用)。检查发现物理磁盘 /dev/vda 已扩展至 200G,但分区和文件…...
Linux 系统不终止进程的情况下关闭长连接
使用 tcpkill 中断指定 TCP 连接 适用场景:需主动中断已知源IP或目标端口的连接,无需进程重启。 安装 dsniff 工具(包含 tcpkill): yum -y install dsniff 捕获并杀死特定连接(例如目标IP 192.168.1.10…...
从零开始创建React项目及制作页面
一、React 介绍 React 是一个由 Meta(原Facebook) 开发和维护的 开源JavaScript库,主要用于构建用户界面(User Interface, UI)。它是前端开发中最流行的工具之一,广泛应用于单页应用程序(SPA&a…...
Unity-编辑器扩展
之前我们关于Unity的讨论都是针对于Unity底层的内容或者是代码层面的东西,这一次我们来专门研究Unity可视化的编辑器,在已有的基础上做一些扩展。 基本功能 首先我们来认识三个文件夹: Editor,Gizmos,Editor Defaul…...
系分论文《论遗产系统演化》
系统分析师论文范文系列 摘要 2022年6月,某金融机构启动核心业务系统的技术升级项目,旨在对其运行超过十年的遗留系统进行演化改造。该系统承担着账户管理、支付结算等关键业务功能,但其技术架构陈旧、扩展性不足,难以适应数字化转型与业务快速增长的需求。作为系统分析师,…...
Django基础(二)Django 项目基础操作
一、实验目标 熟悉 Django 基本命令 理解 Django 项目和应用的目录结构 掌握项目初始化、应用创建与注册、项目启动、视图函数编写、路由配置、数据库配置等基础操作 二、Django 项目初始化 进入虚拟环境 source venv/bin/activate创建 Django 项目 django-admin startproje…...
【图像大模型】Stable Video Diffusion:基于时空扩散模型的视频生成技术深度解析
Stable Video Diffusion:基于时空扩散模型的视频生成技术深度解析 一、架构设计与技术演进1.1 核心模型架构1.2 技术创新点1.2.1 运动预测网络1.2.2 层级式训练策略 二、系统架构解析2.1 完整生成流程2.2 性能指标对比 三、实战部署指南3.1 环境配置3.2 基础推理代码…...
【免杀】C2免杀技术(七)远程线程注入
远程线程注入(Remote Thread Injection)是一种常见的进程注入技术,经常用于红队渗透、恶意软件加载、持久化控制等场景中,尤其在免杀(AV/EDR bypass)应用领域中,是一种历史悠久但依然有效的手段…...
二、【环境搭建篇】:Django 和 Vue3 开发环境准备
【环境搭建篇】:Django 和 Vue3 开发环境准备 前言为什么我们需要特定的开发环境?准备工作第一步:搭建后端开发环境 (Python, Django, DRF)1. 安装 Python2. 创建和激活 Python 虚拟环境3. 在虚拟环境中安装 Django 和 DRF 第二步:…...
【神经网络与深度学习】激活函数的可微可导
引言: 在深度学习领域,激活函数扮演着至关重要的角色。它不仅影响神经网络的非线性建模能力,还直接关系到梯度计算的稳定性。在优化过程中,我们通常要求激活函数具有良好的数学性质,其中可微性是一个关键条件。相比简单…...
【Tauri2】046—— tauri_plugin_clipboard_manager(一)
目录 前言 正文 安装 Rust中的使用 对文字的操作 看看write_text的函数签名 看看read_text的函数签名 对图像的操作 对html的操作 总结 前言 这篇就来看看clipboard这个插件。 参考如下 Clipboard | Taurihttps://tauri.app/plugin/clipboard/ 正文 安装 执行下…...
高效选课系统:一键管理你的课程表
选课流程 数据模型 我的课程表Controller Api(value "我的课程表接口", tags "我的课程表接口") Slf4j RestController public class MyCourseTablesController {Autowiredprivate MyCourseTablesService myCourseTablesService;ApiOperation("添加…...
Pytorch分布式训练,数据并行,单机多卡,多机多卡
分布式训练 所有代码可以见我github 仓库:https://github.com/xiejialong/ddp_learning.git 数据并行(Data Parallelism,DP) 跨多个gpu训练模型的最简单方法是使用 torch.nn.DataParallel. 在这种方法中,模型被复制…...
Secarmy Village: Grayhat Conference靶场
Secarmy Village: Grayhat Conference 来自 <Secarmy Village: Grayhat Conference ~ VulnHub> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶…...
centos 9 Kickstart + Ansible自动化部署 —— 筑梦之路
目标 利用 Kickstart 完成 centos 9 系统的全自动安装(裸金属/虚拟机)。 安装完成后自动接入 Ansible 进行软件包、服务、用户、配置等系统初始化操作。 实现一套通用、可重复、可维护的自动化交付流程。 KS文件 # ks.cfg 示例 install lang zh_CN.…...
HarmonyOS应用开发入门宝典——项目驱动学习法实践
学习一项新技能,最好也是最快的方法就是动手实战。学习鸿蒙也一样,给自己定一个小目标,直接找项目练,这样进步是最快的。记住,最好的学习时机永远是现在,最好的老师永远是你正在开发的项目。 一、为什么选择…...
Python类的力量:第六篇:设计模式——Python面向对象编程的“架构蓝图”
文章目录 前言:从“代码堆砌”到“模式复用”的思维跃迁 一、创建型模式:对象创建的“智能工厂”1. 单例模式(Singleton):全局唯一的“资源管家”2. 工厂模式(Factory):对象创建的“…...
第50天-使用Python+Qt+DeepSeek开发AI运势测算
1. 环境准备 bash 复制 下载 pip install pyside6 requests python-dotenv 2. 获取DeepSeek API密钥 访问DeepSeek官网注册账号 进入控制台创建API密钥 在项目根目录创建.env文件: env 复制 下载 DEEPSEEK_API_KEY=your_api_key_here 3. 创建主应用框架 python 复制…...
CentOS系统上挂载磁盘
在CentOS系统上挂载磁盘,主要包括查看磁盘设备、分区(若需要)、格式化、创建挂载点和挂载等步骤,以下是详细操作: 1. 查看磁盘设备 使用fdisk -l或lsblk命令查看系统识别到的磁盘设备。 fdisk -l:列出所…...
(一) 本地hadoop虚拟机系统设置
1.配置固定IP地址(每一台都配置) 开启node1,修改主机名为node1,并修改固定IP为:192.168.88.131 # 修改主机名 hostnamectl set-hostname node1# 修改IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR"…...
亿级核心表如何优雅扩展字段
1 导语 亿级数据的核心表新增一个字段,远不止一句简单的“ALTER TABLE”,锁表风险、页分裂、索引性能衰减……每一个问题都可能引发线上事故。如何在不影响业务的前提下,只需简单的配置,即可实现字段的动态扩展?本文将…...
单端传输通道也会有奇偶模现象喔
奇模(Odd mode)与偶模(Even mode)对差动对是很关键的要素,其会影响奇/偶模阻抗与相位速度,设计不良甚会让共模噪声引入整个差动对使讯号质量下降。 然而对单端信号系统而言呢? 如果说一对side b…...
VUE3 中的 ResizeObserver 警告彻底解决方案
问题背景 今天在使用 Vue 3 Ant Design Vue 开发后台管理系统时,在页面频繁触发 元素尺寸变化(如表格滚动、窗口缩放) 的时候,控制台频繁出现如下警告: ResizeObserver loop completed with undelivered notificati…...
IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS
目录 Windows的准备 1. 将与Linux上版本相同的hadoop压缩包解压到本地 编辑2.设置$HADOOP HOME环境变量指向:E:\hadoop-3.3.4 3.下载hadoop.dll和winutils.exe文件 4.将hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下载Big Data Tools插件 2.添加并连…...
Gas优化利器:Merkle 树如何助力链上数据效率革命
目录 前言原理Merkle树示意图实战演示:构建 Merkle 树并在合约中验证离线构建 Merkle 树(手动计算Merkle树、生成mermaid示意图)编写Merkle.js脚本执行Merkle.js脚本执行结果展示mermaid流程图展示离线构建 Merkle 树(merkletreejs计算Merkle树、验证哈希路径)编写Merkle.…...
R语言空间分析实战:地理加权回归联合主成份与判别分析破解空间异质性难题
在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…...
kafka入门(二)
Java客户端访问Kafka 引入maven依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka‐clients</artifactId> <version>2.4.1</version> </dependency> 消息发送端代码 package com.tuling.kafka.ka…...
学习日记-day11-5.20
完成目标: comment.java package com.zcr.pojo; import org.hibernate.annotations.GenericGenerator;import javax.persistence.*; //JPA操作表中数据,可以将对应的实体类映射到一张表上Entity(name "t_comment")//表示当前的实体类与哪张表…...
手淘不易被清洗销量的4个成交入口
在淘宝运营中,销量是店铺权重的重要指标之一,但平台对虚假交易的打击力度越来越大,许多商家因销量被清洗而损失惨重。那么,通过什么样的手淘成交入口稳定不易清洗呢?经过实测,我们总结了以下手淘4个不易被清…...
【Linux】Linux 多线程
目录 1. Linux线程概念2. 重谈进程地址空间---页表2.1 如何由虚拟地址转化为物理地址的 3. pthread库调用接口3.1 线程的创建---pthread_create3.2 线程等待---pthread_join3.3 线程的退出3.4 分离线程 4. 线程库5. 线程ID6. Linux线程互斥6.1 锁6.2 锁的接口6.2.1 互斥量的初始…...
DAY31
知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 作业:尝试针对之前的心脏病项目,准备拆分的项目文件,思考下哪些部分可以未来复用。 浙大疏锦行...
大模型应用开发“扫盲”——基于市场某款智能问数产品的技术架构进行解析与学习
本文将从一款问数产品相关技术架构,针对大模型应用开发中的基础知识进行“扫盲”式科普,文章比较适合新手小白,属于是我的学习笔记整理,大佬可以划走啦~产品关键信息已经进行模糊处理,如有侵权请联系删除。 文章目录 前…...
List优雅分组
一、前言 最近小永哥发现,在开发过程中,经常会遇到需要对list进行分组,就是假如有一个RecordTest对象集合,RecordTest对象都有一个type的属性,需要将这个集合按type属性进行分组,转换为一个以type为key&…...
打破建筑与制造数据壁垒:Revit 到 STP 格式转换全攻略(含插件应用 + 迪威模型实战)
引言 在建筑信息模型(BIM)与计算机辅助设计(CAD)领域,数据在不同软件和系统间的高效流转至关重要。Revit 作为 BIM 技术应用的主流软件,常用于建筑设计、施工和运维管理;而 STP(STE…...
RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)
视频讲解: RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头) 总共开发板有4个USB的A口,1个USB的TypeC口,我们插上两个USB3.0的U盘和一个USB2.0的UVC摄像头来进行测试 lsusb -tv 可以看到有3个US…...
驱动相关基础
一、驱动分类与区别 字符设备驱动 一个字节一个字节进行读写操作的设备,以字符流的形式进行数据传输(如鼠标、键盘、串口)。 块设备驱动 以块为单位进行读写操作的设备,块的大小通常为 512 字节、1024 字节。 块设备驱动主…...
【node.js】核心进阶
个人主页:Guiat 归属专栏:node.js 文章目录 1. Node.js高级异步编程1.1 Promise深入理解1.1.1 创建和使用Promise1.1.2 Promise组合模式 1.2 Async/Await高级模式1.2.1 基本使用1.2.2 并行执行1.2.3 顺序执行与错误处理 1.3 事件循环高级概念1.3.1 事件循…...
高频Java面试题深度拆解:String/StringBuilder/StringBuffer三剑客对决(万字长文预警)
文章目录 一、这道题的隐藏考点你Get到了吗?二、内存模型里的暗战(图解警告)2.1 String的不可变性之谜2.2 可变双雄的内存游戏 三、线程安全背后的修罗场3.1 StringBuffer的同步真相3.2 StringBuilder的裸奔哲学 四、性能对决:用数…...
量子计算的曙光:从理论奇点到 IT 世界的颠覆力量
在信息技术(IT)的飞速发展中,一项前沿技术正以耀眼的光芒照亮未来——量子计算(Quantum Computing)。2025 年,随着量子硬件的突破、算法的优化以及企业对超算能力的渴求,量子计算从科幻梦想逐步…...
c++使用protocol buffers
在 C 里使用 Protocol Buffer,要先定义消息结构,接着生成 C 代码,最后在程序里使用这些生成的代码。 定义消息结构 首先要创建一个.proto文件,在其中定义消息类型和字段。 // person.proto syntax "proto3"; // 指…...
AI驱动发展——高能受邀参加华为2025广东新质生产力创新峰会
当AI浪潮席卷全球产业版图,一场以"智变"驱动"质变"的变革正在发生。5月15日,华为中国行2025广东新质生产力创新峰会璀璨启幕,作为华为生态战略合作伙伴,高能计算机与行业领军者同台论道,共同解码A…...
怎样解决photoshop闪退问题
检查系统资源:在启动 Photoshop 之前,打开任务管理器检查 CPU 和内存的使用情况。如果发现资源占用过高,尝试关闭不必要的程序或重启计算机以释放资源。更新 Photoshop 版本:确保 Photoshop 是最新版本。Adobe 经常发布更新以修复…...
AWS CodePipeline+ Elastic Beanstalk(AWS中国云CI/CD)
问题 最近需要利用AWS云上面的CI/CD部署Spring应用。 一图胜千言 步骤 打开CodePipeline网页,开始管道创建,如下图: 管道设置,如下图: 这里主要设置管道名称,至于服务角色,直接让codepipel…...
人工智能核心知识:AI Agent 的四种关键设计模式
人工智能核心知识:AI Agent 的四种关键设计模式 一、引言 在人工智能领域,AI Agent(人工智能代理)是实现智能行为和决策的核心实体。它能够感知环境、做出决策并采取行动以完成特定任务。为了设计高效、灵活且适应性强的 AI Age…...
Electron+vite+vue3 从0到1搭建项目,开发Win、Mac客户端
随着前端技术的发展,出现了所谓的大前端。 大前端则是指基于前端技术延伸出来的各种终端平台及应用场景,包括APP、桌面端、手表终端、服务端等。 本篇文章主要是和大家一起学习一下使用Electron 如何打包出 Windows 和 Mac 所使用的客户端APPÿ…...
GitLab部署
学git Git最新最新详细教程、安装(从入门到精通!!!!企业级实战!!!工作必备!!!结合IDEA、Github、Gitee实战!!!…...