ESP8266

一、简介

ESP8266:芯片

ESP8266-NodeMCU:方便对ESP8266芯片操作。

模块内嵌TCP/IP协议栈,可以实现串口、WIFI之间的数据转换传输。

产品特性

支持无线802.11b/g/n三种标准 支持STA/AP+STA+AP三种工作模式 支持TCP/IP协议栈,支持多路TCP Client连接 内置丰富的Socket AT指令 支持UART/GPIO数据通信接口 支持Smart Link 智能联网功能 适合电池供电应用 3.3V单电源供电

1、ATK-MW8266D 引脚功能

注意:IO_0引脚用于固件烧写,低电平有效

2、ATK-ESP-01引脚功能

3、串口配置

默认UART通讯配置参数

参数参数值
波特率115200bps
数据位8
停止位1
校验位

4、工作模式

(1)STA

在此模式下,ATK-MW8266D 模块可连接其他设备提供的无线网络,例如通过 WIFI 连接至路由器,从而可以访问互联网,进而实现手机或电脑通过互联网实现对设备的远程控制。STA也可以理解为终端的意思,每一个连接到无线网络中的终端(例如笔记本电脑,芯片等其他可以联网的设备)都可以成为一个STA站点。

通俗:在此模式下,该模块相当于一个用户,需要链接外部的wifi(或自己的热点),通过链接的WiFi进行与其他设备的通信。

(2)AP

AP是无线接入点,是一个无线网络的创建者,是网络的中心节点。板块自身充当路由器角色,可以产生热点由其他设备查询到并接入。

通俗:在此模式下,该模块相当于提供了一个热点,创建一个小范围的局域网,只要和他连接就能与其进行通信。

(3)STA+AP

该模式为 STA 模式与 AP 模式共存的一种模式,ATK-MW8266D 模块既能连接至其他

设备提供的无线网络,又能作为热点,供其他设备连接,以实现广域网与局域网的无缝切换,

方便操作使用。

5、AT指令说明

通过串口将AT指令传输到ESP8266中去,ESP8266便可以开始工作;后面的单片机控制,也是通过AT指令对模块进行作用。

AT指令可以细分为四种类型,如表所示:

类型指令格式描述
测试类型AT+< CMD >=?该命令用于查询设置指令的参数以及取值范围
查询类型AT+< CMD >?该命令用于返回参数的当前值
设置类型AT+< CMD >=<...>该命令用于设置用户自定义的参数值
执行类型AT+< CMD >该命令用于执行受模块内部程序控制,且参数不可变的功能。

注意:①注意串口RXD,TXD线的连接

②是否需要对模块进行固件烧录

③AT指令必须大写,且每条指令都需以回车换行符结尾“\r\n”;

④串口波特率与模块是否一致。

⑤ 使用双引号表示字符串数据,例如:AT+CWJAP=”ALIENTEK”,”15902020353”。

二、固件烧录

1、需要的资料

2、硬件连接

①串口:ESP8266的串口引脚与开发板的USART1串口进行交叉连接 (TXD--RXD) (RXD--TXD)。

②电源:VCC接5v,GND接地,IO_0需要连接至GND;

IO_0引脚用于固件烧写,低电平有效

3、硬件连接

3.1 打开“flash_tool”软件

选择“chip Type(芯片类型)”为“ESP8266”、"workMode(工作模式)"为”develop“,如下图所示:

3.2 点击擦除“ERASE”

配置好模式并进入软件后,选择待烧录固件的bin文件,并设置好bin文件烧录至芯片的地址信息,一定要打勾,然后选择下面的串口,首先先擦除ERASE。

3.3 擦除成功后,点击“START”
3.4 “START”成功后的信息

注意:烧写成功后一定要重启ESP8266,然后拔掉IO_0。

3.5 START显示成功后,使用串口助手

输入“AT"指令,注意换行,只要串口助手回复”OK“,表明固件烧写成功。

三、TCP透传实验

(1)配置模块为AP模式并且模块作为服务器

指令集:

AT+CWMODE=2//设置AP模式

AT+RST//重启⽣效

AT+CWSAP="ATK-MW8266D","12345678",1,4//设置 AP 参数。SSID 为 ATK-MW8266D、密

码为 12345678、 通道为 1、加密方式为 WPA_WPA2_PSK

AT+CIPMUX=1//开启多连接

AT+CIPSERVER=1,8086//开启 SERVER 模式,端⼝号为 8086

