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

蓝桥杯C语言组:暴力破解


基于C语言的暴力破解方法详解

暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。在C语言中,暴力破解通常用于解决那些问题规模较小、解的范围有限的问题。虽然暴力破解的效率通常较低,但它是一种简单直接的方法,适用于一些简单的或没有更优解法的问题。本文将详细介绍基于C语言的暴力破解方法,包括罗马数字逆向解法、罗马数字的枚举解法和九宫幻方解法,并通过具体的代码实例和详细注释来帮助理解。

 


目录

基于C语言的暴力破解方法详解

一、罗马数字逆向解法

二、罗马数字的枚举解法

三、九宫幻方解法

四、暴力破解的解题思路

五、暴力破解的优缺点

六、总结

表格总结


一、罗马数字逆向解法

1. 罗马数字规则

罗马数字由以下符号组成:

  • I = 1

  • V = 5

  • X = 10

  • L = 50

  • C = 100

  • D = 500

  • M = 1000

罗马数字的组合规则:

  • 当较小的数字在较大的数字左边时,表示减法(如 IV = 4)。

  • 当较小的数字在较大的数字右边时,表示加法(如 VI = 6)。

2. 暴力破解思路

通过遍历罗马数字字符串,根据上述规则计算其对应的阿拉伯数字。主要步骤如下:

  1. 初始化结果变量 result 为 0。

  2. 遍历罗马数字字符串,根据字符对应的值累加到 result

  3. 检查当前字符是否为减法规则(如 IV、XL 等),如果是,则从 result 中减去相应的值。

3. 示例代码及详细注释

#include <stdio.h>
#include <string.h>// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {int result = 0; // 初始化结果变量int len = strlen(s); // 获取罗马数字字符串的长度// 遍历罗马数字字符串for (int i = 0; i < len; i++) {// 根据当前字符对应的值累加到结果switch (s[i]) {case 'I': result += 1; // I 表示 1break;case 'V': result += 5; // V 表示 5break;case 'X': result += 10; // X 表示 10break;case 'L': result += 50; // L 表示 50break;case 'C': result += 100; // C 表示 100break;case 'D': result += 500; // D 表示 500break;case 'M': result += 1000; // M 表示 1000break;}// 检查当前字符是否为减法规则if (i > 0) { // 确保不是第一个字符if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)}}return result; // 返回最终结果
}int main() {char roman[] = "MCMXCIV"; // 示例罗马数字printf("The integer value of %s is %d\n", roman, romanToInt(roman)); // 输出结果return 0;
}

4. 解题步骤

  1. 初始化结果变量result 用于存储最终的阿拉伯数字。

  2. 遍历罗马数字字符串:逐个字符读取罗马数字字符串。

  3. 根据字符累加值:根据罗马数字字符对应的值,累加到 result

  4. 检查减法规则:如果当前字符表示减法规则(如 IV、XL 等),则从 result 中减去相应的值。

  5. 返回结果:最终返回计算得到的阿拉伯数字。


二、罗马数字的枚举解法

1. 暴力破解思路

通过枚举所有可能的罗马数字组合,计算其对应的阿拉伯数字,并与目标值进行比较。这种方法适用于罗马数字较短的情况。

2. 示例代码及详细注释

#include <stdio.h>
#include <string.h>// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {int result = 0; // 初始化结果变量int len = strlen(s); // 获取罗马数字字符串的长度// 遍历罗马数字字符串for (int i = 0; i < len; i++) {// 根据当前字符对应的值累加到结果switch (s[i]) {case 'I': result += 1; break; // I 表示 1case 'V': result += 5; break; // V 表示 5case 'X': result += 10; break; // X 表示 10case 'L': result += 50; break; // L 表示 50case 'C': result += 100; break; // C 表示 100case 'D': result += 500; break; // D 表示 500case 'M': result += 1000; break; // M 表示 1000}// 检查当前字符是否为减法规则if (i > 0) { // 确保不是第一个字符if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)}}return result; // 返回最终结果
}int main() {// 定义一个常见的罗马数字数组char *romans[] = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"};int target = 4; // 目标阿拉伯数字// 遍历罗马数字数组for (int i = 0; i < 10; i++) {if (romanToInt(romans[i]) == target) { // 比较转换后的值与目标值printf("The Roman numeral for %d is %s\n", target, romans[i]); // 输出匹配的罗马数字break;}}return 0;
}

