网安笔记12 IPsec

news2024/11/16 1:44:04

IPSec

基于通信IP环境下一种端到端,保证数据安全的机制

包含 两个安全协议,一个密钥管理协议, 标准价秘密技术为基础

  • DES/其他分组加密算法
  • 键值hash算法认证
  • 公钥有效的数字证书
  1. AH协议提供信息源验证、完整性保证
  2. ESP提供信息源验证、机密性、晚自习保证
  3. ISAKMP 交流共享安全信息

安全功能

隧道协议

  1. 实现VPN通信
  2. 数据起源地验证; —— 数据可靠
  3. 无连接数据的完整性验证
  4. 数据内容机密
  5. 抗重播保护
  6. 有限数据流机密性保证

AH 认证报头 Authentication Header

IP数据包服务

  • 无连接数据完整性验证
  • 数据源身份认证
  • 重放攻击

不提供

  1. 数据保密性
  2. 键值hash函数而非数字签名 (数字签名会降低网络吞吐率

数据完整性通过Hash函数如MD5校验保证。数据源身份认证通过计算验证码加入共享密钥实现; AH头序列号可以防止重放攻击

ESP encapsulating security payload 封装安全有效载荷协议

  • 数据保密性
  • 无连接
  • 数据源认证

使用ESP验证数据完整性,ESP不包含IP报头中固定的字段认证:
比AH多了以下内容

  1. 数据包加密 —— 一个数据包加密,整个数据包或者IP包的载荷部分
  2. 数据流加密

IKE 因特网密钥交换协议额

协商AH和ESP协议使用的加密算法

  • 身份认证
  • 协商加密
  • 生成共享的会话密钥

IKE将密钥协商结果留在 SA中,供AH和ESP通信使用。DOI使用IKE进行协商SA的协议统一分配标识符。 DOI将IPSec和RFC文档联系在一起

安全联盟(Security Association)

两台IPSec计算机在交换数据之前,必须首先建立某种约定,这种约定,称为“安全联盟"或"安全关联"。双方就保护信息,交换信息等公共安全设置达成一致 —— 让两种计算机安全交换一套密钥

IPsec提供多个选项进行网络加密认证:确定所需安全服务,通信双方明确规定需要使用的算法。例如,DES或IDEA 用来 加密 ;MD5或SHA用于完整性 服务 )。在确定了算法以后,双方必须共享会话密钥

SA有二义性:IPSec SA或IKE SA

  • AS是单向的,一堆通信系统至少要两个AS
    • 一个处理 SA(out)
    • 一个为 SA(in)

每个 SA可由一个三元组唯一确定

<SPI, 源/目的IP地址, IPSec协议>

安全参数索引(Security Parameter Index,SPI) 随机选取的惟一字符串
安全协议识别码 区分AH还是ESP 标识同一个目的地的SA

源/目的IP地址。表示对方IP地址,对于外出数据包,指目的地址;对于进入IP包,指源地址

IPSec协议:采用AH或ESP
if : 当一个系统需要对发送的包使用IPSec实施保护时
then : 
    查询数据库中的安全联盟 
    进行特定处理
    安全连接的SPI插入到IPSec报头

if 当对等接收方收到数据包时
then
    用SPI和目的IP地址
    从网络数据库中查询相对应的安全联盟
    安全处理

两大主要任务就是创建和删除

  • 手工管理:SA的内容由手工指定、手工维护。
  • IKE自动管理:通过一个Internet标准密钥管理协议来完成

要求用户使用程序的一个接口和IPSec内核通信, 以便实现对SA数据库的管理

  • 先协商SA参数
  • 用SA更新SAD(安全联盟数据库)

安全联盟数据库包含每个SA的参数信息:

  1. AH\ESP算法密钥
  2. 序列号
  3. 协议模式
  4. 有效期

人工密钥协商必须支持。通信双方离线同意SA各项参数

  • 电话/电子邮件进行SPI分配,参数选择
    • 容易出错
    • 不版权
    • 人工方式删除
  • SA没有周期限制
    • 不会过期

