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

C 语言雏启:擘画代码乾坤,谛观编程奥宇之初瞰

在这里插入图片描述

大家好啊,我是小象٩(๑òωó๑)۶
我的博客:Xiao Xiangζั͡ޓއއ

很高兴见到大家,希望能够和大家一起交流学习,共同进步。*
在这里插入图片描述

这一课主要是让大家初步了解C语言,了解我们的开发环境,main函数,库函数,关键字,字符和字符串等内容的介绍,后面会一一讲解

文章目录

  • 一. C语言是什么
        • 1.1 C语言的历史
  • 二. 开发环境
        • 编译型语言和解释型语言
        • 2.1 编译和链接
        • 2.2 编译器的选择
            • 2.2.1 VS项目和源文件、头文件介绍
            • 2.2.2在VS创建项目
  • 三、第一个C语言程序
  • 四、main函数
  • 五、printf和库函数
        • 5.1什么是库函数呢
  • 六、关键字介绍
  • 七、字符和ASCII编码
  • 八、字符串和\0
  • 九、转义字符
  • 十、语句和语句分类
      • 10.1 空语句
      • 10.2 表达式语句
      • 10.3 函数调用语句
      • 10.4 复合语句
      • 10.5 控制语句
  • 十一、注释
      • 11.1注释的两种形式
        • 11.1.1/**/形式
        • 11.1.2//形式
      • 11.2 注释会被替换
  • 十二、结尾

一. C语言是什么

我们都知道,人和人交流使用的都是自然语言,而对于计算机来说,CPU唯一认识的语言是机器语言,也就是计算机语言。
计算机能识别的是二进制指令,目前已知已经有上千种计算机语言,人们是通过计算机语言写的程序,给计算机下达指令,让计算机工作的。
其中,C语言就是众多计算机语言中的⼀种,当然C++/Java/Go/Python都是计算机语言。

1.1 C语言的历史

既然要学C语言,我们就要知道C语言是怎么来的.
其实,C语言最初是作为Unix系统的开发工具而发明的。

我们在链接:https://www.tiobe.com/tiobe-index/也能看到C语言是很受欢迎的语言
在这里插入图片描述

二. 开发环境

编译型语言和解释型语言

对于 CPU 而言,编译型语言 是将源代码先通过编译器编译为 CPU 认识的机器码(可执行文件),此后 CPU 随时都可以直接执行编译后的机器码;而解释型语言则不直接编译成机器码,而是将源码转换成中间代码,然后发送给解释器,由解释器逐句翻译给 CPU 来执行。

2.1 编译和链接

我们要知道,C语言是一门编译型计算机语言,而实际上C语言源代码都是文本文件,文本文件本身是无法执行的,必须通过编译器翻译和链接器的链接,然后生成二进制的可执行文件,最终才能够执行。
所以我们知道了,要得到最终运行的可执行程序,中间必须要经过编译链接两个过程

⼀个工程一般都会有多个源文件组成
C语言代码是放在 .c 为后缀的文件中的
注:
1. 每个源文件(.c)单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
2. 多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)

注意:在 Linux 系统上用 C 语言编译的可执行程序,不能在 Windows系统上执行,因为可执行文件在执行之前,操作系统要有一些准备工作,因为不同的操作系统,准备工作是不同的,所以可执行文件的格式不完全相同。比Windows 上大部分可执行文件为 PE 格式,而 Linux 上大部分可执行文件为 ELF格式。格式不同导致了不同的可执行文件无法跨平台直接使用

2.2 编译器的选择

C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令

那我们常见的C语言编译器都有哪些呢?
比如:msvc、clang、gcc 就是⼀些常见的编译器,当然也有⼀些集成开发环境 如:VS2022、XCode、CodeBlocks、DevC++、Clion 等。

集成开发环境(IDE)用于提供程序开发环境的应用程序,一般包括代码编辑器、 编译器 、 调试器和图形用户界面等工具。
集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。(集成开发环境不能直接称作编译器,集成开发环境中集成了编译器)

