【2024年华为OD机试】 (A卷,100分)- 租车骑绿岛(Java JS PythonC/C++)
一、问题描述
题目描述
部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重 M
。
给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入描述
第一行两个数字 m
、n
,分别代表自行车限重,部门总人数。
第二行,n
个数字,代表每个人的体重,体重都小于等于自行车限重 m
。
0 < m <= 200
0 < n <= 1000000
输出描述
最小需要的双人自行车数量。
用例
用例 1
输入:
3 4
3 2 2 1
输出:
3
说明:
无
解题思路
- 排序:首先将所有人的体重从小到大排序。
- 双指针:使用双指针方法,一个指针指向最轻的人,一个指针指向最重的人。
- 配对:尝试将最轻的人和最重的人配对,如果他们的体重之和不超过自行车的限重
M
,则将他们配对,否则最重的人单独占用一辆自行车。 - 移动指针:每次配对成功后,移动两个指针,继续尝试下一对。
- 计数:统计需要的自行车数量。
核心思路
- 排序:首先将所有人的体重按升序排序。
- 处理超重个体:如果某个人的体重已经大于等于
m
,则他必须单独乘坐一辆车。 - 双指针组合:对于剩余的人,使用双指针从两端向中间遍历,尝试将最小体重和最大体重的人组合在一起。
- 分配车辆:
- 如果两人体重之和小于等于
m
,则可以共享一辆车。 - 如果两人体重之和大于
m
,则只能让较大体重的人单独乘坐一辆车。
- 如果两人体重之和小于等于
- 处理剩余个体:如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车。
详细步骤
-
排序:
- 将所有人的体重按升序排序,方便后续处理。
-
处理超重个体:
- 检查排序后的体重数组,从最大体重开始:
- 如果某个人的体重大于等于
m
,则他必须单独乘坐一辆车。 - 将这个人从数组中移除,并增加车辆计数
count++
。
- 如果某个人的体重大于等于
- 重复上述步骤,直到最大体重小于
m
。
- 检查排序后的体重数组,从最大体重开始:
-
双指针组合:
- 初始化两个指针:
i
指向最小体重(数组开头)。j
指向最大体重(数组末尾)。
- 循环遍历数组:
- 如果
arr[i] + arr[j] <= m
,则两人可以共享一辆车,增加车辆计数count++
,并移动指针i++
和j--
。 - 如果
arr[i] + arr[j] > m
,则较大体重的人必须单独乘坐一辆车,增加车辆计数count++
,并移动指针j--
。
- 如果
- 初始化两个指针:
-
处理剩余个体:
- 如果最后
i === j
,说明还有一个人未分配车辆,需要单独为他分配一辆车,增加车辆计数count++
。
- 如果最后
-
输出结果:
- 最终的
count
就是所需的最少车辆数。
- 最终的
示例
假设有以下输入:
- 体重数组:
[50, 60, 70, 80, 90]
- 车辆载重限制:
m = 150
步骤解析:
- 排序:
[50, 60, 70, 80, 90]
(已经是升序)。 - 处理超重个体:
- 最大体重
90 < 150
,无需处理。
- 最大体重
- 双指针组合:
i = 0
(50),j = 4
(90):50 + 90 = 140 <= 150
,可以共享一辆车,count++
,移动指针i++
和j--
。
i = 1
(60),j = 3
(80):60 + 80 = 140 <= 150
,可以共享一辆车,count++
,移动指针i++
和j--
。
i = 2
(70),j = 2
(70):i === j
,说明还有一个人未分配车辆,需要单独为他分配一辆车,count++
。
- 输出结果:
- 最少需要
3
辆车。
- 最少需要
总结
- 时间复杂度:排序的时间复杂度为
O(n log n)
,双指针遍历的时间复杂度为O(n)
,总时间复杂度为O(n log n)
。 - 空间复杂度:排序需要
O(n)
的额外空间(如果使用原地排序则为O(1)
)。 - 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。
如果有其他问题,欢迎随时提问!
二、JavaScript算法源码
以下是带有 详细中文注释 和 逻辑讲解 的 JavaScript 代码:
代码实现
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});const lines = [];
rl.on("line", (line) => {lines.push(line);// 当输入行数为 2 时,表示输入完成if (lines.length === 2) {// 解析输入const [m, n] = lines[0].split(" ").map(Number); // 车辆载重限制 m,人数 nconst arr = lines[1].split(" ").map(Number); // 每个人的体重数组// 调用算法并输出结果console.log(getResult(arr, m, n));// 清空输入缓存lines.length = 0;}
});/*** 计算最少需要的车辆数* @param {number[]} arr 每个人的体重数组* @param {number} m 车辆载重限制* @param {number} n 人数* @returns {number} 最少需要的车辆数*/
function getResult(arr, m, n) {// 将体重数组按升序排序arr.sort((a, b) => a - b);let count = 0; // 车辆计数// 双指针初始化let i = 0; // 指向最小体重let j = arr.length - 1; // 指向最大体重// 双指针遍历while (i < j) {// 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车if (arr[i] + arr[j] <= m) {i++; // 移动最小体重指针}j--; // 移动最大体重指针count++; // 无论是否共享,都需要一辆车}// 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车if (i === j) count++;return count;
}
代码逻辑讲解
1. 输入处理
- 使用
readline
模块从控制台读取输入。 - 第一行输入为车辆载重限制
m
和人数n
。 - 第二行输入为每个人的体重数组
arr
。
2. 排序
- 将体重数组
arr
按升序排序,方便后续双指针操作。 - 排序后,最小体重在数组开头,最大体重在数组末尾。
3. 双指针逻辑
- 初始化两个指针:
i
指向最小体重(数组开头)。j
指向最大体重(数组末尾)。
- 循环遍历数组:
- 如果
arr[i] + arr[j] <= m
,说明两人可以共享一辆车:- 移动最小体重指针
i++
。 - 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 移动最小体重指针
- 如果
arr[i] + arr[j] > m
,说明两人无法共享一辆车:- 只能让较大体重的人单独乘坐一辆车。
- 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 如果
4. 处理剩余个体
- 如果最后
i === j
,说明还有一个人未分配车辆:- 需要单独为他分配一辆车。
- 增加车辆计数
count++
。
5. 返回结果
- 最终的
count
就是所需的最少车辆数。
示例分析
输入
150 5
50 60 70 80 90
步骤解析
- 排序:
- 体重数组排序后为
[50, 60, 70, 80, 90]
。
- 体重数组排序后为
- 双指针遍历:
i = 0
(50),j = 4
(90):50 + 90 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 1
)。
i = 1
(60),j = 3
(80):60 + 80 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 2
)。
i = 2
(70),j = 2
(70):i === j
,说明还有一个人未分配车辆。- 需要单独为他分配一辆车。
- 车辆计数
count++
(count = 3
)。
- 输出结果:
- 最少需要
3
辆车。
- 最少需要
总结
- 时间复杂度:排序的时间复杂度为
O(n log n)
,双指针遍历的时间复杂度为O(n)
,总时间复杂度为O(n log n)
。 - 空间复杂度:排序需要
O(n)
的额外空间(如果使用原地排序则为O(1)
)。 - 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。
如果有其他问题,欢迎随时提问!
三、Java算法源码
以下是带有 详细中文注释 和 逻辑讲解 的 Java 代码:
代码实现
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建 Scanner 对象,用于读取输入Scanner sc = new Scanner(System.in);// 读取车辆载重限制 m 和人数 nint m = sc.nextInt();int n = sc.nextInt();// 读取每个人的体重,并存储到数组 arr 中int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = sc.nextInt();}// 调用算法并输出结果System.out.println(getResult(arr, m));}/*** 计算最少需要的车辆数* @param arr 每个人的体重数组* @param m 车辆载重限制* @return 最少需要的车辆数*/public static int getResult(int[] arr, int m) {// 将体重数组按升序排序Arrays.sort(arr);int count = 0; // 车辆计数// 双指针初始化int i = 0; // 指向最小体重int j = arr.length - 1; // 指向最大体重// 双指针遍历while (i < j) {// 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车if (arr[i] + arr[j] <= m) {i++; // 移动最小体重指针}j--; // 移动最大体重指针count++; // 无论是否共享,都需要一辆车}// 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车if (i == j) count++;return count;}
}
代码逻辑讲解
1. 输入处理
- 使用
Scanner
从控制台读取输入。 - 第一行输入为车辆载重限制
m
和人数n
。 - 第二行输入为每个人的体重数组
arr
。
2. 排序
- 使用
Arrays.sort()
将体重数组arr
按升序排序,方便后续双指针操作。 - 排序后,最小体重在数组开头,最大体重在数组末尾。
3. 双指针逻辑
- 初始化两个指针:
i
指向最小体重(数组开头)。j
指向最大体重(数组末尾)。
- 循环遍历数组:
- 如果
arr[i] + arr[j] <= m
,说明两人可以共享一辆车:- 移动最小体重指针
i++
。 - 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 移动最小体重指针
- 如果
arr[i] + arr[j] > m
,说明两人无法共享一辆车:- 只能让较大体重的人单独乘坐一辆车。
- 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 如果
4. 处理剩余个体
- 如果最后
i == j
,说明还有一个人未分配车辆:- 需要单独为他分配一辆车。
- 增加车辆计数
count++
。
5. 返回结果
- 最终的
count
就是所需的最少车辆数。
示例分析
输入
150 5
50 60 70 80 90
步骤解析
- 排序:
- 体重数组排序后为
[50, 60, 70, 80, 90]
。
- 体重数组排序后为
- 双指针遍历:
i = 0
(50),j = 4
(90):50 + 90 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 1
)。
i = 1
(60),j = 3
(80):60 + 80 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 2
)。
i = 2
(70),j = 2
(70):i == j
,说明还有一个人未分配车辆。- 需要单独为他分配一辆车。
- 车辆计数
count++
(count = 3
)。
- 输出结果:
- 最少需要
3
辆车。
- 最少需要
总结
- 时间复杂度:排序的时间复杂度为
O(n log n)
,双指针遍历的时间复杂度为O(n)
,总时间复杂度为O(n log n)
。 - 空间复杂度:排序需要
O(n)
的额外空间(如果使用原地排序则为O(1)
)。 - 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。
如果有其他问题,欢迎随时提问!
四、Python算法源码
以下是带有 详细中文注释 和 逻辑讲解 的 Python 代码:
代码实现
# 输入获取
m, n = map(int, input().split()) # 读取车辆载重限制 m 和人数 n
arr = list(map(int, input().split())) # 读取每个人的体重,并存储到列表 arr 中# 算法入口
def getResult(arr, m, n):arr.sort() # 将体重列表按升序排序count = 0 # 车辆计数i = 0 # 指向最小体重j = n - 1 # 指向最大体重# 双指针遍历while i < j:# 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车if arr[i] + arr[j] <= m:i += 1 # 移动最小体重指针j -= 1 # 移动最大体重指针count += 1 # 无论是否共享,都需要一辆车# 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车if i == j:count += 1return count # 返回最少需要的车辆数# 算法调用
print(getResult(arr, m, n))
代码逻辑讲解
1. 输入处理
- 使用
input().split()
从控制台读取输入。 - 第一行输入为车辆载重限制
m
和人数n
。 - 第二行输入为每个人的体重列表
arr
。
2. 排序
- 使用
arr.sort()
将体重列表arr
按升序排序,方便后续双指针操作。 - 排序后,最小体重在列表开头,最大体重在列表末尾。
3. 双指针逻辑
- 初始化两个指针:
i
指向最小体重(列表开头)。j
指向最大体重(列表末尾)。
- 循环遍历列表:
- 如果
arr[i] + arr[j] <= m
,说明两人可以共享一辆车:- 移动最小体重指针
i += 1
。 - 移动最大体重指针
j -= 1
。 - 增加车辆计数
count += 1
。
- 移动最小体重指针
- 如果
arr[i] + arr[j] > m
,说明两人无法共享一辆车:- 只能让较大体重的人单独乘坐一辆车。
- 移动最大体重指针
j -= 1
。 - 增加车辆计数
count += 1
。
- 如果
4. 处理剩余个体
- 如果最后
i == j
,说明还有一个人未分配车辆:- 需要单独为他分配一辆车。
- 增加车辆计数
count += 1
。
5. 返回结果
- 最终的
count
就是所需的最少车辆数。
示例分析
输入
150 5
50 60 70 80 90
步骤解析
- 排序:
- 体重列表排序后为
[50, 60, 70, 80, 90]
。
- 体重列表排序后为
- 双指针遍历:
i = 0
(50),j = 4
(90):50 + 90 = 140 <= 150
,可以共享一辆车。- 移动指针
i += 1
和j -= 1
。 - 车辆计数
count += 1
(count = 1
)。
i = 1
(60),j = 3
(80):60 + 80 = 140 <= 150
,可以共享一辆车。- 移动指针
i += 1
和j -= 1
。 - 车辆计数
count += 1
(count = 2
)。
i = 2
(70),j = 2
(70):i == j
,说明还有一个人未分配车辆。- 需要单独为他分配一辆车。
- 车辆计数
count += 1
(count = 3
)。
- 输出结果:
- 最少需要
3
辆车。
- 最少需要
总结
- 时间复杂度:排序的时间复杂度为
O(n log n)
,双指针遍历的时间复杂度为O(n)
,总时间复杂度为O(n log n)
。 - 空间复杂度:排序需要
O(n)
的额外空间(如果使用原地排序则为O(1)
)。 - 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。
如果有其他问题,欢迎随时提问!
五、C/C++算法源码:
以下是 C++ 实现 的代码,带有 详细中文注释 和 逻辑讲解:
C++ 代码实现
#include <iostream>
#include <vector>
#include <algorithm> // 用于 sort 函数
using namespace std;// 算法入口
int getResult(vector<int>& arr, int m, int n) {sort(arr.begin(), arr.end()); // 将体重列表按升序排序int count = 0; // 车辆计数int i = 0; // 指向最小体重int j = n - 1; // 指向最大体重// 双指针遍历while (i < j) {// 如果最小体重和最大体重的和小于等于 m,则可以共享一辆车if (arr[i] + arr[j] <= m) {i++; // 移动最小体重指针}j--; // 移动最大体重指针count++; // 无论是否共享,都需要一辆车}// 如果最后剩下一个人未分配车辆,则需要单独为他分配一辆车if (i == j) {count++;}return count; // 返回最少需要的车辆数
}int main() {int m, n;cin >> m >> n; // 读取车辆载重限制 m 和人数 nvector<int> arr(n); // 定义存储体重的数组for (int i = 0; i < n; i++) {cin >> arr[i]; // 读取每个人的体重}// 调用算法并输出结果cout << getResult(arr, m, n) << endl;return 0;
}
代码逻辑讲解
1. 输入处理
- 使用
cin
从控制台读取输入。 - 第一行输入为车辆载重限制
m
和人数n
。 - 第二行输入为每个人的体重,存储到
vector<int> arr
中。
2. 排序
- 使用
sort(arr.begin(), arr.end())
将体重列表arr
按升序排序。 - 排序后,最小体重在列表开头,最大体重在列表末尾。
3. 双指针逻辑
- 初始化两个指针:
i
指向最小体重(列表开头)。j
指向最大体重(列表末尾)。
- 循环遍历列表:
- 如果
arr[i] + arr[j] <= m
,说明两人可以共享一辆车:- 移动最小体重指针
i++
。 - 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 移动最小体重指针
- 如果
arr[i] + arr[j] > m
,说明两人无法共享一辆车:- 只能让较大体重的人单独乘坐一辆车。
- 移动最大体重指针
j--
。 - 增加车辆计数
count++
。
- 如果
4. 处理剩余个体
- 如果最后
i == j
,说明还有一个人未分配车辆:- 需要单独为他分配一辆车。
- 增加车辆计数
count++
。
5. 返回结果
- 最终的
count
就是所需的最少车辆数。
示例分析
输入
150 5
50 60 70 80 90
步骤解析
- 排序:
- 体重列表排序后为
[50, 60, 70, 80, 90]
。
- 体重列表排序后为
- 双指针遍历:
i = 0
(50),j = 4
(90):50 + 90 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 1
)。
i = 1
(60),j = 3
(80):60 + 80 = 140 <= 150
,可以共享一辆车。- 移动指针
i++
和j--
。 - 车辆计数
count++
(count = 2
)。
i = 2
(70),j = 2
(70):i == j
,说明还有一个人未分配车辆。- 需要单独为他分配一辆车。
- 车辆计数
count++
(count = 3
)。
- 输出结果:
- 最少需要
3
辆车。
- 最少需要
总结
- 时间复杂度:排序的时间复杂度为
O(n log n)
,双指针遍历的时间复杂度为O(n)
,总时间复杂度为O(n log n)
。 - 空间复杂度:排序需要
O(n)
的额外空间(如果使用原地排序则为O(1)
)。 - 核心思想:通过排序和双指针,尽可能组合出两人组,减少车辆使用。
如果有其他问题,欢迎随时提问!
相关文章:
【2024年华为OD机试】 (A卷,100分)- 租车骑绿岛(Java JS PythonC/C++)
一、问题描述 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重 M。 给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入描述 第一行两个数字 m、n,分别代表自行车限重&#…...
Solidity入门: 函数
函数 Solidity语言的函数非常灵活,可以进行各种复杂操作。在本教程中,我们将会概述函数的基础概念,并通过一些示例演示如何使用函数。 我们先看一下 Solidity 中函数的形式: function <function name>(<parameter types>) {in…...
1、docker概念和基本使用命令
docker概念 微服务:不再是以完整的物理机为基础的服务软件,而是借助于宿主机的性能。以小量的形式,单独部署的应用。 docker:是一个开源的应用容器引擎,基于go语言开发的,使用时apache2.0的协议。docker是…...
【Python】深入Python元类:动态生成类与对象的艺术
在Python中,元类(Metaclass)是一个强大且高级的特性,允许开发者在类创建时控制其行为与属性。通过元类,开发者可以动态生成类和对象,实现自定义的类行为,进而增强代码的灵活性和可扩展性。本文将…...
数字孪生可视化在各个行业的应用场景
数字孪生技术,作为新一代信息技术的集大成者,正在深刻改变着我们对物理世界的认知和管理方式。本文将探讨数字孪生可视化在不同行业的应用场景,以及它们如何赋能行业数字化转型。 1. 智慧城市与交通 在智慧城市领域,数字孪生技术…...
CES Asia 2025科技盛宴,AI智能体成焦点
2025第七届亚洲消费电子技术展(CES Asia赛逸展)将在北京拉开帷幕,AI智能体有望成为展会的核心亮点。 深圳市人工智能行业协会发文表示全力支持CES Asia 2025(赛逸展),称其为人工智能领域的创新发展提供了强…...
【第04阶段-机器学习深度学习篇-1-深度学习基础-深度学习介绍】
1 深度学习概念 深度学习是基于机器学习延伸出来的一个新的领域,由以人大脑结构为启发的神经网络算法为起源加之模型结构深度的增加发展,并伴随大数据和计算能力的提高而产生的一系列新的算法。 2 深度学习发展 其概念由著名科学家Geoffrey Hinton等人…...
android framework.jar 在应用中使用
在开发APP中,有时会使用系统提供的framework.jar 来替代 android.jar, 在gradle中配置如下: 放置framework.jar 依赖配置 3 优先级配置 gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspat…...
带格式 pdf 翻译
支持 openAI 接口,国内 deepseek 接口兼容 openAI 接口, deepseek api 又非常便宜 https://pdf2zh.com/ https://github.com/Byaidu/PDFMathTranslate...
Flutter项目适配鸿蒙
Flutter项目适配鸿蒙 前言Flutter项目适配鸿蒙新工程直接支持ohos构建新项目编译运行 适配已有的Flutter项目 前言 目前市面上使用Flutter技术站的app不在少数,对于Flutter的项目,可能更多的是想直接兼容Harmonyos,而不是直接在重新开发一个…...
轻量自高斯注意力机制LSGAttention模型详解及代码复现
模型背景 近年来,卷积神经网络(CNN)在高光谱图像分类领域取得了显著进展。然而,CNN面临 长距离关系建模 和 计算成本 增加的挑战。为解决这些问题,研究人员提出了基于 轻量自高斯注意(Light Self-Gaussian-Attention, LSGA) 机制的视觉转换器(Vision Transformer, VIT),旨…...
vue事件对象$event
事件参数可以获取event对象和通过事件传递数据 获取 event 对象 <template><h1>Hello world</h1><button click"addCount">Add</button><p>{{ count }}</p> </template> <script>export default{data(){ret…...
PyCharm文档管理
背景:使用PyCharmgit做文档管理 需求:需要PyCharm自动识别docx/xslx/vsdx等文件类型,并在PyCharm内点击文档时唤起系统内关联应用(如word、excel、visio) 设置步骤: 1、file -》 settings -》file types 2、在Files opened i…...
Windows下调试Dify相关组件(2)--后端Api
1.部署依赖的服务(代码最外层的docker目录) 1.1 将middleware.env.example复制,并改名为middleware.env。 1.2 查看docker-compose.middleware.yaml,有5个服务 db:postgres数据库。 redis:redis缓存。 sa…...
Flask----前后端不分离-登录
文章目录 扩展模块flask-wtf 的简单使用定义用户数据模型flask-login完成用户登录 扩展模块 flask-sqlalchmy,连接数据库flask-login,处理用户的登录,认证flask-session,会话保持,默认对用户数据加密,存储…...
Group3r:一款针对活动目录组策略安全的漏洞检测工具
关于Group3r Group3r是一款针对活动目录组策略安全的漏洞检测工具,可以帮助广大安全研究人员迅速枚举目标AD组策略中的相关配置,并识别其中的潜在安全威胁。 Group3r专为红蓝队研究人员和渗透测试人员设计,该工具可以通过将 LDAP 与域控制器…...
ElasticSearch 认识和安装ES
文章目录 一、为什么学ElasticSearch?1.ElasticSearch 简介2.ElasticSearch 与传统数据库的对比3.ElasticSearch 应用场景4.ElasticSearch 技术特点5.ElasticSearch 市场表现6.ElasticSearch 的发展 二、认识和安装ES1.认识 Elasticsearch(简称 ES)2.El…...
CNN Test Data
由于数据量过大,打不开了 搞一组小的吧。收工睡觉 https://download.csdn.net/download/spencer_tseng/90256048...
git 转移文件夹
打开终端或命令行界面:首先,确保你的电脑上安装了 Git,并打开终端或命令行界面。 导航到你的仓库目录:使用 cd 命令来切换到包含你想要移动文件夹的仓库的目录。 cd /path/to/your/repository使用 git mv 命令移动文件夹&#x…...
计算机网络学习
网络安全:前端开发者必知:Web安全威胁——XSS与CSRF攻击及其防范-CSDN博客 三次握手四次挥手:前端网络---三次握手四次挥手_前端三次握手-CSDN博客 http协议和https协议的区别:前端网络---http协议和https协议的区别-CSDN博客 …...
Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例
Android车机DIY开发之学习篇(二)编译Kernel以正点原子为例 1.代码在/kernel-5.10文件夹下 2.在kernel-5.10目录下执行如下命令编译 : 编译之前,需要将 clang 导出到 PATH 环境变量: 如果是 Android12 执行下面这条命令 export PATH../pr…...
Java线程的异常处理:确保线程安全运行
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...
vite5.x配置https
旧版的vite直接在config里面配置https:true即可,新版的麻烦一些。 1.准备工作 需要安装openssl 下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 找到合适的版本安装,配置好环境变量&#x…...
地下苹果(马铃薯)怎么破局?
地下苹果(马铃薯)怎么破局? 原创萨辣米哎青年杂说youth 地下苹果(马铃薯)怎么破局?https://mp.weixin.qq.com/s/zU-9pnVWxDn72D6yx5CViA 1.前言 马铃薯是重要的粮菜兼用和工业原料作物,由于其…...
ceph fs status 输出详解
ceph fs status 命令用于显示 Ceph 文件系统的状态信息,其中各列的含义如下: RANK:元数据服务器(MDS)的等级或标识符。 STATE:MDS 的当前状态,例如 active(活跃)、stan…...
phpenc加密程序源码
免费扩展加密程序,类似于sg11加密,支持单个PHP(免费)文件以及批量PHP文件(ZIP压缩包格式)源码加密的保护平台,加密后的源码文件保持原有代码结构,可以跨平台运行,可以运行…...
深入探秘 ZooKeeper:架构、设计、角色与 ZNode 全解析 前言
1.ZooKeeper 分布式锁怎么实现的? ZooKeeper 是一个高效的分布式协调服务,常用于实现分布式系统中的配置管理、命名服务、分布式锁等。下面简要介绍如何使用 ZooKeeper 实现分布式锁。 分布式锁的特性 在讨论如何实现之前,先了解分布式锁应…...
计算机图形学【绘制立方体和正六边形】
工具介绍 OpenGL:一个跨语言的图形API,用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT:OpenGL的一个工具库,简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…...
日志模块和Plus模块升级以及问题修复
文章目录 1.common-log4j2-starter1.目录2.LogAspectProperties.java 日志切面配置3.TraceProperties.java 链路追踪配置4.Log4j2AutoConfiguration.java 条件注入链路追踪过滤器 2.common-mybatis-plus-starter1.目录2.引入依赖3.SqlBeautyProperties.java 读取sql.beauty相关…...
【Bug】报错信息:Required request body is missing(包含五种详细解决方案)
大家好,我是摇光~ 遇到“Required request body is missing”错误通常意味着服务器期望在HTTP请求中包含一个请求体(body),但是实际上并没有收到。 例如: 当你在使用网页或应用程序的后台(比如一个网站或手…...
Ceph分布式存储集群,不仅仅是一个简单的对象存储解决方案
Ceph 作为 OpenStack 的存储后端 块存储(Cinder 后端) Ceph 的 RBD(RADOS Block Device)模块作为 OpenStack Cinder 服务的后端,为虚拟机提供块级别的存储资源。RBD 支持快照、克隆和恢复等功能,能够满足虚…...
6.business english--updates
能够运用一系列表达方式来提供和接收最新情况,并讨论后续行动事项。 be able to use a range of expression to give and receive updates and to discuss follow-up action items in a typical week 在平常的一周里 The company promises that the quality will …...
Lianwei 安全周报|2024.1.7
以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 国家发改委等三部门印发《国家数据基础设施建设指引》 国家数据基础设施是从数据…...
加速科技荣获“浙江省企业研究院”认定
近日,浙江省经济和信息化厅公布“2024年认定(备案)省级企业研发机构名单”。经过多轮严格评审和公示,加速科技荣获“省企业研究院”认定。这是加速科技继获国家级专精特新“小巨人”企业认定荣誉后的又一里程碑。 “浙江省企业研究…...
嵌入式C语言:什么是指针?
目录 一、指针的基本概念 1.1. 定义指针 1.2. 赋值给指针 1.3. 解引用指针 1.4. 指针运算 1.5. 空指针 1.6. 函数参数 1.7. 数组和指针 1.8. 示例代码 二、指针在内存中的表示 2.1. 内存地址存储 2.2. 内存模型 2.3. 指针与硬件交互 2.4. 示例代码 三 、指针的重…...
Python 管理 GitHub Secrets 和 Workflows
在现代软件开发中,自动化配置管理变得越来越重要。本文将介绍如何使用 Python 脚本来管理 GitHub 仓库的 Secrets 和 Workflows,这对于需要频繁更新配置或管理多个仓库的团队来说尤为有用。我们将分三个部分进行讨论:设置 GitHub 权限、创建 GitHub Secret 和创建 GitHub Wo…...
wireshark排除私接小路由
1.wireshark打开,发现了可疑地址,合法的地址段DHCP是192.168.100.0段的,打开后查看发现可疑地址段,分别是,192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…...
Vue3初学之Element-plus
用于快速的上手开发,以做项目为导向,所以借用element-plus插件 发现淘宝的镜像有时候也是很慢的,还可以换个 npm config set registry https://registry.npmmirror.com 安装element-plus npm install element-plus --save 查看安装是否成…...
day06_Spark SQL
文章目录 day06_Spark SQL课程笔记一、今日课程内容二、DataFrame详解(掌握)5.清洗相关的API6.Spark SQL的Shuffle分区设置7.数据写出操作写出到文件写出到数据库 三、Spark SQL的综合案例(掌握)1、常见DSL代码整理2、电影分析案例…...
苍穹外卖07——来单提醒和客户催单(涉及SpringTask、WebSocket协议、苍穹外卖跳过微信支付同时保证可以收到订单功能)
Spring Task介绍 应用场景: 信用卡每月还款提醒银行贷款每月还款提醒火车票销售系统处理未付款订单入职纪念日为用户发送通知 cron表达式 cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间。 构成规则:分为6或7个域&…...
IDEA的常用设置
目录 一、显示顶部工具栏 二、设置编辑区字体按住鼠标滚轮变大变小(看需要设置) 三、设置自动导包和优化导入的包(有的时候还是需要手动导包) 四、设置导入同一个包下的类,超过指定个数的时候,合并为*&a…...
【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则
在 Go 语言中,字符串的比较是基于字典顺序进行的。 字典顺序的比较规则: 比较两个字符串从左到右逐个字符的Unicode码点值, 若比较结果不相等则将此结果作为字符串大小的结果, 若比较结果相等则比较下一位, 若其中一个…...
3d打印材料是塑料么?pla petg
3D 打印材料不仅限于塑料,但塑料确实是最常见的材料类型之一。以下是一些常用的3D打印塑料材料的介绍: 1. PLA(聚乳酸) • 特点:可生物降解,环保,容易打印,表面光滑。 • 适用…...
HTML5 语义元素:网页构建的新时代
HTML5 语义元素:网页构建的新时代 HTML5,作为网页开发的新标准,引入了一系列语义元素,这些元素不仅为网页内容提供了明确的含义,还极大地提高了网页的可访问性和搜索引擎优化(SEO)效果。本文将…...
下载导出Tomcat上的excle文档,浏览器上显示下载
目录 1.前端2.Tomcat服务器内配置3.在Tomcat映射的文件内放置文件4.重启Tomcat,下载测试 1.前端 function downloadFile() {let pictureSourceServer "http://192.168.1.1:8080/downFile/";let fileName "测试文档.xlsx";let fileURL pictu…...
Edge浏览器内置的截长图功能
Edge浏览器内置截图功能 近年来,Edge浏览器不断更新和完善,也提供了长截图功能。在Edge中,只需点击右上角的“...”,然后选择“网页捕获”->“捕获整页”,即可实现长截图。这一功能的简单易用,使其成为…...
【测试】持续集成CI/CD
近期更新完毕,建议关注收藏点赞~ 目录 概括gitJenkinspostman集成jenkins代码集成jenkins 概括 CI/CD stands for Continuous Integration and Continuous Deployment 定义 团队成果持续集成到公共平台。一天可以集成1次or多次 本地代码管理 git 远程代…...
大数据数据治理精讲
前言 首先明确,数据治理是一个很大的概念。 在许多与数据相关的文章中,我们经常能看到“数据治理”这一术语。从字面意思来看,它主要强调对数据进行有效管理。作为数据基础支撑工作的一部分,数据治理的重要性不言而喻。在日常工作…...
Spring Boot项目中增加MQTT对接
在Spring Boot项目中增加MQTT对接,通常涉及以下几个步骤: 一、搭建MQTT服务器 首先,你需要搭建一个MQTT服务器(Broker)。这可以通过多种方式实现,例如使用Docker来部署EMQX或Mosquitto等MQTT Broker。 以…...
Python自学 - 类进阶(迭代器)
<< 返回目录 1 Python自学 - 类进阶(迭代器) 迭代器是一个实现了 __iter__ 和 __next__ 方法的对象。实现这两个方法是Python迭代行为一种约定。 为什么要用迭代器?迭代器的好处是不占内存,它并不会像列表一样,把每个成员都占满。…...