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

网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一)

  • 1. 网络的发展
  • 2. 认识协议
  • 3. 网络 VS 系统
  • 4. 以太网通信原理
  • 5. 重谈协议
  • 6. 网络中的地址管理


1. 网络的发展


最开始时,计算机之间相互独立。

在这里插入图片描述

但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求,于是,网路诞生了。

在这里插入图片描述

局域网:参与通讯的主机越来越多,形成一个更大的网络。各个计算机通过交换机和路由器连接在一起。

在这里插入图片描述

广域网:参与通讯的计算机更多了,远隔千里的计算机也能相互通讯了。路由器将各个子网连接在一起。

在这里插入图片描述

所谓 “局域网” 和 “广域网” 只是一个相对的概念。


2. 认识协议


1. 什么是协议?

  • 计算机生产厂商有很多;
  • 计算机操作系统,也有很多;
  • 计算机网络硬件设备,还是有很多;
  • 网络一定要保证,各种不同的机器,都能够无障碍进入互联网,所以从硬件到软件上,都要制定一些统一的约定;
  • 这些约定就是 网络协议

2. 跨网络通讯存在的问题(新技术带来新问题)

  • 单台机器中,各个硬件之间也要相互通讯,他们通过各种电路连接到一起。所以单台机器,其实也是一个网络结构。
  • 两台机器跨网络通讯的本质,是一台机器的网卡和另一台机器的网卡之间相互通讯。单台机器硬件间相互通讯时,因为距离短,所以很容易实现。
  • 跨网络通讯由于距离很长,所以产生了如下几个新问题:
    • 数据丢包了怎么办?
    • 目标机器如何定位?
    • 如何保证,我们的报文,在经历了无数个设备之后,还能准确的把数据推送到远端机器?
  • 协议的制定,也解决了上述三个问题。

3. 协议分层

在这里插入图片描述

  • 在打电话的场景中,我们的直观感受是,自己在和人说话,而不是在跟手机说话。而实际场景是,我们所说的话,需要通过电话先转成电信号,再传递给对方的手机,由对方的手机解析该信号,转化成语音。
  • 人是无法直接跟手机说话的,因为人无法识别电信号,手机也无法识别语音信号。可以理解为,人和人之间,有一种协议,大家都说语音信号,所以可以相互沟通;手机和手机之间也有一种协议,大家都使用电信号,所以也可以相互沟通。
  • 当人和人之间的协议变化时,比如大家都改说英文,是不影响下层手机的协议的;当手机由座机变为移动手机时,下层协议变为无线电协议,不影响上层人和人之间的协议。
  • 协议只适用于同层之间相互通信,不能上下层通信,这样的设计理念就是协议分层。

3. 网络 VS 系统


1. 网络通讯存在的问题,更具体

  • a. 怎么保证把数据给下一跳主机;
  • b. 在转发中,如何进行路径选择,目标主机定位的问题;
  • c. 如果报文中间出现错误或丢失,如何解决;
  • d. 对于送达的数据,还要解决如何使用数据的问题。
  • 上述abcd中的每一个问题,都要由协议解决,由此可以知道,协议有很多。

2. 网络的解决方案 —— 网络的层状结构

  • 理论模型:OSI参考模型

    • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
    • 把网络从逻辑上分为了7层,每一层都有相对应的物理设备,比如路由器,交换机;
    • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
    • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
    • 但是,它只是理论上的模型,既复杂也不实用。实际运用中,我们常采用 TCP/IP4 层网络模型。
  • 实际运用模型:TCP/IP四层(或五层)模型

    • TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
    • 物理层:负责光/电信号的传递方式,比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层;
    • 数据链路层:负责设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层;
    • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层;
    • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机;
    • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

在这里插入图片描述

绝大部分优秀的软件,结构都是层状的。

3. 网络协议栈(TCP/IP协议栈)

在这里插入图片描述

  • 每一层都有对应的协议;每一层都解决一个网络传输中的具体问题。

4. 网络和系统的关系

