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

C语言之常用标准库介绍

文章目录

  • 1 标准库
    • 1.1 诊断assert.h
    • 1.2 字符类别测试ctype.h
    • 1.3 错误处理errno.h
    • 1.4 整型常量limits.h
    • 1.5 地域环境locale.h
    • 1.6 数学函数math.h
    • 1.7 非局部跳转setjmp.h
    • 1.8 可变参数表stdarg.h
    • 1.9 公共定义stddef.h
    • 1.10 输入输出stdio.h
    • 1.11 实用函数stdlib.h
    • 1.12 日期与时间函数time.h
    • 1.13 信号signal.h

1 标准库

1.1 诊断assert.h

assert.h中只定义了一个带参的宏assert,其定义形式如下:

void assert (int 表达式)

assert宏用于为程序增加诊断功能,它可以测试一个条件并可能使程序终止。 在执行语句:assert(表达式);时,如果表达式为0,则在终端显示一条信息:

Assertion failed: 0, file 源文件名, line 行号
Abnormal program termination

然后调用abort终止程序的执行。 在assert.h中,带参宏assert是被定义为条件编译的,如果在源文件中定义了宏NDEBUG,则即使包含了头文件,assert宏也将被忽略。

1.2 字符类别测试ctype.h

在头文件中定义了一些测试字符的函数。在这些函数中,每个函数的参数都是整型int,而每个参数的值或者为EOF,或者为char类型的字符。中定义的标准函数列表如下:

ctype.h 中定义的函数

函数定义函数功能简介
int isalnum(int c)检查字符是否是字母或数字
int isalpha(int c)检查字符是否是字母
int isascii(int c)检查字符是否是ASCII码
int iscntrl(int c)检查字符是否是控制字符
int isdigit(int c)检查字符是否是数字字符
int isgraph(int c)检查字符是否是可打印字符
int islower(int c)检查字符是否是小写字母
int isprint(int c)检查字符是否是可打印字符
int ispunct(int c)检查字符是否是标点字符
int isspace(int c)检查字符是否是空格符
int isupper(int c)检查字符是否是大写字母
int isxdigit(int c)检查字符是否是十六进制数字字符
int toupper(int c)将小写字母转换为大写字母
int tolower(int c)将大写字母转换为小写字母

1.3 错误处理errno.h

errno.h中定义了两个常量,一个变量。
EDOM:它表示数学领域错误的错误代码。
ERANGE:它表示结果超出范围的错误代码。
errno:这是一个变量,该值被设置成用来指出系统调用的错误类型。

1.4 整型常量limits.h

在limits.h头文件中定义了一些表示整型大小的常量。下面给出这些常量的字符表示以及含义,见下表。

limits.h中定义的字符常量

字符常量取值含义
CHAR_BIT8char类型的位数
CHAR_MAX255或127char类型最大值
CHAR_MIN0或-127char类型最小值
INT_MIN-32767int类型最小值
INT_MAX32767int类型最大值
LONG_MAX2147483647long类型最大值
LONG_MIN-2147483647long类型最小值
SCHAR_MAX127signed char 类型最大值
SCHAR_MIN-127signed char 类型最小值
SHRT_MAX32767short类型的最大值
SHRT_MIN-32767short类型的最小值
UCHAR_MAX255unsigned char 类型最大值
UINT_MAX65535unsigned int 类型最大值
ULONG_MAX4294967295unsigned long 类型最大值
USHRT_MAX65535unsigned short类型的最大值

1.5 地域环境locale.h

在locale.h中,定义了7个常量,一个结构,2个函数。
常量的定义:

  • LC_ALL:传递给setlocale的第一个参数,指定要更改该locale的哪个方面。
  • LC_COLLATE:strcoll和strxfrm的行为。
  • LC_CTYPE:字符处理函数。
  • LC_MONETARY:localeconv返回的货币信息。
  • LC_NUMERIC:localeconv返回的小数点和货币信息。
  • LC_TIME:strftime的行为。 以上扩展成具有唯一取值的整型常数表达式,可作为setlocale的第一个参数。
  • NULL:由实现环境定义的空指针。

