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

计算机网络:网络层 - 路由选择协议

计算机网络:网络层 - 路由选择协议

    • 路由器的结构
    • 路由选择协议概述
    • 自治系统 AS
    • 内部网关协议
      • 路由信息协议 RIP
        • 距离向量算法
        • RIP报文格式
        • 收敛问题
      • 开放最短路径优先 OSPF
        • 基本工作原理
        • 自治系统分区
    • 外部网关协议
      • BGP-4


路由器的结构

如图所示,路由器被分为路由选择分组转发两个部分:

在这里插入图片描述

分组转发中:

当一个数据报从端口进入,要依次被物理层数据链路层网络层层层解析,得到数据报。随后根据转发表,决定从哪一个端口传出,再依次被网络层数据链路层网络层层层封装。

转发的核心就是这个转发表,而转发表是由路由选择路由表得出的

路由器通过路由选择协议来构建路由表,从而得出转发表,才能合理转发数据报。本博客就讲解路由选择协议,来了解路由表是如何得出的。


路由选择协议概述

路由选择协议分为静态路由选择动态路由选择

  • 静态路由选择:由人工配置的路由,不能及时适应网络的变化,一般来说只在小规模网络中使用
  • 动态路由选择:路由器自己获取路由信息,能够及时适应网络变化,一般大型网络使用

因特网作为全球最大的网络,毫无疑问要使用动态路由选择,动态路由选择有以下特点:

  • 自适应:动态路由选择能较好适应网络状态变化
  • 分布式:将一个系统或任务分解成多个部分,并将其分配到多个节点上执行,这些节点之间通过网络互相通信,最终协作完成整个任务。路由器之间就是这样完成任务的。
  • 分层次:整个因特网被划分为很多自治系统,按层次管理

接下来本博客就讲解这个动态路由选择


自治系统 AS

由于互联网的规模非常大,如果让所有的路由器知道所有的网络应怎样到达,则路由表将会非常大,处理起来花费的时间也会很多,所以互联网采用分层次的路由选择协议

该协议将互联网划分为许多个较小的自治系统 AS,如下图:

在这里插入图片描述

每个AS对其它的AS表现为一个单一的,一致的路由

比如上图中,左上角的AS只通过R1连接外部,所以该AS内部的报文,都要通过R1传输。

  • 每个AS内部,使用内部网关协议
  • 不同的AS之间,使用的是外部网关协议

在这里插入图片描述

如上图,自治系统 A内部使用了内部网关协议RIP,而自治系统 B内部使用了内部网关协议OSFP。也就是说,不同的AS使用不同的内部网关协议,也可以进行通信。在两个AS之间,使用了外部网关协议BGP-4


内部网关协议

路由信息协议 RIP

RIP是一种基于距离向量的路由选择协议

所谓距离向量,计算规则如下:

  1. 路由器到直连网络的距离为1
  2. 路由器到非直连网络的距离,为经过的路由器数目加1

如下图:

在这里插入图片描述

网络N1R1直连,那么R1N1的距离向量就是1;而R3N2并不直连,途径一个路由器R2,那么距离向量就是路由器数目 + 1 = 2

距离向量的最大值为15,当大于等于16时,表示不可达,即不能通过该路由连接到对应的网络。

RIP路由表中,主要包含以下信息:

  • 目的网络:目的网络的地址
  • 距离:到达该网络的距离向量
  • 下一跳路由:到达该网络,要把数据报传输给哪一个路由

那么路由器如何构建自己的路由表呢?

  1. 路由器仅和相邻路由器交换信息
  2. 交换的信息为本路由器知道的所有信息
  3. 路由器按照固定的时间间隔交换信息,然后根据距离向量算法更新自己的路由表
距离向量算法

当路由器接收到来自相邻路由器的RIP报文,就要通过距离向量算法更新自己的路由表,规则如下:

  1. 收到报文后,先修改报文的内容,将距离字段加一,下一跳字段变为发送该报文的路由器

如下图:

在这里插入图片描述