3. 解题步骤

  1. 定义罗马数字数组:包含常见的罗马数字组合。

  2. 遍历数组:逐个读取罗马数字字符串。

  3. 转换为阿拉伯数字:使用 romanToInt 函数将罗马数字转换为阿拉伯数字。

  4. 比较目标值:将转换后的值与目标值进行比较。

  5. 输出结果:如果找到匹配的罗马数字,输出结果。


三、九宫幻方解法

1. 暴力破解思路

九宫幻方是一个3×3的矩阵,其中每行、每列以及两条对角线的和都相等。暴力破解九宫幻方的方法是通过穷举所有可能的数字组合,找到符合条件的解。

2. 示例代码及详细注释

#include <stdio.h>
#include <string.h>int g[3][3]; // 存储九宫格数字
int st[10];  // 标记数字是否被使用// 检查九宫格是否满足条件
int check() {int sum = g[0][0] + g[0][1] + g[0][2]; // 计算第一行的和作为参考// 检查所有行、列和对角线的和是否等于 sumif (g[1][0] + g[1][1] + g[1][2] != sum) return 0; // 第二行if (g[2][0] + g[2][1] + g[2][2] != sum) return 0; // 第三行if (g[0][0] + g[1][0] + g[2][0] != sum) return 0; // 第一列if (g[0][1] + g[1][1] + g[2][1] != sum) return 0; // 第二列if (g[0][2] + g[1][2] + g[2][2] != sum) return 0; // 第三列if (g[0][0] + g[1][1] + g[2][2] != sum) return 0; // 主对角线if (g[0][2] + g[1][1] + g[2][0] != sum) return 0; // 副对角线return 1; // 如果所有条件都满足,返回 1
}// 深度优先搜索函数
void dfs(int u) {if (u == 9) { // 如果已经填满所有位置if (check()) { // 检查是否满足九宫幻方条件// 输出满足条件的九宫幻方for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {printf("%d ", g[i][j]); // 输出每个数字}printf("\n"); // 换行}printf("\n"); // 输出一个空行}return;}// 枚举所有可能的数字for (int i = 1; i <= 9; i++) {if (!st[i]) { // 如果当前数字未被使用st[i] = 1; // 标记为已使用g[u / 3][u % 3] = i; // 将数字填入九宫格dfs(u + 1); // 递归处理下一个位置st[i] = 0; // 回溯,标记为未使用}}
}int main() {memset(st, 0, sizeof(st)); // 初始化状态数组dfs(0); // 从第一个位置开始深度优先搜索return 0;
}

3. 解题步骤

  1. 初始化九宫格和状态数组

    • g[3][3] 用于存储九宫格的数字。

    • st[10] 用于标记每个数字是否被使用。

  2. 定义检查函数

    • check() 函数用于检查当前九宫格是否满足九宫幻方的条件。

  3. 深度优先搜索

    • dfs(u) 函数用于递归生成所有可能的数字排列。

    • 枚举所有可能的数字(1 到 9),并尝试填入九宫格。

    • 使用回溯法(标记和取消标记)来尝试所有可能的组合。

  4. 输出结果

    • 如果找到满足条件的九宫幻方,输出其内容。


四、暴力破解的解题思路

1. 暴力破解的基本思路

  1. 明确问题的解空间

    • 确定所有可能的解的范围。例如,对于一个密码破解问题,解空间可能是所有可能的字符组合;对于一个数学问题,解空间可能是所有可能的数字组合。

  2. 设计穷举策略

    • 按照一定的顺序(通常是从小到大或从简单到复杂)遍历解空间中的每一个可能解。

  3. 验证每个可能解

    • 对于每一个可能的解,检查它是否满足问题的条件。如果满足,则记录下来;如果不满足,则继续尝试下一个解。

  4. 输出结果

    • 在遍历完所有可能的解之后,输出所有满足条件的解,或者输出第一个满足条件的解(如果只需要一个解)。

2. 暴力破解的常见应用场景

  1. 密码破解

    • 通过尝试所有可能的密码组合来找到正确的密码。

  2. 组合问题

    • 例如,找出所有可能的数字组合,使得它们满足某些条件。

  3. 数学问题

    • 例如,找出所有满足某个方程的整数解。

  4. 优化问题

    • 通过穷举所有可能的解,找到最优解。

3. 暴力破解的解题步骤

以下通过几个具体的例子来详细说明暴力破解的解题步骤。

3.1 罗马数字逆向解法

问题描述: 将罗马数字转换为对应的阿拉伯数字。

解题步骤

  1. 明确问题的解空间

    • 罗马数字由字符 IVXLCDM 组成,每个字符对应一个固定的阿拉伯数字。

  2. 设计穷举策略

    • 遍历罗马数字字符串,逐个字符进行处理。

  3. 验证每个可能解

    • 根据罗马数字的规则,判断当前字符是否表示减法规则(如 IV 表示 4,IX 表示 9)。

  4. 输出结果

    • 将所有字符对应的阿拉伯数字累加起来,得到最终结果。

代码实现

#include <stdio.h>
#include <string.h>// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {int result = 0; // 初始化结果变量int len = strlen(s); // 获取罗马数字字符串的长度// 遍历罗马数字字符串for (int i = 0; i < len; i++) {// 根据当前字符对应的值累加到结果switch (s[i]) {case 'I': result += 1; break; // I 表示 1case 'V': result += 5; break; // V 表示 5case 'X': result += 10; break; // X 表示 10case 'L': result += 50; break; // L 表示 50case 'C': result += 100; break; // C 表示 100case 'D': result += 500; break; // D 表示 500case 'M': result += 1000; break; // M 表示 1000}// 检查当前字符是否为减法规则if (i > 0) { // 确保不是第一个字符if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)}}return result; // 返回最终结果
}int main() {char roman[] = "MCMXCIV"; // 示例罗马数字printf("The integer value of %s is %d\n", roman, romanToInt(roman)); // 输出结果return 0;
}

