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

WPS JS宏编程教程(从基础到进阶)-- 第五部分:JS数组与WPS结合应用

目录

  • 摘要
  • 第5章 JS数组与WPS结合应用
    • 5-1 JS数组的核心特性
      • 核心特性解析
    • 5-2 数组的两种创建方式(字面量与扩展操作符)
      • 1. 字面量创建
      • 2. 扩展操作符创建
    • 5-3 数组创建应用:提取字符串中的数字
      • 需求说明
      • 代码实现
    • 5-4 用函数创建数组(new Array、Array.of、Array.from)
      • 1. new Array
      • 2. Array.of
      • 3. Array.from
    • 5-5 函数创建数组应用:按条件格式化数据
      • 需求说明
      • 代码实现
    • 5-6 数组元素的读写改操作
      • 核心操作解析
      • 代码示例
      • 输入输出说明
    • 5-7 单元格区域与JS数组的交互
      • 需求说明
      • 代码实现
      • 表格结构示例
    • 5-8 单元格与数组应用:提取首个满足条件的数据
      • 需求说明
      • 代码实现
      • 输入输出示例
    • 5-9 数组长度控制与切片功能
      • 核心功能
      • 代码示例
      • 应用场景
    • 5-10 数组元素的添加与删除
      • 栈与队列操作
      • 方法对比
    • 5-11 添加删除应用1:提取求和最大记录
      • 需求说明
      • 代码实现
      • 输入表格示例
      • 输出结果
    • 5-12 添加删除应用2:二维区域转嵌套数组
      • 需求说明
      • 代码实现
      • 输入表格示例
      • 输出嵌套数组
    • 5-13 数组元素的循环迭代方法
      • 三种循环方式对比
      • 应用场景
    • 5-14 forEach应用:筛选数据并汇总
      • 需求说明
      • 代码实现
      • 输入表格片段
      • 输出结果
    • 5-15 数组转换迭代map函数
      • 核心功能
      • 代码示例
      • 输入输出说明
    • 5-16 map应用1:一维嵌套数组重组
      • 需求说明
      • 代码实现
      • 关键逻辑
    • 5-17 map应用2:一维数组拆分分组
      • 需求说明
      • 代码实现
      • 拆分逻辑
    • 5-18 数组筛选迭代filter函数
      • 核心功能
      • 代码示例
      • 应用场景
    • 5-19 数组查找迭代(find、indexOf等)
      • 方法对比
      • 代码示例
      • 输入表格应用
    • 5-20 逻辑判断迭代(every与some)
      • 功能对比
      • 代码示例
      • 应用实例
      • 输入表格片段
      • 输出结果
    • 5-21 数组的归并迭代 — reduce(必学重要函数)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-22 数组的归并迭代应用 — 实例:提取最大最小值的记录
      • 示例代码及详细注释
      • 函数详细解析
    • 5-23 数组的打平迭代 — flat 与 flatMap(合并打平嵌套数组)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-24 数组的合并 — concat(合并打平嵌套数组)
      • 示例代码及详细注释
      • 函数详细解析
    • 5-25 数组元素添加删除 — push、pop、unshift、shift
      • 示例代码及详细注释
      • 函数详细解析
    • 5-26 数组元素添加删除应用(先进先出用法1)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-27 数组元素添加删除应用(先进先出用法2)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-28 数组切片 — slice(子数组的切片提取)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-29 数组切片应用(实例:多列数据求和筛选)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-30 数组切片应用-方法1(自定义函数:二维区域转数组)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-31 数组切片应用-方法2(自定义函数:二维区域转数组)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-32 数组切片 — splice(子数组的插入、删除、替换)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-33 数组排序 — sort(按求和结果为排序依据)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-34 合并与拆分 — split 与 join(字符串与数组互转)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-35 合并与拆分 — split 与 join 应用(字符串中的数字排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-36 综合实例应用-1(多工作表数据合并)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-37 综合实例应用-2(整理不规范数据)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-38 综合实例应用-3(按员工职务大小排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-39 综合实例应用-4(多条件筛选记录并排序)
      • 目标说明
      • 示例代码
      • 代码解析
    • 5-40 综合实例应用-5(求字符串中的最大值记录)
      • 目标说明
      • 示例代码
      • 代码解析

摘要

本章深入探讨了 JavaScript 数组在 WPS 表格自动化中的高级应用,旨在帮助读者掌握数组操作的核心技巧,轻松处理复杂数据并提升工作效率。通过详细的代码示例和逐行解析,本章内容涵盖了数组的归并、打平、合并、切片、排序以及综合应用等多个方面。

首先,介绍了 reduce 方法的强大功能,它能够将数组中的所有元素归并为一个单一值,适用于求和、求平均值、求最大值和最小值等场景。通过实例代码,展示了如何利用 reduce 对数组进行高效计算,例如统计销售额总和、计算平均分以及筛选极值记录。

接着,探讨了如何使用 flatflatMap 方法将嵌套数组打平为一维数组,这对于处理多层嵌套数据(如二维表格)非常实用。通过示例代码,展示了如何将复杂的嵌套结构简化为一维数组,以便后续操作。

此外,还详细讲解了 concat 方法的使用,用于将多个数组或值合并为一个新数组。这一方法在合并多列数据或扩展数组时尤为高效。通过实例,展示了如何利用 concat 实现数组的灵活合并。

在数组元素的添加与删除部分,介绍了 pushpopunshiftshift 方法的使用,分别实现了栈(后进先出)和队列(先进先出)的操作。通过代码示例,展示了如何利用这些方法动态管理数组数据。

本章还重点介绍了 slice 方法的灵活应用,用于从数组中提取子数组。通过实例,展示了如何利用正索引、负索引或混合索引提取特定范围的数据,适用于数据分析和展示场景。

最后,通过多个综合实例,展示了如何将这些方法结合使用,解决实际工作中的复杂问题。例如,如何从多列数据中筛选满足条件的记录并排序,如何将不规范数据整理为结构化数据,以及如何从字符串中提取最大值记录等。这些实例不仅展示了数组方法的强大功能,还提供了实际操作的完整流程。

通过学习本章内容,读者将能够熟练掌握 JavaScript 数组在 WPS 表格中的高级应用,轻松应对各种数据处理需求,显著提升工作效率。无论是初学者还是有一定基础的开发者,都能从这些实用技巧中获益匪浅。


第5章 JS数组与WPS结合应用


5-1 JS数组的核心特性

数组是JavaScript中用于存储有序数据的核心结构,其特性决定了它在WPS表格自动化中的高效性。

核心特性解析

  1. 动态性:数组长度可自由扩展或收缩,无需预定义大小。
  2. 元素多样性:支持任意类型数据(数字、字符串、对象、甚至嵌套数组)。
  3. 索引机制:元素位置从0开始编号,支持快速随机访问。
  4. 稀疏性:允许存在空元素(如[1,,3]),节省内存空间。
  5. 一维本质:JS只有一维数组,但可通过嵌套模拟多维结构。

5-2 数组的两种创建方式(字面量与扩展操作符)

1. 字面量创建

function test1() {var arr1 = [];               // 空数组var arr2 = ["张三", 24, 100]; // 混合类型元素var arr3 = [78, , 12];       // 稀疏数组(中间空元素)
}

注释

  • arr1:空数组,常用于初始化。
  • arr2:包含字符串、数字、甚至表达式的动态数组。
  • arr3:稀疏数组,第二个元素未定义(显示为empty)。

2. 扩展操作符创建

function test2() {var arr1 = [1, 2, 3];var arr2 = [...arr1];        // 复制数组:[1,2,3]var arr3 = [..."12345"];     // 字符串转数组:["1","2","3","4","5"]var arr4 = [...arr3, 6, 7];  // 合并数组:["1","2","3","4","5",6,7]
}

解析

  • ...操作符可将可迭代对象展开,常用于复制或合并数组。
  • 输入类型:数组、字符串、Set等可迭代对象。
  • 输出类型:新数组。

5-3 数组创建应用:提取字符串中的数字

需求说明

从混合字符串中提取数字(如“曾贤志89”提取为[8,9])。

代码实现

function test() {var newarr = [];                          // 初始化结果数组var Rngs = Range("A2", Cells(999, 1).End(xlUp)); // 获取A列数据区域for (var Rng of Rngs) {                   // 遍历每个单元格var arr = [...Rng.Value()];           // 将单元格值转为字符数组for (var ar of arr) {                 // 遍历每个字符if (Number(ar) > -1) {            // 判断是否为数字newarr = [...newarr, ar];     // 将数字加入结果数组}}Rng.Offset(0, 1).Value = newarr.join(","); // 写入相邻单元格newarr = [];                          // 清空临时数组}
}

逐行解析

  1. Range("A2", Cells(999, 1).End(xlUp)):动态获取A列数据区域,避免处理空单元格。
  2. [...Rng.Value()]:将单元格内容(如“A89”)拆分为字符数组["A","8","9"]
  3. Number(ar) > -1:过滤非数字字符(如字母返回NaN,条件不成立)。
  4. join(","):将数组转换为以逗号分隔的字符串,便于写入单元格。

5-4 用函数创建数组(new Array、Array.of、Array.from)

1. new Array

function test1() {var arr1 = new Array();      // 空数组:[]var arr2 = new Array(5);     // 长度5的空数组:[empty ×5]var arr3 = new Array(10,4,8);// 含元素的数组:[10,4,8]
}

注意new Array(5)会创建稀疏数组,直接访问元素返回undefined

2. Array.of

function test2() {var arr1 = Array.of();       // 空数组:[]var arr2 = Array.of(5);      // 单元素数组:[5]var arr3 = Array.of(10,4,8); // 多元素数组:[10,4,8]
}

与new Array区别Array.of(5)创建的是[5]而非长度为5的空数组。

3. Array.from

function test3() {var arr = [1, 3, 5];var arr1 = Array.from(arr);              // 复制数组:[1,3,5]var arr2 = Array.from("9527");           // 字符串转数组:["9","5","2","7"]var arr3 = Array.from([3,4,9], x => x*10); // 映射转换:[30,40,90]
}

参数解析

  • 第一个参数:可迭代对象(如数组、字符串)。
  • 第二个参数(可选):映射函数,对每个元素进行处理。

5-5 函数创建数组应用:按条件格式化数据

需求说明

筛选成绩≥90分的数据,并计算其占总分的比例。

代码实现

function test() {var Rngs = Range("A2", Range("A9999").End(xlUp)); // 获取数据区域for (var Rng of Rngs) {                          // 遍历每行var arr = Rng.Offset(0,1).Resize(1,12).Value()[0]; // 读取12个月数据var newarr = [];var wsf = WorksheetFunction;for (var ar of arr) {                        // 筛选≥90的数据if (ar >= 90) newarr.push(ar);}var total = wsf.Sum(newarr);                 // 计算总分var arr1 = Array.from(newarr, x => `${x}${wsf.Text(x/total, "0%")}`);Rng.Offset(0,13).Value2 = arr1.join(", ");   // 写入结果}
}

关键点解析

  • Resize(1,12):从当前行向右扩展12列,读取月度数据。
  • Array.from映射:将分数转换为分数(占比)格式,如"90(25%)"

5-6 数组元素的读写改操作

核心操作解析

数组通过索引直接访问或修改元素,支持动态扩展和类型混合存储。

代码示例

function test1() {var arr = [100];          // 初始化数组:[100]arr[0] = 199;             // 修改第一个元素:[199]arr[1] = "JS";            // 动态扩展数组:[199, "JS"]arr[4] = 1000;            // 跳过索引2-3,直接赋值索引4:[199, "JS", empty ×2, 1000]Console.log(arr[3]);       // 输出:undefined(空元素)
}

输入输出说明

  • 输入类型:任意数据类型。
  • 输出类型:数组元素按索引位置返回。
  • 数据示例
    • 初始数组:[100]
    • 修改后:[199, "JS", empty ×2, 1000]

5-7 单元格区域与JS数组的交互

需求说明

将WPS表格中的单元格数据读取为数组,或将数组写入单元格区域。

代码实现

function 读取() {// 读取单行数据(A2:E2)var arr1 = Range("A2:E2").Value();        // 返回二维数组:[[A2,B2,C2,D2,E2]]// 读取单列数据(A2:A9)var arr2 = Range("A2:A9").Value();        // 返回二维数组:[[A2],[A3],...,[A9]]// 读取多行多列数据(A2:E9)var arr3 = Range("A2:E9").Value();        // 返回二维数组(5行5列)
}function 写入() {// 将一维数组写入A1:C1Range("A1:C1").Value2 = [1, 2, 3];        // A1=1, B1=2, C1=3
}

表格结构示例

ABCDE
2数据1数据2数据3数据4数据5
3数据6数据7数据8数据9数据10
  • 读取结果arr3 = [["数据1","数据2","数据3","数据4","数据5"], ["数据6","数据7","数据8","数据9","数据10"]]

5-8 单元格与数组应用:提取首个满足条件的数据

需求说明

从月度销售数据中提取第一个销售额≥100的月份及数值。

代码实现

function test() {var LastCell = Range("A9999").End(xlUp);  // 获取最后一行var Rngs = Range("A2", LastCell);         // 数据区域(A2到末尾)for (var Rng of Rngs) {                   // 遍历每行var arr = Rng.Offset(0, 1).Resize(1, 12).Value()[0]; // 读取12个月数据var arr1 = Array.from(arr, x => x >= 100);           // 生成布尔数组var num = WorksheetFunction.Match(true, arr1, 0);    // 查找第一个true的位置var val = Rng.Offset(0, num).Value();                // 获取对应值Rng.Offset(0, 13).Value2 = `${val}${num}月)`;     // 写入结果}
}

输入输出示例

  • 输入表格片段(B2:M2):
    1月2月3月7月
    847373100
  • 输出结果100(7月)

5-9 数组长度控制与切片功能

核心功能

通过修改数组的length属性实现动态截断或扩展。

代码示例

function test() {var c = [2, 3, 5, 7, 9];  c.length = 3;            // 截断为前3个元素:[2,3,5]  c.length = 5;            // 扩展为长度5:[2,3,5, empty ×2]  
}

应用场景

动态调整数据规模,例如仅保留有效数据部分。


5-10 数组元素的添加与删除

栈与队列操作

function test1() {var arr = [];arr.push("a");          // 尾部添加元素:["a"]arr.push("b", "c");     // 添加多个元素:["a","b","c"]arr.pop();              // 删除尾部元素:["a","b"]
}function test2() {var arr = ["a","b","c","d","e"];arr.shift();            // 删除头部元素:["b","c","d","e"]delete arr[1];          // 删除索引1元素:["b", empty, "d","e"]
}

方法对比

  • push/pop:栈结构(后进先出)。
  • shift/unshift:队列结构(先进先出)。

5-11 添加删除应用1:提取求和最大记录

需求说明

从季度销售数据中提取总销售额最大的员工记录。

代码实现

function test() {var wsf = WorksheetFunction;var newarr = [];var counter = wsf.CountA(Range("A:A"));            // 统计A列非空单元格数for (var num = 2; num <= counter; num++) {         // 遍历数据行(从第2行开始)var arr = Range(`B${num}:E${num}`).Value()[0]; // 读取B-E列季度数据newarr.push(wsf.Sum(arr));                     // 计算季度总和并存入数组}var mx = wsf.Max(newarr);                          // 找到最大值var pos = wsf.Match(mx, newarr, 0);                // 获取最大值位置var na = Range("A" + (pos + 1)).Value();           // 获取对应员工姓名alert(`最大值:<h1 style='color:red'>${mx}</h1>\n对应员工为:${na}`);
}

输入表格示例

ABCDE
1姓名Q1Q2Q3Q4
2张三121127130106
3李四94148121131
4王二麻150150108109

输出结果

  • 最大值150 + 150 + 108 + 109 = 517
  • 对应员工王二麻

5-12 添加删除应用2:二维区域转嵌套数组

需求说明

将二维表格区域转换为嵌套数组结构(每3行一组)。

代码实现

function test() {var bigarr = [], smallarr = [];var Rngs = Range("A2:C7");                  // 定义数据区域(A2-C7)for (var Rng of Rngs) {                     // 遍历每个单元格smallarr.push(Rng.

相关文章:

WPS JS宏编程教程(从基础到进阶)-- 第五部分:JS数组与WPS结合应用

目录 摘要第5章 JS数组与WPS结合应用5-1 JS数组的核心特性核心特性解析5-2 数组的两种创建方式(字面量与扩展操作符)1. 字面量创建2. 扩展操作符创建5-3 数组创建应用:提取字符串中的数字需求说明代码实现5-4 用函数创建数组(new Array、Array.of、Array.from)1. new Arra…...

STM32定时器完全指南:从基础原理到高级应用 | 零基础入门STM32第九十六步

主题内容教学目的/扩展视频TIM定时器重点课程定时器&#xff0c;捕获器&#xff0c;比较器&#xff0c;PWM&#xff0c;单脉冲。高级TIM。定时器中断。了解TIM使用 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、定时器核心原理1.1 硬件架构解析1.2 核心参数公式…...

Kafka分区机制详解:原理、策略与应用

#作者&#xff1a;张桐瑞 文章目录 一、分区的作用二、分区策略&#xff08;一&#xff09;轮询策略&#xff08;二&#xff09;随机策略&#xff08;三&#xff09;按消息键保序策略 三、实际案例&#xff1a;消息顺序问题的解决四、其他分区策略&#xff1a;基于地理位置的分…...

最小K个数

文章目录 题意思路代码 题意 题目链接 思路 代码 class Solution { public:vector<int> smallestK(vector<int>& arr, int k) {priority_queue<int> Q;for (auto &index:arr){Q.push(index);if (Q.size() > k)Q.pop();}vector<int> ans…...

【STL】list介绍(附与vector的比较)

文章目录 1.关于list2.使用2.1 list的构造2.2 list 迭代器的使用2.3 list 容量操作2.3.1 size()2.3.2 empty()2.3.3 resize() 2.4 list 元素访问2.4.1 front()2.4.2 back() 2.5 list 修改操作2.5.1 push_front()2.5.2 pop_front()2.5.3 push_back()2.5.4 pop_back()2.5.5 inser…...

音视频生命探测仪,救援现场的“视听先锋”|鼎跃安全

地震等自然灾害的突发性和破坏性对人类生命构成严重威胁。据统计&#xff0c;地震后的“黄金72小时”内&#xff0c;被困者的存活率随时间的推移急剧下降&#xff0c;因此快速、精准的搜救技术至关重要。 传统搜救手段依赖人耳识别呼救声或手动挖掘&#xff0c;效率低且易造成二…...

Arch视频播放CPU占用高

Arch Linux配置视频硬件加速 - DDoSolitary’s Blog 开源神器&#xff1a;加速你的视频体验 —— libvdpau-va-gl-CSDN博客 VDPAU&#xff08;Video Decode and Presentation API for Unix&#xff09; VA-API&#xff08;Video Acceleration API&#xff09; OpenGL 我的电…...

Python技巧:二维列表 和 二维矩阵 的区别

np.vstack 是 NumPy 中的一个函数&#xff0c;用于将多个数组沿垂直方向&#xff08;行方向&#xff09;堆叠。它可以处理 二维列表 和 二维矩阵&#xff0c;但它们之间有一些关键区别。以下是详细说明&#xff1a; 1. 二维列表 定义: 二维列表是 Python 原生的数据结构&#x…...

Linux 命令清单(Linux Command List)

测试人员必备的 Linux 命令清单文件管理 ls —— 显示目录内容。 ls -l 使用 -l 选项查看详细信息。 cd —— 改变当前工作目录。 cd /path/to/directory mkdir —— 创建新目录。 mkdir new_directory rm —— 删除文件或目录。 rm filename rm -r directory 使用 …...

Wallaby‘s: Nightmare (v1.0.2)靶场渗透

Wallabys: Nightmare (v1.0.2) 来自 <Wallabys: Nightmare (v1.0.2) ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23…...

java基础 可拆分迭代器 Spliterator<T>

Spliterator Spliterator介绍核心方法tryAdvanceforEachRemainingtrySplitestimateSizetrySplit 结合并行流&#xff08;Parallel Stream&#xff09;关键注意事项总结 Spliterator介绍 Spliterator&#xff08;Splittable Iterator&#xff09;是 Java 8 引入的接口&#xff…...

【AI提示词】决策专家

提示说明 决策专家可以帮助你进行科学决策&#xff0c;尽可能避免错误&#xff0c;提升决策成功的概率。 提示词 # Role : 决策专家决策&#xff0c;是面对不容易判断优劣的几个选项&#xff0c;做出正确的选择。说白了&#xff0c;决策就是拿个主意。决策专家是基于科学决策…...

VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理

VectorBT量化入门系列&#xff1a;第二章 VectorBT核心功能与数据处理 本教程专为中高级开发者设计&#xff0c;系统讲解VectorBT技术在量化交易中的应用。通过结合Tushare数据源和TA-Lib技术指标&#xff0c;深度探索策略开发、回测优化与风险评估的核心方法。从数据获取到策略…...

Spring Boot 配置文件加载优先级全解析

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 配置文件加载优先级全解析 Spring Boot 的配置文件加载机制是开发者管理不同环境配置的核心功能之一。其通过外部化配置&#xff08;Externaliz…...

System V 信号量:控制进程间共享资源的访问

System V 信号量&#xff1a;控制进程间共享资源的访问 在多进程操作系统中&#xff0c;当多个进程需要共享资源时&#xff0c;必须确保对资源的访问是有序的&#xff0c;以避免竞争条件&#xff08;Race Condition&#xff09;和数据不一致性问题。System V 信号量&#xff0…...

海运货代系统哪家好?能解决了哪些常见管理难题?

随着跨境电商的迅速发展&#xff0c;货代行业在全球供应链中扮演着越来越重要的角色。随着市场需求的多样化和国际运输环境的复杂化&#xff0c;货代企业面临的挑战也愈发复杂。为了应对这些挑战&#xff0c;数字化管理工具成为货代行业不可或缺的一部分。如今先进的海运货代系…...

预测性维护+智能优化:RK3568的储能双保险

在碳中和目标推动下&#xff0c;储能行业正经历前所未有的发展机遇。作为储能系统的核心组件&#xff0c;储能柜的智能化水平直接影响着整个系统的效率和安全性。RK3568智慧边缘控制器凭借其强大的计算能力、丰富的接口和高效的能源管理特性&#xff0c;正在成为工商储能柜的&q…...

蓝桥20257-元宵分配

#include <iostream> #include <bits/stdc.h> using namespace std; const int N1e910; typedef long long LL; int main() {// 请在此输入您的代码//将强其中的一碗全部倒进另一个中&#xff0c;将所有汤圆排序&#xff0c;最后选择前&#xff08;N/2&#xff09;…...

How to connect a mobile phone to your computer?

How to connect a mobile phone to your computer? 1. Background /ˈbkɡraʊnd/2. How to connect a mobile phone to your computer?References 1. Background /ˈbkɡraʊnd/ Let me introduce the background first. Today we will talk about this topic: How to conn…...

【力扣刷题实战】全排列II

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a;全排列II 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#xff1a;小卡…...

题目练习之map的奇妙使用

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

Excel 日期值转换问题解析

目录 问题原因 解决方案 方法1&#xff1a;使用 DateTime.FromOADate 转换 方法2&#xff1a;处理可能为字符串的情况 方法3&#xff1a;使用 ExcelDataReader 时的处理 额外提示 当你在 Excel 单元格中看到 2024/12/1&#xff0c;但 C# 读取到 45627 时&#xff0c;这是…...

Linux--文件系统

ok&#xff0c;上次我们提到了硬件和inode&#xff0c;这次我们继续学习文件系统 ext2文件系统 所有的准备⼯作都已经做完&#xff0c;是时候认识下文件系统了。我们想要在硬盘上存储文件&#xff0c;必须先把硬盘格式化为某种格式的文件系统&#xff0c;才能存储文件。文件系…...

2025 年福建交安安全员考试:结合本省交通特点备考​

福建地处东南沿海&#xff0c;交通建设具有独特特点&#xff0c;这对交安安全员考试备考意义重大。在桥梁建设方面&#xff0c;由于面临复杂的海洋环境&#xff0c;桥梁的防腐、防台风等安全措施成为重点。考生在学习桥梁施工安全知识时&#xff0c;要特别关注福建本地跨海大桥…...

【项目管理】第6章 信息管理概论 --知识点整理

项目管理 相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 &#xff08;一&#xff09;知识总览 项目管理知识域 知识点&#xff1a; &#xff08;项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域&#xff09; 对应&…...

python-leetcode 66.寻找旋转排序数组中的最小值

题目&#xff1a; 已知一个长度为n的数组&#xff0c;预先按照升序排列&#xff0c;经由1到n次旋转后&#xff0c;得到输入数组&#xff0c;例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若…...

WinMerge下载及使用教程(附安装包)

文章目录 一、WinMerge安装步骤1.WinMerge下载&#xff1a;2.解压&#xff1a;3.启动&#xff1a; 二、WinMerge使用步骤1.添加文件或文件夹2.查看差异3.格式选择 WinMerge v2.16.36 是一款免费开源的文件与文件夹比较、合并工具&#xff0c;能帮您快速找出差异&#xff0c;提高…...

Codeforces Round 1011 (Div. 2)

Dashboard - Codeforces Round 1011 (Div. 2) - Codeforces Problem - B - Codeforces 题目大意&#xff1a; 给你一个数组&#xff0c;你可以用一段子序列中没有出现的最小非负整数,替换数组中的组序列&#xff0c;经过若干操作&#xff0c;让数组变为长度为1&#xff0c;值…...

深度学习实战105-利用LSTM+Attention模型做生产车间中的铝合金生产时的合格率的预测应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战105-利用LSTM+Attention模型做生产车间中的铝合金生产时的合格率的预测应用。 本项目利用LSTM+Attention模型对铝合金生产合格率进行预测,不仅在理论上具有创新性和可行性,而且在实际应用中也具有重要的价值和广阔的应用前…...

苹果内购支付 Java 接口

支付流程&#xff0c;APP支付成功后 前端调用后端接口&#xff0c;后端接口将前端支付成功后拿到的凭据传给苹果服务器检查&#xff0c;如果接口返回成功了&#xff0c;就视为支付。 代码&#xff0c;productId就是苹果开发者后台提前设置好的 产品id public CommonResult<S…...

Scrapy 是什么?Python 强大的爬虫框架详解

1. Scrapy 简介 Scrapy 是一个用 Python 编写的开源 网络爬虫框架&#xff0c;用于高效地从网站提取结构化数据。它提供了完整的爬虫开发工具&#xff0c;包括请求管理、数据解析、存储和异常处理等功能&#xff0c;适用于数据挖掘、监测和自动化测试等场景。 Scrapy 的核心特…...

一种用于基于扩散磁共振成像(MRI)的微观结构估计的外梯度与噪声调谐自适应迭代网络|文献速递-深度学习医疗AI最新文献

Title 题目 An extragradient and noise-tuning adaptive iterative network for diffusionMRI-based microstructural estimation 一种用于基于扩散磁共振成像&#xff08;MRI&#xff09;的微观结构估计的外梯度与噪声调谐自适应迭代网络 Background 背景 2.1. Advanced…...

需求的图形化分析-状态转换图

实时系统和过程控制应用程序可以在任何给定的时间内以有限的状态存在。当满足所定义的标准时&#xff0c;状态就会发生改变&#xff0c;例如在特定条件下&#xff0c;接收到一个特定的输入激励。这样的系统是有限状态机的例子。此外&#xff0c;许多业务对象&#xff08;如销售…...

3月AI论文精选十篇

1. Feature-Level Insights into Artificial Text Detection with Sparse Autoencoders[1] 核心贡献&#xff1a;通过稀疏自编码器揭示AI生成文本的检测特征&#xff0c;提出基于特征分布的鉴别方法。研究发现&#xff0c;AI文本在稀疏编码空间中呈现独特的"高频低幅"…...

【android bluetooth 框架分析 01】【关键线程 2】【bt_stack_manager_thread线程介绍】

1. bt_stack_manager_thread bt_stack_manager_thread 是蓝牙协议栈中的核心调度线程&#xff0c;负责串行化处理协议栈的生命周期事件&#xff0c;包括初始化、启动、关闭与清理操作。它确保这些状态切换在同一线程中按顺序执行&#xff0c;避免竞态和资源冲突。作为蓝牙栈的…...

GEO, TCGA 等将被禁用?!这40个公开数据库可能要小心使用了

GEO, TCGA 等将被禁用&#xff1f;&#xff01;这40个公开数据库可能要小心使用了 最近NIH公共数据库开始对中国禁用的消息闹得风风火火&#xff1a; 你认为研究者上传到 GEO 数据库上的数据会被禁用吗&#xff1f; 单选 会&#xff0c;毕竟占用存储资源 不会&#xff0c;不…...

matlab安装python API 出现Invalid version: ‘R2022a‘,

打开 setup.py 文件&#xff0c;找到设置版本号的部分 将 versionR2022a 修改为符合 Python 版本号规范的格式&#xff0c;例如 version2022.1 保存 setup.py 文件...

【ROS 通信】Services 服务通信

【ROS】Service 服务通信 前言前置操作创建一个 tutorial 功能包定义服务接口修改 CMakeLists.txt 文件修改 find_package修改 add_service_files修改 generate_messages修改 catkin_packagefind_package 和 catkin_package 修改 package.xml 文件构建 服务通信的 Python 实现服…...

25.4.8学习总结

javaFX实现倒计时 核心概念 Timeline: Timeline 是JavaFX动画API的核心类&#xff0c;用于创建动画。它可以按照指定的时间间隔&#xff08;Duration&#xff09;触发事件&#xff08;KeyFrame&#xff09;。 可以将其视为一个定时器&#xff0c;每隔一段时间执行一些操作。 …...

Android audio(6)-audiopolicyservice介绍

AudioPolicyService 是策略的制定者&#xff0c;比如某种 Stream 类型不同设备的音量&#xff08;index/DB&#xff09;是多少、某种 Stream 类型的音频数据流对应什么设备等等。而 AudioFlinger 则是策略的执行者&#xff0c;例如具体如何与音频设备通信&#xff0c;维护现有系…...

【区块链安全 | 第三十八篇】合约审计之获取私有数据(二)

文章目录 前言漏洞代码代码审计攻击步骤修复/开发建议审计思路 前言 在【区块链安全 | 第三十七篇】合约审计之获取私有数据&#xff08;一&#xff09;中&#xff0c;介绍了私有数据、访问私有数据实例、Solidity 中的数据存储方式等知识&#xff0c;本文通过分析具体合约代码…...

muduo:运行起来

Muduo 概述 Muduo 是一个用 C 编写的高性能网络库&#xff0c;由陈硕开发&#xff0c;主要用于开发 Linux 环境下的高性能网络应用程序。以下从几个方面对其进行详细介绍&#xff1a; 特点 事件驱动与非阻塞 I/O&#xff1a;Muduo 基于 Reactor 模式实现&#xff0c;使用了 …...

算法篇(八)【递归】

一、了解递归 1. 什么是递归&#xff1f; 递归就是自己调用自己 递归的概念解释起来就短短的几句话&#xff0c;但是写起来总是无从下手 &#xff0c;但是首先要相信&#xff0c;在学过了数据结构 -- 树 之后 &#xff0c; 其实就已经具备了一定的递归思想&#xff0c;接下来的…...

Linux 学习笔记(4):cd 与 pwd 命令的深度解析与实战应用(期末、期中复习必备)

前言 一、cd 命令&#xff1a;切换工作目录的利器 1.命令来源与基本语法 2.命令使用示例 3.相对路径与绝对路径的使用 二、pwd 命令&#xff1a;清晰定位当前工作目录 1.命令来源与基本语法 2.命令使用示例 三、结语 前言 在 Linux 系统的操作中&#xff0c;对工作目录的…...

眨眼睛查看密码工具类

“眨眼睛查看密码”工具类实现思路&#xff1a; 一、核心功能 实现点击眼睛图标切换密码明文/星号显示&#xff0c;提升表单输入体验。包含以下关键功能&#xff1a; • 初始状态&#xff1a;密码框显示为星号&#xff0c;闭眼图标可见。 • 点击闭眼图标&#xff1a;切换为明…...

【嵌入式系统设计师】知识点:第9章 嵌入式系统安全性基础知识

提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...

find指令中使用正则表达式

linux查找命令能结合正则表达式吗 find命令要使用正则表达式需要结合-regex参数 另&#xff0c;-type参数可以指定查找类型(f为文件&#xff0c;d为文件夹) rootlocalhost:~/regular_expression# ls -alh 总计 8.0K drwxr-xr-x. 5 root root 66 4月 8日 16:26 . dr-xr-…...

【RH124】第六章 管理本地用户和组

系列文章目录 第一章 红帽企业Linux入门 第二章 访问命令行 第三章 从命令行管理文件 第五章 创建、查看文本文件 第六章 管理本地用户和组 文章目录 系列文章目录前言一、用户和组1、用户2、组 二、获取超级用户访问权限1、root用户2、切换用户账户3、sudo配置 三、管理本地用…...

Linux学习笔记——中断

中断 硬中断和软中断的定义与区别硬中断&#xff08;Hardware Interrupt&#xff09;软中断&#xff08;Software Interrupt&#xff09; 硬中断与软中断的区别总结上半部和下半部机制详解为什么要分为上半部和下半部&#xff1f;上半部下半部 下半部的三种实现机制Linux中断响…...

Linux 进程间通信:信号机制

Linux 进程间通信&#xff1a;信号机制 在多进程操作系统中&#xff0c;进程之间的通信至关重要&#xff0c;尤其是在Linux系统中&#xff0c;信号&#xff08;Signal&#xff09;作为一种特殊的进程间通信方式&#xff0c;广泛用于进程之间的协调和控制。信号可以看作是操作系…...