华为OD机试真题——素数之积RSA加密算法(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型
本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》
华为OD机试真题《素数之积RSA加密算法》:
文章快捷目录
题目描述及说明
Java
python
JavaScript
C
GO
更多内容
题目名称:素数之积RSA加密算法
知识点:数论、因数分解、素数判断
时间限制:1秒
空间限制:256MB
限定语言:不限
题目描述
RSA加密算法在网络安全中广泛应用,其安全性基于极大整数因数分解的困难性。给定一个32位正整数 num
,请对其进行因数分解,找出两个素数,使得它们的乘积等于 num
。若存在这样的素数对,则按升序输出这两个素数;否则输出 -1 -1
。
输入描述
- 一个正整数
num
,满足0 < num < 2147483647
。
输出描述
- 若分解成功,输出两个素数,以空格分隔并按升序排列;否则输出
-1 -1
。
示例
输入:
15
输出:
3 5
说明:
15可以分解为素数3和5的乘积。
输入:
27
输出:
-1 -1
说明:
27的因数分解结果为3×3×3,不符合两个素数的要求。
输入约束
- 输入的数值保证唯一性,且至少存在一个有效解或无解。
Java
问题分析
给定一个32位正整数num,要求分解成两个素数的乘积。如果存在这样的两个素数,按升序输出;否则输出-1 -1。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从2开始遍历到sqrt(num),寻找num的因数。一旦找到因数i,对应的另一个因数为j=num/i。
- 素数判断:对于找到的因数i和j,需要检查它们是否都是素数。
- 优化遍历:先处理2的情况,然后遍历奇数以减少循环次数。
- 高效素数判断:通过预检查小素数和6k±1的因数,减少不必要的计算。
代码实现
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();// 检查因数2的情况if (num % 2 == 0) {int j = num / 2;if (isPrime(2) && isPrime(j)) {System.out.println("2 " + j);return;}}// 遍历奇数因数,从3开始for (int i = 3; i * i <= num; i += 2) {if (num % i == 0) {int j = num / i;if (isPrime(i) && isPrime(j)) {System.out.println(i + " " + j);return;}}}// 未找到符合条件的素数对System.out.println("-1 -1");}// 高效的素数判断函数private static boolean isPrime(int n) {if (n <= 1) return false;if (n <= 3) return true;if (n % 2 == 0 || n % 3 == 0) return false;// 检查6k ± 1的因数for (int i = 5; i * i <= n; i += 6) {if (n % i == 0 || n % (i + 2) == 0) {return false;}}return true;}
}
代码详解
- 输入读取:使用Scanner读取输入的整数num。
- 处理因数2:单独检查num是否能被2整除,以减少后续遍历次数。
- 遍历奇数因数:从3开始,每次增加2,只检查奇数作为可能的因数。
- 因数判断:对于每个i,检查是否是num的因数,并计算对应的j。
- 素数判断:调用isPrime函数检查i和j是否都是素数,若是则输出结果并返回。
- 未找到处理:循环结束后未找到则输出-1 -1。
- isPrime函数:通过预检查2、3和6k±1的因数,高效判断素数。
示例测试
-
输入15:
- 因数i=3,j=5,均为素数,输出3 5。
-
输入27:
- 因数i=3,j=9,但9非素数;遍历结束未找到,输出-1 -1。
-
输入25:
- 因数i=5,j=5,均为素数,输出5 5。
综合分析
该方案通过优化因数遍历和素数判断,确保了高效性和正确性:
- 时间复杂度:最坏情况下O(sqrt(n)),由于减少遍历次数,实际效率更高。
- 空间复杂度:O(1),无额外存储。
- 正确性:覆盖所有可能的因数组合,包括平方数和边界情况。
- 优化点:优先处理偶数和奇数遍历,结合高效素数判断,适合处理大数范围。
python
问题分析
给定一个正整数 num
,要求将其分解为两个素数的乘积。如果存在这样的两个素数,按升序输出;否则输出 -1 -1
。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从
2
开始遍历到sqrt(num)
,寻找num
的因数。找到因数i
后,另一个因数为j = num // i
。 - 素数判断:对于找到的因数
i
和j
,检查它们是否都是素数。 - 优化遍历:先处理
2
的情况,然后遍历奇数以减少循环次数。 - 高效素数判断:通过预检查
2
、3
和6k±1
的因数,减少不必要的计算。
代码实现
def is_prime(n):"""判断一个数是否为素数"""if n <= 1:return Falseif n <= 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsei = 5while i * i <= n:if n % i == 0 or n % (i + 2) == 0:return Falsei += 6return Truenum = int(input())# 先检查是否为偶数
if num % 2 == 0:j = num // 2if is_prime(j):print(2, j)exit()# 遍历奇数因数,从3开始到sqrt(num)
max_factor = int(num ** 0.5) + 1
for i in range(3, max_factor, 2):if num % i == 0:j = num // iif is_prime(i) and is_prime(j):print(i, j)exit()# 未找到符合条件的因数对
print(-1, -1)
代码详解
-
is_prime
函数:- 第 1-2 行:处理小于等于 1 的非素数情况。
- 第 3-4 行:直接返回
True
当n
是 2 或 3。 - 第 5-6 行:快速排除能被 2 或 3 整除的数。
- 第 7-11 行:检查
6k±1
形式的因数,减少循环次数。
-
主逻辑部分:
- 第 14 行:读取输入的正整数
num
。 - 第 17-20 行:检查
num
是否为偶数。如果是,计算另一个因数j
,若j
是素数则直接输出结果。 - 第 23-27 行:遍历奇数因数
i
,检查是否能整除num
,并验证i
和j
是否均为素数。 - 第 30 行:若未找到符合条件的因数对,输出
-1 -1
。
- 第 14 行:读取输入的正整数
示例测试
-
输入 15:
- 15 是奇数,检查
i=3
,j=5
。两者均为素数,输出3 5
。
- 15 是奇数,检查
-
输入 27:
- 27 是奇数,遍历到
i=3
,j=9
。9
不是素数,继续遍历无结果,最终输出-1 -1
。
- 27 是奇数,遍历到
-
输入 25:
- 25 是奇数,遍历到
i=5
,j=5
。两者均为素数,输出5 5
。
- 25 是奇数,遍历到
综合分析
该方案通过以下优化确保高效性:
- 因数遍历优化:先处理偶数,然后只遍历奇数,减少循环次数。
- 素数判断优化:利用
6k±1
规律,快速排除非素数。 - 时间复杂度:最坏情况下为
O(sqrt(n))
,适用于 32 位整数范围。 - 空间复杂度:
O(1)
,无需额外存储空间。
该实现能正确处理所有边界情况,如质数输入、平方数等,确保结果正确且高效。
JavaScript
问题分析
给定一个正整数 num
,要求将其分解为两个素数的乘积。若存在这样的素数对,按升序输出;否则输出 -1 -1
。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从
2
开始遍历到Math.sqrt(num)
,寻找num
的因数。找到因数i
后,另一个因数为j = num / i
。 - 素数判断:对于找到的因数
i
和j
,检查它们是否都是素数。 - 优化遍历:先处理
2
的情况,然后遍历奇数以减少循环次数。 - 高效素数判断:通过预检查
2
、3
和6k±1
的因数,减少不必要的计算。
代码实现
const fs = require('fs');
const num = parseInt(fs.readFileSync(0).toString().trim());function isPrime(n) {if (n <= 1) return false;if (n <= 3) return true; // 2和3是素数if (n % 2 === 0 || n % 3 === 0) return false; // 排除2和3的倍数// 检查6k±1形式的因数,i从5开始,每次增加6for (let i = 5; i * i <= n; i += 6) {if (n % i === 0 || n % (i + 2) === 0) return false;}return true;
}// 处理偶数的特殊情况
if (num % 2 === 0) {const j = num / 2;if (isPrime(j)) {console.log(`2 ${j}`);process.exit();}
}// 遍历奇数因数,从3开始到sqrt(num)
for (let i = 3; i * i <= num; i += 2) {if (num % i === 0) {const j = num / i;if (isPrime(i) && isPrime(j)) {console.log(`${i} ${j}`);process.exit();}}
}// 未找到符合条件的素数对
console.log('-1 -1');
代码详解
-
输入处理:
const num = parseInt(fs.readFileSync(0).toString().trim());
从标准输入读取内容并转换为整数
num
。 -
isPrime
函数:- 第2行:若
n ≤ 1
,直接返回false
(非素数)。 - 第3行:若
n
是 2 或 3,返回true
。 - 第4行:若
n
能被 2 或 3 整除,返回false
。 - 第6-8行:检查
6k±1
形式的因数(如5、7、11、13等),快速排除非素数。
- 第2行:若
-
处理偶数情况:
if (num % 2 === 0) {const j = num / 2;if (isPrime(j)) {console.log(`2 ${j}`);process.exit();} }
- 若
num
是偶数,则其中一个因数必为 2,另一个因数为j = num / 2
。 - 检查
j
是否为素数,若是则输出并结束程序。
- 若
-
遍历奇数因数:
for (let i = 3; i * i <= num; i += 2) {if (num % i === 0) {const j = num / i;if (isPrime(i) && isPrime(j)) {console.log(`${i} ${j}`);process.exit();}} }
- 从 3 开始,每次增加 2,遍历所有奇数。
- 若
i
是num
的因数,计算j = num / i
,并检查i
和j
是否均为素数。
-
未找到时的输出:
console.log('-1 -1');
若遍历结束未找到符合条件的素数对,输出
-1 -1
。
示例测试
-
输入 15:
num = 15
是奇数,检查i = 3
,j = 5
。isPrime(3)
和isPrime(5)
均为true
,输出3 5
。
-
输入 27:
num = 27
是奇数,检查i = 3
,j = 9
(9 不是素数)。- 继续遍历其他奇数,未找到符合条件的因数对,最终输出
-1 -1
。
-
输入 25:
num = 25
是奇数,检查i = 5
,j = 5
。isPrime(5)
为true
,输出5 5
。
综合分析
-
时间复杂度:
- 最坏情况:遍历到
sqrt(num)
,时间复杂度为O(sqrt(n))
。 - 素数判断:通过
6k±1
优化,将判断复杂度降至O(sqrt(n)/6)
。
- 最坏情况:遍历到
-
空间复杂度:
O(1)
,无额外存储空间。 -
优化点:
- 优先处理偶数:快速处理 2 的因数。
- 仅遍历奇数:减少遍历次数。
- 高效素数判断:利用
6k±1
规律减少循环次数。
-
适用场景:
- 适用于 32 位整数范围内的数值(最大约 2^31-1)。
- 正确处理边界情况(如
num
为平方数或小素数)。
C++
问题分析
给定一个32位正整数 num
,要求将其分解为两个素数的乘积。如果存在这样的两个素数,按升序输出;否则输出 -1 -1
。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从
2
开始遍历到sqrt(num)
,寻找num
的因数。找到因数i
后,另一个因数为j = num / i
。 - 素数判断:对于找到的因数
i
和j
,检查它们是否都是素数。 - 优化遍历:先处理
2
的情况,然后遍历奇数以减少循环次数。 - 高效素数判断:通过预检查
2
、3
和6k±1
的因数,减少不必要的计算。
代码实现
#include <iostream>
using namespace std;bool isPrime(int n) {if (n <= 1) return false; // 非正数不是素数if (n <= 3) return true; // 2和3是素数if (n % 2 == 0 || n % 3 == 0) return false; // 排除2和3的倍数// 检查6k±1形式的因数for (long long i = 5; i * i <= n; i += 6) {if (n % i == 0 || n % (i + 2) == 0)return false;}return true;
}int main() {int num;cin >> num;// 处理偶数情况if (num % 2 == 0) {int j = num / 2;if (isPrime(j)) {cout << "2 " << j << endl;return 0;}}// 遍历奇数因数,从3到sqrt(num)for (long long i = 3; i * i <= num; i += 2) {if (num % i == 0) {int j = num / i;if (isPrime(i) && isPrime(j)) {cout << i << " " << j << endl;return 0;}}}// 未找到符合条件的素数对cout << "-1 -1" << endl;return 0;
}
代码详解
-
isPrime
函数:- 第3行:若
n ≤ 1
,直接返回false
(非素数)。 - 第4行:若
n
是 2 或 3,返回true
。 - 第5行:若
n
能被 2 或 3 整除,返回false
。 - 第8-10行:检查
6k±1
形式的因数(如5、7、11、13等),快速排除非素数。
- 第3行:若
-
主函数逻辑:
- 第15行:读取输入的正整数
num
。 - 第18-22行:检查
num
是否为偶数。如果是,计算另一个因数j
,若j
是素数则直接输出结果。 - 第25-32行:遍历奇数因数
i
,检查是否能整除num
,并验证i
和j
是否均为素数。 - 第35行:若未找到符合条件的因数对,输出
-1 -1
。
- 第15行:读取输入的正整数
示例测试
-
输入 15:
num = 15
是奇数,检查i = 3
,j = 5
。isPrime(3)
和isPrime(5)
均为true
,输出3 5
。
-
输入 27:
num = 27
是奇数,检查i = 3
,j = 9
(9 不是素数)。- 继续遍历其他奇数,未找到符合条件的因数对,最终输出
-1 -1
。
-
输入 25:
num = 25
是奇数,检查i = 5
,j = 5
。isPrime(5)
为true
,输出5 5
。
综合分析
-
时间复杂度:
- 最坏情况:遍历到
sqrt(num)
,时间复杂度为O(sqrt(n))
。 - 素数判断:通过
6k±1
优化,将判断复杂度降至O(sqrt(n)/6)
。
- 最坏情况:遍历到
-
空间复杂度:
O(1)
,无额外存储空间。 -
优化点:
- 优先处理偶数:快速处理 2 的因数。
- 仅遍历奇数:减少遍历次数。
- 高效素数判断:利用
6k±1
规律减少循环次数。
-
适用场景:
- 适用于 32 位整数范围内的数值(最大约 2^31-1)。
- 正确处理边界情况(如
num
为平方数或小素数)。
C
问题分析
给定一个32位正整数 num
,要求将其分解为两个素数的乘积。若存在这样的素数对,按升序输出;否则输出 -1 -1
。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从
2
开始遍历到sqrt(num)
,寻找num
的因数。找到因数i
后,另一个因数为j = num / i
。 - 素数判断:对于找到的因数
i
和j
,检查它们是否都是素数。 - 优化遍历:先处理
2
的情况,然后遍历奇数以减少循环次数。 - 高效素数判断:通过预检查
2
、3
和6k±1
的因数,减少不必要的计算。
代码实现
#include <stdio.h>
#include <stdbool.h>bool is_prime(int n) {if (n <= 1) return false;if (n <= 3) return true; // 2和3是素数if (n % 2 == 0 || n % 3 == 0) // 排除2和3的倍数return false;// 检查6k±1形式的因数for (int i = 5; i * i <= n; i += 6) {if (n % i == 0 || n % (i + 2) == 0)return false;}return true;
}int main() {int num;scanf("%d", &num);// 处理偶数情况if (num % 2 == 0) {int j = num / 2;if (is_prime(j)) {printf("2 %d\n", j);return 0;}}// 遍历奇数因数,从3开始到sqrt(num)for (long i = 3; i * i <= num; i += 2) {if (num % i == 0) {int j = num / i;if (is_prime(i) && is_prime(j)) {printf("%ld %d\n", i, j);return 0;}}}// 未找到符合条件的因数对printf("-1 -1\n");return 0;
}
代码详解
-
is_prime
函数:- 第4行:若
n ≤ 1
,返回false
(非素数)。 - 第5行:若
n
是 2 或 3,返回true
。 - 第6-7行:若
n
能被 2 或 3 整除,返回false
。 - 第9-12行:检查
6k±1
形式的因数(如5、7、11、13等),快速排除非素数。
- 第4行:若
-
主函数逻辑:
- 第17行:读取输入的整数
num
。 - 第20-24行:若
num
是偶数,检查num/2
是否为素数。若是,输出2
和num/2
。 - 第27-34行:遍历奇数因数
i
,检查是否能整除num
,并验证i
和j
是否均为素数。 - 第37行:若未找到符合条件的因数对,输出
-1 -1
。
- 第17行:读取输入的整数
示例测试
-
输入15:
num = 15
是奇数,检查i = 3
,j = 5
。两者均为素数,输出3 5
。
-
输入27:
num = 27
是奇数,检查i = 3
,j = 9
。9
不是素数,最终输出-1 -1
。
-
输入25:
num = 25
是奇数,检查i = 5
,j = 5
。两者均为素数,输出5 5
。
综合分析
-
时间复杂度:
- 最坏情况:遍历到
sqrt(num)
,时间复杂度为O(sqrt(n))
。 - 素数判断:通过
6k±1
优化,将判断复杂度降至O(sqrt(n)/6)
。
- 最坏情况:遍历到
-
空间复杂度:
O(1)
,无额外存储空间。 -
优化点:
- 优先处理偶数:快速处理 2 的因数。
- 仅遍历奇数:减少循环次数。
- 高效素数判断:利用
6k±1
规律减少循环次数。
-
适用场景:
- 适用于 32 位整数范围内的数值(最大约 2^31-1)。
- 正确处理边界情况(如
num
为平方数或小素数)。
GO
问题分析
给定一个32位正整数 num
,要求将其分解为两个素数的乘积。若存在这样的素数对,按升序输出;否则输出 -1 -1
。关键在于高效地找到这两个素数。
解题思路
- 因数遍历:从
2
开始遍历到sqrt(num)
,寻找num
的因数。找到因数i
后,另一个因数为j = num / i
。 - 素数判断:对于找到的因数
i
和j
,检查它们是否都是素数。 - 优化遍历:先处理
2
的情况,然后遍历奇数以减少循环次数。 - 高效素数判断:通过预检查
2
、3
和6k±1
的因数,减少不必要的计算。
代码实现
package mainimport ("fmt""math"
)func isPrime(n int) bool {if n <= 1 {return false}if n <= 3 { // 2和3是素数return true}if n%2 == 0 || n%3 == 0 { // 排除2和3的倍数return false}// 检查6k±1形式的因数for i := 5; i*i <= n; i += 6 {if n%i == 0 || n%(i+2) == 0 {return false}}return true
}func main() {var num intfmt.Scan(&num)// 处理偶数情况if num%2 == 0 {j := num / 2if isPrime(j) {fmt.Printf("2 %d\n", j)return}}// 遍历奇数因数,从3到sqrt(num)maxFactor := int(math.Sqrt(float64(num))) + 1for i := 3; i <= maxFactor; i += 2 {if num%i == 0 {j := num / iif isPrime(i) && isPrime(j) {fmt.Printf("%d %d\n", i, j)return}}}// 未找到符合条件的因数对fmt.Println("-1 -1")
}
代码详解
-
isPrime
函数:- 第8-10行:若
n ≤ 1
,返回false
(非素数)。 - 第11-13行:若
n
是 2 或 3,返回true
。 - 第14-16行:若
n
能被 2 或 3 整除,返回false
。 - 第18-21行:检查
6k±1
形式的因数(如5、7、11、13等),快速排除非素数。
- 第8-10行:若
-
主函数逻辑:
- 第26行:读取输入的整数
num
。 - 第29-33行:若
num
是偶数,检查num/2
是否为素数。若是,输出2
和num/2
。 - 第36-44行:遍历奇数因数
i
,检查是否能整除num
,并验证i
和j
是否均为素数。 - 第47行:若未找到符合条件的因数对,输出
-1 -1
。
- 第26行:读取输入的整数
示例测试
-
输入15:
num = 15
是奇数,检查i = 3
,j = 5
。两者均为素数,输出3 5
。
-
输入27:
num = 27
是奇数,检查i = 3
,j = 9
。9
不是素数,最终输出-1 -1
。
-
输入25:
num = 25
是奇数,检查i = 5
,j = 5
。两者均为素数,输出5 5
。
综合分析
-
时间复杂度:
- 最坏情况:遍历到
sqrt(num)
,时间复杂度为O(sqrt(n))
。 - 素数判断:通过
6k±1
优化,将判断复杂度降至O(sqrt(n)/6)
。
- 最坏情况:遍历到
-
空间复杂度:
O(1)
,无额外存储空间。 -
优化点:
- 优先处理偶数:快速处理 2 的因数。
- 仅遍历奇数:减少循环次数。
- 高效素数判断:利用
6k±1
规律减少循环次数。
-
适用场景:
- 适用于 32 位整数范围内的数值(最大约 2^31-1)。
- 正确处理边界情况(如
num
为平方数或小素数)。
更多内容:
https://www.kdocs.cn/l/cvk0eoGYucWA
本文发表于【纪元A梦】,关注我,获取更多实用教程/资源!
相关文章:
华为OD机试真题——素数之积RSA加密算法(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录…...
k8s中资源的介绍及标准资源namespaces实践
文章目录 第1章 k8s中的资源(resources)介绍1.1 k8s中资源(resouces)的分类1.2 k8s中资源(resources)的级别1.3 k8s中资源(resources)的API规范1.4 k8s中资源(resources)的manifests 第2章 k8s中的标准资源之namespaces的实践2.1 基本介绍2.2 编写相关ns资源对象的manifests2.3…...
k8s学习记录(四):节点亲和性
一、前言 在上一篇文章里,我们了解了 Pod 中的nodeName和nodeSelector这两个属性,通过它们能够指定 Pod 调度到哪个 Node 上。今天,我们将进一步深入探索 Pod 相关知识。这部分内容不仅信息量较大,理解起来也有一定难度࿰…...
联想笔记本电脑在Windows下通过联想驱动实现风扇控制
概述 本文旨在解决部分联想笔记本电脑无法使用主流的风扇控制工具(如Fan Control, SpeedFan)控制风扇的问题。主流的风扇控制工具在这些电脑上会因无法找到控制风扇的EC寄存器而无法发挥作用。但这是不是就意味着没办法控制风扇了呢?答案是否…...
Java单链表题目
Java链表题目练习 移除链表元素反转单链表链表的中间节点返回倒数第K个节点合并两个有序列表判断链表是否回文 学习了知识,就要进行其检验自己是否真正学会,练习题目来加强对知识的理解,今天就来练习一下链表题目 移除链表元素 目的ÿ…...
springboot入门-controller层
在 Spring Boot 中,Controller 层是处理 HTTP 请求的核心组件,负责接收客户端请求、调用业务逻辑(Service 层)并返回响应。其核心原理基于 Spring MVC 框架,通过注解驱动的方式实现请求的路由和参数绑定。以下是 Contr…...
游戏引擎学习第245天:wglChoosePixelFormatARB
Blackboard: PBO(像素缓冲对象) 我们将一起编写一个完整的游戏。老实说,我原本以为我们会花更长时间来实现异步纹理上传,结果我们只用了两天时间,主要原因是我们没有设置标志来真正告诉程序下载纹理,所以这…...
中国大陆DNS服务选择指南:阿里云VS AWS,合规性与最佳实践
导语 在中国大陆开展互联网业务时,DNS服务的选择不仅关乎性能,更涉及合规性问题。本文将深入探讨DNS服务商选择的自由度、阿里云与AWS DNS服务的优劣势,以及如何在确保合规的同时优化您的域名解析策略。无论您是初创公司还是跨国企业,这份指南都将助您在复杂的中国互联网环境中…...
LLaMa Factory大模型微调
LLaMa Factory大模型微调 大模型微调平台&硬件LLaMA-Factory安装hfd下载hugging face模型自我认知微调Alpaca数据集指令监督微调断点续训 大模型微调 微调自我认知微调特定领域数据集。 平台&硬件 Ubuntu20.04显卡:M40 24G 2080TI 22G微调框架ÿ…...
git和github的使用指南
目录 1.git初始化本地仓库 2.远程仓库 3.如何将自己的代码上传到远程仓库的某一个分支 1.git初始化本地仓库 在项目目录中初始化 Git 仓库: cd your-project-directory git init 将文件添加到暂存区: git add . //添加所有文件 git add <fi…...
如何快速轻松地恢复未保存的 Word 文档:简短指南
文字处理器已经存在了几十年,其中许多已经变得非常擅长防止问题。丢失未保存的数据是一个常见问题,因此办公软件通常带有恢复文件的方法。在本文中,我们将介绍如何恢复 Word 文档,即使您尚未保存它。 确保数据安全的最佳方法是保…...
【Linux网络】打造初级网络计算器 - 从协议设计到服务实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
基于STM32定时器中断讲解(HAL库)
基于STM32定时器中断讲解(HAL库) 1、定时器简单介绍 以STM32F103C8T6中几个定时器为例: TIM1:这是一个高级定时器,不仅具备基本的定时中断功能,还拥有内外时钟源选择、输入捕获、输出比较、编码器接口以…...
《Vue3学习手记5》
pinia 共享的数据交给集中状态管理 引入与使用 //main.ts // 引入Pinia import {createPinia} from "pinia"const piniacreatePinia() app.use(pinia)案例: <template><div class"count"><h2>当前和为:{{ sum…...
MySQL多查询条件下深度分页性能优化技巧及示例总结
深度分页(Deep Pagination)是MySQL中常见的性能瓶颈问题,特别是在多查询条件下,当offset值很大时,查询性能会急剧下降。本文将总结多种优化技巧,并提供实际示例。 一、深度分页的性能问题分析 当执行类似SELECT * FROM table WHERE condition1 AND condition2 LIMIT 1000…...
3、初识RabbitMQ
界面上的导航栏共分6部分,分别代表不同的意思 一、Producer和Consumer Producer: 生产者, 是RabbitMQ Server的客户端, 向RabbitMQ发送消息 Consumer: 消费者, 也是RabbitMQ Server的客⼾端, 从RabbitMQ接收消息 Broker:其实就是RabbitMQ Server, 主要…...
量子计算与GPU的异构加速:基于CUDA Quantum的混合编程实践
一、量子模拟的算力困境与GPU破局 量子计算模拟面临指数级增长的资源需求:n个量子比特的态向量需要存储2^n个复数。当n>30时,单机内存已无法承载(1TB需求)。传统CPU模拟器(如Qiskit Aer)在n28时计算…...
在Spring Boot项目中实现Word转PDF并预览
在Spring Boot项目中实现Word转PDF并进行前端网页预览,你可以使用Apache POI来读取Word文件,iText或Apache PDFBox来生成PDF文件,然后通过Spring Boot控制器提供文件下载或预览链接。以下是一个示例实现步骤和代码: 1. 添加依赖 …...
Windows怎样使用curl下载文件
安装curl 从官网下载:访问curl官方网站,根据系统位数(32 位或 64 位)选择相应的版本进行下载。下载完成后,双击安装程序并按照提示进行安装。也可以选择自定义安装路径,记住安装路径,后续配置环…...
priority_queue的学习
priority_queue的介绍 优先级队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被…...
浅谈Java 内存管理:栈与堆,垃圾回收
在Java编程世界里,内存管理是一项极为关键的技能,它就像程序运行背后的“隐形守护者”,默默影响着程序的性能与稳定性。今天,咱们就来简单学习一下Java内存管理中的两大核心要点:栈与堆的内存分配机制,以及…...
windows下查看idea运行的进程占的JVM情况工具
jconsole 查看JVM 查看线程数 自己测试时,可以先不把线程关闭查效果。 也可以用这工具查下是不是有线程一直在增加。...
【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析
目录 一、什么是 Azure Test Impact Analyzer?二、核心功能与优势三、如何掌握 Azure TIA?四、工作中的典型应用场景五、最佳实践与注意事项六、总结 一、什么是 Azure Test Impact Analyzer? Azure Test Impact Analyzer (TIA) 是微软 Azur…...
JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?
1. 分析 : 年轻代GC正常,说明年轻代的对象回收没有问题,可能大部分对象都是朝生夕死的,所以Minor GC能有效清理。但Full GC频繁,通常意味着老年代空间不足,导致频繁进行Full GC来回收老年代。而内存缓慢上…...
浏览器界面无显示,提示“代理服务器可能有问题”,这是怎么回事呢?
前言 🌟🌟本期讲解浏览器代理服务器解决办法介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…...
C#中的弱引用使用
弱引用(Weak Reference)是一种特殊的引用类型,它允许你引用一个对象,但不会阻止该对象被垃圾回收器(GC)回收。弱引用通常用于需要缓存或跟踪对象,但又不希望因保留引用而导致内存泄漏的场景。弱…...
在Linux虚拟机下使用vscode,#include无法跳转问题
总结:需要通过Linux指令来添加编译器和压缩文件,解压,这样获得的编译器会具有可执行权限类似于 -rwxr-xr-x 1 user user 12345 Apr 26 14:22 myscript.sh 如果你直接从window中拖入文件到Linux文件下,你需要自己来再度开启可编译…...
MIL、SIL、HIL与Back-to-Back测试详解:从模型到硬件的完整验证链
1. 引言 在嵌入式系统和控制算法开发中,MIL、SIL、HIL和Back-to-Back测试构成了从模型设计到硬件部署的完整验证流程。它们覆盖不同开发阶段,确保系统功能正确性、实时性和可靠性。 本文将清晰解析这四种测试方法的核心概念、应用场景及差异。 2. 四种测…...
【Android Compose】焦点管理
官方文档链接: https://developer.android.google.cn/develop/ui/compose/touch-input/focus?hlzh-cn 1、更改焦点遍历顺序 1.1、替换一维遍历顺序 (1)创建焦点引用对象: /// 创建4个引用对象(二选一)…...
启动命令汇总(Redis / Kafka / Flume / Spark)
本文总结了本地开发环境(Windows系统)中启动推荐系统所需的所有组件命令,包括 Redis、Kafka、Flume 及 SparkStreaming 程序的启动流程。 1. 启动 Redis 进入 Redis 安装目录,执行: redis-server.exe测试连接&#x…...
python 画折线统计图
Python 画折线统计图(line chart)最常用的是 matplotlib。 最基本的折线图代码如下: import matplotlib.pyplot as plt# 假设这是你的数据 x [1, 2, 3, 4, 5] y [2, 3, 5, 7, 11]# 创建折线图 plt.plot(x, y, markero) # markero 是在点…...
java面向对象编程【高级篇】之继承
目录 🚀前言🤔什么是继承?🌟权限修饰符💯private 修饰符💯默认(无修饰符)💯protected 修饰符💯public 修饰符💯归纳 🦜继承的特点&…...
【数论分块】数论分块算法模板及真题
1.数论分块的含义 数论分块算法,就是枚举出使得取整函数发生变化的地方。 例如,对表达式 ⌊ n i ⌋ \lfloor \frac{n}{i} \rfloor ⌊in⌋使用数论分块算法,就可以在 O ( n ) O(\sqrt n) O(n )的时间复杂度下枚举所有满足 ⌊ n i − 1 ⌋…...
DIY 3D打印机 原理及步骤概况
一、3D打印机的基本原理 硬件组成: 运动系统:控制X/Y/Z轴的步进电机(或直线电机),决定打印头的移动精度。 热端(挤出机):加热并挤出材料(如PLA、ABS塑料)。 …...
深度探索:DeepSeek赋能WPS图表绘制
一、研究背景 在当今数字化信息爆炸的时代,数据处理与可视化分析已成为众多领域研究和决策的关键环节。随着数据量的急剧增长和数据维度的不断丰富,传统的数据可视化工具在应对复杂数据时逐渐显露出局限性。Excel作为广泛应用的电子表格软件,…...
内存四区(栈)
今天我再次学到了有趣的知识,内存四区! 内存四区分为代码区,全局区,栈区,堆区,今天我们详细来讲讲栈区! 内存四区和栈区都是用来存放数据的,而栈区存放的数据具体有两类 1.形参数…...
Nginx性能优化:从配置到缓存,全面提升Web服务器性能
一、基础配置优化:释放硬件潜能 进程与连接调优 worker_processes: 推荐设置为 auto(自动匹配CPU核心数),但在特殊场景下需手动优化:worker_processes 8; # 8核CPU手动指定 worker_cpu_affinity 000…...
系统架构设计(三):质量属性
常见分类 一般来说,质量属性可以分为以下几类: 类别常见质量属性性能相关响应时间、吞吐量、资源利用率、实时性、可扩展性可用性相关可用性、高可用性(HA)、可靠性、容错性、恢复性可维护性相关可维护性、可测试性、可扩展性、…...
C#中常见的设计模式
文章目录 引言设计模式的分类创建型模式 (Creational Patterns)1. 单例模式 (Singleton)2. 工厂方法模式 (Factory Method)3. 抽象工厂模式 (Abstract Factory)4. 建造者模式 (Builder) 结构型模式 (Structural Patterns)5. 适配器模式 (Adapter)6. 装饰器模式 (Decorator)7. 外…...
C# 枚举(Enum)声明与使用详解
在 C# 编程中,枚举(Enum)是一种非常实用的数据类型,它允许你定义一组具有名称的整型常量,使代码更具可读性和可维护性。枚举可以有效地替代使用硬编码数值,尤其是在处理状态、选项或标志时。本文将深入探讨…...
Linux-进程控制
目录 一、进程创建 1.1、fork()函数 1.2、fork的返回值 1.3、写实拷贝(Copy-on-Write,COW) 1.4、fork常规用法 1.5、fork调用失败的原因 二、进程退出 三、进程等待 1、wait和waitpid 1.1、解决僵尸进程问题 1.2、status参数 程序正…...
【优选算法 | 滑动窗口】滑动窗口算法:高效处理子数组和子串问题
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针 在本篇文章中,我们将深入剖析滑动窗口算法的核心原理。从基础概念到实战应用,带你了解如何利用滑动窗口高效解决连续子数组和子串等问题。无论你是算法入门的新手,还是…...
RabbitMQ全栈实践手册:从零搭建消息中间件到SpringAMQP高阶玩法
目录 前言 认识MQ 同步调用 异步调用 技术选型 安装 SpringAMQP 交换机类型 队列交换机绑定 环境搭建 Fanout交换机 声明队列和交换机 消息发送 消息接收 总结 Direct交换机 声明队列和交换机 消息发送 消息接收 总结 Topic交换机 声明队列和交换机 消息…...
头歌实训之存储过程、函数与触发器
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
系统架构设计中的DSSA方法:理论、实践与行业深度应用
引言 在软件架构设计领域,DSSA(Domain-Specific Software Architecture,领域特定软件架构)是一种专注于垂直行业或业务领域的架构设计方法论。与通用架构设计不同,DSSA通过提炼领域共性需求、构建可复用资产库&am…...
设计心得——数据结构的意义
一、数据结构 在老一些的程序员中,可能都听说过,程序其实就是数据结构算法这种说法。它是由尼克劳斯维特在其著作《算法数据结构程序》中提出的,然后在一段时期内这种说法非常流行。这里不谈论其是否正确,只是通过这种提法&#…...
【C】初阶数据结构12 -- 冒泡排序
本篇文章主要讲解经典排序算法 -- 冒泡排序。 目录 1 算法思想 2 代码 3 时间复杂度与空间复杂度分析 1) 时间复杂度 2) 空间复杂度 1 算法思想 选择排序是一种经典的交换排序算法。其算法思想也比较简单,主要是比较相邻元素&…...
HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
目录 🔗 一、共同点(联系): 🔍 二、区别对比: 📘 三、简要说明 1. HTTP 2. AMQP 3. MQTT 🔗 四、三者联系(在华为云IoT平台中的应用) 🎯 …...
WPF之项目创建
文章目录 引言先决条件创建 WPF 项目步骤理解项目结构XAML 与 C# 代码隐藏第一个 "Hello, WPF!" 示例构建和运行应用程序总结相关学习资源 引言 Windows Presentation Foundation (WPF) 是 Microsoft 用于构建具有丰富用户界面的 Windows 桌面应用程序的现代框架。它…...
CrewAI Community Version(二)——Agent
目录 1. Agent总览2. Agent属性3. 创建Agent3.1 YAML配置3.2 直接用代码定义3.3 运行结果 参考 1. Agent总览 在CrewAI框架中,Agent是一个能具备下列能力的自主单元: 1. 执行特定的任务 2. 基于它的角色和目标进行决策 3. 使用工具完成任务 …...