现在R2R1发送了一个RIP报文,内部包含到net2的信息,其中:距离字段要+1,表示R1想要到达该网络,需要再经过R2路由器;而下一跳要变为R2,表示到达该网络需要将数据报转发给R2

在这里插入图片描述

  1. 将修改后的数据报,与自己原先的路由表对比,更新路由表
  1. 如果原先路由表中没有目的网络,那么将该网络添加到自己的路由表中
  2. 如果原先路由表有相同的目的网络,那么根据以下规则更新:
    • 如果报文中的下一跳的地址与原先下一跳相同:那么更新路由表的距离,这是因为网络随时都有可能变化,有可能同一个路由器到一个网络的距离变了,此时要用最新的,确保信息正确
    • 如果报文中的下一跳的地址与原先下一跳不相同:此时比较距离,保留距离比较小的那一条

示例:

在这里插入图片描述

R1收到了R2发来的RIP报文,修改后如右图。

  • net1:原先R1中没有对应的网络,将该条目添加到路由表中
  • net2:原先R1有该网络,并且下一跳同为R2,此时就算距离变长了,也要更新报文,距离从3变为8
  • net3:原先R1有该网络,但是下一跳不相同,此时比较距离11 > 8,说明R2R3距离短,选用R2,更新路由
  • net4:原先R1有该网络,但是下一跳不相同,此时比较距离3 < 6,说明R4R2距离短,选用R4,不更新路由

最后R1路由表变为:

在这里插入图片描述

另外的:如果三分钟没有收到相邻路由器的RIP报文,则把该路由器记为不可达,把距离设置为16


RIP报文格式

RIP报文格式如下:

在这里插入图片描述

如图所示,RIP报文被封装在UDP数据报后,在被封装进了IP数据报其实RIP本质是一个应用层协议

RIP路由部分中,包含了最重要的网络(网络地址+子网掩码)下一跳距离这三个字段。一个报文中最多包含25个这样的路由信息。


收敛问题

RIP协议的优点是实现非常简单,开销很小。

但是RIP也有不少缺点:

  1. 限制了自治系统的大小RIP限制最大距离为16,这也决定了使用RIP的自治系统不能太大
  2. 收敛时间长:也叫做”坏消息传播慢“

收敛:自治系统中所有节点都得到正确的路由信息的过程

接下来我们就看看为什么存在收敛时间长的问题:

在这里插入图片描述

现在R1直连网络net1R2通过R1间接连接到net1,突然R1断开了与net1的连接,此时把距离改为16

在这里插入图片描述

R1还没来得及告诉R2自己的路由表,R2就给R1发送了RIP报文

在这里插入图片描述

此时R1误以为可以通过R2连接到net1,于是更新自己的路由表:

在这里插入图片描述

此时就已经产生了错误信息了,过一会R1又给R2发送RIP报文

在这里插入图片描述

此时R2以为R1的链路变长了,于是把自己的距离更新为4,随后R2R1发送报文:

在这里插入图片描述

此时R1再更新,以此类推,直到两边距离都为16

在这里插入图片描述

此时路由器R1R2才直到,net1是不可达的。这就是为什么RIP的收敛速度慢。


开放最短路径优先 OSPF

开放最短路径优先OSPF,是为了克服RIP的缺点而开发出来的。

  • 开放:表明OSPF不是受公司控制的,而是公开发表的协议
  • 最短路径优先:使用了最短路径算法SFP

先前的RIP是基于距离的协议,OSPF是基于链路状态的,路由器会维护一个整个网络的拓扑图,并基于此图计算最优路径

OSFP不会限制网络的规模,而且收敛速度快。

基本工作原理

OSPF需要先建立和维护邻居关系,这个过程是通过问候分组 hello实现的:

在这里插入图片描述

如图所示,每个路由器都有自己的邻居表R1的邻居就是R2R4。每隔十秒钟,路由器就会发送一次hello 分组,如果连续40秒没有收到对应的hello 分组,那么认为该路由器不可达。

路由器会通过数据交换,让每个路由器都由一个链路状态数据库 LSDB,并基于这个数据库,计算出自己到达各个路由器的最短路径,从而构建效率最高的路由表。