注:AT 指令必须⼤写,且每条指令都需以回⻋换⾏符结尾

3.1.1 命令截图
① AT+CWMODE=2

② AT+RST
③ AT+CWSAP="ATK-MW8266D","12345678",1,4
④ AT+CIPMUX=1
⑤ AT+CIPSERVER=1,8086
3.1.2 配置完成后,显示对应WIFI

密码就是12345678

(1)手机下载网络调试精灵。

(2)打开“网络调试精灵”,点击客户端

(3)在手机给电脑发送数据前,首先需要使用串口去查找主机号(主机的ip地址):AT+CIFSR

(4)填写主机号和端口号

(5)显示连接成功

(6)手机发送信息给主机

通过串口接受信息

(7)主机要是给主机发送信息,需要输入指令"AT+CIPSEND=0,5",0表示从机的ip,5表示发送多少数据。

以上便是,在AP模式下,ESP8266作为服务器双方通信的建立;

从机断开连接会显示如下图所示

如下图所示,是手机上接收到的信息

(2) 配置板块为AP模式并且作为客户端

指令集:

AT+CWMODE=2//设置为 AP 模式

AT+RST//重启⽣效

AT+CWSAP="ATK-MW8266D", "12345678",1,4//设置 AP 参数。SSID 为 ATK-MW8266D、密

码为 12345678、 通道为 1、加密⽅式为 WPA_WPA2_PSK

AT+CIPMUX=0//开启单连接

AT+CIPSTART="TCP","192.168.4.xxx",8086//建⽴ TCP 连接到 192.168.4.XXX:8086

AT+CIPMODE=1//开启透传模式(仅单连接 Client 时⽀持)

AT+CIPSEND//开始发送数据

3.2.1 命令截图

①②③和上面(1)是一样的。

④开启单连接
⑤建立TCP连接
⑥开启透传模式
⑦开始发送数据

①这里都是手机(服务器端)给电脑(客户端)发的信息,在一个缓冲区中(可能是没有换行)。

当手机(服务端)建立成功后,一直在监听事件。后面有人连接他,会发送http报头(类似三次握手四次挥手的connect操作),后续主从机交互信息,在此期间,只要从机不断开连接,④就不会消失。

如图所示是断开连接后的,④就会消失。

易错点:一定要关闭防火墙,不然连不上。还有手机和电脑必须连上同一个网络就是下图这个

(3) 配置模块为STA模式并且作为服务器

指令集:

AT+CWMODE=1//设置为 STA 模式

AT+RST//重启⽣效

AT+CWLAP //显示目前可以搜到的WIFI信号

AT+CWJAP=”ATK-MW8266D”, ”12345678”//加⼊ WiFi 热点。SSID:ATK-MW8266D、密码:

12345678

AT+CIPMUX=1//开启多连接

AT+CIPSERVER=1,8086//开启 SERVER 模式,端⼝号为 8086

AT+CIPSEND=0,5//向 ID0 发送 5 字节数据包

3.3.1命令截图
①设置为STA模式
②重启
③显示目前可以搜到的WIFI信号
④加⼊ WiFi 热点。SSID:xxx 密码:xxx

注意:AT+CWJAP=后面跟的是你要连接的热点和密码,这个和AP不一样,而且这个WIFI的AP频段是2.4GHz不是5 GHz!!!

⑤开启多连接
⑥开启 SERVER 模式,端⼝号为 8086
⑦连接客户端

其中,主机号依旧是利用:AT+CIFSR 查询;端口号,8086;

⑧给客户端回复数据

(4) 配置模块为STA模式并且作为客户端

指令集:

AT+CWMODE=1//设置为STA 模式

AT+RST//重启⽣效

AT+CWJAP=”ATK-MW8266D”, ”12345678”//加⼊ WiFi 热点。SSID:ATK-MW8266D、密码:

12345678

AT+CIPMUX=0//开启单连接

AT+CIPSTART=”TCP”, ”192.168.4.XXX”,8086//建⽴ TCP 连接到 192.168.4.XXX:8086

AT+CIPMODE=1//开启透传模式(仅单连接 Client 时⽀持)

AT+CIPSEND//开始发送数据

3.4.1 命令截图
①加入WIFI热点
②开启单连接
③建立TCP连接

重点:AT+CIPSTART=此处需要填的是手机端的IP(自动生成)与端口号(端口号自行设置);此时ESP8266作为客户端。它需要主动去连接手机;

错误示范:

