信息安全工程复习

news2024/9/20 21:23:14

目录

第二章 从口令系统说起

2.1 身份鉴别常见手段及例子

2.2 多因子认证

2.3 计时攻击

2.4 口令机制

2.5 假托和钓鱼

第三章 安全协议

3.1 认证协议

3.2 安全协议攻击

3.3 密钥分配协议

3.4 课后作业

第四章 访问控制

4.1 概念

4.2 控制访问三要素

4.3 控制访问基本原则

4.4 访问控制每层应用

4.5 经典访问控制策略

4.6 课后习题

4.7 常见突破访问控制手段

第五章 多级安全

5.1 BLP模型

5.2 Biba模型

第二章 从口令系统说起

2.1 身份鉴别常见手段及例子

  • 知道什么:口令

  • 拥有什么:汽车钥匙 or 加密狗

  • 唯一特征:指纹 or 虹膜

2.2 多因子认证

多因子认证是指在进行身份验证时,需要提供两个或以上的验证因素,以提高系统的安全性和防范恶意攻击。这些因素可以是以下几种类型之一:

  1. 知道的事情:例如用户名+密码。

  2. 拥有的物品:例如手机验证码和校园卡刷卡。

  3. 生理特征:例如人脸识别。

2.3 计时攻击

计时攻击(Timing attack)是一种利用计算机程序执行时间的差异,推断出密钥或其他敏感信息的攻击方式。该攻击方式主要利用了程序中某些部分的执行时间和输入数据的关系,通过多次尝试不同的输入数据,对比它们的执行时间来推断出正确的数据或密钥。

这是一个程序比较输入密码和正确密码的程序示例

def compare_password(correct_password, user_password):
    # 密码长度是否一致
    if len(correct_password) != len(user_password):
        return False
    # 逐个字符比较密码是否一致
    for i in range(len(user_password)):
        if correct_password[i] != user_password[i]:
            return False
    return True

2.3.1 攻击示例

可以看出,攻击者可以利用程序中比较密码长度是否一致的代码段,推断正确密码的长度。以下是一个模拟计时攻击的示例代码:

correct_password = "xxxxxxxx" # 8个x
# 暴力破解密码,统计每个长度可能的密码尝试所耗费的时间
for i in range(1, 256):
    user_password = "a" * i
    start_time = time.time()
    compare_password(correct_password, user_password)
    end_time = time.time()
    print("测试密码长度 ", i, " 所耗费时间: ", end_time - start_time)

依次尝试所有可能长度的密码,然后统计每个长度可能的密码尝试所花费的时间。攻击者可以根据运行时间来推断正确的密码长度,从而缩小猜测范围。

2.3.2 攻击防御

如果需要防御计时攻击也是不难的,我们可以前后加上 time.sleep(random.uniform(0, 0.1)),就可以让攻击者无所适从

def compare_password(correct_password: str, user_password: str) -> bool:
    # 随机时间*2
    time.sleep(random.uniform(0, 0.1))
    time.sleep(random.uniform(0, 0.1))
​
    # 比较长度
    if len(correct_password) != len(user_password):
        return False
    
    # 随机时间*3
    time.sleep(random.uniform(0, 0.1))
    time.sleep(random.uniform(0, 0.1))
    time.sleep(random.uniform(0, 0.1))
    
    for a, b in zip(correct_password, user_password):
        if ord(a) ^ ord(b) != 0:
            return False
    return True

2.4 口令机制

口令是指在计算机系统中,由用户自己设定的一段字符串,用于验证用户身份合法性的一种方式。通过口令验证,可以有效增强计算机系统的安全性。常见的口令包括密码、PIN码。

口令系统是指基于口令验证技术的计算机安全系统。它通过要求用户输入正确的口令来验证用户的身份,从而允许或拒绝用户对计算机系统中资源的访问,口令系统是计算机安全的重要组成部分。

2.4.1 公式及含义

在口令机制的强度中 P=LR/S 公式中:

密码最大存活期L: lifetime

登录尝试率R: login attempt rate

密码空间大小S: size of space

猜测攻击概率:P=LR/S

