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

32 C 语言字符处理函数详解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace

1 isalnum() 函数

1.1 函数原型

#include <ctype.h>int isalnum(int c);

1.2 功能说明

        isalnum() 函数用于检查传入的整数参数是否为 ASCII 编码的字母或数字字符('A' - 'Z'、'a' - 'z'、'0' - '9',对应 ASCII 值 65 - 90、97 - 122、48 - 57)

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是字母或数字字符,返回非零值(通常是 1,表示真)
    • 如果 c 不是字母或数字字符,返回 0(表示假)

1.3 注意事项

  1. 头文件依赖:

    1. 使用 isalnum() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • isalnum() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 字母和数字字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

1.4 应用场景

  1. 用户输入验证:在用户注册或登录时,检查用户名或密码是否仅包含字母和数字(例如,不允许特殊字符)。

  2. 数据过滤:在处理用户提交的表单数据时,过滤掉非字母或数字的字符(例如,清理电话号码中的空格或连字符)。

  3. 字符串解析:在解析命令行参数或配置文件时,确保参数仅包含有效字符(例如,文件名或标识符)。

  4. 游戏开发:在验证玩家输入的昵称或聊天消息时,限制字符类型(例如,防止使用特殊字符或表情符号)。

1.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 isalnum 函数int main()
{char str[] = "Hello123!@#"; // 包含字母、数字和符号的字符串printf("字符串 \"%s\" 中的字母或数字字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isalnum(str[i])){printf("'%c' 是字母或数字字符\n", str[i]);}else{printf("'%c' 不是字母或数字字符\n", str[i]);}}// 检查单个字符char ch = '7';if (isalnum(ch)){printf("\n'%c' 是一个字母或数字字符\n", ch);}else{printf("\n'%c' 不是一个字母或数字字符\n", ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


2 isalpha() 函数

2.1 函数原型

#include <ctype.h>int isalpha(int c);

2.2 功能说明

        isalpha() 函数用于检查传入的整数参数是否为 ASCII 编码的字母字符('A' - 'Z' 或 'a' - 'z',对应 ASCII 值 65 - 90、97 - 122)

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是字母字符(大写或小写),返回非零值(通常是 1,表示真)
    • 如果 c 不是字母字符(如数字、符号、空格等),返回 0(表示假)

2.3 注意事项

  1. 头文件依赖:

    1. 使用 isalpha() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • isalpha() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 字母字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码,如带重音符号的字母),可能需要使用其他函数或手动处理。

2.4 应用场景

  1. 输入验证:确保用户输入的敏感信息(如姓名、密码)仅包含字母,避免数字或符号导致程序异常。

  2. 字符串处理:从混合字符串(如 "Name: Alice123")中提取或统计字母字符,便于后续处理(如大小写转换、格式化输出)。

  3. 数据清洗:在文本分析或数据预处理时,移除非字母字符(如数字、标点符号),保留有效文本内容。

  4. 词法分析:在编译器开发中,识别代码中的标识符(如变量名 count),为语法分析阶段提供基础。