解题思路总结

  • 明确解空间:罗马数字字符集合。

  • 穷举策略:逐个字符遍历罗马数字字符串。

  • 验证:根据罗马数字规则判断是否需要减法操作。

  • 输出:累加所有字符对应的阿拉伯数字。

3.2 九宫幻方解法

问题描述: 九宫幻方是一个3×3的矩阵,其中每行、每列以及两条对角线的和都相等。需要找到所有可能的九宫幻方。

解题步骤

  1. 明确问题的解空间

    • 九宫幻方由数字1到9组成,每个数字只能使用一次。

  2. 设计穷举策略

    • 使用深度优先搜索(DFS)生成所有可能的数字排列。

  3. 验证每个可能解

    • 检查每个排列是否满足九宫幻方的条件(每行、每列、每条对角线的和相等)。

  4. 输出结果

    • 输出所有满足条件的九宫幻方。

代码实现

#include <stdio.h>
#include <string.h>int g[3][3]; // 存储九宫格数字
int st[10];  // 标记数字是否被使用// 检查九宫格是否满足条件
int check() {int sum = g[0][0] + g[0][1] + g[0][2]; // 计算第一行的和作为参考// 检查所有行、列和对角线的和是否等于 sumif (g[1][0] + g[1][1] + g[1][2] != sum) return 0; // 第二行if (g[2][0] + g[2][1] + g[2][2] != sum) return 0; // 第三行if (g[0][0] + g[1][0] + g[2][0] != sum) return 0; // 第一列if (g[0][1] + g[1][1] + g[2][1] != sum) return 0; // 第二列if (g[0][2] + g[1][2] + g[2][2] != sum) return 0; // 第三列if (g[0][0] + g[1][1] + g[2][2] != sum) return 0; // 主对角线if (g[0][2] + g[1][1] + g[2][0] != sum) return 0; // 副对角线return 1; // 如果所有条件都满足,返回 1
}// 深度优先搜索函数
void dfs(int u) {if (u == 9) { // 如果已经填满所有位置if (check()) { // 检查是否满足九宫幻方条件// 输出满足条件的九宫幻方for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {printf("%d ", g[i][j]); // 输出每个数字}printf("\n"); // 换行}printf("\n"); // 输出一个空行}return;}// 枚举所有可能的数字for (int i = 1; i <= 9; i++) {if (!st[i]) { // 如果当前数字未被使用st[i] = 1; // 标记为已使用g[u / 3][u % 3] = i; // 将数字填入九宫格dfs(u + 1); // 递归处理下一个位置st[i] = 0; // 回溯,标记为未使用}}
}int main() {memset(st, 0, sizeof(st)); // 初始化状态数组dfs(0); // 从第一个位置开始深度优先搜索return 0;
}

解题思路总结

  • 明确解空间:数字1到9,每个数字只能使用一次。

  • 穷举策略:使用深度优先搜索生成所有可能的数字排列。

  • 验证:检查每个排列是否满足九宫幻方的条件。

  • 输出:输出所有满足条件的九宫幻方。

3.3 密码暴力破解

问题描述: 假设有一个简单的数字密码,密码长度为4位,密码由数字0到9组成。需要通过暴力破解找到正确的密码。

解题步骤

  1. 明确问题的解空间

    • 密码由4位数字组成,每一位数字的范围是0到9。

  2. 设计穷举策略

    • 使用嵌套循环生成所有可能的4位数字组合。

  3. 验证每个可能解

    • 将生成的密码与预设的正确密码进行比较。

  4. 输出结果

    • 如果找到匹配的密码,输出结果并结束程序。

代码实现

#include <stdio.h>int main() {int password = 1234; // 预设的正确密码int found = 0; // 标记是否找到正确密码// 使用嵌套循环生成所有可能的4位数字组合for (int i = 0; i <= 9; i++) {for (int j = 0; j <= 9; j++) {for (int k = 0; k <= 9; k++) {for (int l = 0; l <= 9; l++) {int attempt = i * 1000 + j * 100 + k * 10 + l; // 生成当前尝试的密码if (attempt == password) { // 比较是否为正确密码printf("Password found: %d\n", attempt); // 输出结果found = 1; // 标记找到break; // 结束循环}}if (found) break; // 如果找到密码,退出循环}if (found) break; // 如果找到密码,退出循环}if (found) break; // 如果找到密码,退出循环}if (!found) {printf("Password not found.\n"); // 如果未找到密码,输出提示}return 0;
}

