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

C语言下的文件详解

主要内容

  1. 文件概述
  2. 文件指针
  3. 文件的打开与关闭
  4. 文件的读写

文件

       把输入和输出的数据以文件的形式保存在计算机的外存储器上,可以确保数据能随时使用,避免反复输入和读取数据 

文件概述

  1. 文件是指一组相关数据的有序集合
  2. 文件是存储数据的基本单位,可以通过读取文件访问数据。

分类

可以按照不同角度对文件进行分类:
按存储介质不同,可以分为磁盘文件、磁带文件、打印文件等
按存储内容不同,可以分为程序文件和数据文件
按访问方式不同,可以分为顺序文件、随机文件和二进制文件
按用户不同,可以分为普通文件和设备文件

C语言文件分类

在C语言中,把文件看作是一个字符的序列
根据数据的组织形式可以分为 ASCII 文件和二进制文件 :
1 ASCII文件也称为文本文件 ,在磁盘中存放时每个字符对应一个字节,用于存放对应 ASCII
2 )二进制文件是按二进制的编码方式存放文件,将内存中的数据按照其在内存中的存储形式原样输出到磁盘中存放。 
短整数 968 00000011 11001000B ):
如果按 ASCII 码的形式输出则占 3 个字节(每个字符占 1 个字节)
而按二进制形式输出,则在磁盘上占 2 个字节

 

C 语言版本不同,对文件的处理方式也各有不同,主要有两种方法:
一种是“缓冲文件系统”
一种是“非缓冲文件系统”

缓冲文件系统

•缓冲文件系统会自动在内存中为每一个正在使用的文件分配一个缓冲区
在写文件时,先将数据放入缓冲区,当缓冲区存满数据后才将缓冲区中的数据写入文件。
在读文件时,先一次将一部分数据读入缓冲区,当缓冲区存满数据后才将数据送到程序数据区。
缓冲区大小由 C 语言的版本确定,一般为 512 字节 

非缓冲文件系统

非缓冲文件系统就是系统不会在内存中为文件分配缓冲区,所有的文件操作是直接跟文件打交道,这会导致系统整体效率下降

文件输入输出函数

ANSI C 规定了标准的输入输出函数用于文件读写,它们的声明在 stdio.h 文件中

文件指针

在缓冲文件系统中,每个文件都在内存中分配一个缓冲区,用来存放文件信息
信息被存放在一个结构体中,该结构体由系统定义,命名为FILE
typedef struct
{    int level;                    //缓冲区“满”或“空”的标志unsigned flags;            //文件状态标志char fd;                    //文件描述unsigned char hold;            //如果没有缓冲区则不读取字符int bsize;                    //缓冲区大小unsigned char _FAR *buffer; //缓冲区位置unsigned char _FAR *curp;    //指向缓冲区当前数据的指针unsigned istemp;            //临时文件指示器short token;                //用于有效性检查
}FILE;
文件指针变量是一个文件结构体类型的指针变量。 定义文件类型指针变量的一般形式为
FILE * 指针变量名 ;
File *fp;
// fp是一个指向FILE结构体类型的指针变量

文件的打开与关闭

C 语言中文件操作一般包括三个步骤:
1 )用 fopen 函数打开文件
2 )进行读写操作
3 )用 fclose 函数关闭文件

fopen函数

fopen 函数用于打开文件,并把结果赋给 FILE 指针变量,它的一般形式为:
  fopen(文件名,文件打开方式);
“文件名”是要打开的文件名,可以是完整的文件路径

FILE *fp;

             //fp是一个指向FILE结构体类型的指针变量

fp = fopen("file_data.txt","r");

            //以只读方式打开文件file_data.txt

文件打开方式”是打开文件的访问方式

fopen函数,会由于无法打开指定文件而出现错误。

如果出错,fopen函数会返回一个空指针值NULLNULLstdio.h中被定义为0)。

       例如以“r”方式打开时,文件不存在,要进行错误处理。

