C语言入门
一、认识C语言
什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制 定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8 日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标 准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
第一个C语言程序
注意:main函数是主函数是程序的入口,整个项目中有且仅能有一个main函数。
main函数的几种其他写法
数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
为什么出现这么多的数据类型?
每种类型的大小是多少?

规定sizeof(long)>=sizeof(int)
计算机中的单位
在计算机中,数据存储和处理的单位有多种,主要包括以下几种:
1. 比特(bit):最小的数据单位,表示二进制中的一个位,可以是0或1。
2. 字节(byte):1字节等于8比特。字节是计算机中最常用的基本存储单位。
3. 千字节(KB, Kilobyte):1 KB = 1024 字节(在计算机科学中,通常使用二进制的1024,而不是十进制的1000)。
4. 兆字节(MB, Megabyte):1 MB = 1024 KB = 1,048,576 字节。
5. 吉字节(GB, Gigabyte):1 GB = 1024 MB = 1,073,741,824 字节。
6. 太字节(TB, Terabyte):1 TB = 1024 GB = 1,099,511,627,776 字节。
7. 拍字节(PB, Petabyte):1 PB = 1024 TB = 1,125,899,906,842,624 字节。
8. 艾字节(EB, Exabyte):1 EB = 1024 PB = 1,152,921,504,606,846,976 字节。
9. 泽字节(ZB, Zettabyte):1 ZB = 1024 EB = 1,180,591,620,717,411,303,424 字节。
10. 尧字节(YB, Yottabyte):1 YB = 1024 ZB = 1,208,925,819,614,629,174,706,176 字节。
ASCII码
ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码)是为了在计算机和其他设备之间进行文本数据交换而设计的一种字符编码标准。
在代码中,字符'a'的ASCII码值是97,这使得计算机能够以数值形式存储和处理字符数据。通过使用ASCII码,计算机可以轻松地在字符和数值之间进行转换,从而实现文本数据的存储、处理和传输。
变量,常量
定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
变量的分类
局部变量,全局变量

上面的局部变量a变量的定义其实没有什么问题的,局部变量是可以和全局变量同名的(但是不建议)。当局部变量和全局变量同名的时候,局部变量优先使用。
变量的使用
变量的作用域和生命周期
作用域
- 局部变量的作用域是变量所在的局部范围。
- 全局变量的作用域是整个工程。
eg:a的作用域就是{}内
全部变量a的作用域是整个工程
跨文件使用全局变量,需要声明
生命周期
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
常量
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
eg2: a虽然被const修饰具有常属性,但是他本质还是一个变量
n是一个变量,创建数组报错,用const修饰n以后,依然报错,说明n被const修饰以后仍然是个变量,但是它具有常属性,不能被修改而已。所以我们把const修饰的变量叫做常变量。
字符串

字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
eg1:ch里存储的内容,abcdef\0是初始化进去的,后面的3个\0是默认放进去的
eg2:\0的重要性
以字符串%s打印的时候,读取到\0就终止。对于arr1末尾就是\0作为结束标志,对于arr2只有找到\0才会结束打印,所以他就一直往后打印,最后可能打印到某个位置找到\0就停止了,所以中间打印出一堆随机值。对于arr3手动增加\0作为结束符,所以就正常打印。
eg3:strlen是求字符串长度的,\0是结束标志,\0不算长度
转义字符

很显然,这样是不行的,这里就需要引出转义字符,顾名思义就是转变字符的意思。

