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

解码C语言九条语句

选择结构

if

一、基本语法

if (条件表达式) {
// 条件为真时执行的代码块
} else {
// 条件为假时执行的代码块(可选)
}

二、条件表达式的本质

  • 条件表达式可以是任何返回整型值的表达式

    • 0 表示假(false)。
    • 非0 表示真(true)。
  • 示例

    if (5) { ... }// 条件为真(非0)
    if (0) { ... }// 条件为假
    

三、常见用法

1. 单分支条件判断

if (score >= 60) {printf("及格\n");
}

2. 双分支条件判断

if (score >= 60) {printf("及格\n");
} else {printf("不及格\n");
}

3. 多分支条件判断(else if

if (score >= 90) {printf("优秀\n");
} else if (score >= 80) {printf("良好\n");
} else if (score >= 60) {printf("及格\n");
} else {printf("不及格\n");
}

switch

一、基本语法

switch (表达式) {case 常量1:// 代码块1break;case 常量2:// 代码块2break;default:// 默认代码块
}

二、关键规则

  1. 表达式类型:必须是 整型枚举类型intcharenum 等)。
  2. case 常量:必须是 编译时常量(如 5'A'),不能是变量或范围或浮点型。
  3. case 穿透:若省略 break,程序会继续执行下一个 case 的代码。
  4. default 分支:可选,当所有 case 不匹配时执行。

三、代码示例

1. 基础示例

#include <stdio.h>int main() {char grade = 'B';switch (grade) {case 'A':printf("优秀\n");break;case 'B':printf("良好\n");break;case 'C':printf("及格\n");break;default:printf("未知等级\n");}return 0;
}

输出良好

循环结构

while

一、基本语法

while (循环条件) {
// 循环体代码
}
  • 执行流程
    1. 检查条件是否为真(非0)。
    2. 若为真,执行循环体,然后重复步骤1;否则退出循环。

二、代码示例

1. 基础用法:打印1~5

#include <stdio.h>int main() {int i = 1;while (i <= 5) {printf("%d ", i);i++;}return 0;
}

输出1 2 3 4 5

2. 输入验证(确保用户输入正数)

int num;
printf("请输入一个正数:");
scanf("%d", &num);
while (num <= 0) {printf("输入无效,请重新输入:");scanf("%d", &num);
}

do {} while

一、基本语法

do {
// 循环体代码(至少执行一次)
} while (循环条件);
  • 执行流程
    1. 先执行循环体代码。
    2. 检查条件是否为真(非0)。
    3. 若条件为真,重复步骤1;否则退出循环。
  • 注意while 后的分号 ; 不可省略。

二、代码示例

1. 基础示例:输入验证(必须输入正数)

#include <stdio.h>int main() {int num;do {printf("请输入一个正数:");scanf("%d", &num);} while (num <= 0);// 若输入非正数,重复循环printf("输入正确:%d\n", num);return 0;
}

2. 计算阶乘

int n = 5, fact = 1, i = 1;
do {fact *= i;i++;
} while (i <= n);
printf("%d! = %d\n", n, fact);// 输出:5! = 120

三、do-while vs while

特性 do-while while
执行顺序 先执行循环体,后检查条件 先检查条件,后执行循环体
最少次数 至少执行1次 可能0次(条件初始为假时不执行)
适用场景 需先执行代码再判断的场景 条件可能初始不满足的场景

for

一、基本语法

for (初始化表达式; 循环条件; 更新表达式) {
// 循环体代码
}
  • 执行顺序
    1. 初始化表达式:仅在循环开始时执行一次。
    2. 检查循环条件:若为真(非0),执行循环体;否则退出。
    3. 执行循环体
    4. 执行更新表达式
    5. 重复步骤2~4。

二、代码示例

1. 打印1~5

#include <stdio.h>int main() {for (int i = 1; i <= 5; i++) {printf("%d ", i);}return 0;
}

输出1 2 3 4 5

2. 遍历数组

int arr[] = {10, 20, 30};
for (int i = 0; i < 3; i++) {printf("%d ", arr[i]);// 输出:10 20 30
}

三、for vs while