我们最常见到的编译器一般是VS2022DevC++,而我比较推荐初学者使用VS2022,因为它上手容易,默认界面为中文,对新手友好,可以等到后面再熟悉DevC++

2.2.1 VS项目和源文件、头文件介绍

在VS上写代码,我们是需要创建项目的,直接新建项目就可以了。
在项目中就可以添加源文件和头文件。
C语言把 .c 为后缀的文件称为源文件,把 .h 为后缀的文件称为头文件,h的意思是header的意思。

2.2.2在VS创建项目

在这里插入图片描述

首先创建新项目

在这里插入图片描述

选择空项目,接着下一步

在这里插入图片描述

项目名称不能写中文,也不要有特殊字符 项目可以放在你想放的地方,但路径上最好不要有中文,也不要有特殊字符

在这里插入图片描述

创建好之后,首先打开解决方案资源管理器(一般是默认有打开的,如果有打开的话就不用管)

在这里插入图片描述

创建项目后,右击源文件————添加————新建项

在这里插入图片描述

选择第一个,接着把cpp后缀改成c,然后添加

在这里插入图片描述

如果点进去是这种界面最好打开显示所有模板(至于为啥后面的学习会讲到)

在这里插入图片描述

这样就创建好啦!后面会写一篇关于VS的快捷键和调试技巧,方便大家更好的使用VS

三、第一个C语言程序

这里演示VS2022中创建项目和编写C代码的过程,并运行出结果。
在VS2022上运行代码的快捷键:Ctrl+f5

四、main函数

每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的

main 函数是程序的入口

main 函数也被叫做:主函数
main 前面的 int 表示 main 函数执行结束的时候返回⼀个整型类型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。

总结一下:
• main函数是程序的入口
• main函数有且仅有一个
• 即使一个项目中有多个.c文件,但是只能有一个main函数(因为程序的入口只能有⼀个)

第一次写代码,一些常见的错误总结:
• main 被写成了mian
• main后边的()漏掉了
• 代码中不能使用中文符号,比如括号和分号
• 一条语句结束后,有分号

五、printf和库函数

在上面的代码中有⼀句代码如下:
代码中使用了 printf 函数,实现了在屏幕上的信息的打印
这里简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(⼀般指屏幕)上进行信息的打印。上面的代码是使用 printf 函数打印字符串。只要把想要打印的一串字符放在双引号中并传递给printf函数就可以打印。
printf函数也可以用来打印其他类型的数据,比如:

int n = 100;
printf("%d\n", n); //printf打印整型
printf("%c\n", 'q'); //printf打印字符
printf("%lf\n", 3.14); //printf打印双精度浮点型

这里的 %d , %c 等是占位符,会被后边的值替换。(后期会有讲解)
同时我们在使用库函数的时候,是需要包含头文件的,比如: printf 函数需要包含的就是stdio.h 这个头文件,具体的方法就是:

#include <stdio.h>
5.1什么是库函数呢

由来稍微了解就行,需要记的是后面用到的采用库函数,慢慢积累即可
那什么是库函数呢?
为了提升开发效率,也为了不再重复实现常见的代码,于是C语言标准规定了⼀组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库(后面学习函数时会讲到),这些函数也被称为库函数。在这个基础上一些编译器厂商可能会额外扩展提供部分函数(这些函数其他编译器不一定支持)。
⼀个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。
库函数比较多,后期慢慢来介绍,提前了解可参考链接:https://cplusplus.com/reference/clibrary/

六、关键字介绍

C语言中有一批保留的名字的符号,比如: int 、 if 、 return ,这些符号被称为保留字或者关键字

• 关键字都有特殊的意义,是保留给C语言使用的
• 程序员自己在创建标识符的时候是不能和关键字重复的
• 关键字也是不能自己创建的。

C语言的32个关键字如下:

auto break case char const continue default do double else enum 
extern
float for goto if int long register return short signed sizeofstatic
struct switch typedef union unsigned void volatile while

