【高级语言程序设计(一)】第 10 章:文件

news2024/10/7 3:19:20

目录

一、文件概述

(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)
【参数】
  1. filename 字符型指针,所指向的字符串是要打开的 “文件名” 
  2. mode 字符型指针,所指向的字符串是对打开文件规定的 “使用方式” 
  3. “使用方式” 是由 r、w、a、t、b 和 + 六个字符组成:
  • 如果使用方式中有 b 字符,则针对的是二进制文件
  • 如果使用方式中没有 b 字符,则针对的是文本文件
  • 如果使用 r 打开一个文件时,则该文件必须已经存在
【功能】按 mode 指定的 “使用方式” 打开 filename 指定的 “文件名” 对应的文件,同时自动地为该文件分配一个内存缓冲区。
【返回值】
  1. 若打开文件正确,则返回一个 “文件型” 指针,程序通过该指针获得文件信息,访问文件并进行各种操作。
  2. 若打开文件出错,则返回值为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 指向标准错误输出(通常为显示器):三种标准设备文件使用后,不必关闭,因为系统退出时将自动关闭。

① 文件的打开与关闭

文件操作用库函数实现包含在 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 :文件指针变量
【功能】把一字节代码  写入  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulnhub dc-7

1.信息搜集 端口 22,80 存活主机 192.168.85.134 2.访问网站进行信息搜集 发现提示信息&#xff0c;大体意思&#xff0c;有一个新概念&#xff0c;爆破可能失败&#xff0c;跳出框思考 cms&#xff1a;drupal 8.0 msf尝试利用失败 3.对网站进行渗透测试 尝试弱口令 失败 试出…

MapReduce实现KNN算法分类推测鸢尾花种类

文章目录 代码地址一、KNN算法简介二、KNN算法示例&#xff1a;推测鸢尾花种类三、MapReduceHadoop实现KNN鸢尾花分类&#xff1a;1. 实现环境2.pom.xml 3.设计思路及代码1. KNN_Driver类2. MyData类3. KNN_Mapper类 4. KNN_Reducer类 代码地址 https://gitcode.net/m0_567453…

企企管理云是什么应用?如何自动同步数据至企企管理云

企企管理云是什么应用&#xff1f; 企企管理云&#xff0c;是企企科技依托创始团队30年企业级管理软件实践与服务经验&#xff0c;坚持技术和产品立业&#xff0c;逐步构建的企业经营管理一站式服务平台。企企管理云围绕「现代服务业」的业财一体化&#xff0c;聚焦于项目管理…

Sui网络更新计划

Sui主网已经上线&#xff0c;接下来一段时间&#xff0c;我们计划将对Sui网络每两周进行一次迭代。待网络稳定后&#xff0c;我们将减缓迭代的频率。 为了网络稳定切换&#xff0c;每个版本都有其分支&#xff0c;大多数情况下是两个实时分支&#xff0c;一个用于当前的主网版…

如何在华为OD机试中获得满分?Java实现【任务混部】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 公司创新实验室正在研究…

如何清理harbor的磁盘空间

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 registry garbage-collectharbor自带的清理工具docker image prune -a…

Flume系列:Flume通道拓扑结构

目录 Apache Hadoop生态-目录汇总-持续更新 1: 基础架构 2&#xff1a;简单串联 3&#xff1a;复制(Replicating)和多路复用(Multiplexing) 4&#xff1a;负载均衡和故障转移 5&#xff1a;聚合 Apache Hadoop生态-目录汇总-持续更新 系统环境&#xff1a;centos7 Java环境…

字符串---第一部分 序列、字串;上升,公共

第一部分 最长上升子序列&#xff0c;最长上升子串&#xff0c;最长公共子序列&#xff0c;最长公共子串--dp 第二部分 KMP&#xff0c;trie&#xff0c;双指针 第三部分 待定 动态规划&#xff1a;审题&#xff0c;状态确定&#xff0c;状态转移&#xff0c;边界条件 线性…

