深度理解文件操作
目录
文件
文件名:
标准流
文件指针
文件的打开和关闭
文件的顺序读写:
使用部分
文件的打开和关闭
文件
文件分两种,第一种是程序文件,后一种是数据文件。
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj)可执行程序(windows环境后缀为.exe)。
数据文件:文件的内同 不一定是程序,而是程序员运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出的文件。
文件名:
文件名包含三部分:文件路径+文件名主干+文件后缀
例:c:\code\test.txt
进行文件操作时需要用到流
"流"(stream)通常用于描述数据的传输或处理。流可以是输入流(input stream)或输出流(output stream),它们分别用于从外部源读取数据或将数据写入外部目标。
输入流:输入流用于从外部源(比如文件、键盘、网络等)读取数据到程序中。在C语言中,你可以使用标准输入流(stdin)来接收用户输入,也可以使用文件输入流来读取文件中的数据。
输出流:输出流用于将程序中的数据写入外部目标(比如文件、屏幕、网络等)。在C语言中,你可以使用标准输出流(stdout)来输出到屏幕上,也可以使用文件输出流将数据写入文件。
标准流
stdin-标准输入流,可以将数据写入一个文本文件,并将该文件重定向到程序的标准输入。
stdout-标准输出流,程序的输出重定向到文件或其他位置,可以使用标准输出(stdout)重定向。
stderr-标准错误流,大多数环境中输出到显示器上面。
标准流的类型是FILE*,通常称为文件指针。
文件指针
缓冲文件系统中,关键的概念是“文件类型指针”简称“文件指针”
每个被使用的文件都在内存中开辟了一个相应的文件信息区。这些信息保存在结构体变量中,该结构体由系统声明,取名FILE
结构体原型:
typedef struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
} FILE;
文件的读写
文件读写应先打开后关闭
ANSIC规定使用fopen函数打开文件,fclose来关闭文件。
//打开文件
FILE * fopen(const char * filename, const char * mode);
//关闭文件
int fclose(FILE * stream);
文件的使用方式
文件的顺序读写:
fgetc和fputc
fgetc
是C标准库中用于从文件中读取一个字符的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fgetc(FILE *stream);
stream
:指向FILE
结构体的指针,表示要读取字符的文件流。
fgetc
函数的作用是从指定的文件流中读取一个字符,并将该字符作为无符号字符返回。如果到达文件末尾或者发生错误,它会返回 EOF(End Of File)。
fputc
是C标准库中用于向文件中写入一个字符的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fputc(int character, FILE *stream);
character
:要写入到文件的字符。stream
:指向FILE
结构体的指针,表示要写入字符的文件流。
fputc
函数的作用是向指定的文件流中写入一个字符。它会将指定的字符写入到文件中,并返回写入的字符。如果写入成功,则返回写入的字符;如果发生错误,返回 EOF
。
fgets和fputs
fgets
是C标准库中用于从文件流中读取一行数据的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
char *fgets(char *str, int num, FILE *stream);
str
:指向一个字符数组的指针,用于存储读取的字符串数据。num
:要读取的最大字符数(包括空字符)。stream
:指向FILE
结构体的指针,表示要读取数据的文件流。
fgets
函数会从指定的文件流中读取一行数据(包括换行符),并将其存储到指定的字符数组中。它会一直读取直到遇到换行符 \n
、文件结束符 EOF
或者读取了 num-1
个字符为止,并在最后添加一个 null 字符 \0
作为字符串的结尾。
fputs
是C标准库中用于向文件中写入字符串的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fputs(const char *str, FILE *stream);
str
:要写入到文件的字符串。stream
:指向FILE
结构体的指针,表示要写入字符串的文件流。
fputs
函数的作用是向指定的文件流中写入一个以 null 结尾的字符串。它会将指定的字符串写入到文件中,并返回非负值(非错误);如果发生错误,返回 EOF
。
fscanf和fprintf
fscanf
是C标准库中用于从文件中读取格式化输入的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fscanf(FILE *stream, const char *format, ...);
stream
:指向FILE
结构体的指针,表示要读取数据的文件流。format
:格式化字符串,指定了要读取的数据类型和格式。
fscanf
函数根据指定的格式字符串从文件流中读取数据,并根据格式进行解析和存储。它将读取的数据转换为相应的数据类型,并按照格式字符串的指示将数据存储到相应的变量中。
fprintf
是C标准库中用于将格式化数据输出到文件的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fprintf(FILE *stream, const char *format, ...);
stream
:指向FILE
结构体的指针,表示要输出数据的文件流。format
:格式化字符串,指定了要输出的数据类型和格式。
fprintf
函数根据指定的格式字符串将数据格式化后输出到指定的文件流中。它类似于 printf
函数,但是可以将输出重定向到文件而不是标准输出。
fread和fwrite
fread
是C标准库中用于从文件中读取数据的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr
:指向存储读取数据的内存块的指针。size
:要读取的每个数据项的字节数。nmemb
:要读取的数据项的数量。stream
:指向FILE
结构体的指针,表示要读取数据的文件流。
fread
函数从文件流中读取数据,并将数据存储到指定的内存块中。它会返回实际读取的数据项数量,通常用于读取二进制数据。
fwrite
是 C 标准库中用于将数据写入文件的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr
:指向要写入文件的数据块的指针。size
:每个数据项的大小(字节数)。nmemb
:要写入的数据项的数量。stream
:指向FILE
结构体的指针,表示要写入数据的文件流。
fwrite
函数将指定数量的数据项从内存中写入到文件中。它通常用于写入二进制数据到文件。
使用部分
文件的打开和关闭
以下是打开文件和关闭文件的操作
#include <stdio.h>int main()
{FILE* pf = fopen("data.txt", "w");//创建文件 打开文件if (pf == NULL){perror("fopen");return 1;}//写文件//....//关闭文件fclose(pf);pf = NULL;return 0;
}
这样就创建了data.txt文件
在我这里,D:\clone仓库\test.c\test_3_26表示当前目录
.表示当前目录
..表示上一目录
fputc和fgetc的使用
使用fputc写入26个小写字母
int main()
{FILE* pf = fopen("data.txt", "w");if (pf == NULL){perror("fopen");return 1;}int i = 0;for (i = 0; i < 26; i++){fputc('a' + i, pf);}fclose(pf);pf = NULL;return 0;
}
使用fgetc读取data.txt的内容
fputc和fgetc的读写都有一个共同的特点,就是光标会随着读写依次往后跳
使用fgetc函数读取data1.txt中的内容,再使用fputc函数输出到data.txt中
这里我先创建好了data1.txt并输入了内容abcdefghi。
另外需要注意的是当data2.txt开辟失败时,进行判断后,应先关闭文件data1.txt后置空。
int main()
{//D:\clone仓库\test.c\test_3_26表示当前目录//.表示当前目录//..表示上一目录FILE* pf1 = fopen("data1.txt", "r");//创建文件 打开文件if (pf1 == NULL){perror("fopen");return 1;}FILE* pf2 = fopen("data2.txt", "w");if (pf2 == NULL){fclose(pf1);pf1 = NULL;perror("fopen->data2.txt");return 1;}//写文件int ch = 0;while ((ch = fgetc(pf1)) != EOF){fputc(ch, pf2);}//关闭文件fclose(pf1);fclose(pf2);pf1 = NULL;pf2 = NULL;return 0;
}
fgets和fputs的使用
fputs一次写入一行
int main()
{FILE* pf = fopen("data.txt", "w");if (pf == NULL){perror("fopen");return 1;}fputs("abcdefg\n", pf);fputs("abcdefg\n", pf);fputs("abcdefg\n", pf);fclose(pf);pf = NULL;return 0;
}
fgets注意有三个参数,其中的num参数是最多读取多少个的意思,最多读取num-1个字符。
第一个参数是数组第二参数是num,第三个参数是文件指针,是把文件里的字符读取到数组中
这里data.txt是一堆字母,num是10,但一共读取了9个字符。
fscanf和fprintf的使用
读取带有格式化的字符
struct stu
{char neme[30];int age;double score;
};int main()
{struct stu s = { "zhangsan", 29, 99.5 };FILE* pf = fopen("data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fprintf(pf, "%s %d %.1lf", s.neme, s.age, s.score);fclose(pf);pf = NULL;return 0;
}
注意使用fscanf和scanf一样要&(取地址)
这里创建了一个未初始化的s使用fscanf函数读取data.txt的内容读入s中,后用fprintf打印再屏幕上。
fread和fwrite的使用
二进制的读写
fwrite四个参数,第一个是要写数据的起始地址,第二个是一个元素的大小,第三个是写入的个数,第四个是流
再文件出现了乱码,这就是二进制翻译出的字符,不能识别
struct stu
{char neme[30];int age;double score;
};int main()
{struct stu s = { "zhangsan", 19, 99.5 };FILE* pf = fopen("data.txt", "wb");//二进制读写if (pf == NULL){perror("fopen");return 1;}//写文件fwrite(&s, sizeof(s), 1, pf);//写到pf中fclose(pf);pf = NULL;return 0;
}
fread可以识别二进制的代码
struct stu
{char neme[30];int age;double score;
}s;int main()
{//struct stu s = { "zhangsan", 19, 99.5 };FILE* pf = fopen("data.txt", "rb");//二进制读写if (pf == NULL){perror("fopen");return 1;}//fwrite(&s, sizeof(s), 1, pf);//读文件fread(&s, sizeof(s), 1, pf);//写到pf中printf("%s %d %.1lf", s.neme, s.age, s.score);fclose(pf);pf = NULL;return 0;
}
比较一组函数
scanf/fscanf/sscanf
printf/fprintf/sprintf
前面已经介绍了fscanf和fprintf了,但这里还有一组函数,即sscanf和sprintf
scanf——针对标准输入流的格式化输入函数
printf——针对标准输出流的格式化输出函数
fscanf——针对所有输出流的的格式化输入函数
fprintf——针对所有输入流的格式化输出函数
sscanf
sscanf是从一个字符串中读取一个格式化的数据
sprintf
sprintf和printf都是使用格式化的数据,最大的差别在于sprintf多了一个参数
这个参数的作用是将格式化的数据转换成字符串。
使用
把一个结构体的格式化数据转换成字符串储存在了arr中,并输出到屏幕上。
struct stu
{char name[39];int age;float score;
};int main()
{struct stu s = { "zhangsan", 38, 98.5 };char arr[100] = { 0 };sprintf(arr, "%s %d %lf", s.name, s.age, s.score);printf("%s\n", arr);return 0;
}
把字符串输入到新创建的结构体tmp中后将其格式化为结构体数据
struct stu
{char name[39];int age;float score;
};int main()
{struct stu s = { "zhangsan", 38, 98.5 };char arr[100] = { 0 };struct stu tmp = { 0 };sprintf(arr, "%s %d %f", s.name, s.age, s.score);printf("%s\n", arr);sscanf(arr, "%s %d %f", tmp.name, &(tmp.age), &(tmp.score));printf("%s, %d, %f", tmp.name, tmp.age, tmp.score);return 0;
}
文件的随机读写
fseek
fseek
是 C 标准库中用于设置文件位置指针的函数,通常用于在文件中移动读写位置。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int fseek(FILE *stream, long offset, int whence);
stream
:指向FILE
结构体的指针,表示要设置位置的文件流。offset
:偏移量,指定相对于whence
的移动距离。whence
:基准点,指定相对位置的参考点,可以是SEEK_SET
、SEEK_CUR
或SEEK_END
。
常用的 whence
参数取值如下:
SEEK_SET
:从文件开头开始偏移。SEEK_CUR
:从当前位置开始偏移。SEEK_END
:从文件末尾开始偏移。
fseek
函数将文件位置指针移动到指定的位置,以便进行后续的读写操作。
ftell
ftell
是 C 标准库中用于获取文件位置指针当前位置的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
long ftell(FILE *stream);
stream
:指向FILE
结构体的指针,表示要获取位置的文件流。
ftell
函数返回当前文件位置指针相对于文件起始位置的偏移量(以字节为单位)。通常情况下,ftell
函数会返回一个 long
类型的值,表示当前位置的偏移量。
rewind
rewind
是 C 标准库中用于将文件位置指针重新定位到文件的起始位置的函数。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
void rewind(FILE *stream);
stream
:指向FILE
结构体的指针,表示要重新定位位置的文件流。
rewind
函数将文件位置指针移动到文件的起始位置,相当于使用 fseek(stream, 0L, SEEK_SET)
将文件位置指针移动到文件开头的操作。
使用部分
fseek的使用
SEEK_SET
:从文件开头开始偏移。
SEEK_CUR
:从当前位置开始偏移。
SEEK_END
:从文件末尾开始偏移。
ftell的使用
根据ftell的特性,配合fseek可统计文件中的字符数。当然不止这一种,根据ftell函数的特性可开发除不同的用法。
int main()
{FILE* pf = fopen("data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fputs("abcdefg", pf);fclose(pf);pf = fopen("data.txt", "r");long size = 0;int ch = 0;fseek(pf, 0, SEEK_END);ch = fgetc(pf);size = ftell(pf);printf("%ld bytes.\n", size);//关闭文件fclose(pf);pf = NULL;return 0;
}
rewind的使用
int main()
{FILE* pf = fopen("data.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fputs("abcdefg", pf);fclose(pf);pf = fopen("data.txt", "r");int ch = fgetc(pf);printf("%c\n", ch);ch = fgetc(pf);printf("%c\n", ch);rewind(pf);ch = fgetc(pf);printf("%c\n", ch);//关闭文件fclose(pf);pf = NULL;return 0;
}
文件读取结束的判定
feof
在 C 标准库中,feof
函数用于检查文件流的结束标记,判断文件是否已经结束。它的原型定义在 <stdio.h>
头文件中,通常的函数原型如下:
int feof(FILE *stream);
stream
:指向FILE
结构体的指针,表示要检查是否到达文件结尾的文件流。
feof
函数检查给定文件流的结束标记。如果文件流的结束标记被设置,则 feof
返回非零值(即真),表示文件已经结束;否则返回 0(假),表示文件尚未结束。
注意:在文件读取的过程中不能用feof函数的返回值直接判定文件是否结束。
1.判断文本文件是否结束,判断返回值是否为EOF
2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
fread判断返回值是否小于实际要读的个数。
文本文件例子:
int main()
{int c;//int,非char,要求处理EOFFILE* pf = fopen("data.txt", "w");if (!pf){perror("fopen");return EXIT_FAILURE;}while (c = fgetc(pf) != EOF){putchar(c);}if (ferror(pf)){puts("I/O error when reading");}else if (feof(pf)){puts("End of file reached successfully");}fclose(pf);return 0;
}
二进制文件的例子:
#include <stdio.h>
enum { SIZE = 5 };
int main(void)
{double a[SIZE] = { 1.,2.,3.,4.,5. };FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式fwrite(a, sizeof * a, SIZE, fp); // 写 double 的数组fclose(fp);double b[SIZE];fp = fopen("test.bin", "rb");size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读 double 的数组if (ret_code == SIZE) {puts("Array read successfully, contents: ");for (int n = 0; n < SIZE; ++n) printf("%f ", b[n]);putchar('\n');}else { // error handlingif (feof(fp))printf("Error reading test.bin: unexpected end of file\n");else if (ferror(fp)) {perror("Error reading test.bin");}}fclose(fp);
}
文件缓冲区
相关文章:
深度理解文件操作
目录 文件 文件名: 标准流 文件指针 文件的打开和关闭 文件的顺序读写: 使用部分 文件的打开和关闭 文件 文件分两种,第一种是程序文件,后一种是数据文件。 程序文件:包括源程序文件(后缀为.c&…...
【搜索引擎2】实现API方式调用ElasticSearch8接口
1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库Elastic SearchDatabase7.X版本前有Type,对比数据库中的表,新版取消了TableIndexRowDocumentColumnmapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上…...
配置小程序的服务器域名
准备工作 拥有一个已注册的域名:确保您已经注册了一个符合国家和地区相关法律法规要求的域名。 完成域名备案(如有必要):根据国家和地区的法律法规,某些情况下可能需要对域名进行备案才能用于互联网服务。 配置 DNS&…...
政安晨:【深度学习神经网络基础】(一)—— 逐本溯源
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 与计算机一样的古老历史 神经网络的出现可追溯到20世纪40年…...
技巧 Win10电脑打开SMB协议共享文件,手机端查看
一. 打开 SMB1.0/CIFS文件共享支持 ⏹如下图所示,打开SMB1.0/CIFS文件共享支持 二. 开启网络发现 ⏹开启网络发现,确保共享的文件能在局域网内被发现 三. 共享文件夹到局域网 ⏹根据需要勾选需要共享的文件夹,共享到局域网 四. 共享文件查…...
java实现MP4视频压缩
要在Java中实现MP4视频压缩,您可以使用一些第三方库,比如ffmpeg或Xuggler等。下面是使用ffmpeg库进行MP4视频压缩的示例代码: java import java.io.BufferedReader; import java.io.InputStreamReader; public class MP4Compressor { public static void main(String[] args)…...
云电脑安全性怎么样?企业如何选择安全的云电脑
云电脑在保障企业数字资产安全方面,采取了一系列严谨而全面的措施。随着企业对于数字化转型的深入推进,数字资产的安全问题日益凸显,而云电脑作为一种新兴的办公模式,正是为解决这一问题而生。云电脑安全吗?可以放心使…...
【python】pygame游戏框架
文章目录 pygame常用模块pygame:主模块,包含初始化、退出、时间、事件等函数。pygame.cdrom 访问光驱pygame.cursors 加载光驱pygame.joystick 操作游戏手柄或者类似的东西pygame.mouse:鼠标模块,包含获取、设置、控制等函数。pygame.key 键盘模块pygame.display:显示模块…...
计算机OSI7层协议模型
OSI模型是由国际标准化组织(ISO)制定的一种网络通信的标准体系,旨在确保不同厂商的网络设备能够互联互通。该模型将网络通信划分为七个独立的层次,每一层负责特定的功能。这种分层设计使得网络协议的开发、维护和升级更加容易。 …...
书生·浦语大模型实战营之全链路开源体系
书生浦语大模型实战营之全链路开源体系 为了推动大模型在更多行业落地开花,让开发者们更高效的学习大模型的开发与应用,上海人工智能实验室重磅推出书生浦语大模型实战营,为广大开发者搭建大模型学习和实践开发的平台,两周时间带…...
/.git/config文件目录
git config可以看做是一个配置工具,它允许用户获得和设置与git相关的配置选项,是我们灵活使用git软件的第一步...
MySQL 8.0 新特性之不可见主键
数据库设计通常需要满足一定的范式要求,其中主键更是最基本的要求。不过,数据库管理系统却允许我们创建没有主键的表。这样的表在 MySQL 中会带来查询性能低下、复制延迟甚至无法实现高可用配置等问题。 为此,MySQL 8.0.30 版本引入了一个新…...
kubernetes-networkpolicies网络策略问题
kubernetes-networkpolicies网络策略问题 问题描述 重点重点重点,查看我的博客CKA考题,里面能找到解决方法 1.部署prometheus监控的时候,都部署成功,但是web访问503-504超时 2.添加ingress的时候也是访问不到,其他命…...
wps没保存关闭了恢复数据教程
有时候我们因为电脑问题会忘记保存就关闭wps导致数据丢失,不知道wps没保存关闭了怎么恢复数据,其实数据是无法恢复的。 wps没保存关闭了怎么恢复数据 1、wps没有数据恢复功能,不过可以开启自动备份。 2、我们可以先点击wps左上角的“文件”…...
Android9.0以后不允许HTTP访问的解决方案
背景 自 Android 9.0 起,默认禁止使用 HTTP 进行访问。当尝试使用 HTTP 链接时,将会收到以下错误信息: "Cleartext HTTP traffic to " host " not permitted"为了解决这一问题,下面介绍两种破解方法&…...
nvm安装以后,node -v npm 等命令提示不是内部或外部命令
因为有vue2和vue3项目多种,所以为了适应各类版本node,使用nvm管理多种node版本,但是当我按教程安装nvm以后,nvm安装以后,node -v npm 等命令提示不是内部或外部命令 首先nvm官网网址:https://github.com/coreybutler/…...
SBA架构5G核心网
SBA(Service Based Architecture)架构是一种面向服务的架构,旨在提供更灵活、更可扩展、更容易部署和管理的解决方案。在电信领域,SBA架构被广泛应用于5G核心网和下一代网络的设计中。 在卫星互联网核心网的总体技术要求中&#…...
上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照,特别是那种几百人、上千人的合照,应该就…...
关于对postcss安装和使用比较详细
PostCSS是一款强大的CSS工具,它可以自动解析CSS代码,应用一系列的插件,然后输出转换后的CSS。PostCSS本身是一个功能相对简单的工具,但它的强大之处在于其插件生态系统,这些插件提供了各种各样的功能,如自动…...
uniApp使用XR-Frame创建3D场景(4)金属度和粗糙度
上一篇讲解了如何在uniApp中创建xr-frame子组件并创建简单的3D场景。 这一篇我们讲解xr-frame中关于mesh网格材质的金属度和粗糙度的设置。 1.先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{…...
使用itext-core生成PDF
1、添加引用依赖包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency> 2、上代码 package com.student.demo.pdf;impor…...
接口自动化框架搭建(四):pytest的使用
1,使用说明 网上资料比较多,我这边就简单写下 1,目录结构 2,test_1.py创建两条测试用例 def test_1():print(test1)def test_2():print(test2)3,在pycharm中执行 4,执行结果: 2࿰…...
蓝桥杯算法基础(34)深度优先搜索DFS(数独游戏)(部分和)(水洼数目)(八皇后问题)(素数环)(困难的串)
深度优先搜索DFS Depth First Searchdfs:先把一条路走到黑 纵横bfs:所有路口看一遍 图 必须借助队列的数据结构无死角搜索数独游戏 你一定听说过数独游戏 如下图所示,玩家需要根据9*9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行…...
蓝桥杯备考随手记: Math 类中常用方法
Java的Math类是一个包含数学操作方法的实用工具类。它提供了许多用于执行各种数学计算的静态方法。 下面是Math类中一些常用的方法: abs():返回参数的绝对值。 int absoluteValue Math.abs(-10); System.out.println(absoluteValue); // Output: 10 c…...
外包干了4年,技术退步明显。。。。
说一下自己的情况,本科生,19年通过校招进入上海某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…...
亚远景科技-Hardware Engineering SPICE课程大纲
Hardware SPICE是intacs为电子硬件开发创建的PRM/PAM过程参考和评估模型,其符合ISO/IEC15504-2, Automotive SPICE 4.0, ISO 26262-1和5: 2018等标准。 无论您是想要深入了解硬件工程领域,还是希望成长为Provisional初级、Competent主任和Principal首席硬…...
JDK8的下载安装与环境变量配置教程
前言 官网下载:Java Archive Downloads - Java SE 8u211 and later 现在应该没人用32位的系统了吧,直接下载Windows x64 Installer jdk-8u391-windows-x64.exe 一、安装JDK 1. 打开jdk-8u391-windows-x64.exe 2. 直接下一步 3. 这个地方不要动他&…...
深入探讨分布式ID生成方案
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…...
花钱的艺术:消费和投资如何分配
消费是钱花出去就回不来了。 消费分为可选消费和必需消费。 必需消费是必须花的钱,用一句老话,财米油盐酱醋茶,维持生活必需的支出。 可选消费,用来提升生活水平的支出,可花可不花,比如苹果手机…...
git 代码库查看方法
在Git中,你可以使用多种命令来查看代码库(repository)的内容。以下是一些常用的命令: 查看所有分支: git branch这个命令会列出本地仓库中的所有分支。当前活动的分支前面会有一个星号(*)。 查…...
医院管理系统网站开发/成品网站1688入口网页版
正题第二题:[HNOI2003]操作系统我们看到了“优先级最高”这几个字,我们就想到了用堆来维护 bool operator<(const node y)const{if(ranky.rank) return begin>y.begin;return rank<y.rank; } 我们这样就可以来维护优先级高的在前面先做&#x…...
广东深广东深圳网站建设服务/手机打开国外网站app
点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复)下一篇:昨天分享资料不小心把百度网盘深处的秘密泄露了…...
wordpress get_the_tag_list/今日新闻快讯
一、 1、 2路CAN接口(MCP2515的1路,STM32F103C8T6自带的1路CAN),可以实现两路CAN的通信; 2、供电范围宽(7-28v),采用可插拔式4位数码管模块进行显示,数码管模块采用2线…...
成都手机号码销售网站建设/北京seo公司工作
原文地址:Go-翻过的一些面试题目 1、以下代码会输出什么?请简要说明。 var c make(chan int) var a intfunc f() {a 1<-c }func main() {go f()c <- 0print(a) } 能正确输出1,不过主协程会阻塞 f() 函数的执行。 2、以下代码会输…...
谷歌做英文网站/女教师遭网课入侵直播录屏曝光i
课程内容是完整的,只是目录收集和编号的有点乱,大家下载后的都是正常的,不用担心(28)\\02-跟着江哥狂虐H5跨平台开发系列-认识HTML-第一次更新\\视频;目录中文件数:9个├─(28) 07-HTML作用(掌握)-李南江.mp4├─(29) 08-HTML发展…...
php网站做代理服务器/网络优化培训骗局
本来是不太想动的...无可奈何,看到一句话【业精于勤, 荒于嬉】便还是动手写一写加深理解的同时给以后的自己留个备份吧...element-ui Tree组件如何给具有懒加载的tree设置半选效果?这也是让我很头疼的一个问题...因为数据不是一口气都请求回来的…...