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

【2024年华为OD机试】 (A卷,100分)- 对称美学(Java JS PythonC/C++)

在这里插入图片描述

一、问题描述

题目描述

对称就是最大的美学,现有一道关于对称字符串的美学。已知:

  • 第1个字符串:R
  • 第2个字符串:BR
  • 第3个字符串:RBBR
  • 第4个字符串:BRRBRBBR
  • 第5个字符串:RBBRBRRBBRRBRBBR

相信你已经发现规律了,没错!就是第 i 个字符串 = 第 i - 1 号字符串取反 + 第 i - 1 号字符串;

  • 取反(R->B, B->R);

现在告诉你 nk,让你求得第 n 个字符串的第 k 个字符是多少。(k的编号从0开始)

输入描述

第一行输入一个 T,表示有 T 组用例;

接下来输入 T 行,每行输入两个数字,表示 nk

  • 1 ≤ T ≤ 100;
  • 1 ≤ n ≤ 64;
  • 0 ≤ k < 2^(n-1);

输出描述

输出 T 行表示答案;

  • 输出 “blue” 表示字符是 B;
  • 输出 “red” 表示字符是 R。

备注

  • 输出字符串区分大小写,请注意输出小写字符串,不带双引号。

用例

用例 1

输入:

5
1 0
2 1
3 2
4 6
5 8

输出:

red
red
blue
blue
blue

说明:

  • 第 1 个字符串:R -> 第 0 个字符为 R
  • 第 2 个字符串:BR -> 第 1 个字符为 R
  • 第 3 个字符串:RBBR -> 第 2 个字符为 B
  • 第 4 个字符串:BRRBRBBR -> 第 6 个字符为 B
  • 第 5 个字符串:RBBRBRRBBRRBRBBR -> 第 8 个字符为 B
用例 2

输入:

1
64 73709551616

输出:

red

说明:

解题思路

  1. 规律分析:第 i 个字符串的长度是 2^(i-1)。第 i 个字符串可以看作是第 i-1 个字符串取反后拼接第 i-1 个字符串。
  2. 递归关系:如果 k 小于第 i-1 个字符串的长度,那么第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k 个字符相同。如果 k 大于等于第 i-1 个字符串的长度,那么第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k - 2^(i-2) 个字符取反。
  3. 递归终止条件:当 n 为 1 时,第 0 个字符为 R。

在这里插入图片描述

问题分析与规律探索

从题目描述和示例中,我们可以观察到字符串的生成规律。每个新的字符串都是由前一个字符串取反后拼接前一个字符串本身得到的。这个过程可以递归地进行,直到我们到达第一个字符串 “R”。

规律总结
  1. 递归定义

    • n 个字符串的长度是 2^(n-1)
    • n 个字符串 = 第 n-1 个字符串取反 + 第 n-1 个字符串。
  2. 递归终止条件

    • n = 1 时,字符串为 “R”。
  3. 递归关系

    • 如果 k < 2^(n-2),则第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k 个字符相同。
    • 如果 k >= 2^(n-2),则第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k - 2^(n-2) 个字符取反。

递归解法

我们可以利用递归关系,通过递归调用逐步减少 nk,直到 n 为 1 时,直接返回结果。

在这里插入图片描述
好的,我们来详细解释这个规律,不使用代码。

规律解释

  1. 字符串生成规律

    • 第1个字符串:R
    • 第2个字符串:BR
    • 第3个字符串:RBBR
    • 第4个字符串:BRRBRBBR
    • 第5个字符串:RBBRBRRBBRRBRBBR
    • 第6个字符串:BRRBBRRBRBBRBRBBRBRRBBRRBRBBR
  2. 观察规律

    • 每个字符串的长度是 2^(n-1)
    • 每个字符串可以分为两部分:
      • 前半部分是前一个字符串取反。
      • 后半部分是前一个字符串本身。
  3. 递归关系

    • 如果 k 位于第 n 个字符串的前半部分(即 k < 2^(n-2)),那么第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k 个字符取反。
    • 如果 k 位于第 n 个字符串的后半部分(即 k >= 2^(n-2)),那么第 n 个字符串的第 k 个字符与第 n-1 个字符串的第 k - 2^(n-2) 个字符相同。
  4. 递归终止条件

    • n = 1 时,字符串为 R,第 0 个字符为 R
    • n = 2 时,字符串为 BR,第 0 个字符为 B,第 1 个字符为 R