连接一个已经关闭的服务器端,会显示ERROR信息,并告诉客户端这个服务器端关闭

正确操作:
④开启透传模式(仅单连接 Client 时⽀持)
⑤开始发送数据

四、连接原子云服务器

4.1 创建设备

原子云的网址:原子云-用户登录创建并登入账号;

接着在弹出的窗口中,根据 ATK-MW8266D 模块的设备类型选择“ESP8266”

随后根据个人喜好填入“设备名称”和“密码”(这里的密码在就是 ATK-MW8266D 模块通过 AT

指令连接原子云时需要的密码),如下图所示:

最后,点击“新增”按钮,即可创建设备,设备创建好后,如下图所示:

创建好设备后,系统会自动为设备生成编号,这个设备编号就是 ATK-MW8266D 模块

使用 AT 指令连接原子云时需要的设备 ID。

4.2 连接原子云

创建好设备后,系统会自动为设备生成编号,这个设备编号就是 模块 使用 AT 指令连接原子云时需要的设备 ID。

创建好设备后,就能后根据设备的编号和密码并通过 AT 指令操作 ATK-MW8266D 模块

连接原子云了。具体的 AT 指令如下所示:

AT+CWMODE=1 /* 使能 ATK-MW8266D 模块的 STA 模式,以连接路由器的 AP */

AT+CWJAP=”ALIENTEK-YF”,”15902020353” /* 连接路由器的 AP,以访问互联网 */

AT+ATKCLDSTA=”71103822668332005526”,”12345678” /* 连接原子云服务器 */

注意:连接原子云服务器时那个命令后面不能有空格,我就是因为这个原因卡了好长时间

当串口调试助手显示“CLOUD CONNECTED”后,说明已成功连接上原子云服务器, 此时在原子云的设备管理界面,也能够看到对应的设备显示为“已连接”的连接状态,如下图所示:

4.3 发送信息

当模块成功连接原子云服务器后,即进入了透传模式,此时就能够在原子云的对应设备的“消息收发”操作界面通过原子云服务器发送消息至模块,同时,也能后在该界面下,查看到接收自 模块的消息.

五、串口与AT指令

通过usart3发送AT指令,然后通过Usart3接收口接受回的OK

#include "stm32f4xx.h"                  // Device header
#include "stdio.h"
#include "stdlib.h"uint8_t num = 0;
uint8_t buf[256];
uint8_t flag = 0;void My_UsartInit(void)
{GPIO_InitTypeDef      GPIO_InitStructure;GPIO_InitTypeDef      GPIO_InitStructure1;USART_InitTypeDef     USART_InitStructure;/*使能GPIOA 的时钟*/RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);/*使能串口1 的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;             //设置GPIO为复用模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //设置GPIO速率为50MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;         //不使用上拉,下拉GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  //GPIO Pin 设置GPIO_Init(GPIOA,&GPIO_InitStructure);    //GPIOA_9 初始化GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure1);/* 多功能引脚的配置,将PA9和PA10连接到串口1 */GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);   GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);USART_InitStructure.USART_BaudRate = 115200;    //波特率的配置USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8位的数据位USART_InitStructure.USART_StopBits = USART_StopBits_1;  //1个停止位USART_InitStructure.USART_Parity = USART_Parity_No; //无校验USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	//无流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //支持数据的发送与接收USART_Init(USART1, &USART_InitStructure);USART_Cmd(USART1,ENABLE); //使能串口
}//重定向printf
int fputc(int ch, FILE *f)
{USART_SendData(USART1,ch);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET); return ch;
}
void Usart1_SendString(uint8_t *string)
{uint8_t i;for(i = 0; string[i] != '\0'; i++){USART_SendData(USART1,string[i]);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);}
}
/********************************************初始化USART3 相关USART3_TX: 向模块发送AT指令USART3_RX: 接收模块返回的应答号
*/
void My_Usart3Init(void)
{GPIO_InitTypeDef      GPIO_InitStructure;GPIO_InitTypeDef      GPIO_InitStructure1;GPIO_InitTypeDef      GPIO_InitStructure2;USART_InitTypeDef     USART_InitStructure;/*使能GPIOB 的时钟*/RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);/*使能串口3 的时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;             //设置GPIO为复用模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //设置GPIO速率为50MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;         //不使用上拉,下拉GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  //GPIO Pin 设置GPIO_Init(GPIOB,&GPIO_InitStructure);    //GPIOA_9 初始化GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure1);/* 配置PB0 作为模块的复位引脚 */GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure2.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_100MHz;GPIO_Init(GPIOB,&GPIO_InitStructure2);/* 多功能引脚的配置,将PA9和PA10连接到串口1 */GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3);   GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3);USART_InitStructure.USART_BaudRate = 115200;    //波特率的配置USART_InitStructure.USART_WordLength = USART_WordLength_8b; //8位的数据位USART_InitStructure.USART_StopBits = USART_StopBits_1;  //1个停止位USART_InitStructure.USART_Parity = USART_Parity_No; //无校验USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	//无流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //支持数据的发送与接收USART_Init(USART3, &USART_InitStructure);/*******************************///usart3中断配置USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);NVIC_InitTypeDef Struct;Struct.NVIC_IRQChannel = USART3_IRQn;Struct.NVIC_IRQChannelCmd = ENABLE;Struct.NVIC_IRQChannelPreemptionPriority = 1;Struct.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&Struct);USART_ClearITPendingBit(USART3,USART_IT_RXNE);USART_Cmd(USART3,ENABLE); //使能串口
}void Usart3_SendString(uint8_t *string)
{uint8_t i;for(i = 0; string[i] != '\0'; i++){USART_SendData(USART3,string[i]);while(USART_GetFlagStatus(USART3,USART_FLAG_TXE) == RESET);}
}void USART3_IRQHandler(void)
{uint8_t data;if(USART_GetITStatus(USART3,USART_IT_RXNE) == SET){if(flag == 0){buf[num] = USART_ReceiveData(USART3);num ++;}USART_ClearITPendingBit(USART3,USART_IT_RXNE);}if(USART_GetITStatus(USART3,USART_IT_IDLE) == SET){flag = 1;num = 0;}USART_ClearITPendingBit(USART3,USART_IT_IDLE); }