解题思路总结

  • 明确解空间:4位数字,每一位的范围是0到9。

  • 穷举策略:使用嵌套循环生成所有可能的组合。

  • 验证:将生成的密码与预设密码进行比较。

  • 输出:如果找到匹配的密码,输出结果。


五、暴力破解的优缺点

优点
  1. 简单直接

    • 暴力破解的思路简单,容易实现,不需要复杂的算法或数据结构。

  2. 适用范围广

    • 对于一些没有更优解法的问题,暴力破解是一种有效的解决方案。

  3. 容易理解

    • 代码逻辑清晰,容易理解和调试。

缺点
  1. 效率低下

    • 对于问题规模较大的情况,暴力破解的时间复杂度和空间复杂度可能非常高,导致运行时间过长。

  2. 不适用于复杂问题

    • 对于一些复杂的优化问题或大规模数据处理问题,暴力破解可能不可行。


六、总结

暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。它适用于问题规模较小、解的范围有限的情况。虽然暴力破解的效率较低,但它的实现简单,容易理解,是一种有效的解题方法。在实际应用中,可以根据问题的具体情况选择是否使用暴力破解,或者结合其他更高效的算法来优化解题过程。

通过上述几个具体的例子,我们详细介绍了暴力破解的解题思路和实现方法。希望这些内容能够帮助你更好地理解和应用暴力破解技术。

