大白话JavaScript实现一个函数,将数组中的元素进行去重
大白话JavaScript实现一个函数,将数组中的元素进行去重
答题思路
要实现数组元素去重的函数,核心思路是遍历数组,然后判断每个元素是否已经在新数组里存在,如果不存在就添加进去,存在则跳过。下面会介绍几种不同的实现方法,每种方法都有其特点和适用场景。
- 使用
Set
对象:Set
是 ES6 引入的一种数据结构,它本身就不允许有重复的值,所以直接把数组转成Set
再转回来就能去重。 - 使用
indexOf
方法:通过遍历数组,利用indexOf
方法检查元素在数组中第一次出现的位置,如果和当前位置相同,说明不重复,添加到新数组。 - 使用
includes
方法:同样遍历数组,用includes
方法判断新数组是否已经包含当前元素,不包含就添加。 - 双重循环:外层循环遍历原数组,内层循环检查当前元素是否已经在新数组中出现过,没出现过就添加。
回答范文
方法一:使用 Set
对象
// 定义一个名为 uniqueArray 的函数,接收一个数组 arr 作为参数
function uniqueArray(arr) {// 使用 new Set(arr) 将数组 arr 转换为一个 Set 对象,Set 对象会自动去除重复元素// 然后使用扩展运算符 ... 将 Set 对象转换回数组return [...new Set(arr)];
}// 定义一个测试数组,包含重复元素
let testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重,并将结果存储在 result 变量中
let result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
方法二:使用 indexOf
方法
// 定义一个名为 uniqueArray 的函数,接收一个数组 arr 作为参数
function uniqueArray(arr) {// 创建一个空数组 newArr,用于存储去重后的元素let newArr = [];// 使用 for 循环遍历数组 arr 中的每个元素for (let i = 0; i < arr.length; i++) {// 使用 indexOf 方法检查元素 arr[i] 在新数组 newArr 中第一次出现的位置// 如果返回 -1,表示该元素在 newArr 中不存在if (newArr.indexOf(arr[i]) === -1) {// 将不存在的元素添加到新数组 newArr 中newArr.push(arr[i]);}}// 返回去重后的新数组return newArr;
}// 定义一个测试数组,包含重复元素
let testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重,并将结果存储在 result 变量中
let result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
方法三:使用 includes
方法
// 定义一个名为 uniqueArray 的函数,接收一个数组 arr 作为参数
function uniqueArray(arr) {// 创建一个空数组 newArr,用于存储去重后的元素let newArr = [];// 使用 for 循环遍历数组 arr 中的每个元素for (let i = 0; i < arr.length; i++) {// 使用 includes 方法检查新数组 newArr 是否包含元素 arr[i]// 如果不包含,返回 false,取反后为 trueif (!newArr.includes(arr[i])) {// 将不包含的元素添加到新数组 newArr 中newArr.push(arr[i]);}}// 返回去重后的新数组return newArr;
}// 定义一个测试数组,包含重复元素
let testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重,并将结果存储在 result 变量中
let result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
方法四:双重循环
// 定义一个名为 uniqueArray 的函数,接收一个数组 arr 作为参数
function uniqueArray(arr) {// 创建一个空数组 newArr,用于存储去重后的元素let newArr = [];// 外层 for 循环遍历数组 arr 中的每个元素for (let i = 0; i < arr.length; i++) {// 定义一个布尔变量 isDuplicate,用于标记元素是否重复,初始值为 falselet isDuplicate = false;// 内层 for 循环遍历新数组 newArr 中的每个元素for (let j = 0; j < newArr.length; j++) {// 如果当前元素 arr[i] 等于新数组 newArr 中的某个元素 newArr[j]if (arr[i] === newArr[j]) {// 将 isDuplicate 标记为 true,表示该元素重复isDuplicate = true;// 一旦发现重复,跳出内层循环break;}}// 如果 isDuplicate 为 false,说明该元素不重复if (!isDuplicate) {// 将不重复的元素添加到新数组 newArr 中newArr.push(arr[i]);}}// 返回去重后的新数组return newArr;
}// 定义一个测试数组,包含重复元素
let testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重,并将结果存储在 result 变量中
let result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
这几种方法都能实现数组去重,使用 Set
对象的方法代码最简洁,性能也较好;indexOf
和 includes
方法比较直观;双重循环方法逻辑简单,但性能相对较低,适合处理小规模数组。
其他方法
以下再为你介绍几种 JavaScript 实现数组去重的方法,并且会逐行添加注释。
方法一:使用 filter
和 Object
结合
// 定义一个名为 uniqueArray 的函数,用于对数组进行去重操作
function uniqueArray(arr) {// 创建一个空对象 obj,用于存储已经出现过的元素const obj = {};// 使用 filter 方法过滤数组中的元素return arr.filter((item) => {// 判断对象 obj 中是否已经存在当前元素 item 作为属性// 如果不存在,将该元素作为属性添加到对象 obj 中,并将属性值设为 true// 同时返回 true,表示该元素会被保留在过滤后的数组中// 如果已经存在,返回 false,表示该元素会被过滤掉return obj.hasOwnProperty(item) ? false : (obj[item] = true);});
}// 定义一个包含重复元素的测试数组
const testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重
const result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
解释:利用 Object
的属性不能重复这一特性,通过 filter
方法遍历数组。对于每个元素,检查它是否已经作为对象的属性存在。如果不存在,就把它添加为对象的属性,同时保留该元素;如果已经存在,就过滤掉该元素。
方法二:使用 reduce
方法
// 定义一个名为 uniqueArray 的函数,接收一个数组 arr 作为参数
function uniqueArray(arr) {// 使用 reduce 方法对数组进行累积操作return arr.reduce((acc, current) => {// 检查累积数组 acc 中是否包含当前元素 currentif (!acc.includes(current)) {// 如果不包含,将当前元素添加到累积数组中acc.push(current);}// 返回累积数组return acc;}, []);
}// 定义一个包含重复元素的测试数组
const testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重
const result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
解释:reduce
方法会遍历数组,将每个元素与一个累积数组进行比较。如果累积数组中不包含当前元素,就把当前元素添加到累积数组中,最后返回这个累积数组,也就是去重后的数组。
方法三:使用 Map
对象
// 定义一个名为 uniqueArray 的函数,用于对数组进行去重操作
function uniqueArray(arr) {// 创建一个新的 Map 对象 map,用于存储已经出现过的元素const map = new Map();// 创建一个空数组 result,用于存储去重后的元素const result = [];// 遍历数组 arr 中的每个元素for (const item of arr) {// 检查 Map 对象 map 中是否已经存在当前元素 item 作为键if (!map.has(item)) {// 如果不存在,将该元素作为键添加到 Map 对象中,并将值设为 truemap.set(item, true);// 同时将该元素添加到结果数组 result 中result.push(item);}}// 返回去重后的结果数组return result;
}// 定义一个包含重复元素的测试数组
const testArray = [1, 2, 2, 3, 4, 4, 5];
// 调用 uniqueArray 函数对测试数组进行去重
const result = uniqueArray(testArray);
// 打印去重后的数组
console.log(result);
解释:Map
对象可以存储键值对,并且键是唯一的。我们遍历数组,对于每个元素,检查它是否已经作为 Map
的键存在。如果不存在,就把它添加到 Map
中,同时添加到结果数组里;如果已经存在,就跳过该元素。
相关文章:
大白话JavaScript实现一个函数,将数组中的元素进行去重
大白话JavaScript实现一个函数,将数组中的元素进行去重 答题思路 要实现数组元素去重的函数,核心思路是遍历数组,然后判断每个元素是否已经在新数组里存在,如果不存在就添加进去,存在则跳过。下面会介绍几种不同的实…...
PQL查询和监控各类中间件
1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时,就需要使用到 metrics prometheus支持的met…...
uni_app实现下拉刷新
1. 在页面配置中启用下拉刷新 首先,你需要在页面的 pages.json 文件中启用下拉刷新功能。 {"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePull…...
C#类型转换基本概念
一、基本定义 C# 类型转换是将数据从一种类型转换为另一种类型的过程,分为 隐式转换 和 显式转换 两类。 强类型语言特性:C# 要求变量类型在编译时确定,类型转换需满足兼容性或显式规则。目的:处理不同数据类…...
【学习笔记】【DeepSeek AI 医生】2-2 AI家庭医生课程内容介绍
【DeepSeek AI 医生】2-4 项目详细分析及DeepSeek适用场景 一、Ollama部署二、可视化UI三、构建项目环境四、搭建项目架构五、Spring Al六、SSE服务端推送事件七、数据持久化八、线上部署 一、Ollama部署 Mac部署windows 部署ollama脚本、常用命令DeepSeek 提示词、角色、适用…...
DeepSeek使用教程--让DeepSeek生成精准题库
想让DeepSeek出好题,关键在于提示词的设计。总结了一个基本模板: 请帮我生成一套关于[学科/知识点]的题目,包括[题型],难度为[简单/中等/困难],适合[年级/学习阶段]的学生,总共[数量]道题。每道题请提供详细…...
数学之约数个数定理-阶乘约数
题目: 定义阶乘 n!123⋅⋅⋅n。 请问 100!(100的阶乘)有多少个正约数。 们需要计算 100! 的正约数的个数。阶乘 100! 的定义是: 100!123⋯100 直接计算 100!的值是不现实的,因为它是一个非常大的数。因此…...
C语言学习笔记-进阶(7)字符串函数3
1. strstr的使用和模拟实现 char * strstr ( const char * str1, const char * str2); Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1. (函数返回字符串str2在字符串str1中第⼀次出现的位置&#x…...
快乐数 力扣202
一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…...
Cpu100%问题(包括-线上docker服务以及Arthas方式进行处理)
🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...
近三年图像超分辨率研究进展综述(轻量化方向)
一、图像超分辨率技术的近三年核心进展 1. 轻量化网络设计突破 轻量化模型是端侧部署的关键,近三年研究主要围绕参数压缩与计算效率提升展开: 11卷积与通道优化:SCNet提出全11卷积架构,通过逐点卷积替代传统33卷积,在保持重建质量的同时将模型参数减少60%以上。该设计通…...
成都亚恒云知教育咨询公司:绘画的风格如何学习与确定?
宝子们,好久不见! 最近收到好多同学发给我们成都亚恒云知教育咨询有限公司创作的作品,同时也收到了有很多乖乖的询问:关于绘画,老师我没有属于自己的风格,怎么才能画出属于自己的风格的作品啊,…...
数据结构篇——串(String)
一、引入 在计算机中的处理的数据内容大致可分为以整形、浮点型等的数值处理和字符、字符串等的非数值处理。 今天我们主要学习的就是字符串数据。本章主要围绕“串的定义、串的类型、串的结构及其运算”来进行串介绍与学习。 二、串的定义 2.1、串的基本定义 串(s…...
Qwen架构与Llama架构的核心区别
我们在讨论Deepseek不同版本之间的区别时了解到,DeepSeek-R1的蒸馏模型分为Qwen和Llama两个系列,包括Qwen系列的0.5B、1.5B、3B、7B、14B、32B、72B和Llama系列的8B、70B。Qwen系列以阿里通义千问(Qwen)为基础模型架构(具体是Qwen-2.5),Llama系列以Meta的Llama为基础模型…...
uniapp或者vue 使用serialport
参考https://blog.csdn.net/ykee126/article/details/90440499 版本是第一位:否则容易编译失败 node 版本 18.14.0 npm 版本 9.3.1 electron 版本 30.0.8 electron-rebuild 版本 3.2.9 serialport 版本 10.0.0 需要python环境 main.js // Modules to control app…...
Linux和gcc/g++常用命令总结
目录 Linux命令总结 文件操作相关命令 ls cd pwd cp mv rm cat mkdir rmdir touch 文本处理操作命令 grep awk sed 进程管理操作相关命令 ps top htop kill pkill killall chmod chown 网络操作相关命令 ping ifconfig netstat ss lsof curl …...
Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式
路由组件和一般组件 路由组件 一般放到pages或view目录 一般组件 一般放到component目录 切换路由 切换路由时,组件和执行挂载和卸载 路由的工作模式 Hash模式 缺点 1.不美观,路径带#号 优点 1.兼容性好 一般适用于管理系统 History模式 缺点…...
MySQL如何给其他账号分配权限?
目录 基础权限分配流程 权限级别对照表 安全事项 MySQL数据库使用root账号为test账号分配权限的标准操作流程及注意事项: 基础权限分配 1、root用户登录, 输入root密码后进入MySQL命令行环境 mysql -u root -p2、用户存在性校验 SELECT user,host FROM …...
记录一些面试遇到的问题
重载和重写的区别 重载是overload,覆盖是override 重载属于编译时多态,覆盖属于运行时多态 运行时多态和编译时多态 运行时多态指的是在运行的时候才知道要调用哪一个函数,编译时多态是指在编译的时候就知道调用哪一个函数。 运行时多态…...
Windows 系统 Docker Desktop 入门教程:从零开始掌握容器化技术
文章目录 前言一、Docker 简介二、Docker Desktop 安装2.1 系统要求2.2 安装步骤 三、Docker 基本概念四、Docker 常用命令五、实战:运行你的第一个容器5.1 拉取并运行 Nginx 容器5.2 查看容器日志5.3 停止并删除容器 六、总结 前言 随着云计算和微服务架构的普及&…...
量子计算测试挑战:软件测试将如何迎接新纪元?
引言 在计算机技术的飞速发展中,量子计算(Quantum Computing)正成为下一个颠覆性的科技热点。随着谷歌、IBM、微软等科技巨头纷纷投入巨资研究量子计算,其应用场景正逐步扩展,从优化计算到密码安全,再到人工智能和材料科学。然而…...
Matlab实现车牌识别
车牌识别技术作为现代智能交通系统、安防监控以及诸多车辆管理应用场景中的关键环节,正发挥着日益重要的作用,它能够自动、快速且精准地从车辆图像或视频流中提取车牌信息,实现车辆身份的智能化识别。 技术原理 车牌识别主要依托于图像处理、…...
Autosar 诊断开发-CAN到CANFD的更改-基于ETAS软件
文章目录 前言CanIf配置CanTp配置EcuC配置生成代码差异总结 前言 从CAN切换到CANFD,如果不想重新进行cfggen的话,手动更改配置或许会更快一些,本文介绍诊断报文从CAN变为CANFD后,BSW模块中的更改。 注:本文不介绍MCAL…...
八、排序算法
一些简单的排序算法 8.1 冒泡排序 void Bubble_sort(int a[] , int len){int i,j,flag,tmp;for(i=0 ; i < len-1 ; i++){flag = 1;for(j=0 ; j < len-1-i ; j++){if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;flag = 0;}}if(flag == 1){break;}}…...
TON基金会确认冠名赞助2025香港Web3嘉年华,并将于4月8日重磅呈现“TON生态日”
近日,由万向区块链实验室与HashKey Group联合推出的Web3年度盛典——2025香港Web3嘉年华正式宣布,TON基金会确认成为本届嘉年华的冠名赞助商,并将于4月8日在主会场特别举办“TON生态日”专题Side Event,集中展现TON生态的最新技术…...
《A++ 敏捷开发》- 18 软件需求
需求并不是关于需求 (Requirements are not really about requirements) 大家去公共图书馆寄存物品,以前都是扫二维码开箱,有些图书馆升级了使用指纹识别。 “是否新方法比以前好?”我问年轻的开发人员。 “当然用指纹识别好。新技术&#x…...
RAG技术深度解析:从基础Agent到复杂推理Deep Search的架构实践
重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...
智谱AI-FunctionCall
智谱AI-FunctionCall 编写FuncationCall大模型的函数调用,先直观的感受一下的感受下FunctionCall的魅力 文章目录 智谱AI-FunctionCall[toc]1-参考网址2-思路整理3-代码拆件1-[非核心]两个业务函数2-[非核心]业务函数的JsonSchema定义3-[核心]FunctionCall的调用1-打…...
[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署
标题:[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释:重要思想:使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁…...
【玩转MySQL数据字典】MySQL数据字典与常用操作指令
MySQL数据字典简介与常用操作指令 一、数据字典简介 数据字典是MySQL 5.7中用于存储数据库对象元数据的系统表。在MySQL的早期版本中,元数据存储在.frm文件及其他文件里。这种存储方式存在诸多弊端,例如元数据不一致问题,不同文件间元数据的…...
C语言 —— 愿此世如黄金般辉煌 - 进制转换与操作符详解
目录 1. 操作符的分类 2. ⼆进制和进制转换 2.1 2进制转10进制 2.2 10进制转2进制 2.3 2进制转8进制 2.4 2进制转16进制 3. 原码、反码、补码 4. 移位操作符 4.1 左移操作符 4.2 右移操作符 5. 位操作符:&、|、^、~ 5.1 & 按位与 5.2 | 按位或 …...
基于粒子群算法的配电网重构
一、配电网重构原理 定义: 配电网重构是指在满足运行约束的前提下,通过改变开关状态优化配电网性能,提高系统的经济效益和运行效率。 拓扑约束: 配电网必须保持径向拓扑,避免环网或孤岛。采用算法控制开关状态的选择&…...
【云岚到家】-实战问题(上)
【云岚到家】-实战问题(上) 基础架构项目涉及那些角色云岚的业务流程?云岚家政包括那些模块项目采用什么架构如何开发一个接口?RESTful风格的去定义一个接口如何开发一个接口的service方法接口的异常处理怎么实现的?Sp…...
005-获取内存占用率
获取内存占用率 windows平台 在Windows环境下使用C获取内存占用率,可以通过以下两种方式实现,分别针对系统整体和特定进程的内存监控: 一、获取系统整体内存占用率 核心函数:GlobalMemoryStatusEx 步骤: 定义MEMOR…...
python从入门到精通(二十二):python文件操作之Excel全攻略(基于pandas)
Python处理表格数据 1.表格的基础知识1.1 xls与xlsx格式详解1.2 表格内部结构的认识 2.表格的基础操作2.1 认识表格的基本库2.1.1 csv内置的标准库2.1.2 xlrd 和 xlwt2.1.3 openpyxl2.1.4 pandas 2.2 安装和环境配置2.3 xlrd 和 xlwt2.3.1 库的说明2.3.2 安装xlrd库2.3.3 导入模…...
html常用标签
文章说明 本文旨在总结 HTML 中常见的标签,并提供简洁的解释,方便大家快速查找和复习。我们假设读者已经具备一定的 HTML 基础知识。本文将持续更新和完善,欢迎大家参与续写和补充 一、 HTML 标签 整个网页从 <html> 开始到 </html…...
ROS分布式部署通信
目录 一、概念 二、设置 ROS 分布式网络 1. 环境要求 2. 主机(Master)设置 3. 从机(节点设备)设置 4. 测试是否正常通信 三、进阶启动多从机节点(launch)。 一、概念 ROS 分布式通信用于在多台计算机…...
.Net 6 上传文件接口 文件大小报错整体配置
/// <summary>/// 上传文件/// </summary>/// <param name"file"></param>/// <returns></returns>[HttpPost("UploadifyFile")][RequestSizeLimit(2000 * 1024 * 1024)] // 设置最大请求体大小为 100MBpublic async …...
12.【线性代数】——图和网络
十二 图和网络(线性代数的应用) 图 g r a p h { n o d e s , e d g e s } graph\{nodes, edges\} graph{nodes,edges}1.关联矩阵2. A A A矩阵的零空间,求解 A x 0 Ax0 Ax0 电势3. A T A^T AT矩阵的零空间,电流总结电流图结论 …...
游戏引擎学习第145天
仓库:https://gitee.com/mrxiao_com/2d_game_3 今天的计划 目前,我们正在完成遗留的工作。当时我们已经将声音混合器(sound mixer)集成到了 SIMD 中,但由于一个小插曲,没有及时完成循环内部的部分。这个小插曲主要是…...
Linux(Centos 7.6)命令详解:zip
1.命令作用 打包和压缩(存档)文件(package and compress (archive) files);该程序用于打包一组文件进行分发;存档文件;通过临时压缩未使用的文件或目录来节省磁盘空间;且压缩文件可以在Linux、Windows 和 macOS中轻松提取。 2.命…...
23年以后版本pycharm找不到conda可执行文件解决办法
这个问题很痛苦,折磨了我半天。 就是链接远程服务器的时候 就一直以为这三个都要配置 就这个conda环境这里怎么都找不到服务器的虚拟环境的python可执行文件,非常痛苦。 后面查找了资料,找了好久,才发现,原来只需要配…...
AGI(Artificial General Intelligence,通用人工智能)技术介绍
文章目录 **AGI的关键特点**1. **泛化能力**:2. **自主性和适应性**:3. **自我意识与推理**: **与当前AI的区别****AGI的挑战**1. **技术难点**:2. **伦理与安全**:3. **资源与算力**: **AGI的实现路径**- …...
createrepo centos通过nginx搭建本地源
yum update 先安装一个nginx。 安装Nginx yum install gcc gcc-c pcre pcre-devel openssl openssl-devel libtool zlib zlib-devel -y cd /usr/local/src wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz cd nginx-1.22.0 ./configu…...
279.完全平方数
279.完全平方数 力扣题目链接(opens new window) 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数…...
Dify部署踩坑指南(Windows+Mac)
组件说明 Dify踩坑及解决方案 ⚠️ 除了修改镜像版本,nginx端口不要直接修改docker-compose.yaml !!!!!!! 1、更换镜像版本 这个文件是由.env自动生成的,在.env配置 …...
备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...
深入解析ECDSA与RSA公钥算法:原理、对比及AWS最佳实践
一、公钥加密算法概述 在HTTPS通信和数字证书领域,ECDSA(椭圆曲线数字签名算法)和RSA(Rivest-Shamir-Adleman)是最主流的两种非对称加密算法。它们共同构成了现代网络安全的基础,但设计理念和技术实现存在显著差异。 © ivwdcwso (ID: u012172506) 二、RSA算法详解…...
单例设计模式---懒汉式--线程安全和不安全、枚举类
单例设计模式—懒汉式–线程安全和不安全 优点 资源利用率高:只有在真正需要使用单例实例时才进行创建,避免了在应用启动时就占用不必要的资源。 缺点 线程安全问题:在多线程环境下,如果多个线程同时调用获取实例的方法ÿ…...
c++: 容器vector
文章目录 介绍initializer_list与string的不同底层总代码 介绍 C 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。 vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。 与 C 数组相…...