详细步骤

  1. 确定 k 位于前半部分还是后半部分

    • 计算 mid = 2^(n-2)
    • 如果 k < mid,则 k 位于前半部分。
    • 如果 k >= mid,则 k 位于后半部分。
  2. 递归处理

    • 如果 k 位于前半部分:
      • 递归调用 get(n-1, k),并将结果取反。
    • 如果 k 位于后半部分:
      • 递归调用 get(n-1, k - mid),结果不变。
  3. 递归终止

    • n = 1 时,返回 R
    • n = 2 时,根据 k 的值返回 BR

用例解释

用例 1
  • 输入:1 0

    • 第1个字符串:R
    • 第0个字符:R -> 输出 red
  • 输入:2 1

    • 第2个字符串:BR
    • 第1个字符:R -> 输出 red
  • 输入:3 2

    • 第3个字符串:RBBR
    • 第2个字符:B -> 输出 blue
  • 输入:4 6

    • 第4个字符串:BRRBRBBR
    • 第6个字符:B -> 输出 blue
  • 输入:5 8

    • 第5个字符串:RBBRBRRBBRRBRBBR
    • 第8个字符:B -> 输出 blue
用例 2
  • 输入:64 73709551616
    • 通过递归关系,逐步减少 nk,直到 n 为 1 或 2。
    • 最终确定第 k 个字符为 R -> 输出 red

通过这种方式,我们可以高效地找到第 n 个字符串的第 k 个字符,而不需要生成整个字符串,从而避免了内存溢出的问题。

在这里插入图片描述
可以发现,其实get(n,k),如果k <= 2^(n-2) ,则相当于 get(n-1, k) 的颜色取反。

二、JavaScript算法源码

以下是 JavaScript 代码的详细中文注释和逻辑讲解,重点在于如何处理大数(BigInt)以及递归逻辑的实现:


JavaScript 代码实现