千万不能一口气背下来,千万不能一口气背下来,千万不能一口气背下来,后面学习到再理解记下即可
注:在C99标准中加入了 inline 、 restrict 、 _Bool 、 _Complex 、 _Imaginary 等关键字。
一些关键字大家可以去了解⼀下,不过使用最多的还是上面的32个关键字。
注:https://zh.cppreference.com/w/c/keyword(C语言关键字的全部介绍)
后期学习到会慢慢介绍这些常用的关键字的

七、字符和ASCII编码

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语言中字符是用单引号括起来的,如:‘a’,‘b’,‘@’。
我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了了便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语言中的字符就遵循了 ASCII 编码的方式。
在这里插入图片描述

参考:https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,使用时查看就可以,不过我们最好能掌握几组特殊的数
据:

• 字符A-Z的ASCII码值从65~90
• 字符a-z的ASCII码值从97~122
• 对应的大小写字符(a和A)的ASCII码值的差值是32
• 数字字符0-9的ASCII码值从48~57
• 换行 \n的ASCII值是:10
• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,无法打印在屏幕上观察

八、字符串和\0

C语言中如何表示字符串呢?使用双引号括起来的一串字符就被称为字符串,如:“abcdef”,就是一个字符串。
字符串的打印格式可以使用%s来指定,也可以直接打印如下:
C语言字符串中一个特殊的知识,就是

字符串的末尾隐藏放着⼀个 \0 字符
\0 字符是字符串的结束标志

对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏一个 \0 的转义字符, \0 是字符串的结束标志。所以我们在使用库函数 printf() 打印字符串或者strlen() 计算字符串长度的时候,遇到 \0 的时候就自动停止了。

C语言中也可以把⼀个字符串放在⼀个字符数组(数组后面会学到,现在稍微能够了解\0的功能就行)中,我们在这里利用下面的代码验证⼀下 \0 的功能。

在这里插入图片描述
我们可以看到, arr1 字符数组在打印的时候,打印了 a 、 b 、 c 后还打印了一些随机值,这就是因为 arr1 在末尾的地方没有 \0 字符作为结束标志,在打印的时候没有停止。
但是 arr2 的打印就是完全正常的,就是因为 arr2 数组是使用字符串常量初始化的,数组中有 \0作为技术标志,打印可以正常停止。
如果我们在arr1数组中单独放⼀个 ‘\0’ 字符会怎么样呢?

在这里插入图片描述
看到三次打印的结果是⼀样的了,都是打印到 \0 的时候就停止了,那从上述的例子我们确实能够观察到 \0 的作用和重要性的。

九、转义字符

也许在前面的代码中你看到 \n , \0 会很疑惑是啥?其实在字符中有一组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符
比如:我们有字符 n ,在字符串中打印的时候自然能打印出这个字符,如下:

#include <stdio.h>
int main()
{printf("abcndef");return 0;
}

运行结果
在这里插入图片描述
如果我们修改⼀下代码,在 n 的前面加上 \ ,变成如下代码:

#include <stdio.h>
int main()
{printf("abc\ndef");return 0;
}

运行结果
在这里插入图片描述
我们可以看到修改的前后代码输出的结果,截然不同的,那这是为什么呢?
这就是转义字符的问题, \n 是一个转义字符表示换行的意思,我们可以简单的理解为 \ 让 n 的意思
发生了转变, n 本来是⼀个普通的字符,被 \ 转义为换行的意思

C语言中像这样的转义字符还有一些,具体如下:
• ? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。

’ :用于表示字符常量’
• " :用于表示⼀个字符串内部的双引号
• \ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。

\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
• \b :退格键,光标回退一个字符,但不删除字符。
• \f
:换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。
• \n :换行符。
• \r:回车符,光标移到同一行的开头。
• \t :制表符,光标移到下一个水平制表位,通常是下⼀个4/8的倍数。
• \v:垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀行的同一列。

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式
• \ddd:d d d表示1~3个八进制的数字。 如: \130 表示字符X
• \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,用于字符串的结束标志,其ASCII码值是0.