以上是关于ESP8266的基础入门篇

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

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

相关文章

阿里云优惠券一键领取入口分享

阿里云作为国内领先的云计算服务提供商&#xff0c;以其稳定、高效的服务赢得了广大用户的信赖。为了吸引更多用户上云&#xff0c;阿里云经常推出各种优惠活动&#xff0c;其中就包括阿里云优惠券。本文将为大家分享阿里云优惠券一键领取入口&#xff0c;帮助大家快速获取优惠…

【ONE·基础算法 || 链表】

总言 主要内容&#xff1a;编程题举例&#xff0c;熟悉理解单链表类题型。       文章目录 总言1、链表2、两数相加&#xff08;medium&#xff09;2.1、题解 3、两两交换链表中的节点&#xff08;medium&#xff09;3.1、题解 4、重排链表&#xff08;medium&#xff09;4…

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品。 具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数…

【键值皆有序map 线段树 数学 】100240. 最小化曼哈顿距离

本文涉及知识点 键值皆有序map 线段树 数学 LeetCode100240. 最小化曼哈顿距离 给你一个下标从 0 开始的数组 points &#xff0c;它表示二维平面上一些点的整数坐标&#xff0c;其中 points[i] [xi, yi] 。 两点之间的距离定义为它们的曼哈顿距离。 请你恰好移除一个点&am…

PySpark的学习

一. 什么是PySpark 使用过的bin/pyspark 程序 , 要注意 , 这个只是一个 应用程序 , 提供一个 Python 解释器执行环境来运行 Spark 任务 现在说的 PySpark, 指的是 Python 的运行类库 , 是可以在 Python 代码中 :import pyspark PySpark 是 Spark 官方提供的一个 Python …

后端SpringBoot+Mybatis 查询订单数据库奇怪报错加一

排错过程&#xff1a; 看报错意思是SQL语句存在错误&#xff0c;然后使用图形化工具运行这个SQL语句 其实这里稍微细心想一下就能发现问题&#xff0c;但是当时没深入想&#xff0c;就觉得order表前加了数据库名字影响不大&#xff0c;所以感觉SQL语句是没问题的&#xff0c;然…

C语言 05 变量与常量

变量 变量就像在数学中学习的 x&#xff0c;y 一样&#xff0c;可以直接声明一个变量&#xff0c;并利用这些变量进行基本的运算&#xff0c;声明变量的格式为&#xff1a; 数据类型 变量名称 初始值;&#xff08;其中初始值可以不用在定义变量时设定&#xff09; 是赋值操作…

HarmonyOS实战开发-switch、chart组件的使用