常见的增强口令和口令系统方法,可以有效的增加攻击者成本。常见方法不难想到、查到,方法如下:

  1. 双重验证。现在Google,Github都以手机端APP验证为首选的口令认证方式,这确实是避免了很多的安全问题。

  2. 缩短密码最大存活期L:密码的存活期越长,攻击者越有机会进行猜测攻击。因此,缩短密码的存活期可以有效减少攻击者的机会,提高攻击成本。

  3. 限制登录尝试次数R:限制用户在一定时间内可以进行的登录尝试次数,例如智慧安大密码输入错误最大次数为15次,安徽大学教务系统为5次。限制登录尝试次数可以阻止攻击者对口令进行暴力破解,增加攻击者成本。

  4. 增大密码空间大小S:增大密码空间大小可以使攻击者在猜测密码时需要更多的时间和计算资源,从而增加攻击者成本。我们可以通过使用更复杂的密码组合,如数字、字母、符号等,来增大密码空间大小。也可以通过避免使用常见密码。

2.4.2 Hash+salt安全性分析

Hash+salt是一种常用的密码存储方法,其中,Hash函数用于将明文密码转化为一段固定长度的哈希值,而salt则是一段随机字符串,用于增加哈希值的随机性和独立性。当用户注册时,系统将将原始密码与salt值组合,并通过Hash函数生成哈希值,并将salt和哈希值一起保存到数据库中。当用户进行登录时,系统使用相同的salt值和哈希函数来处理输入的密码,并将结果与保存的哈希值进行比较。如果结果一致,则证明用户提供的密码是正确的。

这样的密码存储方式虽然不能避免暴力破解,但可以防御彩虹表攻击和重放攻击。

2.4.3 防御

单台设备破解,每秒尝试100次——错误达到10次后,每5min才能尝试一次

控制僵尸网络破解——统计,加入黑名单;多因素身份验证

2.5 假托和钓鱼

2.5.1 概念与实例

假托:一种制造虚假情形,使人吐露不愿泄露的信息的手段。该方法通常预含对特殊情景专用术语的研究,以建立合情合理的假象。(自称某某工作人员)

钓鱼:一种企图从电子通讯中,透过伪装成信誉卓著的法人媒体以获得如用户名、密码和信用卡明细等个人敏感信息的犯罪诈骗过程。(钓鱼网站)

2.5.2 防范措施

浏览器厂商、xx管家:钓鱼警告工具栏。

检查SSL锁和url英语的精确性。

双因素认证;双通道身份认证。

第三章 安全协议

3.1 认证协议

3.1.1 口令协议

最简单的认证协议。口令/密码,PIN都是典型例子。

3.1.2 单向认证

发送序列号+认证块,认证块包括序列号+Nonce,Nonce每个人是唯一的。

 认证过程:

  • 获取序号𝑇

  • 解密 {𝑇, 𝑁}

  • 验证 𝑇

  • 验证 𝑁

Nonce的实现上:

  • 随机数:伪随机函数,但实际可能存在规律,规律破解则协议不安全

  • 计数器:协议未完成(或攻击)导致不一致

  • 从第三方收到的随机质询:如何获得?网络是否鲁棒/可靠?

质询/响应协议:

认证方发送质询(随机数) <-----> 被认证方发送认证块(包括质询随机数)

 口令生成器:

  • 登录界面提供一个随机数

  • 将该随机数与PIN一同输入口令生成器, 得到登录口令

  • 键入登录口令

IFF协议(Identify Friend or Foe):雷达向战机发出质询,战机必须回应正确应答,否则会被当做敌机。

3.2 安全协议攻击

3.2.1 重放攻击

例如车钥匙远程开门,攻击者使用抢夺器获取开锁器的广播并重放。

重放攻击的防御方式即是加入时间戳,使得信号有一个有效期。

3.2.2 中间人攻击

如上图,白飞机为敌机,黑飞机为战斗机。安哥拉服务器向战斗机发出质询,战斗机用密钥K加密N,返回给服务器{N}_k。南非空军向敌机质询时,由于敌机没有密钥K,所以将密钥K转发给安哥拉服务器,安哥拉服务器返回的{N}_k再转发给南非空军服务器,敌机即可认证战斗机身份。