代码演示:

#include<stdio.h>
int main()
{printf("%c\n", '\''); //表示单引号printf("%s\n", "\""); //表示双引号printf("c:\\test\\code\\test.c\n");//反斜杠printf("\a");//警报或闪烁printf("%c\n", '\130'); //130是8进制,转换成10进制是88,以88作为ASCII码值的字符是'X'printf("%c\n", '\x30'); //x30中的30是16进制,转换成10进制是48,以48作为ASCII码值的字符是'0return 0;
}

运行结果:
在这里插入图片描述
这些ASCII码值是可以自己写代码验证的,大家也可以自己验证。
关于转义字符我们首先要了解,然后要能在字符串中识别出来。

十、语句和语句分类

C语言的代码是由一条一条的语句构成的,C语言中的语句可为以下五类:

10.1 空语句

空语句是最简单的,一个分号就是一条语句,是空语句。
代码演示:

#include <stdio.h>
int main()
{;//空语句return 0;
}

空语句,一般出现的地方是:这里需要一条语句,但是这个语句不需要做任何事,就可以写一个空语句。

10.2 表达式语句

表达式语句就是在表达式的后边加上分号。如下所示:

#include <stdio.h>
int main()
{int a = 20;int b = 0;b = a + 5; //表达式语句return 0;
}

10.3 函数调用语句

函数调用的时候,也会加上分号,就是函数调用语句。

#include <stdio.h>
int Add(int x, int y)
{return x+y;
}
int main()
{printf("hehe\n");//函数调⽤语句int ret = Add(2, 3);//函数调⽤语句 return 0;
}

10.4 复合语句

复合语句其实就是前面讲过的代码块,成对括号中的代码就构成一个代码块,也被称为复合语句。

 #include <stdio.h>
void print(int arr[], int sz) //函数的大括号中的代码也构成复合语句
{int i = 0;for(i=0; i<sz; i++){printf("%d ", arr[i]);}
}
int main()
{int i = 0;int arr[10] = {0};for(i=0; i<10; i++) //for循环的循环体的大括号中的就是复合语句{arr[i] = 10-i;printf("%d\n", arr[i]);}return 0;
}

10.5 控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句switch语句
  2. 循环执行语句:do while语句while语句for语句
  3. 转向语句:break语句go to语句continue语句return语句
    下一期会给大家⼀⼀介绍控制语句。

十一、注释

注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响
注释是给程序员自己,或者其他程序员看的

好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。

当然不写注释可能会让后期阅读代码的人抓狂,哈哈哈

11.1注释的两种形式

11.1.1/**/形式

第一种方法是将注释放在 // 之间,内部可以分行

/* 注释 */
/*这是一行注释
*/

这种注释可以插在行内
注意:

/**/ 的这个注释不支持嵌套注释, /* 开始注释后,遇到第⼀个 */ 就认为注释结束了。

11.1.2//形式

第而种写法是将注释放在双斜杠 // 后面,从双斜杠到行尾都属于注释。这种注释只能是单行可以放在行首,也可以放在一行语句的结尾。这是 C99 标准新增的语法。

不管是哪一种注释,都不能放在双引号里面。

双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用。

printf("// hello /* world */ ");

上面示例中,双引号里面的注释符号,都会被视为普通字符,没有注释作用。

11.2 注释会被替换

编译时,注释会被替换成一个空格,所以 min/* 这里是注释*/Value 会变成 min Value ,而不是 minValue 。

十二、结尾

这一课的内容就到这里了,下节课开始正式学习C语言的数据类型和变量
如果内容有什么问题的话欢迎指正,有什么问题也可以问我!
在这里插入图片描述

相关文章:

C 语言雏启:擘画代码乾坤,谛观编程奥宇之初瞰

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。* 这一课主要是让大家初步了解C语言&#xff0c;了解我们的开发环境&#xff0c;main函数&#xff0c;库…...