在这里插入图片描述

  • 如图所示,网络协议栈和系统的各层级有一一对应关系。TCP/IP协议是存在在系统内核中的。
  • 对于不同的操作系统,如Windows、Linux、MacOS,他们的左边系统部分是不同的,实现上甚至有很大差别。但是他们的右边网络部分,必须相同。所以在不同的操作系统中,网络的系统调用接口大同小异。

4. 以太网通信原理


在同一个局域网中,两台主机可以直接通信,每一个网卡都有一个mac地址,这个mac地址是全球唯一的(mac地址也可以虚拟,例如虚拟机的mac地址就是虚拟出来的)

利用ifconfig命令可以查看Linux操作系统的mac地址:

在这里插入图片描述

同一个局域网中的主机,连接在同一个网线中,如果主机A想向主机B发送一个消息“你好”,只需要知道主机A和主机B网卡的mac地址即可,这个信息携带着主机A和主机B网卡的mac地址,发送到了网线上,所有连接在这个网线上的主机都收到了这个信息,只是有的主机解析该信息后,发现mac地址不是自己的,也就不是发给自己的,就把这个信息丢弃了。

在这里插入图片描述
不难看出,要想正确的发送数据,任何时刻,只允许一台主机在局域网中发消息,不然就会发生数据碰撞。我们也将会发生数据碰撞的地方叫做碰撞域。局域网就是一个基于碰撞检测和碰撞避免的通信网络。

如果从系统的角度来看,局域网就是一个临界资源,要保证对临界资源的互斥访问。

以太网名字的由来:以太网就是局域网,上个世纪,物理学家认为,既然声音的传播需要介质,那么光的传播也是需要介质的。学者们把这种假想出来的介质称为“以太”,并认为宇宙中一定充满了“以太”。后来经过实验证明,“以太”这种物质不存在,但是“以太”这个名词被计算机领域使用了,也就有了最早的“以太”网。


5. 重谈协议


1. 生活小例子

在这里插入图片描述

  • 在快递的场景中,一个完整的快递件,是由快递单号+快递内容组成的。作为用户,我们实际上并不关心快递具体是怎么送达的(不会去看快递单号),只关心最后拿到的快递内容;
  • 快递单本身就是一种约定,是一种协议,它详细记录了寄件人和收件人的信息,以保证快递能正确的送到收件人手中;
  • 如果我们用计算机语言来表示这个快递单,它实际上就是一个结构体数据。协议通常就是由结构体字段表征的,这个结构体字段定义的对象,我们叫做协议报头。

2. 数据包的封装和分用

在这里插入图片描述

  • 假如现在有两台主机在通信(假设两天主机在同一局域网内),主机A给主机B发送了一条消息:你好。实际的传输过程如上图所示。
  • “你好”消息在主机A中,需要对其逐层添加报头,封装数据包;B首先拿到的是封装了各种报头的数据帧,随后开始对这个数据帧进行逐层的解包和分用,返回给最上层用户的就是最原始的数据“你好”。
  • 应用层封装的数据叫request&response,传输层封装的数据叫数据段,网络层封装的数据叫数据报,数据链路层封装的数据叫数据帧

3. 只要有封装,就一定要考虑后续解包的过程,今后在学习协议时,绕不开的两个问题

  • 如何将报文中的报头和有效载荷进行分离;
  • 任何协议,都要解决如何将自己的有效载荷,交付给上层的哪一个协议的问题。

6. 网络中的地址管理


1. 认识IP地址

  • IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。
    • IP地址是在IP协议中,用来标识网络中不同主机的地址,最大的意义在于路径选择;
    • 对于IPv4来说,IP地址是一个4字节,32位的整数;
    • 我们通常也使用 “点分十进制” 的字符串表示IP地址,例如 192.168.0.1 ;用点分割的每一个数字表示一个字节,范围是 0 - 255。
    • 在实际的网络传输中,IP地址是以整数形式传递的;在编程角度,也可以以字符串形式使用IP;IP地址是可以在整数和字符串之间相互转化的。
  • Linux下的IPV4地址如下:

在这里插入图片描述

  • Windows下的IPV4地址如下:

在这里插入图片描述

  • IP地址又分为:a.公网IP b.内网IP(这个后面再详谈)。
  • 可以通过一个struct结构体,来描述IP:
struct ip_struct
{uint8_t p1;uint8_t p2;uint8_t p3;uint8_t p4;
};