中间人攻击很好的防御方式即使用加密技术,让中间人拿不到任何有效信息。或者使用安全套接字或者传输层安全协议,保护网络通信安全性。

3.3 密钥分配协议

3.3.1 基本密钥分配

A、B想要进行通信,A即向S发送A和B。服务器返回{A,B,K_{AB},T}_{K_{AS}}、{A,B,K_{AB},T}_{K_{BS}},T是时间戳。

A通过K_{AS}解密第一块,获得K_{AB},将第二块消息和使用K_{AB}加密后的通信消息M发给B。B用自己的K_{BS}解密,获得K_{AB},将消息用K_{AB}解密出来。

但A可以使用重放攻击获取服务器的信任,因此要增加时间戳。

3.3.2 Needham-Schroeder协议

3.3.3 Kerberos协议

3.4 课后作业

1.阅读下述安全协议,并回答后续问题

A→S:A,NA,{A,B,NA,Password}`KAS`
S→A:{A,B,NA + 1,KAB}`KAS`
S→B:{A,B,NA + 2,KAB}`KBS`
A→B:A,{A,B,NA + 2}KAB
B→A:{NA + 3}KAB

3.4.1 问题1

请分析该协议的目的,以及如何实现了该目的。其中password是用户A在服务器S注册时预留的登录密码。

Step1:A→S:A,NA,{A,B,NA,Password}KAS

A向S发送自己的:标识符A、随机数NA、与S共享的密钥KAS加密的消息。

加密消息中包含:用户A的标识符、用户B的标识符、随机数NA、用户A在服务器S注册时预留的登录密码。

Step2:S→A:{A,B,NA + 1,KAB}KAS

服务器S收到A发送的消息后,用KAS解密消息,验证密码是否正确。

如果密码正确,服务器S生成一个新的随机数NA+1,并用KAS加密消息{A,B,NA+1,KAB},将其发送给A。A收到后用KAS解密消息。

Step3:S→B:{A,B,NA + 2,KAB}KBS

服务器S再生成一个新的随机数NA+2,并使用自己与B共享的密钥KBS加密消息{A,B,NA+2,KAB},将其发送给B。B收到后用KBS解密消息。

Step4:A→B:A,{A,B,NA + 2}KAB

用户A收到服务器S的消息后,用KAS解密消息,得到新的随机数NA+1和A与B的共享密钥KAB,向B发送A的标识符、用KAB加密后的消息{A,B,NA+2}

Step5:B→A:{NA + 3}KAB

用户B收到用户A的消息后,使用与A共享的密钥KAB解密消息,得到随机数NA+2,并向A发送加密后的消息{NA+3}KAB,表示已经收到并成功解密了消息。

分析后不难看出,整个协议的目的即为:在服务器S的帮助下,让A、B之间能够进行通信。

  1. 首先,A发送给服务器一段消息,其中包含可以验证身份的密码;

  2. 接着,如果密码正确服务器会回给A KAB,同时也会把KAB发送给B一份。

  3. 然后,A向B发送使用KAB加密后的密文NA + 2,B回给AKAB加密后的密文NA + 3,这样就证明了AB彼此间能够安全的通信。

3.4.2 问题2

如果服务器S受到了脱库攻击影响,用户的password泄露了,会带来什么影响?

如果是服务器受到了脱库攻击,并不会造成很严重的问题。因为正常人的服务器里,密码都不会存明文。即便是最简单的哈希加密,服务器里也只会存哈希加密后的明文,攻击者很难从中获得用户的私钥。

第四章 访问控制

4.1 概念

访问控制是在身份认证的基础上,依据授权对提出的资源访问请求加以控制,他是系统安全防范和保护的主要策略,它可以限制对关键资源的访问,防止非法用户的侵入或合法用户的不慎操作所造成的破坏。