FILE *fp;

if( (fp = fopen("file_data.txt","r") ) == NULL )

printf("can not open the file\n");

  exit(0);

}

 fclose函数

在操作完一个文件后要关闭文件指针,以释放缓冲区内存,防止其他误操作
关闭文件就是使文件指针变量不再指向该文件
fclose 函数的一般形式为:
fclose (文件类型指针);
fclose(fp);

文件的读写

fputc函数

fputc 函数的作用是将一个字符写入指定文件中
它的一般形式为:
fputc (字符型数据,文件指针);

13.1】从键盘输入文本,并将文本写入磁盘上存储的文本文件file_data.txt中。以字符#作为输入结束标志。

分析:

首先打开文件,然后从键盘循环输入字符,如果字符不是结束标志“#”,那么将字符写入文件,否则关闭文件

#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;char ch;if( (fp = fopen("file_data.txt","w")) == NULL )  //打开文件{    printf("can not open the file\n");exit(0);  //退出程序,必须包含<stdlib.h>头文件}ch = getchar();while(ch != '#' ){    fputc(ch,fp);  //输出字符ch = getchar();}fclose(fp);  //关闭文件
}

 fgetc函数

fgetc 函数的作用是从指定的文件中读入一个字符,并作为函数的返回值返回,如果读到文件结束符时,则返回一个文件结束标志 EOF (值为 -1 )。
fgetc 函数的一般形式为:
•  fgetc (文件指针);

13.2】读取文本文件file_data.txt,并将文件中的内容输出到屏幕上。

分析:

首先打开文件,然后反复从文件中读入一个字符,并输出到屏幕,直到文件的结尾,最后关闭文件。

#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;char ch;if( (fp = fopen("file_data.txt","r")) == NULL )  //打开文件{    printf("can not open the file\n");exit(0); //退出程序}ch = fgetc(fp);  //从文件中读入一个字符while(ch != EOF ){    putchar(ch);ch = fgetc(fp);  //从文件中读入一个字符}fclose(fp);  //关闭文件
}

fputs函数

fputs 函数的作用是将字符串写入指定文件中
它的一般形式为:
•  fputs (字符串数据,文件指针);
字符串数据可以是字符串常量或者字符数组名,写入时字符串最后的‘ \0’ 并不一起写入,也不自动添加回车符。
如果写入成功,则函数返回值为 0 ,否则返回值为 EOF

13.3】从键盘输入一串字符串,并将字符串写入文本文件file_data.txt中。

解决该问题的主要步骤为:

1)打开文本文件file_data.txt

2)从键盘输入一串字符串。

3)将字符串写入文件中。

5)关闭文件。

6)结束程序。

#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;char str[20];if( (fp = fopen("file_data.txt","w")) == NULL ){    printf("can not open the file\n");exit(0);}printf("input the string: ");gets(str);fputs(str,fp);  //写入字符串fclose(fp);
}

fgets函数

fgets 函数的作用是从指定文件中读入指定长度的字符串
它的一般形式为:
•  fgets (字符数组名, n ,文件指针);
指定的长度由整型数据 n 决定。
从文件中读入 n-1 个字符,然后在最后添加一个‘ \0’ 字符作为字符串结束的标志。
如果在读完 n-1 个字符之前遇到一个换行符或一个 EOF ,则读入结束。
最多只能读入 n-1 个字符,读入的字符被放入参数的字符数组中,读入结束后,将字符数组的首地址作为函数返回值

13.4】读取文本文件file_data.txt中指定长度的文本,长度由键盘输入,并将读取的内容输出到屏幕上。

解决该问题的主要步骤为:

1)打开文本文件file_data.txt

2)从键盘输入要读取的文本长度。

3)读入数据。

4)输出数据。

5)关闭文件。

6)结束程序。

#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;char str[20];int n;if( (fp = fopen("file_data.txt","r")) == NULL ){    printf("can not open the file\n");exit(0);}printf("input the character's number: ");scanf("%d",&n);fgets(str,n+1,fp);printf("%s\n",str);fclose(fp);
}