已经配置好的IPSec环境中,SA建立可以用 因特网标准密钥管理协议(IKE完成

if 安全策略找不到SA
    then IPSec 自动调用IKE
        IKE与目标主机,途中router/host协商SA
        SA创建好加入SAD数据库
        数据包会用SA参数实现安全服务

删除SA的理由

  • 存活时间过期
  • 密钥被破解
  • SA加密/解密 or验证字节数超过策略设定的某一个阈值
  • 另一端要求删除

SAD Security Association Database,安全联盟数据库

所有SA存于存储的列表

对于外出流量
if IPSec需要处理 && SA不存在
    then IPSec 启动IKE协商SA
        存储SAD中

进入流量:
if IPSec需要处理
    then IPSec在IP包找出三元组,在SAD查找SA

SP安全策略和 SPD安全策略数据库

SECURITY POLICY 对IP数据包

  • 提供何种保护?
  • 何种方式保护?

SP根据源IP,目的IP,入数据,出数据表示。
IPSec定义用户如何设置安全册率 —— “选择符”设置大小。控制IP地址以及传输层协议,TCP/UDP端口等

SECURITY POLICY DATABASE —— 所有SP集中存储的列表

接受/收到IP的处理方法

  1. 丢弃:流量不能离开host或发送导应用程序,也不能转发
  2. 不用IPSec,对流量作为普通流量处理,不需要额外的IPSec保护
  3. IPSec,对流量用用IPSec保护,指向一个SA(不存在要协商

IPSec工作模式

传输模式、隧道模式(AH和ESP都支持这两种模式

传输模式

  • 保护IP包有效负荷
    • TCP
    • UDP
    • ICMP

用于主机之间安全通信

对IPv4,有效负荷是报文头后面的数据
IPv6是基本报头+扩展报头部分

在这里插入图片描述

隧道模式

  • 保护整个IP包
给IP包增加AH or ESP字段
在外部新增IP头

原始包/内部包通过隧道从IP一段传到另一端
路由器检查最外面的IP头而不是内部的IP头
IP报文目的地址可能不一致(多用于至少一端为安全网关,如防火墙,路由器的时候

后续防火墙后的host可以内部地址通信,无需IPSec

在这里插入图片描述

IPSec实现方式

主机、路由器/防火墙,两者中同时实施部署

  1. 集成。
    1. IPSec集成到IP协议。
    2. 处理IP源代码,
    3. 适用于在主机和安全网关中实现
  2. BITS。
    1. “堆栈中的块”(BITS)实现。 IPSec插在IP协议栈和链路层之间
    2. 不用处理IP源代码
    3. 适用对原有系统升级改造
    4. 用于主机
  3. BITW
    1. “线缆中的块(BITW)”实现
    2. IPSec在一个设备中
    3. 设备接入host或者router
    4. 类似BITS,支持路由器和防火墙需要当安全网关

在这里插入图片描述

对比

传输模式隧道模式
处理AH ESP处理有效再付,不改IP头原来的整个IP包都受到保护,并被当作一个新的IP包的有效载荷。
允许网络设备,如router扮演IPSec代理角色,host发送接受内容,router完成数据加密和解密
优点每个数据包只增加少量字节
公网可以看到源地址目标地址,中间网络可以根据IP头进行处理(但第四次还是加密的
于不用修改任何端系统就可以获得IP安全性能。
防止通信量分析攻击——内外IP头不一样

IPSec传输模式只能用于源和目的系统都理解IPSec协议的情况下。 多用隧道

隧道有点:不修改网络结构的host,server,OS或任何app

在这里插入图片描述

IPSec数据包信息格式

认证报头AH

IPSec协议之一

  • IP提供完整性
  • 数据源身份验证
  • 有限的抗重放服务
  • 不对受保护的IP数据包进行加密。不提供保密性

定义

  • 保护方法
  • 头的位置
  • 身份认证覆盖范围
  • 输入输出处理规则
  • 没对所用身份验证算法定义

用处

  • 保护上层协议(传输
  • 保护IP包(隧道

协议代号是51 == AH保护一个IPv4数据包协议进行阻断

下一个头字段表示 下一个头字段表示AH头之后

  • 传输模式。 将是处于保护中的上层协议的值,比如UDP或TCP协议的值
  • 隧道模式:数值4表示在隧道模式下,其数值4表示IP-in-IP(IPv4)封装;数值41表示IPv6封装

在这里插入图片描述

  • 负载长度字段:32位字为单位的长度减去2来表示
  • SPI字段中包含SPI: 该字段和外部IP头的目的地址一起,用于识别对这个包进行身份验证的安全联盟
  • 序列号是一个单向递增计数器
  • 身份验证数据字段是一个可变长度字段,其中包括完整
    性校验的结果。该字段长度必须是 该字段长度必须是32位字的整数倍

AH运行模式

传输模式:上层协议;隧道模式:完整IP数据包
要对外部IP头固有部分身份验证

传输模式

保护的是端到端的通信。通信的终点必须是 通信的终点必须是IPSec终点。 AH头紧跟在IP头之
后(包括任意选项)以及需要保护的上层协议之前

在这里插入图片描述

在IPv6环境下,AH被看作是端对端的有效负载。中间router不处理。AH出现在IPv6基础报头、跳点、路由和分片扩展报头后面。验证同样包括整个包(设置为0就不需要验证

隧道模式

将自己保护的整个数据包封装起来。另外,在AH头之前,另添加了一个IP头。 可替换端对端安全服务的传输模式

  • 无保密协议
  • 无法抵御通信流分析
  • 确保传输过程不被修改
    • 当事人发送
    • 新的非重放数据包
外出数据包首先必须匹配一个SPD条目(表示采用AH保护),

然后查找SAD看是否存在一个合适的 看是否存在一个合适的SA。
if not 
    then可用IKE动态地建立一个
else 
    then 相应的SA对数据包进行安全处理
      顺序由它的设计协定而定义

ESP封装安全载荷

混合安全服务

  • 机密性
  • 数据源身份验证
  • 完整性
  • 抗重播

选择数据源验证时才可以选择抗重播服务。接收方单方面选择抗重播服务。

ESP单独应用或者IP验证头AH结合使用,或者采用嵌套形式。安安全服务可在一对通信主机、一对安全网关之间,一个安全网关和一台主机的实现。

在这里插入图片描述

ESP头可在位置

  1. IP头之后
  2. TCP or UDP头之前
  3. 封装在IP头之前(隧道模式

封装安全有效载荷分组格式

ESP紧跟在IP协议头之后

  • IPv4没区别,协议头字段是50
  • IPv6在扩展头之后和目的地头之间

可选项若未选。不被包含在传送分组中,也不会进行ICV的加u四年

加密验证算法

通用的、可灵活扩展的协议

标准要求所有的ESP实现支持密码分组链方式(CBC)的DES作为缺省的算法 作为缺省的算法。然而,这种规定并不是强制性的。可以使用加密算法或者不加密

DES-CBC用64比特一组的加密数据 比特一组的加密数据(密文)来代替64比特一组的未加密数据(明文)。

  • 随机,64bit初始化向量 用于 加密第一个明文分组
  • 确保铭文信息开头相同可以保证加密信息的随机性

传输模式和隧道模式类似前者

传输模式ESP

IPv4意指把ESP放在IP头(和它包含的任何其它选项)之后,但是在上层协议之前

如果选择身份验证,则在ESP报尾之后添加ESP认证数据字段。身份验证范围包含所有密文以及ESP头。

在这里插入图片描述

IPv6中,ESP被看作端到端的有效载荷,路由不对其检查处理。目标选项扩展头既可以在ESP头之前,也可以在ESP头之后。

ESP仅保护ESP之后的字段

在这里插入图片描述

隧道模式ESP

在主机或者安全网关上实现。安全网关(保护用户传输流量 保护用户传输流量)实现时必须采用隧 实现时必须采用隧道模式

ESP保护整个内部IP分组,其中包括整个内部IP头,加入新的IP头部

![这里插入图片描述](https://img-blog.csdnimg.cn/d02236a70d6549d7a26aaeefc8efef13.png)

在这里插入图片描述

因特网密钥管理协议

IPSec并没有提供如何建 并没有提供如何建立该安全联盟的机制

IETF分为两部分

  • IPsec提供分组级别安全处理
  • 因特网密钥管理协议IKMP负责协商安全联盟

IKE(Internet Key Exchange)

  • 两个实体之间建立一条经过认证的安全隧道
  • 并对用于IPSec的安全联盟进行协商
    因特网安全联盟和密钥管理协议 简历安全联盟和密钥框架

密钥管理需求

AH和ESP的参与双方需要共享密钥,这可以通过手工(Manual)密钥分发或者带外(out-of-band)密钥分发来实现

问题

  • 密钥有可能丢失/妥协/过期
  • 需要管理的安全联盟数目太多,手工分发密钥技术将无法满足可伸缩性

要求

  1. 独立于特定的密码算法
  2. 独立于特定的密钥交换协议
  3. 密钥管理实体的认证
  4. 不安全传输通道上建立SA
  5. 资源的有效使用
  6. 按需产生主机和基于会话的SA

IKE对应的特性

  1. 密钥产生和身份认证过程
  2. 自动密钥更新
  3. 每个安全协议(AH,ESP)有自己的安全参数索引(SPI)空间
  4. 内置保护:资源耗尽攻击,连接/会话劫持攻击
  5. 前向保密性(Perfect Forward Security
  6. 分阶段方法:第一阶段建立密钥交换的密钥和SA,第二阶段建立数据传输的SA
  7. 端口500实现
  8. 支持面向主机(IP地址)和面向用户(长期身份)证书
  9. ISAKMP交换使用强认证方法

认证方法

认证必须是双向认证

  1. 预共享密钥(Pre-shared Keys
  • 相同密钥预先装在主机上。IKE计算hash发送对方认证
  1. 公钥加密
  • 无法提供抗拒绝服务能力
  • 只支持RSA公钥加密算法
  1. 数字签名
  • 和前面的类似,但是它可以提供抗拒绝服务。当前支持RSA公钥加密算法和数字签名标准

是数字签名还是公钥加密都需要使用数字证书来完成公钥 数字证书来完成公钥/私钥的映射

密钥交换

DH协议就可让双方协商一个会话密钥。这个过程是经过认证的,以防止中间人攻击.

IKE使用Oakley来实现,基于DF,防止中间人攻击

两个阶段组成
一阶段

  1. 建立ISAKMP安全联盟
    1. ( 假设并没有安全通道存在
    2. SA由ISAKMP拥有
    3. 只协商一个SA —— ISAKMP SA
    4. 只提供一个建议,就是使用Oakley为密钥交换方法

二阶段

  1. 前两条消息是发起者提供一个建议,其中包含一个或多个变换。响应者选择其中某个变换 应者选择其中某个变换。此外还要产生一个 此外还要产生一个Cookie,用于预防拒绝服务攻击。Cookie对(发起者和响应者Cookie)还可识别ISAKMP SA
  2. 下两个消息为DH密钥交换
  3. 最后两条用于认证

第一阶段产生的ISAKMP SA保护后续所有的第二阶段
ISAKMP消息。

  • 更新第一阶段的密钥材料
  • 实体交换SA的建议,使用某个建议
  • 三个工作模式
    • 快速模式
    • 信息模式
    • 新租模式

ISAKMP结构

适应不同类型的服务,含13种已定义的负载。负载时ISAKMP消息基本构造块

交换类型定义了五种

  1. 基本
  2. 身份保护
  3. 纯认证
  4. 积极
  5. 信息

IKE协议

混合型协议,包括

  • ISAKMP
  • Oakley
  • SKEME

对比ISAKMP

  1. IKE定义密钥交换过程
  2. ISAKMP只顶一个通用可被密钥交换协议使用框架

四种认证方式

  1. 数字签名
  2. 公开密钥
  3. 修正的公钥密钥
  4. 预共享字符串

交换模式

  1. 主模式(一阶段
  2. 积极(一阶段
  3. 快速(二阶段
  4. 新组(一阶段后i而上新组

前三用于协商SA,后1用于协商DH算法

IPSec/IKE系统处理

  1. 认证和密钥交换创建IKE SA和两个设备之间的安全隧道
  2. IPSec使用的共享密钥和IKE共享密钥不一样
    1. 需要用新算法推导IPSec密钥
    2. 前向保密性指长期使用的主密钥泄露,不会导致过去的会话密钥泄露
  3. 可用DH推导确保前向保密性 or 最初创建的IKESA用DH交换的共享密钥和随机数进行hash运算获得
    1. 前一种安全性高,速度慢

对分组,要按照IPSec处理

IKE过程在Bob和Alice之间创建了一个安全隧道,IPSec SA协商于该隧道上完成

在这里插入图片描述

Bob向Alice发送数据,Bob的router看到数据包,检查安全策略并给包加密后再传输。安全策略告诉router IPSec另一端时Alice的router,检查IPSec SA,没有需要从IKE获得一个。

在这里插入图片描述

若未共享IKE SA,协商IPSec前建立IKE SA —— 交换数字证书,数字证书需要有信任的认证中心签名.IKE激活后,路由器协商IPSec SA。统一加密算法、认证算法

总流程

  1. B的router对B的数据包加密,发送
  2. A的路由器接受IPSec包,router查询IPSec SA,处理完后发送A

IPSec体系结构

在这里插入图片描述

  1. A向B发送消息
  2. A的IPSec驱动器检查IP筛选器,检查是否需要保护,如何保护
  3. 驱动通知IKE协商
  4. B的IKE收到安全协商通知
  5. 主机建立一阶段 SA
    1. 此时各自生产主密钥
    2. 若已建立一阶段,可直接进行二阶段SA协商
  6. 建立二阶段SA
    1. 入站SA和出站SA
    2. SA包括密钥和SPI
  7. A的IPSec驱动使用出战SA对数据包
    1. 签名(完整性
    2. 加密
  8. 驱动将数据包给IP层,IP层转发给B
  9. B的网络适配器驱动程序收到数据包交给IPSec驱动程序
  10. IPsec驱动程序入栈SA检查完整性,解密
  11. 发给TCP.IP驱动程序,再经TCP/IP驱动给主机B的APP

使用IPSec保护的数据包不能通过网络地址译码 数据包不能通过网络地址译码NAT。IP地址不能被NAT改变——否则完整性检查失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题 JavaScript 实现【求解立方根】【牛客练习题】

一、题目描述 计算一个浮点数的立方根&#xff0c;不使用库函数。保留一位小数。 数据范围&#xff1a;∣val∣≤20 。 二、输入描述 待求解参数&#xff0c;为double类型&#xff08;一个实数&#xff09; 三、输出描述 输出参数的立方根。保留一位小数。 四、解题思路…

Git工作流(随笔)

目录 前言 一、工作流概述 1、概念 2、分类 二、集中式工作流 1、概述 2、介绍 3、操作过程 三、功能分支工作流 1、概述 2、介绍 3、操作过程 1&#xff09;创建远程分支 2&#xff09;删除远程分支 四、GitFlow工作流 1、概述 2、介绍 3、操作过程 五、Forki…

Linux系统:CentOS编译Linux内核

目录 一、实验 1.下载内核 2.解压内核源码 3.配置依赖的环境 4.进入源码目录&#xff0c;使用make menuconfig开启菜单选项&#xff0c;手动选择内核功能 5.编译内核 6.安装模块 7.安装内核 8.验证新内核版本 一、实验 1.下载内核 &#xff08;1&#xff09;官网下载…

010:vue中el-table 隐藏表头的两种方法

第010个 查看专栏目录: VUE — element UI echarts&#xff0c;openlayers&#xff0c;cesium&#xff0c;leaflet&#xff0c;mapbox&#xff0c;d3&#xff0c;canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例…

【Kubernetes存储篇】StorageClass存储类动态生成PV详解

文章目录 一、StorageClass存储类理论二、案例&#xff1a;Storageclass存储类实战演示1、搭建NFS服务端2、搭建NFS供应商(provisioner)3、创建StorageClass存储类4、创建PVC&#xff0c;通过StorageClass动态生成PV5、创建Pod挂载PVC 三、步骤总结 一、StorageClass存储类理论…

web测试工程师的工作职责

web测试工程师的工作职责1 职责: 1、 负责数据平台产品的测试工作&#xff0c;参与产品需求分析&#xff0c;负责方案制定,并能预先评估项目风险&#xff0c;确保测试活动的顺利开展; 2、 深入理解系统内部的设计原理&#xff0c;并能从测试的角度提供优化意见; 3、 根据产品需…

LVS+Keepalived 高可用群集实战部署

目录 前言 一、Keepalived工具介绍 1、Keepalived的作用 2、 Keepalived体系主要模块 二、keepalived工作原理 1、VRRP &#xff08;虚拟路由冗余协议&#xff09; 2、VRRP &#xff08;虚拟路由冗余协议&#xff09; &#xff08;1&#xff09;keepalived.conf是主配置文…

qt 使用qtpdfium实现读取pdf文件

此处仅作为笔记和配置指导。 要想获取源码可Git hub上下载&#xff0c;这里推荐一个&#xff1a;QtPdfium_Build_Source: 基于Google pdfium 库&#xff0c;可编译和编译好的Qtpdfium 库&#xff0c;用于加载pdf文件进行预览 (gitee.com) 目前小编根据推荐的编译方法&#xf…

STM32F0实现数字化SPWM纯正弦波逆变器

一、理论基础 所谓SPWM&#xff0c;就是通过只有开关两个状态&#xff08;离散&#xff0c;数字的&#xff09;的PWM序列产生正弦波&#xff08;连续&#xff0c;模拟的&#xff09;的方法。其理论基础一句话就能说明白&#xff1a;冲量相等而形状不同的窄脉冲加在具有惯性的环…

golang语法的注意事项

目录 1.源文件以.go结尾2.过文件只能存在一个mian 函数 (入口函数)3. go严格区分大小写4. golang的每行代码是一个语句 默认存在 ; 不需要自己写了5. golang 是每一行每一行的执行的 不要把多个语句写在一行6. 定义变量 或是导入的包未使用 无法同过编译7. {} 都是成对出现 为了…

Xtrak 塔克小车巡线代码以及红绿灯识别相关小改动

做的小改动&#xff1a; 只更改了xtark_follow_line.py 增加了一次HSV分割来做红绿灯识别&#xff08;建议到时候用手机或者平板显示红色或者绿色图片&#xff09;&#xff0c;红绿图片&#xff1a; 将检测道路位置的方式从重心变为最接近屏幕中心的道路像素点。 检测不到道路之…

ubuntu 22.04部署dzzoffice及安装onlyoffice插件

目录 一、配置阿里源 二、安装数据库 三、安装依赖组件 &#xff08;一&#xff09;安装php7.4 &#xff08;二&#xff09;安装apache2 四、下载 dzzoffice 五、安装dzzoffice 六、安装onlyoffice插件 &#xff08;一&#xff09;从github下载小胡版onlyoffice替代原来…

如何学习及计算机编程,入门看这一篇就够了---以c语言为例

信息时代&#xff0c;计算机变成不再是专业性很强的一门学科&#xff0c;更多的是变成了一种工具 用计算机爬取信息&#xff08;爬虫&#xff09;进行数据分析&#xff0c;数据可视化&#xff08;大数据的某个方面&#xff09;处理海量的数据&#xff0c;如excel&#xff08;百…

声音生成项目(4)——从VariantAutoencoder(VAE)到VQ-VAE矢量量化变分编码器

文章目录 论文介绍步骤具体讲解自定义矢量量化层获取最近距离的码字的索引计算推导损失函数相关参考 矢量量化层的代码实现完整代码实现 论文介绍 不同于变分编码器和自动编码器&#xff0c;vq-vae中的latent space是离散的&#xff0c;并不是连续的&#xff0c;这能够避免后验…

第3章“程序的机器级表示”:理解指针

指针是 C 语言的一个重要特色。它们提供一种统一方式&#xff0c;能够远程访问数据结构。 指针基本的概念其实非常简单&#xff0c;下面的代码说明了许多这样的概念&#xff1a; struct str { /* Example Structure */int t;char v; };union uni { /* Example Union */int t;…

大厂C++面试基础题第1辑——虚函数七题精讲之一

> “虚函数的作用” 是面向对象的C编程最基础也最核心的知识点&#xff0c;如果不能无法正确回答本题&#xff0c;则只此一题&#xff0c;不管大厂还是小厂&#xff0c;都铁定无缘了。 概述 “虚函数” 是 C面向对象三最&#xff1a;最基础、最重要、最关键的知识点。我们从…

什么是Vue的Vite构建工具?如何使用Vite进行项目开发

什么是Vue的Vite构建工具&#xff1f;如何使用Vite进行项目开发 介绍 Vite是一个由Vue.js核心团队开发的构建工具。它的目标是提供一种快速的开发体验&#xff0c;同时保持生产环境的稳定性和可靠性。Vite使用了ES模块作为开发环境的原生模块格式&#xff0c;通过在开发服务器…

C++11中的关键字constexpr

文章目录 1、constexpr修饰普通变量2、constexpr修饰函数3、constexpr修饰类的构造函数 constexpr 关键字的功能是使指定的常量表达式获得在程序编译阶段计算出结果的能力&#xff0c;而不必等到程序运行阶段。C 11 标准中&#xff0c;constexpr 可用于修饰普通变量、函数&…

【Leetcode】DP | 序列及子数组问题

300 最长递增子序列 求数组最长严格递增子序列的长度。 D [ i ] D[i] D[i]代表以 n u m s [ i ] nums[i] nums[i]结尾的最长递增子序列的长度。 D [ i ] max ⁡ j < i , n u m s [ i ] > n u m s [ j ] ( D [ j ] 1 ) D[i] \max_{j < i,\ nums[i]>nums[j]}(D[…

什么是Vue的UI框架?

什么是Vue的UI框架&#xff1f; Vue.js 是一款流行的 JavaScript 框架&#xff0c;用来构建现代的单页面应用程序&#xff08;SPA&#xff09;。Vue.js 提供了丰富的功能和 API&#xff0c;但是在构建应用程序时&#xff0c;我们还需要使用一些 UI 组件来实现复杂的交互和界面…