【Linux系统编程】—— 进程替换及其在操作系统中的应用与实现

文章目录 什么是进程替换&#xff1f;进程替换当中的接口单进程替换多进程的替换详解exec接口execlexeclpexecv 前言&#xff1a; 本篇博客将深入探讨进程替换的概念及其在操作系统中的作用。我们将介绍进程替换的基本原理&#xff0c;探讨操作系统如何通过进程的切换来实现任务…...

“裸奔”时代下该如何保护网络隐私

网络隐私的保护之道 引言 在这个信息爆炸的时代&#xff0c;网络已经深入到我们生活的每一个角落。你是否曾想过&#xff0c;在享受这些便利时&#xff0c;你的个人隐私正面临着严峻的挑战&#xff1f;网络隐私的现状警示着我们&#xff0c;信息泄露的事件屡见不鲜&#xff0…...

分类问题(二元,多元逻辑回归,费歇尔判别分析)spss实操

分类模型&#xff1a; 二分类和多分类&#xff1a; 对于二分类模型 &#xff0c;我们将介绍逻辑回归和Fisher线性判别分析两种分类算法; 对于多分类模型&#xff0c;我们将简单介绍Spss中的多分类线性判别分析和多分类逻辑回归的操作步骤 二分类: 基于广义线性模型&#x…...

推荐一个开源的轻量级任务调度器!TaskScheduler!

大家好&#xff0c;我是麦鸽。 这次推荐一款轻量级的嵌入式任务调度器&#xff0c;目前已经有1.4K的star&#xff0c;这个项目比较轻量化&#xff0c;只有5个源文件&#xff0c;可以作为学习的一个开源项目。 核心文件 项目概述&#xff1a; 这是一个轻量级的协作式多任务处理&…...

Spring 核心技术解析【纯干货版】- IV:Spring 切面编程模块 Spring-Aop 模块精讲

随着软件开发技术的不断进步&#xff0c;面向切面编程&#xff08;AOP&#xff09;作为一种重要的编程思想&#xff0c;已经在现代开发中占据了重要地位。它通过将横切逻辑从业务逻辑中分离出来&#xff0c;使得代码更加清晰、易于维护。Spring AOP 作为 Spring 框架的核心模块…...

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos&#xff08;十九&#xff09; 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理简介 2.功能介绍 1.任务调度 2.任务管理 3.中断管理 4.消息队列 3.特点说明 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是…...

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗&#xff1f;允许AI的使用是否降低了比赛难度&#xff1f;还在依赖机器学习的模型吗&#xff1f;处理题目的方法有哪些&#xff1f;O奖论文的优点在哪里&#xff1f; 本文调研了当年赛题的评委文章和O奖论文&#xff0c;这些问题都会在文章中一一解答…...

第14篇:从入门到精通:掌握python上下文管理器

第14篇&#xff1a;上下文管理器 内容简介 本篇文章将深入探讨Python中的上下文管理器&#xff08;Context Manager&#xff09;。您将了解上下文管理器的概念与用途&#xff0c;学习如何实现自定义的上下文管理器&#xff0c;以及如何使用contextlib模块来简化上下文管理器的…...

cuda从零开始手搓PB神经网络

cuda实现PB神经网络 基于上一篇的矩阵点乘&#xff0c;实现了矩阵的加减乘除、函数调用等。并且复用之前元编程里面写的梯度下降、Adam、NAdam优化方法。实现PB神经网络如下&#xff1a; #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…...

Java 大视界 -- Java 大数据物联网应用:数据处理与设备管理(八)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

大模型之三十三- 开源Melo 语音合成

大模型之三十三- 开源Melo 语音合成 文本到语音(TTS)系统从基于基础音素的模型演变成复杂的端到端神经方法,这种方法可以直接将文本转换为语音。这一变革得益于深度学习的进步和计算能力的提升,已经在语音的自然度、韵律控制和跨语言能力方面取得了重大进展 。现代TTS系统…...