特性 for while
适用场景 循环次数已知或需精确控制 循环次数未知或条件复杂
代码紧凑 初始化、条件、更新集中在一行 循环变量需在外部声明和更新
变量作用域 C99起可在初始化部分声明变量(作用域限于循环) 变量需在外部声明

跳转语句

break

一、基本语法与作用

break 语句用于 立即终止当前所在的循环(for/while/do-while)或 switch 语句,并跳转到其后的代码继续执行。

二、核心应用场景

1. 终止 switch 中的 case 穿透

switch (value) {case 1:printf("Case 1\n");break;// 终止switch,避免执行case 2case 2:printf("Case 2\n");break;default:printf("Default\n");
}

2. 提前退出循环

当满足特定条件时跳出循环:

for (int i = 0; i < 10; i++) {if (i == 5) {break;// 当i=5时终止循环}printf("%d ", i);// 输出:0 1 2 3 4
}

三、代码示例

1. 搜索数组元素

int arr[] = {2, 4, 6, 8, 10};
int target = 6;
int found = 0;for (int i = 0; i < 5; i++) {if (arr[i] == target) {found = 1;break;// 找到后立即退出循环}
}
printf("%s\n", found ? "找到" : "未找到");// 输出:找到

2. 多层循环中的 break

for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (j == 1) {break;// 仅跳出内层循环}printf("(%d,%d) ", i, j);}
}
// 输出:(0,0) (1,0) (2,0)

continue

一、基本语法与作用

continue 语句用于 跳过当前循环迭代的剩余代码,直接进入下一次循环的条件检查(for/while/do-while)。

二、核心应用场景

1. 跳过特定条件的迭代

for (int i = 0; i < 10; i++) {if (i % 2 == 0) {continue;// 跳过偶数}printf("%d ", i);// 输出:1 3 5 7 9
}

2. 处理输入过滤

int num;
for (int i = 0; i < 5; i++) {scanf("%d", &num);if (num < 0) {continue;// 忽略负数}printf("有效输入:%d\n", num);
}

三、continue 的详细规则

  1. 作用范围:仅影响 最内层循环

  2. 执行流程

    • for 循环:跳过循环体剩余代码,执行 更新表达式,然后检查条件。
    • while/do-while 循环:跳过剩余代码,直接检查循环条件。
  3. 与 break 的区别

    语句 作用 循环是否继续
    break 完全终止当前循环
    continue 跳过当前迭代,进入下一次 是(若条件仍满足)

四、代码示例

1. 跳过无效数据

处理数组时忽略非正数:

int arr[] = {3, -2, 5, 0, 7};
for (int i = 0; i < 5; i++) {if (arr[i] <= 0) {continue;}printf("%d ", arr[i]);// 输出:3 5 7
}

2. 结合嵌套循环

for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (j == 1) {continue;// 跳过内层循环的j=1}printf("(%d,%d) ", i, j);}
}
// 输出:(0,0) (0,2) (1,0) (1,2) (2,0) (2,2)

return

一、基本语法与作用

return 语句用于 从函数中返回一个值终止当前函数的执行,将控制权交还给函数调用者。

基本形式:

return;// 用于无返回值的函数(void)
return 表达式;// 用于有返回值的函数

二、核心应用场景

1. 返回值给调用者

int add(int a, int b) {return a + b;// 返回两数之和
}int result = add(3, 5);// result = 8

2. 提前终止函数执行

int find_first_positive(int arr[], int n) {for (int i = 0; i < n; i++) {if (arr[i] > 0) {return i;// 找到正数后立即返回索引}}return -1;// 未找到时返回-1
}

3. 无返回值函数(void)中的 return

void print_hello() {printf("Hello");return;// 可省略,函数执行到末尾自动返回
}

三、return 的详细规则

  1. 返回值类型匹配

    返回值必须与函数声明类型兼容,否则编译器可能警告或自动转换。

    float divide(int a, int b) {return a / b;// 返回int值会被隐式转为float
    }
    
  2. main函数的返回值

    main 函数返回 int 类型,通常用 0 表示成功,非零表示错误。

    int main() {// 程序逻辑return 0;
    }
    
  3. 不可返回局部变量的地址

    局部变量在函数结束后被销毁,返回其地址会导致未定义行为。

    int* bad_example() {int x = 5;return &x;// 错误!x的內存已被释放
    }
    

四、代码示例

1. 返回结构体

typedef struct {int x;int y;
} Point;Point create_point(int a, int b) {Point p = {a, b};return p;// 返回结构体副本
}

2. 多条件返回

int max(int a, int b) {if (a > b) {return a;} else {return b;}
}

3. 提前返回简化逻辑

int is_valid(int value) {if (value < 0) {return 0;// 提前返回无效}if (value > 100) {return 0;// 提前返回无效}return 1;// 有效
}

return

一、基本语法与作用

return 语句用于 从函数中返回一个值终止当前函数的执行,将控制权交还给函数调用者。

基本形式:

return;// 用于无返回值的函数(void)
return 表达式;// 用于有返回值的函数

二、核心应用场景

1. 返回值给调用者

int add(int a, int b) {return a + b;// 返回两数之和
}int result = add(3, 5);// result = 8

2. 提前终止函数执行

int find_first_positive(int arr[], int n) {for (int i = 0; i < n; i++) {if (arr[i] > 0) {return i;// 找到正数后立即返回索引}}return -1;// 未找到时返回-1
}

3. 无返回值函数(void)中的 return

void print_hello() {printf("Hello");return;// 可省略,函数执行到末尾自动返回
}

三、return 的详细规则

  1. 返回值类型匹配

    返回值必须与函数声明类型兼容,否则编译器可能警告或自动转换。

    float divide(int a, int b) {return a / b;// 返回int值会被隐式转为float
    }
    
  2. main函数的返回值

    main 函数返回 int 类型,通常用 0 表示成功,非零表示错误。

    int main() {// 程序逻辑return 0;
    }
    
  3. 不可返回局部变量的地址

    局部变量在函数结束后被销毁,返回其地址会导致未定义行为。

    int* bad_example() {int x = 5;return &x;// 错误!x的內存已被释放
    }
    

四、代码示例

1. 返回结构体

typedef struct {int x;int y;
} Point;Point create_point(int a, int b) {Point p = {a, b};return p;// 返回结构体副本
}

2. 多条件返回

int max(int a, int b) {if (a > b) {return a;} else {return b;}
}

3. 提前返回简化逻辑

int is_valid(int value) {if (value < 0) {return 0;// 提前返回无效}if (value > 100) {return 0;// 提前返回无效}return 1;// 有效
}

1# return

一、基本语法与作用

return 语句用于 从函数中返回一个值终止当前函数的执行,将控制权交还给函数调用者。

基本形式:

return;// 用于无返回值的函数(void)
return 表达式;// 用于有返回值的函数

二、核心应用场景

1. 返回值给调用者

int add(int a, int b) {return a + b;// 返回两数之和
}int result = add(3, 5);// result = 8

2. 提前终止函数执行

int find_first_positive(int arr[], int n) {for (int i = 0; i < n; i++) {if (arr[i] > 0) {return i;// 找到正数后立即返回索引}}return -1;// 未找到时返回-1
}

3. 无返回值函数(void)中的 return

void print_hello() {printf("Hello");return;// 可省略,函数执行到末尾自动返回
}

三、return 的详细规则

  1. 返回值类型匹配

    返回值必须与函数声明类型兼容,否则编译器可能警告或自动转换。

    float divide(int a, int b) {return a / b;// 返回int值会被隐式转为float
    }
    
  2. main函数的返回值

    main 函数返回 int 类型,通常用 0 表示成功,非零表示错误。

    int main() {// 程序逻辑return 0;
    }
    
  3. 不可返回局部变量的地址

    局部变量在函数结束后被销毁,返回其地址会导致未定义行为。

    int* bad_example() {int x = 5;return &x;// 错误!x的內存已被释放
    }
    

四、代码示例

1. 返回结构体

typedef struct {int x;int y;
} Point;Point create_point(int a, int b) {Point p = {a, b};return p;// 返回结构体副本
}

2. 多条件返回

int max(int a, int b) {if (a > b) {return a;} else {return b;}
}

3. 提前返回简化逻辑

int is_valid(int value) {if (value < 0) {return 0;// 提前返回无效}if (value > 100) {return 0;// 提前返回无效}return 1;// 有效
}

1# return

一、基本语法与作用

return 语句用于 从函数中返回一个值终止当前函数的执行,将控制权交还给函数调用者。

基本形式:

return;// 用于无返回值的函数(void)
return 表达式;// 用于有返回值的函数

二、核心应用场景

1. 返回值给调用者

int add(int a, int b) {return a + b;// 返回两数之和
}int result = add(3, 5);// result = 8

2. 提前终止函数执行

int find_first_positive(int arr[], int n) {for (int i = 0; i < n; i++) {if (arr[i] > 0) {return i;// 找到正数后立即返回索引}}return -1;// 未找到时返回-1
}

3. 无返回值函数(void)中的 return

void print_hello() {printf("Hello");return;// 可省略,函数执行到末尾自动返回
}

三、return 的详细规则

  1. 返回值类型匹配

    返回值必须与函数声明类型兼容,否则编译器可能警告或自动转换。

    float divide(int a, int b) {return a / b;// 返回int值会被隐式转为float
    }
    
  2. main函数的返回值

    main 函数返回 int 类型,通常用 0 表示成功,非零表示错误。

    int main() {// 程序逻辑return 0;
    }
    
  3. 不可返回局部变量的地址

    局部变量在函数结束后被销毁,返回其地址会导致未定义行为。

    int* bad_example() {int x = 5;return &x;// 错误!x的內存已被释放
    }
    

四、代码示例

1. 返回结构体

typedef struct {int x;int y;
} Point;Point create_point(int a, int b) {Point p = {a, b};return p;// 返回结构体副本
}

2. 多条件返回

int max(int a, int b) {if (a > b) {return a;} else {return b;}
}

3. 提前返回简化逻辑

int is_valid(int value) {if (value < 0) {return 0;// 提前返回无效}if (value > 100) {return 0;// 提前返回无效}return 1;// 有效
}

return

一、基本语法与作用

return 语句用于 从函数中返回一个值终止当前函数的执行,将控制权交还给函数调用者。

基本形式:

return;// 用于无返回值的函数(void)
return 表达式;// 用于有返回值的函数

二、核心应用场景

1. 返回值给调用者

int add(int a, int b) {return a + b;// 返回两数之和
}int result = add(3, 5);// result = 8

2. 提前终止函数执行

int find_first_positive(int arr[], int n) {for (int i = 0; i < n; i++) {if (arr[i] > 0) {return i;// 找到正数后立即返回索引}}return -1;// 未找到时返回-1
}

3. 无返回值函数(void)中的 return

void print_hello() {printf("Hello");return;// 可省略,函数执行到末尾自动返回
}

三、return 的详细规则

  1. 返回值类型匹配

    返回值必须与函数声明类型兼容,否则编译器可能警告或自动转换。

    float divide(int a, int b) {return a / b;// 返回int值会被隐式转为float
    }
    
  2. main函数的返回值
    main 函数返回 int 类型,通常用 0 表示成功,非零表示错误。

int main() {// 程序逻辑return 0;
}
  1. 不可返回局部变量的地址

    局部变量在函数结束后被销毁,返回其地址会导致未定义行为。

    int* bad_example() {int x = 5;return &x;// 错误!x的內存已被释放
    }
    

四、代码示例

1. 返回结构体

typedef struct {int x;int y;
} Point;Point create_point(int a, int b) {Point p = {a, b};return p;// 返回结构体副本
}

2. 多条件返回

int max(int a, int b) {if (a > b) {return a;} else {return b;}
}

3. 提前返回简化逻辑

int is_valid(int value) {if (value < 0) {return 0;// 提前返回无效}if (value > 100) {return 0;// 提前返回无效}return 1;// 有效
}

goto(非必要不用)

一、基本语法

goto 标签名;// 跳转到标签处
...
标签名:// 标签定义代码;

二、核心用途与争议

1. 合理使用场景

  • 集中错误处理

    在资源分配失败时跳转到清理代码,避免重复逻辑。

    int func() {FILE *f1 = fopen("a.txt", "r");if (!f1) goto ERR;FILE *f2 = fopen("b.txt", "r");if (!f2) goto CLOSE_F1;// 正常流程...fclose(f2);
    CLOSE_F1:fclose(f1);
    ERR:return -1;
    }
    
  • 跳出深层嵌套循环

    替代多层 break 或标志变量。

    for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if (条件) {goto EXIT_LOOP;// 直接跳出所有循环}}
    }
    EXIT_LOOP:
    // 后续代码
    

2. 争议与风险

  • 代码可读性降低:过度使用 goto 会导致程序流程混乱,难以维护。
  • 违反结构化编程原则:可能破坏代码的块状结构,增加调试难度。

相关文章:

解码C语言九条语句

选择结构 if 一、基本语法 if (条件表达式) { // 条件为真时执行的代码块 } else { // 条件为假时执行的代码块(可选) }二、条件表达式的本质条件表达式可以是任何返回整型值的表达式:0 表示假(false)。 非0 表示真(true)。示例: if (5) { ... }// 条件为真(非0) if …...

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。 留言:之前再讲mysql时候,经常有人可以远程登录的时候,结果发现没办法本地登录了,具体体现方式是这样的(看问题体现):现在我可以明确的告诉你们,是你们的root认证太多了,系统无法识别你要的是哪一个root,…...

django登录注册案例(上) - 详解

django登录注册案例(上) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fo…...

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New…...

某交互题选讲的补题记录

CF750F New Year and Finding Roots 考虑第一步只能随机找点,找完点之后除非找到叶子或者根,不然完全等于啥都不知道。 于是找叶子节点,从这个点的两个邻边往下一直走一定能走到叶子,那么此时这条链的中点的父亲就被确定了。 多这么整几次,一直往上跳就肯定能找到根,但操…...

openwrt ipv6 NAT6配置

在诸如校园网或者其他需要认证的网络条件下,由于实名制上网的要求,通常不支持DHCP6-PD,因此要使用IPV6需要使用NAT6目前最新版本的官方openwrt(23.05)已经自动支持NAT6了(firewall.xxx.masq6),因此,如果需要开启ipv6,不再需要复杂的安装各种包,直接LuCI网页操作即可。发…...

奶龙抽象语录

奶龙の无上恩情!!!开坑于 $ 2025-9-15 $ 最后更新于 $ 2025-9-17 $上课 班会 我们为什么要规范普通话,不就跟当年秦始皇车同文,书同轨一样吗? —— 25-9-16 其他 我们班五十几号人,我也不要求别的,声音比\(11\)班(人口60+)大就行了。 —— 25-8-31...

解题报告-P11670 [USACO25JAN] Cow Checkups S

P11670 [USACO25JAN] Cow Checkups S 题目描述 Farmer John 的 \(N\)(\(1 \leq N \leq 5 \cdot 10^5\))头奶牛站成一行,奶牛 \(1\) 在队伍的最前面,奶牛 \(N\) 在队伍的最后面。FJ 的奶牛也有许多不同的品种。他用从 \(1\) 到 \(N\) 的整数来表示每一品种。队伍从前到后第 …...

word vba 对 带编号格式的PO单 段落下添加对应的图片

Attribute VB_Name = "APO_PathStaging" Option Explicit Configuration Constants Private Const BASE_FOLDER As String = "\\10.0.0.10\部门共享\PO\" Private Const START_PARA As Long = 582 Private Const PATH_TAG As String = "[IMG] " …...

解题报告-P11671 [USACO25JAN] Farmer Johns Favorite Operation S

P11671 [USACO25JAN] Farmer Johns Favorite Operation S 题目描述 又是 Farmer John 的农场上寒冷而无聊的一天。为了打发时间,Farmer John 发明了一种关于在整数数组上进行操作的有趣的休闲活动。 Farmer John 有一个包含 \(N\)(\(1 \leq N \leq 2 \cdot 10^5\))个非负整数…...

解码C语言运算符

算术运算符运算符 描述 示例 结果+ 加法 5 + 3 8- 减法 5 - 3 2* 乘法 5 * 3 15/ 除法 5 / 2 2% 取模 5 % 2 1++ 自增 a++ a+1-- 自减 a-- a-1注意:整数除法会截断小数部分 取模运算只能用于整数类型关系运算符运算符 描述 示例 结果== 等于 5 == 3 0!= 不等于 5 != 3 1> 大…...

多进程

import time from concurrent.futures import ProcessPoolExecutor, TimeoutError from pydantic import BaseModel import multiprocessing as mp import os import signalclass SharedData(BaseModel):value: int = 0def worker(shared_value, data_dict):# 真实场景中的任务…...

93. 递归实现组合型枚举

93. 递归实现组合型枚举 if (sum + n - u < m) return; 如果当前记录的数据 加上 后面的所有可以被选的数据 时无法达到要求时终止 state记录了哪些数据被选,哪些没被选的 state | 1 << u 选择当前的数据,比如0101 -> 10101 #include <iostream> using n…...

Sort方法学习(伪代码记录)

Sort 方法总结 selectionSort(vector& a) 核心思想:选择最大/小的数移到最前/后 // 1. 计算数组长度// 2. 控制已排序部分的边界 for(i=0; i<n; i++){// 3. 在未排序部分(j到末尾)中寻找真正的maxfor(j=i+1, j<n; j++) find(max);// 3. 将最大的数放至数组头swap(…...

深入解析:【每日一问】运算放大器与比较器有什么区别?

深入解析:【每日一问】运算放大器与比较器有什么区别?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

9.17支配对问题专题总结

概括 每次查询一定范围内的点组成的点对中的最优值,而通过一些分析去减少有用点对的数量,这样子的有用点对称为 支配对 T1策略是将 \(a_i\) 相同的序列取出来单独考虑 固定 \(b_i<b_j,i<j\) 然后考虑能找出来一个序列 \(i,j1,j2,j3...\) 但是发现选 \(i,j2\) 不如选 \(…...

Xじゃないか

並行じゃないか いや 通信じゃないか わかりあえなくて 愛じゃないか ——絡みなんです それがAIなんです。\[\newcommand{\c}{\mathcal} \newcommand{\eps}{\epsilon} \newcommand{\co}[2]{{\color{#1}{#2}}} \]Lec 1 数据越来越多,我们该怎么办?并且,这其中绝大部分 (…...

开源收银体系_大型收银系统源码_OctShop

开源收银体系_大型收银系统源码_OctShoppre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...

XXL-JOB(2)

XXL-JOB(2)1、入门和集成<!-- xxl-job-core --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.5.0</version></dependency> 搭建控制台 XXL-JOB-ADMIN jar 本地启动,…...

P9753 [CSP-S 2023] 消消乐

前置算法动态规划 hash哈希题目大意 给定一个字符串,可以将相邻两个相同的字符删除,然后合并成一个新序列。 例如:abba,可以先将两个 b 删除,然后合并成 aa,最后删除 a。 求出有多少个字串,最后可以将其变为空串,我们称之为合法的字串。 思路 看到数据范围,只能使用 \…...

9.16 CSP-S模拟22 改题记录

HZOJ 写在前面 连着两天吃了两坨。。。好吧,那就一坨一坨地消化一下吧。话说如果这真是S组难度那我不真就废了?这场真是T1猜结论题,T2就来坨大的,不知道啥是二分图暴力都不会打。T3反正就是我是大春竹。T4上演忘记结论创造结论,然鹅实际上还是不会写。没有文件输入输,没有…...

记录知识

记录知识...

AT_agc058_b [AGC058B] Adjacent Chmax

转化为对某个区间染色,然后设 \(f_{i, j}\) 为前 \(i\) 种颜色染了 \([1, j]\) 的方案数,简单转移即可。...

Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析

本文详细分析了Jenkins GitHub插件CVE-2018-1000600漏洞的利用方法,通过CSRF漏洞和权限缺失实现凭证窃取与完全响应SSRF攻击,包含PoC代码和影响版本范围说明。Jenkins - CVE-2018-1000600 PoC 来源博客文章 https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with…...

NOIP 集训日记(学术)

workwork学术版。 9.9 P4117 [Ynoi2018] 五彩斑斓的世界 分块神题。 拿到题以后发现不能直接做,然后你就开始观察。 设区间最大值为 \(maxn\) ,查询的数为 \(x\) 一个显然的性质:把所有小于等于 \(x\) 的数加上 \(x\) ,然后区间减 \(x\) ,得到的结果不变。然后我们思考一下…...

linux中mysql如何远程连接

linux中mysql如何远程连接 两个步骤: 第一:让root允许远程登录 update user set host = % where user = root;第二:给予root用户最大数据库权限 grant all privileges on *.* to root@% identified by 123456; flush privileges;实操: [root@bogon ~]# mysql -uroot -p1234…...

详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测

详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …...

深入解析:PYcharm——pyqt音乐播放器

深入解析:PYcharm——pyqt音乐播放器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据

全文链接:https://tecdat.cn/?p=43897原文出处:拓端抖音号@拓端tecdat在数据科学领域,线性回归是拟合变量间线性关系的基础工具,但传统的Frequentist线性回归仅能提供参数的点估计,无法量化参数的不确定性——这在金融风险预测、工业设备状态监测等实际业务场景中往往不够…...

威联通NAS如何导入本地docker镜像

威联通NAS如何导入本地docker镜像 【前言】:有一段时间没有维护NAS docker了,笔记本电脑坏了更换后重新配置开发环境,也就没去折腾这些,有些命令忘记了,重新整理一下,输出驱动输入,还可能帮助到。欢迎大家一起友好讨论, 祝好: 【摘要】:本文主要围绕威联通NAS如何导入…...

2025.9.17

卷2选择 位运算 位运算的优先级很低,没有括号时运算顺序靠后。...

mysql库缺失

mysql库缺失libncurses.so.5和libtinfo.so.5 报错信息: mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory;mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared obj…...

flask简单路由(视图函数)

简单路由(视图函数) 简单返回html @app.route(/tmp) def tmp_page(): # 函数名为tmp_page,对应url_for(tmp_page)return render_template(tmp.html)@app.route(/Custom_routing) def Custom_routing_page(): return render_template(/Custom_routing/index.html) # Custom…...

【学习笔记】拉格朗日插值

EZ、什么是拉格朗日插值? 众所周知,\(n+1\) 个点可以唯一确定一个 \(n\) 次多项式。 拉格朗日插值法要解决的就是给定 \(n+1\) 个点确定一个多项式 \(f(x)\),求出在自变量 \(x=k\) 时多项式的取值。 拉格朗日插值法的思想和 CRT 非常像——把每一个维度独立拆开来。 考虑对一…...

一种基于动作指令交互的动态活体检测技术,提升人脸识别安全性

在当今数字化时代,人脸识别技术已广泛应用于金融支付、门禁考勤、手机解锁等关键场景,其便捷性深受用户青睐。然而,随之而来的安全风险也日益凸显:高精度的照片、屏幕翻拍、甚至3D面具等攻击手段层出不穷,令传统的静态人脸识别技术面临严峻挑战。为了构筑更加坚固的安全防…...

[系统] Windows 已有office版本和visio不兼容的解决方案

最近IC相关论文想用VISIO来画图,但是遇到了如下痛点:VISIO软件的安装必须与现有Office一致,例如现有word等均为32bit,VISIO也必须使用32bit的安装包; 同为32/64bit安装时报错“Office 16 Click-to-Run Extensibility Component”,这种情况需要输入regedit,打开注册表,依…...

CF 2127F Hamed and AghaBalaSar

通过枚举破除限制,贡献拆分,等价思考,容斥怎么拆贡献又把自己拆乱了,我也是完蛋了。 首先考虑这个 \(f(a)\) 是什么。 发现跳(仅限第一个操作)的时候形如 \(x\to nxt(x)\to nxt(nxt(x))\to \cdots\),贡献就为 \((a_{nxt(x)} - a_x) + (a_{nxt(nxt(x))} - a_{nxt(x)})\)。…...

AT_agc055_b [AGC055B] ABC Supremacy

一眼为学了 trick 不会用。 这种题考虑钦定代表元两边往中间靠。 你思考一下发现任意一个 \(ABC, BCA, CAB\) 可以在序列里任意乱跑,于是你可以把起始状态和最终状态的这种东西全部提前,我们只需要看剩下的部分是否一样就好。 属于是脑电波题。...

“Sequential Thinking MCP Server 和codex等AI工具本身任务拆解功能对比

从你提供的文件内容来看,这个工具是一个名为“Sequential Thinking MCP Server”的工具,它用于通过结构化的思考过程解决问题。以下是对它与Codex或Claude Code CLI本身任务拆解功能的不同之处的分析: 功能定位Sequential Thinking MCP Server:专注于通过动态和反思性的思考…...

基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025

基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courie…...

网易伏羲:当算法遇见社交,解码游戏世界的连接密码

日前,2025游戏安全与创新大会圆满召开,大会以“AI融合创新”与“全链路安全防护”为双主线,聚焦游戏策划与运营核心问题,深度解析AI与游戏结合的提效、玩法及体验升级路径;同时直面开发、运营、发行、支付、出海等阶段的关键挑战,涵盖作弊、合规、欺诈等议题,助力从业者…...

在 CentOS 7 上安装Nginx和配置http代理

1. 安装 EPEL 仓库 NGINX 不在 CentOS 的默认仓库中,因此首先需要安装 EPEL(Extra Packages for Enterprise Linux) 仓库。sudo yum install epel-release2. 安装 NGINX 通过 yum 包管理工具安装 NGINX。sudo yum install nginx3. 启动 NGINX 服务sudo systemctl start ngin…...

题解:P2624 [HNOI2008] 明明的烦恼

题解:P2624 [HNOI2008] 明明的烦恼 不会 $prufer$ 序列的请右转树的计数,先将 $prufer$ 序列掌握再做这题。 设有 $n$ 个节点,$deg_i$ 为每个节点的度数,由上题可得,此时可能的无根树的方案为: $$\frac{(n-2)!}{\prod_{i=1}^{n}(deg_i-1)!}$$ 但是这题只给了我们部分节点…...

在AI技术快速实现创想的时代,挖掘新需求成为核心竞争力——某知名DevOps学习平台需求洞察

该篇文章无摘要a.内容描述 该项目是一个结构化的DevOps学习资源,旨在帮助用户建立DevOps基础知识的系统化理解。核心功能定位是通过90天的学习计划,系统性地覆盖DevOps原则、流程和工具链的关键领域,包括DevOps基础、DevSecOps安全主题以及社区分享内容。 关键应用场景包括:…...

Windows Powershell 获取版本version

前言全局说明一、 1.源码 $PSVersionTable.PSVersion2.结果免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: https://www.cnblogs.com/music-liang/p/18813922 作者:悟透原文链接:https://www.cnblogs.com/wutou/p/19097392来源:博…...

XXL-JOB (1)

XXL-JOB (1)# 1 测试...

记录---Vue3对接UE,通过MQTT完成通讯

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣概述一个基于Vue3的实时视频流显示系统,主要用于连接和显示Unreal Engine (UE) 服务器的实时渲染内容。该页面集成了PixelStreaming技术和MQTT通信协议,提供了完整的视频流控制和交互功能。主要功能实时视频流显示:连接…...

《Real-Time Rendering》第一章 介绍

开篇实时渲染涉及在计算机上快速地生成图像,它是计算机图形学中最高交互性的领域。一张图像出现在屏幕上,观察者会行动或反应,这些反馈接着会影响后续要生成的图像。这种反应和渲染的循环发生在足够快的速率,让观察者看不到单独的图像,而是沉浸于一个动态的过程中。图像被…...

公益站Agent Router注册送200刀额度竟然是真的

昨天看到说Agent Router邀请注册送100美刀,我就点了别人的链接,使用github注册了一个,确实得到了额度。但是我去聊天那里,发现会有错误,以为这个不好用:但是今天测试了一下在Claude Code确实能用,而且速度也还可以!!感兴趣的朋友也快来试试吧!! 邀请链接:https://a…...

数据集中valid的作用

简单来说,valid(或 val)文件夹的存在是为了在模型训练过程中,定期、独立地评估模型的性能,以便进行模型调优、防止过拟合和选择最佳模型。它是机器学习工作流中至关重要的一环。 一般的数据集结构:1. Train(训练集)目的:这是模型“学习”所用的主要数据。模型通过反复…...