表格总结

问题类型方法适用场景优点缺点
罗马数字逆向解法规则查找罗马数字较短简单高效仅适用于已知规则
罗马数字枚举解法枚举所有组合罗马数字较短简单直观效率较低
九宫幻方解法深度优先搜索九宫幻方可找到所有解效率较低,适合小规模问题

相关文章:

蓝桥杯C语言组:暴力破解

基于C语言的暴力破解方法详解 暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。在C语言中&#xff0c;暴力破解通常用于解决那些问题规模较小、解的范围有限的问题。虽然暴力破解的效率通常较低&#xff0c;但它是一种简单直接的方法&#xff0c;适用于一些简单…...

[Go]一、Go语言基础

G:\Go\【物语终焉】21周搞定Go语言 1.环境安装 All releases - The Go Programming Language blog地址: https://www.liwenzhou.com/categories/Golang/ 图文教程: 从零开始搭建Go语言开发环境 | 李文周的博客 官网地址: 国内: https://studygolang.com/dl Go官网下载…...

React+Cesium基础教程(003):加载3D建筑物和创建标签

文章目录 03-加载3D建筑物和标签方式一方式二完整代码03-加载3D建筑物和标签 方式一 添加来自 OpenStreetMap 的建筑物模型,让场景更加丰富和真实: viewer.scene.primitives.add(new Cesium.createOsmBuildings() );方式二 使用 Cesium ion 资源:...

两晋南北朝 侨置州郡由来

侨置的核心思想是面向人管理 而不是面向土地 1. 北雍州 西晋于长安置雍州&#xff0c;永嘉之乱&#xff0c;没于刘、石。苻秦之乱&#xff0c;雍州流民南出樊沔&#xff0c;孝武于襄阳侨立雍州。此时称长安为北雍州。...

七. Redis 当中 Jedis 的详细刨析与使用

七. Redis 当中 Jedis 的详细刨析与使用 文章目录 七. Redis 当中 Jedis 的详细刨析与使用1. Jedis 概述2. Java程序中使用Jedis 操作 Redis 数据2.1 Java 程序使用 Jedis 连接 Redis 的注意事项2.2 Java程序通过 Jedis当中操作 Redis 的 key 键值对2.3 Java程序通过 Jedis 当中…...

Vue3学习笔记-事件-4

一、事件处理 使用v-on或者后面加事件&#xff1a; <template><button v-on:click"addCount()">{{count}}</button> </template> 二、事件传参 传event&#xff1a; 不传参时&#xff0c;默认自动接收 event 传自定义参数时&#xff0c…...

艾瑞泽8车机安装软件

电脑安装搞机助手 车机打开工程模式/加密项 密码是序列号*802018 打开adb 电脑打开搞机助手/扩展功能/cmd命令行 把安装包放入adb 输入adb push F:\carapk\qq_music_car.apk /data/local/tmp 格式&#xff1a; adb push 电脑路径 adb路径 进入abd adb shell 进入指定文件夹 cd …...

c++ list的front和pop_front的概念和使用案例

在 C 中&#xff0c;std::list 是一种双向链表容器&#xff0c;提供了对序列中元素的快速插入和删除操作。以下是 std::list 容器的 front 和 pop_front 方法的概念和使用案例。 front 概念&#xff1a;front 成员函数返回对 std::list 容器中第一个元素的引用。如果列表为空…...

