嵌入式开发学习(第二阶段 C语言基础)
C语言:第4天笔记
内容提要
- 流程控制
- C语句
- 数据的输入与输出
流程控制
C语句
定义
- C程序是以函数为基础单位的。
- 一个函数的执行部分是由若干条语句构成的。
- C语言都是用来完成一定操作的任务。
- C语句必须依赖于函数存在。
C程序结构
C语句分类
1.控制语句
作用:用来完成一定的控制,功能
举例:
if…else…、for…、while…、do…while…、continue…、break…、switch、return、goto
2.函数调用语句
由一个函数调用+分号组成,例如:
printf("这是一个函数调用语句");
tesr();
3,表达式语句
由一个表达式+分号组成,最经典的表达式语句就是赋值语句,例如:
a = 3; //表达式
score >= 90;//表达式
score = 90; //表达式语句
4,空语句
==只有一个分号,==什么都不做,例如:
;
for(;;)
5.符合语句
用=={…}==括起来的若干个语句,例如;
{z = z + y;t = z / 100;printf("%f\n",t);//超过1条语句就是复合语句
}
数据的输入输出
数据的输入与输出是相对而言,其中:
- 从计算机向外部设备输送称数据之为输出(output)。通常的输入输出设备包括:显示器、打印机等。
- 从外部设备向计算机输送数据称之为输入(input)。通常输入设备包括:键盘、鼠标、扫描仪等。
在C语言中。输入输出设备需要使用标准的输入输出库(stdio.h)中的输入函数(scanf())、输 出函数(printf())实现,后期可以扩展其他输入输出函数。本章节接触函数属于外设IO
库函数已经被编译成了目标文件,在连接时编译源程序得到的目标文件相链接,生成可执行程序。
注意:在使用系统库函数的时候,需要用预处理指令#include 将有关的文件包含到用户资源文件中(一般放在程序的开头位置)头文件中包含了调用函数时需要的有关信息,具体的函数在编译的 时候再去链接对应的系统库。
输入输出缓冲机制
缓冲区的概念
-
缓冲区(缓存)是内存空间的一部分,用于缓存输入或输出的数据。
-
在进行输入操作时,系统从外部设备(如键盘)读取数据,先放入缓冲区,程序再从缓冲区读取数据。
输入时数据流向:外部设备→输入缓冲区→程序
-
在进行输入操作时,系统先将数据放入缓冲区,然后在特条件下(如缓冲区满、遇到特定字 符、手动刷新等)再将缓冲区中的数据输出到外部设备(如屏幕)。
输出时数据流向:程序→输入缓冲区→外部设备
缓冲区的类型
C语言的缓冲区有三种类型:
- 全缓冲:当缓冲区填满后,才进行实际的输入输出操作。例如:对磁盘文件的读写。—window全缓冲区的大小是4096字节,Linux全缓冲区大小是1024字节。
- **行缓冲:**当在输入和输出中遇到换行符(==\n或者回车)时,执行实际的输入输出操作。例如:标准输入(stdin)和(stdout)。
- **无缓冲:**不进行缓冲直接进行输入输出操作。例如:标准错误流(stderr)
缓冲区的刷新条件
缓冲区的刷新(将缓冲区的数据实际输出到外部设备)通常发生在以下情况:
- **缓冲区满:**当缓冲区写满时,会自动刷新。
- 遇到特定字符:如换行字符(\n)等
- **手动刷新:**使用fflush (stdout)函数手动刷新输出缓冲区。
- **程序关闭时:**当程序结束时,缓冲区中的数据会被刷新。
缓冲区的实际应用
- **提高效率:**通过缓冲区,可以减少与外部设备的交互次数,提高数据传输的效率
- **处理输入输出:**例如:使用scanf和printf函数时,数据先被放入缓冲区,然后按照特定的规则 从缓冲区读取或输出。
实现原理图:
简单的输入与输出
用printf函数输出数据
语法:
printf("格式控制",输出列表);
引入文件:
#include <stdio.h>
举例:
printf("i=%d,x=%d,y=%d\n",i,34,i+1);
注意:格式控制中格式化符号(%d)要和输出的数据一一对应。
参数:
- 格式控制:用一对英文双引号括起来,包含两种信息:
- 格式说明:由
%
和特定字符
组成,如%d,%f,%c等,这是格式说明 - 普通字符:作为说明性的文字、符号等,按照输入原样输出
- 格式说明:由
- 输出列表:输出列表中的各项目指出了所要输出的内容,可以是常量(字面量、符号常量、const修饰的变量)、变量、表达式。输出列表的个数,由格式控制中的格式化符号来决定。
基本的格式化符
%d
按有符号十进制整型(int)数据的实际长度输出。(十进制(0)、八进制(00)、十六进 制(0x00))
%u
按无符号十进制整型(int)数据的实际长度输出。
%c
仅输出一个字符(char)
%s
输出结果是字符串,举例:printf(“%s\n”,“CHINA”);,输出结果:CHINA
%f
以小数形式输出一个实数(涵单双精度)。整数部分全部输出,小数部分输出6位。
%e
也可以写作%E,以指数形式输出一个实数(涵单双精度)。小数点前1位非0数字,并输出6位小数。
%hd
短整型(short int/short)
%hhd
字符型的ASCII码,char数据对应的ASCII码的值,举例:char a = ‘A’;printf(“%hhd\n”,a);,输 出结果:65
%lf
双精度浮点型(double)
%ld
长整型(long int/long)
%lld
长长整型(long long int/long long)
%x
十六进制,但是十六进制的前缀0x不会打印出来,举例:printf(“%x,%#x\n”,198,198);,输 出结果:c6,0xc6
%#x
十六进制,并且十六进制的前缀0x也会打印出来,举例:0x05
%o
八进制,前缀0不会打印出来,举例:5
%#o
八进制,并且八进制的前缀0也会打印出来,举例:05
%p
打印内存的地址
%%
输出%本身
案例:
/*************************************************************************> File Name: demo01.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 09时57分32秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("%x,%#x\n",255,255);// 输出16进制整数 printf("%o,%#o\n",255,255); // 输出8进制整数 printf("%d%c",5,'%'); // 输出5%printf("%%\n");;// 输出 %printf("%f,%1f,%e\n",99.78945,99.78945,99.78945); // 输出小数return 0;
}
运行结果:
用scanf函数输入数据
基础用法
语法:
scanf("格式控制",地址列表);
注意:地址列表不能传变量、常量、表达式,只能传与之对应的内存地址(首地址),通过&+变量名
获取。
举例:
int a = 10; // 定义了一个变量a
scanf("%d",&a);//&在这里称作取地址符,&a的意思是获取变量a对应的内存地址(首地址)
作用:
将从键盘输入的数据存入所占的存储单元,存储单元有地址标识。
参数:
- ==格式控制:==含义等同于printf函数的格式控制,说明输入的数据应该使用的格式。
- ==地址列表:==是由若干个地址组成,可以是变量的地址或者字符串的地址。&是取地址变量的地址。与格式化输出一样,在格式控制中,用于说明数据格式的格式说明符以%开 头,后面紧跟具体的格式。
案例:
需求:从键盘输入整数给变量
代码:
/*************************************************************************> File Name: demo02.c> Author: 刘孟丹> Description: > Created Time: 2025年05月07日 星期三 14时25分48秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{//定义三个变量a,b,c,用来接收控制台的输入int a,b,c;// 因为这里需要接收控制台键盘的输入,所以无需赋初始值// 每次在使用键盘输入之前,在控制台提示一下printf("请输入三个数字:\n");scanf("%d%d%d",&a,&b,&c);//注意:scanf格式化控制不要加\n,因为回车后会自动产生一个\n//测试printf("a=%d,b=%d,c=%d\n",a,b,c);return 0;
}
运行结果:
总结:输入多个数据的时候可以用空格、Tab键、回车键中的任意一种。
说明:
-
scanf函数中的“格式控制”后面应当是变量的地址,由取地址&和变量名共同组成,举例:
scanf("%f%d", &a, &b);
-
如果“格式控制”中除了格式说明以外还有其他字符,则在输入数据时必须在对应位置输入与之相 同的字符,举例:
scanf("%d,%d",&a, &b);
从键盘录入数据的时候,使用格式控制中的逗号分隔:3,4
scanf("%d-%d-%d",&year,&month,&day);
从键盘录入数据的时候,使用格式控制中的短横线分隔: 2025-5-7
scanf("%d年%d月%d日",&year,&month,&day);
从键盘录入数据的时候,使用格式控制中的年月日分隔:2025年05月07日
-
用%c格式输入字符时,空格和转义符(如:\n,
\:转义符
)都作为有效字符输入,应注意:scanf("%c%c%c",&a,&b,&c);
注意:其实Tab键、空格键、回车键的响应都是当做字符处理。
- 在输入数值数据(整型+浮点型)时,遇到空格、回车、Tab键或遇到非法输入(A,?…)则认为该输入结束;
scanf("%d%d%d",&a, &b, &c);
- 对于unsigned型变量所需的数据,可以%u(unsigned int)或者%d(signed int)格式输入。
复杂的输入输出
按指定格式输出数据宽度、小数位数、上下行数据按小数点对齐、用八进制、十六进制等。
输出数据格式控制
整型格式说明符
-
十进制形式(0~9)
说明符 说明 数据类型 %d和%md 用于基本整型 int %ld和%mld 用于长整型 long %u和%mu 用于无符号基本整型 unsigned int %lu和%mlu 用于无符号长整型 unsigned long -
八进制形式(0~7)
说明符 说明 数据类型 %o和%mo 用于基本整型 int %lo和% mlo 用于长整型 long -
十六进制形式(0~F)
说明符 | 说明 | 数据类型 |
---|---|---|
%x和%mx | 用于基本整型 | int |
%lx和%mlx | 用于长整型 | long |
说明:
m
表示输出整型数据所占总宽度(列数,1个字符占1列),其中:
①当实际数据的位数不到m位,数据前面将用空格填满,举例:原数据(“12”
)
②若实际数据的位数大于等于m位时,则以数据的实际位数为标准进行输出,列宽无效,举例:
原数据("12345"
)列宽m(4)的数据("12345"
)
总结:
如果实际数据列宽<m,使用空格补全m。
如果实际数据列宽>=m,输出实际数据,m失效。
一个int型整型也可以使用%u输出,反之一个unsigned型整数也可以用%d、%o、%x格式输出。 按相互赋值的规则处理。
/*************************************************************************> File Name: demo03.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 15时37分11秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("%d\n",12); // "12" 输出后,实际列宽位2printf("%6d\n",12); // " 12" 输出后,实际列宽为6,右对齐printf("%-6d\n",12); // "12 " 输出后,实际列宽为6,左对齐printf("%6d\n",1234567); // "1234567" 输出后,实际列宽为7,m失效printf("%06d\n",12); // "000012" 输出后,实际列宽为6,不足补0printf("%+d,%+d\n",12,-12); // "+12,-12" 显示正负号printf("%#06x,%#06o\n",12,12); // "0x000c,000014" 输出后,实际列宽6return 0;
}
运行效果:
字符型格式说明符
-
字符型
说明符 说明 举例 %c或者%mc 输出的字符占m列 printf(“%3c\n”,‘a’);
用法和整型的用法一致。
-
字符串型
在C语言中,支持字符串常量,不支持字符串变量
说明符 说明 %ms 输出的字符串占m列。若串长>=m,全部输出;反之在串前补空格(m为正往前补空格) 举例: printf("%6s\n","hello")
;" hello"
%-ms 输出的字符串占m列。若串长>=m,全部输出;反之在串前补空格(m为负往后补空格) 举例: printf("%-6s\n","hello")
;" hello"
%m.ns 输出的字符串占m列,只取字符串前n个字符,不足部分串前补空格。 举例: pri ntf("%6.2s\n","hello")
;" he"
%-m.ns 输出的字符串占m列。只取字符串前n个字符,不足部分串后补空格。 举例: p ri ntf("%-6.2s\n","hello")
;"he "
案例:
-
需求:字符串输出
-
代码:
/*************************************************************************> File Name: demo04.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 16时02分40秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[]) {printf("%3s,%7.2s,%-5.3s,%.4s\n","CHIAN","CHIAN","CHINA","CHINA");return 0; }
-
运行结果
浮点格式说明符
浮点型格式分为三种形式:
序号 | 名称 | 说明 |
---|---|---|
1 | 十进制形式 | %m.nf或者%-m.nf,m是列宽,n是保留的小数位 |
2 | 指数形式 | %m.ne或者%-m.ne,m是列宽,n是保留的尾数位 |
3 | %g或者%G形 式 | 根据数值的大小,自动选择%f或者%e中宽度较短的一种格式,不输出 无意义的0 |
解释:
在输出浮点型数据时,格式说明符中的m表示整个数据所占的列宽,n表示小数点后面所占的位数 (保留的小数位)
如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则 按实际的位数进行输出。
案例:
-
需求:输出浮点型数时,指定小数位。
-
案例:
/*************************************************************************> File Name: demo05.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 16时09分47秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{float f = 123.155f;//f是标识符,不计入列宽,实际列宽是7printf("%8.2f,%-8.2f,%8.6f,%8.2e.%g,%G\n",f,f,f,f,f,f);//指定小数位,采用四舍五入//结果为“ 123.15”,“123.15 ”,“123.155000”,“1.23e+02”,“123.155”,“123.155”return 0;
}
-
运行结果:
这里的小数保留采用四舍五入
案例:
- 要求:求3个圆的周长,输出结果时要求按小数点对齐,取两位小数。
- 代码:
/*************************************************************************> File Name: demo06.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 16时26分57秒************************************************************************/#include <stdio.h>
#define PI 3.14int main(int argc,char *argv[])
{double r1 = 1.53, r2 = 21.83,r3 = 123.71,s1,s2,s3;s1 = 2.0 * PI * r1;s2 = 2.0 * PI * r2;s3 = 2.0 * PI * r3;printf("%f\n%f\n%f\n",s1,s2,s3);return 0;
}
案例:
-
要求:设有如下C程序
-
代码
#include "stdio.h"main(){ double x=34.567;printf("x=%f\n",x);// 34.567000printf("x=%d\n",x);// 27263,这种写法错误,自动类型转换异常printf("x=%d\n",(int)x);// 34}
-
这个程序的实际运行结果为
x=34.567000
x=27263
x=34
-
说明
显然,这个程序中的第二个格式输出语句输出的结果是错误的,这是因为在第二个格式输出语 句中,格式说明符%d是基本整型格式说明符,而输出项目是双精度型的数据,它们是不匹配 的。
输出数据格式控制
整型格式说明符
-
十进制形式(0~9)
说明符 说明 数据类型 %d和%md 用于基本整型 int %ld和%mld 用于长整型 long %u和%mu 用于无符号基本整型 unsigned int %lu和%mlu 用于无符号长整型 unsigned long -
八进制形式(0~7)
说明符 说明 数据类型 %o和%mo 用于基本整型 int %lo和% mlo 用于长整型 long -
十六进制形式(0~F)
说明符 | 说明 | 数据类型 |
---|---|---|
%x | 用于基本整型 | int |
%lx | 用于长整型 | long |
总结:
① 用于输入与输出整型数据的格式说明符是完全一致的。
② 与输出情形一样,对于八进制与十六进制的输入格式,主要用于输入无符号的整型数据。
浮点型格式说明符
说明符 | 说明 | 数据类型 |
---|---|---|
%f或者%e | 用于单精度浮点型 | float |
%lf | 用于双精度浮点型 | double |
总结:
①与输出不同,输入时无论单精度还是双精度,都不能用m.n来指定输出的宽度和小数点后保留的位数。
②可以指定输入数据所占的列数,系统自动按它截取所需的数据,如;
scanf("%3d%3d",&a,&b);
输入测试数据:1234567
结果:a=123,b=456
explain:从输入的数据1234567中,截取前三列(123),赋值给a,再截取3列(456),赋值给b,剩余的7舍去
③若在%后有一个==*
和一个数字==,表示跳过指定的列数,如:
scanf("%2d%*3%3d",&a,&b);
输入测试数据:12345678
结果:a=12,b=678
explain:从输入的数据12345678中,截取前2列(12),赋值给a,再跳转3列,然后截取3列(678),赋值给b
案例:
/*************************************************************************> File Name: demo06.c> Author: 小刘> Description: > Created Time: 2025年05月07日 星期三 16时26分57秒************************************************************************/#include <stdio.h>
#define PI 3.14int main(int argc,char *argv[])
{int a,b;scanf("%3d%3d",&a, &b);// 输入:1234567printf("a=%d,b=%d\n"); // 输出:a=123,b=456return 0;
}
说明:
当用于输入整型数据的格式说明符中没有宽度说明时,则在具体输入数据时分为以下两种情况:
① 如果各格式说明符之间没有其它字符,则在输入数据时,两个数据 之间用"空格"、或"Tab"、 或"回车"来分隔。
② 如果各格式说明符之间包含其它字符,则在输入数据时,应输入与 这些字符相同的字符作为间 隔。
例如,设有如下说明
int a,b;
float c,d;
现要利用格式输入函数输入a=12,b=78,c=12.5,d=7.6
。 采用不同的格式说明,其输入数据的形 式也是不同的。分别说明如下:
-
若输入语句为
scanf("%d%d%f%f",&a,&b,&c,&D. ;
(即格式说明符中没有宽度说明, 各格式说明符之间也没有其他字符。)则输入数据的形式应为
12 78 12.5 7.6
↲ (两个数据之间用空格来分隔,当然也可用“Tab”或“回车”来分隔。) -
若输入语句为
scanf("%d,%d,%f,%f",&a,&b,&c,&D.
; (格式说明符中没有宽度说明,但各 格式说明符之间有其它字符,即逗号)则输入数据的形式应为
12,78,12.5,7.6
↲ (即在输入的两个数据之间同时要输入逗号。) -
若输入语句 s
canf("a=%d,b=%d,c=%f,d=%f",&a,&b,&c,&D. ;
(即格式说明符中没有宽度 说明,但各格式说明符之间有其它字符。)输入数据的形式应为
a=12,b=78,c=12.5,d=7.6
↲ (即在输入的两个数据之间同时要输入这 些非格式说明符的字符。) -
在用于输入的实型格式说明符中不能用m.n来指定输入的宽度和小数点后的位数(这是与输出的 不同之处)。
例如:
scanf("%7.2f",&a); × 此用法是错误的
-
为了便于程序执行过程中从键盘输入数据,在一个C程序开始执行时,系统就在计算机内存中开 辟了一个输入缓冲区,用于暂存从键盘输入的数据。开始时该输入缓冲区是空的。当执行到一 个输入函数时,就检查输入缓冲区中是否有数据;
扩展:
说明符 | 含义 | 示例 |
---|---|---|
%n | 已读取的字符数 | scanf(“%d%n”, &num, &count); |
代码:
/*************************************************************************> File Name: demo07.c> Author: 刘孟丹> Description: > Created Time: 2025年05月07日 星期三 16时57分15秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num,count;printf("请输入一个数据:\n");scanf("%d%n",&num,&count);printf("num=%d,count=%d\n",num,count);return 0;
}
运行结果;
7.2f",&a); × 此用法是错误的`
- 为了便于程序执行过程中从键盘输入数据,在一个C程序开始执行时,系统就在计算机内存中开 辟了一个输入缓冲区,用于暂存从键盘输入的数据。开始时该输入缓冲区是空的。当执行到一 个输入函数时,就检查输入缓冲区中是否有数据;
扩展:
说明符 | 含义 | 示例 |
---|---|---|
%n | 已读取的字符数 | scanf(“%d%n”, &num, &count); |
代码:
/*************************************************************************> File Name: demo07.c> Author: 刘孟丹> Description: > Created Time: 2025年05月07日 星期三 16时57分15秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num,count;printf("请输入一个数据:\n");scanf("%d%n",&num,&count);printf("num=%d,count=%d\n",num,count);return 0;
}
运行结果;
相关文章:
嵌入式开发学习(第二阶段 C语言基础)
C语言:第4天笔记 内容提要 流程控制 C语句数据的输入与输出 流程控制 C语句 定义 C程序是以函数为基础单位的。一个函数的执行部分是由若干条语句构成的。C语言都是用来完成一定操作的任务。C语句必须依赖于函数存在。 C程序结构 C语句分类 1.控制语句 作…...
大物重修之浅显知识点
第一章 质点运动学 例1 知识点公式如下: 例2 例3 例4 例5 例6 第四章 刚体的转动 例1 例2 例3 例4 例5 例6 第五章 简谐振动 例1 例2 例3 第六章 机械波 第八章 热力学基础 第九章 静电场 第十一章 恒定磁场…...
随笔-近况
好久没写了,手都生了。 我写的东西可以分为两类:技术和随笔。当然技术没有我自己创新的,都是些在解决问题过程中查询了很多资料,经过验证后,可以在项目上使用的。但是自从 deepseek 出现后,问题一下子简单…...
赤色世界 陈默传 第一章 另一个陈默
赤色世界 陈默传 第一章 另一个陈默 陈默在一片纯白的空间中缓缓睁开眼睛。没有声音,没有光影的变化,只有无尽的空白包围着他,仿佛整个世界被擦去了所有的色彩和形状。他站在那里,赤脚踩在这片空无一物的地面上,却能感…...
isp流程介绍(yuv格式阶段)
一、前言介绍 前面两章里面,已经分别讲解了在Raw和Rgb域里面,ISP的相关算法流程,从前面文章里面可以看到,在Raw和Rgb域里面,很多ISP算法操作,更像是属于sensor矫正或者说sensor标定操作。本质上来说&#x…...
关于大数据的基础知识(一)——定义特征结构要素
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(一&a…...
C++(1):整数常量
目录 一、进制表示 二、后缀指定类型 三、示例与注意 四、总结表 一、进制表示 十进制(Decimal) 格式:无前缀,由数字 0-9 组成。 示例:123、42。 注意:不能以 0 开头(否则会被视为八进制&a…...
C# NX二次开发:宏录制实战讲解(第一讲)
今天要讲的是关于NX软件录制宏操作的一些案例。 下面讲如何在NX软件中复制Part体的录制宏。 NXOpen.Session theSession NXOpen.Session.GetSession(); NXOpen.Part workPart theSession.Parts.Work; NXOpen.Part displayPart theSession.Parts.Display; NXOpe…...
C++:书架
【描述】 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤ B ≤ S <…...
34.笔记1
今天,我们回顾回顾曾经的知识。 1.二分 还记得当初的二分吗? 1.一开始的二分 就像下面这个故事: 有一只老鼠,躲在10个大瓷瓶后面。你的任务就是抓住这只老鼠,但在抓的过程会导致你选择的大瓷瓶成为分子碎片。 如…...
智慧工会服务平台建设方案Word(23页)
1. 引言 随着信息技术的快速发展,传统工会服务模式面临挑战,智慧工会服务平台应运而生。该平台旨在通过数字化手段,整合工会资源,优化服务流程,提高工作效率,为会员提供更加便捷、高效、个性化的服务体验。…...
常见降维算法分析
一、常见的降维算法 LDA线性判别PCA主成分分析t-sne降维 二、降维算法原理 2.1 LDA 线性判别 原理 :LDA(Linear Discriminant Analysis)线性判别分析是一种有监督的降维方法。它的目标是找到一个投影方向,使得不同类别的数据在…...
洛谷 P1179【NOIP 2010 普及组】数字统计 —— 逐位计算
题面:P1179 [NOIP 2010 普及组] 数字统计 - 洛谷 一:题目解释: 需要求一区间内数字 2 的出现次数。注意22则记为 2 次,其它没别的... 二:思路、 思想可以考虑动态规划需要计算在每一位上数字 2 的出现次数,然后将这些…...
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1 场景背景 在某互联网大厂的技术面试中,技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情,但回答问题时总是带着幽默感,有时甚至让人哭笑不得。…...
学习黑客5 分钟读懂什么是 CVE?
5 分钟读懂什么是 CVE? ⏱️🔐 目标读者: 安全小白 风格: ***式清晰、循序渐进 篇幅: 5 分钟速读 📖 目录 🚀 什么是 CVE?🤔 为什么要关注 CVE?🔍…...
SAM详解3.1(关于2和3的习题)
SAM SAMluogu5341SP8222SAM 推销一波前面的文章: SAM详解1 SAM详解2(初级应用) SAM详解3(SAM与AC自动机的相似性,SAM处理字符串匹配) luogu5341 题目链接 精简题意:给你一个字符串和 k k k,求 出现了 k k k 次的子串的长度 的出现次数 的最大值。 我们可以用 S…...
Java中医门诊系统源码 中医诊所系统源码
Java中医门诊系统源码 中医诊所系统源码 一、患者信息录入在中医问诊系统中,患者信息录入是第一步。系统会要求患者填写一些基本信息,如姓名、年龄、性别、职业等,以及一些关于健康状况的详细描述。这些信息将被系统自动保存,并用…...
Edwards爱德华STP泵软件用于操作和监控涡轮分子泵
Edwards爱德华STP泵软件用于操作和监控涡轮分子泵...
RabittMQ-高级特性2-应用问题
文章目录 前言延迟队列介绍ttl死信队列存在问题延迟队列插件安装延迟插件使用事务消息分发概念介绍限流非公平分发(负载均衡) 限流负载均衡RabbitMQ应用问题-幂等性保障顺序性保障介绍1顺序性保障介绍2消息积压总结 前言 延迟队列介绍 延迟队列(Delaye…...
deep seek简介和解析
deepseek大合集,百度链接:https://pan.baidu.com/s/10EqPTg0dTat1UT6I-OlFtg?pwdw896 提取码:w896 一篇文章带你全面了解deep seek 目录 一、deep seek是什么 DeepSeek-R1开源推理模型,具有以下特点: 技术优势: 市场定位&…...
Webug4.0靶场通关笔记24- 第29关Webshell爆破
目录 一、Webshell爆破原理分析 二、第29关webshell爆破渗透实战 1.环境搭建 2.打开靶场 3.暴力破解 (1)bp开启抓包模式 (2)输入密码12并抓包 (3)配置position (4)配置payl…...
Linux系统入门第十一章 --Shell编程之函数与数组
一、Shell函数 1、函数的用法 Shell函数可用于存放一系列的指令。在Shell脚本执行的过程中,函数被置于内存中,每次调用函数时不需要从硬盘读取,因此运行的速度比较快。在Shell编程中函数并非是必须的元素,但使用函数可以对程序进…...
【文件系统—散列结构文件】
文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术,掌握linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的散列结构文件;## 二、实验内容与设计思想 实验内容 1.设…...
软件系统中功能模型 vs 数据模型 对比解析
功能模型 vs 数据模型 对比解析 一、功能模型(Functional Model) 定义:描述系统 做什么(业务逻辑与操作流程) 核心关注:行为、交互、业务流程 建模工具: 用例图(UML Use Case Dia…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(17):「 」と言いました
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(17):「 」と言いました 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)复习(2)「…...
qiankun微前端任意位置子应用
qiankun微前端任意位置子应用 主项目1、安装qiankun2、引入注册3、路由创建4、路由守卫 二、子项目1、安装sh-winter/vite-plugin-qiankun2、main.js配置3、vite.config.js配置 三、问题解决 主项目 1、安装qiankun npm i qiankun -S2、引入注册 创建存放子应用页面 //whpv…...
普通IT的股票交易成长史--20250509晚复盘
声明: 本文章的内容只是自己学习的总结,不构成投资建议。价格行为理论学习可参考简介中的几位,感谢他们的无私奉献。 送给自己的话: 仓位就是生命,绝对不能满仓!!!!&…...
切比雪夫不等式专题习题
切比雪夫不等式专题习题 前言 本文为概率论习题集专栏的切比雪夫不等式专题习题,共设计10道由浅入深的习题,涵盖基本概念、计算应用、理论证明与实际场景应用。建议先独立完成后再参考解析篇。 一、基础概念题 习题1: 判断题(…...
JAVA包装类
一、基本数据类型 1.整型类型: 用于表示整数数值,不包含小数部分。 类型位数取值范围默认值示例byte8-128 至 1270byte num 100;short16-32,768 至 32,7670short num 5000;int32-2,147,483,648 至 2,147,483,6470int num 100000;long64-2^63 至 2^…...
[特征工程]机器学习-part2
1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程步骤…...
布隆过滤器:高效的数据结构与应用详解
引言 在处理大规模数据时,如何高效地判断某个元素是否存在于集合中是一个常见问题。传统的数据结构(如哈希表)虽然可以解决这一问题,但在存储空间和查询效率上可能存在瓶颈。布隆过滤器(Bloom Filter)作为…...
【免杀】C2免杀 | 概念篇
一、什么是 C2 ? Command and Control(命令与控制)的缩写,是指攻击者用来远程控制被入侵设备(如计算机、服务器等)的通信架构。C2 攻击 是指攻击者在目标系统中植入远程控制恶意软件(如木马、僵尸网络、后…...
期刊论文写作注意点
下面给出关于期刊写作的几个关键注意点 一、摘要突出创新点 最重要的是论文的摘要,因为在论文送审的时候,编辑如果没有时间,最先看的就是摘要。摘要要写好。如果投的是顶刊,在摘要里面尽量不要写是在什么方法的基础上进行改进之类…...
范式之殇-关系代数与参照完整性在 Web 后台的落寞
最近参加了一个PostgreSQL相关的茶会,感慨良多。原本话题是PostgreSQL 在 SELECT 场景中凭借其成熟的查询优化器、丰富的功能特性和灵活的执行策略,展现出显著优势。在窗口函数(Window Functions)、JOIN 优化、公共表表达式&#…...
CST矩形喇叭建模
本文介绍了在电磁仿真软件中创建喇叭天线模型的基本步骤。 点击工具栏的Basic Shapes > Brick创建两个长方体(波导部分和喇叭横截面) 点击相对的两个平面,选择Loft命令进行渐变连接 将三者boolen合并 挖去中间实体,先后选…...
Python MNE-Python 脑功能磁共振数据分析
一、什么是Python MNE-Python 脑功能磁共振数据分析 为大脑功能磁共振成像数据分析工具,致力于为神经科学研究提供便捷、高效的数据分析处理工具。MNE-Python提供了处理和分析脑电图(EEG)、…...
JVM之内存管理(一)
部分内容来源:JavaGuide二哥Java 图解JVM内存结构 内存管理快速复习 栈帧:局部变量表,动态链接(符号引用转为真实引用),操作数栈(存储中间结算结果),方法返回地址 运行时…...
【AI入门】CherryStudio入门7:引入魔搭中的MCP服务
前言 来吧,继续CherryStudio的实践,前边给Cherry Studio添加知识库,对接思源笔记,以及obsidian笔记,设置了mcp-auto-install 自动安装包服务,本节让我们把魔搭中的MCP服务同步过来😄Ƕ…...
高性能Python Web 框架--FastAPI 学习「基础 → 进阶 → 生产级」
以下是针对 FastAPI 的保姆级教程,包含核心概念、完整案例和关键注意事项,采用「基础 → 进阶 → 生产级」的三阶段教学法: 一、FastAPI介绍 FastAPI 是一个现代化的、高性能的 Python Web 框架,专门用于构建 APIs(应…...
python小区物业管理系统-小区物业报修系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...
YOLO数据集标注工具LabelImg(打包Exe版本及使用)
前言: 在计算机视觉领域,YOLO(You Only Look Once)系列算法因其出色的实时目标检测性能而广受欢迎。然而,要训练一个精准的YOLO模型,高质量的数据标注(labling)是不可或缺的基础工作。 LabelImage 是一个开源的图像标注工具&…...
【NCCL】DBT算法(double binary tree,双二叉树)
目录 前言 ring 不足,需要 tree 朴素二叉tree只利用了一半带宽,需要 双二叉 tree 双二叉树的构造 ringvs 双二叉树 测试 ring和tree的选择 nccl tree tree搜索 基本概念解释 最大化局部性构建二叉树的方式 这种构建方式的好处 示例说明 前言…...
Java大师成长计划之第16天:高级并发工具类
📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4o-mini模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 在现代Java应用中,处理并…...
【C/C++】C语⾔内存函数
C语言内存函数 1. memcpy使用和模拟实现 memcpy可以代替strcpy void * memcpy ( void * destination, const void * source, size_t num );//void*来接受任意指针,size_t 单位是字节 //memcpy的头文件为<string.h> mem是memory的缩写 是内存的意思功能: …...
SQL JOIN 关联条件和 where 条件的异同
Inner join 对于 inner join,条件写到 on 和 where 部分是一样的。 select count(1) from web_site join web_page on web_site_skwp_web_page_id where web_cityPleasant Hill and wp_access_date_sk1;输出 0select count(1)from web_site join web_page on web…...
kotlin 数据类
一 kotlin数据类与java普通类区别 Kotlin 的 data class 与 Java 中的普通类(POJO)相比,确实大大减少了样板代码(boilerplate),但它的优势不止于自动生成 getter/setter、copy()、equals()、toString()&am…...
云效 MCP Server:AI 驱动的研发协作新范式
作者:黄博文、李晔彬 云效 MCP Server 是什么? 云效 MCP(Model Context Protocol)是阿里云云效平台推出的模型上下文协议标准化接口系统,作为连接 AI 助手与 DevOps 平台的核心桥梁,通过模型上下文协议将…...
复合机器人案例启示:富唯智能如何以模块化创新引领工业自动化新标杆
在国产工业机器人加速突围的浪潮中,富唯智能复合机器人案例凭借其高精度焊接与智能控制技术,成为行业标杆。然而,随着制造业对柔性化、全场景协作需求的升级,复合机器人正从单一功能向多模态协同进化。作为这一领域的创新者&#…...
信息系统项目管理师-软考高级(软考高项)2025最新(十三)(1)
个人笔记整理---仅供参考 信息系统项目理师-软考高级(软考高项)2025最新(十三)(1)第十三章项目资源管理 13.0资源管理概述 13.1管理基础 团队发展阶段背下来 13.2项目资源管理过程 13.3规划资源管...
archlinux 详解系统层面
Arch Linux 深度解析:从设计哲学到系统架构 一、Arch Linux 概述:滚动发行的极客之选 Arch Linux 是一款以 滚动更新(Rolling Release) 为核心特性的 Linux 发行版,强调 轻量、灵活、高度可定制,旨在让用…...