【高级语言程序设计(一)】第 10 章:文件
目录
一、文件概述
(1)文件定义
(2)文件命名
(3)文件分类
① 按照文件的内容划分
② 按照文件的组织形式划分
③ 按照文件的存储形式划分
④ 按照文件的存储介质划分
(4)文件存取方式
(5)文件系统
二、文件的打开和关闭函数
(1)文件打开函数
① 库函数 exit() 的具体说明
② 文件使用中各字符的含义
③ 文件的使用方式说明
(2)文件关闭函数
(3)标准设备文件的打开和关闭
① 文件的打开与关闭
② 文件的打开(fopen 函数)
③ 文件的关闭(fclose 函数)
三、文件的读/写函数
(1)文件尾测试函数
(2)写字符函数 fputc()
(3)读字符函数 fgetc()
① fputc 函数(putc 函数)
② fgetc 函数(getc 函数)
③ feof 函数
(4)写字符串函数 fputs()
(5)读字符串函数 fgets()
(6)写数据块函数 fwrite()
(7)读数据块函数 fread()
(8)格式化写函数 fprintf()
(9)格式化读函数 fscanf()
四、文件的定位函数
(1)文件指针复位函数
① rewind 函数
(2)文件随机定位函数
(3)文件随机定位函数
一、文件概述
C 语言将文件看做是由一个一个的字符(ASCII码文件)或字节(二进制文件)组成的,这种文件称为流式文件。
(1)文件定义
- 文件是存储在外部存储介质上的数据集合,这些数据的类型可以是整型、实型、字符型、字符串或结构体类型等。
- 目前,外部存储介质主要是磁盘,存储在磁盘上的文件称为“磁盘文件” 。
(2)文件命名
为了标识磁盘上的不同文件,每个磁盘文件都必须有一个文件名,其一般组成为:盘符:路径\文件主名[.扩展名]
- 其中,盘符表示文件所在的磁盘,可以是 A、B、C 和 D 等。
- 路径是由目录序列组成,目录之间的分隔符为 “\” ,需要注意的是,如果路径出现在字符串中,C 语言规定其中的符号 “\” 需要写成转义字符 “\\” 。
- 文件主名和扩展名均是由字母和数字等字符组成的。
C 语言中,常见的扩展名:
- c:C 源程序文件
- obj:C 源程序经过编译后生成的目标文件
- exe:目标文件经过链接后生成的可执行文件
- 一般地,数据文件的扩展名常用 dat ,文本文件的扩展名常用 txt
(3)文件分类
① 按照文件的内容划分
可分为程序文件和数据文件
- 程序文件:又可以分为源文件、目标文件和可执行文件
② 按照文件的组织形式划分
可分为顺序存取文件和随机存取文件
- 顺序存取文件:简称为 “顺序文件” ,数据写入文件的方式是后输入的数据放在以前输入数据的后面,按照数据的先后次序一个接一个地存放。
- 随机存取文件:简称为 “随机文件” ,每个数据在磁盘中所占用的长度都相同。
③ 按照文件的存储形式划分
可分为文本文件和二进制文件
- 文本文件:文本文件中数据转换为对应的ASCⅡ码来存放,每字节存储一个字符,因此便于对字符逐一进行处理。
- 二进制文件:二进制文件中数据按照其二进制形式来存放,即把内存中的数据,原样输出到磁盘文件中。
④ 按照文件的存储介质划分
可以分为普通文件和设备文件
- 普通文件:即存储介质文件(磁盘、磁带等)
- 设备文件:即非存储介质文件(键盘、 显示器和打印机等)
(4)文件存取方式
主要包括顺序存取和随机存取两种
- 顺序存取:是自上而下逐一地存取文件的内容。保存数据时,将数据附加到文件的尾部。顺序存取方式常用于文本文件,被存取的文件则称为顺序文件。
- 随机存取:是以一个完整的单位进行数据的读取和写入。随机存取方式常用于二进制文件,被存取的文件则称为随机文件。
(5)文件系统
C 语言使用的文件系统分为缓冲文件系统(标准I/O)和非缓冲文件系统(系统I/O):
- 缓冲文件系统:是指系统自动地为每个正在使用的文件在内存开辟一个缓冲区。从内存向磁盘输出数据时,必须首先输出到缓冲区。待缓冲区装满后,再一起输出到磁盘文件。从磁盘文件文件向内存读入数据时,恰好相反,即首先将一批数据读入到缓冲区,再从缓冲区将数据逐一送到程序数据区。
- 非缓冲文件系统:是指用户在程序中为每个文件设定缓冲区。
![]()
二、文件的打开和关闭函数
(1)文件打开函数
【函数首部】 FILE *fopen(char *filename, char *mode)【参数】
- filename 字符型指针,所指向的字符串是要打开的 “文件名”
- mode 字符型指针,所指向的字符串是对打开文件规定的 “使用方式”
- “使用方式” 是由 r、w、a、t、b 和 + 六个字符组成:
- 如果使用方式中有 b 字符,则针对的是二进制文件
- 如果使用方式中没有 b 字符,则针对的是文本文件
- 如果使用 r 打开一个文件时,则该文件必须已经存在
【功能】按 mode 指定的 “使用方式” 打开 filename 指定的 “文件名” 对应的文件,同时自动地为该文件分配一个内存缓冲区。【返回值】
- 若打开文件正确,则返回一个 “文件型” 指针,程序通过该指针获得文件信息,访问文件并进行各种操作。
- 若打开文件出错,则返回值为NULL,其中 NULL 是在头文件 stdio.h 中定义的符号常量,其值为 0 ,含义是 “空” 。
① 库函数 exit() 的具体说明
【函数首部】 void exit([程序状态值])【功能】关闭已经打开的所有文件,结束程序运行返回操作系统,并将 “程序状态值” 返回给操作系统
- 当 “程序状态值” 为 0 时,表示程序正常退出
- 当 “程序状态值” 为非 0 时,表示程序出错退出
② 文件使用中各字符的含义
| 字符 | 含义 |
|---|---|
| r (read) | 读 |
| w (write) | 写 |
| a (append) | 追加 |
| t (text) | 文本文件(可省略不写) |
| b (binary) | 二进制文件 |
| + | 读和写 |
③ 文件的使用方式说明
| 文本类型 | 字符 | 使用方式 | 说明 |
| 文本文件 | "r" | 只读 | 以只读方式打开一个已经存在的文本文件,只允许读取数据,不允许写入数据 |
| "r+" | 读/写 | 以读/写方式打开一个已经存在的文本文件,允许读取和写入数据 | |
| "w" | 只写 | 以只写方式打开一个文本文件,只允许写入数据,不允许读取数据: ① 若文件已经存在,则删去原文件的所有内容,然后写入数据 ② 若文件不存在,则自动创建一个新文件后写入数据 | |
| "w+" | 读/写 | 以读/写方式打开一个文本文件,允许读取和写入数据: ① 若文件已经存在,则删去原文件的所有内容,然后写入数据 ② 若文件不存在,则自动创建一个新文件后写入数据 | |
| "a" | 追加 | 以追加的方式打开一个已经存在的文本文件,只允许写入数据并追加到原文件尾 | |
| "a+" | 读/写 | 以读/写方式打开一个文本文件,允许读取数据,也允许写入数据到文件尾: 若文件不存在,则自动创建一个新文件 | |
| 二进制文件 | "rb" | 只读 | 以只读方式打开一个已经存在的二进制文件,只允许读取数据,不允许写入数据 |
| "rb+" | 读/写 | 以读/写方式打开一个已经存在的二进制文件,允许读取和写入数据 | |
| "wb" | 只写 | 以只写方式打开一个二进制文件,只允许写入数据,不允许读取数据: ① 若文件已经存在,则删去原文件的所有内容,然后写入数据 ② 若文件不存在,则自动创建一个新文件后写入数据 | |
| "wb+" | 读/写 | 以读/写方式打开一个二进制文件,允许读取和写入数据: ① 若文件已经存在,则删去原文件的所有内容,然后写入数据 ② 若文件不存在,则自动创建一个新文件后写入数据 | |
| "ab" | 追加 | 以追加的方式打开一个已经存在的二进制文件,只允许写入数据并追加到原文件尾 | |
| "ab+" | 读/写 | 以读/写方式打开一个二进制文件,允许读取数据,也允许写入数据到文件尾: 若文件不存在,则自动创建一个新文件 |
(2)文件关闭函数
【函数首部】 int fclose(FILE *fp)【参数】fp 文件型指针,通过函数 fopen() 获得,且指向一个已经打开的文件【功能】关闭 fp 所指向的文件,同时自动释放分配给该文件的内存缓冲区【返回值】若正确关闭指定的文件,则返回 0 ;否则返回非 0
(3)标准设备文件的打开和关闭
程序开始运行时,系统自动打开三种标准设备文件,并分别定义了相应的文件型指针, 其中:
- stdin 指向标准输入(通常为键盘):如果程序指定要从 stdin 所指向的文件输入数据,即从键盘输入数据。
- stdout 指向标准输出(通常为显示器):如果程序指定要向 stdout 所指向的文件输出数据,即向显示器输出数据。
- stderr 指向标准错误输出(通常为显示器):三种标准设备文件使用后,不必关闭,因为系统退出时将自动关闭。
① 文件的打开与关闭
C 文件操作用库函数实现,包含在 stdio.h
文件使用方式 : 打开文件 → 文件读 / 写 → 关闭文件
系统 自动 打开和关闭三个 标准文件 :
- 标准输入 ------------- 键盘 stdin
- 标准输出 ------------- 显示器 stdout
- 标准出错输出 ------- 显示器 stderr
② 文件的打开(fopen 函数)
【函数原型】 FILE * fopen (char * name , char * mode )【调用方式】fopen(" 文件名 " , " 使用文件方式 ")【示例】FILE *fp; fp=fopen("d:\\user\\myfile.txt", "r");【返回值】正常打开,返回指向文件结构体的指针;打开失败,返回 NULL
FILE *fp; fp=fopen("aa.c", "w"); if(fp==NULL) {printf("File open error!\n");exit(0); /* 关闭所有文件终止调用 */ }【注意】
- r:读方式
- w:写方式
- a:追加方式
- rb / wb / ab:二进制方式
- +:既可读又可写
| 字符 | 处理方式 | 指定文件不存在 | 文件存在 |
| r | 只读 | 出错 | 正常 |
| w | 只写 | 建立新文件 | 原内容丢失 |
| a | 追加 | 建立新文件 | 在原内容后追加 |
| r+/w+ | 读写 | 出错 | 正常 |
③ 文件的关闭(fclose 函数)
【作用】 使文件指针变量与文件 “脱钩” ,释放文件结构体和文件指针FILE *fp; fp=fopen("a.txt", "r"); fclose(fp);【返回值】用于表示文件是否被正确地关闭,如果文件顺利关闭,该值为0,否则为 -1(EOF)
- 返回值可以用 ferror 函数测试
三、文件的读/写函数
(1)文件尾测试函数
- 文件执行读操作时,通常使用 feof() 函数来判断是否到达文件尾
- 如果遇到文件尾,则不能继续读取数据
【函数首部】 int feof(FILE *fp)【参数】fp 文件型指针,通过 fopen() 函数获得,指向一个已经打开的文件【功能】判断 fp 所指向的文件是否到达文件尾【返回值】若遇到文件尾,则返回值是非 0 ;否则,返回值是 0
- feof() 函数同时适用于文本文件和二进制文件
- 对二进制文件执行读操作时,必须使用 feof() 函数来判断是否到达文件尾
- 对文本文件执行读操作时,如果遇到文件尾,则返回一个文件结束标志EOF(EOF 是一个符号常量,其值在头文件 stdio.h 中被定义为 -1,含义是 “文件尾”)
(2)写字符函数 fputc()
【函数首部】int fputc(char ch, FILE *fp)【参数】
- ch 写到文件中的字符,既可以是字符常量,也可以是字符变量或字符表达式
- fp 文件型指针,通过函数 fopen() 获得,且指向一个已经打开的文件
【功能】将 ch 中的字符写到 fp 所指向文件的当前位置,同时将读/写位置指针后移 1 字节,即指向下一个读/写位置【返回值】若正确写入字符,则返回刚写入到文件的字符;否则,返回 EOF
- 本函数主要用于文本文件,也可以用于二进制文件
- 对于文本文件,写入的是单个字符
- 对于二进制文件,写入的是 1 字节数据。当正确地写入一个字符或 1 字节数据后,文件内部的读/写位置指针会后移 1 字节,即指向下一个读/写位置
(3)读字符函数 fgetc()
【函数首部】 int fgetc(FILE *fp)【参数】fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件【功能】从 fp 所指向文件的当前位置读取一个字符,同时将读/写位置指针后移 1 字节,即指向下一个读/写位置【返回值】若正确读取字符,则返回读取的单个字符;否则,返回 EOF
文件的读写: 文件打开之后,就可以对它进行读与写的操作了读/写文件中的 一个字符 :
- fputc 函数(putc 函数)
- fgetc 函数(getc 函数)
- feof 函数
① fputc 函数(putc 函数)
【函数原型】 int fputc(int c, FILE *fp)
- c :字符常量或变量
- *fb :文件指针变量
【功能】把一字节代码 c 写入 fp 指向的文件中【返值】 正常,返回 c ; 出错,为 EOF ( -1 )
② fgetc 函数(getc 函数)
【函数原型】 int fgetc(FILE *fp)
- *fb :文件指针变量
【功能】从 fp 指向的文件中读取一字节代码【返值】 返回读到的代码值 ; 读到文件尾或出错为 EOF ( -1 )
③ feof 函数
【函数原型】 feof(fp)【功能】 对于二进制文件读取时判断文件是否结束【返值】结束 -1 ;反之 0
/* 示例:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个 “#” 为止 */
#include <stdio.h>
#include <stdlid.h>
void main()
{FILE *fp;char ch , filename[10];scanf("%s", filename);if((fp=fopen(filename, "w"))==NULL){ printf("cannot open file\n");exit(0); } /* 终止程序 */ch=getchar(); /* 接收执行scanf时最后输入的回车符 */ch=getchar(); /* 第一个输入的字符被赋给变量ch */while(ch!='#'){ fputc(ch, fp); /* 字符被写入filename表示的文件中 */putchar(ch); /* 字符被输出到显示器 */ch=getchar();}putchar(10); /* 向屏幕输出一个换行符 */fclose(fp);
} /* 关闭文件 */
(4)写字符串函数 fputs()
【函数首部】 int fputs(char *str, FILE *fp)【参数】
- str 字符型指针,可以是一个字符常量,或字符数组名,或字符指针变量名
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】
- 把 str 所指向的一个字符串,舍去字符串结束标志符 ‘\0’ 后写入 fp 所指向文件的当前位置
- 同时将读/写位置指针向后移动 strlen(字符串长度)字节
【返回值】若正确写入字符串,则返回写入文件的实际字符数;否则,返回 EOF
(5)读字符串函数 fgets()
【函数首部】 char *fgets(char *str, int length, FILE *fp)【参数】
- str 字符型指针,可以是一个字符数组名,或字符指针变量名
- length 整型,可以是整型常量、变量或表达式
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
【功能】
- 从 fp 所指向文件的当前位置读入一个字符串,即读取 length-1 个字符,并在尾部自动补充一个字符串结束标志符 ‘\0’ ,组成字符串后存入 str 所指定的内存区;同时,将读/写位置指针后移实际读出的字符个数字节。
- 如果在读取前 n-1 个字符中遇到文件尾 EOF 或回车,则读取结束,并在读取的字符后面补充一个字符串结束标志符 ‘\0’ 组成字符串。
【返回值】若正确读取字符串,则返回 str 对应的地址;否则,返回 NULL
/* 示例:从键盘读入字符串存入文件,再从文件读回显示 */
#include<stdio.h>
void main()
{FILE *fp;char string[81];if((fp=fopen("file.txt", "w"))==NULL){ printf("cann't open file"); exit(0); }while(strlen(gets(string))>0){ fputs(string, fp);fputs("\n", fp); }fclose(fp);if((fp=fopen("file.txt", "r"))==NULL){ printf("cann't open file"); exit(0); }while(fgets(string, 81, fp)!=NULL)fputs(string, stdout);fclose(fp);
}
(6)写数据块函数 fwrite()
【函数首部】 int fwrite(void *buffer, int size, int count, FILE *fp)【参数】
- buffer 字符型指针,存放写入文件数据类型的起始地址,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量。
- size 无符号整数,可以是整型常量、变量或表达式,表示从文件写入文件的每个数据所占用的字节数,通常使用表达式 sizeof(数据类型符)。
- count 无符号整数,可以是整型常量、变量或表达式,表示要写入文件的数据的个数。
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可写文件。
【功能】
- 将从 buffer 开始的 count 个数据(每个数据占用 size 字节)一次性写入 fp 所指向的文件
- 同时,将读/写位置指针后移 size*count 字节
【返回值】若正确写入数据块,则返回值是 count;否则,返回值是 0
(7)读数据块函数 fread()
【函数首部】 int fread(void *buffer, int size, int count, FILE *fp)【参数】
- buffer 字符型指针,存放从文件中读取数据的起始地址,可以是存放数据的变量地址或数组首地址,也可以是指向某个变量或数组的指针变量
- size 无符号整数,可以是整型常量、变量或表达式,表示从文件读取的每个数据所占用的字节数,通常使用表达式 sizeof(数据类型符)
- count 无符号整数,可以是整型常量、变量或表达式,表示从文件中读取数据的个数
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可读文件
【功能】
- 从 fp 所指向文件的当前位置开始,一次性读入 count 个数据(每个数据占用 size 字节),并将读入的数据存放到以 buffer 为首地址的内存区
- 同时,将读/写位置指针后移 size*count字节
【返回值】若正确读取数据块,则返回值是 count;否则,返回值是 0【注意】用 fread() 和 fwrite() 函数进行数据读/写时,必须采用二进制
(8)格式化写函数 fprintf()
【函数首部】int fprintf(FILE *fp, char *format[, argument…])【参数】
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可写文件
- format 格式字符串
- argument 输出列表
【功能】将 argument 的值以 format 指定的格式写入 fp 所指向的文件【返回值】若正确写入数据,则返回实际输出字符的个数;否则,返回值是负数
(9)格式化读函数 fscanf()
【函数首部】 int fscanf(FILE *fp, char *format[, argument…])【参数】
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的可读文件
- format 格式字符串
- argument 输入列表
【功能】根据 format 指定的格式从 fp 所指向文件中读取数据保存至 argument 所指向的内存单元【返回值】若正确读入数据,则返回值是已读入的数据个数;否则,返回值是 EOF
四、文件的定位函数
(1)文件指针复位函数
【函数首部】 int rewind(FILE *fp)【参数】fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件【功能】将 fp 所指向文件的位置指针 重置到文件头 ,即把文件的位置指针重新定位到 fp 所指向文件的起始位置【返回值】 若执行正常,返回值是 0 ;否则,返回值是非 0
① rewind 函数
【函数原型】 void rewind(FILE *fp)【功能】重置文件位置指针到文件开头【返回值】 无
/* 示例:对一个磁盘文件进行显示和复制两次操作 */
#include <stdio.h>
void main()
{FILE *fp1,*fp2;fp1=fopen("c:\\c\\user\\ch4.c", "r");fp2=fopen("d:\\c\\user\\ch41.c", "w");while(!feof(fp1)) putchar(fgetc(fp1));rewind(fp1);while(!feof(fp1)) putc(fgetc(fp1), fp2);fclose(fp1); fclose(fp2);
}
(2)文件随机定位函数
文件随机定位函数:文件随机定位函数 fseek() 可以将文件的位置指针移动到文件中的任何一个地方,一般用于二进制。
【函数首部】 int fseek(FILE *fp, long offset, int origin)【参数】
- fp 文件型指针,通过函数 fopen() 获得,指向一个已经打开的文件
- offset 长整型数据,表示位移量,是从 origin 为起始位置,向后(当位移量>0时)或向前(当位移量<0时)移动的字节数
- origin 表示起始位置
(3)文件随机定位函数
【功能】将 fp 所指向文件的位置指针从 origin 指定的起始位置移动 offset 所指定的字节数,改变文件位置指针的位置,即指向新的位置。【返回值】若定位成功,则返回值是 0;否则,返回值是非 0