fprintf函数

fprintf 函数将数据按指定格式写入指定文件中,与 printf 函数的作用相似。
它的一般形式为:
  fprintf (文件指针,格式字符串,输出表列);
【例13.5】将指定数据写入文本文件file_data.txt中。
编写程序如下:
#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;int i=10,j=12;  double m=1.5,n=2.345;  char s[]="this is a string";  char c='\n';  if( (fp = fopen("file_data.txt","w")) == NULL ){    printf("can not open the file\n");exit(0);}fprintf(fp,"%s%c",s,c);  fprintf(fp,"%d %d\n",i,j);  fprintf(fp,"%lf %lf\n",m,n);  fclose(fp); 
}

文件中保存的文本与程序中的数据一致,且格式与指定格式相同

【例13.6】按照每行5个数,将Fibonacci数列的前40个数写入file_data.txt文件中。
编写程序如下:
#include<stdio.h>
#include<stdlib.h>
void main()
{    FILE *fp;int f[40];int i;if( (fp = fopen("file_data.txt","w")) == NULL ){    printf("can not open the file\n");exit(0);}for (i=0;i<=39;i++)  //求Fibonacci数列{    if (i==0||i==1) f[i]=1;elsef[i]=f[i-2]+f[i-1];}for (i=0;i<=39;i++)  //写入文件{    if ((i+1)%5==0)fprintf(fp,"%10d\n",f[i]);    elsefprintf(fp,"%10d",f[i]);    }fclose(fp); 
}

 fscanf函数

fscanf 函数从指定文件中按指定格式读入数据,与 scanf 函数作用相似。 scanf 是从键盘输入,而 fscanf 是从文件读入。
fscanf 函数的一般形式为:
fscanf 文件指针,格式字符串,输入表列 );

13.7】以指定格式读取13.5】中生成的文件file_data.txt中的数据,并输出到屏幕上

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp;int i,j; double m,n; char s1[100],s2[100],s3[100],s4[100]; if( (fp = fopen("file_data.txt","r")) == NULL ){    printf("can not open the file\n");exit(0);}fscanf(fp,"%s%s%s%s",s1,s2,s3,s4); //读入四个单词fscanf(fp,"%d%d",&i,&j);//读入两个整型数据 fscanf(fp,"%lf%lf",&m,&n); //读入两个double类型数据printf("%s %s %s %s\n",s1,s2,s3,s4); printf("%d %d\n",i,j); printf("%lf %lf\n",m,n);fclose(fp);}

fwrite函数

fwrite 函数的作用是将指定长度的数据写入指定文件中。它的一般形式为:
  fwrite buffer size count 文件指针 );
buffer 是数据块的指针,一个写入数据的内存地址
size 是每个数据块的字节数
count 是要写入多少个 size 字节的数据块
fwrite 函数主要用于写入二进制文件,因此在打开文件的时候需要以“ wb” 方式打开
struct Book_Type
{   char name[10];//书名int price;//价格char author[10];//作者名
};
如果要将书的信息写入到磁盘中,如下代码实现:
for(i=0;i<2;i++)
{fwrite(&book[i],sizeof(struct Book_Type),1,fp);
}

13.8】通过键盘输入所有2本书的信息,并存储在文本文件file_data.txt中。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    struct Book_Type{     char name[10];//书名int price;//价格char author[10];//作者名};FILE *fp;struct Book_Type book[2];int i;if( (fp = fopen("file_data.txt","wb")) == NULL ){    printf("can not open the file\n");exit(0);}printf("input the book info: \n");for(i=0;i<2;i++){    scanf("%s%d%s",book[i].name,&book[i].price,book[i].author);   fwrite(&book[i],sizeof(struct Book_Type),1,fp);   //读入一条记录}fclose(fp);}

因为是以二进制方式保存,所以记事本中的内容显示为乱码。

fread函数

fread 函数的作用是从指定文件中读入指定长度的数据块。它的一般形式为:
  fread buffer size count 文件指针 );