NLP深度学习 DAY5:Sequence-to-sequence 模型详解

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种用于处理输入和输出均为序列任务的深度学习模型。它最初被设计用于机器翻译&#xff0c;但后来广泛应用于其他任务&#xff0c;如文本摘要、对话系统、语音识别、问答系统等。 核心思想 Seq2Seq 模型的目标是将…...

04树 + 堆 + 优先队列 + 图(D1_树(D17_综合刷题练习))

目录 1. 二叉树的前序遍历&#xff08;简单&#xff09; 1.1. 题目描述 1.2. 解题思路 方法一&#xff1a;递归&#xff08;推荐使用&#xff09; 方法二&#xff1a;非递归&#xff08;扩展思路&#xff09; 2. 二叉树的中序遍历&#xff08;中等&#xff09; 2.1. 题目…...

猫眼Java开发面试题及参考答案(上)

详细介绍项目,像项目中如何用 Redis,用到 Redis 哪些数据类型,项目中遇到哪些问题,怎么解决的 在我参与的一个电商项目中,Redis 发挥了至关重要的作用。这个电商项目主要是为用户提供商品浏览、购物车管理、订单处理等一系列功能。 在项目中使用 Redis 主要是为了提升系统…...

理解PLT表和GOT表

1 简介 现代操作系统都是通过库来进行代码复用&#xff0c;降低开发成本提升系统整体效率。而库主要分为两种&#xff0c;一种是静态库&#xff0c;比如windows的.lib文件&#xff0c;macos的.a&#xff0c;linux的.a&#xff0c;另一种是动态库&#xff0c;比如windows的dll文…...

总结11..

#include <stdio.h> #include <string.h> #define MAXN 1001 #define MAXM 1000001 int n, m; char maze[MAXN][MAXN]; int block[MAXN][MAXN]; // 标记每个格子所属的连通块编号 int blockSize[MAXN * MAXN]; // 记录每个连通块的大小 int dx[] {0, 0, 1, -1};…...

35.Word:公积金管理中心文员小谢【37】

目录 Word1.docx ​ Word2.docx Word2.docx ​ 注意本套题还是与上一套存在不同之处 Word1.docx 布局样式的应用设计页眉页脚位置在水平/垂直方向上均相对于外边距居中排列&#xff1a;格式→大小对话框→位置→水平/垂直 按下表所列要求将原文中的手动纯文本编号分别替换…...

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址&#xff1a;https://arxiv.org/pdf/2405.14767 Github地址&#xff1a;https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…...

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…...

【网络】应用层协议http

文章目录 1. 关于http协议2. 认识URL3. http协议请求与响应格式3.1 请求3.2 响应 3. http的常见方法4. 状态码4.1 常见状态码4.2 重定向 5. Cookie与Session5.1 Cookie5.1.1 认识Cookie5.1.2 设置Cookie5.1.3 Cookie的生命周期 5.2 Session 6. HTTP版本&#xff08;了解&#x…...

RabbitMQ深度探索:简单实现 MQ

基于多线程队列实现 MQ &#xff1a; 实现类&#xff1a; public class ThreadMQ {private static LinkedBlockingDeque<JSONObject> broker new LinkedBlockingDeque<JSONObject>();public static void main(String[] args) {//创建生产者线程Thread producer n…...

React+AI 技术栈(2025 版)

文章目录 核心&#xff1a;React TypeScript元框架&#xff1a;Next.js样式设计&#xff1a;Tailwind CSSshadcn/ui客户端状态管理&#xff1a;Zustand服务器状态管理&#xff1a;TanStack Query动画效果&#xff1a;Motion测试工具表格处理&#xff1a;TanStack Table表单处理…...

计算机从何而来?计算技术将向何处发展?

计算机的前生&#xff1a;机械计算工具的演进 算盘是计算机的起点&#xff0c;它其实是一台“机械式半自动化运算器”。打算盘的“口诀”其实就是它的编程语言&#xff0c;算盘珠就是它的存储器。 第二阶段是可以做四则运算的加法器、乘法器。1642年&#xff0c;法国数学家帕斯…...