const readline = require("readline");// 创建控制台输入输出接口
const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});// 存储输入行
const lines = [];
let t; // 测试用例的数量// 监听输入事件
rl.on("line", (line) => {lines.push(line); // 将输入行存入数组// 当读取到第一行时,解析测试用例的数量 tif (lines.length === 1) {t = BigInt(lines[0]); // 将 t 转换为 BigInt 类型}// 当读取到所有测试用例时,开始处理if (t && lines.length === Number(t) + 1) {lines.shift(); // 移除第一行(t 的值)const arr = lines.map((line) => line.split(" ").map(BigInt)); // 将每行输入转换为 BigInt 数组getResult(arr); // 调用主逻辑函数lines.length = 0; // 清空输入行数组,准备下一组输入}
});// 主逻辑函数
function getResult(arr) {for (let [n, k] of arr) {console.log(getNK(n, k)); // 对每个测试用例调用 getNK 函数并输出结果}
}// 递归函数,计算第 n 个字符串的第 k 个字符的颜色
function getNK(n, k) {// 如果 n 为 1,直接返回 "red"if (n === 1n) {return "red";}// 如果 n 为 2,根据 k 的值返回 "blue" 或 "red"if (n === 2n) {if (k === 0n) return "blue";else return "red";}// 计算第 n 个字符串的一半长度 halflet half = 1n << (n - 2n); // 1n << (n - 2n) 等价于 2^(n-2)// 如果 k 大于等于 half,递归处理第 n-1 个字符串的第 k - half 个字符if (k >= half) {return getNK(n - 1n, k - half);} else {// 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反return getNK(n - 1n, k) === "red" ? "blue" : "red";}
}

代码讲解

1. 输入处理
  • 使用 readline 模块从控制台读取输入。
  • 第一行是测试用例的数量 t,后续每行是一个测试用例,包含两个值 nk
  • 将输入值转换为 BigInt 类型,以支持大数运算。
2. 主逻辑:getResult 函数
  • 遍历每个测试用例,调用 getNK 函数计算结果并输出。
3. 递归逻辑:getNK 函数
  • 基本情况
    • 如果 n === 1n,直接返回 "red"
    • 如果 n === 2n,根据 k 的值返回 "blue""red"
  • 递归情况
    • 计算第 n 个字符串的一半长度 half,公式为 1n << (n - 2n),即 2^(n-2)
    • 如果 k >= half,递归处理第 n-1 个字符串的第 k - half 个字符。
    • 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反("red""blue""blue""red")。

示例解析

输入
2
3 2
4 5
运行结果
blue
red
  • 解析
    • 对于 n = 3k = 2
      • half = 2^(3-2) = 2
      • k >= half,递归处理 n = 2k = 2 - 2 = 0
      • 对于 n = 2k = 0,返回 "blue"
    • 对于 n = 4k = 5
      • half = 2^(4-2) = 4
      • k >= half,递归处理 n = 3k = 5 - 4 = 1
      • 对于 n = 3k = 1
        • half = 2^(3-2) = 2
        • k < half,递归处理 n = 2k = 1
        • 对于 n = 2k = 1,返回 "red"
        • 取反后返回 "blue"
      • 取反后返回 "red"

总结

  • 该代码通过递归和位运算的方式,高效地计算第 n 个字符串的第 k 个字符的颜色。
  • 使用 BigInt 类型处理大数,确保计算的准确性。
  • 代码逻辑清晰,适用于解决类似递归问题的场景。

如果有其他问题,欢迎随时提问!

三、Java算法源码

以下是 Java 代码的详细中文注释和逻辑讲解,重点在于如何处理大数(long 类型)以及递归逻辑的实现:


Java 代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); // 创建 Scanner 对象,用于读取输入int t = sc.nextInt(); // 读取测试用例的数量 tlong[][] arr = new long[t][2]; // 创建一个二维数组,用于存储每个测试用例的 n 和 kfor (int i = 0; i < t; i++) {arr[i][0] = sc.nextLong(); // 读取 narr[i][1] = sc.nextLong(); // 读取 k}getResult(arr); // 调用主逻辑函数}// 主逻辑函数,处理每个测试用例public static void getResult(long[][] arr) {for (long[] nk : arr) {System.out.println(getNK(nk[0], nk[1])); // 调用 getNK 函数并输出结果}}// 递归函数,计算第 n 个字符串的第 k 个字符的颜色public static String getNK(long n, long k) {// 如果 n 为 1,直接返回 "red"if (n == 1) {return "red";}// 如果 n 为 2,根据 k 的值返回 "blue" 或 "red"if (n == 2) {if (k == 0) return "blue";else return "red";}// 计算第 n 个字符串的一半长度 halflong half = 1L << (n - 2); // 1L << (n - 2) 等价于 2^(n-2)// 如果 k 大于等于 half,递归处理第 n-1 个字符串的第 k - half 个字符if (k >= half) {return getNK(n - 1, k - half);} else {// 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反return "red".equals(getNK(n - 1, k)) ? "blue" : "red";}}
}

代码讲解

1. 输入处理
  • 使用 Scanner 从控制台读取输入。
  • 第一行是测试用例的数量 t,后续每行是一个测试用例,包含两个值 nk
  • 将输入值存储到二维数组 arr 中,arr[i][0] 存储 narr[i][1] 存储 k
2. 主逻辑:getResult 函数
  • 遍历每个测试用例,调用 getNK 函数计算结果并输出。
3. 递归逻辑:getNK 函数
  • 基本情况
    • 如果 n == 1,直接返回 "red"
    • 如果 n == 2,根据 k 的值返回 "blue""red"
  • 递归情况
    • 计算第 n 个字符串的一半长度 half,公式为 1L << (n - 2),即 2^(n-2)
    • 如果 k >= half,递归处理第 n-1 个字符串的第 k - half 个字符。
    • 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反("red""blue""blue""red")。

示例解析