转移字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符。 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd 表示 2 个十六进制数字。 如: \x30 0 |
eg1: \? ,现在的编译器已经没这个效果了,vc++6.0可以验证。三字母词就是三个符号代表一个符号
eg2:
eg3:在 printf("Hello, Worl\bld!\n"); 中,\b 将光标退回一个位置,使得字母 l 覆盖了之前的字母 l,最终输出正确的单词 World。
eg4:\r 称为回车符(Carriage Return),其作用是将光标移到当前行的行首,但不换到下一行。这意味着在输出时,\r 后面的内容会覆盖当前行从行首开始的位置。
eg5:使用 \t 将输出内容对齐,使其呈现表格形式。
每个 \t 会跳到下一个制表位,输出时看起来像是有一致的间隔。
eg6: \101、\102、\103 分别是八进制数 101、102、103,对应的十进制是 65、66、67。
这些数字对应的 ASCII 字符分别是 'A'、'B'、'C'。
eg7:
\v,\f在现代终端中都效果可能不明显,可能被视为一个空格或无效字符。实际使用也是很少。
笔试题:
注释
- 代码中有不需要的代码可以直接删除,也可以注释掉
- 代码中有些代码比较难懂,可以加一下注释文字

- C语言风格的注释 /*xxxxxx*/ 缺陷:不能嵌套注释
- C++风格的注释 //xxxxxxxx 可以注释一行也可以注释多行
选择语句
循环语句
函数
函数的特点就是简化代码,代码复用。
数组
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
比
数组的使用
操作符
+ - * / %
对于除号,如果两边都是整数,执行的是整数除法,结果还是整数;如果有一个数是 浮点数,执行的就是浮点数除法,结果就是小数;与接受除法结果变量的类型无关。
>> <<
简单说一下左移就是向左移动一位,右移就是向右移动一位,可以暂且理解成左移是乘2,右移是除2,右移在后面详细去讲解。
位操作符
& ^ |
位操作符,按2进制位进行操作
按位与 & 有0则0,没有则1
按位或 | 有1则1,没有则0
按位异或 ^ 相同为0,相异为1
ps:这里都是32个比特位,前面都是一堆0,博主为了方便只写了8位。
= += -= *= /= &= ^ = |= >>= <<=
单目操作符,只有一个操作数;eg:a+b,a和b是操作数,+是操作符,+是双目操作符
! 逻辑反操作,它的作用是将非零值转换为 0,将 0 转换为 1。- 负值+ 正值& 取地址sizeof 操作数的类型长度(以字节为单位)~ 对一个数的二进制按位取反,就是将二进制码0变为1,1变为0-- 前置、后置 --++ 前置、后置 ++* 间接访问操作符 ( 解引用操作符 )( 类型 ) 强制类型转换
逻辑反
eg:
0取反后的结果为-1
内存中存储整数的时候,存储的是二进制的补码,计算的时候采用也是补码,但是最终是以原码的形式显示的。
前置后置++
强制类型转换
>>=<<=!= 用于测试 “ 不相等 ”== 用于测试 “ 相等 ”
&& 逻辑与,表示并且,a且b|| 逻辑或,表示或者,a或者b
exp1 ? exp2 : exp3
又叫三目操作符,如果表达式1成立,结果是表达式2,否则就是表达式3
exp1 , exp2 , exp3 , …expN
逗号把一堆表达式隔开就叫做逗号表达式
下标引用、函数调用和结构成员
[] () . ->
常见关键字
auto break case char const continue default do double else enumextern float for goto if int long register return short signedsizeof static struct switch typedef union unsigned void volatile while
auto关键字
在 C 语言中,auto 关键字用于声明局部变量。实际上,所有的局部变量默认都是 auto 类型,所以使用 auto 关键字是多余的。它的作用是显式地声明一个变量为自动存储类型,但在实际编程中很少使用。
typedef关键字