struct lconv结构
该结构用于存储和表示当前locale的设置。其结构定义如下:

struct lconv
{char*decimal_point ;char*thousands_sep ;char*grouping ;char*int_curr_symbol ;char*currency_symbol ;char*mon_decimal_point ;char*mon_thousands_sep ;char*mon_grouping ;char*positive_sign ;char*negative_sign ;char int_frac_digits ;char frac_digits ;char p_cs_precedes ;char p_sep_by_space ;char n_cs_precedes ;char n_sep_by_space ;char p_sign_posn ;char n_sign_posn ;
};

函数

  • struct Iconv *localeconv(void);
    函数localeconv将一个struct Iconv类型的对象的数据成员设置成为按照当前地域环境的有关规则进行数量格式化后的相应值。
  • char *setlocale(int category,char * locale);
    函数setlocale用于更改和查询程序的整个当前地域环境或部分设置。地域环境变量由参数category(上面定义的6个常量)和locale指定。

1.6 数学函数math.h

在math.h中定义了一些数学函数和宏,用来实现不同种类的数学运算。下面给出中标准数学函数的函数定义及功能简介,见下表。

函数定义函数功能简介
double exp(double x);指数运算函数, 求e的x次幂函数
double log(double x)对数函数ln(x)
double log10(double x);对数函数log
double pow(double x, double y);指数函数(x的y次方)
double sqrt(double x);计算平方根函数
double ceil(double x);向上舍入函数
double floor(double x);向下舍入函数
double fabs(double x);求浮点数的绝对值
double ldexp(double x, int n);装载浮点数函数
double frexp(double x, int* exp);分解浮点数函数
double modf(double x, double* ip);分解双精度数函数
double fmod(double x, double y);求模函数
double sin(double x);计算x的正弦值函数
double cos(double x);计算x的余弦值函数
double tan(double x);计算x的正切值函数
double asin(double x);计算x的反正弦函数
double acos(double x);计算x的反余弦函数
double atan(double x);反正切函数1
double atan2(double y, double x);反正切函数2
double sinh(double x);计算x的双曲正弦值
double cosh(double x);计算x的双曲余弦值
double tanh(double x);计算x的双曲正切值

1.7 非局部跳转setjmp.h

在setjmp.h头文件中定义了一种特别的函数调用和函数返回顺序的方式。这种方式不同于以往的函数调用和返回顺序,它允许程序流程立即从一个深层嵌套的函数中返回。

定义了两个宏:int setjmp(jmp_buf env); 设置调转点
longjmp(jmp_buf jmpb, int retval); 跳转

宏setjmp的功能是将当前程序的状态保存在结构env,为调用宏longjmp设置一个跳转点。setjmp将当前信息保存在env中供longjmp使用。其中env是jmp_buf结构类型的,该结构定义为:

typedef struct {unsigned    j_sp;unsigned    j_ss;unsigned    j_flag;unsigned    j_cs;unsigned    j_ip;unsigned    j_bp;unsigned    j_di;unsigned    j_es;unsigned    j_si;unsigned    j_ds;
}    jmp_buf[1];

直接调用setjmp时,返回值为0,这一般用于初始化(设置跳转点时)。以后再调用longjmp宏时用env变量进行跳转。程序会自动跳转到setjmp宏的返回语句处,此时setjmp的返回值为非0,由longjmp的第二个参数指定。 下面通过例子来理解中定义的这两个宏。 例程9-1 非局部跳转演示。

include <setjmp.h> 
jmp_buf env;   /*定义jmp_buf类型变量*/
int main(void) 
{ int value; value = setjmp(env);  /*调用setjmp,为longjmp设置跳转点*/if (value != 0) {printf("Longjmp with value %d\n", value);exit(value);    /*退出程序*/} printf("Jump  ... \n");longjmp(env,1);       /*跳转到setjmp语句处*/return 0; 
}

本例先应用setjmp宏为longjmp设置跳转点,当第一次调用setjmp时返回值为0,并将程序的当前状态(寄存器的相关状态)保存在结构变量env中。当程序执行到longjmp时,系统会根据setjmp保存下来的状态env跳转到setjmp语句处,并根据longjmp的第二个参数设置此时setjmp的返回值。 本例的运行结果为:

