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

C语言学习笔记(二): 简单的C程序设计

数据的表现形式

常量

在C语言中常量有以下几种:

  • 整型常量: 0,-1,100
  • 实型常量: 小数形式(12.12);指数形式(12.1e3=12.1×10312.1\times 10^312.1×103)
  • 字符常量: 普通字符(’a’,’Z’,’#’);转义字符(’\n’,’\012’,’\h1B’)
  • 字符串常量: “123”,”boy”
  • 符号常量: 用一个标识符来表示常量 #define PI 3.14

关于常量的使用要注意以下几点:

  • 从常量的表示形式即可以判定其类型。
  • 不带小数点的数值是整型常量,但应注意其有效范围。
  • 在一个整数的末尾加大写字母L或小写字母l,表示它是长整型(long int)。
  • 凡以小数形式或指数形式出现的实数均是浮点型常量,在内存中都以指数形式存储。
  • C编译系统把浮点型常量都按双精度处理,分配8个字节。

转义字符

转义字符字符值
\, \" \? \\输出字符, " ? \
\a警告(alert):产生声音或视觉信号
\b退格:当前光标位置往后退一格
\f换页:当前光标位置移到下一页开头
\n换行:当前光标位置移到下一行开头
\r回车:当前光标位置移到本行开头
\t水平制表符:当前光标位置移到下个Tab位置
\v垂直制表符:当前光标位置移到下个垂直制表符对齐点
\ooo o表示八进制数输出与该八进制对应的字符。如\012代表八进制数12(即十进制的10), 对应的ASCII码为换行符
\xhhh h表示十六进制数输出与该十六进制对应的字符

变量

一个变量由变量名、变量值和存储单元组成。变量名是指该变量的唯一标识符,用于在程序中识别该变量。变量值是该变量的实际数据值。存储单元则是存储变量值的内存区域

float a=3.14159;	//3.14159为双精度浮点常量,分配8个字节;a为float变量,分配4个字节,但是编译会发出警告,一般不影响结果的正确性,但会影响结果的精度
float a=3.14159f;		//把此3.14159按单精度浮点常量处理,编译时不出现“警告”
long double a = 1.23L;	//把此1.23作为long double型处理

常变量

常变量与常量的异同是: 常变量具有变量的基本属性(有类型,存储单元),只是不允许改变其值。

define Pi 3.1415926	//定义符号常量
const float pi=3.1415926;	//定义常变量

标识符

标识符就是一个对象的名字。用于标识变量、符号常量、函数、数组、类型等。

标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线

关于标识符要注意以下几点:

  • 变量名区分大小写

  • 不能用关键字作为变量名

  • 不合法的标识符:3D64,#33,M.D.


数据类型

数据类型{基本类型{整型类型{基本整型(int):4字节短整型(shortint):2字节长整型(longint):4字节双长整型(longlongint):8字节字符型(char):1字节浮点类型{单精度浮点型(float):4字节双精度浮点型(double):8字节长双精度浮点型(longdouble):16字节枚举类型(enum)空类型(void)派生类型{指针类型(∗)数组类型([])结构体类型(struct)共用体类型(union)函数类型\text{数据类型}\begin{cases} \text{基本类型}\begin{cases} \text{整型类型}\left\{ \begin{array}{c} \begin{array}{l} \text{基本整型}\left( int \right) :4\text{字节}\\ \text{短整型}\left( short\,\,int \right) :2\text{字节}\\ \text{长整型}\left( long\,\,int \right) :4\text{字节}\\ \text{双长整型}\left( long\,\,long\,\,int \right) :8\text{字节}\\ \end{array}\\ \end{array} \right.\\ \text{字符型}\left( char \right) :1\text{字节}\\ \text{浮点类型}\begin{cases} \text{单精度浮点型}\left( float \right) :4\text{字节}\\ \text{双精度浮点型}\left( double \right) :8\text{字节}\\ \text{长双精度浮点型}\left( long\,\,double \right) :16\text{字节}\\ \end{cases}\\ \end{cases}\\ \text{枚举类型}\left( enum \right)\\ \text{空类型}\left( void \right)\\ \text{派生类型}\begin{cases} \text{指针类型}\left( * \right)\\ \text{数组类型}\left( \left[ \right] \right)\\ \text{结构体类型}\left( struct \right)\\ \text{共用体类型}\left( union \right)\\ \text{函数类型}\\ \end{cases}\\ \end{cases}数据类型基本类型整型类型基本整型(int):4字节短整型(shortint):2字节长整型(longint):4字节双长整型(longlongint):8字节字符型(char):1字节浮点类型单精度浮点型(float):4字节双精度浮点型(double):8字节长双精度浮点型(longdouble):16字节枚举类型(enum)空类型(void)派生类型指针类型()数组类型([])结构体类型(struct)共用体类型(union)函数类型


整形数据

整形数据类型字节数取值范围
int(基本整型)4−231∼(231−1)-2^{31}\sim \left( 2^{31}-1 \right) 231(2311)
unsigned int(无符号基本整型)40∼(232−1)0\sim \left( 2^{32}-1 \right) 0(2321)
short(短整型)2−215∼(215−1)-2^{15}\sim \left( 2^{15}-1 \right) 215(2151)
unsigned short(无符号短整型)20∼(216−1)0\sim \left( 2^{16}-1 \right) 0(2161)
long(长整型)4−231∼(231−1)-2^{31}\sim \left( 2^{31}-1 \right) 231(2311)
unsigned long(无符号长整型)40∼(232−1)0\sim \left( 2^{32}-1 \right) 0(2321)
long long(双长度)8−263∼(263−1)-2^{63}\sim \left( 2^{63}-1 \right) 263(2631)
unsigned long long(无符号双长度)80∼(264−1)0\sim \left( 2^{64}-1 \right) 0(2641)

只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。

对无符号整型数据用%u格式输出。%u表示用无符号十进制数的格式输出。如:

unsigned short price=50;	//定义price为无符号短整型变量
printf("%u\n",price); 		//指定用无符号十进制数的格式输出

在将一个变量定义为无符号整型后,不应向它赋予一个负值,否则会得到错误的结果。

unsigned short price = -1;	//不能把一个负整数存储在无符号变量中
printf("%d\n",price);

image-20211206221449749


字符型数据

在C语言中,字符型数据通常以ASCII码的形式存储

字符型数据包括如下几点:

  • 字母: 大写英文字母A~Z,小写英文字母a~z
  • 数字: 0~9
  • 专门符号: 29个,包括:! " # & ’ ( ) * + , - . / : ; < = > ? [ \ ] ^ _ ` { | } ~
  • 空格符: 空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)
  • 不能显示的字符:空(null)字符(以’\0’表示)、警告(以’\a’表示)、退格(以’\b’表示)、回车(以’\r’表示)等

在C语言中,字符型数据通常以ASCII码的形式存储

char c='?';	//定义c为字符型变量并使初值为字符′?′。′?′的ASCII代码是63,系统把整数63赋给变量c。
printf("%d %c\n",c,c);	//用“%d”格式输出十进制整数63,用“%c”格式输出字符′?′

浮点型数据

浮点数类型包括float(单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点型)。

类型字节数小数点后位数数值范围(绝对值)
float460以及12∗10−38∼3.4∗10380\text{以及}12*10^{-38}\sim 3.4*10^{38}0以及1210383.41038
double8150以及2.3∗10−308∼1.7∗103080\text{以及}2.3*10^{-308}\sim 1.7*10^{308}0以及2.3103081.710308
long double16190以及3.4∗10−4932∼1.1∗103080\text{以及}3.4*10^{-4932}\sim 1.1*10^{308}0以及3.41049321.110308

运算符与表达式

下图总结了C语言中所有的运算符

image-20211207203849094


算数运算符含义举例结果
+ - * /加减乘除
%求余运算符a%ba除以b的余数
i++ i–在使用i之后,使i的值加/减1int i=3;
printf(“%d”,i++);
输出3
++i --i在使用i之前,使i的值加/减1int i=3;
printf(“%d”,++i);
输出4
两个实数相除的结果是双精度实数,两个整数相除的结果为整数

以下是使用算数运算符要注意的几点:

  • %运算符要求参加运算的运算对象为整数,结果也是整数,除数可以为0,但是被除数不能为0
  • 两个实数相除的结果是双精度实数,两个整数相除的结果为整数

不同类型间的混和运算

  • +、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算。
  • 如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。
  • 字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。

强制类型转换

强制类型转换是指在C语言中,显式地把一种数据类型转换为另一种数据类型

(double)a		//将a转换成double型
(int)(x+y)		//将x+y的值转换成int型
(float)(5%3)	//将5%3的值转换成float型
(int)x+y		//只将x转换成整型,然后与y相加

C语句

C语句是C语言的基本单位,是C程序的最小可执行单元

常用的C语句包括:控制语句、调用语句、空语句、复合语句、赋值语句


控制语句

以下是常用的控制语句:

  • if()…else…(条件语句)
  • for()…(循环语句)
  • while()…(循环语句)
  • do…while ()(循环语句)
  • continue(结束本次循环语句)
  • break(中止执行switch或循环语句)
  • switch(多分支选择语句)
  • return(从函数返回语句)
  • goto(转向语句,在结构化程序中基本不用goto语句)

调用语句

函数调用语句由一个函数调用加一个分号构成。

printf("This is a C statement. "); //其中printf("This is a C statement. ")是一个函数调用,加一个分号成为一个语句

空语句

只有一个分号的语句即为空语句。

可以用来作为流程的转向点(流程从程序其他地方转到此语句处);

也可用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。


复合语句

可以用{}把一些语句和声明括起来成为复合语句(又称语句块)。

{float pi=3.14159, r=2.5, area; //定义变量area=pi*r*r;printf("area=%f",area);
}
/*注意:复合语句中最后一个语句末尾的分号不能忽略不写。*/

赋值语句

在赋值符=之前加上其他运算符,可以构成复合运算符

a+=3	//等价于a=a+3x*=y+8 	//等价于x=x*(y+8)x%=3	//等价于x=x%3

将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量(即发生“截断”)
{浮点→整型变量:浮点取整(去小数),再赋值整型→单双精度变量:数值不变,以浮点数形式存储到变量中double→float变量:双精度转化为单精度,取6∼7位有效数字注:双精度数值大小不能超过单精度数值float→double变量:数值不变,在内存中以8个字节存储,有效位数扩展到15位字符型→整型变量:字符的ASCII代码赋值给整型变量\begin{cases} \text{浮点}\rightarrow \text{整型变量}:\text{浮点取整}\left( \text{去小数} \right) ,\text{再赋值}\\ \text{整型}\rightarrow \text{单双精度变量}:\text{数值不变},\text{以浮点数形式存储到变量中}\\ double\rightarrow float\text{变量}:\text{双精度转化为单精度},\text{取}6\sim 7\text{位有效数字}_{\text{注}:\text{双精度数值大小不能超过单精度数值}}\\ float\rightarrow double\text{变量}:\text{数值不变},\text{在内存中以}8\text{个字节存储},\text{有效位数扩展到}15\text{位}\\ \text{字符型}\rightarrow \text{整型变量}:\text{字符的}ASCII\text{代码赋值给整型变量}\\ \end{cases} 浮点整型变量:浮点取整(去小数),再赋值整型单双精度变量:数值不变,以浮点数形式存储到变量中doublefloat变量:双精度转化为单精度,67位有效数字:双精度数值大小不能超过单精度数值floatdouble变量:数值不变,在内存中以8个字节存储,有效位数扩展到15字符型整型变量:字符的ASCII代码赋值给整型变量


以下是常见的变量赋值代码:

int a,b,c=5//指定a,b,c为整型变量,但只对c初始化,c的初值为5;相当于int a,b,c; c=5;int a=3,b=3,c=3; //对几个变量赋予同一个初值int a=b=c=3;     //错误。可以先定义,再用赋值语句,即int a,b,c; a=b=c=3;

数据的输入和输出

数据的输入和输出是指在计算机主机环境中的输入输出操作

C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的

要在程序文件的开头用预处理指令#include把有关头文件放在本程序中, 如下代码所示

include "c:\cpp\include\myfile.h"  //按指定路径查找文件
include "myfile.h"  //源程序文件所在目录
include <myfile.h>  //C编译系统指定的include目录

printf函数

定义

printf函数是C语言中常用的输出函数,它可以将指定格式的字符串和数据通过标准输出(通常是控制台)输出到屏幕或文件

语法格式如下, 其中,format 参数是一个字符串,指定了输出的格式。格式字符串可以包含字符、数字、字符串和特殊字符等。后面的参数是根据格式字符串来确定输出内容的数据

printf(const char *format, ...);
格式字符说明
%d,%i以带符号的十进制形式输出整数
%o以八进制无符号形式输出整数
%x,%X以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出
%u以无符号十进制形式输出整数
%c以字符形式输出,只输出一个字符
%s输出字符串
%f以小数形式输出单、双精度数,含输出6位小数
%e,%E以指数形式输出实数,用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(如1.2E+02)
%g,%G选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示
附加字符说明
I长整型整数,可加在格式符d、o、x、u前面
m数据最小宽度
n对实数,表示输出n位小数

使用实例

include <stdio.h>int main()
{int num = 123;float pi = 3.14159265;char c = 'A';char s[] = "Hello World!";printf("整数: %d\n", num);  //整数:123printf("小数: %.2f\n", pi);  //小数:3.14printf("字符: %c\n", c);  //字符:Aprintf("字符串: %s\n", s);  //字符串: Hello World!return 0;
}

scanf函数

定义

scanf函数是C语言中的标准输入函数,它可以从键盘读取数据,并把读取到的数据转换成指定的数据类型存储到变量中

下图是scanf函数的使用语法

image-20211209202934940


使用实例

在下述代码中, 由于scanf函数只读入第一个字符串, 所以输出的是"Hello"

int main(){char str[100];scanf("%s", str);  //控制台输入: Hello Worldprintf("%s", str);	//控制台输出: Hello
}

若想scanf读入一整行字符串, 可以使用如下语句

该语句的格式说明符%[^\n]的意思是读取以换行符为结尾的所有字符

scanf("%[^\n]", str);

putchar函数

定义

putchar 函数是 C 语言中的标准库函数,用于向标准输出(通常是终端)输出一个字符


使用实例

include <stdio.h>
int main()
{char a='B',b='O',c='Y';	//定义3个字符变量并初始化putchar(a);				//向显示器输出字符Bputchar(b);				//向显示器输出字符Oputchar(c);				//向显示器输出字符Yputchar ('\n');			//向显示器输出一个换行符return 0;
}                           //运行后输出BOY
include <stdio.h>
int main()
{int a=66,b=79,c=89;  putchar(a);	putchar(b);	putchar(c);putchar ('\n');      //输出整型变量(ASCII码)对应的字符return 0; 
}

getchar函数

定义

getchar 函数是 C 语言标准库中的一个输入函数。它用于从标准输入(例如键盘)读取一个字符


使用实例

从键盘输入一个大写字母,在显示屏上显示对应的小写字母

include <stdio.h>
int main ()
{char c1,c2;c1=getchar();	//从键盘读入一个大写字母,赋给字符变量c1c2=c1+32;	//得到对应的小写字母的ASCII代码,放在字符变量c2中printf("大写字母: %c\n小写字母: %c\n",c1,c2);	//输出c1,c2的值return 0;
}

相关文章:

C语言学习笔记(二): 简单的C程序设计

数据的表现形式 常量 在C语言中常量有以下几种&#xff1a; 整型常量&#xff1a; 0,-1,100实型常量&#xff1a; 小数形式(12.12)&#xff1b;指数形式(12.1e312.110312.1\times 10^312.1103)字符常量&#xff1a; 普通字符(’a’,’Z’,’#’)&#xff1b;转义字符(’\n’…...

十、STM32端口复用重映射

目录 1.什么是端口复用&#xff1f; 2.如何配置端口复用&#xff1f; 3.什么是端口重映射 &#xff1f; 4.什么是部分重映射和完全重映射&#xff1f; 5.重映射的配置过程 1.什么是端口复用&#xff1f; STM32有很多外设&#xff0c;外设的外部引脚与GPIO复用。也就是说一…...

【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号

文章目录1.函数重载&#xff1a;writetofile()&#xff0c;Ctrue和false&#xff0c;C0和非02.类和对象&#xff1a;vprintf2.1 构造函数&#xff1a;对成员变量初始化2.2 析构函数&#xff1a;一个类只有一个&#xff0c;不允许被重载3.引用&#xff1a;C中&取地址&#x…...

Spring基础知识

1 简介官网&#xff1a;https://spring.io/projects&#xff0c;Spring发展到今天已经形成了一种开发生态圈&#xff0c;Spring提供了若干个项目&#xff0c;每个项目用于完成特定的功能。Spring Framework是最底层的框架&#xff0c;是其他项目的根基。Spring Boot Spring MVC…...

proxy代理与reflect反射

proxy代理与reflect 在这之前插入一个知识点arguments&#xff0c;每个函数里面都有一个arguments&#xff0c;执行时候不传默认是所有参数&#xff0c;如果传了就是按顺序匹配&#xff0c;箭头函数没有 代理函数 代理对象也就是生成一个替身&#xff0c;然后这个替身处理一切的…...

机器视觉 多模态学习11篇经典论文代码以及解读

此处整理了深度学习&#xff0d;机器视觉&#xff0c;最新的发展方向&#xff0d;多模态学习&#xff0c;中的11篇经典论文&#xff0c;整理了相关解读博客和对应的Github代码&#xff0c;看完此系列论文和博客&#xff0c;相信你能快速切入这个方向。每篇论文、博客或代码都有…...

Redis过期删除策略

目录引出Redis过期删除策略Redis的两种过期策略&#xff1a;定期删除 惰性删除定期删除惰性删除Redis两种过期删除策略存在的问题Redis缓存淘汰策略Redis中的LRU和LFU算法1、LRU&#xff08;Least Recently Userd最近最少使用&#xff09;LFU 算法的引入2、LFU&#xff08;lea…...

数据流分析之def-use链分析

数据流分析之def-use链分析引言1 相关概念2 算法2.1 算法规则2.2 算法流程2.3 算法优化3 举例引言 编译过程中&#xff0c;知道函数中每个指令引用的变量(或虚拟寄存器)来自于前面的哪一次赋值是很有必要的。例如llvm中对store/load转phi优化&#xff0c;就需要准确知道该信息…...

【0175】【内存上下文】如何利用context_freelists[]来彻底释放MemoryContext中分配的所有内存(8 - 2)

文章目录 1. MemoryContext 删除的另一种形式1.1 context_freelists[] 数组1.1.1 context_freelists[0] 和 context_freelists[1] 的意义1.1.2 context_freelists[0] 和 context_freelists[1] 各自功能示意图1.2 context_freelists[] 各成员在删除context时的初始化情况1.2.1 c…...

Redis实战—黑马点评(一) 登录篇

Redis实战 — 黑马点评&#xff08;一&#xff09; 登录篇 来自黑马的redis课程的笔记 【黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】 目录Redis实战 — 黑马点评&#xff08;一&#xff09; 登录篇1. 项目…...

建造者模式-搭建Qt窗口案例

文章目录logging日志输出子线程设计模式可视化插件类界面设计呼吸灯实现综合案例实现本综合案例&#xff0c;应用到如下的知识点。logging日志输出 自定义日志记录器&#xff0c;实现将日志输出到指定的控件中。 # 自定义日志记录器类子线程 threading实现子线程及Qt中的子线…...

*from . import _imaging as core : ImportError: DLL load failed: 找不到指定的模块

错误提示如上。为了解决这个问题&#xff0c;首先参考了解决 from . import _imag…模块。. 首先尝试了彻底卸载pillow&#xff1a;conda uninstall pillow &#xff1b; pip uninstall pillow 然后重装 pip install pillow&#xff0c;发现问题仍然没有解决。 并且尝试了windo…...

关于尚硅谷Hadoop-报错解决方案日志

以后都会将学习Hadoop中遇到的问题写到这里&#xff0c;供自己参考&#xff0c;能帮到大家更好SecondaryNameNode未启动解决办法&#xff1a;可能是端口被占用&#xff08;我没遇到&#xff09;hadoop104未在/etc/hosts配置映射路径我在hadoop104的/etc/hosts 添加了所有hadoop…...

前端高频面试题-HTML和CSS篇(二)

&#x1f4bb; 前端高频面试题-HTML和CSS篇&#xff08;二&#xff09; &#x1f3e0;专栏&#xff1a;前端面试题 &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向…...

神经网络损失函数分布可视化神器

论文名称和地址&#xff1a;Visualizing the Loss Landscape of Neural Netshttps://arxiv.org/pdf/1712.09913.pdf1.1 背景和动机作者主要想研究几个问题&#xff1a;为什么我们能够最小化高度非凸神经损失函数&#xff1f;为什么得到的最小值这个结果具有泛化性&#xff1f;不…...

ansible的部署与命令模块

目录 一、ansible的概述 1、ansible简介 2、ansible特点 3、官方网站 4、ansible的模块组成 5、ansible的工作机制 二、ansible部署 1、ansible的安装 三、ansible的命令行模块 1、command模块 2、shell模块 3、cron模块 4、user模块 5、group模块 6、copy模块 7…...

开发人员与测试人员关系的理解

在软件开发中都会有开发人员&#xff08;以下简称开发&#xff09;和测试人员&#xff08;以下简称测试&#xff09;&#xff0c;在一些小型公司可能并没有测试&#xff0c;仅仅是开发兼任测试。在这里我仅针对于有专业的测试和专业的开发的项目。 每个公司应该都有考核机制&am…...

直面原理:5 张图彻底了解 Android TextToSpeech 机制

ChatGPT 如此火爆&#xff0c;但它的强悍在于 NLU&#xff08;自然语言理解&#xff09;、DM&#xff08;对话管理&#xff09;和 NLG &#xff08;自然语言生成&#xff09;这三块&#xff0c;而 Recognition 识别和 TTS 播报这两块是缺失的。假使你的 App 接入了 ChatGPT&…...

Ruby Socket 编程

Ruby提供了两个级别访问网络的服务&#xff0c;在底层你可以访问操作系统&#xff0c;它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持。 Ruby 统一支持应用程序的网络协议&#xff0c;如FTP、HTTP等。 不管是高层的还是底层的。ruby提供了一些基本类&a…...

Vue3+ElementPlus+koa2实现本地图片的上传

一、示例图二、实现过程利用Koa2书写提交图片的后台接口这个模块是我写的项目中的其中一个板块——上传图片&#xff0c;这个项目的后台接口主要是是使用了后端的Koa2框架&#xff0c;前端小伙伴想要试着自己书写一些增删改查的接口可以从这个入手&#xff0c;Koa2用来了解后端…...

常见漏洞之 Fastjson

数据来源 01 Fastjson相关介绍 》Fastjson概述 》Fastjson历史漏洞 02 Fastson的识别与漏洞发现 》Fastjson寻找 》Fastjson漏洞发现&#xff08;利用 dnslog&#xff09; 03 修复建议 建议1&#xff1a;使用fastjson1.2.83版本&#xff1b; Github地址&#xff1a;https:…...

绕过Nginx Host限制

目录绕过Nginx Host限制SNI第三种方法&#xff1a;总结绕过Nginx Host限制 SNI SNI&#xff08;Server Name Indication&#xff09;是 TLS 的扩展&#xff0c;这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称。 作用&#xff1a;用来解决一个服务器拥有…...

Visual Studio 2022 常用快捷键,记录一下别忘记~

Visual Studio 2022 常用快捷键&#xff0c;记录一下别忘记~ CtrlEC 注释代码 CtrlEU 取消注释代码 CtrlED 格式化全部代码 CtrlShiftA 新建类 CtrlRG 删除无效Using CtrlH 批量替换 CtrlG 跳转到指定行 CtrlEE 在交互窗口中运行选中代码(很实用) AltEnter 快速引用 …...

软件测试回顾---重点知识

软件测试重点知识回顾 8.1.1软件测试的目的是 尽可能的发现程序中的错误并不是发现所有的错误并不是证明程序是错误的也不是为了调试程序8.1.2白盒测试根据什么设置测试用例&#xff1f;黑盒测试根据什么设置测试用例&#xff1f; 白盒测试根据内部逻辑来设计的黑盒测试根据的是…...

2D图像处理:2D Shape_Base_Matching_缩放_旋转_ICP_显示ROI

文章目录 调试结果参考调试说明问题0:并行运行问题问题1:模板+Mask大小问题问题2:组合缩放和旋转问题3:可以直接将计算边缘的代码删除问题4:如何在原始图像上显示匹配到的ROI问题5:计算的原始旋转角度不需要判断,直接可以在ICP中使用问题6:绘制坐标轴问题7:绘制ROI调试…...

HTTP、HTTPS

目录 1.HTTP 1.1.概述 1.2.报文结构 1.2.1.请求报文 1.2.2.响应报文 1.3.方法 2.HTTPS 1.HTTP 1.1.概述 HTTP&#xff0c;超文本传输协议&#xff0c;WEB体系选用了该协议作为应用层协议。 1.2.报文结构 1.2.1.请求报文 HTTP的请求报文&#xff08;request&#xff0…...

计算机网络之http03:HTTPS RSA握手解析

不同的秘钥交换算法,握手过程可能略有差别 上文对HTTPS四次握手的学习 SSL/TLS Secure Sockets Layer/Transport Layer Security 协议握手过程 四次通信&#xff1a;请求服务端公钥 2次 秘钥协商 2次 &#xff08;1&#xff09;ClientHello请求 客户端向服务端发送client…...

一款针对EF Core轻量级分表分库、读写分离的开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 在项目开发中&#xff0c;如果数据量比较大&#xff0c;比如日志记录&#xff0c;我们往往会采用分表分库的方案&#xff1b;为了提升性能&#xff0c;把数据库查询与更新操作分开&#xff0c;这时候就要采用读写…...

Linux环境变量讲解

目录 环境变量 alias命令 type命令 变量分类 Linux最主要的全局环境变量 环境变量 变量是计算机系统用于保存可变数值的数据类型 在Linux中&#xff0c;一般变量都是大写&#xff0c;命令是小写 在Linux中&#xff0c;变量直接使用&#xff0c;不需要定义&#xff08;更快…...

iptables和nftables的使用

文章目录前言iptable简介iptable命令使用iptables的四表五链nftables简介nftables命令的时候nftables与iptables的区别iptables-legacy和iptables-nft实例将指定protocol:ip:port的流量转发到本地指定端口前言 本文展示了&#xff0c;iptables和nftable命令的使用。 # 实验环…...

淘宝客网站程序模板/免费的网页设计成品下载

今天是第十四届阿里日&#xff0c;也是第十三届集体婚礼&#xff0c;1314&#xff0c;都是因为你。 橙子也有幸见证了这次超甜蜜的集体婚礼&#xff1a; 咦&#xff0c;怎么还有国际友人&#xff1f;原来这102对新人里&#xff0c;还有12对是来自海外的阿里新人&#xff1a; 当…...

c 网站开发程序员/百度资源搜索平台官网

1、局部变量定义&#xff08;parameter&#xff09; 声明&#xff1a; parameter xx 8; &#xff08;注意有等号&#xff0c;且后面有分号&#xff09; 使用&#xff1a;xx 作用域&#xff1a;parameter 作用于声明的那个文件。 另外parameter可以用作例化时的参数传递。具…...

网站需要的技术/win7优化大师

如果要使用 Java 编写日志系统&#xff0c;可以使用 Java 的日志框架&#xff0c;例如 Java Util Logging、Log4j、Logback 等。使用这些日志框架可以让你轻松地记录日志信息&#xff0c;并且可以方便地配置日志的输出目的地(例如控制台或文件)、日志级别等。此外&#xff0c;这…...

河源网站制作/北京做网站公司哪家好

本教程将通过VOF模型模拟空气、水和甘油三相流动问题。1 启动Workbench并建立分析项目 (1)在Windows系统下执行“开始”→“所有程序”→ANSYS 19.2→Workbench命令&#xff0c;启动Workbench 19.2&#xff0c;进入ANSYS Workbench 19.2界面。(2)双击主界面Toolbox(工具箱)…...

dw可以做网站后台吗/西安做seo的公司

不要自卑&#xff0c;去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量&#xff0c;那是最好的事&#xff01;请相信自己 加油o~ Lambda基本使用方法 举一些简单例子&#xff1a; 无参&#xff0c;有返回值 ()->1 有参&#xff0c;有返回值 x->x1 两个参数…...

网站动态背景怎么做/怎么创建一个网站

下载redis: wget http://download.redis.io/releases/redis-2.8.19.tar.gz下载位置位于当前用户的根目录。 拷贝到合适的位置&#xff0c;解压&#xff1a; tar xzf redis-2.8.19.tar.gz进入文件夹&#xff1a; cd redis-2.8.19编译&#xff1a; make编译好的二进制文件位于sr…...