全同态加密理论、生态现状与未来展望(上)

《全同态加密理论、生态现状与未来展望》系列由lynndell2010gmail.com和mutourend2010gmail.com整理原创发布&#xff0c;分为上中下三个系列&#xff1a; 全同态加密理论、生态现状与未来展望&#xff08;上&#xff09;&#xff1a;专注于介绍全同态加密理论知识。全同态加密…...

cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】

前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到中高阶程序员。 本项目将基于谷粒商城…...

提升大语言模型的三大策略

1.概述 随着大语言模型&#xff08;LLMs&#xff09;在技术和应用上的不断发展&#xff0c;它们已经深刻地改变了我们与计算机的互动方式。从文本生成到语言理解&#xff0c;LLMs的应用几乎涵盖了各个行业。然而&#xff0c;尽管这些模型已展现出令人印象深刻的能力&#xff0c…...

Ubuntu 24.04 LTS 安装 Docker Desktop

Docker 简介 Docker 简介和安装Ubuntu上学习使用Docker的详细入门教程Docker 快速入门Ubuntu版&#xff08;1h速通&#xff09; Docker 安装 参考 How to Install Docker on Ubuntu 24.04: Step-by-Step Guide。 更新系统和安装依赖 在终端中运行以下命令以确保系统更新并…...

mysql查看binlog日志

mysql 配置、查看binlog日志&#xff1a; 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启&#xff0c;修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin&#xff08;开启日志并指定日志前缀&#xff…...

2. Flink分区策略

一. Flink分区策略概述 Flink任务在执行过程中&#xff0c;一个流(stream)包含一个或多个分区(Stream partition)&#xff0c;TaskManager中的一个slot的SubTask就是一个stream partition(流分区)。 Flink分区之间进行数据传递模式有两种。 1. one-to-one模式 数据不需要重新…...

Qt 5.14.2 学习记录 —— 십칠 窗口和菜单

文章目录 1、Qt窗口2、菜单栏设置快捷键添加子菜单添加分割线和菜单图标 3、工具栏 QToolBar4、状态栏 QStatusBar5、浮动窗口 QDockWidget 1、Qt窗口 QWidget&#xff0c;即控件&#xff0c;是窗口的一部分。在界面中创建控件组成界面时&#xff0c;Qt自动生成了窗口&#xf…...

微信小程序中实现背景图片完全覆盖显示,可以通过设置CSS样式来实现

wxml页面代码 <view class"beijing"></view>wxss样式代码 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位&#xff1a;绝对定位 */position: absolute;/* 上下左右都定位到…...

亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine

小T导读&#xff1a;本篇文章是“2024&#xff0c;我想和 TDengine 谈谈”征文活动的优秀投稿之一&#xff0c;作者从数据库运维的角度出发&#xff0c;分享了利用 TDengine Cloud 提供的迁移工具&#xff0c;从 PostgreSQL 数据库到 TDengine 进行数据迁移的完整实践过程。文章…...

中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p39061 在全球算力因数字化技术发展而竞争加剧&#xff0c;我国积极推进算力发展并将综合算力作为数字经济核心驱动力的背景下&#xff0c;该报告对我国综合算力进行研究。 中国算力大会发布的《中国综合算力指数&#xff08;2024年…...

51c~ONNX~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/11608027 一、使用Pytorch进行简单的自定义图像分类 ~ONNX 推理 图像分类是计算机视觉中的一项基本任务&#xff0c;涉及训练模型将图像分类为预定义类别。本文中&#xff0c;我们将探讨如何使用 PyTorch 构建一个简单的自定…...

线下陪玩系统架构与功能分析

2015工作至今&#xff0c;10年资深全栈工程师&#xff0c;CTO&#xff0c;擅长带团队、攻克各种技术难题、研发各类软件产品&#xff0c;我的代码态度&#xff1a;代码虐我千百遍&#xff0c;我待代码如初恋&#xff0c;我的工作态度&#xff1a;极致&#xff0c;责任&#xff…...