数据交换过程通过五种分组维护:

  1. 问候分组:用来构建和维护邻居路由
  2. 数据库描述分组:向邻居路由给出自己的链路状态数据库的摘要信息
  3. 链路状态请求分组:向邻居路由请求更加详细的信息
  4. 链路状态更新分组:将自己的详细信息发送出去,通过泛洪法,让自治系统的所有路由器都可以更新状态
  5. 链路状态确认分组:当路由器通过链路状态更新分组,更新了自己的数据库后,通过该报文确认

如图所示,一开始路由器之间交换问候分组,维护邻居关系:

在这里插入图片描述

当满足一定条件,路由器R1发送自己的数据库描述分组

在这里插入图片描述

数据库描述分组中,记录了R1的数据库的概括信息。如果R2检查数据库描述分组后发现,有一些信息自己没有,或者不太一样,就向R1发出链路状态请求分组,以获取更加详细的信息

在这里插入图片描述

R1收到链路状态请求分组后,通过泛洪法向所有路由器发送链路状态更新分组,==该分组详细描述了R1自己的数据库,其他路由器就可以根据这个分组更新自己的数据库,以获取最新的信息。==收到链路状态更新分组的路由器,还要往回发送链路状态确认分组,对之前的分组确认。

自治系统分区

?为了使OSFP可以作用与规模很大的网络,OSFP会把一个自治系统划分为若干个更小的范围,叫做区域

在这里插入图片描述

每个自治系统都包含一个主干区域,其它区域都通过主干区域连接自治系统外部。

每个区域都有自己的标识符,该编号为32位,以点分十进制表示,主干区域的标识符固定为0.0.0.0。每个区域都要通过一个区域边界路由器来连接主干区域,比如上图中R3R4R7都是区域边界路由器。

利用泛洪法交换链路状态信息时,是在每个区域之间,而非整个自治系统

这样就可以避免路由器太多,导致太多的链路状态信息被发送到网络中,导致网络拥挤了。


外部网关协议

BGP-4

由于不同的自治系统使用不同的内部路由选择协议并使用不同的度量,所以必须在不同的自治系统之间使用另外的路由选择协议。目前使用最多的是边界网关协议 BGP, 其最新版本是 BGP-4)。

BGP 只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由

本博客不详细讲解BGP-4协议,只是简单的讲解其作用。


相关文章:

计算机网络:网络层 - 路由选择协议

计算机网络&#xff1a;网络层 - 路由选择协议 路由器的结构路由选择协议概述自治系统 AS内部网关协议路由信息协议 RIP距离向量算法RIP报文格式收敛问题 开放最短路径优先 OSPF基本工作原理自治系统分区 外部网关协议BGP-4 路由器的结构 如图所示&#xff0c;路由器被分为路由…...

JupyterLab使用指南(六):JupyterLab的 Widget 控件

1. 什么是 Widget 控件 JupyterLab 中的 Widget 控件是一种交互式的小部件&#xff0c;可以用于创建动态的、响应用户输入的界面。通过使用 ipywidgets 库&#xff0c;用户可以在 Jupyter notebook 中创建滑块、按钮、文本框、选择器等控件&#xff0c;从而实现数据的交互式展…...

OpenCV 特征点检测与匹配

一 OpenCV特征场景 ①图像搜索&#xff0c;如以图搜图&#xff1b; ②拼图游戏&#xff1b; ③图像拼接&#xff0c;将两长有关联得图拼接到一起&#xff1b; 1 拼图方法 寻找特征 特征是唯一的 可追踪的 能比较的 二 角点 在特征中最重要的是角点 灰度剃度的最大值对应的…...

css布局之flex应用