2. 认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点;

    • 长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
    • 在网卡出厂时就确定了,不能修改。mac地址通常是全球唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)。
  • Linux下的MAC地址:

在这里插入图片描述

  • Windows下的MAC地址:

在这里插入图片描述

3. IP地址 VS MAC地址

  • IP地址用来标识数据的发出地和目的地;
  • MAC地址用来标识数据上一站从哪里来,以及下一站到哪里去。

就好比唐僧要去西天取经,起始地是大唐长安,目的地是大雷音寺;此时唐僧到了女儿国,上一站是火焰山,下一站是黑风岭。

4. 模拟跨网络传输

在这里插入图片描述

  • 假设两台机器在不同的局域网中,A发送了一条消息“你好”给机器B;
  • 该消息首先要进行封装,在网络层封装时,报头处必然要携带发送方主机A的IP地址,和接收方主机B的IP地址;
  • 连接局域网和局域网的设备是路由器,所以消息“你好”首先要转发到这个路由器中。在数据链路层,报头处封装了主机A的MAC地址,和要到达的下一跳主机路由器R的MAC地址;
  • 路由器拿到该消息后,首先进行解包,然后再进行封装。虽然我们不了解令牌环这种局域网,但是我们知道,该协议报头必然携带路由器R的MAC地址和主机B的MAC地址;
  • 数据链路层,关于MAC地址的报头一直在变化,网络层关于IP的报头则一直不变(起始IP可能会变)。

令牌环网络:拿到临牌的主机才可以通信,同一时刻只能有一个主机拿到令牌,令牌按照一定规则轮流交给每个主机。从系统的角度看,令牌就是一把锁。

5. 网络通信整体轮廓

在这里插入图片描述


相关文章:

网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一) 1. 网络的发展2. 认识协议3. 网络 VS 系统4. 以太网通信原理5. 重谈协议6. 网络中的地址管理 1. 网络的发展 最开始时,计算机之间相互独立。 但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求&#xff0c…...

PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术

通过结合具体技术特性与工具链的深度使用,可系统化提升数据库性能和稳定性。建议根据实际负载特征制定监控-分析-优化的闭环管理流程。 数据库技术: PostgreSQL 13:逻辑复制、分区表、并行查询、监控工具(如pg_stat_statements、…...

本地YARN集群部署

请先完成HDFS的前置部署,部署方式可查看:本地部署HDFS集群https://blog.csdn.net/m0_73641796/article/details/145998092?spm1001.2014.3001.5502 部署说明 组件配置文件启动进程备注Hadoop HDFS需修改 需启动: NameNode作为主节点 DataNode作为从节点 Secondary…...

Redis数据结构——list

目录 列表命令 lpush lrange lpushx rpush rpushx lpop rpop lindex linsert llen lrem ltrim lset blpop / brpop 命令总结 编码方式 list相当于数组或者顺序表,但并不是简单的数组,更接近于C中的"双端队列"(deque)。 最左侧的下标…...

World of Warcraft [CLASSIC] BigFoot BiaoGe

World of Warcraft [CLASSIC] BigFoot BiaoGe 金团表格插件 设置60秒拍卖装备时间 ALT 鼠标左键,点击装备,弹出对话框,填写 1)拍卖时间默认60秒,起拍价, 2)点击【开始拍卖】 团队所有安装了…...

CentOS Docker 安装指南

CentOS Docker 安装指南 引言 Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 容器是完全使用沙箱机制,相互之…...

PHP:phpstudy无法启动MySQL服务问题解决

文章目录 一、问题说明二、解决问题 一、问题说明 我的Windows10系统,之前安装过MySQL5.7的版本。 然后,用phpstudy安装MySQL8,并启动MySQL8。 发生无法启动的情况。 二、解决问题 1、删除本地MySQL7的服务 net stop MySQL //这里的服务名…...

【电控笔记z29】扰动估测器DOB估测惯量J-摩擦系数B

基本原理 扰动估测器的核心思想是通过向电机系统施加特定的扰动信号,观察系统响应的变化,然后利用系统的动态模型和控制理论来估计未知参数,如惯量和摩擦系数 。一般基于电机的运动方程建立数学模型,结合观测到的电机实际运行数据…...