4.2 控制访问三要素

  • 客体(Object): 接受其他实体访问的被动实体。可以被操作的信息、资源、对象都可以认为是客体,例如信息、文件,网络硬件设施

  • 主体(Subject): 提出资源访问请求或要求的实体。 用户或其它任何代理用户行为的实体,例如计算机资源,如管理员、合法用户

  • 控制策略(Policy):确定主体是否对客体拥有访问能力的规则。 从数学角度来看,访问控制本质上是一个矩阵,行表示资源,列表示用户,行和列的交叉点表示某个用户对某个资源的访问权限(读、 写、执行、修改、删除等)。

4.3 控制访问基本原则

最小特权原则:最小特权原则是指应限定网络中每个主体所必须的最小特权,确保可能的事故、错误、网络部件的篡改等原因造成的损失最小。

多人负责原则:即授权分散化,对于关键的任务必须在功能上进行划分,由多人来共同承担,保证没有任何个人具有完成任务的全部授权或信息。

职责分离原则:指将不同的责任分派给不同的人员以期达到互相牵制,消除一个人执行两项不相容的工作的风险。例如收款员、出纳员、审计员应由不同的人担任。

4.4 访问控制每层应用

  • 应用层:可实施灵活,丰富和复杂的安全策略

  • 中间件:维护基本的保护特性(簿记系统,数据库系统)

  • 操作系统:对操作系统级的资源实施保护(文件,网络等)

  • 硬件:进程的物理保护(处理器和内存管理硬件)

4.5 经典访问控制策略

4.5.1 自主访问控制

允许用户自己对客体将已有的权限赋予给其他主体,也可以撤销自己赋予给其他主体的权限。

矩阵结构分为三个主要的表:

  • 访问控制矩阵

  • 访问控制列表

  • 权能表

矩阵的局限性:

  • 大小为主体数量×客体数量,容易造成空间浪费

  • 搜索权限效率低

  • 扩展性差

优化办法or解决办法:

  • 按行和列进行矩阵拆分

  • 将同类用户分为一个用户组

4.5.2 强制访问控制

见第五章

4.6 课后习题

4.6.1 访问控制矩阵

为了保证数据安全,系统管理员可对不同的文件针对不同的用户/用户组设置不同的权限。现假设系统中的不同用户/组对不同文件的权限如下矩阵。请据此回答问题。

  1. 请结合上述矩阵,指出主体和客体在这里分别指什么。

  2. 采用访问控制矩阵进行权限管理,当文件、用户数量较多时,存在什么问题?

  3. 针对2中的问题,采用不少于2种方式改进本题中的访问控制矩阵,并画出改进后的访问控制矩阵。

Q1:矩阵中的主体和个体:

主体:root、user1、user2、user3

客体有:file1、file2、file3、file4

Q2:访问控制矩阵进行权限管理的局限性:

  • 大小为主体数量×客体数量,容易造成空间浪费

  • 搜索权限效率低

  • 扩展性差

Q3:在用户、文件数量越来越多时,访问控制列表(ACLs)、基于角色的访问控制(RBAC)是更好的权限管理方法。

访问控制列表(ACLs)是一种将资源(如文件、目录或网络对象)和用户权限之间的关系存储在列表中的方法。它为每个资源分配了一个列表,其中包含了所有被授权访问该资源的用户和他们的权限。这样,管理员只需要针对每个资源设置权限,而无需在整个系统中进行权限分配。这可以减少权限管理的复杂度,并提高安全性。

一个用户对多个文件——>全能表;一个文件对多个用户——>访问控制列表。

基于角色的访问控制(RBAC)是一种将用户和权限之间的关系存储在角色上的方法,而不是直接存储在用户上。这种模型将用户分组为不同的角色,并将权限分配给这些角色,而不是直接分配给用户。当用户加入或离开某个角色时,他的权限也会随之改变,从而简化了权限管理过程。

4.6.2 权能表

用户\文件file3file4
root可读、可写可读、可写

用户\文件file1file2
user1可读、可写可读
用户\文件file2file3file4
user2可读、可写可写可读

用户\文件file2file3file4
user3可读、可写可读可读

4.6.3 访问控制列表

文件\用户user1
file1可读、可写