/*父 100*/.parent-div {/* 这里添加你想要的属性 */display: flex;flex-direction: row; //行justify-content: space-between; //左右对齐align-items: center;flex-wrap: wrap; //换行}/*中 90 10 */.middle-div {/* 这里添加你想要的属性 */display: flex;flex-direction:…...

树莓派4B设置AP热点步骤

树莓派4B设置AP热点步骤&#xff1a;先进入root模式 预先进行apt-get update 第1步&#xff1a;安装network-manager ​sudo apt-get install network-manager第2步&#xff1a;安装git apt-get install git apt-get install util-linux procps hostapd iproute2 iw haveged …...

Java程序之百鸡百钱问题

题目&#xff1a; 百钱买百鸡的问题算是一套非常经典的不定方程的问题&#xff0c;题目很简单&#xff1a;公鸡5文钱一只&#xff0c;母鸡3文钱一只&#xff0c;小鸡3只一文钱&#xff0c;用100文钱买一百只鸡,其中公鸡&#xff0c;母鸡&#xff0c;小鸡都必须要有&#xff0c;…...

Mybatis——动态sql

if标签 用于判断条件是否成立。使用test属性进行条件判断&#xff0c;如果条件为true&#xff0c;则拼接sql。 <where>标签用于识别语句是否需要连接词and&#xff0c;识别sql语句。 package com.t0.maybatisc.mapper;import com.t0.maybatisc.pojo.Emp; import org.a…...

可视化大屏开发系列——页面布局

页面布局是可视化大屏的基础&#xff0c;想要拥有一个基本美观的大屏&#xff0c;就得考虑页面整体模块的宽高自适应&#xff0c;我们自然就会想到具有强大灵活性flex布局&#xff0c;再借助百分比布局来辅助。至此&#xff0c;大屏页面布局问题即可得到解决。 可视化大屏开发系…...

Python statistics 模块

Python 的 statistics 模块提供了一组用于执行各种统计计算的函数&#xff0c;包括平均值、中位数、标准差、方差以及其他统计量。让我来简单介绍一下。 首先&#xff0c;你可以使用以下方式导入 statistics 模块&#xff1a; python import statistics 接下来&#xff0c;…...

wireshark常见使用表达式

目录 1. 捕获过滤器 (Capture Filters)基本捕获过滤器组合捕获过滤器 2. 显示过滤器 (Display Filters)基本显示过滤器复杂显示过滤器协议特定显示过滤器 3. 进阶显示过滤器技巧使用函数和操作符逻辑操作符 4. 常见网络协议过滤表达式示例HTTP 协议HTTPS 协议DNS 协议DHCP 协议…...

用Java获取键盘输入数的个十百位数

这段Java代码是一个简单的程序&#xff0c;用于接收用户输入的一个三位数&#xff0c;并将其分解为个位、十位和百位数字&#xff0c;然后分别打印出来。下面是代码的详细解释&#xff1a; 导入所需类库: import java.util.Scanner;&#xff1a;导入Scanner类&#xff0c;用于从…...

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程&#xff0c;在第三版教材第356~360页&#xff1b; 文字图片音频方式 视频12 第一个知识点&#xff1a;主要输出 1、项目章程&#xff08;重要知识点&#xff09; 项目目的 为了稳定与发展公司的客户群(抽象&#xff0c;非具体) 可测量的项目…...

html侧导航栏客服栏

ico 替换 ICO <html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>返回顶部</title><script src"js/jquery-2.0.3.min.js"…...

Clonable接口和拷贝

Hello~小伙伴们&#xff01;本篇学习Clonable接口与深拷贝&#xff0c;一起往下看吧~(画图水平有限&#xff0c;两张图&#xff0c;&#xff0c;我真的画了巨久&#xff0c;求路过的朋友来个3连~阿阿阿~~~) 目录 1、Clonable接口概念 2、拷贝 2、1浅拷贝 2、2深拷贝 1、Clon…...

关于小蛋の编程和小蛋编程为同一作者的说明

小蛋の编程和小蛋编程的作品为同一人制作&#xff0c;因前者为父母的手机号进行注册&#xff0c;现用本人手机号注册了新账号小蛋编程&#xff0c;后续文章将在新账号小蛋编程上进行刊登&#xff0c;同时在小蛋编程上对原账号文章进行转载。此账号不再发布帖子&#xff0c;请大…...

大数据平台之Spark

Apache Spark 是一个开源的分布式计算系统&#xff0c;主要用于大规模数据处理和分析。它由UC Berkeley AMPLab开发&#xff0c;并由Apache Software Foundation维护。Spark旨在提供比Hadoop MapReduce更快的处理速度和更丰富的功能&#xff0c;特别是在处理迭代算法和交互式数…...

How to use ModelSim

How to use ModelSim These are all written by a robot Remember, you can only simulate tb files....

【专业英语 复习】第8章 Communications and Networks

1. 单选题 One of the most dramatic changes in connectivity and communications in the past few years has been ____. A. widespread use of mobile devices with wireless Internet connectivity B. chat rooms C. satellite uplinks D. running programs on rem…...

运行vue3项目相关报错

1. VSCode打开TSVue3项目很多地方报错 报错内容 几乎所有文件都会出现未知飘红 error Delete CR prettier/prettier报错原因 插件冲突&#xff0c;Windows系统回车换行符与MAC不一致&#xff08;所以这个问题Windows系统才会出现&#xff09; 解决 需要安装Vue - Official…...

2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等

6月还有一周就要结束了&#xff0c;我们今天来总结2024年6月上半月发表的最重要的论文&#xff0c;重点介绍了计算机视觉领域的最新研究和进展。 Diffusion Models 1、Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation LlamaGen&#xff0c;是一个…...

Centos Stream9 和Centos Stream10的下载网址

Index of /https://mirror.stream.centos.org/...

chrome 录制器及性能分析工具的使用

需求背景&#xff1a; 对比不同VPN方案网络延迟的差异。 验证工具&#xff1a; chrome浏览器自带的录制器、性能插件可以完美的解决这个问题。 注意&#xff1a;录制的操作都在当前页面&#xff0c;不存在新开标签页的场景 解决方案&#xff1a; 使用chrome录制器&#xf…...

如何打造稳定、好用的 Android LayoutInspector?

速度极慢&#xff0c;遇到复杂的布局经常超时 某些情况无法选中指定的 View 本文将围绕 LayoutInspector 的痛点&#xff0c;分析问题并修复&#xff0c;最终将 LayoutInspector 变成一个稳定、好用的插件。 二、加速 Dump View Hierarchy 2.1 问题描述 开发复杂业务的同学…...

C++ Thead互斥量死锁,mutex如何防止死锁---C++11多线程快速学习

假设有两个线程 T1 和 T2&#xff0c;它们需要对两个互斥量 mtx1 和 mtx2 进行访问&#xff0c;而且需要按照以下顺序获取互斥量的所有权&#xff1a; - T1 先获取 mtx1 的所有权&#xff0c;再获取 mtx2 的所有权。 - T2 先获取 mtx2 的所有权&#xff0c;再获取 mtx1 的所有…...

Ubuntu 之Glade图形化设计器

演示环境说明&#xff1a;本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统&#xff0c;同时并安装Ubuntu桌面虚拟化软件XLaunch。 如果没有搭建好上述问题&#xff0c;请参考&#xff1a;windows11子系统Ubuntu 22.04.4子安装图形化界面 Glade是什么&#xff1f;…...

152. 乘积最大子数组

152. 乘积最大子数组 题目链接&#xff1a;152. 乘积最大子数组 代码如下&#xff1a; class Solution { public:int maxProduct(vector<int>& nums) {int resnums[0];vector<int> f(nums.size()1,0),g(nums.size()1,0);f[0]nums[0],g[0]nums[0];for(int i1…...

proactor模式

Proactor模式是一种异步I/O的设计模式&#xff0c;它允许程序直接发起一个异步I/O操作并立即返回&#xff0c;而不需要等待该操作完成。一旦I/O操作实际完成&#xff0c;系统会通知相应的完成处理程序&#xff08;Completion Handler&#xff09;&#xff0c;该处理程序随后执行…...

Charles抓包工具

一、charles简介 1&#xff0c;charles是什么 Charles中文名叫青花瓷&#xff0c;它是一款基于HTTP协议的代理服务器&#xff0c;通过成为电脑或者浏览器的代理&#xff0c;然后截取请求和请求结果达到分析抓包的目的。 特点:跨平台、半免费 2&#xff0c;charles工作原理 前…...

RabbitMQ如何保证消息可靠

解决办法&#xff1a; 1、做好消息确认机制&#xff08;pulisher、consumer[手动ACK]&#xff09; 2、每一个发送的消息都在数据库做好记录。定期将失败的消息再次发送一遍 消息确认机制&#xff1a; 生产者确认模式&#xff1a;确认消息是否发送到broker&#xff0c;失败…...

学习笔记——路由网络基础——路由的高级特性

七、路由的高级特性 1、路由迭代(路由递归) 路由必须有直连的下一跳才能够指导转发&#xff0c;静态路由或BGP路由的下一跳可能不是直连的邻居&#xff0c;因此需要计算出一个直连的下一跳和对应的出接口&#xff0c;这个过程就叫做路由迭代(路由递归)。 添加一条去往20.1.1.…...

网络编程之XDP、TC和IO_URING以及DPDK

一、网络编程常见的技术 在前面已经分析过了XDP、TC和eBPF。也基本把三者间的关系理清了&#xff0c;但现在又有一个疑惑涌了上来。在前面提到过的IO_URING和DPDK与这些技术有什么关系呢&#xff1f;其实只要认真的看过分析文章可能大家心里都已经基本清楚了。 正如在前面不断…...

晶谷高温烧结导电浆料用低熔点玻璃粉 晶谷耐高温导电漆导电油墨高温玻璃粉

晶谷浆料玻璃粉是一种用于电子浆料的材料&#xff0c;它在电子浆料中起到粘结和降低烧结温度的作用&#xff0c;能够提高浆料与基材之间的结合力。 浆料玻璃粉的性能特点包括&#xff1a; - 软化点&#xff1a;软化点在350至650度之间。 - 热膨胀系数&#xff1a;热膨胀系数…...

【Mysql】DQL操作单表、创建数据库、排序、聚合函数、分组、limit关键字

DQL操作单表 1.1 创建数据库 •创建一个新的数据库 db2 CREATE DATABASE db2 CHARACTER SET utf8;•将db1数据库中的 emp表 复制到当前 db2数据库 ** 1.2 排序** 通过 ORDER BY 子句,可以将查询出的结果进行排序 (排序只是显示效果,不会影响真实数据) 语法结构&#xff1a;…...

Excel 常用技巧(四)

Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件&#xff0c;可以用来制作电子表格、完成许多复杂的数据运算&#xff0c;进行数据的分析和预测&#xff0c;并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能&am…...

【Linux 基础】文件与目录管理

1. 文件和目录的基本概念 文件&#xff1a;是数据的集合&#xff0c;可以是文本、图像、视频等。 目录&#xff08;也称为文件夹&#xff09;&#xff1a;是文件和子目录的集合&#xff0c;用于组织文件。 2. 目录和路径 绝对路径&#xff1a;从根目录&#xff08;/&#x…...

C++系列-String(一)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” string是用于字符串&#xff0c;可以增删改查 首先&#xff0c;我们来看一下string的底层 接下来&#xff0c;我们来看一下string的常用接口有哪些&#xff1a; #define _CRT_S…...

服务器硬件的基础知识

引言 服务器是现代数据中心和企业IT基础设施的核心组成部分。了解服务器硬件的基本知识不仅有助于选择和维护服务器&#xff0c;还能提高系统性能和可靠性。本文将详细介绍服务器硬件的各个方面&#xff0c;包括处理器、内存、存储、网络、散热和电源等&#xff0c;帮助读者全…...

java基于ssm+jsp 汽车在线销售系统

1 前台功能模块 网站首页 网页首页汽车在线销售系统模块如下&#xff1a;首页、汽车信息、新闻资讯、留言反馈、我的收藏管理等功能图1 图1网页首页 网页前台车辆信息效果图如图2所示 图2 车辆信息界面图 2 管理员功能模块 管理员输入个人的账号、密码登录系统&#xff0c…...

【干货】Android中高级开发进阶必备资料(附:PDF+视频+源码笔记)

4、数据传输与序列化 5、Java虚拟机原理 6、高效IO 设计思想解读开源框架 随着互联网企业的不断发展&#xff0c;产品项目中的模块越来越多&#xff0c;用户体验要求也越来越高&#xff0c;想实现小步快跑、快速迭代的目的越来越难&#xff0c;插件化技术应用而生。如果没有…...

AI通用写作模版,可以在此基础上进行修改

指令 角色 作者 &#xff1a;你是一位自媒体爆文写作专家&#xff0c;负责撰写文章&#xff0c;具备对特定主题的深入理解和一定的写作技巧。读者 &#xff1a;25-55岁通用人群&#xff0c;对资讯新闻类感兴趣&#xff0c;需要易于理解且富有启发性的内容。 技能 研究能力&…...

openEuler2203SP3自定义ios

需求&#xff1a; 1、legacy启动 2、/boot分区1G&#xff0c;剩余给/&#xff0c;lvm分区 3、创建root密码和一个普通用户user&#xff0c;密码Hello2024 4、服务器安装&#xff08;选上development、legacy-unix、security-tools&#xff09; 5、关闭firewalld、selinux …...

一年又一年志愿

--第一篇 20220624十年苦读&#xff0c;青春飞扬&#xff0c;其道大光&#xff0c;来日方长。又是一年高考时&#xff0c;高考改变命运&#xff0c;但是后面还有更关键几步&#xff0c;跟大家一起聊聊。之前写我考状元的经历&#xff0c;堂弟考省前十的经历&#xff0c;有不少…...

NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解

1. MindSQL(库) MindSQL 是一个 Python RAG&#xff08;检索增强生成&#xff09;库&#xff0c;旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成&#xff0c;还通过扩展核心类&#xff0c;将其功能扩展到 Sn…...

OpenGL3.3_C++_Windows(15)

理解glad&#xff1a; OpenGL只是一个标准/规范&#xff0c;具体的实现是由驱动开发商针对特定显卡实现的&#xff0c;由于OpenGL驱动版本众多&#xff0c;它大多数函数的位置都无法在编译时确定下来&#xff0c;需要在运行时查询&#xff0c;因此开发者需要在运行时获取函数…...

出海计划 | 赴马来西亚开展水环境项目考察暨2024中马水务合作论坛

报名咨询...

NeRF从入门到放弃5: Neurad代码实现细节

Talk is cheap, show me the code。 CNN Decoder 如patch设置为32x32,patch_scale设置为3&#xff0c;则先在原图上采样96x96大小的像素块&#xff0c;然后每隔三个取一个像素&#xff0c;降采样成32x32的块。 用这32x32个像素render feature&#xff0c;再经过CNN反卷积预测…...

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch 简介基本概念ElasticSearch概念-倒排索引安装基本命令Mapping-映射ElasticSearch7-去掉type概念Es-数组&#xff08;数组装着Object&#xff09;的扁平化处理ik 分词…...

Pip换源详解

Pip换源是指将pip&#xff08;Python的包管理工具&#xff09;的默认源更改为其他源。以下是关于Pip换源的详细说明&#xff1a; 一、Pip换源的原因 访问被阻止的源&#xff1a;在某些地区或网络环境下&#xff0c;直接访问官方的Python Package Index (PyPI) 可能受到限制或…...

【Docker】——安装镜像和创建容器,详解镜像和Dockerfile

前言 在此记录一下docker的镜像和容器的相关注意事项 前提条件&#xff1a;已安装Docker、显卡驱动等基础配置 1. 安装镜像 网上有太多的教程&#xff0c;但是都没说如何下载官方的镜像&#xff0c;在这里记录一下&#xff0c;使用docker安装官方的镜像 Docker Hub的官方链…...

利用LinkedHashMap实现一个LRU缓存

一、什么是 LRU LRU是 Least Recently Used 的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c;选择最近最久未使用的页面予以淘汰。 简单的说就是&#xff0c;对于一组数据&#xff0c;例如&#xff1a;int[] a {1,2,3,4,5,6}&#xff0c;…...