C 标准库 - <stdio.h> 详解
在 C 语言中,stdio.h
是一个非常重要的头文件,定义了一系列用于输入和输出的函数、变量和宏。本文将逐一介绍 stdio.h
中定义的函数,并提供每个函数的完整示例。
变量类型
在 stdio.h
中定义了三个变量类型:
size_t
:无符号整数类型,通常用于表示内存大小。FILE
:适合存储文件流信息的对象类型。fpos_t
:适合存储文件中任何位置的对象类型。
宏定义
stdio.h
中定义了一些常用的宏:
NULL
:空指针常量的值。_IOFBF
、_IOLBF
和_IONBF
:用于setvbuf
函数的第三个参数。BUFSIZ
:setbuf
函数使用的缓冲区大小。EOF
:表示文件结束的负整数。FOPEN_MAX
:系统可以同时打开的文件数量。FILENAME_MAX
:字符数组可以存储的文件名的最大长度。L_tmpnam
:tmpnam
函数创建的临时文件名的最大长度。SEEK_CUR
、SEEK_END
和SEEK_SET
:fseek
函数中用于定位不同位置的宏。TMP_MAX
:tmpnam
函数可生成的独特文件名的最大数量。stderr
、stdin
和stdout
:分别对应标准错误、标准输入和标准输出流。
函数介绍与示例
1. int fclose(FILE *stream)
关闭流 stream
。刷新所有的缓冲区。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "w");fprintf(fp, "This is just a test.\n");fclose(fp);return 0;
}
2. void clearerr(FILE *stream)
清除给定流 stream
的文件结束和错误标识符。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "r");clearerr(fp);while ((c = fgetc(fp)) != EOF) {putchar(c);}fclose(fp);return 0;
}
3. int feof(FILE *stream)
测试给定流 stream
的文件结束标识符。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "r");while (!feof(fp)) {putchar(fgetc(fp));}fclose(fp);return 0;
}
4. int ferror(FILE *stream)
测试给定流 stream
的错误标识符。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "r");if (ferror(fp)) {perror("Error reading file");} else {printf("File read successfully.\n");}fclose(fp);return 0;
}
5. int fflush(FILE *stream)
刷新流 stream
的输出缓冲区。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "w");fprintf(fp, "This is just a test.\n");fflush(fp); // Flush the buffer to ensure data is written immediatelyfclose(fp);return 0;
}
6. int fgetpos(FILE *stream, fpos_t *pos)
获取流 stream
的当前文件位置,并把它写入到 pos
。
#include <stdio.h>int main() {FILE *fp;fpos_t position;fp = fopen("test.txt", "r");fgetpos(fp, &position);printf("Current position in file: %lld\n", position);fclose(fp);return 0;
}
7. FILE *fopen(const char *filename, const char *mode)
使用给定的模式 mode
打开 filename
所指向的文件。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "w");if (fp == NULL) {perror("Error opening file");return -1;}fprintf(fp, "This is just a test.\n");fclose(fp);return 0;
}
8. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
从给定流 stream
读取数据到 ptr
所指向的数组中。
#include <stdio.h>int main() {FILE *fp;char buffer[20];fp = fopen("test.txt", "r");fread(buffer, sizeof(char), 10, fp);printf("Data read: %s\n", buffer);fclose(fp);return 0;
}
9. FILE *freopen(const char *filename, const char *mode, FILE *stream)
把一个新的文件名 filename
与给定的打开的流 stream
关联,同时关闭流中的旧文件。
#include <stdio.h>int main() {FILE *fp;fp = freopen("test.txt", "w", stdout);printf("This is redirected to test.txt\n");fclose(fp);return 0;
}
10. int fseek(FILE *stream, long int offset, int whence)
设置流 stream
的文件位置为给定的偏移 offset
,参数 whence
意味着从给定的位置查找的字节数。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "r");fseek(fp, 5, SEEK_SET);printf("Character at position 5: %c\n", fgetc(fp));fclose(fp);return 0;
}
11. int fsetpos(FILE *stream, const fpos_t *pos)
设置给定流 stream
的文件位置为给定的位置。参数 pos
是由函数
fgetpos
给定的位置。
#include <stdio.h>int main() {FILE *fp;fpos_t position;fp = fopen("test.txt", "r");fgetpos(fp, &position);fseek(fp, 10, SEEK_SET);fsetpos(fp, &position);printf("Character at original position after seeking: %c\n", fgetc(fp));fclose(fp);return 0;
}
12. long int ftell(FILE *stream)
返回给定流 stream
的当前文件位置。
#include <stdio.h>int main() {FILE *fp;long int position;fp = fopen("test.txt", "r");fseek(fp, 0, SEEK_END);position = ftell(fp);printf("Size of file: %ld bytes\n", position);fclose(fp);return 0;
}
13. size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
把 ptr
所指向的数组中的数据写入到给定流 stream
中。
#include <stdio.h>int main() {FILE *fp;char buffer[20] = "Hello, World!";fp = fopen("test.txt", "w");fwrite(buffer, sizeof(char), 13, fp);fclose(fp);return 0;
}
14. int remove(const char *filename)
删除给定的文件名 filename
,以便它不再被访问。
#include <stdio.h>int main() {if (remove("test.txt") == 0) {printf("File deleted successfully.\n");} else {perror("Error deleting file");}return 0;
}
15. int rename(const char *old_filename, const char *new_filename)
把 old_filename
所指向的文件名改为 new_filename
。
#include <stdio.h>int main() {if (rename("test.txt", "new_test.txt") == 0) {printf("File renamed successfully.\n");} else {perror("Error renaming file");}return 0;
}
16. void rewind(FILE *stream)
设置文件位置为给定流 stream
的文件的开头。
#include <stdio.h>int main() {FILE *fp;char c;fp = fopen("test.txt", "r");rewind(fp);c = fgetc(fp);printf("First character of file after rewinding: %c\n", c);fclose(fp);return 0;
}
17. void setbuf(FILE *stream, char *buffer)
定义流 stream
应如何缓冲。
#include <stdio.h>int main() {FILE *fp;char buffer[BUFSIZ];fp = fopen("test.txt", "w");setbuf(fp, buffer);fprintf(fp, "This is just a test.\n");fclose(fp);return 0;
}
18. int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
另一个定义流 stream
应如何缓冲的函数。
#include <stdio.h>int main() {FILE *fp;char buffer[BUFSIZ];fp = fopen("test.txt", "w");setvbuf(fp, buffer, _IOFBF, BUFSIZ);fprintf(fp, "This is just a test.\n");fclose(fp);return 0;
}
19. FILE *tmpfile(void)
以二进制更新模式(wb+
)创建临时文件。
#include <stdio.h>int main() {FILE *tmpfp;tmpfp = tmpfile();fprintf(tmpfp, "This is a temporary file.\n");fclose(tmpfp);return 0;
}
20. char *tmpnam(char *str)
生成并返回一个有效的临时文件名,该文件名之前是不存在的。
#include <stdio.h>int main() {char buffer[L_tmpnam];tmpnam(buffer);printf("Temporary file name: %s\n", buffer);return 0;
}
21. int fprintf(FILE *stream, const char *format, ...)
发送格式化输出到流 stream
中。
#include <stdio.h>int main() {FILE *fp;int num = 10;fp = fopen("test.txt", "w");fprintf(fp, "The number is: %d\n", num);fclose(fp);return 0;
}
22. int printf(const char *format, ...)
发送格式化输出到标准输出 stdout
。
#include <stdio.h>int main() {int num = 10;printf("The number is: %d\n", num);return 0;
}
23. int sprintf(char *str, const char *format, ...)
发送格式化输出到字符串。
#include <stdio.h>int main() {char buffer[20];int num = 10;sprintf(buffer, "The number is: %d\n", num);printf("%s", buffer);return 0;
}
24. int vfprintf(FILE *stream, const char *format, va_list arg)
使用参数列表发送格式化输出到流 stream
中。
#include <stdio.h>
#include <stdarg.h>int my_printf(FILE *stream, const char *format, ...) {va_list arg;int done;va_start(arg, format);done = vfprintf(stream, format, arg);va_end(arg);return done;
}int main() {FILE *fp;int num = 10;fp = fopen("test.txt", "w");my_printf(fp, "The number is: %d\n", num);fclose(fp);return 0;
}
25. int vprintf(const char *format, va_list arg)
使用参数列表发送格式化输出到标准输出 stdout
中。
#include <stdio.h>
#include <stdarg.h>int my_printf(const char *format, ...) {va_list arg;int done;va_start(arg, format);done = vprintf(format, arg);va_end(arg);return done;
}int main() {int num = 10;my_printf("The number is: %d\n", num);return 0;
}
26. int vsprintf(char *str, const char *format, va_list arg)
使用参数列表发送格式化输出到字符串。
#include <stdio.h>
#include <stdarg.h>int my_sprintf(char *str, const char *format, ...) {va_list arg;int done;va_start(arg, format);done = vsprintf(str, format, arg);va_end(arg);return done;
}int main() {char buffer[20];int num = 10;my_sprintf(buffer, "The number is: %d\n", num);printf("%s", buffer);return 0;
}
27. int fscanf(FILE *stream, const char *format, ...)
从流 stream
读取格式化输入。
#include <stdio.h>int main() {FILE *fp;int num;fp = fopen("test.txt", "r");fscanf(fp, "%d", &num);printf("The number read from file is: %d\n", num);fclose(fp);return 0;
}
28. int scanf(const char *format, ...)
从标准输入 stdin
读取格式化输入。
#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("You entered: %d\n", num);return 0;
}
29. int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
#include <stdio.h>int main() {char str[] = "The number is: 10";int num;sscanf(str, "The number is: %d", &num);printf("Extracted number from string: %d\n", num);return 0;
}
30. int fgetc(FILE *stream)
从指定的流 stream
获取下一个字符(一个无符号字符),并把位置标识符往前移动。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "r");while ((c = fgetc(fp)) != EOF) {putchar(c);}fclose(fp);return 0;
}
31. char *fgets(char *str, int n, FILE *stream)
从指定的流 stream
读取一行,并把它存储在 str
所指向的字符串内。当读取 (n-1)
个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
#include <stdio.h>int main() {FILE *fp;char buffer[255];fp = fopen("test.txt", "r");while (fgets(buffer, 255, fp) != NULL) {printf("%s", buffer);}fclose(fp);return 0;
}
32. int fputc(int char, FILE *stream)
把参数 char
指定的字符(一个无符号字符)写入到指定的流 stream
中,并把位置标识符往前移动。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "w");for (c = 'A'; c <= 'Z'; ++c) {fputc(c, fp);}fclose(fp);return 0;
}
33. int fputs(const char *str, FILE *stream)
把字符串写入到指定的流 stream
中,但不包括空字符。
#include <stdio.h>int main() {FILE *fp;fp = fopen("test.txt", "w");fputs("This is just a test.\n", fp);fclose(fp);return 0;
}
34. int getc(FILE *stream)
从指定的流 stream
获取下一个字符(一个无符号字符),并把位置标识符往前移动。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "r");while ((c = getc(fp)) != EOF) {putchar(c);}fclose(fp);return 0;
}
35. int getchar(void)
从标准输入 stdin
获取一个字符(一个无符号字符)。
#include <stdio.h>int main() {int c;printf("Enter a character: ");c = getchar();printf("You entered: ");putchar(c);return 0;
}
36. char *gets(char *str)
从标准输入 stdin
读取一行,并把它存储在 str
所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况
而定。
#include <stdio.h>int main() {char str[255];printf("Enter a string: ");gets(str);printf("You entered: %s\n", str);return 0;
}
37. int putc(int char, FILE *stream)
把参数 char
指定的字符(一个无符号字符)写入到指定的流 stream
中,并把位置标识符往前移动。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "w");putc('A', fp);fclose(fp);return 0;
}
38. int putchar(int char)
把参数 char
指定的字符(一个无符号字符)写入到标准输出 stdout
中。
#include <stdio.h>int main() {putchar('A');return 0;
}
39. int puts(const char *str)
把一个字符串写入到标准输出 stdout
,直到空字符,但不包括空字符。换行符会被追加到输出中。
#include <stdio.h>int main() {puts("This is just a test.");return 0;
}
40. int ungetc(int char, FILE *stream)
把字符 char
(一个无符号字符)推入到指定的流 stream
中,以便它是下一个被读取到的字符。
#include <stdio.h>int main() {FILE *fp;int c;fp = fopen("test.txt", "r");c = fgetc(fp);ungetc(c, fp); // Push the character back to the streamprintf("Character pushed back: %c\n", fgetc(fp)); // Now read it againfclose(fp);return 0;
}
41. void perror(const char *str)
把一个描述性错误消息输出到标准错误 stderr
。首先输出字符串 str
,后跟一个冒号,然后是一个空格。
#include <stdio.h>int main() {FILE *fp;fp = fopen("nonexistentfile.txt", "r");if (fp == NULL) {perror("Error opening file");return -1;}fclose(fp);return 0;
}
42. int snprintf(char *str, size_t size, const char *format, ...)
格式字符串到 str
中。
#include <stdio.h>int main() {char buffer[20];int num = 10;snprintf(buffer, 20, "The number is: %d\n", num);printf("%s", buffer);return 0;
}
以上是 stdio.h
中定义的所有函数的详细介绍和示例。该头文件是 C 语言中输入输出操作的核心,熟练掌握其中的函数将对编程工作大有裨益。
相关文章:
C 标准库 - <stdio.h> 详解
在 C 语言中,stdio.h 是一个非常重要的头文件,定义了一系列用于输入和输出的函数、变量和宏。本文将逐一介绍 stdio.h 中定义的函数,并提供每个函数的完整示例。 变量类型 在 stdio.h 中定义了三个变量类型: size_t:…...
支付宝小程序中唤起支付(前后端)
Java后台获取支付宝支付唯一订单号 /*** 支付宝小程序支付*/PostMapping(value "/xcxPayZFBTHREE")ResponseBodypublic Map<String,Object> xcxPayZFBTHREE(RequestBody byte[] req) {HashMap<String, Object> objectObjectMap new HashMap<>();…...
AI:139-基于深度学习的语音指令识别与执行
🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…...
选择 Python IDE(VSCode、Spyder、Visual Studio 2022和 PyCharm)
前言 当选择 Python 开发工具时,你需要考虑自己的需求、偏好和项目类型。下面是对VSCode、Spyder、Visual Studio 2022和 PyCharm的对比推荐总结: 结论 1、如果你专注于“数据科学”,选择SpyDer没错。 内容 Visual Studio Code (VS Code)…...
Rabbitmq 超时异常解决:PRECONDITION_FAILED - Timeout value used: 1800000 ms.
Rabbitmq 超时异常解决:PRECONDITION_FAILED - Timeout value used: 1800000 ms. 在使用 docker 启动 rabbitmq 的时候,执行一个超长时间的任务,出现了报错。 查询了一下发现,这个问题在于 rabbitmq 默认客户端超时时间是30分钟,…...
Java架构师之路二、数据库:SQL语言、关系型数据库、非关系型数据库、数据一致性、事务管理等。
目录 SQL语言: 关系型数据库: 非关系型数据库: 数据一致性: 事务管理: 上篇:Java架构师之路一、Java基础知识:Java语言特性、集合框架、IO流、多线程、反射、注解等基础知识。-CSDN博客 下…...
【Spring Cloud】高并发带来的问题及常见容错方案
文章目录 高并发带来的问题编写代码修改配置压力测试修改配置,并启动软件添加线程组配置线程并发数添加Http取样配置取样,并启动测试访问message方法观察效果 服务雪崩效应常见容错方案常见的容错思路常见的容错组件 总结 欢迎来到阿Q社区 https://bbs.c…...
springAOP落地实现
文章目录 前言一、熟悉相关概念:1、Aspect:2、Pointcut:3、Before:4、AfterReturning:5、AfterThrowing:6、After:7、Around: 二、具体使用case:1.pom文件2.代码 总结 前…...
Linux学习之vi/vim详细介绍
目录 编辑 1. 什么是 vim? 2. vi/vim 的使用 2.1 命令模式 2.2 输入模式 2.3 底线命令模式 3. vi/vim 使用实例 3.1 使用 vi/vim 进入一般模式 3.2 按下 i 进入输入模式(也称为编辑模式),开始编辑文字 3.3 按下 ESC 按钮回到一般模式…...
【AIGC大模型】跑通wonder3D (windows)
论文链接:https://arxiv.org/pdf/2310.15008.pdf windows10系统 显卡:NVIDIA rtx 2060 一、安装anaconda 二、安装CUDA 11.7 (CUDA Toolkit 11.7 Downloads | NVIDIA Developer) 和 cudnn 8.9.7(cuDNN Archive | NVIDIA Developer)库 CUDA选择自定…...
Opencv(2)深浅拷贝与基本绘图(c++python
Opencv(2)深浅拷贝与基本绘图 文章目录 Opencv(2)深浅拷贝与基本绘图三、深浅拷贝四、HSV色域(1).意义(2).cvtColor()(3).inRange()(4).适应光线 三、深浅拷贝 浅拷贝是指当图像之间进行赋值时,图像数据并未发生复制,而是两个对象都指向同一块内存块。 …...
二叉树与堆
目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树: 2.3 特殊的二叉树: 2.4 二叉树的性质 2.5 二叉树的…...
神经网络系列---损失函数
文章目录 损失函数均方误差(Mean Squared Error,MSE):平均绝对误差(Mean Absolute Error,MAE):交叉熵损失函数(Cross-Entropy Loss):Hinge Loss&a…...
LeetCode每日一题 有效的字母异位词(哈希表)
题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输…...
设计模式学习笔记 - 面向对象 - 8.实践:贫血模型和充血模型的原理及实践
1.Web开发常用的贫血MVC架构违背OOP吗? 前面我们依据讲过了面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格,基于接口而非实现编程和多用组合少用继承设计思想。接下来,通过实战来学习如何将这些理论应用到实际的开发中。 大部…...
AI新纪元:可能的盈利之道
本文来源于Twitter大神宝玉(dotey)在聊 Sora 的时候,总结了 Sora 的价值和可能的盈利方向,我把这部分内容单独摘出来再整理一下。现在的生成式 AI 大家应该不陌生,用它总结文章、翻译、写作、画图,当然真正…...
k8s的svc流量通过iptables和ipvs转发到pod的流程解析
文章目录 1. k8s的svc流量转发1.1 service 说明1.2 endpoints说明1.3 pod 说明1.4 svc流量转发的主要工作 2. iptables规则解析2.1 svc涉及的iptables链流程说明2.2 svc涉及的iptables规则实例2.2.1 KUBE-SERVICES规则链2.2.2 KUBE-SVC-EFPSQH5654KMWHJ5规则链2.2.3 KUBE-SEP-L…...
【踩坑】修复报错 you should not try to import numpy from its source directory
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 报错如下: 修复方法一: pip install pyinstaller5.9 修复方法二: pip install numpy1.24.1...
预测脱碳企业的信用评级-论文代码复现
文献来源 【Forecasting credit ratings of decarbonized firms: Comparative assessmentof machine learning models】 文章有代码复现有两个基本工作,1.是提取每个算法的重要性;2.计算每个算法的评价指标 算法有 CRT 分类决策树 ANN 人工神经网络 R…...
目标检测——KITTI目标跟踪数据集
KITTI目标跟踪数据集是由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创建的一个大规模自动驾驶场景下的计算机视觉算法评测数据集。这个数据集主要用于评估立体图像、光流、视觉测距、3D物体检测和3D跟踪等计算机视觉技术在车载环境下的性能这个数据集包含了在市区、乡村和…...
25-k8s集群中-RBAC用户角色资源权限
一、RBAC概述 1,k8s集群的交互逻辑(简单了解) 我们通过k8s各组件架构,知道各个组件之间是使用https进行数据加密及交互的,那么同理,我们作为“使用”k8s的各种资源的使用者,也是通过https进行数…...
Android 面试问题 2024 版(其二)
Android 面试问题 2024 版(其二) 六、多线程和并发七、性能优化八、测试九、安全十、Material设计和 **UX/UI** 六、多线程和并发 Android 中的进程和线程有什么区别? 答:进程是在自己的内存空间中运行的应用程序的单独实例&…...
SpringMVC的异常处理
异常分类 : 预期异常(检查型异常)和运行时异常 1、使用@ExceptionHandle注解处理异常 @ExceptionHandle(value={***.class} 异常类型) public modelandview handelException(){} 仅限当前类使用 2、全局处理方式 @ControllerAdvice + @ExceptionHandle 新建类 @Cont…...
【计算机网络】1 因特网概述
一.网络、互联网和因特网 1.网络(network),由若干结点(node)和连接这些结点的链路(link)组成。 2.多个网络还可以通过路由器互联起来,这样就构成了一个覆盖范围更大的网络…...
【Ubuntu】Anaconda的安装和使用
目录 1 安装 2 使用 1 安装 (1)下载安装包 官网地址:Unleash AI Innovation and Value | Anaconda 点击Free Download 按键。 然后 点击下图中的Download开始下载安装包。 (2)安装 在安装包路径下打开终端&#…...
OpenAI推出首个AI视频模型Sora:重塑视频创作与体验
链接:华为OD机考原题附代码 Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着…...
mybatis总结传参三
十、(不推荐)多个参数-按位置传参 参数位置从 0 开始, 引用参数语法 #{ arg 位置 } , 第一个参数是 #{arg0}, 第二个是 #{arg1} 注意: mybatis-3.3 版本和之前的版本使用 #{0},#{1} 方式, 从 myba…...
JSONVUE
1.JSON学习 1.概念: JSON是把JS对象变成字符串. 2.作用: 多用于网络中数据传输. JavaScript对象 let person{name:"张三",age:18}//将JS对象转换为 JSON数据let person2JSON{"name":"张三","age":18}; 3.JS对象与JSON字符串转换…...
OSCP靶机--Medjed
OSCP靶机–Medjed 考点:(1.ftp文件上传 2.sql注入写shell 3.第三软件提权) 1.nmap ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.200.127 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-25 19:42 EST Nmap scan repo…...
【Unity】Unity与安卓交互
问题描述 Unity和安卓手机进行交互,是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…...
QYFB-02 无线风力报警仪 风速风向超限声光报警
产品概述 无线风力报警仪是由测控报警仪、无线风速风向传感器和太阳能供电盒组成,可观测大气中的瞬时风速,具有风速报警设定和报警输出控制功能;风力报警仪采用无线信号传输、显示屏输出,风速显示采用高亮LED数码管显示ÿ…...
css知识:盒模型盒子塌陷BFC
1. css盒模型 标准盒子模型,content-box 设置宽度即content的宽度 width content 总宽度content(width设定值) padding border IE/怪异盒子模型,border-box width content border padding 总宽度 width设定值 2. 如何…...
Nginx的反向代理:实现灵活的请求转发和内容缓存
一、引言:代理服务器的简介 本节介绍代理服务器的基本配置。学习如何通过不同协议将 NGINX 请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理通常用于在多个服务器之间分配负载&…...
免费享受企业级安全:雷池社区版WAF,高效专业的Web安全的方案
网站安全成为了每个企业及个人不可忽视的重要议题。 随着网络攻击手段日益狡猾和复杂,选择一个强大的安全防护平台变得尤为关键。 推荐的雷池社区版——一个为网站提供全面安全防护解决方案的平台,它不仅具备高效的安全防护能力,还让网站安…...
基于SpringBoot的航班进出港管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…...
Odoo系统安装部署并结合内网穿透实现固定域名访问本地ERP系统
文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…...
幻兽帕鲁(Palworld 1.4.1)私有服务器搭建(docker版)
文章目录 说明客户端安装服务器部署1Panel安装和配置docker服务初始化设置设置开机自启动设置镜像加速 游戏服务端部署游戏服务端参数可视化配置 Palworld连接服务器问题总结 说明 服务器硬件要求:Linux系统/Window系统(x86架构,armbian架构…...
好书推荐丨细说Python编程:从入门到科学计算
文章目录 写在前面Python简介推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本Python基础入门的全新正版书籍,对Python、机器学习、人工智能感兴趣的小伙伴们快来看看吧~ Python简介 Python 是一种广泛使用的高级、解…...
智慧城市与数字孪生:共创未来城市新篇章
一、引言 随着科技的飞速发展,智慧城市与数字孪生已成为现代城市建设的核心议题。智慧城市注重利用先进的信息通信技术,提升城市治理水平,改善市民生活品质。而数字孪生则通过建立物理城市与数字模型之间的连接,为城市管理、规划…...
Java数据结构---初识集合框架
目录 一、什么是集合框架 二、集合框架的重要性 三、背后涉及的数据结构及算法 1.什么是数据结构 2.容器背后对应的数据结构 3.相关的Java知识 4.什么是算法 一、什么是集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ࿰…...
Spring Cloud学习
1、什么是SpringCloud Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。Spring cloud 流应用程…...
【计算机网络】1.4 接入网和物理媒体
1.4 接入网和物理媒体 问题:怎样将端系统和边缘路由器连接? 答:有线方式(住宅接入网络、单位接入网络等)或无线方式(无线接入网络)。 有线接入方式 光纤同轴混合网是基于已有的有线电视网开发的…...
关于螺栓的基本拧紧技术了解多少——SunTorque智能扭矩系统
螺栓是机械中常见的紧固件之一,用于将两个或多个部件连接在一起,并保持它们之间的紧密配合。拧紧螺栓是一项基本的技术,但在实际操作中,许多工人并不了解正确的拧紧方法,从而导致螺栓松动、连接失效等问题的出现。因此…...
C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁
PublishFolderCleaner – Github 测试环境: .Net 8 Program.cs 代码 // https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK/tree/master/PublishFolderCleanerusing System.Diagnostics; using System.Text;// 名称, 不用写 .exe var exeName "AbpDemo&…...
[更新]ARCGIS之土地耕地占补平衡、进出平衡系统报备坐标txt格式批量导出工具(定制开发版)
序言 之前开发的耕地占补平衡报备格式,现在之前的基础上集成了耕地进出平衡报备格式导出。 之前版本软件详见:软件介绍 一、软件简介 本软件是基于arcgis二次开发的工具(插件),需要授权后才能使用; 本软件…...
todolist
一开始想自己写个todolist的网页,一直没时间,直接拿这个博客记录了,因为仅我可见比较麻烦,就放在全部可见记录了 目录 2024年3月todoes了解一下深入学习k8s,比如pod运行多个容器 ,编写自己的镜像 2024年2月…...
【Java程序设计】【C00307】基于Springboot的基Hadoop的物品租赁管理系统(有论文)
基于Springboot的基Hadoop的物品租赁管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的基于 Hadoop的物品租赁系统的设计与实现,本系统有管理员、用户二种角色权限; 前台首页&#…...
GIT中对子仓库的使用方法介绍
git 子仓库 主仓库中添加子仓库 git submodule add <url> <path>更新子代码代码 git submodule update --init克隆含有子仓库的仓库 git clone --recurse-submodules <url>主仓库中删除子仓库 1、进入包含子仓库的父仓库的根目录 2、使用以下命令将子仓…...
ClickHouse 指南(三)最佳实践 -- 跳数索引
Data Skipping Indexes Data Skipping Indexes 2 1、简介 影响ClickHouse查询性能的因素很多。在大多数情况下,关键因素是ClickHouse在计算查询WHERE子句条件时是否可以使用主键。因此,选择适用于最常见查询模式的主键对于有效的表设计至关重要。 然…...
Mybatis总结--传参二
#叫做占位符 Mybatis是封装的JDBC 增强版 内部还是用的jdbc 每遇到一个#号 这里就会变为?占位符 一个#{}就是对应一个问号 一个占位符 用这个对象执行sql语句没有sql注入的风险 八、多个参数-使用Param 当 Dao 接口方法有多个参数,需要通过名称使…...