文件\用户user1user2
file2可读可读、可写
文件\用户rootuser2user3
file3可读、可写可写可写

文件\用户rootuser2user3
file4可读、可写可写可读

4.6.4 RBAC

按照算法思想,将权限存储在角色,而非直接存储在用户上,再给每个用户分配一个角色实现权限管理。我们不难发现可以将user2、user3当做一个角色,将root、user1各设一个角色,改进后的矩阵如下:

角色\文件file1file2file3file4
root可读、可写可读、可写
user1可读、可写可读
角色组(user2、user3)可读、可写可写可读

4.7 常见突破访问控制手段

  • SQL注入

  • 缓冲区溢出漏洞

第五章 多级安全

建立安全模型的方法:

  • 信息流模型

  • 访问控制模型 

5.1 BLP模型

5.1.1 模型构建

不能下写、不能上读,保持数据的机密性。

例子:军事、商务、外交的机密性强场景。下级可以给上级进行汇报,但下级不能读取上级的作战计划。

5.1.2 隐通道问题

时间隐通道:高密存在一个木马病毒希望发给低密。每隔时间固定间隔访问低密的文件夹,访问即发送1,不访问发送0

存储隐通道:通过信道指针的移动,访问指针左边空间为1,访问右边为0

5.2 Biba模型

5.2.1 模型构建

不能上写、不能下读,保持数据的完整性。

例子:铁路旅客信息系统可以读取轨道信令但不可写

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

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

相关文章

Windows服务

参考地址&#xff1a;https://www.cnblogs.com/2828sea/p/13445738.html 1. 新建服务 2. 在 service 下 添加安装程序 会自动添加 修改这两个文件属性&#xff1a; serviceInstaller1&#xff1a; DelayedAutoStart:是否自动启动Descrition:介绍服务&#xff08;自定义&…

chatgpt赋能Python-python3_图片处理

Python3图片处理&#xff1a;简单高效的图像处理工具 Python3作为一种高级编程语言&#xff0c;在科学、金融、工程等领域中广受欢迎。它具有简洁的语法、快速的开发速度、多样化的应用场景等特点。其中&#xff0c;Python3在图像处理方面也非常出色&#xff0c;本文将介绍Pyt…

pg事务:事务的处理

事务的处理 事务块 从事务形态划分可分为隐式事务和显示事务。隐式事务是一个独立的SQL语句&#xff0c;执行完成后默认提交。显示事务需要显示声明一个事务&#xff0c;多个sql语句组合到一起称为一个事务块。 事务块通过begin&#xff0c;begin transaction&#xff0c;st…

【学习日记2023.5.20】 之 菜品模块完善

文章目录 3. 功能模块完善之菜品模块3.1 公共字段自动填充3.1.1 问题分析3.1.2 实现思路3.1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 3.1.4 功能测试3.1.5 提交代码 3.2 新增菜品3.2.1 需求分析与设计3.2.2 代码开发3.2.2.1 文件上传实现3.2.2.2 新增菜品实现 3.2.3 功…

pg事务:快照

pg中的快照 快照&#xff08;snapshot&#xff09;是记录数据库当前瞬时状态的一个数据结构。pg数据库的快照保存当前所有活动事务的最小事务ID、最大事务ID、当前活跃事务列表、当前事务的command id等 快照数据保存在SnapshotData结构体类型中&#xff0c;源码src/include/u…

PyQt5桌面应用开发(16):定制化控件-QPainter绘图

本文目录 PyQt5桌面应用系列画画图&#xff0c;喝喝茶QPainter和QPixmapQPixmapQPainter绘制事件 一个魔改的QLabelCanvas类主窗口主程序&#xff1a; 总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2…

深入了解vector

vector 1. vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义&#xff08;(constructor)构造函数声明&#xff09;1.2.2 vector iterator 的使用1.2.3 vector Capacity1.2.4 vector Modifiers1.2.4 vector 迭代器失效问题 2. vector模拟实现 1. vector的介…

快速排序的三种方法