Redis客户端介绍

Redis客户端 命令行客户端 redis安装完成后有自带的命令行客户端&#xff0c;即redis-cli&#xff0c;使用方式如下 redis-cli [options][commonds]options——参数 -h 127.0.0.1&#xff1a;指定要连接的redis节点的ip地址&#xff0c;默认值127.0.0.1-p 6379&#xff1a;指…

[中间件漏洞]nginx漏洞复现

目录 文件解析漏洞 原理分析 复现过程 防御方法 目录遍历漏洞 原理分析 复现过程 防御方法 空字节代码执行漏洞 复现过程 防御方法 整数溢出漏洞&#xff08;CVE-2017-7529&#xff09; 复现过程 防御方法 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09; 复现过程 防…

学习笔记 | 基于大模型的优质 Prompt 开发课

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 手把手带你构建高质量 Prompt&#xff0c;掌握以文心一言为代表的大模型对话技巧与高级用法&#xff0c;与大模型高效交流从而释放大模型强大的生成能…

震坤行平台商品详情页面数据

震坤行&#xff08; &#xff08;zkh.com&#xff09; 商品详情页面数据通常包括以下信息&#xff1a; 商品名称、型号、品牌、颜色、大小等基本属性商品主图和详细图集&#xff0c;包括多角度展示、细节展示等商品描述&#xff0c;包括功能介绍、使用方法、注意事项等商品价格…

如何在华为OD机试中获得满分?Java实现【简单的解压缩算法】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 现需要实现一种算法,能…

Python解析excel之Android多语言支持

最新车企给了一份多语言的翻译表&#xff0c;需要进行多语言支持&#xff0c;像下面这样 针对这种文件&#xff0c;我们肯定不能一个个字符串取拷贝&#xff0c;很容易出错&#xff0c;所以想用python取处理这个表格然后生成对应的string文件. 1.首先我们建立好string的文件夹…

手写简单的RPC框架(一)

一、RPC简介 1、什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用协议&#xff0c;一种通过网络从远程计算机上请求服务&#xff0c;而不需要了解底层网络技术的协议。RPC它假定某些协议的存在&#xff0c;例如TPC/UDP等&#xff0c;为通信程序之间携…

【P33】JMeter 临界部分控制器(Critical Section Controller)

文章目录 一、临界部分控制器&#xff08;Critical Section Controller&#xff09;参数说明二、测试计划设计 一、临界部分控制器&#xff08;Critical Section Controller&#xff09;参数说明 可以对指定代码块增加同步锁&#xff0c;确保此代码块由单线程执行&#xff1b;…

【C++】初入C++

认识C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object orient…

Gap业绩逆转,宝尊电商是如何当好“全球品牌数字商业伙伴”的?

电商永不眠。技术、消费趋势、供应链&#xff0c;任何一个因素都可以引起商业格局的巨变。一些看似普通的事件落到一个品牌身上&#xff0c;往往会带来改变命运的巨大变化。就像今年2月&#xff0c;宝尊官宣已完成对Gap大中华区的收购&#xff0c;到现在&#xff0c;Gap便已在宝…

探究javascript对象和数组的异同,及函数变量缓存技巧

javascript中最经典也最受非议的一句话就是&#xff1a;javascript中一切皆是对象。这篇重点要提到的&#xff0c;就是任何jser都不陌生的Object和Array。 有段时间曾经很诧异&#xff0c;到底两种数据类型用来存储数据有什么不同。于是&#xff0c;我打算探究探究。 一、掌握三…

9. python的if语句

文章目录 一、if结构1.1 比较符号1.1.1 使用比较两个数据是否相等&#xff1a;1.1.2 使用!号比较数据是否不相等1.1.3 使用<号比较数字大小关系1.1.4 使用<号比较数字大小关系1.1.5 使用>号比较数字大小关系1.1.6 使用>号比较数字大小关系 1.2 关键字1.2.1 and关键…