输入
2
3 2
4 5
运行结果
blue
red
  • 解析
    • 对于 n = 3k = 2
      • half = 2^(3-2) = 2
      • k >= half,递归处理 n = 2k = 2 - 2 = 0
      • 对于 n = 2k = 0,返回 "blue"
    • 对于 n = 4k = 5
      • half = 2^(4-2) = 4
      • k >= half,递归处理 n = 3k = 5 - 4 = 1
      • 对于 n = 3k = 1
        • half = 2^(3-2) = 2
        • k < half,递归处理 n = 2k = 1
        • 对于 n = 2k = 1,返回 "red"
        • 取反后返回 "blue"
      • 取反后返回 "red"

总结

  • 该代码通过递归和位运算的方式,高效地计算第 n 个字符串的第 k 个字符的颜色。
  • 使用 long 类型处理大数,确保计算的准确性。
  • 代码逻辑清晰,适用于解决类似递归问题的场景。

如果有其他问题,欢迎随时提问!

四、Python算法源码

以下是 Python 代码的详细中文注释和逻辑讲解,重点在于如何处理大数(Python 支持任意大整数)以及递归逻辑的实现:


Python 代码实现

import math  # 导入 math 模块,用于数学运算# 输入获取
t = int(input())  # 读取测试用例的数量 t
# 读取每个测试用例的 n 和 k,并将其转换为 float 类型(虽然题目中 n 和 k 是整数,但代码中使用了 float)
arr = [list(map(float, input().split())) for i in range(t)]# 算法入口
def getResult(arr):for n, k in arr:  # 遍历每个测试用例print(getNK(n, k))  # 调用 getNK 函数并输出结果# 递归函数,计算第 n 个字符串的第 k 个字符的颜色
def getNK(n, k):# 如果 n 为 1,直接返回 "red"if n == 1:return "red"# 如果 n 为 2,根据 k 的值返回 "blue" 或 "red"if n == 2:if k == 0:return "blue"else:return "red"# 计算第 n 个字符串的一半长度 halfhalf = math.pow(2, n - 2)  # 使用 math.pow 计算 2^(n-2)# 如果 k 大于等于 half,递归处理第 n-1 个字符串的第 k - half 个字符if k >= half:return getNK(n - 1, k - half)else:# 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反return "blue" if getNK(n - 1, k) == "red" else "red"# 调用算法
getResult(arr)

代码讲解

1. 输入处理
  • 使用 input() 函数从控制台读取输入。
  • 第一行是测试用例的数量 t,后续每行是一个测试用例,包含两个值 nk
  • 将输入值存储到列表 arr 中,arr 的每个元素是一个包含 nk 的列表。
2. 主逻辑:getResult 函数
  • 遍历每个测试用例,调用 getNK 函数计算结果并输出。
3. 递归逻辑:getNK 函数
  • 基本情况
    • 如果 n == 1,直接返回 "red"
    • 如果 n == 2,根据 k 的值返回 "blue""red"
  • 递归情况
    • 计算第 n 个字符串的一半长度 half,公式为 math.pow(2, n - 2),即 2^(n-2)
    • 如果 k >= half,递归处理第 n-1 个字符串的第 k - half 个字符。
    • 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反("red""blue""blue""red")。

示例解析

输入
2
3 2
4 5
运行结果
blue
red
  • 解析
    • 对于 n = 3k = 2
      • half = 2^(3-2) = 2
      • k >= half,递归处理 n = 2k = 2 - 2 = 0
      • 对于 n = 2k = 0,返回 "blue"
    • 对于 n = 4k = 5
      • half = 2^(4-2) = 4
      • k >= half,递归处理 n = 3k = 5 - 4 = 1
      • 对于 n = 3k = 1
        • half = 2^(3-2) = 2
        • k < half,递归处理 n = 2k = 1
        • 对于 n = 2k = 1,返回 "red"
        • 取反后返回 "blue"
      • 取反后返回 "red"

总结

  • 该代码通过递归和数学运算的方式,高效地计算第 n 个字符串的第 k 个字符的颜色。
  • Python 支持任意大整数运算,因此无需担心数值溢出问题。
  • 代码逻辑清晰,适用于解决类似递归问题的场景。

如果有其他问题,欢迎随时提问!