STM32-I2C通信外设

目录 一:I2C外设简介 二:I2C外设数据收发 三:I2C的复用端口 四:主机发送和接收 五:硬件I2C读写MPU6050 相关函数: 1.I2C_ GenerateSTART 2.I2C_ GenerateSTOP 3.I2C_ AcknowledgeConfig 4.I2C…...

计算机二级MS之PPT

声明:跟着大猫和小黑学习随便记下一些笔记供大家参考,二级考试之前将持续更新,希望大家二级都能轻轻松松过啦,过了二级的大神也可以在评论区留言给点建议,感谢大家!! 文章目录 考题难点1cm25px…...

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…...

C++ Primer 交换操作

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

分布式中间件:Redis介绍

目录 Redis 概述 Redis 的特点 高性能 丰富的数据结构 持久化 分布式特性 简单易用 Redis 的数据结构 字符串(String) 哈希(Hash) 列表(List) 集合(Set) 有序集合&…...

软件测试的基础入门(二)

文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…...

学之思社区版考试系统docker-compose部署

参考 开源项目-Docker部署学之思管理系统 安装docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Bas…...

深度优先搜索(DFS)和广度优先搜索(BFS)——c#实现

一、深度优先搜索(DFS) 原理: 沿着分支尽可能深入,直到到达叶子节点,然后回溯探索其他分支 类似走迷宫时优先选择一条路走到黑,碰壁再回退 数据结构:栈(Stack)或递归实…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具,主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言(HiveQL)进行数据操作,而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

JVM详解

目录 一.JVM的概念 1. 什么是JVM? 2.JVM用来干什么? 二JVM运行流程 JVM执⾏流程 2.1类加载机制 2.2类加载机制带来了哪些好处? 2.3类加载的过程是什么? 2.3.1加载 2.3.2验证 2.3.3准备阶段 2.3.4解析阶段 符号引⽤ 直接引⽤ 2.3.5初始化阶段 2.4类加载器 什么…...

PCA(主成分分析)核心原理

一、PCA(主成分分析)核心原理 即主成分分析技术,又称主分量分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换…...

DeepSeek私有化部署6:openEuler 24.03-LTS-SP1安装Open WebUI

Open WebUI是一个 Open WebUI 是一个可扩展的、功能丰富、用户友好的自托管 AI 平台,专为完全离线运行而设计。 它支持多种 LLM 运行环境,包括 Ollama 和 OpenAI 兼容的 API,并内置了用于 RAG 的推理引擎,是一个强大的 AI 部署解决…...

【一文学会 HTML5】

目录 HTML概述基本概念HTML 发展历程HTML 基本结构 网页基本标签标题标签&#xff08;<h1> - <h6>&#xff09;段落标签&#xff08;<p>&#xff09;换行标签&#xff08;<br>&#xff09;水平线标签&#xff08;<hr>&#xff09;注释&#xff0…...

前端题目类型

HTMLCSS常见面试题 HTML标签有哪些行内元素 img、picture、span、input、textarea、select、label 说说你对元素语义化的理解 元素语义化就是用正确的元素做正确的事情。虽然理论上所有html元素都可通过css样式实现相同效果&#xff0c;但这样会使事情复杂化&#xff0c;所以需…...

nodejs学习——nodejs和npm安装与系统环境变量配置及国内加速

nodejs和npm安装与系统环境变量配置及国内加速 下载node-v22.14.0-x64.msi 建议修改为非C盘文件夹 其它步骤&#xff0c;下一步&#xff0c;下一步&#xff0c;完成。 打开CMD窗口查看安装详情 $ node -v v22.14.0 $ npm -v 10.9.2$ npm config list创建node_global和node_c…...

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下&#xff1a; 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度&#xff0c;单位为像素。 -h 图像高度&#xff0c;单位为像素。 -hstride 垂直方向相邻两行之间的距离&#xff0c;单…...

Vue3实战学习(Vue3的基础语法学习与使用(超详细))(3)