海康工业相机的应用部署不是简简单单!?

作者&#xff1a;SkyXZ CSDN&#xff1a;SkyXZ&#xff5e;-CSDN博客 博客园&#xff1a;SkyXZ - 博客园 笔者使用的设备及环境&#xff1a;WSL2-Ubuntu22.04MV-CS016-10UC 不会吧&#xff1f;不会吧&#xff1f;不会还有人拿到海康工业相机还是一脸懵叭&#xff1f;不会还有人…...

SAP POC 项目完工进度 - 收入确认方式【工程制造行业】【新准则下工程项目收入确认】

1. SAP POC收入确认基础概念 1.1 定义与原则 SAP POC&#xff08;Percentage of Completion&#xff09;收入确认方式是一种基于项目完工进度来确认收入的方法。其核心原则是根据项目实际完成的工作量或成本投入占预计总工作量或总成本的比例&#xff0c;来确定当期应确认的收…...

【Elasticsearch 】 聚合分析:聚合概述

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

【算法】二分

二分 1.二分查找1.在排序数组中查找元素的第一个和最后一个位置2.牛可乐和魔法封印3.A-B 数对4.烦恼的高考志愿 2.二分答案1.木材加工2.砍树3.跳石头 1.二分查找 当我们的解具有二段性&#xff08;根据最终答案所在的位置判断是否具有二段性&#xff09;时&#xff0c;就可以使…...

如何将自己本地项目开源到github上?

环境&#xff1a; LLMB项目 问题描述&#xff1a; 如何将自己本地项目开源到github上&#xff1f; 解决方案&#xff1a; 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置&#xff0c;并且项目的 README.md 文件已经完善。检查是否有敏感信息&#xff0…...

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...

Scade 表达式 - 使用索引的迭代器

Scade 表达式中的 map, fold, mapfold&#xff0c;会对输入数组参数中的元素逐个作处理&#xff0c;不需要数组元素的索引信息。若在处理数组元素时&#xff0c;需要数组元素相应的索引信息&#xff0c;则可使用迭代器算子 mapi, foldi, mapfoldi。 mapi 算子 mapi 算子的行为…...

K8s学习

Kubernetes 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xf…...

面试--你的数据库中密码是如何存储的?

文章目录 三种分类使用 MD5 加密存储加盐存储Base64 编码:常见的对称加密算法常见的非对称加密算法https 传输加密 在开发中需要存储用户的密码&#xff0c;这个密码一定是加密存储的&#xff0c;如果是明文存储那么如果数据库被攻击了&#xff0c;密码就泄露了。 我们要对数据…...

微服务学习-快速搭建

1. 速通版 1.1. git clone 拉取项目代码&#xff0c;导入 idea 中 git clone icoolkj-microservices-code: 致力于搭建微服务架构平台 1.2. git checkout v1.0.1版本 链接地址&#xff1a;icoolkj-microservices-code 标签 - Gitee.com 2. 项目服务结构 3. 实现重点步骤 …...

兼职全职招聘系统架构与功能分析

2015工作至今&#xff0c;10年资深全栈工程师&#xff0c;CTO&#xff0c;擅长带团队、攻克各种技术难题、研发各类软件产品&#xff0c;我的代码态度&#xff1a;代码虐我千百遍&#xff0c;我待代码如初恋&#xff0c;我的工作态度&#xff1a;极致&#xff0c;责任&#xff…...

【云岚到家】-day03-门户缓存实现实战

【云岚到家】-day03-门户缓存实现实战 1.定时任务更新缓存 1.1 搭建XXL-JOB环境 1.1.1 分布式调度平台XXL-JOB介绍 对于开通区域列表的缓存数据需要由定时任务每天凌晨更新缓存&#xff0c;如何实现定时任务呢&#xff1f; 1.使用jdk提供的Timer定时器 示例代码如下&#xf…...

Ubuntu 24.04 LTS 开启 SMB 服务,并通过 windows 访问