今日复习了一下快速排序的算法。 hoare法 快速排序由Hoare在1960年提出。它的基本思想是&#xff1a;通过排序将需要排序的数据分割成独立的两部分&#xff0c;左边的所有数据都比右边的小&#xff0c;然后再按此方法对这两部分数据分别进行快速排序递归&#xff0c;使其变成有…

时间序列预测 | 基于秃鹰算法优化BP神经网络(BES-BP)的时间序列预测,matlab代码

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 基于秃鹰算法优化BP神经网络(BES-BP)的时间序列预测,matlab代码 评价指标包括:R2、MAE、MSE、RMSE等,代码质量极高,方便学习和替换数据。 部分源码 %% 清空环境变量 warning off % 关闭报警信息…

BurpSuite—-Spider模块(蜘蛛爬行)

本文主要介绍BurpSuite—-Spider模块(蜘蛛爬行)的相关内容 关于BurpSuite的安装可以看一下之前这篇文章&#xff1a; http://t.csdn.cn/0Qw2n 一、简介 Burp Spider 是一个映射 web 应用程序的工具。它使用多种智能技术对一个应用程序的内容和功能进行全面的清查。 Burp Spi…

基于Qt+FFmpeg的视频监控系统

github源码 需求分析 假设一个业务场景&#xff1a;每个员工工位旁有两个网络摄像头。老板需要一个员工监控软件&#xff0c;在上班时软件可以拉取RTSP视频流&#xff0c;也可以随时录制视频。这样老板就可以知道谁在摸鱼了 ◕‿◕ 为防有人上纲上线&#xff0c;在此特别声明…

【Redis】聊一下缓存双写一致性

缓存虽然可以提高查询数据的的性能&#xff0c;但是在缓存和数据 进行更新的时候 其实会出现数据不一致现象&#xff0c;而这个不一致其实可能会给业务来带一定影响。无论是Redis 分布式缓存还是其他的缓存机制都面临这样的问题。 数据不一致是如何发生&#xff1f; 数据一致…

【c语言】文件复制原理

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

pg事务:事务ID

事务ID pg中每个事务都会分配事务ID&#xff0c;事务ID分为虚拟事务ID和持久化事务ID&#xff08;transactionID&#xff09;。pg的事务ID非常重要&#xff0c;是理解事务、数据可见性、事务ID回卷等等的重要知识点。 虚拟事务ID 只读事务不会分配事务ID&#xff0c;事务ID是…

【我的C++入门之旅】(下)

前言 参考前章内容【我的C入门之旅】(上) 目录 前言1.引用常引用传值、传引用效率比较引用和指针的区别 2.auto关键字使用场景 3.范围for 语法糖4.inline函数5.指针空值nullptr 1.引用 取别名&#xff0c;一块空间有多个名字或者说是一个变量有多个名字 比如&#xff1a;李逵&…

【LeetCode: 44. 通配符匹配 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【Linux】线程详解之线程概念

前言 在我们的教材中&#xff0c;对线程给出以下的概念&#xff1a; 是进程内部的一个执行分支&#xff0c;在进程的内部运行&#xff0c;属于进程的一部分&#xff0c;比进程更加轻量化。 可能有的人看完之后都是懵的&#xff0c;什么叫在进程的内部运行&#xff0c;什么又是…

【正点原子STM32连载】 第十二章 SYSTEM文件夹介绍 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十二…

文件夹路径保存不同,什么批量修改名称

在日常工作中不知道大家有没有遇到过&#xff0c;需要批量修改文件夹名称&#xff0c;并且文件夹保存路径不同呢&#xff0c;像这种情况到底不能批量修改呢。我也问了很多身边的朋友&#xff0c;他们有的说&#xff0c;他一般都修改保存路径是同一个&#xff0c;还很少遇到像我…

【C++ STL】 趣学stackqueuepriority_queue【对话情景版】

文章目录 &#x1f4cd;前言C STL 之 stack&queue基础知识及其模拟实现&#x1f4cd;容器适配器&#x1f388;什么是适配器&#xff1f;&#x1f388;STL标准库中stack和queue的底层结构&#x1f388;deque的简单介绍(了解)&#x1f4cc;deque的原理介绍&#x1f4cc;deque…