Jump …
Longjmp with value 1

一般地,宏setjmp和longjmp是成对使用的,这样程序流程可以从一个深层嵌套的函数中返回。

1.8 可变参数表stdarg.h

可变参数表中的宏是用来定义参数可变的函数的。在C语言中,有些库函数或者用户自定义的函数的参数是可变的,常用省略号“……”(例如库函数中的printf),定义这样的函数就要使用到中的宏。

va_list:用于保存宏va_start,va_arg以及va_end所需信息的数据类型。

stdarg.h中还定义了三个宏:

  • void va_start(va_list ap, parmN);
  • type va_arg(va_list ap,type);
  • void va_end (va_list ap);

va_start的作用是初始化ap,因此va_start要在所有其它的va开头的宏前面最先使用(除了用va_list定义变量外),后面的va_copy, va_arg, va_end都要使用到ap。在一对va_start和va_end之间不能再次使用va_start宏。其中,parmN为"…"之前的最后一个参数。
例如,printf函数定义为:printf(const char format, …); 那么在printf函数中的va_start使用之后, parmN 的值就等于format。
va_arg的作用就是返回参数列表ap中的下一个具有type类型的参数,每次调用va_arg都会修改ap的值,这样才能连续不断地获取下一个type类型的参数。 va_end与va_start构成了一个scope,va_end标志着结束,va_end之后ap就无效了。

1.9 公共定义stddef.h

在stddef.h头文件中,指定了标准库中的公共定义。其中主要包括以下内容:

  • NULL:空指针类型常量。
  • offset(type,member-designator):它是扩展iz-t类型的一个整型常数表达式。它的值为从type定义的结构类型的开头到结构成员member-designator的偏移字节数。
  • ptrdiff_t:表示两指针之差的带符号整数类型。
  • size_t:表示由sizeof运算符计算出的结果类型,它是一个无符号整数类型。
  • wchar_t:它是一种整数类型,取值范围为在被支持的地域环境中最大扩展字符集的所有字符的各种代码,空字符代码值为0。

1.10 输入输出stdio.h

在stdio.h头文件中定义了输入输出函数,类型和宏。这些函数、类型和宏几乎占到标准库的三分之一。 下面给出头文件中声明的函数以及功能简介,见下表。

函数定义函数功能简介
FILE *fopen(char *filename, char *type)打开一个文件
FILE *fropen(char *filename, char *type,FILE *fp)打开一个文件,并将该文件关联到fp指定的流
int fflush(FILE *stream)清除一个流
int fclose(FILE *stream)关闭一个文件
int remove(char *filename)删除一个文件
int rename(char *oldname, char *newname)重命名文件
FILE *tmpfile(void)以二进制方式打开暂存文件
char *tmpnam(char *sptr)创建一个唯一的文件名
int setvbuf(FILE *stream, char *buf, int type, unsigned size)把缓冲区与流相关
int printf(char *format…)产生格式化输出的函数
int fprintf(FILE *stream, char *format[, argument,…])传送格式化输出到一个流中
int scanf(char *format[,argument,…])执行格式化输入
int fscanf(FILE *stream, char *format[,argument…])从一个流中执行格式化输入
int fgetc(FILE *stream)从流中读取字符
char *fgets(char *string, int n, FILE *stream)从流中读取一字符串
int fputc(int ch, FILE *stream)送一个字符到一个流中
int fputs(char *string, FILE *stream)送一个字符到一个流中
int getc(FILE *stream)从流中取字符
int getchar(void)从stdin流中读字符
char *gets(char *string)从流中取一字符串
int putchar(int ch)在stdout上输出字符
int puts(char *string)送一字符串到流中
int ungetc(char c, FILE *stream)把一个字符退回到输入流中
int fread(void *ptr, int size, int nitems, FILE *stream)从一个流中读数据
int fwrite(void *ptr, int size, int nitems, FILE *stream)写内容到流中
int fseek(FILE *stream, long offset, int fromwhere)重定位流上的文件指针
long ftell(FILE *stream)返回当前文件指针
int rewind(FILE *stream)将文件指针重新指向一个流的开头
int fgetpos(FILE *stream)取得当前文件的句柄
int fsetpos(FILE *stream, const fpos_t *pos)定位流上的文件指针
void clearerr(FILE *stream)复位错误标志
int feof(FILE *stream)检测流上的文件结束符
int ferror(FILE *stream)检测流上的错误
void perror(char *string)系统错误信息