register关键字
register意思是寄存器,寄存器是存储空间,在电脑上一般是集成到CPU上的,和内存是不同的独立的存储空间。
计算机上的存储空间?
越往上读写速度越快,价格越高。
CPU是中央处理器,早期CPU从内存中读取数据进行处理,处理完后返回内存,他俩的速度比较搭配,随着技术的发展,内存的读写速度提升不明显,但是CPU的读写速度提升的越来越快,甩了内存不止一条街。CPU处理的速度很快,但内存赶不上CPU的处理速度也没啥用,比如说,造房子和搬砖,刚开始造房子和搬砖的速度一致,你搬来一块砖,我就即使建造,但是后来我造房子的速度越来越快,但是搬砖的速度不变,无论你造的有多快,都没啥用,必须等砖来。
所以就衍生出高速缓存和寄存器,高速缓存比内存块,寄存器比高速缓存快,CPU就和寄存器交换数据。寄存器和高速缓存交换数据,高速缓存和内存交换数据。在CPU处理数据的同时,就把需要的数据一层一层的替换到寄存器中,这样就提高了整体的效率。
如果我将来能把我写的代码的变量的值放到寄存器中去,这样的话程序的效率就会很高。C语言允许这样去做。但是如果所有程序员都想把变量放到寄存器上这就是灾难,因为寄存器是的空间是有限的,所以register起到的作用仅仅是建议把变量放到寄存器中,编译器自己觉得是否放到寄存器中。
static关键字
修饰局部变量
i进入test后创建,++后变为1,出了test后又销毁,所以每次都打印1.static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束, 生命周期才结束。
修饰全局变量
代码一
代码二
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用, 不能在其他源文件内使用。 默认一个全局变量具有外部链接属性,如果全局变量被static修饰,使得全局变量的外部链接属性变成了内部链接属性,这个时候这个全局变量只能在本源文件内部使用,其他源文件无法链接到,也无法使用。
修饰函数
代码一函数也具有外部链接属性
代码二
代码1正常,代码2在编译的时候会出现链接性错误. 一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。函数是具有外部链接属性的,如果被static修饰,外部链接属性就变成了内部链接属性,函数只能在自己的源文件内部使用,不能在其他源文件内部使用。
#define 定义常量和宏
指针
内存
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。 比如说你买电脑的时候,就有4G/8G/16G,那么电脑是如何使用这些内存的呢?
生活中的例子,我们国家有960W的国土面积,如何使用呢,我们会发现,这些国土面积被划分成了各个省,市,自治区,省内部划分成市,市内部划分成县,区等等,区,县再划分成镇,村等,最后可能是某一个小区,单元楼等,某一个单元楼进去以后又是第几户等等,最终这么大的空间归结到一个一个小房间上。比如说现在我要找一个学生,你是xx大学xx校区xx宿舍楼xx号宿舍,我们就可以根据这个地址就可以唯一的找到一个房间,从而找到你。
计算机内存使用的时候也是一样,也会把他划分成一个一个小的内存单元,每个内存单元进行编号,这样我们就可以根据这个编号找到这个内存单元
我们怎么去落实呢?这个时候就需要两个问题去解决:
1.编号(地址)怎么产生? 这个内存单元的编号就可以称做地址(类比现实生活中的地址)
2.一个内存单元应该是多大的空间?
编号(地址)怎么产生?
机器可以分为32位和64位
32位机器就是有32根地址线/数据线,地址线就是物理上的电线,电线通电的时候就有正电和负电之分,正电就是1,负电就是0,电信号就转换成了数字信号,01组成的序列就是2进制序列。
可能是:
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
...............................
1000 0000 0000 0000 0000 0000 0000 0000
...............................
1111 1111 1111 1111 1111 1111 1111 1111
一共可以产生2^32次方2进制序列,这个时候我就可以用这么多序列管理内存单元,这些二进制序列就是内存单元的地址了,所以地址就产生了。第一个问题就解决了
一个内存单元应该是多大的空间?
首先明确计算机里的单位有bit,byte,kb,mb,gb,tb,pb...这些是属于比较常用的。
假设一个内存单元是一个比特位,一共就有2^32个内存单元
那么我2^32个地址最多管理0.5g的空间,但是对于32位机器1G/2G是非常常见的,所以如果一个内存单元的大小是1个比特位是很不合适的。
另外在C语言中
如果一个内存单元的大小是1个比特位,我们创建一个char类型的变量,就需要占8个格子,每个格子都给一个地址,那么8个地址就都被浪费了,更不用说其他类型的变量了,浪费非常严重,所以一个内存单元的大小是1个比特位很不合适。
那么一个内存单元的大小是1个字节呢?
这样总的内存空间就变成4G了,从大小上看是比较合适的。
如果创建一个char类型,用去一个地址,int类型用4个地址,貌似也比较合适。
那么一个内存单元的大小是1个kb呢?
1kb是1024字节,我如果创建char只需要1个字节,分配空间就很麻烦,我随便创建个变量最少也要浪费1kb的空间,所以也很不合适。
综合考虑那么一个内存单元的大小是1个字节比较合适。
eg:创建一个int变量占4个字节
那么这个a的地址是啥呢?4个内存单元中打印哪个内存单元的地址呢?
所以取出来变量a的地址是a所占空间这4个字节里面第一个字节的地址,而且这个地址是4个字节里最小的那个地址。通过这个小的地址,结合地址的连续性,就可以找到后面的3个字节。那么我取高地址不也可以找到前面3个字节嘛,当然也可以,只不过C语言规定变量的地址取的是第一个字节的地址,也就是最小的那个地址。
ps:每次编译变量a的地址都会改变,这是因为内存中的数据时刻在发生变化,这块空间现在你可以用,当你释放空间后,下一刻就有可能被别人用了。每次都是重新分配。
这时候我们就明白,地址就是一串数字,所以我们就可以把这串数字存起来
pa存放的就是a的地址,pa就是一个存放地址的变量,这样的变量就被称为指针变量。它的语法形式就是int *
00000017EC9CF814是一个地址,因为这个地址可以找到a这块空间,所以我们形象的把这个地址称为指针,指针就是地址,地址就是指针,pa存的是a的地址,也可以说pa存的是指针,pa就可以称做指针变量。
我们把这个地址存起来不仅仅是为了存储,有时候我需要用,比如生活中我知道你的地址,就可以给你寄一些东西。所以我们就要通过这个地址来找到这个变量a。
*pa 代表通过pa里面存的地址00000017EC9CF814找到它所指向的那块空间a,*pa的意思就是a
可以看出成功通过*pa更改掉a的值。
指针变量的大小
可以看出所有类型的指针变量都是4个字节,这是为什么呢?
根据之前讲的:机器可以分为32位和64位;32位机器就是有32根地址线/数据线,地址线就是物理上的电线,电线通电的时候就有正电和负电之分,正电就是1,负电就是0,电信号就转换成了数字信号,01组成的序列就是2进制序列。
每一根地址线就是一个比特位,一共32根就是32个比特位,也就是4个字节。所以要想把这些地址存起来,就需要四个字节。因此,任何指针变量他都是4个字节。
如果将机器改成64位,就会变成8个字节,因为64位机器,需要64根地址线,每根地址线需要一个比特位,64根地址线就需要64个比特位,也就是8个字节。
结构体
在C语言中如果遇到了复杂对象该怎么办呢?比如说学生,如果用简单的变量(int,float等)描述学生是完全不行。因为学生的属性比较复杂,比如有姓名,学号,年龄等,所以这个时候结构体就派上用场了。
创建结构体变量
.操作符,访问结构体变量
.操作符的使用方式是: 结构体变量名.成员名
→操作符,访问结构体变量
存在这样一种情况,你可能得到的是某个结构体变量的指针,这个时候就可以通过→操作符访问该结构体变量了。ps:我们同样可以采用先对结构体指针变量解引用,然后继续用.操作符。
入门算法题
学完以后,大家就可以去这个网站刷一刷入门级题目了。
牛客网在线编程_算法篇_语法入门题单
相关文章:
C语言入门
一、认识C语言 什么是C语言 C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,…...
java 异常验证框架validation,全局异常处理,请求验证
1、依赖 异常验证框架validation<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot.version}</version></dependency> 当鼠标放在依…...
如何使用VH6501进行CAN采样点测试
Vector 的 VH6501 是一种专为 CAN 和 CAN FD 网络设计的干扰测试设备,集成了干扰生成和 CANoe 网络接口功能,支持通过 CAPL 脚本实现测试自动化。 硬件规格如下: VH6501采样点测试原理是:干扰一帧报文中某一位的采样点附近的总线电…...
QT6 源(113)篇二:阅读与注释工具栏 QToolBar,给出源码
(9)本源码来自于头文件 qtoolbar . h : #ifndef QDYNAMICTOOLBAR_H #define QDYNAMICTOOLBAR_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtGui/qaction.h> #include <QtWidgets/qwidget.h>QT_REQUIRE_CONFIG(to…...
编程日志5.13
邻接表的基础代码 #include<iostream> using namespace std; //邻接表的类声明 class Graph {private: //结构体EdgeNode表示图中的边结点,包含顶点vertex、权重weight和指向下一个边结点的指针next struct EdgeNode { int vertex; int weight; …...
Java 08集合
集合 Collection 接口,不可以创建对象add clear remove contains(Object obj);判断是否存在 isEmpty 空返回为true sizeArrayList Collection<String> cnew ArraryList<>(); 以多态的方法创建集合对象,调用单列集合中的共有方法 编译看…...
CSS 背景全解析:从基础属性到视觉魔法
CSS 背景属性用于定义HTML元素的背景。 CSS 属性定义背景效果: background-color background-image background-repeat background-attachment background-position 一、background-color:背景颜色 作用:设置元素的背景色,支持所有合法…...
2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++/C/GO六种语言最佳实现
华为OD全流程解析,备考攻略 快捷目录 华为OD全流程解析,备考攻略一、什么是华为OD?二、什么是华为OD机试?三、华为OD面试流程四、华为OD薪资待遇及职级体系五、ABCDE卷类型及特点六、题型与考点七、机试备考策略八、薪资与转正九、…...
中小型制造业信息化战略规划指南
1 引言 在当今技术飞速发展和全球竞争日趋激烈的时代,信息化建设对于中小型制造企业(SME)而言,已不再是可有可无的选项,而是关乎生存、发展和保持持续竞争力的核心要素。在数字化浪潮席卷全球的背景下,制造…...
PowerBI 矩阵实现动态行内容(如前后销售数据)统计数据,以及过滤同时为0的数据
我们有一张活动表 和 一张销售表 我们想实现如下的效果,当选择某个活动时,显示活动前后3天的销售对比图,如下: 实现方法: 1.新建一个表,用于显示列: 2.新建一个度量值,用SELECTEDVA…...
在QT中栅格布局里套非栅格布局的布局会出现父布局缩放子布局不跟随的问题
这个是 Qt Designer 设计界面中的一个“常见陷阱”。 🧠 结论先说: 在 Qt Designer 中使用栅格布局(Grid Layout)嵌套其他栅格布局,一般不会出问题,但如果嵌套的是水平布局(HBox)或垂…...
Pydantic数据验证实战指南:让Python应用更健壮与智能
导读:在日益复杂的数据驱动开发环境中,如何高效、安全地处理和验证数据成为每位Python开发者面临的关键挑战。本文全面解析了Pydantic这一革命性数据验证库,展示了它如何通过声明式API和类型提示系统,彻底改变Python数据处理模式。…...
深度解析 HDFS与Hive的关系
1. HDFS 和 Hive 如何协同 我们将从 HDFS(Hadoop Distributed File System) 的架构入手,深入剖析其核心组成、工作机制、内部流程与高可用机制。然后详细阐述 Hive 与 HDFS 的关系,从执行流程、元数据管理、文件读写、计算耦合等…...
ArrayList源码分析
1. ArrayList默认初始化容量 首先编写一个简单的初始化ArrayList的代码 List<String> li new ArrayList<>();然后进入ArrayList中,在无参数构造方法中可以查看到上面的绿色注释中写了构造一个空的集合并且初始化容量为10。接下来继续查看源码&#x…...
文件操作和IO-2 使用Java操作文件
Java操作文件的API 1、针对文件系统的操作。包括但不限于:创建文件、删除文件、重命名文件、列出目录内容…… 2、针对文件内容的操作。读文件/写文件 Java中针对文件的操作,使用File类来进行操作,这个类被存储在java.io这个包里面。 i&a…...
day 31
文件的拆分 1. 项目核心代码组织 src/(source的缩写):存放项目的核心源代码。 2. 配置文件管理 config/ 目录:集中存放项目的配置文件,方便管理和切换不同环境(开发、测试、生产)的配置。 …...
基于Python批量删除文件和批量增加文件
一、为什么写这么一个程序 其实原因也是很简单的,我去网上下载了一个文件夹,里面太多别人的文件了,我不喜欢,所以我就写了这么一个代码。 二、安装Python和vscode 先安装Python在安装vscode Python安装 vscode的安装 三、源码…...
【信息系统项目管理师】第12章:项目质量管理 - 26个经典题目及详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
ShenNiusModularity项目源码学习(27:ShenNius.Admin.Mvc项目分析-12)
订单列表页面用于浏览、检索、维护商城模块的订单信息。订单列表页面的后台控制器类OrderController位于ShenNius.Admin.Mvc项目的Areas\Shop\Controllers内,页面文件位于同项目的Areas\Shop\Views\Order内,其中Index.cshtml页面为主页面,Det…...
(T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复
一、不小心删除 今天是2025年5月15日,非常沉重的一天,就在今早8点左右的时候我打算继续做我的毕业设计,由于开机的过程十分缓慢(之前没有),加上刚开机电脑有卡死的迹象,再加上昨天晚上关电脑前…...
【Python装饰器深度解析】从语法糖到元编程实战
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现案例1:基础计时装饰器案…...
操作系统学习笔记第5章 (竟成)
目录 第 5 章 输入 / 输出 (I/O) 管理 5.1 I/O 管理基础 5.1.1 I/O 设备 1.I/O 设备的基本概念 2.I/O 设备的分类 3.I/O 接口 4.I/O 端口 (1) I/O 端口的概念 (2) I/O 端口的编址 ① 独立编址方式 ② 统一编址方式 5.1.2 I/O 控制方式 1. 程序查询方式 2. 程序中断方式 3. DMA …...
【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
目录 一、DCGMI 概述与应用场景 二、Ubuntu 22.04 系统准备 2.1 系统要求 2.2 环境清理(可选) 三、DCGMI 安装步骤(详细图解) 3.1 安装流程总览 3.2 分步操作指南 3.2.1 系统更新与依赖安装 3.2.2 添加 NVIDIA 官方仓库 3.2.3 安装数据中心驱动与 DCGM 3.2.4 服务…...
C# 使用 OpenCV 基础
一、C#安装OpenCV 安装上面两个模块 二、使用 导入 using OpenCvSharp;加载图片 // 导入图片 Mat image Cv2.ImRead("C:\x5.bmp"); // 拷贝 Mat image2 image.Clone();// 打开窗口 Cv2.NamedWindow("image", WindowFlags.AutoSize); // 显示图片 Cv2…...
如何解决全局或静态变量被修改的bug
问题卡死 程序原来设置Firware name 时N32G475,在程序运行时,程序崩溃,发现输出的固件名称没有了,这里说明固件名称被程序修改了 程序在开机时都是对的 打开map文件查找fw_name的内存地址,他的值被更改,就…...
[Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九)
[Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九) 一、Sentinel简介 Sentinel是阿里开源的分布式系统流量防卫组件,核心功能包括: 流量控制:根据QPS、线程数等指标限制资源访问熔断降…...
Linux系统中,Ctrl+C的运行过程是什么?
文章目录 前言1.终端驱动捕获键盘输入2.信号发送到前台进程组3. 进程处理信号4. 信号传递的详细流程5. Shell 的后续处理关键机制说明扩展:其他相关信号总结 前言 今天看到有个小伙伴面试问到这个问题,感觉挺有意思,我们后端开发者相信都用过…...
101个α因子#9
((0 < ts_min(delta(close, 1), 5)) ? delta(close, 1) : ((ts_max(delta(close, 1), 5) < 0) ? delta(close, 1) : (-1 * delta(close, 1))))worldquant brain平台上调整后的语法: ((0 < min(close-ts_delay(close, 1), ts_delay(close, 1)-ts_delay(c…...
DAY28 超大力王爱学Python
知识点回顾: 类的定义pass占位语句类的初始化方法类的普通方法类的继承:属性的继承、方法的继承 作业 题目1:定义圆(Circle)类 import mathclass Circle:def __init__(self, radius1):self.radius radius # 半径属性…...
【C++算法】70.队列+宽搜_N 叉树的层序遍历
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 429. N 叉树的层序遍历 题目描述: 解法 使用队列层序遍历就可以了。 先入根节点1。queue:1 然后出根节点1,入孩子节点2,3&a…...
常用UI自动化测试框架
🔍 常用UI自动化测试框架全览(Web / 移动 / 桌面 / AI驱动) UI(用户界面)测试框架是一类用于自动化测试应用图形界面的工具,帮助开发者和测试人员验证界面元素的功能性、交互性和视觉一致性。本文系统梳理了…...
C语言指针深入详解(五):回调函数、qsort函数
目录 一、回调函数 1、使用回调函数改造前 2、使用回到函数改造后 二、qsort使用举例 1、使用qsort函数排序整型数据 2、使用qsort排序结构数据 三、qsort函数模拟实现 结语 🔥个人主页:艾莉丝努力练剑 🍓专栏传送门:《…...
# YOLOv5:目标检测的新里程碑
YOLOv5:目标检测的新里程碑 在计算机视觉领域,目标检测一直是研究的热点和难点之一。近年来,随着深度学习技术的飞速发展,目标检测算法也取得了显著的进步。YOLO(You Only Look Once)系列算法以其高效的实…...
beanstalk一直被重新保留(reserved 状态)消息删除
说明:wallet是我的tube 完整流程示例 暂停 tube(防止任务被重新保留)pause-tube wallet 300踢回并删除任务kick 100000 # 踢回所有 reserved 任务 delete 183723 # 删除目标任务恢复 tube(取消暂停)pause-tu…...
NLP学习路线图(二): 概率论与统计学(贝叶斯定理、概率分布等)
引言 自然语言处理(NLP)作为人工智能的重要分支,致力于让机器理解、生成和操作人类语言。无论是机器翻译、情感分析还是聊天机器人,其底层逻辑都离不开数学工具的支持。概率论与统计学是NLP的核心数学基础之一,它们为…...
塔能智能照明方案——贵州某地区市政照明改造实践
在城市市政建设中,照明系统作为城市基础设施的重要组成部分,其能耗问题日益凸显。传统市政照明设备能耗高、运维效率低,成为城市绿色发展的阻碍。塔能科技针对这一痛点,为贵州某地区量身打造智能照明改造方案,通过技术…...
Mybatis的逆向工程Generator
Mybatis的逆向工程 什么是逆向工程 generator 简单点说,就是通过数据库中的单表,自动生成java代码。 Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类) 企业开发中&#…...
Runtime Suspend 专项训练
Q1. 什么是 Runtime PM?与 System Suspend 有什么区别? 答: Runtime PM(运行时电源管理)是 Linux 内核为单个设备提供的自动挂起机制。其核心思想是在设备空闲期间,关闭其时钟、电源、总线连接等资源&…...
香港科技大学(广州)智能制造理学硕士招生宣讲会——深圳大学专场
深圳大学专场宣讲会 时间:5月22日(星期四)19:00-20:00 地点:深圳大学沧海校区致原楼1101 🎓主讲嘉宾: 汤凯 教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-personal-page/TANG-Kai/mektang …...
使用MacPro 安装flutter开发环境 详细教程
Mac 有 英特尔芯片 和 苹果芯片,故安装路径可能略有不同,但是思路 大致一样,以下内容仅供小伙伴们参考: 首先下载环境安装的软件,并推荐使用稳定版本。 gralde 8.5 点击下载 android studio 点击下载 jdk 点击下载…...
常见的 API 及相关知识总结
常见的 API 及相关知识总结 一、Math 类 Math 类提供了许多用于数学计算的静态方法和常量。 常见方法总结 方法描述Math.abs()返回一个数的绝对值Math.ceil()返回大于或等于给定数字的最小整数Math.floor()返回小于或等于给定数字的最大整数Math.round()对一个数进行四舍五…...
7-Zip软件下载与使用攻略:如何使用7z格式解压缩更高效?
在数字化文件管理中,压缩与解压缩工具的选择至关重要。7-Zip是一款广受欢迎的开源软件,以其高效的压缩率和多种格式支持而备受推崇。然而,解压专家作为另一款优秀的解压缩软件,同样值得关注。本文将为您推荐7-Zip的下载渠道&#…...
第 84 场周赛:翻转图像、字符串中的查找与替换、图像重叠、树中距离之和
Q1、[简单] 翻转图像 1、题目描述 给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。 反转…...
SkyReels-V2:开启无限时长电影生成新时代
AI 在视频生成领域的突破尤为引人注目,为内容创作带来了全新的可能性。而 SkyReels-V2 的问世,更是如同一场革命,彻底颠覆了人们对视频生成技术的认知,开启了无限时长电影生成的新时代。 一、背景与挑战 回顾视频生成技术的发展…...
教师可用的申报书——基于GAI的小学数学课堂跨学科支架设计与实践
课题申报书:基于GAI的小学数学课堂跨学科支架设计与实践 (一)立项依据与研究内容 1. 项目的立项依据 1.1 研究意义 2025年《教育强国建设规划纲要》明确提出“推动学科融合发展”,《信息化标准建设行动计划(2024-2027年)》强调技术赋能教育创新。小学数学作为基础学科,…...
79、modelsim单独仿真altera带IP核的文件
1.编译 quartus 仿真库(如果有就不用编译了) 编译完成后 sim 文件夹中产生一个 verilog_libs 文件夹,打开文件夹 以上便是编译产生的库,将库添加到 modelsim 中也就是观察此文件中的 modelsim.ini 与 modelsim 安装目录下此…...
将 Workbook 输出流直接上传到云盘
如果不想将 Excel 文件保存到本地,而是希望直接将输出流上传到云存储(如阿里云OSS、腾讯云COS、七牛云等),可以采用以下方法: 文章目录 1. 创建内存中的 Excel 输出流2. 上传到云存储的通用方法3. 具体云服务实现示例…...
【LINUX操作系统】日志系统——自己实现一个简易的日志系统
经过一段时间的操作系统的学习,现在是时候让读者朋友们利用学过的技术知识自己完成一个简单的日志系统。认识、了解日志系统既是对已有多线程知识的运用,也是进一步提升项目技术能力的必须步骤。 1. 什么是日志 ⽇志认识 计算机中的⽇志是记录系统和软件…...
HTML页面渲染过程
前言 文章很长,凡是我觉得好的东西统统都塞进来了。看了很多的文章,有些说法甚至都不统一,所以还动用了AI搜索。总之希望这篇文章能有点用,如有错误,欢迎指正。 浏览器介绍 浏览器的主要组件包括: 界面…...
【八股战神篇】Java虚拟机(JVM)高频面试题
目录 专栏简介 一 请解释Java虚拟机(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 对象创建的过程了解吗 延伸 1.Java 创建对象的四种常见方式 三 什么是双亲委派模型 延伸 1.双亲委派机制的作用: 2.双亲委派模型…...