五、C/C++算法源码:

以下是 C++ 代码,并附上详细的中文注释和逻辑讲解:


C++ 代码实现

#include <iostream>
#include <vector>
#include <cmath> // 用于 pow 函数using namespace std;// 递归函数,计算第 n 个字符串的第 k 个字符的颜色
string getNK(long long n, long long k) {// 如果 n 为 1,直接返回 "red"if (n == 1) {return "red";}// 如果 n 为 2,根据 k 的值返回 "blue" 或 "red"if (n == 2) {if (k == 0) return "blue";else return "red";}// 计算第 n 个字符串的一半长度 halflong long half = pow(2, n - 2); // 使用 pow 函数计算 2^(n-2)// 如果 k 大于等于 half,递归处理第 n-1 个字符串的第 k - half 个字符if (k >= half) {return getNK(n - 1, k - half);} else {// 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反return (getNK(n - 1, k) == "red") ? "blue" : "red";}
}// 主逻辑函数,处理每个测试用例
void getResult(const vector<vector<long long>>& arr) {for (const auto& nk : arr) {cout << getNK(nk[0], nk[1]) << endl; // 调用 getNK 函数并输出结果}
}int main() {// 输入获取int t;cin >> t; // 读取测试用例的数量 tvector<vector<long long>> arr(t, vector<long long>(2)); // 创建一个二维数组,用于存储每个测试用例的 n 和 kfor (int i = 0; i < t; i++) {cin >> arr[i][0] >> arr[i][1]; // 读取 n 和 k}// 调用算法getResult(arr);return 0;
}

代码讲解

1. 输入处理
  • 使用 cin 从标准输入读取数据。
  • 第一行是测试用例的数量 t,后续每行是一个测试用例,包含两个值 nk
  • 将输入值存储到二维向量 arr 中,arr[i][0] 存储 narr[i][1] 存储 k
2. 主逻辑:getResult 函数
  • 遍历每个测试用例,调用 getNK 函数计算结果并输出。
3. 递归逻辑:getNK 函数
  • 基本情况
    • 如果 n == 1,直接返回 "red"
    • 如果 n == 2,根据 k 的值返回 "blue""red"
  • 递归情况
    • 计算第 n 个字符串的一半长度 half,公式为 pow(2, n - 2),即 2^(n-2)
    • 如果 k >= half,递归处理第 n-1 个字符串的第 k - half 个字符。
    • 否则,递归处理第 n-1 个字符串的第 k 个字符,并根据结果取反("red""blue""blue""red")。

示例解析

输入
2
3 2
4 5
运行结果
blue
red
  • 解析
    • 对于 n = 3k = 2
      • half = 2^(3-2) = 2
      • k >= half,递归处理 n = 2k = 2 - 2 = 0
      • 对于 n = 2k = 0,返回 "blue"
    • 对于 n = 4k = 5
      • half = 2^(4-2) = 4
      • k >= half,递归处理 n = 3k = 5 - 4 = 1
      • 对于 n = 3k = 1
        • half = 2^(3-2) = 2
        • k < half,递归处理 n = 2k = 1
        • 对于 n = 2k = 1,返回 "red"
        • 取反后返回 "blue"
      • 取反后返回 "red"

总结

  • 该代码通过递归和数学运算的方式,高效地计算第 n 个字符串的第 k 个字符的颜色。
  • 使用 long long 类型处理大数,确保计算的准确性。
  • 代码逻辑清晰,适用于解决类似递归问题的场景。

如果有其他问题,欢迎随时提问!

相关文章:

【2024年华为OD机试】 (A卷,100分)- 对称美学(Java JS PythonC/C++)

一、问题描述 题目描述 对称就是最大的美学&#xff0c;现有一道关于对称字符串的美学。已知&#xff1a; 第1个字符串&#xff1a;R第2个字符串&#xff1a;BR第3个字符串&#xff1a;RBBR第4个字符串&#xff1a;BRRBRBBR第5个字符串&#xff1a;RBBRBRRBBRRBRBBR 相信你…...

【教程】数据可视化处理之2024年各省GDP排名预测!

过去的一年里&#xff0c;我国的综合实力显著提升&#xff0c;在新能源汽车、新一代战机、两栖攻击舰、航空航天、芯片电子、装备制造等领域位居全球前列。虽然全国各省市全年的经济数据公布还需要一段时间&#xff0c;但各地的工业发展数据&#xff0c;财政收入数据已大概揭晓…...

Java 将RTF文档转换为Word、PDF、HTML、图片

RTF文档因其跨平台兼容性而广泛使用&#xff0c;但有时在不同的应用场景可能需要特定的文档格式。例如&#xff0c;Word文档适合编辑和协作&#xff0c;PDF文档适合打印和分发&#xff0c;HTML文档适合在线展示&#xff0c;图片格式则适合社交媒体分享。因此我们可能会需要将RT…...

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…...

CAPL语法基础

CAPL语法基础 目录 CAPL语法基础1. 引言2. 数据类型、变量与常量2.1 数据类型2.2 变量2.3 常量2.4 案例1&#xff1a;使用变量和常量计算圆的面积 3. 运算符与表达式3.1 算术运算符3.2 关系运算符3.3 逻辑运算符3.4 位运算符3.5 案例2&#xff1a;使用运算符实现简单的逻辑判断…...

安卓studio生成apk步骤

在写完app之后虽然能在真机上运行 但是在文件夹中找不到相应的apk &#xff0c;注意&#xff01;&#xff01;&#xff01;安卓 studio中可以自动生动生成 apk 下面是生成步骤&#xff1a; 步骤1&#xff1a;build ->make project 步骤2&#xff1a;build ->Generate si…...

Azure主机windows2008就地升级十步

Azure上云主机的windows2008系统需要进行就地升级。 按着微软的升级路径&#xff1a;win2008-->win2012-->win2016-->win2022 第一步&#xff1a;创建快照备份&#xff0c;防止升级失败第二步&#xff1a;升级托管磁盘&#xff0c;在VM管理的地方将磁盘升级成托管磁盘…...

解锁 C# 与 LiteDB 嵌入式 NoSQL 数据库

一、开篇&#xff1a;邂逅 C# 与 LiteDB 新世界 在当今的软件开发领域&#xff0c;数据管理如同建筑的基石&#xff0c;而选择一款合适的数据库则是项目成功与否的关键因素之一。对于 C# 开发者来说&#xff0c;面对琳琅满目的数据库选项&#xff0c;如何抉择常常令人头疼。今…...

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构&#xff0c;然后再介绍世面上常见的产品 我们在大型的复杂的系统下&#xff0c;会有大量的跑批&#xff0c;定时任务的功能&#xff0c;如果在独立的子项目中单独去处理这些任务&#xff0c;随着业务的复杂度的提高…...

七星棋类游戏源码:两百玩法开源修复

这套七星棋类源码&#xff0c;覆盖六大省区&#xff08;湖南双端、湖北、山西、江苏、贵州等&#xff09;&#xff0c;安卓与苹果端都能轻松适配&#xff0c;汇集 6 个端口与 200 多种子游戏玩法。此版本为二次开发修复版&#xff0c;功能完备且源码完全公开&#xff0c;包括乐…...

未来世界:科技引领的奇幻篇章

科技发展的这么快&#xff0c;未来的世界将会是什么样的呢&#xff1f; 在人类历史的长河中&#xff0c;科技始终是推动社会进步的核心力量。从古老的四大发明到如今的人工智能、基因编辑、量子计算等前沿技术&#xff0c;科技发展的速度日新月异。我们不禁会想&#xff0c;在…...

[python3]Uvicorn库

Uvicorn 是一个用于运行 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;应用程序的轻量级服务器。ASGI 是 Python Web 应用程序接口的一种扩展&#xff0c;它不仅支持传统的同步 Web 请求处理&#xff0c;还支持异步请求处理、WebSockets 以及 HTTP/2。 h…...

istio-proxy oom问题排查步骤

1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存&#xff0c;此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高&#xff0c;在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…...

Flutter:使用FVM安装多个Flutter SDK 版本和使用教程

一、FVM简介 FVM全称&#xff1a;Flutter Version Management FVM通过引用每个项目使用的Flutter SDK版本来帮助实现一致的应用程序构建。它还允许您安装多个Flutter版本&#xff0c;以快速验证和测试您的应用程序即将发布的Flutter版本&#xff0c;而无需每次等待Flutter安装。…...

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…...

[程序设计]—代理模式

[程序设计]—代理模式&#x1f473; 本文章记录学习于——52.面向切面&#xff1a;AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事&#xff0c;在学习Spring的源码&#xff1a; 后面慢慢更新源码系列blog&#xff0c;希望多多关注&#x1f64f;&#x1f64f; 目前已经总结的b…...

26、【OS】【Nuttx】用cmake构建工程

背景 之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建&#xff0c;准备切换 cmake 进行构建&#xff0c;方便后续扩展开发 Nuttx cmake 适配 nuttx项目路径下输入 make distclean&#xff0c;清除之前工程配置 adminpcadminpc:~/nuttx_pdt/nuttx$ make …...

C#中序列化的选择:JSON、XML、二进制与Protobuf详解

C#中序列化的选择&#xff1a;JSON、XML、二进制与Protobuf详解 在C#开发中&#xff0c;序列化是将对象转换为可存储或传输的格式的过程&#xff0c;而反序列化则是将存储或传输的数据重新转换为对象的过程。选择合适的序列化方式对应用程序的性能、可维护性和兼容性至关重要。…...

单片机实现模式转换

[任务] 要求通过单片机实现以下功能&#xff1a; 1.单片机有三种工作模式(定义全局变量MM表示模式&#xff0c;MM1&#xff0c;2&#xff0c;3表示三种不同的模式) LED控制模式 风扇控制模式 蜂鸣器控制模式 2.可以在某一个模式下通过拓展板KEY1按键控制设备 (按…...

Shader -> SweepGradient扫描渐变着色器详解

XML文件 <com.example.myapplication.MyViewxmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_gravity"center"android:layout_height"400dp"/>自定义View代码 c…...

鼠标过滤驱动

文章目录 概述代码参考资料 概述 其编写过程大体与键盘过滤驱动相似&#xff0c;只需要切换一下附加的目标设备以及创建的设备类型等。但在该操作后依然无法捕获到Vmware创建的win7操作系统的鼠标irp信息&#xff0c;于是通过在获取鼠标驱动&#xff0c;遍历其所有的设备进而附…...

【深度学习】数据操作入门

数据操作 为了能够完成各种数据操作&#xff0c;我们需要某种方法来存储和操作数据。 通常&#xff0c;我们需要做两件重要的事&#xff1a;&#xff08;1&#xff09;获取数据&#xff1b;&#xff08;2&#xff09;将数据读入计算机后对其进行处理。 如果没有某种方法来存储…...

WIFIAP项目 5G RX二次谐波超标案例分析

一、 问题的现象及描述 采用博通WIFI方案方案的两个项目在做CE高频杂散测试时发现5G RX出现10.359 GHz的高频杂散点&#xff0c;通过更换信道&#xff0c;该杂散点跟着改变&#xff0c;最终确认该频率是5G主信号的二倍频&#xff1b;如下图&#xff1a; 二、 问题分析  由于…...

HarmonyOS(ArkUI框架介绍)

ArkUI框架介绍 ArkUI简介 基本概念 UI&#xff1a; 即用户界面。开发者可以将应用的用户界面设计为多个功能页面&#xff0c;每个页面进行单独的文件管理&#xff0c;并通过页面路由API完成页面间的调度管理如跳转、回退等操作&#xff0c;以实现应用内的功能解耦。 组件&…...

在 Ubuntu 下通过 Docker 部署 MySQL 服务器

引言 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包成一个标准化的单元。MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;因其高性能、可靠性和易用性&#xff0c;成为许多应用的首选数据库。结合 Docker 和 MySQL&#xff0c;可以轻松地创…...

MCU 和 PSK

在加密和认证领域&#xff0c;MCU 和 PSK 是两个不同的概念&#xff0c;分别涉及硬件和密钥管理。下面是它们的含义和相关解释&#xff1a; 1. MCU 全称&#xff1a;Microcontroller Unit&#xff08;微控制单元&#xff09; 用途&#xff1a; MCU 是一种集成了 CPU、内存&am…...

Linux:进程概念(二.查看进程、父进程与子进程、进程状态详解)

目录 1. 查看进程 1.1 准备工作 1.2 指令&#xff1a;ps—显示当前系统中运行的进程信息 1.3 查看进程属性 1.4 通过 /proc 系统文件夹看进程 2. 父进程与子进程 2.1 介绍 2.2 getpid() \getppid() 2.3 fork()函数—通过系统调用创建进程 fork()函数疑问 3. 进程状态…...

苍穹外卖07——来单提醒和客户催单(涉及SpringTask、WebSocket协议、苍穹外卖跳过微信支付同时保证可以收到订单功能)

Spring Task介绍 应用场景&#xff1a; 信用卡每月还款提醒银行贷款每月还款提醒火车票销售系统处理未付款订单入职纪念日为用户发送通知 cron表达式 cron表达式其实就是一个字符串&#xff0c;通过cron表达式可以定义任务触发的时间。 构成规则&#xff1a;分为6或7个域&…...

C语言二级考试

你必须知道的 二级考试不是编写程序&#xff0c;或者说不只是编程的考核&#xff0c;它还会考核计算机C语言相关语言还有内涵等基础知识&#xff0c;比较全面综合&#xff08;说人话&#xff0c;要看最新考纲具备一定的基础知识&#xff09; 考试时间 120 分钟 分值 100 分&…...

IDEA Maven构建时报错:无效的目标发行版17

报错分析 报错原因&#xff1a;Maven 构建时&#xff0c;Java 版本配置不匹配 我安装的JDK版本是1.8&#xff0c;但由于种种原因&#xff0c;Maven构建时指定了 Java 17 作为目标发行版&#xff0c;从而导致错误 解决方案 首先&#xff0c;java -version&#xff0c;查看环…...

广州市委/整站优化 mail

题目&#xff1a;原题链接&#xff08;困难&#xff09; 标签&#xff1a;树、二叉树、二叉搜索树 解法时间复杂度空间复杂度执行用时Ans 1 (Python)O(N)O(N)O(N)O(N)O(N)O(N)476ms (42.39%)Ans 2 (Python)Ans 3 (Python) 解法一&#xff1a; class Solution:def __init__(s…...

台州网站设计公司/免费广告推广

代码 f open(test/gbk.txt, a, encodingutf-8) print(f.readline()) 最终的执行结果是输出空&#xff0c;为什么呢&#xff1f; a模式打开文件指针在文件结尾处&#xff0c;所以直接读是读不到内容的 emmm..这是啥意思呢&#xff1f;来看下面代码 f open(test/gbk.txt, a, en…...

电商网站建设教案/今天时政新闻热点是什么

10月20日&#xff0c;一年一度的数据库技术交流盛会——DTCC 2021&#xff08;第十二届中国数据库技术大会&#xff09;在京圆满落幕。 大会以“数造未来”为主题&#xff0c;重点围绕数据架构、人工智能与大数据应用、传统企业数据库实践和国产开源数据库等内容展开分享和探讨…...

asp.net网站怎么做/网页制作工具

一、Docker架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器…...

杭州专业网站设计制作/广告推广语

性能优化方案--之一方案计划 Oracle优化 Oracle是咱们存储软件&#xff0c;他自身的优化是决定咱们系统软件性能的根本。 相关需要优化的配置&#xff1a; PGA&#xff1a;适当大小&#xff0c;保证SQL高速缓存命中能在99%以上。 SGA&#xff1a;调整适当增加共享内存池大小&am…...

广州做网站企业/百度网盘app下载安装电脑版

1.准备3台虚拟机 node 01作为lvs的负载均衡服务器&#xff1b;node 2和node 3作为real server&#xff1b;浏览器作为客户端来实现DR模型来做负载。 node01的192.168.75.101就是DIP&#xff0c;node 2和node 3的192.168.75.102和192.168.75.103就是RIP。 2.先配置3台虚拟机的网…...