buffer 是数据块的指针,一个读入数据的内存地址
size 是每个数据块的字节数
count 是要读入多少个 size 字节的数据块。
fread 函数主要用于读取二进制文件,因此在打开文件的时候需要以“ rb” 方式打开。
例如:
fread(data,2,3,fp);
data 是一个整型数组名,一个整型数据占用 2 个字节的内存空间
此函数调用的功能是从 fp 所指向的文件中读入 3 次(每次 2 个字节)数据,并存储到整型数组 data

13.9】13.8】中已经存有book信息的文件打开,读出信息后显示在屏幕上。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    struct Book_Type{     char name[10];//书名int price;//价格char author[10];//作者名};FILE *fp;struct Book_Type book[2];int i;if( (fp = fopen("file_data.txt","rb")) == NULL ){    printf("can not open the file\n");exit(0);}printf("the book info: \n");   for(i=0;i<2;i++)fread(&book[i],sizeof(struct Book_Type),1,fp);for(i=0;i<2;i++)printf("name=%s,price=%d,author=%s\n",book[i].name,book[i].price,book[i].author);fclose(fp);}

rewind函数

rewind 函数的作用是使位置指针重新返回指定文件的开头。
它的一般形式为:
  rewind (文件指针);
此函数没有返回值。
在文件操作中会移动文件的位置指针,可以使用 rewind 函数将位置指针回到文件头部。

13.10】将指定字符串数据写入文本文件file_data.txt中,并将文件的位置指针重新定位到文件开头,读出文件中的第1个字符数据后显示在屏幕上。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp; char s[]="abcdefghijklmnopqrstuvwxyz";char c;if( (fp = fopen("file_data.txt","w+")) == NULL ){        printf("can not open the file\n");exit(0);}fprintf(fp,"%s",s);  //向文件中写入字符串rewind(fp);  //指针返回开始fscanf(fp,"%c",&c); //读入一个字符printf("The first character is: %c\n",c);fclose(fp);}

 fseek函数

fseek 函数的作用是将文件的位置指针移到指定位置
它的一般形式为:
  fseek( 文件指针,位移量,起始点 )
在文件操作中可能需要从文件中的某个位置开始进行读写,此时可以使用 fseek 函数将位置指针移动到指定位置,实现随机读写
位移量是以“起始点”为基准移动的字节数( long
+” 表示向后移动
-” 表示向前移动。

例如:
fs eek(fp,40L,0);  
  // 将位置指针移动到文档开始后 40 个字节的位置
fseek(fp,30L,1); 
  // 将位置指针移动到当前位置后 30 个字节的位置
fseek(fp,-20L,2); 
  // 将位置指针移 动到文档末尾前 20 个字节的位置

 

13.11】将指定字符串数据写入文本文件file_data.txt中,并将文件的位置指针定位到第5个字符之后,读出第6个字符并显示在屏幕上。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp; char s[]="abcdefghijklmnopqrstuvwxyz";char c;if( (fp = fopen("file_data.txt","w+")) == NULL ){    printf("can not open the file\n");exit(0);}fprintf(fp,"%s",s);fseek(fp,5L,0);fscanf(fp,"%c",&c);printf("The first character is: %c\n",c);fclose(fp);}

 ftell函数

ftell 函数的作用是返回文件位置指针的位置,给出当前位置指针相对于文件头的字节数,返回值为 long 型。当函数调用出错时,函数返回 -1L
一般形式为
  ftell (文件指针);

13.12】求出文件中包含的字节数。

分析:

先将文件的位置指针移到文件末尾,再通过返回位置指针的位置来取得文件的字节数。

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp;long l;if( (fp = fopen("file_data.txt","r")) == NULL ){    printf("can not open the file\n");exit(0);}fseek(fp,0L,SEEK_END);   //将文件的位置指针移到文件末尾l=ftell(fp);        //返回位置指针的位置fclose(fp);printf("the length of file is %ld\n",l);}

 feof函数

feof 函数的作用是判断文件指针是否在文件末尾,如果在文件末尾,则返回非 0 ,否则返回 0
一般形式为
  feof (文件指针);

13.13】判断文件指针是否在文本文件file_data.txt的末尾,并给出相应提示。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp;char ch;if( (fp = fopen("file_data.txt","r")) == NULL ){    printf("can not open the file\n");exit(0);}do{    ch=fgetc(fp);putchar(ch);}while (!feof(fp));   //判断是否到达文件尾if(feof(fp)) printf("\nWe have reached end-of-file\n");//判断是否到达文件尾fclose(fp);}

ferror函数

ferror 函数的作用是检查文件中是否有错误,如果有错,则返回非 0 ,否则返回 0
它的一般形式为
ferror (文件指针);

13.14】判断的文本文件file_data.txt是否有错误,并给出相应提示。

编写程序如下:

#include<stdio.h>#include<stdlib.h>void main(){    FILE *fp;if( (fp = fopen("file_data.txt","r")) == NULL ){    printf("can not open the file\n");exit(0);}if(ferror(fp))printf("Error reading from file_data.txt\n");elseprintf("There is no error\n");fclose(fp);}

相关文章:

C语言下的文件详解

主要内容 文件概述文件指针文件的打开与关闭文件的读写 文件 把输入和输出的数据以文件的形式保存在计算机的外存储器上&#xff0c;可以确保数据能随时使用&#xff0c;避免反复输入和读取数据 文件概述 文件是指一组相关数据的有序集合 文件是存储数据的基本单位&#…...

Oracle PL / SQL块结构

在PL / SQL中&#xff0c;最小的有意义的代码分组被称为块。 块代码为变量声明和异常处理提供执行和作用域边界。 PL / SQL允许您创建匿名块和命名块。 命名块可以是包&#xff0c;过程&#xff0c;函数&#xff0c;触发器或对象类型。 PL / SQL是SQL的过程语言扩展&#x…...

MySQL的安装和启动

安装 版本 1&#xff0c;社区版&#xff1a;免费&#xff0c;不提供任何技术支持 2&#xff0c;商业版&#xff1a;可以试用30天&#xff0c;官方提供技术支持下载 1&#xff0c;下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 2&#xff0c;安装&#xff1a;傻…...

Prometheus概述

1.什么是prometheus Prometheus 是一个开源的服务监控系统和时序数据库&#xff0c;其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据&#xff0c;当新拉取到的…...

【SQL】什么是最左前缀原则/最左匹配原则

最左前缀原则&#xff08;或最左匹配原则&#xff09;是关系型数据库在使用复合索引时遵循的一条重要规则。该原则指的是&#xff0c;当查询条件使用复合索引时&#xff0c;查询优化器会首先使用索引的最左边的列&#xff0c;依次向右匹配&#xff0c;直到不再满足查询条件为止…...

java项目配置logback日志

在resource目录下添加logback配置文件 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug"false"><property name"log_dir" value"/APL/log…...

Python入门 2024/7/6

目录 元组的定义和操作 字符串的定义和操作 字符串 字符串的替换 字符串的分割 字符串的规整操作&#xff08;去除前后空格&#xff09; 字符串的规整操作&#xff08;去掉前后指定字符串&#xff09; 操作 字符串的替换 字符串的分割 字符串的规整操作 统计字符串的…...

ChatGPT4深度解析:探索智能对话新境界

大模型chatgpt4分析功能初探 目录 1、探测目的 2、目标变量分析 3、特征缺失率处理 4、特征描述性分析 5、异常值分析 6、相关性分析 7、高阶特征挖掘 1、探测目的 1、分析chat4的数据分析能力&#xff0c;提高部门人效 2、给数据挖掘提供思路 3、原始数据&#xf…...

触底加载的两种思路(以vue3前端和nodejs后端为例)

一:首先,nodejs后端的代码都是一样的. 需要前端返回page参数,然后nodejs逻辑进行处理,截取页数和每页条数和总条数, 总条数用来作为判断是否有数据的条件,也可以不用,注意看下文 一:不用获取容器高度的. pinia中进行的axios请求处理 在vue文件中进行pinia中数据的导入,继续进…...

tobias实现支付宝支付

tobias是一个为支付宝支付SDK做的Flutter插件。 如何使用 你需要在pubspec.yaml中配置url_scheme。url_scheme是一个独特的字符串&#xff0c;用来重新启动你的app&#xff0c;但是请注意字符串“_”是不合法的。 在iOS端&#xff0c;你还需要配置并传入一个universal link。…...

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

SQL Server 2022 中的 Tempdb 性能改进非常显著

无论是在我的会话中还是在我写的博客中&#xff0c;Tempdb 始终是我的话题。然而&#xff0c;当谈到 SQL Server 2022 中引入的重大性能变化时&#xff0c;我从未如此兴奋过。他们解决了我们最大的性能瓶颈之一&#xff0c;即系统页面闩锁并发。 在 SQL Server 2019 中&#x…...

C++ Lambda表达式第二篇, Lambda表达式

C Lambda表达式 Lambda 捕获含有模板参数的Lambda表达式无模板参数的Lambda表达式 Lambda 捕获 captures是零个或多个捕获的逗号分隔列表&#xff0c;可以选择以capture-default开头。捕获列表定义可从 lambda 函数体内访问的外部变量。唯一的捕获默认值是 &&#xff0c;…...

Linux系统的介绍和常用命令

文章目录 介绍常用命令文件和目录操作文件内容操作系统管理命令网络命令 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;Liunx系统 ✨文章内容&#xff1a;Liunx系统介绍 &…...

IDEA安装IDE Eval Reset插件,30天自动续期,无限激活

第一步&#xff1a; 下载idea 注意&#xff1a;版本要是2021.2.2以下 第二步&#xff1a;快捷键CtrlAlts打开设置 第三步&#xff1a;打开下图中蓝色按钮 第四步&#xff1a;点击弹窗的 “” &#xff0c;并输入 plugins.zhile.io 点击 “ok” 第五步&#xff1a;搜索IDE Ea…...

【C++】初步认识C++

1. 初识C1.1 C概念相关1.2 C发展史及其重要性1.2.1 发展史1.2.2 重要性 2. C关键字3. 命名空间4. 输入和输出 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【C学习】 1. 初识C 1.1 C概念相关 C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。 【来源】…...

【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录 安装Matplotlib 1.打开PyCharm&#xff1a; 2.打开终端&#xff1a; 3.安装Matplotlib&#xff1a; 4.确认安装&#xff1a; 导入Matplotlib 创建简单的折线图 代码解析&#xff1a; 创建子图 代码解析&#xff1a; 创建柱状图 代码解析&#xff1a; 创建散点…...

Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES

在安装 Docker 镜像时&#xff0c;由于官方镜像下载速度较慢&#xff0c;我们可以使用阿里云的镜像加速器来提升下载速度。 使用阿里云镜像加速器 首先&#xff0c;找到并配置阿里云的镜像加速器。安装教程如下&#xff1a; 登录阿里云&#xff0c;进入容器镜像服务。直达链…...

32单片机,C语言与汇编联合编译的几种方式

适用编译器&#xff1a;Keil5 方式一&#xff1a; 单独创建一个.s汇编文件&#xff0c;在汇编文件内对函数进行EXPORT声明 r0寄存器是函数传入的第一个参数&#xff0c;r1寄存器是函数传入的第二个参数&#xff0c;以次类推。参数最多不确定是到r4为止&#xff0c;还是到r12…...

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0c;程序均包含简要注释。 获取方式 https:/…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...