介绍 本篇Codelab基于switch组件和chart组件&#xff0c;实现线形图、占比图、柱状图&#xff0c;并通过switch切换chart组件数据的动静态显示。要求实现以下功能&#xff1a; 实现静态数据可视化图表。打开开关&#xff0c;实现静态图切换为动态可视化图表。 相关概念 swit…

3. WiFi基本原理

1. WiFi简介 WiFi的全称是Wireless Fidelity。它是一种无线网络通信技术&#xff0c;由Wi-Fi联盟拥有&#xff0c;目的是改善基于IEEE 802.11标准的无线网络产品之间的互通性&#xff0c;允许电子设备在没有物理连接的情况下进行高速数据传输。此外&#xff0c;WiFi也被视为IE…

Holiday Notice

Holiday Notice 放假通知 要是每个公司都能放假放的多&#xff0c;把加班折算放假落实到位&#xff0c;还怕我们不努力干活&#xff0c;巴不得把全年都干完了&#xff0c;然后休息。

python爬取B站视频

参考&#xff1a;https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题&#xff0c;请求头需要修改&#xff0c;上代码&#xff1a; import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…

区间预测 | Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 Matlab实现带有置信区间的GRNN广义回归神经网络时间序列未来趋势预测 带有置信区间的GRNN(广义回归神经网络)时间序列未来趋势预测结合了广义回归神经网络(GRNN)的预测能力和置信区间的统计度量,以提供对未来…

云备份项目认识、环境搭建以及所使用的库的介绍

一、云备份认识 将本地计算机一个受监管的文件夹的文件上传到服务器中&#xff0c;有服务器组织&#xff0c;客户端可以通过网页将文件查看并且下载下来&#xff0c;下载过程支持断点续传功能&#xff0c;并且服务器会对上传的文件进行热点管理&#xff0c;长时间没人访问的文…

内网穿透时报错【Bad Request This combination of host and port requires TLS.】的原因

目录 前言&#xff1a;介绍一下内网穿透 1.内网直接https访问&#xff08;可以正常访问&#xff09; 程序配置的证书 2.内网穿透后,通过外网访问 3.原因 4.内网非https的Web应用&#xff0c;使用https后&#xff0c;也变成了https访问 5.题外话 感觉自己的web应用配置了…

使用 Seq2Seq 模型进行文本摘要

目录 引言 1 导入数据集 2 清洗数据集 3 确定允许的最大序列长度 4 选择合理的文本和摘要 5 对文本进行标记 6 删除空文本和摘要 7 构建模型 7.1 编码器 7.2 解码器 8 训练模型 9 测试模型 10 注意 11 整体代码 引言 文本摘要是指在捕捉其本质的同时缩短长文本的…

分布式之分布式事务详解

分布式事务与实战运用 什么是分布式事务&#xff1f; 业务场景&#xff1a;用户A转账100元给用户B&#xff0c;这个业务比较简单&#xff0c;具体的步骤&#xff1a; 1、用户A的账户先扣除100元 2、再把用户B的账户加100元 如果在同一个数据库中进行&#xff0c;事务可以保证…

209基于matlab的无人机路径规划

基于matlab的无人机路径规划&#xff0c;包括2D路径和3D路径&#xff0c;三种优化算法&#xff0c;分别是蝙蝠算法&#xff08;BA&#xff09;、蝙蝠算法融合差分进化算法(DEBA)、结合人工势场方法的改进混沌蝙蝠算法(CPFIBA)。输出距离迭代曲线和规划的路径。程序已调通&#…

云计算探索-如何在服务器上配置RAID(附模拟器)

一&#xff0c;引言 RAID&#xff08;Redundant Array of Independent Disks&#xff09;是一种将多个物理硬盘组合成一个逻辑单元的技术&#xff0c;旨在提升数据存取速度、增大存储容量以及提高数据可靠性。在服务器环境中配置RAID尤其重要&#xff0c;它不仅能够应对高并发访…

【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍

系列文章目录 【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍 【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍 文章目录 系列文章目录[TOC](文章目录) 前言一、 Linux 发行版(Linux distribution)介绍二、Centos 虚拟机初始化…

Yarn的安装和使用(2):使用及问题解决

Yarn是JavaScript的依赖管理工具&#xff0c;它与npm类似&#xff0c;但提供了一些额外的性能优化和一致性保证。 Yarn的使用&#xff1a; 初始化项目&#xff1a; yarn init 此命令会引导您创建一个新的package.json文件&#xff0c;用于记录项目的元信息和依赖。 添加依赖&…