Ubuntu 24.04 LTS 背景资料 Ubuntu服务器折腾集Ubuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locations Ubuntu开启samba和window共享文件 Ubuntu 配置 SMB 服务 安装 Samba 确保 Samba 已安装。如果未安装&#xff0c;运行以下命令进行安装&#xff…...

“AI人工智能内容辅助创作平台:让创意不再“卡壳”

在如今这个信息爆炸的时代&#xff0c;内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划&#xff0c;还是普通学生写作文&#xff0c;大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候&#xff0c;脑袋里空空如也&#xff0c;一个字都写不出来&#xff0c;那…...

mac 安装 node

brew versions node // 安装 node brew versions node14 // 安装指定版本 卸载node: sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /usr/local/include/node /Users/$USER/.npm su…...

VUE之Router使用及工作模式

1、路由的使用 【两个注意点】 1)路由组件通常放在pages 或 views文件夹,一般组件通常放在components文件夹。 2)通过点击导航,视觉效果上"消失"了的路由组件,默认是被"卸载"掉的,需要的时候再去挂载。 // 创建一个路由器,并暴露出去// 第一步:…...

day25_HTML

今日内容 零、 复习昨日 一、HTML 零、 复习昨日 一、Web开发 前端 HTML ,页面展现CSS , 样式JS (JavaScript) , 动起来 二、HTML 2.1 HTML概念 ​ 网页&#xff0c;是网站中的一个页面&#xff0c;通常是网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台。通俗…...

(开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台

1 项目简介&#xff08;开源地址在文章结尾&#xff09; 系统旨在为了帮助鸟类爱好者、学者、动物保护协会等群体更好的了解和保护鸟类动物。用户群体可以通过平台采集野外鸟类的保护动物照片和视频&#xff0c;甄别分类、实况分析鸟类保护动物&#xff0c;与全世界各地的用户&…...

【AI日记】25.01.20

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章阅读原因&#xff1a;作者哈耶克&#xff0c;诺贝尔经济学奖得主&#xff0c;之前读过他的 《通往奴役…...

基于机器学习的用户健康风险分类及预测分析

完整源码项目包获取→点击文章末尾名片&#xff01; 背景描述 在这个日益注重健康与体能的时代&#xff0c;健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息&#xff0c;包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…...

AI生成内容——JavaScript中的Promise、async和wait

一、Promise *1. 概念&#xff1a; Promise 是 JavaScript 中处理异步操作的一种对象&#xff0c;它表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。一个 Promise 对象处于以下三种状态之一&#xff1a; Pending&#xff08;进行中&#xff09;&#…...

Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)

Java基于SSM框架的社区团购系统小程序设计与实现 博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f4…...

Git原理与应用(三)【远程操作 | 理解分布式 | 推送拉取远程仓库 | 标签管理】

Git 理解分布式版本控制系统远程仓库新建远程仓库克隆远程仓库向远程仓库推送配置Git忽略特殊文件 标签管理理解标签创建标签操作标签删除标签 理解分布式版本控制系统 我们⽬前所说的所有内容&#xff08;工作区&#xff0c;暂存区&#xff0c;版本库等等&#xff09;&#x…...

【esp32小程序】小程序篇02——连接git

一、创建仓库 进入gitee官网&#xff0c;登录&#xff08;如果没有gitee账号的就自行注册一下&#xff09;。 点击号-->新建仓库 填写好必填信息&#xff0c;然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…...

MongoDB基本操作

一、实验目的 1. 熟悉MongoDB的基本操作&#xff0c;包括CRUD&#xff08;增加、读取、更新、删除&#xff09;。 2. 理解MongoDB的文档型数据库特性和Shell的使用。 3. 培养学生通过命令行操作数据库的能力。 4. 强化数据库操作的实际应用能力。 二、实验环境准备 1.…...

Brooks MagnaTran LEAP User Manual 指导半导体机械手

Brooks MagnaTran LEAP User Manual 指导半导体机械手...