相关文章:
【高级语言程序设计(一)】第 10 章:文件
目录 一、文件概述 (1)文件定义 (2)文件命名 (3)文件分类 ① 按照文件的内容划分 ② 按照文件的组织形式划分 ③ 按照文件的存储形式划分 ④ 按照文件的存储介质划分 (4)文…...
Android 宿主启动插件中的Activity和Service
在宿主App中加载插件App中的四大组件,需要以下几个步骤: 1. 预先在宿主的AndroidManifest文件中声明插件中的四大组件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.co…...
00后卷王自述,我真的很卷吗?
前段时间我去面试了一个软件测试公司,成功拿到了offer,薪资也从10k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟有些工作了3到4年的可能还没有我的高。 在公司一段时间后大家都说我是卷王,其…...
真题详解(树的结点)-软件设计(八十四)
真题详解(汇总)-软件设计(八十三)https://blog.csdn.net/ke1ying/article/details/130856130?spm1001.2014.3001.5501 COCOMOII估算不包括_____。 对象点 B.功能点 C.用例数 D.源代码行 答案:C 语法翻译是一种ÿ…...
LDA算法实现鸢尾花数据集降维
目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍 唐杰,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件ÿ…...
深入理解Linux虚拟内存管理
系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三…...
自动化测试框架、Python面向对象以及POM设计模型简介
目录 1 自动化测试框架概述 2 自动化测试框架需要的环境 3 自动化测试框架设计思想:Python面向对象 4 自动化测试框架设计思想:POM(Page Object Model)页面对象模型 1 自动化测试框架概述 所谓的框架其实就是一个解决问题…...
【CSSpart4--盒子模型】
CSSpart4--盒子模型 网页布局的三大核心:盒子模型,浮动,定位网页布局的过程(本质):盒子模型的组成四部分:边框,内容,内边距,外边距 一 、盒子边框border:1.1 …...
Linux - Java 8 入门安装与重装教程集锦
一、入门初始安装 1. 具体安装教程 1. linux 系统中如何安装java环境(通过tar.gz文件) 安装包下载链接 Java 的 tar.gz 安装包下载链接传送门 Linux 系统的 Java 环境变量配置教程 1. linux查看java版本,以及配置java home 2. Linux环…...
2023年最新企业网盘排行榜出炉
随着云计算技术的不断发展,企业日常工作中大量的资料、文档等信息需要实现集中管理,此时企业网盘工具就应运而生。企业网盘是一种可用于企业内部管理、团队协作及文件共享的云存储平台,能够极大提高企业办公效率和安全性。 一、企业网盘的帮助…...
C++内存分类
内存分配方式(内存布局): 内存5分类 堆、栈、自由存储区、全局/静态存储区、常量存储区 (1)栈:内存由编译器在需要时自动分配和释放。通常用来存储局部变量和函数参数,函数调用后返回的地址。(为运行函数而…...
不是说00后已经躺平了吗,怎么还是这么卷.....
都说00后已经躺平了,但是有一说一,该卷的还是卷。 前段时间我们部门就来了个00后,工作都还没两年,跳到我们公司起薪20K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。最近和…...
国内免费版ChatGPT
目录 前言:网站大全 1. ChatGPT是什么 2. ChatGPT的发展历程 3. ChatGPT对程序员的影响 4. ChatGPT对普通人的影响 5. ChatGPT的不足之处 前言:网站大全 AI文本工具站 (laicj.cn) ——gpt-3.5 功能强大(推荐) Chatgpt在线网页版-…...
常用本地事务和分布式事务解决方案模型
目录 1 DTP模型2 2PC2.1 方案简介2.2 处理流程2.2.1 阶段1:准备阶段2.2.2 阶段2:提交阶段 2.3 方案总结 3 3PC3.1 方案简介3.2 处理流程3.2.1 阶段1:canCommit3.2.2 阶段2:preCommit3.3.3 阶段3:do Commit 3.3 方案总结…...
无代码玩转GIS应用,我也在行【文末送书】
您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…...
xlsx是什么格式
xlsx是什么格式? xlsx是Excel文档的扩展名,其基于Office Open XML标准的压缩文件格式,取代了其以前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x,即.xlsx取代.xls。 xlsx文件是什么格式? xlsx是Excel表格的文件格…...
将 Maven 配置为使用阿里云镜像
将 Maven 配置为使用阿里云镜像的步骤如下: 打开 Maven 的 settings.xml 文件:在 Maven 安装目录下的 conf 文件夹中,找到 settings.xml 文件,并打开它。 添加镜像配置:在 settings.xml 文件中,找到 <m…...
行业报告 | 2022文化科技十大前沿应用趋势(下)
原创 | 文 BFT机器人 04 商业创新 趋势7:区块链技术连接传统文化,数字藏品市场在探索中发展 核心内容: 2022年,数字藏品在区块链技术的助力下应运而生。狭义的数字藏品是指使用区块链技术、基于特定的文化资源所生成唯一的数字凭…...
ASEMI代理韩景元可控硅C106M参数,C106M封装,C106M尺寸
编辑-Z 韩景元可控硅C106M参数: 型号:C106M 断态重复峰值电压VDRM:600V 通态电流IT(RMS):4A 通态浪涌电流ITSM:30A 平均栅极功耗PG(AV):0.2W 峰值门功率耗散PGM:1W 工作接点温度Tj&…...
ChatGPT资料汇总学习
🧠 Awesome-ChatGPT ChatGPT资料汇总学习,持续更新… ChatGPT再一次掀起了AI的热潮,是否还会像BERT一样成为AI进程上的里程碑事件,还是噱头炒作,持续关注,让时间流淌~ ChatGPT免费体验入口网址 http://c…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