点击了解 C语言之IO流函数

1.11 实用函数stdlib.h

在stdlib.h头文件中声明了一些实现数值转换,内存分配等类似功能的函数。下面给出头文件中声明的函数以及功能简介,见下表。

函数定义函数功能简介
double atof(const char *s)将字符串s转换为double类型
int atoi(const char *s)将字符串s转换为int类型
long atol(const char *s)将字符串s转换为long类型
double strtod (const char*s,char **endp)将字符串s前缀转换为double型
long strtol(const char*s,char **endp,int base)将字符串s前缀转换为long型
unsinged long strtol(const char*s,char **endp,int base)将字符串s前缀转换为unsinged long型
int rand(void)产生一个0~RAND_MAX之间的伪随机数
void srand(unsigned int seed)初始化随机数发生器
void *calloc(size_t nelem, size_t elsize)分配主存储器
void *malloc(unsigned size)内存分配函数
void *realloc(void *ptr, unsigned newsize)重新分配主存
void free(void *ptr)释放已分配的块
void abort(void)异常终止一个进程
void exit(int status)终止应用程序
int atexit(atexit_t func)注册终止函数
char *getenv(char *envvar)从环境中取字符串
void *bsearch(const void *key, const void *base, size_t *nelem, size_t width, int(*fcmp)(const void *, const *))二分法搜索函数
void qsort(void *base, int nelem, int width, int (*fcmp)())使用快速排序例程进行排序
int abs(int i)求整数的绝对值
long labs(long n)取长整型绝对值
div_t div(int number, int denom)将两个整数相除, 返回商和余数
ldiv_t ldiv(long lnumer, long ldenom)两个长整型数相除, 返回商和余数

1.12 日期与时间函数time.h

在time.h头文件中,声明了一些处理日期和时间的类型与函数。clock_ttime_t是两个表示时间值的算术类型。结构struct tm存储了一个日历时间的各个成分。结构tm的成员的意义及其正常的取值范围如下:

struct    tm    {int    tm_sec;      /*从当前分钟开始经过的秒数(0,61)*/int    tm_min;      /*从当前小时开始经过的分钟数(0,59)*/int    tm_hour;     /*从午夜开始经过的小时数(0,23)*/int    tm_mday;    /*当月的天数(1,31)*/int    tm_mon;     /*从1月起经过的月数(0,11)*/int    tm_year;     /*从1900年起经过的年数*/int    tm_wday;    /*从本周星期天开始经过的天数(0,6)*/int    tm_yday;    /*从今年1月1日起经过的天数(0,356)*/int    tm_isdst;    /*夏令时标记*/
};

如果夏令时有效,夏令时标记tm_isdst值为正;若夏令时无效,tm_isdst值为0;如果得不到夏令时信息,tm_isdst值为负。 下面给出头文件中声明的时间函数,见下表。

函数定义函数功能简介
clock_t clock(void)确定处理器时间函数
time_t time(time_t *tp)返回当前日历时间
double difftime(time_t time2, time_t time1)计算两个时刻之间的时间差
time_t mktime(struct tm *tp)将分段时间值转换为日历时间值
char *asctime(const struct tm *tblock)转换日期和时间为ASCII码
char *ctime(const time_t *time)把日期和时间转换为字符串
struct tm *gmtime(const time_t *timer)把日期和时间转换为格林尼治标准时间(GMT)
struct tm *localtime(const time_t *timer)把日期和时间转变为结构
size_t strftime(char *s,size_t smax,const char *fmt, const struct tm *tp)根据fmt的格式要求将*tp中的日期与时间转换为指定格式。

1.13 信号signal.h