2.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 isalpha 函数int main()
{char str[] = "Hello123!@#"; // 包含字母、数字和符号的字符串printf("字符串 \"%s\" 中的字母字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isalpha(str[i])){printf("'%c' 是字母字符\n", str[i]);}else{printf("'%c' 不是字母字符\n", str[i]);}}// 检查单个字符char ch = 'G';if (isalpha(ch)){printf("\n'%c' 是一个字母字符\n", ch);}else{printf("\n'%c' 不是一个字母字符\n", ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


3 iscntrl() 函数

3.1 函数原型

#include <ctype.h>int iscntrl(int c);

3.2 功能说明

        iscntrl() 函数用于检查传入的整数参数是否为 ASCII 编码的控制字符(Control Character)。控制字符是不可见的字符,通常用于终端控制、通信协议或文件格式中的特殊操作(如换行符 \n、制表符 \t、响铃符 \a 等)。

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是控制字符(ASCII 值 0 - 31 或 127),返回非零值(通常是 1,表示真)
    • 如果 c 不是控制字符(如可打印字符、空格等),返回 0(表示假)

3.3 注意事项

  1. 头文件依赖:

    1. 使用 iscntrl() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • iscntrl() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 控制字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

3.4 应用场景

  1. 输入验证:检测输入流中是否包含控制字符(如终端输入或文件读取),避免控制字符干扰程序逻辑。

  2. 数据清洗:在文本处理或日志分析时,移除控制字符(如 \n、\t),保留可打印字符以提升数据可读性。

  3. 协议解析:在通信协议(如串口通信、网络协议)中,识别控制字符以执行特定操作(如换行、响铃)。

  4. 二进制文件处理:在解析二进制文件时,区分控制字符和普通数据,确保文件格式正确。

3.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 iscntrl 函数int main()
{char str[] = "Hello\tW\to\a!"; // 包含控制字符(制表符、响铃符)的字符串printf("字符串 \"%s\" 中的控制字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (iscntrl(str[i])){printf("字符'%c'(ASCII:%d)是控制字符\n", str[i], str[i]);}else{printf("字符'%c'(ASCII:%d)不是控制字符\n", str[i], str[i]);}}// 检查单个字符char ch = '\a'; // 响铃符(ASCII 7)if (iscntrl(ch)){printf("\n字符'%c'(ASCII:%d)是一个控制字符\n", ch, ch);}else{printf("\n字符'%c'(ASCII:%d)不是一个控制字符\n", ch, ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


4 isprint() 函数

4.1 函数原型

#include <ctype.h>int isprint(int c);

4.2 功能说明

        isprint() 函数用于检查传入的整数参数是否为 ASCII 编码的可打印字符(Printable Character)。可打印字符包括字母、数字、标点符号、空格(ASCII 值 32 - 126),但不包括控制字符(如 \n、\t)或不可见字符

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是可打印字符(ASCII 值 32-126),返回非零值(通常是 1,表示真)
    • 如果 c 不是可打印字符(如控制字符、删除符 \x7F),返回 0(表示假)

4.3 注意事项

  1. 头文件依赖:

    1. 使用 isprint() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • isprint() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 可打印字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

4.4 应用场景

  1. 输入验证:确保用户输入的敏感信息(如密码、用户名)仅包含可打印字符,避免控制字符导致程序异常。

  2. 数据清洗:在文本处理或日志分析时,移除不可打印字符(如控制字符),保留有效内容以提升数据可读性。

  3. 协议解析:在通信协议(如串口通信、网络协议)中,验证接收到的数据是否为可打印字符,避免非法字符干扰。

  4. 二进制文件处理:在解析文本文件时,区分可打印字符和二进制数据,确保文件内容正确。

4.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 isprint 函数int main()
{char str[] = "He\nWo\t!\a"; // 包含控制字符(换行符、制表符、响铃符)的字符串printf("字符串 \"%s\" 中的可打印字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isprint(str[i])){printf("字符 %d ('%c') 是可打印字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是可打印字符\n", str[i], str[i]);}}// 检查单个字符char ch = ' '; // 空格(ASCII 32)if (isprint(ch)){printf("\n字符 %d ('%c') 是一个可打印字符\n", ch, ch);}else{printf("\n字符 %d ('%c') 不是一个可打印字符\n", ch, ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


5 isgraph() 函数

5.1 函数原型

#include <ctype.h>int isgraph(int c);

5.2 功能说明

        isgraph() 函数用于检查传入的整数参数是否为 ASCII 编码的图形字符(Graphic Character)图形字符是可打印字符(ASCII 值 33 - 126),但不包括空格(ASCII 值 32)。这意味着 isgraph() 仅识别字母、数字、标点符号等非空格的可打印字符。

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是图形字符(ASCII 值 33-126),返回非零值(通常是 1,表示真)
    • 如果 c 不是图形字符(如空格、控制字符、删除符 \x7F),返回 0(表示假)

5.3 注意事项

  1. 头文件依赖:

    1. 使用 isgraph() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • isgraph() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 图形字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

5.4 应用场景

  1. 输入验证:确保用户输入的敏感信息(如密码、验证码)仅包含非空格的可打印字符,避免无效字符干扰程序逻辑。

  2. 数据清洗:在文本处理或日志分析时,移除空格或不可打印字符(如控制字符),保留有效内容以提升数据可读性。

  3. 协议解析:在通信协议(如串口通信、网络协议)中,验证接收到的数据是否为非空格的可打印字符,避免非法字符干扰。

  4. 格式化输出:在生成格式化文本(如表格、报告)时,确保输出内容不包含空格或控制字符,提升输出质量。

5.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 isgraph 函数int main()
{char str[] = "He\nWo\t!"; // 包含控制字符(换行符、制表符)的字符串printf("字符串 \"%s\" 中的图形字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isgraph(str[i])){printf("字符 %d ('%c') 是图形字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是图形字符\n", str[i], str[i]);}}// 检查单个字符char ch = ' '; // 空格(ASCII 32)if (isgraph(ch)){printf("\n字符 %d ('%c') 是一个图形字符\n", ch, ch);}else{printf("\n字符 %d ('%c') 不是一个图形字符\n", ch, ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


6 ispunct() 函数

6.1 函数原型

#include <ctype.h>int ispunct(int c);

6.2 功能说明

        ispunct() 函数用于检查传入的整数参数是否为 ASCII 编码的标点符号(Punctuation Character)。标点符号是可打印字符(ASCII 值 33-126)中不属于字母、数字或空格的字符,例如 ,、.、!、?、; 等。

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是标点符号(ASCII 值 33-126 中非字母、非数字、非空格的字符),返回非零值(通常是 1,表示真)
    • 如果 c 不是标点符号(如字母、数字、空格、控制字符),返回 0(表示假)

6.3 注意事项

  1. 头文件依赖:

    1. 使用 ispunct() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • ispunct() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 标点符号。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

6.4 应用场景

  1. 文本解析:在自然语言处理或文本分析中,识别句子边界(如 !、?)或分隔符(如 ,、;),辅助语法分析。

  2. 输入验证:确保用户输入的特定字段(如密码、用户名)不包含非法标点符号,避免程序逻辑错误。

  3. 数据清洗:在日志分析或数据预处理时,移除或替换标点符号,保留有效内容以提升数据可读性。

  4. 格式化输出:在生成格式化文本(如表格、报告)时,控制标点符号的使用,确保输出符合规范。

6.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 ispunct 函数int main()
{char str[] = "Hi! How? !,./"; // 包含标点符号的字符串printf("字符串 \"%s\" 中的标点符号:\n", str);for (int i = 0; str[i] != '\0'; i++){if (ispunct(str[i])){printf("字符 %d ('%c') 是标点符号\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是标点符号\n", str[i], str[i]);}}// 检查单个字符char ch = '.'; // 标点符号(ASCII 46)if (ispunct(ch)){printf("\n'%c' 是一个标点符号\n", ch);}else{printf("\n'%c' 不是一个标点符号\n", ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


7 isspace() 函数

7.1 函数原型

#include <ctype.h>int isspace(int c);

7.2 功能说明

        isspace() 函数用于检查传入的整数参数是否为 ASCII 编码的空白字符(Whitespace Character)空白字符包括空格( )、换行符(\n)、制表符(\t)、回车符(\r)、垂直制表符(\v)和换页符(\f)

  • 参数:

    • c 表示要检查的字符,以 int 形式传递(通常是 char 类型转换而来的 ASCII 码值)

  • 返回值:

    • 如果 c 是空白字符(ASCII 值 9、10、11、12、13、32),返回非零值(通常是 1,表示真)
    • 如果 c 不是空白字符(如字母、数字、标点符号),返回 0(表示假)

7.3 注意事项

  1. 头文件依赖:

    1. 使用 isspace() 函数前,必须包含 <ctype.h> 头文件,否则编译器可能无法识别该函数,导致编译错误或链接失败。

  2. 参数范围限制:

    • 虽然函数参数类型为 int,但实际应传递 unsigned char 类型的值或 EOF(通常用于文件操作结束标志)
    • 如果传入的值超出 unsigned char 范围(0 - 255)或 EOF,函数的行为是未定义的(可能导致程序崩溃或返回错误结果)。
    • 例如:直接传递负的 char 值(如 -1)或大于 127 的值时,函数会返回 0。
  3. 区域设置依赖:

    • isspace() 的行为受区域设置(locale)影响,但在默认的 "C" 区域设置中,仅识别 ASCII 空白字符。
    • 如果程序依赖其他区域设置(如非 ASCII 编码),可能需要使用其他函数或手动处理。

7.4 应用场景

  1. 文本解析:在自然语言处理或文本分析中,识别句子或段落分隔符(如换行符、制表符),辅助语法分析。

  2. 输入验证:确保用户输入的特定字段(如用户名、密码)不包含非法空白字符,避免程序逻辑错误。

  3. 数据清洗:在日志分析或数据预处理时,移除或替换多余的空白字符,保留有效内容以提升数据可读性。

  4. 格式化输出:在生成格式化文本(如表格、报告)时,控制空白字符的使用,确保输出符合规范。

7.5 示例程序

#include <stdio.h>
#include <ctype.h> // 引入 ctype.h 头文件以使用 isspace 函数int main()
{char str[] = "He l\nW d\t!"; // 包含空白字符的字符串printf("字符串 \"%s\" 中的空白字符:\n", str);for (int i = 0; str[i] != '\0'; i++){if (isspace(str[i])){printf("字符 %d ('%c') 是空白字符\n", str[i], str[i]);}else{printf("字符 %d ('%c') 不是空白字符\n", str[i], str[i]);}}// 检查单个字符char ch = ' '; // 空格(ASCII 32)if (isspace(ch)){printf("\n'%c' 是一个空白字符\n", ch);}else{printf("\n'%c' 不是一个空白字符\n", ch);}return 0;
}

        程序在 VS Code 中的运行结果如下所示:


8 字符处理函数总结

函数名功能描述输入类型返回值类型返回值说明
isalnum检查字符是否为字母或数字(a-z, A-Z, 0-9)int(字符的 ASCII 值)int非零值(真)如果字符是字母或数字,否则 0(假)
isalpha检查字符是否为字母(a-z, A-Z)int(字符的 ASCII 值)int非零值(真)如果字符是字母,否则 0(假)
iscntrl检查字符是否为控制字符(如换行符、制表符等,ASCII 0-31 和 127)int(字符的 ASCII 值)int非零值(真)如果字符是控制字符,否则 0(假)
isprint检查字符是否为可打印字符(ASCII 32-126)int(字符的 ASCII 值)int非零值(真)如果字符是可打印字符,否则 0(假)
isgraph检查字符是否为图形字符(可打印且非空格字符,ASCII 33-126)int(字符的 ASCII 值)int非零值(真)如果字符是图形字符,否则 0(假)
ispunct检查字符是否为标点符号(如 !, ", #, $, %, 等)int(字符的 ASCII 值)int非零值(真)如果字符是标点符号,否则 0(假)
isspace检查字符是否为空白字符(如空格、制表符、换行符等)int(字符的 ASCII 值)int非零值(真)如果字符是空白字符,否则 0(假)
  • 这些函数都定义在 <ctype.h> 头文件中。
  • 输入参数通常是字符的 ASCII 值(即 int 类型),但通常通过传递字符(如 'a')来隐式转换。
  • 返回值类型为 int,通常用于布尔判断(非零为真,0 为假)。
  • isalnum 是 isalpha 和 isdigit 的组合,检查字符是否为字母或数字。
  • isgraph 和 isprint 的区别在于 isgraph 不包括空格字符(ASCII 32),而 isprint 包括。
  • isspace 检查的空白字符包括空格、制表符(\t)、换行符(\n)、回车符(\r)、垂直制表符(\v)和换页符(\f)。 

相关文章:

32 C 语言字符处理函数详解:isalnum、isalpha、iscntrl、isprint、isgraph、ispunct、isspace

1 isalnum() 函数 1.1 函数原型 #include <ctype.h>int isalnum(int c); 1.2 功能说明 isalnum() 函数用于检查传入的整数参数是否为 ASCII 编码的字母或数字字符&#xff08;A - Z、a - z、0 - 9&#xff0c;对应 ASCII 值 65 - 90、97 - 122、48 - 57&#xff09;。…...

Qt实现一个悬浮工具箱源码分享

一、效果展示 二、源码分享 hoverToolboxWidget.h #ifndef HOVERTOOLBOXWIDGET_H #define HOVERTOOLBOXWIDGET_H#include <QWidget> #include <QMouseEvent> #include <QPropertyAnimation> #include <QStyleOption> #include <QPainter>namespa…...

线夹金具测温在线监测装置:电力设备安全运行的“隐形卫士”

在电网系统中&#xff0c;线夹金具是连接导线与输电塔架的关键部件&#xff0c;其运行状态直接影响电力传输的稳定性。传统人工巡检方式存在效率低、盲区多、数据滞后等问题&#xff0c;而线夹金具测温在线监测装置的普及&#xff0c;正为电力设备运维带来革新。 一、工作原理&…...

《TCP/IP 详解 卷1:协议》第4章:地址解析协议

ARP 协议 地址解析协议&#xff08;ARP, Address Resolution Protocol&#xff09;是IPv4协议栈中一个关键的组成部分&#xff0c;用于在网络层的IP地址与数据链路层的硬件地址&#xff08;如MAC地址&#xff09;之间建立映射关系。它的主要任务是&#xff1a; 将32位的IPv4地…...

Dify 离线升级操作手册(适用于无外网企业内网环境)

一、准备工作 准备一台能访问互联网的外网机器 用于拉取最新的 Dify 镜像和代码建议使用 Linux 或 Windows Docker 环境 准备传输介质 U盘、移动硬盘&#xff0c;或企业内部网络共享路径 确认当前内网 Dify 版本和配置 确认版本号&#xff0c;备份配置文件和数据库 二、外…...

Windows下运行Redis并设置为开机自启的服务

下载Redis-Windows 点击redis-windows-7.4.0下载链接下载Redis 解压之后得到如下文件 右键install_redis.cmd文件&#xff0c;选择在记事本中编辑。 将这里改为redis.windows.conf后保存&#xff0c;退出记事本&#xff0c;右键后选择以管理员身份运行。 在任务管理器中能够…...

网络编程之网络基础

基础理论&#xff1a;IP、子网掩码、端口号、字节序、网络基础模型、传输协议 socket&#xff1a;TCP、UDP、广播、组播、抓包工具的使用、协议头、并发服务器 Modbus协议 、HTTP协议、HTML、 分析服务器 源码、数据库 一、认识网络 网络&#xff1a;实现多设备通信 二、IP地址…...

Spring AI(11)——SSE传输的MCP服务端

WebMVC的服务器传输 支持SSE&#xff08;Server-Sent Events&#xff09; 基于 Spring MVC 的服务器传输和可选的STDIO运输 导入jar <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-server-webmvc</a…...

计算机网络备忘录

计算机网络 - 网络互联与互联网 计算机网络重点学习本章&#xff0c;属于核心知识 包含网络层和传输层 的 相关协议 计算机网络层次重点掌握网络层与传输层。其中网络层主要是IP协议&#xff0c;解决主机-主机通信&#xff0c;传输层主要是TCP/UDP 协议&#xff0c;解决应用-…...

Spring Boot论文翻译防丢失 From船长cap

本文内容 微服务 微服务风格的特性组件化&#xff08;Componentization &#xff09;与服务&#xff08;Services&#xff09;围绕业务功能的组织产品不是项目强化终端及弱化通道分散治理分散数据管理基础设施自动化容错性设计设计改进 微服务是未来吗其它 微服务系统多大微…...

[蓝桥杯]最优包含

最优包含 题目描述 我们称一个字符串 SS 包含字符串 TT 是指 TT 是 SS 的一个子序列&#xff0c;即可以从字符串 SS 中抽出若干个字符&#xff0c;它们按原来的顺序组合成一个新的字符串与 TT 完全一样。 给定两个字符串 SS 和 TT&#xff0c;请问最少修改 SS 中的多少个字符…...

NuxtJS入门指南:环境安装及报错解决

在学习NuxtJS的过程中&#xff0c;正确的安装环境是非常重要的一步。然而&#xff0c;有时候在安装过程中会遇到一些问题&#xff0c;比如使用corepack安装pnpm时出现的错误。本文将详细介绍如何安装NuxtJS以及解决上述安装过程中遇到的问题。 Nuxt.js简介 Nuxt.js是一个强大的…...

在java 项目 springboot3.3 中 调用第三方接口(乙方),如何做到幂等操作(调用方为甲方,被调用方为乙方)? 以及啥是幂等操作?

什么是幂等操作&#xff1f; 幂等性&#xff08;Idempotence&#xff09; 是指一个操作无论执行一次还是多次&#xff0c;对系统状态产生的影响都是相同的。在分布式系统中&#xff0c;由于网络不稳定、超时重试等因素&#xff0c;接口可能被重复调用&#xff0c;幂等设计能确…...

贪心算法应用:集合划分问题详解

贪心算法与集合划分问题详解 集合划分问题是组合优化中的经典问题&#xff0c;其核心目标是将元素集合划分为若干满足特定条件的子集。本文将深入探讨贪心算法在集合划分中的应用&#xff0c;涵盖算法原理、适用场景、Java实现细节及优化策略。 一、集合划分问题定义 1.1 基础…...

electron下载文件

const http require(http); const https require(https); const fs require(fs); const { URL } require(url); const path require(path);// 下载文件函数 function downloadFile(url, savePath) {return new Promise((resolve, reject) > {try {console.log(开始下载…...

Neo4j 数据导入:原理、技术、技巧与最佳实践

在构建知识图谱、社交网络分析或复杂关系系统时,高效准确地将数据导入Neo4j图数据库至关重要。本文基于官方文档,深入探讨Neo4j数据导入的核心原理、主流技术、实用技巧及行业最佳实践。 Neo4j的数据导入不仅是技术操作,更是图模型设计的延续。深入理解存储原理、灵活运用C…...

数论~~~

质数 质数Miller-Rabin算法质因子分解质数筛埃氏筛欧拉筛如果只是计数&#xff0c;埃氏筛改进 快速幂乘法快速幂矩阵快速幂1维k阶实战(提醒&#xff1a;最好在mul函数中作乘法时加上&#xff08;long long&#xff09;的强制类型转换 &#xff0c;或者全部数组换成long long&am…...

web第十次课后作业--Mybatis的增删改查

&#xff08;一&#xff09;删除操作 功能&#xff1a;根据主键删除数据 SQL 语句 -- 删除id17的数据 delete from emp where id 17;Mybatis 框架让程序员更关注于 SQL 语句 接口方法 Mapper public interface EmpMapper {//Delete("delete from emp where id 17&qu…...

贪心算法应用:集合覆盖问题详解

贪心算法与集合覆盖问题详解 贪心算法在组合优化问题中展现出独特优势&#xff0c;集合覆盖问题&#xff08;Set Cover Problem&#xff09;是其中的经典案例。本文将用2万字全面解析贪心算法在集合覆盖/划分中的应用&#xff0c;涵盖算法原理、正确性分析、Java实现、复杂度证…...

BLOB 是用来存“二进制大文件”的字段类型

BLOB 是用来存“二进制大文件”的字段类型&#xff0c;可以存 0 到 65535 字节的数据&#xff0c;常用来存图片、音频、PDF、Word 等“非文本”内容。 BLOB 0-65535 bytes 二进制形式的长文本数据✅ 关键词 1&#xff1a;BLOB 全称&#xff1a;Binary Large Object中文&…...

5.Declare_Query_Checking.ipynb

这个教程 5.Declare_Query_Checking.ipynb 主要讲解了如何使用 DECLARE 查询检查器来分析事件日志中的约束关系。 1. 主要功能 这个教程展示了如何使用 DeclareQueryChecker 来&#xff1a; 发现事件日志中满足特定支持度的约束模式查询不同类型的约束关系分析活动之间的关联…...

【知识点】第7章:文件和数据格式化

文章目录 知识点整理文件概述文件的打开和关闭文件的读操作文件的写操作 练习题填空题选择题​​ 知识点整理 文件概述 文件是一个存储在辅助存储器上的数据序列&#xff0c;可以包含任何数据内容。概念上&#xff0c;文件是数据的集合和抽象&#xff0c;类似地&#xff0c;函…...

NetSuite Bundle - Dashboard Refresh

儿童节快乐&#xff01; 今朝发一个Bundle&#xff0c;解决一个NetSuite Dashboard的老问题。出于性能上的考虑&#xff0c;NetSuite的Dashboard中的Portlet&#xff0c;只能逐一手工刷新。有人基于浏览器做了插件&#xff0c;可以进行自动刷新。但是在我们做项目部署时&#…...

AI+3D 视觉重塑塑料袋拆垛新范式:迁移科技解锁工业自动化新高度

在工业自动化浪潮席卷全球的当下&#xff0c;仓储物流环节的效率与精准度成为企业降本增效的关键战场。其中&#xff0c;塑料袋拆垛作为高频、高重复性的作业场景&#xff0c;传统人工或机械臂操作面临着诸多挑战。迁移科技&#xff0c;作为行业领先的 3D 工业相机和 3D 视觉系…...

智慧赋能:移动充电桩的能源供给革命与便捷服务升级

在城市化进程加速与新能源汽车普及的双重推动下&#xff0c;移动充电桩正成为能源供给领域的一场革命。传统固定充电设施受限于布局与效率&#xff0c;难以满足用户即时、灵活的充电需求&#xff0c;而移动充电桩通过技术创新与服务升级&#xff0c;打破了时空壁垒&#xff0c;…...

【项目实践】SMBMS(Javaweb版)(三)登出、注册、注销、修改

文章目录 登出、注册、注销、修改登出操作的实现逻辑及方式防止用户登出后可以继续访问修改密码功能实现导入jsp实现Dao层数据接口实现Service层业务接口注册Servlet 注册和注销 用户的方式导入jsp实现Dao层的数据逻辑实现Service逻辑注册Servlet 登出、注册、注销、修改 登出…...

斐波那契数列------矩阵幂法

斐波那契数列 斐波拉楔数是我们在学递归的使用看到的题目&#xff0c;但递归法是比较慢的&#xff0c;后面我们用循环递进来写的&#xff0c;但今天我有遇到了新的方法—— 矩阵幂法&#xff08;线性代数的知识点&#xff09;。 矩阵幂法&#xff1a; F11*F10*F2; F20*F11*…...

【Go语言基础【四】】局部变量、全局变量、形式参数

文章目录 一、一句话总结二、作用域分类1. 局部变量&#xff08;函数内/块内变量&#xff09;1.1、语法说明1.2、示例 2. 全局变量&#xff08;包级变量&#xff09;2.1、语法说明2.2、示例&#xff1a;全局变量的访问 3. 形式参数&#xff08;函数参数&#xff09; 三、作用域…...

DeepSeek 赋能车路协同:智能交通的破局与重构

目录 一、引言二、智能交通车路协同系统概述2.1 系统定义与原理2.2 系统构成2.3 发展现状与挑战 三、DeepSeek 技术剖析3.1 DeepSeek 简介3.2 核心技术原理3.2.1 Transformer 架构3.2.2 混合专家架构&#xff08;MoE&#xff09;3.2.3 多头潜在注意力&#xff08;MLA&#xff0…...

RabbitMQ 的异步化、解耦和流量削峰三大核心机制

RabbitMQ 的异步化、解耦和流量削峰三大核心机制 RabbitMQ 是解决数据库高并发问题的利器&#xff0c;通过异步化、解耦和流量削峰三大核心机制保护数据库。下面从设计思想到具体实现&#xff0c;深入剖析 RabbitMQ 应对高并发的完整方案&#xff1a; 一、数据库高并发核心痛点…...