【2024年华为OD机试】(C卷,100分)- 字符串筛选排序 (Java JS PythonC/C++)

一、问题描述
题目描述
输入一个由N个大小写字母组成的字符串
按照ASCII码值从小到大进行排序
查找字符串中第K个最小ASCII码值的字母 (k >= 1)
输出该字母所在字符串中的位置索引 (字符串的第一个位置索引为0)
k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引
如果有重复字母则输出字母的最小位置索引
输入描述
第一行输入一个由大小写字母组成的字符串
第二行输入k,k必须大于0,k可以大于输入字符串的长度
输出描述
输出字符串中第K个最小ASCII码值的字母所在字符串的位置索引
k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引
如果第K个最小ASCII码值的字母存在重复,则输出该字母的最小位置索引
用例
用例 1
输入:
AbCdeFG
3
输出:
5
说明:
根据ASCII码值排序,第三个ASCII码值的字母为F
F在字符串中位置索引为5 (0为字符串的第一个字母位置索引)
用例 2
输入:
fAdDAkBbBq
4
输出:
6
说明:
根据ASCII码值排序前4个字母为AABB由于B重复则只取B的第一个最小位置索引6
而不是第二个B的位置索引8
题目解析
本题是简单的字符串操作题。
2023.05.20 补充了第二个用例
根据第二个用例来看,题目要找的第k个,不是去重+升序后的第k个,而只是排序后的第k个。
详细步骤
-
读取输入:
- 读取一个由大小写字母组成的字符串
s。 - 读取一个整数
k。
- 读取一个由大小写字母组成的字符串
-
创建字符索引映射:
- 创建一个字典
char_index,键为字符,值为该字符在字符串中的最小索引。 - 遍历字符串
s,记录每个字符的最小索引。
- 创建一个字典
-
排序字符:
- 将字符串
s中的字符按ASCII码值排序,得到排序后的字符列表sorted_chars。
- 将字符串
-
查找第K个字符:
- 如果
k大于字符串长度,取最大ASCII码值的字符。 - 否则,取排序后第
k个字符。
- 如果
-
输出结果:
- 输出该字符在字符串中的最小位置索引。
用例解释
用例 1
- 输入:
s = "AbCdeFG"k = 3
- 输出:
5
解释:
- 按ASCII码值排序后的字符列表:
['A', 'C', 'd', 'e', 'F', 'G', 'b'] - 第3个字符是
F,其在字符串中的位置索引为 5。
用例 2
- 输入:
s = "fAdDAkBbBq"k = 4
- 输出:
6
解释:
- 按ASCII码值排序后的字符列表:
['A', 'A', 'B', 'B', 'B', 'D', 'D', 'f', 'k', 'q'] - 第4个字符是
B,其在字符串中的最小位置索引为 6。
通过上述步骤,我们可以高效地求出第K个最小ASCII码值的字母在字符串中的位置索引。这种方法的时间复杂度为 O(n log n),其中 n 是字符串的长度。
二、JavaScript算法源码
以下是 JavaScript 代码的详细中文注释和逻辑讲解:
JavaScript 代码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline"); // 引入 readline 模块,用于读取控制台输入// 创建 readline 接口
const rl = readline.createInterface({input: process.stdin, // 输入流为标准输入output: process.stdout, // 输出流为标准输出
});// 存储输入行的数组
const lines = [];// 监听输入事件
rl.on("line", (line) => {lines.push(line); // 将每一行输入存入 lines 数组// 当输入行数为 2 时,表示输入完成if (lines.length === 2) {const [str, k] = lines; // 解构赋值,获取输入的两行数据// 调用算法函数并输出结果console.log(getKIndex(str, k));// 清空 lines 数组,以便处理下一组输入lines.length = 0;}
});// 算法函数:获取字符串中第 k 小的字符的索引
function getKIndex(str, k) {// 如果 k 大于字符串长度,则将 k 设置为字符串长度if (k > str.length) k = str.length;// 将字符串转换为数组,排序后获取第 k 小的字符const tar = [...str].sort()[k - 1];// 返回该字符在原字符串中的索引return str.indexOf(tar);
}
代码逻辑讲解
1. 输入处理
- 使用
readline模块读取控制台输入。 - 将每一行输入存入
lines数组。 - 当
lines数组的长度为 2 时,表示输入完成,开始处理数据。
2. 算法逻辑
- 函数
getKIndex:- 参数:
str:输入的字符串。k:表示需要查找的第k小的字符。
- 逻辑:
- 如果
k大于字符串长度,则将k设置为字符串长度(避免越界)。 - 将字符串转换为数组,并对数组进行排序。
- 获取排序后数组中第
k - 1个字符(因为数组索引从 0 开始)。 - 返回该字符在原字符串中的索引。
- 如果
- 参数:
3. 示例验证
示例 1:
- 输入:
hello 3 - 处理过程:
- 将字符串
"hello"转换为数组:['h', 'e', 'l', 'l', 'o']。 - 对数组排序:
['e', 'h', 'l', 'l', 'o']。 - 获取第 3 小的字符:
'l'。 - 返回
'l'在原字符串中的索引:2。
- 将字符串
- 输出:
2。
示例 2:
- 输入:
world 5 - 处理过程:
- 将字符串
"world"转换为数组:['w', 'o', 'r', 'l', 'd']。 - 对数组排序:
['d', 'l', 'o', 'r', 'w']。 - 获取第 5 小的字符:
'w'。 - 返回
'w'在原字符串中的索引:0。
- 将字符串
- 输出:
0。
总结
- 功能:在给定字符串
str和整数k的情况下,找到字符串中第k小的字符,并返回其索引。 - 核心逻辑:
- 将字符串转换为数组并排序。
- 获取排序后数组中第
k - 1个字符。 - 返回该字符在原字符串中的索引。
- 适用场景:需要查找字符串中第
k小的字符及其索引的场景。 - 注意事项:
- 如果
k大于字符串长度,则k会被设置为字符串长度。 - 时间复杂度为
O(n log n),其中n是字符串长度(排序操作的时间复杂度)。
- 如果
如果有其他问题,欢迎随时提问!
三、Java算法源码
以下是对代码的详细中文注释和讲解:
import java.util.Arrays; // 导入Arrays类,用于数组操作
import java.util.Scanner; // 导入Scanner类,用于从控制台读取输入public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); // 创建Scanner对象,用于读取用户输入String str = sc.next(); // 读取用户输入的字符串int k = sc.nextInt(); // 读取用户输入的整数kSystem.out.println(getResult(str, k)); // 调用getResult方法并输出结果}public static int getResult(String str, int k) {char[] chars = str.toCharArray(); // 将字符串转换为字符数组Arrays.sort(chars); // 对字符数组进行排序,按字典序升序排列if (k > str.length()) k = str.length(); // 如果k大于字符串长度,则将k设置为字符串长度char tar = chars[k - 1]; // 获取排序后字符数组中的第k个字符(索引为k-1)return str.indexOf(tar); // 返回该字符在原字符串中的索引位置}
}
代码讲解:
-
导入类库:
import java.util.Arrays;:导入Arrays类,用于对数组进行排序等操作。import java.util.Scanner;:导入Scanner类,用于从控制台读取用户输入。
-
主方法
main:Scanner sc = new Scanner(System.in);:创建一个Scanner对象,用于读取用户输入。String str = sc.next();:读取用户输入的字符串。int k = sc.nextInt();:读取用户输入的整数k。System.out.println(getResult(str, k));:调用getResult方法,并将结果输出到控制台。
-
getResult方法:char[] chars = str.toCharArray();:将输入的字符串str转换为字符数组chars。Arrays.sort(chars);:对字符数组chars进行排序,排序后字符数组中的字符按字典序升序排列。if (k > str.length()) k = str.length();:如果输入的k大于字符串的长度,则将k设置为字符串的长度,防止数组越界。char tar = chars[k - 1];:获取排序后字符数组中的第k个字符(由于数组索引从0开始,所以是k-1)。return str.indexOf(tar);:返回该字符在原字符串str中的索引位置。
代码功能总结:
- 该程序的功能是:给定一个字符串和一个整数
k,程序会先对字符串中的字符进行排序,然后找到排序后的第k个字符,并返回该字符在原字符串中的索引位置。
示例:
假设输入字符串为"hello",k为3:
- 将字符串转换为字符数组:
['h', 'e', 'l', 'l', 'o']。 - 对字符数组进行排序:
['e', 'h', 'l', 'l', 'o']。 - 取第
3个字符(索引为2):'l'。 - 返回
'l'在原字符串"hello"中的索引位置:2。
因此,程序输出为2。
希望这个解释对您理解代码有所帮助!
四、Python算法源码
以下是对代码的详细中文注释和讲解:
# 输入获取
s = input() # 从控制台读取用户输入的字符串
k = int(input()) # 从控制台读取用户输入的整数k# 算法入口
def getResult(s, k):chars = list(s) # 将字符串s转换为字符列表chars.sort() # 对字符列表进行排序,按字典序升序排列if k > len(s): # 如果k大于字符串的长度k = len(s) # 将k设置为字符串的长度,防止越界tar = chars[k - 1] # 获取排序后字符列表中的第k个字符(索引为k-1)return s.index(tar) # 返回该字符在原字符串s中的索引位置# 调用算法
print(getResult(s, k)) # 调用getResult函数并输出结果
代码讲解:
-
输入获取:
s = input():从控制台读取用户输入的字符串,并赋值给变量s。k = int(input()):从控制台读取用户输入的整数,并赋值给变量k。
-
getResult函数:chars = list(s):将字符串s转换为字符列表chars。chars.sort():对字符列表chars进行排序,排序后字符列表中的字符按字典序升序排列。if k > len(s): k = len(s):如果输入的k大于字符串的长度,则将k设置为字符串的长度,防止索引越界。tar = chars[k - 1]:获取排序后字符列表中的第k个字符(由于列表索引从0开始,所以是k-1)。return s.index(tar):返回该字符在原字符串s中的索引位置。
-
调用算法:
print(getResult(s, k)):调用getResult函数,并将结果输出到控制台。
代码功能总结:
- 该程序的功能是:给定一个字符串和一个整数
k,程序会先对字符串中的字符进行排序,然后找到排序后的第k个字符,并返回该字符在原字符串中的索引位置。
示例:
假设输入字符串为"hello",k为3:
- 将字符串转换为字符列表:
['h', 'e', 'l', 'l', 'o']。 - 对字符列表进行排序:
['e', 'h', 'l', 'l', 'o']。 - 取第
3个字符(索引为2):'l'。 - 返回
'l'在原字符串"hello"中的索引位置:2。
因此,程序输出为2。
注意事项:
- 索引从0开始:
- Python中的列表索引从0开始,因此第
k个字符的索引是k-1。
- Python中的列表索引从0开始,因此第
- 越界处理:
- 如果
k大于字符串的长度,程序会将k设置为字符串的长度,避免索引越界。
- 如果
- 字符重复:
- 如果字符串中有重复字符,
s.index(tar)会返回第一个匹配字符的索引。
- 如果字符串中有重复字符,
希望这个解释对您理解代码有所帮助!
五、C/C++算法源码:
以下是 C语言代码 和 C++代码 的详细中文注释和讲解,并附上代码转换。
C语言代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_SIZE 10000 // 定义最大字符串长度// 比较函数,用于qsort排序
int cmp(const void* a, const void* b) {return (*(char*) a) - (*(char*) b); // 按字符的ASCII值升序排序
}int main() {char s[MAX_SIZE]; // 定义字符数组,用于存储输入的字符串gets(s); // 从控制台读取字符串(注意:gets不安全,建议使用fgets)int k;scanf("%d", &k); // 从控制台读取整数kint n = strlen(s); // 获取字符串的长度char s_cp[n + 1]; // 定义字符数组,用于存储字符串的副本strcpy(s_cp, s); // 将原字符串复制到副本中qsort(s_cp, n, sizeof(char), cmp); // 对副本字符串进行排序if (k > n) { // 如果k大于字符串长度k = n; // 将k设置为字符串长度,防止越界}char target = s_cp[k - 1]; // 获取排序后字符串的第k个字符(索引为k-1)printf("%lld\n", strchr(s, target) - s); // 输出目标字符在原字符串中的索引return 0;
}
C语言代码讲解:
-
头文件:
#include <stdio.h>:标准输入输出库,用于printf和scanf。#include <stdlib.h>:标准库,用于qsort。#include <string.h>:字符串处理库,用于strlen和strcpy。
-
宏定义:
#define MAX_SIZE 10000:定义最大字符串长度为10000。
-
比较函数
cmp:- 用于
qsort排序,按字符的ASCII值升序排列。
- 用于
-
主函数
main:char s[MAX_SIZE];:定义字符数组,用于存储输入的字符串。gets(s);:从控制台读取字符串(注意:gets不安全,建议使用fgets)。scanf("%d", &k);:从控制台读取整数k。int n = strlen(s);:获取字符串的长度。char s_cp[n + 1];:定义字符数组,用于存储字符串的副本。strcpy(s_cp, s);:将原字符串复制到副本中。qsort(s_cp, n, sizeof(char), cmp);:对副本字符串进行排序。if (k > n) { k = n; }:如果k大于字符串长度,将k设置为字符串长度。char target = s_cp[k - 1];:获取排序后字符串的第k个字符。printf("%lld\n", strchr(s, target) - s);:输出目标字符在原字符串中的索引。
C++代码
#include <iostream>
#include <algorithm> // 包含sort函数
#include <cstring> // 包含strlen和strchr函数using namespace std;int main() {char s[10000]; // 定义字符数组,用于存储输入的字符串cin.getline(s, 10000); // 从控制台读取字符串(安全的方式)int k;cin >> k; // 从控制台读取整数kint n = strlen(s); // 获取字符串的长度char s_cp[n + 1]; // 定义字符数组,用于存储字符串的副本strcpy(s_cp, s); // 将原字符串复制到副本中sort(s_cp, s_cp + n); // 对副本字符串进行排序if (k > n) { // 如果k大于字符串长度k = n; // 将k设置为字符串长度,防止越界}char target = s_cp[k - 1]; // 获取排序后字符串的第k个字符(索引为k-1)cout << (strchr(s, target) - s) << endl; // 输出目标字符在原字符串中的索引return 0;
}
C++代码讲解:
-
头文件:
#include <iostream>:输入输出流库,用于cin和cout。#include <algorithm>:算法库,用于sort函数。#include <cstring>:C风格字符串处理库,用于strlen和strchr。
-
主函数
main:char s[10000];:定义字符数组,用于存储输入的字符串。cin.getline(s, 10000);:从控制台读取字符串(安全的方式)。cin >> k;:从控制台读取整数k。int n = strlen(s);:获取字符串的长度。char s_cp[n + 1];:定义字符数组,用于存储字符串的副本。strcpy(s_cp, s);:将原字符串复制到副本中。sort(s_cp, s_cp + n);:对副本字符串进行排序。if (k > n) { k = n; }:如果k大于字符串长度,将k设置为字符串长度。char target = s_cp[k - 1];:获取排序后字符串的第k个字符。cout << (strchr(s, target) - s) << endl;:输出目标字符在原字符串中的索引。
代码功能总结:
- 该程序的功能是:给定一个字符串和一个整数
k,程序会先对字符串中的字符进行排序,然后找到排序后的第k个字符,并返回该字符在原字符串中的索引位置。
示例:
假设输入字符串为"hello",k为3:
- 将字符串转换为字符数组:
['h', 'e', 'l', 'l', 'o']。 - 对字符数组进行排序:
['e', 'h', 'l', 'l', 'o']。 - 取第
3个字符(索引为2):'l'。 - 返回
'l'在原字符串"hello"中的索引位置:2。
因此,程序输出为2。
注意事项:
- C语言中的
gets不安全:- 建议使用
fgets替代gets,例如:fgets(s, MAX_SIZE, stdin);。
- 建议使用
- C++中的
cin.getline:- 是安全的输入方式,可以避免缓冲区溢出。
- 字符重复:
- 如果字符串中有重复字符,
strchr会返回第一个匹配字符的索引。
- 如果字符串中有重复字符,
希望这个解释对您理解代码有所帮助!
相关文章:
【2024年华为OD机试】(C卷,100分)- 字符串筛选排序 (Java JS PythonC/C++)
一、问题描述 题目描述 输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母 (k > 1) 输出该字母所在字符串中的位置索引 (字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串…...
iOS - runtime总结
详细总结一下 Runtime 的核心内容: 1. 消息发送机制 // 消息发送的基本流程 id objc_msgSend(id self, SEL _cmd, ...) {// 1. 获取 isaClass cls object_getClass(self);// 2. 查找缓存IMP imp cache_getImp(cls, _cmd);if (imp) return imp(self, _cmd, ...);…...
第33 章 - ES 实战篇 - MySQL 与 Elasticsearch 的一致性问题
思维导图 0. 前言 MySQL 与 Elasticsearch 一致性问题是老生常谈了。网上有太多关于这方面的文章了,但是千篇一律,看了跟没看没有太大区别。 在生产中,我们往往会通过 DTS 工具将 binlog 导入到 Kafka,再通过 Kafka 消费 binlog&…...
Artec Leo 3D扫描仪与Ray助力野生水生动物法医鉴定【沪敖3D】
挑战:捕获大型水生哺乳动物(如鲸鱼)的数据,搭建全彩3D模型,用于水生野生动物的法医鉴定、研究和保护工作。 解决方案:Artec Eva、Artec Space Spider、Artec Leo、Artec Ray、Artec Studio、CT scans 效果&…...
PythonQT5打包exe线程使用
打包: pyinstaller --noconsole --onefile test.py–noconsole 表示不需要打开命令行 修改:test.spec 一般项目里面需要用的资源文件,比如lib、png、exe等。 需要单独修改spec文件 pathex[.],binaries[(D:/test.png, .),(D:/simsun.ttc, .…...
【Powershell】Windows大法powershell好(二)
PowerShell基础(二) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 1. powershell 执行外部命令 powershell也可以执行一些外部的…...
前端学习-环境this对象以及回调函数(二十七)
目录 前言 目标 环境对象 作用 环境对象this是什么? 判断this指向的粗略规则是什么? 回调函数 目标 常见的使用场景 综合案例:Tab任务栏切换 总结 前言 男儿何不带吴钩,收取关山五十州 目标 能够分析判断函数运行在不…...
Element-plus、Element-ui之Tree 树形控件回显Bug问题。
需求:提交时,需要把选中状态和半选中状态 的数据id提交。如图所示: 数据回显时,会出现代码如下: <template><el-tree ref"treeRef" :data"tree" show-checkbox node-key"id" …...
互联网全景消息(10)之Kafka深度剖析(中)
一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…...
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步 目录 Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动…...
pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)
pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)/ x y 代码代码 1:torch.matmul(x, y)输入张量:计算逻辑:输出结果: 代码 2:y y.view(4,1)…...
PyTorch环境配置常见报错的解决办法
目标 小白在最基础的环境配置里一般都会出现许多问题。 这里把一些常见的问题分享出来。希望可以节省大家一些时间。 最终目标是可以在cmd虚拟环境里进入jupyter notebook,new的时候有对应的环境,并且可以跑通所有的import code。 第一步:…...
罗永浩再创业,这次盯上了 AI?
罗永浩,1972年7月9日生于中国延边朝鲜族自治州的一个军人家庭,是一名朝鲜族人;早年在新东方授课,2004年当选 “网络十大红人” ;2006年8月1日,罗永浩创办牛博网;2008年5月,罗永浩注册…...
VUE3 provide 和 inject,跨越多层级组件传递数据
provide 和 inject 是 Vue 3 提供的 API,主要用于实现祖先组件与后代组件之间的依赖注入。它们可以让你在组件树中,跨越多层组件传递数据,而不需要通过 props 或事件的方式逐层传递。这个机制主要用于状态共享、插件系统或某些跨层级的功能。…...
git打补丁
1、应用场景 跨仓库升级 开发项目B使用的是开源项目A。开源项目A发现漏洞,作者进行了修复,我们可以通过使用git补丁的方式,将作者修改的内容复制到我 们的项目B中。 2、TortoiseGit方式 源仓库 格式化补丁 根据提交数量,生成…...
机械燃油车知识图谱、知识大纲、知识结构(持续更新...)
一、发动机 曲柄连杆机构 配气机构 点火系统 起动系统 燃油供给系统 润滑系统 冷却系统 二、底盘 (一)传动系统 1、离合器 2、变速器 3、万向传动装置 4、驱动桥 (二)行驶系统 1、车架 2、车桥 3、悬架 4、车轮 &a…...
Vue3学习总结
一、Vue 3 基础搭建与核心语法 1.创建 Vue 3 应用 在项目的入口文件 main.js 中,通过以下代码创建 Vue 3 应用实例: import { createApp } from vue; import App from ./App.vue;const app createApp(App); app.mount(#app); 这几行代码的作用是引入…...
Type-C双屏显示器方案
在数字化时代,高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步,一款结合了便携性和高效视觉输出的设备——双屏便携屏,逐渐崭露头角,成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…...
【读书与思考】焦虑与内耗
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 导言 今天一个朋友和我说,最近比较焦虑和内耗,无心工作和学习,我问他你焦虑内耗的时候,时间主要花在哪了,他告诉我说主要花在看有关移…...
基于python的网页表格数据下载--转excel
基于 Python 的网页表格数据爬取与下载:以维基百科为例 目录 基于 Python 的网页表格数据爬取与下载:以维基百科为例1. 背景介绍2. 工具与环境3. 操作步骤1. 获取网页内容2. 定位表格元素3. 表格变身 Pandas DataFrame4. 检查数据,收工!5. 进阶玩法与优化6. 完整代码4. 结果…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
