C語言 — 文件

目錄

  • 1.流
    • 1.1 流的概念
    • 1.2 常見的的流
  • 2.文件的打開和關閉
    • 2.1 fopen函數
    • 2.2 fclose函數
    • 2.3 文件的打開和關閉
  • 3.文件的輸入輸出函數
    • 3.1 fputc函數
    • 3.2 fgetc函數
    • 3.3 feof函數和ferror函數
    • 3.4 fputs函數
    • 3.5 fgets函數
    • 3.6 fwrite函數
    • 3.7 fread函數
    • 3.8 fprintf函數
    • 3.9 fscanf函數
  • 4 sprintf和sprintf函數
  • 5. fseek函數
  • 6. ftell函數和rewind函數
  • 7.fflush函數

1.流

1.1 流的概念

外部設備需要從內存中寫入數據進行輸出,而內存需要從外部設備讀取數據進行輸入,為了方便外部設備與內存數據的輸入輸出,需要借助流幫助數據的寫入與讀取。

常見的外部設備有:屏幕,文件,硬盤,畫面等。

![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/3b4cd6f1d53244239a0be67b774c9561.png

1.2 常見的的流

stdin:標準輸入流,從外部設備上讀取數據,scanf函數就是從標準輸入流(鍵盤)獲取數據的;

stdout:標準輸出流,從內存獲取數據,將數據輸出或寫入在外部設備上,printf函數就是標準的輸出流函數;

stderr:標準錯誤流,將錯誤信息輸出到屏幕上;

對于文件而言,以上三種流的類型是FILE*,即文件流。

2.文件的打開和關閉

2.1 fopen函數

在這里插入圖片描述
fopen函數的功能是將一個文件打開,并返回該文件的起始地址,類型是FILE*,第一個參數是文件路勁,第二個參數是以什么方式打開文件;

常見的文件打開方式如下

在這里插入圖片描述

2.2 fclose函數

在這里插入圖片描述
fclose函數的作用是打開的文件進行關閉操作,參數是需要關閉參數的起始地址,如果文件成功關閉返回0,如果關閉失敗,返回EOF(-1)。

使用fclose函數成功關閉文件時,需要即時將指針置空指針,防止野指針的使用,導致程序奔潰。

2.3 文件的打開和關閉

#include<stdio.h>//文件
int main()
{//打開text.txt的文件,以寫入的方式FILE* pf = fopen("test.txt", "w");//判斷方式打開成功if (pf == NULL){//輸出錯誤從原因perror("fopen");//終止程序return 1;}//使用//......//......//關閉文件,置空指針fclose(pf);pf = NULL;return 0;
}

當程序運行成功后,沒有創建文件會默認創建以test.txt為路勁的文件。
在這里插入圖片描述

3.文件的輸入輸出函數

3.1 fputc函數

在這里插入圖片描述
fputc函數的功能是將指定字符通過文件輸出流寫入到指定的文件中,第一個參數是字符的ASCII碼值,第二個參數文件的起始位置的指針。

在這里插入圖片描述
如果返回成功寫入,返回這個寫入字符的ASCII碼值,如果失敗,就返回EOF(-1),并在輸出流上設置錯誤信息,可以使用ferror函數輸出錯誤信息。

fputc的使用

#include<stdio.h>//文件
int main()
{//打開text.txt的文件,以寫入的方式FILE* pf = fopen("test.txt", "w");//判斷方式打開成功if (pf == NULL){//輸出錯誤從原因perror("fopen");//終止程序return 1;}//fputc使用//將a - z的字符輸出寫入到test.txt文件中int i = 0;for (i = 'a'; i <= 'z'; i++){putc(i, pf);}//關閉文件,置空指針fclose(pf);pf = NULL;return 0;
}

打開此時的test.txt文件:可以觀察到a - z字符的內容已經輸出寫入到此文件中。

在這里插入圖片描述

3.2 fgetc函數

在這里插入圖片描述

fgetc函數的功能是從文件輸入流中讀取數據到內存中,參數為讀取文件的起始地址。

在這里插入圖片描述
如果讀取成功,返回讀取字符的ASCII碼值,如果沒有讀取到有效內容,返回EOF(-1);分為兩種情況:第一種是遇到文件末尾,在文件末尾設置指示器,可以通過feof函數檢測;第二種情況是讀取中途讀取失敗,會在讀取失敗的位置設置指示器,可以通過ferror函數檢測。

fgetc函數的使用:讀取上面的test.txt文件

#include<stdio.h>//文件
int main()
{//打開text.txt的文件,以讀取的方式FILE* pf = fopen("test.txt", "r");//判斷方式打開成功if (pf == NULL){//輸出錯誤從原因perror("fopen");//終止程序return 1;}//fgetc使用//將test.txt文件中的a - z 字符讀取int i = 0;for (i = 'a'; i <= 'z'; i++){printf("%c ",getc(pf));}//關閉文件,置空指針fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

3.3 feof函數和ferror函數

在這里插入圖片描述
ferror函數是檢測是否文件在讀取或者寫入的過程有失敗的情況,可以通過指示器檢測,如果檢測到指示器,就返回非0值,如果沒有檢測到返回0值;

在這里插入圖片描述

feof函數的功能是檢測文件是否讀取到末尾;通過指示器可以檢測,如果檢測到指示器,返回非0值,沒有檢測到指示器返回0;

feof和feeor的使用

int main()
{//打開text.txt的文件,以讀取的方式FILE* pf = fopen("test.txt", "r");//判斷方式打開成功if (pf == NULL){//輸出錯誤從原因perror("fopen");//終止程序return 1;}//以讀的形式打開需要輸入函數讀取//使用輸出函數會導致讀取失敗//使用ferror函數和feof函數觀察int r = fputc('a', pf);if (r == EOF)//讀取失敗的返回值{//1.判斷是否讀取到文件末尾if (feof(pf) != 0){printf("讀取到文件末尾,返回EOF\n");}//2.判斷是否在文件中途讀取失敗else if (ferror(pf) != 0){printf("文件在中途讀取失敗,返回EOF\n");}}//關閉文件,置空指針fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

如果將test.txt的內容刪除后保存(a -z 的數據刪除后CTRL + S 保存),使用以上程序的輸出結果如下

在這里插入圖片描述

3.4 fputs函數

在這里插入圖片描述
fupus函數的功能是將內存的數據通過文件輸出流中寫入到文件中;第一個參數是一個不可被修改的字符串的起始地址,第二個參數是文件流的起始地址,返回類型是int。
在這里插入圖片描述
如果寫入成功返回非0值,如果寫入失敗,設置指示器,可以同ferror函數檢測,并返回EOF(-1)。

fputs函數的使用:1.將字符串寫入文件;2.將字符串輸出到屏幕(控制臺);

#include<stdio.h>
#include<stdlib.h>int main()
{FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//寫入//1.寫入到文件fputs("Hello", pf);//2.輸出到屏幕,stdout是標準輸出流fputs("World", stdout);//關閉fclose(pf);pf = NULL;return 0;
}

寫入到test.txt文件中的數據

在這里插入圖片描述

輸出到控制臺的數據

在這里插入圖片描述

3.5 fgets函數

在這里插入圖片描述
fgets函數是從文件中讀取數據通過文件輸入流鍵將數據存儲到內存中;第一個參數是讀取字符串的起始地址,第二個參數是讀取的字符個數,第三個參數是文件流的起始地址,返回類型是char*。

在這里插入圖片描述
如果讀取成功,返回讀取的字符串起始地址;在讀取字符時遇到文件末尾會設置文件指示器,可以通過feof函數檢測,在可讀取的字符數據全部讀取完成前遇到這個指示器,會返回空指針(NULL);如果讀取的字符發生錯誤,會設置錯誤指示器,可以通過ferror函數檢測,并返回空指針(NULL)。

fgets函數的使用:1.從文件讀取;2.從外部設備讀取(鍵盤)

#include<stdio.h>
#include<stdlib.h>int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}char ch[12] = "************"//寫入//1.讀取文件信息到數組中fgets(ch,6,pf);//2.從鍵盤讀取數據,存儲到數組中//stdin是標準輸入流fgets(ch + 5,7, stdin);puts(ch);//輸出//關閉fclose(pf);pf = NULL;return 0;
}

按F10啟動調試,打開調試監視窗口,輸出ch觀察數組的內容:執行ch的初始化語句

在這里插入圖片描述

此時的text.txt文件存放的是Hello,只有5個字符,需要讀取6個字符的數組,fgets函數會在末尾存放一個\0。
在這里插入圖片描述
第二條fgets函數是從鍵盤讀取數據,輸入“ World",用空格替換’\0’的位置,后續補上World,末尾再添加一個\0。

在這里插入圖片描述

最后通過puts函數輸出數組ch的內容,將pf指向的文件關閉并置為空指針。

在這里插入圖片描述

3.6 fwrite函數

在這里插入圖片描述
fwrite函數是從內存獲取的數據通過文件輸出流以二進制是形式寫入到文件中;第一個參數是寫入數據的起始地址,第二個參數是元素的大小,第三個參數是個數,第四個參數是文件起始地址,返回類型是size_t.

在這里插入圖片描述
返回值是成功寫入的元素個數;如果最終讀取的個數與參數的個數不一樣有以下兩種情況:如果返回值是0,發生寫入失敗,會設置錯誤指示器,可以通過ferror函數檢測;第二種情況返回非0值,會設置文件寫入結束的指示器,可以通過feof函數檢測。

fwrite函數的使用

//fwrite
#include<stdio.h>
#include<stdlib.h>int main()
{//二進制寫入的形式打開文件FILE* pf = fopen("test.txt", "wb");if (pf == NULL){perror("fopen");return 1;}int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//使用:將arr數組的十個元素寫入到文件中 fwrite(arr, sizeof(arr[0]), sizeof(arr) / sizeof(arr[0]), pf);//關閉fclose(pf);pf = NULL;return 0;
}

程序成功運行后,使用fwrite函數會將上一次寫入的數據進行刪除,后進行覆蓋,以二進制的形式寫入

在這里插入圖片描述

在這里插入圖片描述

3.7 fread函數

在這里插入圖片描述
fread函數的功能是從文件中讀取數據通過文件輸入流以二進制形式輸入到內存中;第一個參數數據存放位置的起始地址,第二個參數是元素的大小,第三個參數是讀取的個數,第四個參數是讀取數據的文件起始地址,返回類型是size_t。

在這里插入圖片描述
如果讀取成功,返回值是成功讀取的個數;如果讀取的個數與參數不一樣有以下兩種情況:如果返回值是0,發生寫入失敗,會設置錯誤指示器,可以通過ferror函數檢測;第二種情況返回非0值,會設置文件寫入結束的指示器,可以通過feof函數檢測。

fread函數的使用:以上述的text,txt文件為例。

#include<stdio.h>
#include<stdlib.h>int main()
{//二進制讀取的形式打開文件FILE* pf = fopen("test.txt", "rb");if (pf == NULL){perror("fopen");return 1;}int arr[10] = {0};//使用:將pf的數據讀取后存放于arr數組中. fread(arr, sizeof(arr[0]), sizeof(arr) / sizeof(arr[0]), pf);//輸出arrfor (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){printf("%d ", arr[i]);}//關閉fclose(pf);pf = NULL;return 0;
}

將鼠標移向源文件窗口,點擊右鍵打開添加中的現有項,點擊text.txt文件,添加到源文件中。
在這里插入圖片描述
在這里插入圖片描述

點擊test.txt文件,點擊鼠標右鍵選擇打開方式,選擇以二進制方式打開。

在這里插入圖片描述

在這里插入圖片描述
可以觀察到執行以上程序后arr數組讀取數據的內容:1 - 10(十六進制的形式,小端存儲)

在這里插入圖片描述
在這里插入圖片描述

3.8 fprintf函數

在這里插入圖片描述
fprinf函數是將內存的數據通過文件輸出流以指定格式的數據寫入到文件中;第一個參數是文件流,第二個參數是數據的格式,第三個參數是對于的變量,返回類型是int。

在這里插入圖片描述
如果寫入成功返回寫入的個數;如果寫入過程出現錯誤,設置錯誤信息的指示器,并返回一個負數;如果在寫入寬字符時出現多個錯誤,會將錯誤碼(errno)實在為EILSEQ,并返回一個負數。

fprintf函數的使用

#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)struct Stu
{char name[20];int age;char id[8];
}s = { "James",21,"22334455" };int main()
{//以寫入的形式打開文件FILE* pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//使用:將結構體按照指定格式寫入文件中fprintf(pf, "%s %d %s", s.name, s.age, s.id);struct Stu s1;//關閉fclose(pf);pf = NULL;return 0;
}

程序運行后的text.txt的信息

在這里插入圖片描述

3.9 fscanf函數

在這里插入圖片描述

fscanf函數的功能是從文件中讀取的數據通過文件輸入流將數據輸入到內存中;第一個參數是讀取數據的文件起始地址,第二個參數是按照指定格式讀取數據,第三個參數是將數據存儲位置的地址,返回類型是int.

在這里插入圖片描述
如果成功讀取,返回成功讀取的個數;如果在全部數據讀取完成前發生讀取錯誤或讀取到文件末尾,返回EOF(-1),分別通過ferror函數和feof函數檢測。

fscanf函數的使用:以上述的text.txt文件的數據讀取.

#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)struct Stu
{char name[20];int age;char id[8];
}s1 ;
int main()
{//以讀取的形式打開文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//使用:將文件的數據按照指定格式存放于變量s1fscanf(pf, "%s%d%s", &s1.name, &s1.age, &s1.id);//按照格式輸出printf("name: %s\nage: %d\nid: %s", s1.name, s1.age, s1.id);//關閉fclose(pf);pf = NULL;return 0;
}

輸出從文件中按照指定格式的數據

在這里插入圖片描述

4 sprintf和sprintf函數

在這里插入圖片描述
sprintf函數的功能是將格式化的數據寫入到字符串中;第一個參數是字符串的起始地址,第二個參數是指定格式,第三個參數是指定成員。

在這里插入圖片描述
如果輸出成功,返回成功輸出的個數,如果輸出失敗返回一個負數。

![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/12516a38ccec46c382bdbf3d8a0683c4.png

sscanf函數的功能是從字符串中按照格式化的方式讀取數據;第一個參數是字符串的起始地址,第二個參數是指定格式,第三個參數是變量的地址。

在這里插入圖片描述
如果轉換成功返回的是格式列表的項數(與scanf函數的返回值一樣,例如:”%s %d“的格式讀取成功返回2 ),如果讀取失敗返回-1.

sscanf和sprintf的使用

#include <stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
struct Stu
{char name[30];int age;float score;
};
int main()
{struct Stu s = { "zhangsan", 100, 85.5f };//將s中的結構數據轉換成?個字符串char arr[100] = { 0 };sprintf(arr, "%s %d %.1f", s.name, s.age, s.score);printf("%s\n", arr);//將字符串按照格式輸出struct Stu s1;sscanf(arr, "%s %d %f", s1.name, &s1.age, &s1.score);printf("%s %d %.1f", s1.name, s1.age, s1.score);return 0;
}

輸出內容

在這里插入圖片描述

scanf,printf,fscanf,fprintf,sscanf,sprintf的作用如下

![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/a52b97456e1e4bf9a631dd38e19bdb7d.png

5. fseek函數

在這里插入圖片描述
fseek可以設置光標位置,使文件從此光標位置開始讀取;第一個參數是文件起始位置的地址,第二個參數是偏移量的大小,第三個參數是光標的起始位置,返回類型為int.

在這里插入圖片描述
第三個參數的取值可以是以上三種,SEEK_SET(起始位置),SEEK_CUR(當前光標的位置),SEEK_END(文件末尾)。

在這里插入圖片描述
如果成功設置光標位置,返回0,如果設置失敗,返回非0值并設置錯誤指示器(ferror)。

fseek的使用:將text.txt的內容先輸入abcdef后保存。

在這里插入圖片描述

#include<stdio.h>
int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//fseek函數使用//開始光標位置在0偏移處,將光標設置在1偏移量位置fseek(pf, 1, SEEK_SET);//指向字符a后面的位置int c = fgetc(pf);//讀取到b字符,光標移向b后面的位置printf("%c", c);//輸出字符b//將光標設置在當前位置的后1偏移量位置fseek(pf, 1, SEEK_CUR);//指向b后面的位置c = fgetc(pf);//讀取到字符c,光標指向c后面位置printf("%c", c);//輸出c//將光標設置在文件末尾的前1偏移量位置fseek(pf, -1,SEEK_END);c = fgetc(pf);//讀取到字符f,光標指向字符f后面printf("%c", c);//輸出f//關閉fclose(pf);pf = NULL;return 0;
}

在這里插入圖片描述

6. ftell函數和rewind函數

在這里插入圖片描述
ftell函數是將當前光標的位置與起始位置的偏移量值返回,如果未能讀取返回-1L(double);

在這里插入圖片描述
rewind函數是將光標設置為起始位置,參數是文件指針,沒有返回值。

/* ftell and rewind example : getting size of a file */
#include <stdio.h>int main()
{FILE* pf = fopen("test.txt", "r");//文件內容:abcdefif (pf == NULL) perror("Error opening file");else{fseek(pf, 0, SEEK_END);   // non-portablelong size = ftell(pf);printf("Size of test.txt.txt: %ld bytes.\n", size);//重新設置光標位置rewind(pf);printf("%c", fgetc(pf));//關閉文件,設置空指針fclose(pf);pf = NULL;}return 0;
}

在這里插入圖片描述

7.fflush函數

在這里插入圖片描述
fflush是將文件緩沖區的數據進行刷新,對于文件輸入流的數據,終止讀取,對于文件輸出流的數據進行寫入,函數的參數是文件指針,返回類型是int。

在這里插入圖片描述
成功刷新緩沖區返回0值,刷新失敗返回-1,并設置錯誤指示器。

fflush的使用

/* fflush example */
#pragma warning(disable:4996)
#include <stdio.h>
#include<windows.h>
char mybuffer[80];
int main()
{char mybuffer[10];FILE* pf = fopen("test.txt", "r+");if (pf == NULL){perror("fopen");//輸出錯誤信息return 1;//終止程序}fputs("abcdef", pf);printf("數據正在存儲在緩沖區中....\n");Sleep(5000);//休眠5秒fflush(pf);    // flushing or repositioning requiredprintf("緩沖區已經刷新,數據寫入中...\n");rewind(pf);//將光標設置在起始文件指針的位置fgets(mybuffer, 10, pf);//獲取信息puts(mybuffer);//輸出//關閉文件,置空指針fclose(pf);pf = NULL;return 0;
}

程序運行中還未刷新緩沖區數據,文件的內容是空的。

在這里插入圖片描述

刷新后,abcdef寫入文件中。

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83207.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pull Request Integration 拉取請求集成

今天我想要把我創建的項目&#xff0c;通過修改yaml里面的內容&#xff0c;讓我在main分支下的其他分支拉取請求的時候自動化測試拉取的內容&#xff0c;以及將測試結果上傳到控制臺云端。 首先我通過修改yaml文件里面的內容 name: Build and Teston:push:branches:- mainjobs:…

NodeJS全棧開發面試題講解——P3數據庫(MySQL / MongoDB / Redis)

3.1 如何用 Node.js 連接 MySQL&#xff1f;你用過哪些 ORM&#xff1f; 面試官您好&#xff0c;我先介紹如何用 Node.js 連接 MySQL&#xff0c;然后補充我常用的 ORM 工具。 &#x1f50c; 原生連接 MySQL 使用 mysql2 模塊&#xff1a; npm install mysql2 const mysql …

Redis最佳實踐——性能優化技巧之數據結構選擇

Redis在電商應用中的數據結構選擇與性能優化技巧 一、電商核心場景與數據結構選型矩陣 應用場景推薦數據結構內存占用讀寫復雜度典型操作商品詳情緩存Hash低O(1)HGETALL, HMSET購物車管理Hash中O(1)HINCRBY, HDEL用戶會話管理Hash低O(1)HSETEX, HGET商品分類目錄Sorted Set高O…

題單:最大公約數(輾轉相除法)

題目描述 所謂 “最大公約數&#xff08;GCD&#xff09;” &#xff0c;是指所有公約數中最大的那個&#xff0c;例如 12 和 1818 的公約數有 1,2,3,6 &#xff0c;所以 12 和 18 的最大公約數為 6 。 輾轉相除法&#xff0c;又名歐幾里德算法&#xff08;Euclidean Algorit…

hadoop完整安裝教程(附帶jdk1.8+vim+ssh安裝)

本篇帶領大家在uabntu20虛擬機上安裝hadoop&#xff0c;其中還包括jdk1.8、ssh、vim的安裝教程&#xff0c;&#xff08;可能是&#xff09;史上最全的安裝教程&#xff01;&#xff01;&#xff01;若有疑問可以在評論區或者私信作者。建議在虛擬機上觀看此博客&#xff0c;便…

Flutter、React Native、Unity 下的 iOS 性能與調試實踐:兼容性挑戰與應對策略(含 KeyMob 工具經驗)

移動端跨平臺開發逐漸成為常態&#xff0c;Flutter、React Native、Unity、Hybrid App 等框架在各類 iOS 項目中頻繁出現。但隨之而來的&#xff0c;是一系列在 iOS 設備上調試難、性能數據采集難、日志整合難的問題。 今天這篇文章&#xff0c;我從實際項目出發&#xff0c;聊…

PyCharm接入DeepSeek,實現高效AI編程

介紹本土AI工具DeepSeek如何結合PyCharm同樣實現該功能。 一 DeepSeek API申請 首先進入DeepSeek官網&#xff1a;DeepSeek 官網 接著點擊右上角的 “API 開放平臺“ 然后點擊API keys 創建好的API key&#xff0c;記得復制保存好 二 pycharm 接入deepseek 首先打開PyCh…

Cinnamon開始菜單(1):獲取應用數據

看了半天&#xff1a;/usr/share/cinnamon/applets/menucinnamon.org&#xff0c;終于挖到了精髓。 Cinnamon.AppSystem.get_default() 獲取系統應用數據 get_tree() 獲取樹機構 get_root_directory() 獲取根目錄 iter() 遍歷 get_name() 獲取名稱 get_desktop_file_id()…

git reset --hard HEAD~1與git reset --hard origin/xxx

git reset --hard HEAD~1與git reset --hard origin/xxx git reset --hard origin/xxx有時候會太長&#xff0c;手工輸入略微繁瑣&#xff0c;可以考慮&#xff1a; git reset --hard HEAD~1 替代。 或者使用這種方式 git reset撤銷當前分支所有修改&#xff0c;恢復到最近一…

鴻蒙OSUniApp PWA開發實踐:打造跨平臺漸進式應用#三方框架 #Uniapp

UniApp PWA開發實踐&#xff1a;打造跨平臺漸進式應用 前言 在過去的一年里&#xff0c;我們團隊一直在探索如何利用UniApp框架開發高性能的PWA應用。特別是隨著鴻蒙系統的普及&#xff0c;我們積累了不少有價值的實踐經驗。本文將分享我們在開發過程中的技術選型、架構設計和…

ansible自動化playbook簡單實踐

方法一&#xff1a;部分使用ansible 基于現有的nginx配置文件&#xff0c;定制部署nginx軟件&#xff0c;將我們的知識進行整合 定制要求&#xff1a; 啟動用戶&#xff1a;nginx-test&#xff0c;uid是82&#xff0c;系統用戶&#xff0c;不能登錄 啟動端口82 web項目根目錄/…

【Office】Excel兩列數據比較方法總結

在Excel中&#xff0c;比較兩列數據是否相等有多種方法&#xff0c;以下是常用的幾種方式&#xff1a; 方法1&#xff1a;使用公式&#xff08;返回TRUE/FALSE&#xff09; 在空白列&#xff08;如C列&#xff09;輸入公式&#xff0c;向下填充即可逐行比較兩列&#xff08;如…

day 42

知識點回顧 1.回調函數 2.lambda函數 3.hook函數的模塊鉤子和張量鉤子 4.Grad-CAM的示例 一。回調函數示例 Hook本質是回調函數&#xff0c;所以我們先介紹一下回調函數。回調函數是作為參數傳遞給其他函數的函數&#xff0c;其目的是在某個特定事件發生時被調用執行。這…

10.安卓逆向2-frida hook技術-frida基本使用-frida指令(用于hook)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

LLM-MPC混合架構:車載大語言模型用來增強自動駕駛系統

1. 概述 2025年&#xff0c;蘇黎世研究團隊在RSS2025會議上正式提出「LLM-MPC混合架構」&#xff0c;標志著大語言模型&#xff08;LLM&#xff09;在自動駕駛系統中的實用化邁出關鍵一步。該方案旨在解決傳統深度學習模型在極端交通場景中泛化能力不足的問題。通過在車載終端…

解釋k8s種ConfigMap和Secret的作用,如何在Pod中掛載環境變

一、ConfigMap & Secret 核心定位 屬于Kubernetes的配置管理特性&#xff0c;用于解耦應用與配置 1. ConfigMap 作用&#xff1a;存儲非敏感配置數據 存儲內容&#xff1a; 環境變量命令行參數配置文件&#xff08;如JSON/XML/YAML&#xff09;系統參數&#xff08;如J…

Android --- ObjectAnimator 和 TranslateAnimation有什么區別

文章目錄 2. 作用范圍和功能2. 動畫表現3. 是否修改 View 的屬性4. 適用場景5. 性能總結&#xff1a; ObjectAnimator 和 TranslateAnimation 都是 Android 中常用的動畫類型&#xff0c;但它們有以下幾個關鍵的區別&#xff1a; 2. 作用范圍和功能 ObjectAnimator&#xff1a…

3d GIS數據來源與編輯工具

1、衛星遙感 2、航空攝影測量 3、地面實測技術 全站儀 3維掃描 3D GIS數據制作全流程詳解 一、數據采集&#xff1a;多源數據獲取 3D GIS數據的制作需從多維度采集地理空間信息&#xff0c;以下是主要采集方式及適用場景&#xff1a; &#xff08;一&#xff09;遙感與航測…

實驗設計與分析(第6版,Montgomery)第4章隨機化區組,拉丁方, 及有關設計4.5節思考題4.26~4.27 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第章隨機化區組&#xff0c;拉丁方&#xff0c; 及有關設計4.5節思考題4.26~4.27 R語言解題。主要涉及方差分析&#xff0c;正交拉丁方。 batch <- c(rep("batch1",5), rep(…

linux創建虛擬網卡和配置多ip

1.展示當前網卡信息列表&#xff1a; linux上&#xff1a; ip a ifconfigwindows上&#xff1a; ipconfig 2.創建虛擬網卡對&#xff1a; sudo ip link add name veth0 type veth peer name veth1 在 ip link add 命令中&#xff0c;type 參數可以指定多種虛擬網絡設備類型&…