linux与c语言基础知识(未全部完成)
文章很多处理论,没办法写出来,(linux的一些理论问题,我有时间后,会逐个解决)
文章大多数的理论来字这个链接,
C语言快速入门-C语言基础知识-CSDN博客
一. linux(Ubuntu)
1. 基础命令(未完成,稍后补)
1.1. vim
vim是一个文本编辑器,挺强的
1.1.1 安装vim
(1)检查是否已安装 Vim:
vim --version
如果显示版本信息,说明已安装。
如果提示未安装,继续下一步。
(2)安装完整版 Vim:
sudo apt update && sudo apt install vim
Ubuntu 默认可能安装的是
vim-tiny
(精简版),建议替换为完整版。
1.1.2 Vim 的基本使用
Vim 是一个模态编辑器,分为 普通模式(Normal Mode)、插入模式(Insert Mode) 和 命令行模式(Command-Line Mode)。
1.1.3 基本操作流程
1. 启动 Vim(打开/新建文件:)
vim 文件名 # 打开文件(若文件不存在则新建)
2.进入插入模式
按下
i
:在光标前进入插入模式。按下
a
:在光标后进入插入模式。按下
o
:在下一行插入新行并进入插入模式。3.推出插入模式
按下
Esc
键返回普通模式。4.保存与退出
:w
:保存文件。
:q
:退出 Vim。
:wq
或:x
:保存并退出。
:q!
:强制退出(不保存修改)。
1.2 gdb工具
1.2.1 如何调试
1.2.2 设置断点(p,n,continue)
1.3 vsc中的调试
二. c语言基础知识
1 基础语法
-g: 使用该参数编译可以执行文件,得到调试表。
gdb ./a.out
list: list 1 列出源码。根据源码指定 行号设置断点。
b: b 20 在 20 行位置设置断点。
run/r: 运行程序
n/next: 下一条指令(会越过函数)
s/step: 下一条指令(会进入函数)
p/print: p i 查看变量的值。
continue:继续执行断点后续指令。
finish: 结束当前函数调用。
quit: 退出 gdb 当前调试。
2 二进制(符号位)(结合数据类型的范围来讲)(从Linux来讲)
1.源码
2.反码
3.补码
负整数存的是补码
3 数据类型
1.数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
C语言中没有String字符串类型吗????
c语言中string用char的数组形式来表示。下方代码有举例。
#include <stdio.h>int main() {char a = 'a'; // 字符型变量 achar a1[] = {'h', 'e', 'l', 'l', 'o', '\0'}; // 字符型数组 a1,注意加上结束符 '\0'char str1[] = "Hello"; // 字符数组表示字符串,即java中的stringchar *str2 = "World"; // 字符指针表示字符串short b = 10; // 短整型变量 bint c = 10; // 整型变量 clong d = 10; // 长整型变量 dfloat f = 10.0f; // 单精度浮点数 fdouble g = 10.00000; // 双精度浮点数 g// 输出变量的值printf("字符 a: %c\n", a);printf("字符数组 a1: %s\n", a1);printf("%s %s\n", str1, str2); printf("Length of str1: %zu\n", strlen(str1));//输出str1的长度,即为5printf("短整型 b: %d\n", b);printf("整型 c: %d\n", c);printf("长整型 d: %ld\n", d);printf("单精度浮点数 f: %.2f\n", f);printf("双精度浮点数 g: %.5f\n", g);return 0;}
2.intger型
int //整形
#include <stdio.h> // 引入stdio.h头文件以使用printf函数
#include <limits.h> // 引入limits.h头文件以获取取数据类型的范围
int main()
{/* 数据类型*/int a = 10; // 整数类型 (设置变量默认类型)float b = 3.14f; // 浮点数类型 (设置变量默认类型)char c = 'A'; // 字符类型 (设置变量默认类型)short d = 5; // 短整型 (设置变量默认类型)long e = 100000L; // 长整型 (设置变量默认类型)long long f = 10000000000LL; // 长长整型 (设置变量默认类型)unsigned int g = 20; // 无符号整数类型 (设置变量默认类型)unsigned char h = 'B'; // 无符号字符类型 (设置变量默认类型)unsigned short i = 10; // 无符号短整型 (设置变量默认类型)unsigned long j = 100000UL; // 无符号长整型 (设置变量默认类型)unsigned long long k = 10000000000ULL; // 无符号长长整型 (设置变量默认类型)// 打印变量的值printf("a = %d\n", a); // 注意:%d用于打印整数printf("b = %f\n", b); // 注意:%f用于打印浮点数// 打印数据类型的范围printf("int 最小 = %d,int 最大 = %d", INT_MIN, INT_MAX); // 打印int类型的最小值printf("\nfloat 最小 = %e,float 最大 = %e", __FLT_MIN__, __FLT_MAX__); // 打印float类型的最小值和最大值printf("\nchar 最小 = %d,char 最大 = %d", CHAR_MIN, CHAR_MAX); // 打印char类型的最小值和最大值printf("\nshort 最小 = %d,short 最大 = %d", SHRT_MIN, SHRT_MAX); // 打印short类型的最小值和最大值printf("\nlong 最小 = %ld,long 最大 = %ld", LONG_MIN, LONG_MAX); // 打印long类型的最小值和最大值printf("\ndouble 最小 = %e,double 最大 = %e", __DBL_MIN__, __DBL_MAX__); // 打印double类型的最小值和最大值printf("\nlong long 最小 = %lld,long long 最大 = %lld", LLONG_MIN, LLONG_MAX); // 打印long long类型的最小值和最大值printf("\nunsigned int 最小 = %u,unsigned int 最大 = %u", 0, UINT_MAX); // 打印unsigned int类型的最小值和最大值printf("\nunsigned char 最小 = %u,unsigned char 最大 = %u", 0, UCHAR_MAX); // 打印unsigned char类型的最小值和最大值printf("\nunsigned short 最小 = %u,unsigned short 最大 = %u", 0, USHRT_MAX); // 打印unsigned short类型的最小值和最大值printf("\nunsigned long 最小 = %lu,unsigned long 最大 = %lu", 0, ULONG_MAX); // 打印unsigned long类型的最小值和最大值printf("\nunsigned long long 最小 = %llu,unsigned long long 最大 = %llu", 0, ULLONG_MAX); // 打印unsigned long long类型的最小值和最大值return 0;
}
3. bool型
非真即假
#include <stdio.h>
int main(int argc, char const *argv[])
{/* bool */// 使用if判断为真,条件代码执行,非真,条件代码不执行if (0){printf("0为假\n");}else{printf("0为真\n");}if (1){printf("1为真\n");}else{printf("1为假\n");}return 0;
}
4. float浮点型
float //单精度浮点数
#include <stdio.h> // 引入stdio.h头文件以使用printf函数
#include <limits.h> // 引入limits.h头文件以获取取数据类型的范围
#include <float.h> // 引入float.h头文件以获取浮点数类型的范围int main(int argc, char const *argv[])
{/* 默认实型(浮点型,小数)为浮点型,默认整数为int型*/// float类型// float类型的精度为6位,范围为-3.4E+38到3.4E+38float a = 3.14f; // 单精度浮点数类型,占位符%f,精确度为6位printf("a = %f\n", a); // 注意:%f用于打印浮点数,默认打印小数点后6位printf("float 最小 = %f,float 最大 = %f", __FLT_MIN__, __FLT_MAX__); // 打印float类型的最小值和最大值printf("\nfloat 精度 = %d", FLT_DIG); // 打印float类型的精度,6位,科学计数法%fprintf("a=%.17f,float类型的字节数为=%lu\n", a, sizeof(float)); // 打印float类型的长度,小数点后六位不精确// double类型// double类型的精度为15位,范围为-1.7E+308到1.7E+308double b = 3.1455555555555555555; // 双精度浮点数类型,占位符%lf,精确度为15位,默认打印小数点后6位printf("\nb = %lf\n", b); // 注意:%lf用于打印双精度浮点数printf("double 最小 = %lf,double 最大 = %lf", __DBL_MIN__, __DBL_MAX__); // 打印double类型的最小值和最大值printf("\ndouble 精度 = %d", DBL_DIG); // 打印double类型的精度,15位,科学计数法%lfprintf("b=%.16lf,double类型的字节数为=%lu\n", b, sizeof(double)); // 打印double类型的长度,小数点后15位不精确// long double类型// long double类型的精度为19位,范围为-1.1E+4932到1.1E+4932long double c = 3.1455555555555555555555; // 长双精度浮点数类型,占位符%Lf,精确度为19位,默认打印小数点后6位printf("\nc = %Lf\n", c); // 注意:%Lf用于打印长双精度浮点数printf("long double 最小 = %Le,long double 最大 = %Le", __LDBL_MIN__, __LDBL_MAX__); // 打印long double类型的最小值和最大值printf("\nlong double 精度 = %d", LDBL_DIG); // 打印long double类型的精度,19位,科学计数法%Lfprintf("c=%.20Lf,long double类型的字节数为=%lu\n", c, sizeof(long double)); // 打印long double类型的长度,小数点后19位不精确//printf("c=%20.10f\n", a); // 打印float类型的长度return 0;
}
5. char (string)型
char //字符数据类型
#include <stdio.h>int main()
{/*// 字符charchar c = 'A';printf("%c\n", c); // 输出字符,终端输出为A// 字符输出为ascll码printf("%d\n", c);// 字符串char str[] = "Hello, World!";printf("%s\n", str);*/// 转移符// \n 换行printf("Hello\nWorld\n");// \t 制表符printf("Hello\tWorld\n");printf("\173\n"); // 173是八进制表示的123printf("\x41\n"); // 41是十六进制表示的65// \\ 反斜杠printf("反斜杠:""a\\b\n");// \' 单引号printf("单引号:", "a\'b\n");// \" 双引号printf("双引号:,""a\"b\n");// \0 字符串结束符char str2[] = "a, b!\0";printf("%s\n", str2);// \b 退格符printf("Hello\bWorld\n");// \r 回车符printf("Hello\rWorld\n");return 0;
}
4 变量/常量
1 变量
1.1 定义变量
简而言之变量即使可以更改的量,其数值可以被更改。
1.2 变量的分类
1.全局变量
(1)即作用于代码运行全过程的变量
2.局部变量
(2)即作用于部分代码块的变量
#include <stdio.h>
// 全局变量
int globalVar = 10; // 全局变量,作用域为整个文件
void function() {// 局部变量int localVar = 5; // 局部变量,作用域仅限于此函数内printf(" 函数内 局部变量 localVar 的值: %d\n", localVar);printf(" 函数内 全局变量 globalVar 的值: %d\n", globalVar);
}int main() {printf("全局变量 globalVar 的值: %d\n", globalVar); // 可以访问全局变量function();//调用上方的函数// printf("局部变量 localVar 的值: %d\n", localVar); // 这行代码会报错,因为 localVar 作用域仅限于 function 函数return 0;
}
1.3. 变量的使用
使变量等于输入两个值,使这两个变量进行加减乘除,结果取小数点后两位。
#include <stdio.h>
int main() {// 定义变量float num1, num2; // 用于存储输入的两个数float sum, difference, product, quotient; // 用于存储运算结果// 提示用户输入两个数,scanf的标准用法,于printf很相似printf("请输入第一个数: ");scanf("%f", &num1); // 读取第一个数printf("请输入第二个数: ");scanf("%f", &num2); // 读取第二个数// 进行运算sum = num1 + num2; // 加法difference = num1 - num2; // 减法product = num1 * num2; // 乘法quotient = num1 / num2; // 除法(注意:需要确保 num2 不为 0)// 输出结果,%.2f即为取余,小数点后两位,%.3f即为小数点后3位,以此类推。printf("加法结果: %.3f\n", sum);printf("减法结果: %.3f\n", difference);printf("乘法结果: %.3f\n", product);// 除法结果的输出需要检查除数是否为0if (num2 != 0) {printf("除法结果: %.2f\n", quotient);} else {printf("除法结果: 无法除以零\n");}return 0;
}
输出:
1.4. 变量的作用域与生命周期
作用域:
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个代码运行过程。
生命周期:
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期,同理。
1.5. 定量 / 常量
1 常量定义
简而言之,定量即使不变的量。
2 常量类型
1. 字面常量
2. const 修饰的常变量(java中常用)
3. #define 定义的标识符常量
4. 枚举常量
#include <stdio.h>// 使用 #define 定义标识符常量
#define PI 3.14159 // 圆周率常量// 定义枚举常量
enum Color {RED, // 默认第一个为0,以此类推。GREEN, // GREEN = 1BLUE // BLUE = 2
};int main() {// 字面常量int a = 10; // 整数字面常量float b = 5.5; // 浮点数字面常量// const 修饰的常量const int MAX_VALUE = 100; // 最大值常量,不能被修改// 输出各个常量的值printf("字面常量 a: %d\n", a);printf("字面常量 b: %.2f\n", b);printf("标识符常量 PI: %.5f\n", PI);printf("const 常量 MAX_VALUE: %d\n", MAX_VALUE);// 使用枚举常量enum Color myColor = GREEN; // 赋值为枚举常量printf("枚举常量 myColor: %d\n", myColor); // 输出枚举常量的整数值return 0;
}
输出:
5. 字符串+转义字符+注释+格式修饰符
1. 字符串
1. 即Java中的String,用来表示多个字符在一起的样子。但是C中没有String的概念,所以字符串用char【】(字符型数组)来表示。
2. 下方的代码,用了四种方式来表示String,具体看代码注释,写的很清楚。
//可以简单认为include与java中的import是同一个意思。
#include <stdio.h> // 引入标准输入输出库,提供输入输出函数,如printf和scanf
#include <stdlib.h> // 引入标准库,包含内存分配(如malloc、free)、进程控制和转换等函数
#include <string.h> // 引入字符串处理库,提供字符串操作函数,如strcpy、strlen等int main() {// 1. 使用字符数组定义字符串char str1[] = "hello world"; // 字符数组,自动添加'\0'char str11[] ={'0','1','2','3','4','\0'}; // 字符数组,自动添加'\0'<规范>// 2. 使用字符指针定义字符串const char *str2 = "hello world"; // 字符指针指向字符串常量// 3. 动态内存分配,malloc 返回的是 void* 类型的指针,表示它可以指向任何类型的内存。//指针相当于一种特殊类型的变量char *str3 = (char *)malloc(12 * sizeof(char)); // 开辟一个char类型,12长度的内存空间变量为str3这个指针变量if (str3 == NULL) { // 检查内存是否分配存在printf("内存分配失败\n");return 1; // 返回1表示异常,并输出内存分配失败}strcpy(str3, "hello world"); // // 输出所有字符串printf("%s\n", str1); // 输出字符数组printf("%s\n", str11); // 输出字符数组printf("%s\n", str2); // 输出字符指针printf("%s\n", str3); // 输出动态分配的字符串// 释放动态分配的内存free(str3);return 0; // 返回0表示程序正常结束
}
输出:
2. 转义字符
转义字符 释义(转义字符顾名思义就是转变意思。)
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量'
\" 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd dd表示2个十六进制数字。 如: \x30 0
举例:
仔细看注释。
#include<stdio.h>
#include<string.h>
// strlen - string length - 求字符串长度
int main()
{printf("%d\n", strlen("abcdef"));printf("%d\n", strlen("abcdefg")); // 输出字符串 "abcdef" 的长度// \62被解析成一个转义字符printf("%d\n", strlen("c:\test\628\test.c"));//会输出错误,因为系统编译会把\t认识为转义符printf("%d\n", strlen("c:\\test\\628\\test.c")); // 使用双反斜杠表示反斜杠,就没有问题了。return 0;
}
详细使用方法:
#include <stdio.h>int main() {// 1. \? - 表示问号字符 原因: \? 不会被解析为转义字符,直接输出问号。 printf("这是一个问号: \?\n"); // 输出: 这是一个问号: ?// 2. \' - 表示单引号字符 原因: \' 被解析为单引号字符,用于在字符串中包含单引号。printf("这是一个单引号: \'\n"); // 输出: 这是一个单引号: '// 3. \" - 表示双引号字符 原因: \" 被解析为双引号字符,用于在字符串中包含双引号。printf("这是一个双引号: \"\n"); // 输出: 这是一个双引号: "// 4. \\ - 表示反斜杠字符 原因: \\ 被解析为一个反斜杠字符,用于在字符串中包含反斜杠。printf("这是一个反斜杠: \\\n"); // 输出: 这是一个反斜杠: \// 5. \a - 表示警告音(响铃)原因: \a 表示响铃字符,某些终端或系统可能会发出声音。printf("这将响铃: \a\n"); // 可能会发出警告音(依赖于终端设置)// 6. \b - 表示退格符 原因: \b 将光标移动到前一个字符位置,覆盖该字符。printf("这是一个退格符: Hello\bWorld\n"); // 输出: HelloWorld(“Hello”中的最后一个字母被删除)// // 7. \f - 表示换页符 原因: \f 在某些终端中可能会导致换页,但在其他终端中可能没有明显效果。printf("这是一个换页符: Hello\fWorld\n"); // 输出: Hello(在某些终端中可能表现为换页)// 8. \n - 表示换行符 原因: \n 将光标移动到下一行,输出内容在新行显示。printf("这是一个换行符: Hello\nWorld\n"); // 输出: Hello// // World// 9. \r - 表示回车符 原因: \r 将光标移动到行首,后续字符会覆盖当前行的内容。printf("这是一个回车符: Hello\rWorld\n"); // 输出: World(“Hello”被覆盖)// 10. \t - 表示水平制表符 原因: \t 插入一个水平制表符的空格,增加字符之间的间距。printf("这是一个制表符: Hello\tWorld\n"); // 输出: Hello World(“Hello”和“World”之间有一个制表符的空格)// 11. \v - 表示垂直制表符 原因: \v 在某些终端中可能表现为换行,但在其他终端中可能没有明显效果printf("这是一个垂直制表符: Hello\vWorld\n"); // 输出: Hello(可能会在某些终端中表现为换行)// 12. \ddd - 表示八进制数对应的字符 原因: 八进制数表示的字符在ASCII表中对应的字符。printf("这是一个八进制字符: \101\n"); // 输出: A(八进制101对应的字符是'A')// 13. \xdd - 表示十六进制数对应的字符 原因: 十六进制数表示的字符在ASCII表中对应的字符。printf("这是一个十六进制字符: \x41\n"); // 输出: A(十六进制41对应的字符是'A')return 0;}}}
3. 注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
vs Code 分为单行注释与多行注释,自己搜索,默认的我也忘了。嘿嘿嘿。
4. 格式说明符
格式说明符:
%d 或 %i 解释:输出或输入有符号十进制整数。
%u 解释:输出或输入无符号十进制整数。
%f 解释:输出或输入十进制浮点数(float)。
%lf 解释:输出或输入双精度浮点数(double)。
%c 解释:输出或输入单个字符。
%s 解释:输出或输入字符串(字符数组)。
%p 解释:输出指针的地址(内存地址)。
%o 解释:输出无符号八进制整数。
%x 或 %X 解释:输出无符号十六进制整数。%x 使用小写字母,%X 使用大写字母。
%e 或 %E 解释:以科学计数法输出浮点数。%e 使用小写字母 e,%E 使用大写字母 E。
%g 或 %G 解释:根据数值的大小自动选择使用 %f 或 %e 的格式输出浮点数。%g 使用小写字母,
%G 解释:使用大写字母。
格式说明符代码解释 :
#include <stdio.h>
int main() {// 1. %d 或 %i - 输出或输入有符号十进制整数 // 原因: %d 用于打印有符号整数,负数会正常显示。int signedInt = -42;printf("有符号十进制整数: %d\n", signedInt); // 输出: 有符号十进制整数: -42// 2. %u - 输出或输入无符号十进制整数 // 原因: %u 用于打印无符号整数,确保不会显示负号。unsigned int unsignedInt = 42;printf("无符号十进制整数: %u\n", unsignedInt); // 输出: 无符号十进制整数: 42// 3. %f - 输出或输入十进制浮点数(float) // 原因: %f 默认输出六位小数,适用于浮点数。float floatNum = 3.14f;printf("十进制浮点数: %f\n", floatNum); // 输出: 十进制浮点数: 3.140000// 4. %lf - 输出或输入双精度浮点数(double) // 原因: %lf 用于打印双精度浮点数,默认输出六位小数。double doubleNum = 3.141592653589793;printf("双精度浮点数: %lf\n", doubleNum); // 输出: 双精度浮点数: 3.141593// 5. %c - 输出或输入单个字符 // 原因: %c 用于打印单个字符。char character = 'A';printf("单个字符: %c\n", character); // 输出: 单个字符: A// 6. %s - 输出或输入字符串(字符数组) // 原因: %s 用于打印字符串,直到遇到空字符 '\0'。char str[] = "Hello, World!";printf("字符串: %s\n", str); // 输出: 字符串: Hello, World!// 7. %p - 输出指针的地址(内存地址) // 原因: %p 用于打印指针的地址,通常以十六进制格式输出。int *ptr = &signedInt;printf("指针地址: %p\n", (void *)ptr); // 输出: 指针地址: 0x7ffeedc3a5b4(地址会因运行而异)// 8. %o - 输出无符号八进制整数 // 原因: %o 用于打印无符号整数的八进制表示。printf("无符号八进制整数: %o\n", unsignedInt); // 输出: 无符号八进制整数: 50// 9. %x 或 %X - 输出无符号十六进制整数 // 原因: %x 用于打印小写十六进制,%X 用于打印大写十六进制。printf("无符号十六进制整数 (小写): %x\n", unsignedInt); // 输出: 无符号十六进制整数 (小写): 2aprintf("无符号十六进制整数 (大写): %X\n", unsignedInt); // 输出: 无符号十六进制整数 (大写): 2A// 10. %e 或 %E - 以科学计数法输出浮点数 // 原因: %e 和 %E 用于以科学计数法格式打印浮点数。printf("科学计数法 (小写): %e\n", floatNum); // 输出: 科学计数法 (小写): 3.140000e+00printf("科学计数法 (大写): %E\n", floatNum); // 输出: 科学计数法 (大写): 3.140000E+00// 11. %g 或 %G - 根据数值的大小自动选择格式输出浮点数 // 原因: %g 和 %G 根据数值的大小选择使用 %f 或 %e 格式输出。printf("自动选择格式 (小写): %g\n", doubleNum); // 输出: 自动选择格式 (小写): 3.14159printf("自动选择格式 (大写): %G\n", doubleNum); // 输出: 自动选择格式 (大写): 3.14159return 0;
}
相关文章:
linux与c语言基础知识(未全部完成)
文章很多处理论,没办法写出来,(linux的一些理论问题,我有时间后,会逐个解决) 文章大多数的理论来字这个链接, C语言快速入门-C语言基础知识-CSDN博客 一. linux(Ubuntu) …...
【专题刷题】滑动窗口(四):
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
小白自学python第一天
学习python的第一天 一、常用的值类型(先来粗略认识一下~) 类型说明数字(number)包含整型(int)、浮点型(float)、复数(complex)、布尔(boolean&…...
Redis 服务自动开启、设置密码和闪退问题
一、Redis 服务自动开启 1、以管理员身份运行命令提示符 右键点击“命令提示符”图标,选择“以管理员身份运行”。 2、注册为 Windows 服务 redis-server --service-install 3、启动服务 redis-server --service-start 4、测试 Redis 连接 redis-cli ping …...
2025年渗透测试面试题总结-拷打题库14(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库14 1. WAF存在的意义 2. 威胁感知能力衡量指标 3. 感知规则有效性…...
java后端开发day35--集合进阶(四)--双列集合:MapHashMapTreeMap
(以下内容全部来自上述课程) 1.双列集合 1.1 特点 双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键值这个整体,我们称之为“键值对”…...
进行网页开发时,怎样把function()中变量值在控制台输出,查看?
在网页开发过程中,为了及时了解JavaScript中的function函数中的变量值,可以用控制台命令console.log()把变量的值在控制台输出,方便调试时对函数变量值进行了解。 看下面的一段示例: <!DOCTYPE html> <html> &l…...
【计算机网络】现代网络技术核心架构与实战解析
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:TCP服务端/客户端通信案例2:Wireshark抓包分析 三、性能对比测试方法…...
Python内置函数---bool()
用于将任意对象转换为布尔值(True或False) 1. 基本语法与参数 bool(x) - 参数:x为可选参数,可以是任意Python对象(如数值、字符串、列表、自定义对象等)。 - 返回值:根据x的真值性返回True或Fa…...
Vue 3中如何封装API请求:提升开发效率的最佳实践
在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时。随着Vue 3的广泛应用,如何高效地封装API请求,既能提升代码的可维护性,又能确保代码的高复用性,成为了很多开发者关注的话题。 在本文中&…...
【Redis】redis主从哨兵
Redis 主从复制 在访问量极高的场景下,单台 Redis 已难以承载所有请求,且单点故障风险高。通过主从复制,可以实现读写分离、数据备份与高可用。 概念 主节点(Master):负责写操作,将数据变更同…...
16.第二阶段x64游戏实战-分析二叉树结构
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:15.第二阶段x64游戏实战-分析怪物血量(遍历周围) 首先通…...
vue | 不同 vue 版本对复杂泛型的支持情况 · vue3.2 VS vue3.5
省流总结:defineProps 的泛型能力,来直接推导第三方组件的 props 类型 引入第三方库的类型,并直接在 <script setup> 中作为 props 使用。这种类型一般是复杂泛型(包含联合类型、可选属性、交叉类型、条件类型等࿰…...
OpenGL学习笔记(Blinn-Phong、伽马矫正、阴影)
目录 Blinn-PhongGamma矫正GammaGamma矫正实现方法sRGB纹理衰减 阴影shadow mapping渲染阴影改进阴影贴图PCF GitHub主页:https://github.com/sdpyy1 OpenGL学习仓库:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdp…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
day4 pandas学习
%pip install openxyxl 找一个自己觉得有意思的文件。我找的是成绩单来玩。 这节学的比较耗时了,大概用了60分钟。 import pandas as pd data2 pd.read_csv(rD:\python代码区\代码随想录挑战-调试区\python训练营\1_计算类专业分流学生成绩排名.csv) #print(data)…...
【Java学习笔记】循环结构
循环结构 一、for循环 for循环结构 for(循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句) }for循环写死循环 for(;;){语句 }注意点:循环变量的初始化在for语句内,属于是局部变量,在全局中会出现未定义…...
URP-UGUI交互功能实现
一、非代码层面实现交互(SetActive) Button :在OnClick()中添加SetActive方法(但是此时只首次有效) Toggle :在OnClick()中添加动态的SetActive方法 &#…...
08-IDEA企业开发工具-集成AI插件通义灵码
需要登陆才可使用!!! 1. 安装AI编程插件 找到插件: 在IDEA的设置中,找到插件(Plugins)部分。安装插件: 搜索“通义灵码”,找到后点击安装(Install),接受条款…...
解决报错:this[kHandle] = new _Hash(algorithm, xofLen);
前端项目编译报错: node:internal/crypto/hash:68this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:68:19)at Object.createHash (node:crypto:138:10)at modu…...
使用 Streamlit 打造一个简单的照片墙应用
在现代 web 开发中,快速构建交互式应用是一项重要的技能。Streamlit 是一个强大的 Python 库,允许开发者以最小的代码量创建美观且功能丰富的 web 应用。今天,我们将通过分析一段简单的 Streamlit 代码,展示如何构建一个照片墙应用…...
深度学习优化器和调度器的选择和推荐
一、常用优化器对比 1. 随机梯度下降(SGD) 原理:每次迭代使用小批量数据计算梯度并更新参数。优点:实现简单,适合大规模数据集。缺点:收敛速度慢,容易陷入局部最优或鞍点。适用场景࿱…...
“时间”,在数据处理中的真身——弼马温一般『无所不能』(DeepSeek)
电子表格时间处理真理:数值存储最瘦身,真身闯关通四海。 笔记模板由python脚本于2025-04-23 22:25:59创建,本篇笔记适合喜欢在电子表格中探求时间格式的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验…...
为什么Spring中@Bean注解默认创建单例Bean
在Spring框架中,使用Bean注解定义的对象默认确实是单例的,这是由Spring容器的设计哲学和实际需求决定的。下面我从多个角度解释这一设计选择的原因和机制。 1. Spring Bean作用域基础 Spring定义了多种Bean作用域,其中默认是单例(Singleton…...
GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,共计266分)
今天偶然发现天梯赛的代码还保存着,于是决定写下这篇题解,也算是复盘一下了 L1本来是打算写的稳妥点,最后在L1-6又想省时间,又忘记了insert,replace这些方法怎么用,也不想花时间写一个文件测试,…...
JDK(Ubuntu 18.04.6 LTS)安装笔记
一、前言 本文与【MySQL 8(Ubuntu 18.04.6 LTS)安装笔记】同批次:先搭建数据库,再安装JDK,后面肯定就是部署Web应用:典型的单机部署。“麻雀虽小五脏俱全”,善始善终,还是记下来吧。…...
Java 拦截器完全指南:原理、实战与最佳实践
一、引言 拦截器的基本概念 在现代 Java Web 开发中,拦截器(Interceptor)是一种用于在请求处理前后插入自定义逻辑的机制。简单来说,它是一种“横切逻辑处理器”,可以用来对请求进行预处理、后处理,甚至终…...
2025.04.23华为机考第二题-200分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 魔法彩灯森林 问题描述 在卢小姐的魔法花园中,有一棵神奇的彩灯树。这棵树的每个节点都装有一盏魔法灯,灯有三种颜色状态:红色(用数字1表示)、绿色(用数字2表示)和蓝色(…...
【Leetcode 每日一题】1399. 统计最大组的数目
问题背景 给你一个整数 n n n。请你先求出从 1 1 1 到 n n n 的每个整数 10 10 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。 请你统计每个组中的数字数目,并返回数字数目并列最多的组…...
系统重装——联想sharkbay主板电脑
上周给一台老电脑重装系统系统,型号是lenovo sharkbay主板的电脑,趁着最近固态便宜,入手了两块长城的固态,装上以后插上启动U盘,死活进不去boot系统。提示 bootmgr 缺失,上网查了许久,终于解决了…...
Python数据清洗笔记(上)
一、数据清洗概述 数据清洗是数据分析过程中至关重要的一步,约占整个数据分析过程的60%-80%的时间。主要包括处理缺失值、异常值、重复值、格式不一致等问题。 二、常用工具 主要使用Python的Pandas库进行数据清洗: import pandas as pd import nump…...
三、Python编程基础03
目录 一、debug 调试的使用1. 打断点2. 右键 Debug 运行代码3. 单步执行代码,查看过程 二、字符串1、定义与下标引用2、切片3、查找4、去除空白字符5、转换大小写与拆分6、其他方法-替换、连接、是否为纯数字7、登录案例优化 三、列表 list1、列表基础操作2、案例: …...
西门子S7-200SMART 控制Profinet闭环步进MD-4250-PN (1)电机及专栏介绍
一、前言 本系列是我继 《西门子S7-1200PLC 控制步进电机 MD-4240-PN》系列专栏后,新开的一篇专栏。 系列的主题围绕 S7-200SMART Profinet闭环步进(MD-4250-PN) 触摸屏的硬件,预计作四篇文章,分别为:专栏介绍、硬件介绍、PLC…...
NoSQL 简单讲解
目录 1. NoSQL 的背景与意义 1.1 数据库的演变 1.2 NoSQL 的兴起 2. NoSQL 数据库的分类 2.1 键值存储(Key-Value Stores) 2.2 文档数据库(Document Stores) 2.3 列族存储(Column-Family Stores) 2.…...
TCP 协议:原理、机制与应用
一、引言 在当今数字化的时代,网络通信无处不在,而 TCP(Transmission Control Protocol,传输控制协议)作为互联网协议栈中的核心协议之一,扮演着至关重要的角色。无论是浏览网页、发送电子邮件还是进行文件…...
C++23 新特性:令声明顺序决定非静态类数据成员的布局 (P1847R4)
文章目录 引言背景知识非静态类数据成员类的内存布局 P1847R4提案内容示例代码 影响和优势提高代码的可预测性与其他语言和库的交互更加方便简化代码调试和优化 编译器支持情况实际应用场景嵌入式系统开发跨语言编程内存优化 总结 引言 在C的发展历程中,每一个新版…...
Java 环境配置详解(Windows、macOS、Linux)
Java 环境配置是学习和开发 Java 程序的第一步,也是至关重要的一步。一个正确配置的 Java 环境能够保证你的 Java 程序能够顺利编译、运行和调试。本文将详细介绍在 Windows、macOS 和 Linux 三种主流操作系统上配置 Java 环境的步骤,力求详尽、易懂&…...
ChatBEV:一种理解 BEV 地图的可视化语言模型
25年3月来自上海交大、上海AI实验室、同济大学和MAGIC的论文“ChatBEV: A Visual Language Model that Understands BEV Maps”。 交通场景理解对于智能交通系统和自动驾驶至关重要,可确保车辆安全高效地运行。虽然 VLM 的最新进展已显示出整体场景理解的前景&…...
利用Python爬虫实现百度图片搜索的PNG图片下载
在图像识别、训练数据集构建等场景中,我们经常需要从互联网上批量下载图片素材。百度图片是中文搜索中最常用的来源之一。本文将介绍如何使用Python构建一个稳定、可扩展的百度图片爬虫,专门用于下载并保存高清PNG格式图片。 一、项目目标 本项目的目标…...
自主可控鸿道Intewell工业实时操作系统
鸿道Intewell工业实时操作系统是东土科技旗下科东软件自主研发的新一代智能工业操作系统,以下是相关介绍: 系统架构 -Intewell-C全实时构型:设备上只运行自研RTOS的全实时系统,适用于有功能安全认证需求的实时控制场景…...
【数据结构入门训练DAY-21】信息学奥赛一本通T1334-围圈报数
文章目录 前言一、题目二、解题思路结语 前言 本次训练内容 STL库中队列的使用练习。训练解题思维 一、题目 有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数&am…...
【C语言】C语言中的字符函数和字符串函数全解析
前言 在C语言编程中,字符和字符串的处理是必不可少的。C语言标准库提供了丰富的字符和字符串函数,这些函数极大地简化了字符和字符串的操作。本文将详细介绍这些函数的使用方法、模拟实现以及一些实用的代码示例,帮助你更好地理解和掌握它们…...
声纹振动传感器在电力监测领域的应用
声纹振动传感器在电力监测领域有多种应用,主要包括以下几个方面: 变压器监测 故障诊断:变压器在运行过程中会产生特定的声纹和振动信号,当变压器内部出现故障,如绕组短路、铁芯松动、局部放电等,其声纹和振…...
配色之道:解码产品设计中的UI设计配色艺术
在数字化时代,用户界面(UI)作为产品与用户交互的桥梁,其设计质量直接影响着用户体验与产品成败。而配色,作为UI设计中最为直观且富有表现力的元素之一,不仅是视觉美学的体现,更是情感传递、信息…...
python基础语法测试
1. 关于Python语言数值操作符,以下选项中描述错误的是 A x%y表示x与y之商的余数,也称为模运算 B x/y表示x与y之商 C x**y表示x的y次幂,其中,y必须是整数 D x//y表示x与y之整数商,即不大于x与y之商的最大整数2. 下面代码…...
如何安装Visio(win10)
首先下载下面这些文件 HomeStudent2021Retail.img officedeploymenttool_17531-20046.exe office中文语言包.exe 确保这些文件都在一个文件夹内(我已经上传这些资源,这些资源都是官网下载的) 官网资源下载教程 1.下载Office镜像࿰…...
Sql刷题日志(day5)
面试: 1、从数据分析角度,推荐模块怎么用指标衡量? 推荐模块主要目的是将用户进行转化,所以其主指标是推荐的转化率推荐模块的指标一般都通过埋点去收集用户的行为并完成相应的计算而形成相应的指标数据,而这里的驱动…...
.NET、java、python语言连接SAP系统的方法
💡 本文会带给你 可用哪些技术与Sap系统连接怎样用Rfc技术连接SAP一. SAP系统与外部系统集成技术 SAP系统提供了多种方式供Java、.NET、Python等外部编程语言进行连接和集成。 1. RFC (Remote Function Call) 连接 适用语言:Java, .NET, Python, 其他支持RFC的编程语言 …...
C++ 容器查找效率
C 容器查找效率 只要选对容器,多写几行代码就能让程序“飞”起来。下面用生活化的比喻 足够多的带注释示例,帮你弄懂常用 STL 容器的查找特性。 读完你应该能快速判断:“我的场景该用哪一个?” 0. 先把“查找复杂度”聊明白 记号…...
汽车可变转向比系统的全面认识
一、什么是转向比? 转向比又叫转向传动比,是指方向盘转向角度与车轮转向角度之比。 例如,方向盘向左转动了60角,而车轮则向左转动了30角,转向比就是2:1。 转向比越大,意味着要使车轮转向达到指…...