头signal.h文件中提供了一些处理程序运行期间引发的各种异常条件的功能,例如一些来自外部的中断信号等。 在中只定义了两个函数:int signal(int sig, sigfun fname);int raise(int sig);
signal函数的作用是设置某一信号的对应动作。其中参数sig用来指定哪一个信号被设置处理函数。
在标准C 中支持的信号如下表。 标准C支持的信号

取值说明默认执行动作使用的操作系统
SIGABRT异常中止中止程序UNIX DOS
SIGPPE算术运算错误中止程序UNIX DOS
SIGILL非法硬件指令中止程序UNIX DOS
SIGINT终端中断中止程序UNIX DOS
SIGSEGV无效的内存访问中止程序UNIX DOS
SIGTERM中止信号中止程序UNIX DOS

参数fname是一个指向函数的指针,当sig的信号发生时程序会自动中断转而执行fname指向的函数。执行完毕再返回断点继续执行程序。系统提供了两个常量函数指针,可以作为函数的参数传递。它们分别是:

  • SIG_DEF:执行默认的系统第一的函数。
  • SIG_IGN:忽略此信号。

raise函数的作用是向正在执行的程序发送一个信号,从而使得当前进程产生一个中断而转向信号处理函数signal执行。其中参数sig为信号名称,它的取值范围同函数signal中的参数sig取值范围相同 ,下面通过例子理解函数signal和raise。

#include <stdio.h>
#include <signal.h>
void Print1();
void Print2();
int main()
{   signal(SIGINT,Print1);printf("Please enter Ctr+c for interupt\n") ;getchar();signal(SIGSEGV,Print2);printf("Please enter any key for a interupt\n");getchar();raise(SIGSEGV);}
void Print1()
{printf("This is a SIGINT interupt!\n");
}
void Print2()
{printf("This is a SIGSEGV interupt!\n");
}

本例首先通过用户终端输入Ctrl+c产生一个终端中断,然后应用signal函数调用中断处理函数Print1;再通过raise函数生成一个无效内存访问中断,并通过signal函数调用中断处理函数Print2。

运行结果为:

Please enter Ctr+c for interupt
^C
This is a SIGINT interupt!
Please enter any key for a interupt
a
This is a SIGSEGV interupt!

相关文章:

C语言之常用标准库介绍

文章目录 1 标准库1.1 诊断assert.h1.2 字符类别测试ctype.h1.3 错误处理errno.h1.4 整型常量limits.h1.5 地域环境locale.h1.6 数学函数math.h1.7 非局部跳转setjmp.h1.8 可变参数表stdarg.h1.9 公共定义stddef.h1.10 输入输出stdio.h1.11 实用函数stdlib.h1.12 日期与时间函数…...

Spring响应式编程之Reactor核心接口

响应式流的核心接口 核心接口包括&#xff1a;Publisher<T>、Subscriber<T>、Subscription 和 Processo<T,R> &#xff08;1&#xff09;Publisher<T> Publisher接口代表数据流的生产者&#xff0c;根据收到的请求向Subscriber发布数据。接口定义如…...

【HTTPS云证书部署】SpingBoot部署证书

这里以华为云证书为例。 1. 下载证书 2. 解压 3. 选择.top_Tomcat复制到SpringBoot的Resource/source下 4. 在.properties文件中进行配置 修改key-store和key-store-password...

React的状态提升和组合

React的状态提升 通常&#xff0c;多个组件需要反映相同的变化数据&#xff0c;这时我们建议将共享状态提升到最近的共同父组件中去 示例&#xff1a; 我们写一个关于热水沸腾的组件&#xff0c;当我们在输入框输入的温度大于100度时&#xff0c;文字会显示热水沸腾。这样有…...

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的&#xff1a;基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid&#xff0c;可以像Excel拥有列头筛选器&#xff0c;感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式&#xff0c…...

Python: create object

# encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2024/6/15 18:59 # User : geovindu # Product : PyCharm # Pr…...

OpenSSL命令手册

正文共&#xff1a;999 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我们前面编译安装了OpenSSL命令工具&#xff08;CentOS编译安装OpenSSL 3.3.1&#xff09;&#xff0c;这是一个强大的安全套接字层密码库&#xff0c;可以用于实现各种加密和认证协议&#xff0c;如…...