Docker使用指南(二)——容器相关操作详解(实战案例教学,创建/使用/停止/删除)

目录 1.容器操作相关命令​编辑 案例一&#xff1a; 案例二&#xff1a; 容器常用命令总结&#xff1a; 1.查看容器状态&#xff1a; 2.删除容器&#xff1a; 3.进入容器&#xff1a; 二、Docker基本操作——容器篇 1.容器操作相关命令 下面我们用两个案例来具体实操一…...

从通讯工具到 AI 助理,AI手机如何发展?

随着AI进军各行各业&#xff0c;全面AI化时代已经到来。手机&#xff0c;作为现代人类的“数字器官”之一&#xff0c;更是首当其冲地融入了这一变革浪潮之中。 2024年年初&#xff0c;OPPO联合IDC发布了《AI手机白皮书》&#xff0c;公布OPPO已迈向AI手机这一全新阶段。到如今…...

小程序-基础加强

前言 这一节把基础加强讲完 1. 导入需要用到的小程序项目 2. 初步安装和使用vant组件库 这里还可以扫描二维码 其中步骤四没什么用 右键选择最后一个 在开始之前&#xff0c;我们的项目根目录得有package.json 没有的话&#xff0c;我们就初始化一个 但是我们没有npm这个…...

【CSS】谈谈你对BFC的理解

理解 CSS 中的 BFC&#xff08;块格式化上下文&#xff09; 在 CSS 中&#xff0c;BFC&#xff08;Block Formatting Context&#xff09; 是一个非常重要的概念&#xff0c;它决定了元素如何对其子元素进行定位&#xff0c;以及与其他元素的关系。理解 BFC 对于解决常见的布局…...

kubernetes-部署性能监控平台

在当今快速发展的云计算时代&#xff0c;Kubernetes 已成为容器编排的事实标准。随着越来越多的应用迁移到 Kubernetes 平台上&#xff0c;如何有效地监控集群的健康状态、资源使用情况以及应用性能变得尤为重要。一个完善的监控系统可以帮助我们及时发现问题、优化资源配置&am…...

【Uniapp-Vue3】iconfont图标库的使用

先在iconfont图标库中将需要的图标加入购物车 点击右侧购物车的图标 点击添加至项目&#xff0c;可以选中项目进行加入&#xff0c;也可以点击文件加号创建一个新的项目并添加 加入以后会来到如下界面&#xff0c;点击下载至本地 双击打开下载的.zip文件 将.css和.ttf文件进…...

Linux find 命令 | grep 命令 | 查找 / 列出文件或目录路径 | 示例

注&#xff1a;本文为 “Linux find 命令 | grep 命令使用” 相关文章合辑。 未整理去重。 如何在 Linux 中查找文件 作者&#xff1a; Lewis Cowles 译者&#xff1a; LCTT geekpi | 2018-04-28 07:09 使用简单的命令在 Linux 下基于类型、内容等快速查找文件。 如果你是 W…...

Day 28 卡玛笔记

这是基于代码随想录的每日打卡 77. 组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]示例 2…...

1.PPT:天河二号介绍【12】

目录 NO1 NO2.3.4.5 NO6.7.8.9​ NO1 PPT&#xff1a;新建一个空白演示文档→保存到考生文件夹下&#xff1a;天河二号超级计算机.pptx幻灯片必须选择一种设计主题&#xff1a;设计→主题&#xff08;随便选中一种&#xff09;幻灯片的版式&#xff1a;开始→版式&#x…...

AI大模型开发原理篇-4:神经概率语言模型NPLM

神经概率语言模型&#xff08;NPLM&#xff09;概述 神经概率语言模型&#xff08;Neural Probabilistic Language Model, NPLM&#xff09; 是一种基于神经网络的语言建模方法&#xff0c;它将传统的语言模型和神经网络结合在一起&#xff0c;能够更好地捕捉语言中的复杂规律…...