C语言经典面试题及答案100道
# C语言经典面试题及答案100道
## 基础概念部分
1. **什么是C语言?**
- 答:C语言是一种通用的、过程式的计算机编程语言,由Dennis Ritchie于1972年在贝尔实验室开发,主要用于系统软件开发。
2. **C语言的特点是什么?**
- 答:特点包括:结构化语言、高效性、可移植性、丰富的运算符、内存管理、指针操作等。
3. **解释C语言中的关键字和标识符的区别**
- 答:关键字是C语言预定义的保留字,有特殊含义;标识符是用户定义的变量、函数等名称,不能与关键字冲突。
4. **C语言中的基本数据类型有哪些?**
- 答:基本数据类型包括:int、char、float、double和void。
5. **什么是变量?如何声明变量?**
- 答:变量是存储数据的命名内存位置。声明语法:`数据类型 变量名;` 如 `int age;`
## 运算符与表达式
6. **解释C语言中的算术运算符**
- 答:+ (加)、- (减)、* (乘)、/ (除)、% (取模)、++ (自增)、-- (自减)
7. **什么是运算符优先级?**
- 答:决定表达式求值顺序的规则,如 * / % 优先级高于 + -
8. **++i和i++有什么区别?**
- 答:++i是先自增再使用,i++是先使用再自增
9. **什么是三元运算符?**
- 答:条件运算符 `?:`,语法:`条件 ? 表达式1 : 表达式2`
10. **sizeof运算符的作用是什么?**
- 答:返回变量或数据类型的字节大小
## 控制结构
11. **C语言中有哪些控制语句?**
- 答:if-else、switch、for、while、do-while、break、continue、goto
12. **if和switch的区别是什么?**
- 答:if适用于范围判断和条件组合,switch适用于离散值匹配
13. **break和continue的区别?**
- 答:break终止整个循环,continue跳过当前迭代继续下一次循环
14. **如何实现无限循环?**
- 答:`while(1)` 或 `for(;;)`
15. **goto语句的优缺点是什么?**
- 答:优点:灵活跳转;缺点:破坏程序结构,难以维护
## 函数
16. **什么是函数?如何定义函数?**
- 答:函数是完成特定任务的代码块。定义:`返回类型 函数名(参数列表) { 函数体 }`
17. **函数声明和函数定义的区别?**
- 答:声明告诉编译器函数签名,定义提供函数实现
18. **什么是递归函数?**
- 答:直接或间接调用自身的函数
19. **什么是内联函数?**
- 答:用inline声明的函数,编译器尝试在调用处展开代码以减少函数调用开销
20. **main函数的返回值有什么意义?**
- 答:返回0表示成功,非0表示错误代码
## 数组与字符串
21. **如何声明和初始化数组?**
- 答:`int arr[5];` 或 `int arr[] = {1,2,3};`
22. **数组和指针的关系是什么?**
- 答:数组名是指向数组首元素的常量指针
23. **如何传递数组给函数?**
- 答:传递数组名(指针)和大小,如 `void func(int arr[], int size)`
24. **什么是二维数组?**
- 答:数组的数组,如 `int matrix[3][3];`
25. **字符串和字符数组的区别?**
- 答:字符串是以'\0'结尾的字符数组
## 指针
26. **什么是指针?**
- 答:存储内存地址的变量
27. **如何声明指针变量?**
- 答:`数据类型 *指针名;` 如 `int *ptr;`
28. **&和*运算符的作用是什么?**
- 答:&取地址,*解引用
29. **什么是空指针?**
- 答:值为NULL的指针,不指向任何有效内存
30. **什么是野指针?**
- 答:指向无效内存或已释放内存的指针
## 结构体与联合体
31. **什么是结构体?如何定义?**
- 答:用户自定义的复合数据类型。定义:
```c
struct Student {
char name[50];
int age;
};
```
32. **结构体和数组的区别?**
- 答:数组存储同类型元素,结构体可存储不同类型元素
33. **如何访问结构体成员?**
- 答:使用点运算符(.)或箭头运算符(->)
34. **什么是联合体?**
- 答:所有成员共享同一内存空间的数据结构
35. **结构体和联合体的区别?**
- 答:结构体成员有独立内存空间,联合体成员共享内存
## 动态内存管理
36. **malloc和calloc的区别?**
- 答:malloc分配未初始化的内存,calloc分配并初始化为0
37. **什么是内存泄漏?**
- 答:分配的内存未释放导致内存浪费
38. **free函数的作用是什么?**
- 答:释放动态分配的内存
39. **realloc函数的作用?**
- 答:调整已分配内存块的大小
40. **动态内存分配失败怎么处理?**
- 答:检查返回的指针是否为NULL,并采取适当措施
## 文件操作
41. **文件打开模式有哪些?**
- 答:"r"(读),"w"(写),"a"(追加),"r+"(读写),"w+"(读写),"a+"(读写追加)
42. **fopen和fclose的作用?**
- 答:fopen打开文件,fclose关闭文件
43. **文件读写函数有哪些?**
- 答:fgetc/fputc, fgets/fputs, fread/fwrite, fprintf/fscanf
44. **什么是文件指针?**
- 答:FILE类型的指针,指向文件流
45. **如何检测文件结束?**
- 答:feof函数或读取函数返回EOF
## 预处理器
46. **#include的作用是什么?**
- 答:包含头文件内容
47. **#define的用途?**
- 答:定义宏常量或宏函数
48. **宏和函数的区别?**
- 答:宏在预处理期展开,函数在运行时调用;宏无类型检查
49. **条件编译指令有哪些?**
- 答:#if, #ifdef, #ifndef, #else, #elif, #endif
50. **#pragma的作用?**
- 答:提供编译器特定指令
## 位操作
51. **C语言中的位运算符有哪些?**
- 答:&(与)、|(或)、^(异或)、~(取反)、<<(左移)、>>(右移)
52. **如何设置特定位?**
- 答:使用或操作 `var |= (1 << bit_position)`
53. **如何清除特定位?**
- 答:使用与操作 `var &= ~(1 << bit_position)`
54. **如何检查特定位?**
- 答:`if(var & (1 << bit_position))`
55. **交换两个变量的值,不使用临时变量?**
- 答:使用异或操作:
```c
a ^= b;
b ^= a;
a ^= b;
```
## 复杂指针
56. **什么是指针的指针?**
- 答:存储指针地址的指针,如 `int **pp;`
57. **函数指针是什么?**
- 答:指向函数的指针,如 `int (*funcPtr)(int, int);`
58. **如何使用函数指针?**
- 答:
```c
int add(int a, int b) { return a+b; }
int (*funcPtr)(int, int) = add;
funcPtr(2,3);
```
59. **什么是void指针?**
- 答:通用指针类型,可指向任何数据类型
60. **如何对void指针进行算术运算?**
- 答:必须先转换为具体类型的指针
## 存储类别
61. **auto、static、register、extern的区别?**
- 答:auto(默认,自动存储期)、static(静态存储期)、register(建议寄存器存储)、extern(外部链接)
62. **局部变量和全局变量的区别?**
- 答:局部变量在函数内定义,全局变量在函数外定义
63. **static关键字的作用?**
- 答:对变量:保持值不变;对函数:限制作用域到当前文件
64. **extern关键字的作用?**
- 答:声明变量或函数在其他文件中定义
65. **volatile关键字的作用?**
- 答:防止编译器优化,指示变量可能被意外修改
## 高级话题
66. **typedef的作用是什么?**
- 答:为现有类型创建别名
67. **枚举类型是什么?**
- 答:用户定义的整数常量集合
68. **const关键字的作用?**
- 答:定义常量,防止修改
69. **什么是回调函数?**
- 答:通过函数指针调用的函数
70. **解释左值和右值**
- 答:左值可出现在赋值左侧,有内存位置;右值是临时值
## 常见算法实现
71. **实现冒泡排序**
- 答:
```c
void bubbleSort(int arr[], int n) {
for(int i=0; i<n-1; i++)
for(int j=0; j<n-i-1; j++)
if(arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
```
72. **实现二分查找**
- 答:
```c
int binarySearch(int arr[], int l, int r, int x) {
while(l <= r) {
int mid = l + (r-l)/2;
if(arr[mid] == x) return mid;
if(arr[mid] < x) l = mid+1;
else r = mid-1;
}
return -1;
}
```
73. **实现链表反转**
- 答:
```c
struct Node* reverse(struct Node* head) {
struct Node *prev = NULL, *current = head, *next = NULL;
while(current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
return prev;
}
```
74. **实现斐波那契数列**
- 答:
```c
int fibonacci(int n) {
if(n <= 1) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
```
75. **实现字符串反转**
- 答:
```c
void reverseString(char* str) {
int l = 0, r = strlen(str)-1;
while(l < r) {
char temp = str[l];
str[l] = str[r];
str[r] = temp;
l++; r--;
}
}
```
## 常见问题
76. **什么是段错误?**
- 答:访问非法内存地址导致的错误
77. **如何避免内存泄漏?**
- 答:确保每个malloc/calloc都有对应的free
78. **什么是缓冲区溢出?**
- 答:向缓冲区写入超出其容量的数据
79. **如何防止缓冲区溢出?**
- 答:使用安全函数如strncpy代替strcpy,检查边界
80. **什么是悬垂指针?**
- 答:指向已释放内存的指针
## 代码分析题
81. **以下代码输出什么?为什么?**
```c
int main() {
int i = 5;
printf("%d %d %d", i++, i++, i++);
return 0;
}
```
- 答:输出不确定,因为参数求值顺序未定义
82. **以下代码有什么问题?**
```c
char *str = "Hello";
str[0] = 'h';
```
- 答:试图修改字符串常量,导致未定义行为
83. **以下代码输出什么?**
```c
int main() {
int a = 10, b = 20;
if(a = b)
printf("Equal");
else
printf("Not equal");
return 0;
}
```
- 答:输出"Equal",因为使用了赋值(=)而非比较(==)
84. **以下宏定义有什么问题?**
```c
#define SQUARE(x) x*x
```
- 答:当参数是表达式时会有问题,如SQUARE(2+3)展开为2+3*2+3=11而非25
85. **以下代码输出什么?**
```c
int main() {
int a[] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d %d", *(a+1), *(ptr-1));
return 0;
}
```
- 答:输出"2 5",因为&a+1跳过整个数组,ptr-1指向最后一个元素
## 编程题
86. **编写程序检查素数**
- 答:
```c
int isPrime(int n) {
if(n <= 1) return 0;
for(int i=2; i*i<=n; i++)
if(n%i == 0) return 0;
return 1;
}
```
87. **编写程序实现strcpy**
- 答:
```c
void my_strcpy(char *dest, const char *src) {
while((*dest++ = *src++) != '\0');
}
```
88. **编写程序计算字符串长度**
- 答:
```c
int my_strlen(const char *str) {
int len = 0;
while(*str++) len++;
return len;
}
```
89. **编写程序交换两个数**
- 答:
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
90. **编写程序计算阶乘**
- 答:
```c
int factorial(int n) {
if(n == 0) return 1;
return n * factorial(n-1);
}
```
## 综合问题
91. **大端和小端的区别?如何检测?**
- 答:大端:高位在前;小端:低位在前。检测代码:
```c
int checkEndian() {
int i = 1;
char *c = (char*)&i;
return *c ? 1 : 0; // 1为小端,0为大端
}
```
92. **解释栈和堆的区别**
- 答:栈:自动管理,大小固定,存储局部变量;堆:手动管理,大小灵活,存储动态分配内存
93. **什么是内存对齐?为什么重要?**
- 答:数据在内存中的起始地址是其大小的整数倍。提高访问效率,某些硬件要求对齐
94. **解释可变参数函数的实现**
- 答:使用stdarg.h中的va_list、va_start、va_arg、va_end宏
95. **什么是守护进程?如何创建?**
- 答:在后台运行的进程。创建步骤:fork()、setsid()、改变工作目录、关闭文件描述符等
## 最新标准
96. **C99和C11的主要新特性?**
- 答:C99://注释、变长数组、bool类型、复合字面量等;C11:多线程、匿名结构体/联合体等
97. **restrict关键字的作用?**
- 答:指示指针是访问数据的唯一方式,帮助编译器优化
98. **_Generic关键字的作用?**
- 答:提供类似C++函数重载的功能
99. **原子操作在C11中如何实现?**
- 答:使用<stdatomic.h>头文件中的原子类型和操作
100. **C语言未来的发展方向?**
- 答:更好的并行支持、安全性增强、与现代硬件特性匹配等
这些题目涵盖了C语言面试中的主要知识点,包括基础概念、语法细节、内存管理、算法实现等。准备面试时,建议不仅要记住答案,还要理解背后的原理,并能实际编写代码演示。
相关文章:
C语言经典面试题及答案100道
# C语言经典面试题及答案100道 ## 基础概念部分 1. **什么是C语言?** - 答:C语言是一种通用的、过程式的计算机编程语言,由Dennis Ritchie于1972年在贝尔实验室开发,主要用于系统软件开发。 2. **C语言的特点是什么…...
RocketMQ 顺序消息实现原理详解
RocketMQ 的顺序消息实现原理主要围绕生产者发送顺序性、Broker存储顺序性和消费者消费顺序性三个核心环节展开,具体分为全局有序和分区有序两种模式。 一、顺序消息的分类 1. 全局有序 定义:某个Topic下所有消息严格按FIFO顺序处理。实现:…...
SpringBoot与GeoHash整合,实现骑手就近派单功能
通过使用GeoHash结合Redis的地理空间功能,能够实时管理和查询骑手的位置信息,并根据订单量和评分等因素动态分配最近的骑手来完成配送任务. 空间索引: GeoHash是一种将地理坐标(经纬度)编码为字符串的算法,可以用于空间索引。 这使得我们可以方便地在Redis这样的内存数据库…...
spark任务的提交流程
目录 spark任务的提交流程1. 资源申请与初始化2. 任务划分与调度3. 任务执行4. 资源释放与结果处理附:关键组件协作示意图扩展说明SparkContext介绍 spark任务的提交流程 用户创建一个 Spark Context;Spark Context 去找 Cluster Manager 申请资源同时说明需要多少 CPU 和内…...
阿博图书馆管理系统 Java+Spring Boot+MySQL 实战项目分享
一、项目简介 为了提升图书馆的管理效率和用户体验,我们基于 Java Spring Boot MySQL 开发了一款完整的图书馆管理系统 —— 阿博图书馆管理系统。系统采用前后端分离架构,功能模块丰富,操作逻辑清晰,适合用于毕业设计、实训项…...
es学习小结
1.客户端类型 推荐场景 版本兼容性 Elasticsearch Java API Client 新项目、ES 8.x集群 8.x及以上 Spring Data Elasticsearch Spring生态项目、简化ORM操作 ES 7.x-8.x(需版本匹配) Low-Level REST Client 需要底层HTTP控制、兼容多版本ES …...
【数据库课程设计】网上投票管理系统
目录 前言: 一,系统需求分析 1,需求概述 2,系统功能图 3,业务流程图 业务流程分析 业务流程图 4,数据流程图 5,数据字典 二,概念结构设计 1,实体分析 2&am…...
STM32+ESP8266+ONENET+微信小程序上传数据下发指令避坑指南
之前只做过类似的但是以为这种烂大街的功能应该不难结果还是踩了不少坑,记录几个需要注意的点 1、创建产品的时候选择onejson,自定义方案。这样选择的就是物模型,之后可以去使用物模型的API调试。 2、设置物模型 大概有以下几种比较常用的&…...
不同消息队列保证高可用实现方案
消息队列的高可用性(High Availability, HA)是分布式系统中的核心需求,不同消息队列通过多种技术手段实现高可用。以下是主流消息队列的高可用实现方案及对比: 一、Apache Kafka 副本机制(Replication) 每个…...
Android 蓝牙开发 - 蓝牙相关权限(蓝牙基本权限、Android 12 蓝牙新增权限、位置权限)
蓝牙基本权限 1、基本介绍 <uses-permission android:name"android.permission.BLUETOOTH" />BLUETOOTH:允许应用连接配对的蓝牙设备 <uses-permission android:name"android.permission.BLUETOOTH_ADMIN" />BLUETOOTH_ADMIN&am…...
【Linux】第二十一章 管理存储堆栈
1. 分别说明LVM中物理卷、物理区块、卷组、逻辑卷的概念以及它们之间的关系。 在 LVM (Logical Volume Management) 中,硬盘的管理变得更加灵活,允许动态地调整磁盘空间的分配。 物理卷(PV):LVM使用底层物理设备&…...
OpenCV 人脸识别:从基础到实践全解析
在人工智能与计算机视觉蓬勃发展的今天,人脸识别技术已深入我们生活的方方面面,从手机解锁到安防监控,其应用无处不在。而 OpenCV 作为计算机视觉领域最受欢迎的开源库之一,为开发者提供了一套高效且易用的人脸识别解决方案。本文…...
【HTML-2】HTML 标题标签:构建网页结构的基础
在网页开发中,标题标签(<h1>到<h6>)是构建内容层次结构和语义化标记的基础元素。这些标签不仅影响内容的视觉呈现,更对网页的可访问性和SEO有着深远影响。 1. 标题标签的基本用法 HTML提供了六个级别的标题标签: <h1>这…...
vue3前端后端地址可配置方案
在开发vue3项目过程中,需要切换不同的服务器部署,代码中配置的服务需要可灵活配置,不随着run npm build把网址打包到代码资源中,不然每次切换都需要重新run npm build。需要一个配置文件可以修改服务地址,而打包的代码…...
HTML应用指南:利用POST请求获取全国申通快递服务网点位置信息
申通快递(STO Express)作为中国领先的综合物流服务商,自1993年创立以来,始终秉持“正道经营、长期主义”的发展理念,深耕快递物流领域,开创了行业加盟制先河。经过30余年的发展,申通已成长为国家…...
《医院运营管理典型应用数据资源建设指南2025》全面分析
引言:医院数据资源建设的时代背景与意义 医院运营管理数据资源建设正迎来前所未有的发展机遇与挑战。在深化支付改革与公立医院高质量发展政策驱动下,医院亟需建立智慧化运营管理体系,而数据资源作为关键要素,其建设水平直接关系到医院管理的科学性与效率。《医院运营管理…...
.NET外挂系列:3. 了解 harmony 中灵活的纯手工注入方式
一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些…...
taro 小程序 CoverImage Image src无法显示图片的问题
目录 一、问题描述 二、解决方案 一、问题描述 使用taro开发的微信小程序图片无法正常显示,并报如下错误: [渲染层网络层错误] Failed to load local image resource /assets/icon/message.png the server responded with a status of 500 (HTTP/1.…...
05_核支持向量机
描述 核支持向量机(通常简称为SVM)可以推广到更复杂模型的扩展,这些模型无法被输入空间的超平面定义。 SVM 的核心思想是找到一个最优的超平面,将不同类别的数据分开。这个超平面不仅要能够正确分类数据,还要使得两个…...
[解决方案] Word转PDF
背景: 之前做过一些pdf导出, 客户提了一个特别急的需求, 要求根据一个模版跟一个csv的数据源, 批量生成PDF, 因为之前用过FOP, 知道调整样式需要特别长的时间, 这个需求又特别急, 所…...
Oracle 11g post PSU Oct18 设置ssl连接(使用wallets)
说明 oracle 11g 从PSU 2018Oct(含)及之后的补丁不支持MD5. 要使用JDBC SSL要使用TSL1.2. 有两种方法,一种使用wallet, 一种使用JKS. 本文档使用wallets. 1. 为什么用TSL 1.2 https://blogs.oracle.com/developers/post/ssl-connection-to…...
linux关闭某端口暂用的进程
查看是哪个端口暂用 sudo netstat -tulpn | grep :80根据图片 显示 80端口暂用的 进程id是 3002 结束进程id为3002的进程 sudo kill -9 3002...
web开发全过程总结
目录 利用pnpm创建vue3的文件 使用pnpm创建项目 项目配置 在idea中创建Spring Boot项目 配置基础项目架构(三层架构) 利用pnpm创建vue3的文件 1.打开cmd,以管理员的身份运行 2.切换到自己想要建立项目的文件的目录下或者直接在文件中以cmd的形式打开 输入指令安装pnpm n…...
经典Java面试题的答案——Java 基础
大家好,我是九神。这是互联网技术岗的分享专题,废话少说,进入正题: 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境…...
Fiddler 指定链接断点
问题背景 在使用Fiddler进行抓包和mock数据时,由于前端页面通常依赖多个前置接口(如JS、CSS、登录态等),导致抓包过程中难以精准定位到目标接口。这种复杂性增加了调试和mock数据的难度。 常见挑战 前置接口过多:页…...
C# 语法篇:字段的定义和运算
对于字段来说,是在对象创建时就被初始化了;而构造函数的运行是在这之后。 因此,不能对字段进行需要用到“构造函数赋值的变量”的运算,因为此时这些变量的值都为0或者随机值,编译器不允许这时候做运算。 因此…...
音频应用的MediaSession冲突
前提条件 系统级应用,使用了sharedUserId 应用在AndroidManifest.xml中声明了系统级UID:android:sharedUserId"android.uid.system"该配置使应用具有系统级权限,可以访问系统级API和资源 使用MediaSession框架 应用通过MediaSessi…...
【QT】类A接收TCP数据并通过信号通知类B解析
以下是基于Qt的完整示例代码,包含类A接收TCP数据并通过信号通知类B解析的实现: ------------------ ClassA.h 网络数据接收类 ------------------ #pragma once#include <QTcpServer> #include <QTcpSocket> #include <QObject>class…...
【Jitsi Meet】(腾讯会议的平替)Docker安装Jitsi Meet指南-使用内网IP访问
Docker安装Jitsi Meet指南-使用内网IP访问 下载官方代码配置环境变量复制示例环境文件并修改配置:编辑 .env 文件: 修改 docker-compose.yml 文件生成自签名证书启动服务最终验证 腾讯会议的平替。我们是每天开早晚会的,都是使用腾讯会议。腾…...
微服务架构中的多进程通信--内存池、共享内存、socket
目录 1 引言 2 整体架构简介 3 疑问 3.1 我们的共享内存消息机制是用的posix还是system V 3.2 rmmt中,不同线程之间的比如访问同一个内存,用的什么锁控制的 3.3 疑问:假如一个进程发送给了另外两个进程,然后另外两个进程都同…...
使用 adb 命令截取 Android 设备的屏幕截图
使用 adb 命令截取 Android 设备的屏幕截图。以下是两种常见的方法: 方法一:截屏后保存到电脑 adb shell screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png解释: adb shell screencap -p /sdcard/screenshot.png&…...
Jenkins服务器配置密钥对
1. 在 Jenkins 服务器上执行以下命令 # 生成 SSH 密钥对 ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""# 查看公钥内容 cat ~/.ssh/id_rsa.pub 2. 将显示的公钥内容复制,然后在目标服务器上执行 # 在目标服务器上执行 mkdir -p /root/.ssh chmod …...
Docker中部署Alertmanager
在 Docker 中部署 Alertmanager(通常与 Prometheus 告警系统配合使用)的步骤如下: 一、拉取镜像prom/alertmanager docker pull prom/alertmanager二、 创建 Alertmanager 配置文件 首先准备Alertmanager的配置文件 alertmanager.yml(如存…...
Keil软件中STM32(ARM)与C51兼容方法
推荐其他UP主:Keil5安装教程(包含C51与MDK共存) - Kojull - 博客园 我已经实现了!...
青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布
青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布 一、准备工作1. 创建和配置项目2. 编写代码和测试3. 文档注释 二、构建发布版本1. 构建优化后的可执行文件2. 静态链接(可选) 三、发布到 crates.io1. Crates.io核心功能使用方法特点最新动态 2…...
一洽小程序接入说明
接入说明 文档以微信小程序作为示例介绍,其他小程序接入操作与此类似 1、添加校验文件 开发者使用微信小程序提供的 webview 组件可以实现打开一洽的H5对话 小程序的“域名配置”中添加一洽的对话域名地址,需要获取校验文件提供给一洽放在域名根目录下…...
RabbitMQ的基本使用
RabbitMQ 是一个非常流行的消息中间件,用于实现生产者与消费者之间的异步通信。它基于 AMQP 协议(高级消息队列协议),支持多种编程语言和平台。 以下是 RabbitMQ 的基本使用说明,包括安装、核心概念、基本操作和 Pyth…...
CSS专题之常见布局
前言 石匠敲击石头的第 13 次 作为一名前端开发,在日常开发中,写页面是必不可少的工作,但有时候发现很多的页面结构都是类似的,所以打算写一篇文章来梳理一下日常开发中常见的布局,如果哪里写的有问题欢迎指出。 单列…...
CentOS 7连接公司网络配置指南
在物理主机上安装了一个CentOS 7,需要连接公司的网络,但是公司的网络需要输入用户名密码才能连接 解决方案 需要 同时设置 wifi-sec.key-mgmt 和 802-1x 参数。以下是分步操作: 1. 创建基础 Wi-Fi 连接 sudo nmcli con add con-name &quo…...
RustDesk CentOS自建中继节点
一、需开放端口 TCP: 21115, 21116, 21117, 21118, 21119 UDP: 21116 二、安装docker 1.使用 root 权限登录 CentOS。确保 yum 包更新到最新 yum update 2. 卸载旧版本 yum remove docker 3. 安装 Docker 所需依赖 yum -y install yum-utils device-mapper-persistent-d…...
CentOS 7上部署BIND9 DNS服务器指南
场景假设: 我们要为内部网络 192.168.1.0/24 搭建一个权威 DNS 服务器。 域名:mylab.localDNS 服务器 IP:192.168.1.10我们将配置正向解析 (hostname -> IP) 和反向解析 (IP -> hostname)。 一、安装 BIND9 更新系统并安装 BIND 及工…...
面试突击:消息中间件之RabbitMQ
一:你们项目中哪里用到了RabbitMQ ? 难易程度:☆☆☆ 出现频率:☆☆☆☆ 我们项目中很多地方都使用了RabbitMQ , RabbitMQ 是我们项目中服务通信的主要方式之一 , 我们项目中服务通信主要有两种方式实现 : 通过Feign实现服务调用通过MQ实现服…...
基于 ESP32 与 AWS 全托管服务的 IoT 架构:MQTT + WebSocket 实现设备-云-APP 高效互联
目录 一、总体架构图 二、设备端(ESP32)低功耗设计(适配 AWS IoT) 1.MQTT 设置(ESP32 连接 AWS IoT Core) 2.低功耗策略总结(ESP32) 三、云端架构(基于 AWS Serverless + IoT Core) 1.AWS IoT Core 接入 2.云端 → APP:WebSocket 推送方案 流程: 3.数据存…...
将 /dev/vdb1 的空间全部合并到 /dev/mapper/centos-root(即扩展 CentOS 的根分区)
要将 /dev/vdb1 的 1TB 空间合并到 /dev/mapper/centos-root(即扩展 CentOS 的根分区),可以采用 LVM(逻辑卷管理) 的方式。以下是详细步骤: 步骤 1:检查当前磁盘和 LVM 情况 1.1 确认 /dev/vdb…...
CentOS Stream安装MinIO教程
1. 下载 MinIO 二进制文件 # 进入 MinIO 安装目录 sudo cd /usr/local/bin/# 下载 MinIO 二进制文件(替换为最新版本链接) wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod x minio2. 创建专用用户和存储目录 # 创建 minio 用户…...
游戏引擎学习第299天:改进排序键 第二部分
回顾并为当天内容做准备 我们会现场编写完整的游戏代码。回顾上周发现自己对游戏中正确的排序规则并没有清晰的理解。主要原因是我们更擅长三维游戏开发,缺乏二维游戏和二维游戏技术的经验,对于二维精灵排序、模拟三维效果的最佳方案等没有太多技巧和经…...
设计模式----软考中级软件设计师(自用学习笔记)
目录 1、设计模式的要素 2、设计模式的分类 3、简单工厂模式 4、工厂方法 5、抽象工厂 6、生成器 7、原型 8、单例模式 9、适配器 10、桥接 11、组合模式 12、装饰 13、外观 14、享元 15、代理 16、责任链 17、命令 18、解释器 19、迭代器 20、中介者 21、…...
uniapp如何设置uni.request可变请求ip地址
文章目录 简介方法一:直接在请求URL中嵌入变量方法二:使用全局变量方法三:使用环境变量方法四:服务端配置方法五:使用配置文件(如config.js):总结 简介 在uni-app中,uni.request 用…...
Centos上搭建 OpenResty
一、OpenResty简介 OpenResty 是基于 Nginx 的扩展平台,完全兼容 Nginx 的核心功能(如 HTTP 服务和反向代理),同时通过内嵌 LuaJIT 支持,允许开发者用 Lua 脚本灵活扩展业务逻辑。它简化了动态逻辑的实现。 二、安装…...
Kotlin与物联网(IoT):Android Things开发探索
在物联网(IoT)领域,Kotlin 凭借其简洁性、安全性和与 Java 生态的无缝兼容性,逐渐成为 Android Things 开发的有力工具。尽管 Google 已于 2022 年宣布停止对 Android Things 的官方支持,但其技术思想仍值得探索&#…...