[面试题]MongoDB

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…...

【Qt笔记①】帮助文档、窗口、按钮、信号和槽、lambda表达式

学习第一天&#xff1a;2024-3-9 文章目录 Qt creator 快捷键帮助文档默认生成的main.cpp逐行解释核心类帮助文档的查阅方法-①代码创建按钮第一个第二个对窗口的其他设置 对象树窗口坐标系信号和槽&#xff08;优点&#xff1a;松散耦合&#xff09;帮助文档的查阅方法-②找信…...

【pytorch05】索引与切片

索引 a[0,0]第0张图片的第0个通道 a[0,0,2,4]第0张图片&#xff0c;第0个通道&#xff0c;第2行&#xff0c;第4列的像素点&#xff0c;dimension为0的标量 选择前/后N张图片 a[:2,:1,:,:].shape前两张图片&#xff0c;第1个通道上的所有图片的数据 a[:2,1:,:,:].shape前两张…...

ECharts 蓝色系-荧光图标折线图01案例

ECharts 蓝色系-荧光图标折线图01案例 图表意义 本折线图案例展示了一周内不同路线的使用情况或数据统计。通过折线的上升和下降&#xff0c;可以直观地观察到每条路线的流量或数据变化趋势&#xff0c;从而进行分析和决策。 效果预览 效果图展示不同路线的数据统计和个性化…...

使用消息中间件实现系统间的异步通信和解耦

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…...

【QML】用 Image(QQuickPaintedItem) 显示图片

大体功能&#xff1a; 频繁地往界面推送图片&#xff0c;帧率达到视频效果。捕获画布上的鼠标事件和键盘事件。 代码如下&#xff1a; // DrawImageInQQuickPaintedItem.pro 代码如下&#xff1a; QT quick# You can make your code fail to compile if it uses deprecated…...

C++抽象类

C中抽象类 1.抽象类概念1.1、抽象类如何使用1.2、抽象类规定 2.抽象类代码示例2.1、抽象类2.2、子类12.3、子类22.4、程序入口 1.抽象类概念 C是一门面向对象的编程语言&#xff0c;而所有的对象都是通过类来描述的&#xff0c;如果一个类没有足够的信息来描述一个具体的对象&…...

计算机网络 —— 应用层(DHCP)

计算机网络 —— 应用层&#xff08;DHCP&#xff09; 什么是DHCPDHCP工作过程DHCP DISCOVERDHCP OFFERDHCP RQUESTDHCP ACK DHCP租约机制中继代理工作原理功能与优势 我们今天来计网的DHCP&#xff1a; 什么是DHCP DHCP&#xff08;Dynamic Host Configuration Protocol&…...

Linux ComfyUI安装使用;Stable Diffusion 3使用

1、Linux ComfyUI安装使用 参考: https://zhuanlan.zhihu.com/p/689021495 安装步骤: ## 1、下载ComfyUI git clone https://github.com/comfyanonymous/ComfyUI ## 2、进入ComfyUI,安装依赖包 cd ComfyUI pip install -r requirements.txt ## 3\安装插件 cd custom_nodes…...

JavaScripts数组里的对象排序的24个方法

1. 使用 Array.prototype.sort() 这是最基本、也是最常用的方法。sort() 方法会原地修改数组&#xff0c;并返回排序后的数组。你需要传入一个比较函数来定义排序逻辑。 const array [{ name: Alice, age: 25 },{ name: Bob, age: 22 },{ name: Charlie, age: 30 } ];// 按照…...

Mongodb介绍及window环境安装

本文主要内容为nosql数据库-MongoDB介绍及window环境安装。 目录 什么是MongoDB&#xff1f; 主要特点 MongoDB 与Mysql对应 安装MongoDB 下载MongoDB 自定义安装 创建目录 配置环境变量 配置MongoDB服务 服务改为手动 启动与关闭 安装MongoDB Shell 下载安装包 …...

Spring响应式编程之Reactor核心组件