目录 &#xff08;1&#xff09;Vue3工程环境准备、项目基础脚手架搭建详细教程。(博客链接) &#xff08;2&#xff09;Vue3的基础语法学习与使用。 &#xff08;1&#xff09;"{{}}"绑定数据。 <1>ref()函数定义变量——绑定数据。 <2>reactive({...})…...

基于multisim的花样彩灯循环控制电路设计与仿真

1 课程设计的任务与要求 &#xff08;一&#xff09;、设计内容&#xff1a; 设计一个8路移存型彩灯控制器&#xff0c;基本要求&#xff1a; 1. 8路彩灯能演示至少三种花型&#xff08;花型自拟&#xff09;&#xff1b; 2. 彩灯用发光二极管LED模拟&#xff1b; 3. 选做…...

EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信

1、技术背景 WebRTC是一项开源项目&#xff0c;旨在通过简单的API为浏览器和移动应用程序提供实时通信&#xff08;RTC&#xff09;功能。它允许在无需安装插件或软件的情况下&#xff0c;实现点对点的音频、视频和数据传输。 WebRTC由三个核心组件构成&#xff1a; GetUserM…...

【CSS】gap 属性详解

文章目录 一、什么是 gap 属性1. 定义2. 语法3. 默认值 二、gap 属性的基本用法1. 网格布局中的应用2. 弹性布局中的应用3. 单值和双值的区别 三、gap 属性的实际应用场景1. 表单布局优化2. 图片网格布局 四、gap 的注意事项1. 浏览器兼容性2. 替代 margin 的场景3. 不同布局的…...

【招聘精英】

我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…...

qt 操作多个sqlite文件

qt 操作多个sqlite文件 Chapter1 qt 操作多个sqlite文件1. 引入必要的头文件2. 创建并连接多个SQLite数据库3. 代码说明4. 注意事项 Chapter2 qt 多线程操作sqlite多文件1. 引入必要的头文件2. 创建数据库操作的工作线程类3. 在主线程中创建并启动多个工作线程4. 代码说明5. 运…...

【自学笔记】Numpy基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Numpy基础知识点总览目录1. 简介Numpy是什么为什么使用Numpy 2. 数组对象&#xff08;ndarray&#xff09;创建数组数组的属性数组的形状操作 3. 数组的基本操作数组…...

DP 问题 -- LQR中的DP问题

深入地介绍线性二次调节问题&#xff08;Linear Quadratic Regulator, LQR&#xff09;&#xff0c;并详细说明它作为动态规划&#xff08;DP&#xff09;的一个经典应用问题的求解过程。 &#x1f4cc; 一、LQR问题定义&#xff08;最优控制视角&#xff09; LQR 问题是一种特…...

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面&#xff1a;为什么你需要这份教程&#xff1f; 当电脑频繁蓝屏、系统崩溃甚至无法开机时&#xff0c;重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点&#xff1a; ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…...

CEF在MFC上的示例工程

CEF 在 MFC 中的使用 工程配置 1、首先创建一个MFC对话框工程 创建完运行测试效果如下 2、MFC工程引入CEF库 将 CEF 目录下的 cef子目录下载解压后放到MFC工程中&#xff1a; 然后在VS中对工程右键 -> 属性 -> C/C -> 常规 -> 附加包含目录&#xff0c;添加“.\…...

#UVM# 关于 config_db 机制中的直线非直线设置和获取讲解

在 UVM 验证环境中,uvm_config_db 是一种强大的机制,用于在不同组件之间传递配置参数。实际应用中,我们经常使用直线和非直线的设置与获取。今天,着重回忆一下这些内容,希望实际中更加方便的使用。 UVM 树结构示例 假设 UVM 树结构如下: uvm_test_top ├── env │ …...

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...

Java网络编程,多线程,IO流综合项目一一ChatBoxes

Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes 作者&#xff1a;blue 时间&#xff1a;2025.3.7 文章目录 Java网络编程&#xff0c;多线程&#xff0c;IO流综合小项目一一ChatBoxes1.项目介绍2.项目源码剖析2.1客户端源码2.2客户端Sender线程Runn…...

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;大数据入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 这是目…...

【算法 C/C++】一维前缀和

