OSPF协议
OSPF介绍
OSPF(Open Shortest Path First,开放最短路径优先)是一种用于互联网协议网络的链路状态路由协议。它属于内部网关协议(IGP),主要用于单一自治系统(AS)内部的路由选择。在AS中,所有的OSPF路由器都维护一个相同的描述这个AS的数据库,该数据库中存放的是路由域中相应的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
百度百科-OSPF
OSPF大概所需掌握的知识点
OSPF 基本配置,查看OSPF 表格,OSPF 5 种报文 ,7种邻居状态,4 种网络类型,4 种特殊区域,7类LSA,4 种 link-type,标识一条LSA的 3 个要素,OSPF 邻居与邻接关系,单区域、多区域、OSPF 认证(keychain),DR 的选举,OSPF 被动接口,OSPF 域间聚合,外部聚合,不规则区域的解决办法(虚链接),OSPF 开销值、协议优先级及计时器的修改,OSPF 外部路由引入,下放默认路由,OSPF 协议中 Forwarding Address 的理解
OSPF涉及术语
Router-id
介绍
一台路由器要运行OSPF协议,必须存在router-id。Router-id是一个32比特无符号整数,唯一标识一台运行OSPF协议的路由器,切不能相同(相同区域,router-id不能相同;不同区域,router可以相同,建议设置不同以便区分)。
选取方式
1、通过命令行手动配置。(推荐,根据路由器名字,命名router-id)
2、设备自动设定。
如果没有手动配置Router ID,设备会从当前接口的IP地址中自动选取一个作为Router ID。其选取顺序是:
①优先从Loopback地址中选择最大的IP地址作为Router ID。
②如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为Router ID。
只有重新配置系统的Router ID或者OSPF的Router ID,并且重新启动OSPF进程后,才会进行Router ID的重新选取。
区域(Area)
介绍
OSPF协议通过将自治系统划分成不同的区域解决LSDB频繁更新的问题,提高网络的利用率。区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是设备,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
区域分类
普通区域
缺省情况下,OSPF区域被定义为普通区域。普通区域包括:
- 骨干区域(Area 0):连接所有其他OSPF区域的中央区域,通常用Area 0表示。骨干区域负责汇聚来自不同区域的路由信息,并在这些区域之间传递路由信息。非骨干区域之间的路由信息必须通过骨干区域来转发。
- 标志区域(Standard Area):除了Area 0之外的其他区域,通常被称为标准区域或非骨干区域。非骨干区域必须与骨干区域保持连通。这些区域内部的路由器只与同一区域内的其他路由器交换链路状态信息(LSA)。
Stub区域
Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,因此这些区域中设备的路由表规模以及路由信息传递的数量都会大大减少。一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域,为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR设备。
备注:1、骨干区域不能配置成Stub区域。2、Stub区域内不能存在ASBR,因此自治系统外部的路由不能在本区域内传播。3、虚连接不能穿过Stub区域。
NSSA(Not-So-Stubby Area)区域
NSSA区域允许引入自治系统外部路由,携带这些外部路由信息的Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。当Type7 LSA到达NSSA的ABR时,由ABR将Type7 LSA转换成Type5 LSA,泛洪到整个OSPF域中。
备注:1、NSSA区域的ABR会发布Type7 LSA缺省路由传播到本区域内。2、所有域间路由都必须通过ABR才能发布。3、虚连接不能穿过NSSA区域。
路由器类型
路由器类型 | 含义 |
---|---|
区域内路由器(Internal Router) | 该类设备的所有接口都属于同一个OSPF区域。 |
区域边界路由器ABR(Area Border Router) | 该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。 ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类设备至少有一个接口属于骨干区域。 所有的ABR和位于Area0的内部设备都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) | 与其他AS交换路由信息的设备称为ASBR。 ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。 |
支持的网络和报文类型
LSA类型
OSPF(Open Shortest Path First)协议中,LSA(Link-State Advertisement)是用于传播链路状态信息的消息类型。每个 OSPF 路由器会生成不同类型的 LSA,以便传播它的链路状态信息,并最终帮助计算最短路径。OSPF 定义了多种类型的 LSA,每种类型都有不同的用途和传播方式。
总结 Type 1 和 Type 2 LSA 用于描述路由器和网络的基本拓扑。 Type 3 和 Type 4 LSA 用于跨区域传播汇总信息和 ASBR 的信息。 Type 5 和 Type 7 LSA 用于引入外部网络的路由信息,其中 Type 5 是标准的外部路由,而 Type 7 主要用于 NSSA 区域。 | ||||||||||||||||
报文类型
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
报文类型 | 报文作用 |
Hello报文 | 周期性发送,用来发现和维持OSPF邻居关系。 |
DD报文(Database Description packet) | 描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 |
LSR报文(Link State Request packet) | 用于向对方请求所需的LSA。 设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 |
LSU报文(Link State Update packet) | 用于向对方发送其所需要的LSA。 |
LSAck报文(Link State Acknowledgment packet) | 用来对收到的LSA进行确认。 |
OSPF工作过程
1、邻接建立:路由器通过Hello报文发现并建立邻接关系。
2、数据库同步:路由器交换DBD(数据库描述)报文,确认链路状态信息。
3、链路状态更新:通过LSR(请求)、LSU(更新)和LSAck(确认)报文交换链路状态信息。
4、SPF计算:根据链路状态信息,使用SPF算法计算最短路径树,更新路由表。
5、维护更新:定期交换Hello和DBD报文,保持链路状态信息的同步和更新。
OSPF建立邻居关系
DR的选举
作用:负责在MA网络中简历和维护邻接关系,同步LSA。
选举过程
1、接口DR:优先级越大越优,默认优先级为1,若优先级为0则表示不参与DR/BDR的选举
2、先选举BDR ,后有DR
如果先选举DR,再选举BDR ,当选举 BDR 的过程中DR 失效,此时网络中既没有 DR 也没有 BDR,切换将无法进行,状态机也就没办法做了。所以先有 BDR, 后有 DR 是为了保证状态机能正常工作。
3、router-id越大越优先
4、当处于同一网段的两台路由器竞争DR时,DR优先级高者胜出。如果优先级相等,则Router ID大者胜出。如果一台路由器的优先 级为0,则它不会被选举为DR或BDR。
5、DR非抢占,基于端口。
OSPF支持的网络类型
网络类型 | 含义 |
广播类型(Broadcast) | 当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。 在该类型的网络中: 通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。 以单播形式发送DD报文和LSR报文。 |
NBMA类型(Non-Broadcast Multi-Access) | 当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。 在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到多点P2MP类型(Point-to-Multipoint) | 没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。 在该类型的网络中: 以组播形式(224.0.0.5)发送Hello报文。 以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到点P2P类型(point-to-point) | 当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。 在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
---------------------------------------------------------------------------------------------------------------------------------
亲爱的读者朋友们,我在发布的博客中可能存在一些不足之处,如果您发现了任何错误或有改进建议,恳请不吝赐教,您的反馈对我非常重要。谢谢!
相关文章:
OSPF协议
OSPF介绍 OSPF(Open Shortest Path First,开放最短路径优先)是一种用于互联网协议网络的链路状态路由协议。它属于内部网关协议(IGP),主要用于单一自治系统(AS)内部的路由选择。在A…...
前端编辑器JSON HTML等,vue2-ace-editor,vue3-ace-editor
与框架无关 vue2-ace-editor有问题,ace拿不到(brace) 一些组件都是基于ace-builds或者brace包装的 不如直接用下面的,不如直接使用下面的 <template><div ref"editor" class"json-editor"><…...
threejs——无人机概念切割效果
主要技术采用着色器的切割渲染,和之前写的风车可视化的文章不同,这次的切割效果是在着色器的基础上实现的,并新增了很多可调节的变量,兄弟们,走曲儿~ 线上演示地址,点击体验 源码下载地址,点击下载 正文 从图中大概可以看出以下信息,一个由线组成的无人机模型,一个由…...
360极速浏览器不支持看PDF
360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器,不但完美融合了IE内核引擎,而且实现了双核引擎的无缝切换。因此在速度上,360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…...
Python Turtle 实现动态时钟:十二时辰与星空流星效果
在这篇文章中,我将带你通过 Python 的 turtle 模块构建一个动态可视化时钟程序。这个时钟不仅具备传统的时间显示功能,还融合了中国古代的十二时辰与八卦符号,并通过动态星空、流星效果与昼夜背景切换,为程序增添了观赏性和文化内…...
使用 UniApp 实现简单的个人中心页面
1. 创建 UniApp 项目 首先,确保你已经安装了 HBuilderX 或其他支持 UniApp 的开发工具。然后创建一个新的 UniApp 项目。 # 使用 HBuilderX 创建新项目 # 选择 uni-app 模板 -> 选择 Vue.js 模板 -> 输入项目名称 -> 创建2. 安装依赖 UniApp 内置了一些…...
spring cloud contract http实例
微服务很多时,服务之前相互调用,接口参数的一致性要变得很难维护。 spring cloud contract 提供了测试接口一致性的方法。 一 项目配置 plugins {id "groovy"id "org.springframework.cloud.contract" version "4.0.5"i…...
修改docker源
在/etc/docker/daemon.json文件中写入 { "registry-mirrors": [ "Welcome to nginx!" ] } 执行 systemctl daemon-reload systemctl restart docker docker info能够看到源已经被替换 现在国内能够使用的docker源经过测试只有Welcome to nginx! …...
顺序表的使用,对数据的增删改查
主函数: 3.c #include "3.h"//头文件调用 SqlListptr sql_cerate()//创建顺序表函数 {SqlListptr ptr(SqlListptr)malloc(sizeof(SqlList));//在堆区申请连续的空间if(NULLptr){printf("创建失败\n");return NULL;//如果没有申请成功ÿ…...
【在Linux世界中追寻伟大的One Piece】自旋锁
目录 1 -> 概述 2 -> 原理 3 -> 优缺点及使用场景 3.1 -> 优点 3.2 -> 缺点 3.3 -> 使用场景 4 -> 纯软件自旋锁类似的原理实现 4.1 -> 结论 5 -> 样例代码 1 -> 概述 自旋锁是一种多线程同步机制,用于保护共享资源避免受并…...
信创改造-Spring Boot 项目部署至 TongWeb
打 war 包参考:https://blog.csdn.net/z1353095373/article/details/144330999...
选择WordPress和Shopify:搭建对谷歌SEO友好的网站
在建设网站时,不仅要考虑它的美观和功能性,还要关注它是否对谷歌SEO友好。如果你希望网站能够获得更好的搜索排名,WordPress和Shopify是两个值得推荐的建站平台。 WordPress作为最流行的内容管理系统,其强大的灵活性和丰富的插件…...
Rust之抽空学习系列(二)—— 编程通用概念(上)
Rust之抽空学习系列(二)—— 编程通用概念(上) Rust 作为一门强类型的静态类型语言,会有哪些与生俱来的天赋呢? 1、静态类型语言 vs 动态类型语言 特性静态动态类型检查编译时运行时错误检测执行前执行期…...
《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】
第1章 绪论 基本概念:介绍了人工智能的发展历程及不同阶段的特点,如符号主义、连接主义、行为主义等。还阐述了深度学习在人工智能领域的重要地位和发展现状,以及其在图像、语音、自然语言处理等多个领域的成功应用。术语解释 人工智能&…...
Wireshark如何查看数据包时间间隔
1.如果数据包量不大,抓包本身也不大,建议从绝对时间判断,打开wireshark软件,并点开相应要分析的抓包文件。 进入到最上方菜单<视图>,在弹出菜单选择时间显示格式,再在右侧菜单中选择自捕获经过的秒数。 这样就可…...
ISP和IQ调试(一)
系列文章目录 文章目录 系列文章目录前言一、ISP(image signal process)二、ISP位置三、IQ总结 前言 一、ISP(image signal process) image signal process 图像处理技术 image signal processor 图像信号处理器 设备 什么是图像信号? 代表…...
uniapp改成用vue起项目
目的:让项目按照vue的打包流程跑流水线 1.按照uniapp官网教程执行 2.执行第二条命令时报错 ERROR Failed to get response from true/vue-cli-version-marker 3.解决方式 报错可能跟yarn有关,然后切换成npm 找到自己本地电脑的这个文件 按照截图修…...
java之集合(详细-Map,Set,List)
1集合体系概述 1.1集合的概念 集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。 1.2集合分类 集合分为单列集合和多列集合 Collection代表单列集合,每个元素(数据ÿ…...
利用卷积神经网络进行手写数字的识别
数据集介绍 MNIST(Modified National Institute of Standards and Technology)数据集是一个广泛使用的手写数字识别数据集,常用于机器学习和计算机视觉领域中的分类任务。它包含了从0到9的手写数字样本,常用于训练和测试各种图像…...
Flutter 桌面端串口配置
前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…...
Java 的常量池与 String 优化
Java 中的常量池(Constant Pool)是一种内存优化机制,比如字符串常量池: String s1 "Hello"; String s2 "Hello"; System.out.println(s1 s2); // 输出 true,因为指向同一池中的对象但对于使用…...
防范TCP攻击:策略与实践
TCP(传输控制协议)是互联网通信的核心协议之一,它确保了数据在网络上的可靠传输。然而,TCP也容易成为各种网络攻击的目标,如SYN洪水攻击、TCP连接耗尽攻击等。本文将探讨如何通过配置防火墙规则、优化服务器设置以及采…...
单片机:实现呼吸灯(附带源码)
单片机实现呼吸灯详细解读 呼吸灯是一种常见的灯光效果,广泛应用于电子产品、汽车、家居照明等领域。其基本特性是通过逐渐增亮和减弱的方式,使得灯光呈现出“呼吸”的效果,给人一种平缓、舒适的视觉感受。在嵌入式系统中,呼吸灯…...
Android 第三方框架:RxJava:源码分析:责任链模式
文章目录 责任链模式RxJava中的责任链总结 责任链模式 RxJava中的责任链 链式调用的使用过程中形成了两个单向链表 第一个单向链表是Observable链表 它的形成过程: 1.首先调用Observable的静态方法创建第一个Observable对象,作为Observable链表的表…...
基于HTML的个人博客系统的设计与实现
一、前言 随着互联网的飞速发展,人们分享生活、表达观点和展示自我的需求日益增长。个人博客作为一种重要的网络交流平台,为用户提供了便捷的信息发布和分享渠道。它不仅可以记录个人的成长经历、专业知识、兴趣爱好等,还能促进用户之间的互动…...
DMA(Direct Memory Access):直接内存访问
DMA(Direct Memory Access):直接内存访问 一、传统CPU存取数据 CPU不直接存取外设的原因主要有两点: 速度差异:CPU的处理速度远高于外设,无法直接同步。格式多样性:外设数据格式种类繁多&…...
数据分析python小工具录入产品信息到Excel
在没有后台管理系统的时候,有时候为了方便起见,想提供一个输入框让运营人员直接输入,然后数据就会以数据库的形式存进数据库 效果图: 输入用户名 输入数据 输入信息后点击添加到表格,检查后方便批量保存到excel …...
Mac安装brew的终极方法
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"按回车后,根据提示操作: 输入镜像序号(1-5都可以)输入Y,回车等待brew安装完成即可。 M系列芯片亲测有效&#x…...
卷积神经网络比于全连接神经网络强在哪?
卷积神经网络(Convolutional Neural Networks,简称CNN)与全连接神经网络(Fully Connected Neural Networks,简称FFNN)是深度学习和神经网络领域中两种最为常见的网络结构。两者在结构、工作原理及应用场景上…...
Stable Diffusion Controlnet常用控制类型解析与实战课程 4
本节内容,是stable diffusion Controlnet常用控制类型解析与实战的第四节课程。上节课程,我们陆续讲解了几个与图像风格约束相关的控制类型,本节课程我们再学习一些实用价值较高的控制类型,看一看他们提供了哪些控制思路。 一&…...
[ShaderLab] 【Unity】【图像编程】理解 Unity Shader 的结构
在计算机图形学领域,开发者经常面临着管理着色器复杂性的挑战。正如大卫惠勒(David Wheeler)所说:“计算机科学中的任何问题都可以通过增加一层抽象来解决。” Unity 提供了这样一层抽象,即 ShaderLab,它通过组织和定义渲染过程的各个步骤,简化了编写着色器的过程。 什…...
Source Insight的使用经验汇总
01-Add All"和“Add Tree”有何区别? 在 Source Insight 中,“Add All”和“Add Tree”是两种向项目(Project)中添加文件的操作选项,它们的区别在于处理文件和目录的方式不同: 1. Add All 范围&am…...
CentOS 7.9 更换 YUM:解决宝塔安装困境的探索之旅
在进行网站搭建工作时,我满怀期待地准备安装宝塔面板,然而却遭遇了安装失败的挫折。经过一番排查与思考,我将目光聚焦到了系统的 YUM 上,怀疑它可能是导致问题的“罪魁祸首”。于是,我毅然决定对 CentOS 7.9 的 YUM 进…...
28. Three.js案例-创建圆角矩形并进行拉伸
28. Three.js案例-创建圆角矩形并进行拉伸 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 3D 场景的主要渲染器。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数,可选。 …...
最佳实践:编写和配置 Stylelint 自定义插件,Stylelint 自定义规则
前言 在前端开发中,代码质量和一致性是至关重要的。Stylelint 作为一个强大的 CSS 代码检查工具,能够帮助开发者发现代码中的问题,并保持代码风格的一致性。然而,内置的规则和插件有时无法完全满足特定项目的需求。在这种情况下&…...
vscode借助插件调试OpenFoam的正确的.vscode配置文件
正确的备份文件位置: /home/jie/桌面/理解openfoam/正确的调试爆轰单进程案例/mydebugblastFoam 调试爆轰案例流体 并且工作区和用户区都是openfoam-7版本 问题:F5以debug模式启动后不停在断点 解决方法: 这里备份一下.vsode正确的配置&…...
Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪
Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪 发表在IJCV 2023年 作者:Weitao Feng, Lei Bai, Yongqiang Yao, Fengwei Yu & Wanli Ouyang 研究目标:多目标跟踪的帧率无关性研究 IJCV 在计算机视觉领域的影响力非常…...
视频网站中重磅推荐模块(附加源码)
写在开头 上期代码主要实现省市区三级联动效果,开发久了很多功能都是通过框架组件库来完成,但是如果组件满足不了开发需求,还需要开发人员手动封装组件,专门出这样一期文章,通过原生js实现一些特定功能,功能…...
Flink keyBy算子的分区规则
demo代码 String worlds "flink,spark,hadoop,zk,kafka";streamSource.flatMap(new RichFlatMapFunction<String, String>() {Overridepublic void flatMap(String value, Collector<String> collector) throws Exception {String[] worlds value.spl…...
jvm内存优化方式
1. JVM(Java Virtual Machine): • 定义:Java虚拟机,是运行Java字节码的抽象计算机。 • 内存管理:负责内存的分配和回收,是JVM内存优化的核心。 2. 堆(Heap):…...
顺序表的实现
大家好,今天给大家分享一下最基础的数据结构--顺序表的实现,其实顺序表与我们的数组相似,但是顺序表存储数据必须是连续的,不能像数组一样存储在任意下标,那么我们就来看看顺序表的代码。 SeqList.h SeqList.c 那么今…...
优化Go语言中的网络连接:设置代理超时参数
网络连接优化的重要性 在分布式系统和微服务架构中,网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞,从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时,由于增加了网络…...
活动|华院计算董事长宣晓华出席第十五届田长霖论坛会议
12月11日,2024年光谷田长霖中心科技文化交流大会暨第十五届田长霖论坛会议举行,300多位院士专家、大学校长、青年学者和优秀企业家齐聚光谷。 华院计算技术(上海)股份有限公司(以下简称“华院计算”)创始人…...
qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系
qt-C语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系 code review! 文章目录 qt-C语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到…...
设计一个高效的Java多线程应用程序及案例
《剑来》 勇敢追梦:“如果真的有那么喜欢苏姑娘,既然这辈子到最后也没能说出口喜欢她,没关系,以后数十年百余年,哪怕找遍人间,你都要去再见她一次,大声告诉她,自己喜欢她。” 正视困…...
基于最新的Apache StreamPark搭建指南
一、StreamPark 的介绍 官方文档:Apache StreamPark (incubating) | Apache StreamPark (incubating) 中文文档:Apache StreamPark (incubating) | Apache StreamPark (incubating)Github地址:https://github.com/apache/incubator-streampark Apache StreamPark™ 是一个…...
迎接全新的 Kotlin 支持 – K2 模式:基本信息
K2 模式有什么作用? K2 模式是 IntelliJ IDEA 中 Kotlin 支持的新实现,它可以提高 IDE 的稳定性,同时也会为支持未来 Kotlin 语言功能奠定基础。 K2 模式与 Kotlin K2 编译器有什么区别? K2 编译器负责编译 Kotlin 语言 2.0 或…...
阿里云元宇宙
在数字经济时代,技术的迅猛发展带来了前所未有的机遇与挑战,元宇宙正逐步成为全球科技与商业创新的热点。作为中国云计算和人工智能领域的领导者,阿里云通过其强大的技术能力,推出了全面的阿里云元宇宙解决方案,为全球…...
题目 1688: 数据结构-字符串插入
第一种方式字符串 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main(){string s1,s2;int n;cin>>s1>>s2>>n;s1.insert(n-1,s2);cout<<s1<<endl;return 0; } 第二种方式字符数组 …...
MetaGPT中的教程助手:TutorialAssistant
1. 提示词 COMMON_PROMPT """ You are now a seasoned technical professional in the field of the internet. We need you to write a technical tutorial with the topic "{topic}". """DIRECTORY_PROMPT (COMMON_PROMPT "…...