Reactor核心组件 Flux和Mono组件&#xff08;1&#xff09;Flux组件&#xff08;2&#xff09;Mono组件 Flux和Mono组件 Reactor 框架提供了两个核心组件来发布数据&#xff0c;分别是 Flux 和 Mono 组件。两者都是实现Publisher接口的高级抽象&#xff0c;可以说是应用程序开…...

动手学深度学习(Pytorch版)代码实践 -计算机视觉-37微调

37微调 import os import torch import torchvision from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt from d2l import torch as d2l# 获取数据集 d2l.DATA_HUB[hotdog] (d2l.DATA_URL hotdog.zip,fba480ffa8aa7e0febbb511d181409f899b9baa5…...

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;视频接入能力介绍 &#xff08;三&#xff09;功能介绍 二、JT/T905协议介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;主要内容 1、设备要求 2、业务功能要求…...

【jenkins1】gitlab与jenkins集成

文章目录 1.Jenkins-docker配置&#xff1a;运行在8080端口上&#xff0c;机器只要安装docker就能装载image并运行容器2.Jenkins与GitLab配置&#xff1a;docker ps查看正在运行&#xff0c;浏览器访问http://10....:8080/2.1 GitLab与Jenkins的Access Token配置&#xff1a;不…...

边缘计算设备有哪些

边缘设备是指那些位于数据源附近&#xff0c;能够执行数据处理、分析和决策的计算设备。这些设备通常具有一定的计算能力、存储能力和网络连接能力&#xff0c;能够减少数据传输到云端的需要&#xff0c;从而降低延迟、节省带宽并提高数据处理的效率。以下是一些常见的边缘设备…...

C++初学者指南第一步---7.控制流(基础)

C初学者指南第一步—7.控制流&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---7.控制流&#xff08;基础&#xff09;1.术语:表达式/语句Expressions表达式Statements语句 2.条件分支3.Switching(切换):基于值的分支4.三元条件运算符5.循环迭代基于范围的循环   C…...

MFC学习--CListCtrl复选框以及选择

如何展示复选框 //LVS_EX_CHECKBOXES每一行的最前面带个复选框//LVS_EX_FULLROWSELECT整行选中//LVS_EX_GRIDLINES网格线//LVS_EX_HEADERDRAGDROP列表头可以拖动m_listctl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES); 全选&#xff0c;全…...

如何与PM探讨项目

我曾在2020年撰写过一篇名为对产品经理的一些思考的文章&#xff0c;紧接着在2021年&#xff0c;我又写了一篇对如何分析项目的思考。在这两篇文章中&#xff0c;我提出了一个核心观点&#xff1a;“船长需要把控所有事情&#xff0c;但最核心的是&#xff1a;需要知道目标是什…...

今年618各云厂商的香港服务器优惠活动汇总

又到了一年618年中钜惠活动时间&#xff0c;2024年各大云服务器厂商都有哪些活动呢&#xff1f;有哪些活动包括香港服务器呢&#xff1f;带着这些问题&#xff0c;小编给大家一一讲解各大知名厂商的618活动有哪些值得关注的地方&#xff0c;如果对你有帮助&#xff0c;欢迎点赞…...

Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流

技术背景 VR头显需要更高的分辨率以提供更清晰的视觉体验、满足沉浸感的要求、适应透镜放大效应以及适应更广泛的可视角度&#xff0c;超高分辨率的优势如下&#xff1a; 提供更清晰的视觉体验&#xff1a;VR头显的分辨率直接决定了用户所看到的图像的清晰度。更高的分辨率意…...

WHAT - NextJS 系列之 Rendering - Server Components

目录 一、Server Components1.1 Server Components特点使用 1.2 Client Components特点使用 1.3 综合使用示例1.4 小结 二、Server Components 优势三、Streaming 特性3.1 基本介绍和使用Streaming的理解工作原理使用示例服务器端组件客户端组件页面流程解释 3.2 HTTP/1.1和HTT…...

Web项目部署后浏览器刷新返回Nginx的404错误对应解决方案

data: 2024/6/22 16:05:34 周六 limou3434 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.源头2.排错3.原因4.解…...