2025 - 03 - 08 - 第 68 篇 Author: 郑龙浩 / 仟濹 【一维前缀和】 文章目录 前缀和与差分 - 我的博客1 大体介绍2 计算某些区间的和( 不使用前缀和 )3 计算某些区间的和( 使用前缀和 ) 前缀和与差分 - 我的博客 一维前缀和 【算法 C/C】一维前缀和 一维差分 【算法 C/C】一维…...

【C++】:STL详解 —— 红黑树

目录 平衡二叉查找树 红黑树的概念 红黑树的五大性质 红黑树的效率 红黑树和AVL树的比较 插入与删除操作 内存与实现复杂度 经典性能数据对比 总结 对旋转的基本理解 旋转的作用 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xf…...

【A2DP】SBC 编解码器互操作性要求详解

目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...

Mysql的卸载安装配置以及简单使用

MySQL其它问题已经更新在&#xff1a;MySQL完善配置---可视化-CSDN博客 一、卸载 ①控制面板卸载 ②C盘隐藏项目>ProgramData>mysql相关文件夹&#xff0c;还有Program file下的MySQL文件夹 ③开始菜单栏搜索>服务&#xff0c;找到MySQL相关服务删除&#xff0c;如果再…...

Ubuntu 下 nginx-1.24.0 源码分析 (1)

main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init(); 进入 main 函数 最…...

驱动开发系列43 - Linux 显卡KMD驱动代码分析(四)- DRM设备操作

一:概述 DRM(Direct Rendering Manager)是Linux内核中的一个子系统,主要负责图形硬件的管理与图形渲染的加速。它为图形驱动提供了一个统一的接口,可以使用户空间程序与图形硬件进行直接交互,而无需通过X服务器或Wayland等显示管理器。DRM不仅用于管理显卡,还处理视频输…...

PAT乙级真题(2014·冬)

大纲 1031、查验身份证-&#xff08;解析&#xff09;-简单题 1032、挖掘机技术哪家强-&#xff08;解析&#xff09;-细节题(┬┬﹏┬┬)&#xff0c;太抠细节了 1033、旧键盘打字-&#xff08;解析&#xff09;-输入格式&#xff01;这才是重点(┬┬﹏┬┬)&#xff0c;让…...

快速使用MASR V3版不能语音识别框架

前言 本文章主要介绍如何快速使用MASR语音识别框架训练和推理&#xff0c;本文将致力于最简单的方式去介绍使用&#xff0c;如果使用更进阶功能&#xff0c;还需要从源码去看文档。仅需三行代码即可实现训练和推理。 源码地址&#xff1a;https://github.com/yeyupiaoling/MA…...

学习笔记:Python网络编程初探之基本概念(一)

一、网络目的 让你设备上的数据和其他设备上进行共享&#xff0c;使用网络能够把多方链接在一起&#xff0c;然后可以进行数据传递。 网络编程就是&#xff0c;让在不同的电脑上的软件能够进行数据传递&#xff0c;即进程之间的通信。 二、IP地址的作用 用来标记唯一一台电脑…...

硬件基础(4):(2)认识ADC参考电压

文章目录 1. **ADC参考电压的定义**2. **如何影响采样值**3. **参考电压的选择**4. **如何选择参考电压**5. **总结** **ADC参考电压&#xff08;Vref&#xff09;**是用于定义ADC采样范围的一个重要参数&#xff0c;以下是对 ADC 参考电压的详细解释&#xff1a; 1. ADC参考电…...

项目中同时使用Redis(lettuce)和Redisson的报错

温馨提示&#xff1a;图片有点小&#xff0c;可以放大页面进行查看... 问题1&#xff1a;版本冲突 直接上图&#xff0c;这个错表示依赖版本不匹配问题&#xff0c;我本地SpringBoot用的是2.7&#xff0c;但是Redisson版本用的3.32.5。 我们通过点击 artifactId跟进去 发现它…...

工程化与框架系列(25)--低代码平台开发

低代码平台开发 &#x1f527; 引言 低代码开发平台是一种通过可视化配置和少量代码实现应用开发的技术方案。本文将深入探讨低代码平台的设计与实现&#xff0c;包括可视化编辑器、组件系统、数据流管理等关键主题&#xff0c;帮助开发者构建高效的低代码开发平台。 低代码…...