【雕爷学编程】Arduino动手做(135)---W5100 网络扩展板模块

news2024/10/6 8:30:17

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百三十五:Ethernet W5100 网络扩展板 SD卡扩展模块 支持MEGA

在这里插入图片描述
知识点:W5100S芯片

采用WIZnet技术的硬件TCP / IP设计的W5100S芯片是一款嵌入式以太网控制器。在使用 W5100S时MCU 可以方便的处理 IPv4,TCP,UDP,ICMP,IGMP,ARP,PPPoE等TCP/IP 协议。W5100S 分别有 8KB 的发送缓存和接收缓存,可以减少MCU 的开销。 主机可以同时使用 W5100S 的 4 个独立的硬件SOCKETs,并基于每个硬件SOCKET 开发独立的互联网应用。2019年7月30日-8月1日,WIZnet公司携W5100S参加了IOTE2019第十二届国际物联网展(深圳站) 展会。

在这里插入图片描述
W5100S芯片是WIZnet最新推出的一款集成全硬件 TCP/IP协议栈的性价比更高的嵌入式以太网控制器,为单片机提供了更加简单、快速、稳定、安全的以太网接入方案。全硬件TCP/IP协议栈简化传统的软件TCP/IP协议栈,卸载了MCU用于处理TCP/IP这部分的线程,节约MCU内部ROM等硬件资源,工程师只需进行简单的Socket编程和少量的寄存器操作即可方便地进行嵌入式以太网上层应用开发,减少产品开发周期,降低开发成本。

W5100S支持间接并行总线和高速SPI接口2种方式与主机进行通信。其内部还集成了以太网数据链路层(MAC)和10Base -T/100Base -T 以太网物理层(PHY),支持自动协商(10/100-Based全双工/半双工)。与传统软件协议栈不同,W5100S内嵌的4个独立硬件Socket可以进行4路独立通信,该4路Socket的通信效率互不影响,可以通过W5100S芯片上的16K字节的收/发缓存灵活定义各个Socket的大小。

W5100S还提供WOL(局域网唤醒)和掉电模式,便于对功耗有要求的客户使用。
在这里插入图片描述
W5100S主要特征

全硬件TCP/IP协议栈

– 支持TCP, UDP, WOL, ICMP, IGMPv1/v2, IPv4, ARP, PPPoE协议

– 硬件网络引擎,不受网络攻击

支持SPI 和并行总线接口

– 高速 SPI接口(MODE 0/3)

– 系统总线接口(2位地址线和8位数据线)

支持嵌入式操作系统:Linux & RTOS

支持4路独立硬件Socket同时通信,通信效率互不影响

支持SOCKET-less 指令

– ARP请求

– PING请求

内部16K字节收发缓存供TCP/IP包处理

支持以太网掉电模式和主时钟选通节能模式

支持基于UDP的网络唤醒(WOL)功能

集成 10BaseT / 100Base-T 以太网 PHY

支持自动协商(全/半双工,10M/100M)

支持Auto-MDIX功能(只在以太网自动协商模式下支持)

网络指示灯 (全/半双工, 链接指示, 10Mb/100Mb指示,传输指示 )

工业级:-40℃ ~ 85℃

工作电压 3.3V,I/O 5V 耐压

48管脚LQFP封装和QFN封装 (无铅,7x7mm, 0.5mm 间距)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

W5100S主要参数
尺寸 7 x7毫米
以太网I / F 物理层
工作温度 -40至+85°C
工作电压 3.3伏
功能 3合1,MCU + TCP / IP + MAC
自动协商 是
网络套接字数 4
内部DPRAM缓冲存储器 16千字节
包 轻量级计划
针数 48
自动MDIX 是
局域网唤醒 是
掉电模式 是
典型值 能量消耗 待定
SPI(最大速度) 70兆赫
MCU I / F 8位(间接) SPI
PHY芯片 W5100S
针脚间距 0.50毫米
信息产业部 没有
以太网速度 10/100
并行内存总线 8位间接
制造商 无线网
在这里插入图片描述
以太网(Ethernet)
以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。

以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。经典以太网是以太网的原始形式,运行速度从3~10 Mbps不等;而交换式以太网正是广泛应用的以太网,可运行在100、1000和10000Mbps那样的高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。 以太网的标准拓扑结构为总线型拓扑,但目前的快速以太网(100BASE-T、1000BASE-T标准)为了减少冲突,将能提高的网络速度和使用效率最大化,使用集线器来进行网络连接和组织。如此一来,以太网的拓扑结构就成了星型;但在逻辑上,以太网仍然使用总线型拓扑和CSMA/CD(Carrier Sense Multiple Access/Collision Detection,即载波多重访问/碰撞侦测)的总线技术。以太网实现了网络上无线电系统多个节点发送信息的想法,每个节点必须获取电缆或者信道的才能传送信息,有时也叫作以太(Ether)。(这个名字来源于19世纪的物理学家假设的电磁辐射媒体-光以太。后来的研究证明光以太不存在。) 每一个节点有全球唯一的48位地址也就是制造商分配给网卡的MAC地址,以保证以太网上所有节点能互相鉴别。由于以太网十分普遍,许多制造商把以太网卡直接集成进计算机主板。

在这里插入图片描述
Arduino Ethernet W5100S网络扩展模块,可以使Arduino成为简单的Web服务器或者通过网络控制读写Arduino的数字和模拟接口等网络应用。可直接使用IDE中的Ethernet库文件便可实现一个简单Web服务器。 同时该版本的支持mini SD卡(TF卡)读写。该扩展板采用了可堆叠的设计,可直接插到Arduino上,同时我们的其他扩展板也可以插上去。

在这里插入图片描述

W5100S网络扩展模块主要参数

在这里插入图片描述
模块参考电原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
W5100S网络扩展模块供电

该板还可以通过外部电源,可选的以太网供电(PoE)模块或使用FTDI电缆/ USB串行连接器供电。 外部电源可以来自交流转直流适配器(壁式电源适配器)或电池。可以通过将2.1mm中心正插头插入板子的电源插孔来连接适配器。可以将电池的导线插入POWER连接器的Gnd和Vin引脚接头中。 该板可在6至20伏的外部电源上运行。但是,如果电源电压低于7V,则5V引脚的电源电压可能低于5V,电路板可能会不稳定。如果使用的电压超过12V,则稳压器可能会过热并损坏电路板。推荐的范围是7到12伏。

电源引脚如下:

VIN 当Arduino板使用外部电源时的输入电压(与USB连接或其他稳压电源提供的5伏电压相反)。您可以通过该引脚供电,或者,如果通过电源插孔供电,则可以通过该引脚供电。

5V。该引脚从板上的调节器输出稳定的5V电压。可以通过直流电源插孔(7-12V),USB连接器(5V)或板的VIN引脚(7-12V)为该板供电。通过5V或3.3V引脚供电会绕过稳压器,并可能损坏电路板。我们不建议这样做。

3V3。板载稳压器产生3.3伏电源。最大电流消耗为50 mA。

地 接地引脚。

IOREF。Arduino板上的此引脚提供了供微控制器操作的参考电压。正确配置的屏蔽层可以读取IOREF引脚电压并选择合适的电源,或者在输出上启用电压转换器,以使用5V或3.3V电压。

可选的PoE模块旨在从传统的双绞线5类以太网电缆提取功率:

符合IEEE802.3af

低输出纹波和噪声(100mVpp)

输入电压范围36V至57V

过载和短路保护

9V输出

高效DC / DC转换器:典型值75%@ 50%负载

1500V隔离(输入到输出)

在这里插入图片描述
输入输出

可以使用pinMode(), digitalWrite()和 digitalRead() 函数将以太网板上的14个数字引脚中的每个用作输入或输出。它们在5伏特下工作。每个引脚最多可提供或接收40 mA的电流,并具有一个20-50 kOhms的内部上拉电阻(默认情况下已断开)。此外,某些引脚还具有特殊功能:

串行:0(RX)和1(TX)用于接收(RX)和发送(TX)TTL串行数据。

外部中断:2和3。这些引脚可以配置为在低值,上升沿或下降沿或值改变时触发中断。有关 详细信息,请参见 attachInterrupt()函数。

PWM:3、5、6、9和10。提供带有AnalogWrite() 函数的8位PWM输出 。

SPI:10(SS),11(MOSI),12(MISO),13(SCK)。这些引脚支持使用SPI库的 SPI通信。

LED:9.数字引脚9上连接有内置LED。当该引脚为HIGH值时,该LED点​​亮;当该引脚为LOW时,其熄灭。在大多数其他arduino板上,此LED位于第13针上。它位于以太网板上的第9针上,因为第13针用作SPI连接的一部分。

以太网板有6个模拟输入,标记为A0至A5,每个模拟输入提供10位分辨率(即1024个不同值)。默认情况下,它们的测量范围是从地到5伏,尽管可以使用AREF引脚和AnalogReference()函数更改其范围的上限 。此外,某些引脚具有特殊功能:

TWI:A4(SDA)和A5(SCL)。使用Wire库支持TWI通信 。

板上还有几个其他引脚:

AREF。模拟输入的参考电压。与 analogReference()一起使用。

重启。将此线拉低以复位微控制器。通常用于在屏蔽板上添加一个重置按钮,以屏蔽板上的一个按钮。

在这里插入图片描述
通讯
Arduino以太扩展版具有许多用于与计算机,另一个Arduino或其他微控制器通信的设施。 一个 SoftwareSerial库 允许任何欧诺的数字引脚串行通信。 ATmega328还支持TWI和SPI通信。Arduino软件包含一个Wire库,以简化TWI总线的使用; 有关详细信息,请参见相关文档。对于SPI通信,请使用 SPI库。 该板还可以通过以太网连接到有线网络。连接到网络时,您将需要提供IP地址和MAC地址。该 以太网库 完全支持。 可通过SD库访问板载microSD卡读卡器 。使用该库时,SS位于引脚4上。

编程设计
可以通过两种方式对Arduino以太网板进行编程:通过6引脚串行编程接头,或使用外部ISP编程器。 6针串行编程接头与FTDI USB电缆以及Sparkfun和Adafruit FTDI风格的基本USB到串行分线板(包括Arduino USB串行连接器)兼容。它具有对自动重置的支持,允许上传草图而无需按下板上的重置按钮。当插入FTDI风格的USB适配器时,Arduino以太网将关闭适配器电源。 您还可以绕过引导程序,并使用Arduino ISP 或类似产品通过ICSP(在线串行编程)标头对微控制器进行编程 。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装 "Ethernet.h"库-工具-管理库-搜索-安装
项目测试 :通过插入W5100 以太网扩展板,实现Arduino NUO 接入以太网
在这里插入图片描述

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百三十五:Ethernet W5100 网络扩展板 SD卡扩展模块 支持MEGA

 安装 "Ethernet.h"库-工具-管理库-搜索-安装

 项目测试 :通过插入W5100 以太网扩展板,实现Arduino NUO 接入以太网

*/



#include <Ethernet.h>

#include <SPI.h>

//mac地址可以是随便的48位地址,只要设备间不相互冲突就行

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress staticIP(192, 168, 31, 159);

EthernetServer server(80);

void connectToInternet()

{

 if (Ethernet.begin(mac) == 0)//看看DHCP是否能动态分配ip给Arduino

 {

  Serial.print("[ERROR] Failed to Configure Ethernet using DHCP");

  Ethernet.begin(mac, staticIP);//DHCP不能动态分配,就静态设置ip给Arduino

 }

 delay(1000);

 Serial.println("[INFO] Connection Successsful");

 Serial.print("");

 printConnectionInformation();

 Serial.println("-------------------------");

 Serial.println("");

}

void printConnectionInformation()

{

 Serial.print("[INFO] IP Address: ");

 Serial.println(Ethernet.localIP());

 Serial.print("[INFO] Subnet Mask: ");

 Serial.println(Ethernet.subnetMask());

 Serial.print("[INFO] Gateway: ");

 Serial.println(Ethernet.gatewayIP());

 Serial.print("[INFO] DNS: ");

 Serial.println(Ethernet.dnsServerIP());

}

void setup() {

 // 将设置代码放在此处,运行一次:

 Serial.begin(9600);

 connectToInternet();

 server.begin();

}

void loop()

{

 //当有客户连接服务器时,服务器available函数会返回一个客户端对象用以向客户反馈信息

 EthernetClient client = server.available();

 if (client) {

  // http请求以空行结束

  boolean current_line_is_blank = true;

  while (client.connected()) {

   if (client.available()) {

    char c = client.read();

    // 如果我们排到了队伍的尽头

    // (字符)且该行为空,则http请求已结束,

    // 所以我们可以回复

    if (c == 'n' && current_line_is_blank) {

     // 发送标准http响应头

     client.println("HTTP/1.1 200 OK");

     client.println("Content-Type: text/html");

     client.println();

     // 输出每个模拟输入引脚的值

     client.print("welcome to tinyos electronics");

     client.println("<br />");

     client.print("//*************************************");

     client.println("<br />");

     client.print("");

     client.println("<br />");

     client.print("//*************************************");

     client.println("<br />");

     for (int i = 0; i < 6; i++) {

      client.print("analog input ");

      client.print(i);

      client.print(" is ");

      client.print(analogRead(i));

      client.println("<br />");

     }

     break;

    }

    //有的教程里也有用(c == '\n')和 (c != '\r')的

    //用(c == '\n')和 (c != '\r')的话,客户端连接不上服务器,不能用

    if (c == 'n') {

     // 我们要开始新的生产线

     current_line_is_blank = true;

    } else if (c != 'r') {

     // 我们在当前行中找到了一个角色

     current_line_is_blank = false;

    }

   }

  }

  client.stop();

 }

}

实验串口返回情况

在这里插入图片描述
在这里插入图片描述
在网页中显示了A0至A5所读出的模拟值,你也可以通过修改以上程序,显示其他类型的数据。

以上程序修改自Arduino IDE自带的Web Server例程,它是通过不断刷新网页来获取Arduino反馈来完成的。实际上,在当今web开发上,几乎都是通过ajax不刷新网页,来与服务器通信的。

在这里插入图片描述
ARDUINO W5100 WebClient 测试
基础工作:W5100扩展板插在ARDUINO上。用网线把W5100和自己家的路由器连接。插上网线能看到侧面网口指示灯变亮。路由器开启DHCP服务(一般都是开启的)。
1.打开官方例程里面的Ethernet->WebClient
2.修改里面的谷歌服务器为百度的。
3.修改IP地址为本地的局域网号码段,比如你的电脑是192.168.1.100。那么设置你的w5100,也在192.168.1.x。后面的x不能与局域网内的其它设备重复。

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百三十五:Ethernet W5100 网络扩展板 SD卡扩展模块 支持MEGA

 安装 "Ethernet.h"库-工具-管理库-搜索-安装

 项目测试之二 :ARDUINO W5100 WebClient 测试

*/



#include <SPI.h>

#include <Ethernet.h>

// Enter a MAC address for your controller below.

// Newer Ethernet shields have a MAC address printed on a sticker on the shield

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// if you don't want to use DNS (and reduce your sketch size)

// use the numeric IP instead of the name for the server:

//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)

char server[] = "www.baidu.com";  // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign

IPAddress ip(192, 168, 1, 177);

// Initialize the Ethernet client library

// with the IP address and port of the server

// that you want to connect to (port 80 is default for HTTP):

EthernetClient client;

void setup() {

 // Open serial communications and wait for port to open:

 Serial.begin(9600);

 while (!Serial) {

  ; // wait for serial port to connect. Needed for Leonardo only

 }

 // start the Ethernet connection:

 if (Ethernet.begin(mac) == 0) {

  Serial.println("Failed to configure Ethernet using DHCP");

  // no point in carrying on, so do nothing forevermore:

  // try to congifure using IP address instead of DHCP:

  Ethernet.begin(mac, ip);

 }

 // give the Ethernet shield a second to initialize:

 delay(1000);

 Serial.println("connecting...");

 // if you get a connection, report back via serial:

 if (client.connect(server, 80)) {

  Serial.println("connected");

  // Make a HTTP request:

  client.println("GET /search?q=arduino HTTP/1.1");

  client.println("Host: www.baidu.com");

  client.println("Connection: close");

  client.println();

 }

 else {

  // kf you didn't get a connection to the server:

  Serial.println("connection failed");

 }

}

void loop()

{

 // if there are incoming bytes available

 // from the server, read them and print them:

 if (client.available()) {

  char c = client.read();

  Serial.print(c);

 }

 // if the server's disconnected, stop the client:

 if (!client.connected()) {

  Serial.println();

  Serial.println("disconnecting.");

  client.stop();

  // do nothing forevermore:

  while (true);

 }

}

能显示服务器返回的数据,证明通讯成功。

在这里插入图片描述
Ethernet Library(以太网库)

通过Arduino Ethernet 开发板或者shield,使能网络连接(本地和互联网)。

更多的信息参考[size=13.3333px]https://www.arduino.cc/en/Reference/Ethernet。

适用于所有Arduino开发板板。

Advanced Chat Server: 建立一个简单的聊天服务器。
Barometric Pressure Web Server: 输出从气压传感器传来的数值,作为一个网页。
Chat Server: 建立一个简单的聊天服务器。
Dhcp Address Printer: 通过DHCP获取一个IP地址,并打印出来。
Dhcp Chat Server: 一个简单的DHCP聊天服务器
Telnet Client: 一个简单的telnet客户端。
UDP Ntp Client: 通过UDP查询网络时间协议(NTP)服务器。
UDP Send Receive String: 通过UDP发送和接收文本字符串。
Web Client: 做一个HTTP请求。
Web Client Repeating: 重复HTTP请求。
Web Server: 创建一个简单的HTML页面,用来显示模拟传感器的数值。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

中小企业怎么轻松搭建产品发行说明文档?

发行说明是产品上线必备的文档&#xff0c;它包含了项目进度的跟踪和产品版本的基础信息以及新增功能的介绍。 以下是为什么您需要发行说明的几个原因&#xff1a; 1.通知用户新功能&#xff1a;发行说明是向用户传达团队正在进行的工作和产品更新的重要途径。定期更新发行说明…

Selenium系列(三) - 详细解读针对元素常见的简单操作

针对元素有哪些常见的简单操作&#xff1f; 点击输入内容、清除内容返回元素尺寸、坐标获取元素标签文本获取元素属性值检查元素&#xff1a;是否可见、是否可点击、是否已被选择表单提交 点击右边目录即可跳转哦&#xff01; -------------->>>>>>>>…

服务器压力测试

目录 一、磁盘性能测试安装fio磁盘性能测试工具测试内容为顺序读、随机读、顺序写、随机写、随机读写结果分析 二、CPU性能测试安装sysbench性能测试工具结果分析 三、内存性能测试结果分析 四、网络性能测试测试iperf3工具测试结果分析1.测试TCP吞吐量2 . 测试UDP丢包和延迟 此…

EasyExcel读文件详解和源码分析

读取文件导入的话&#xff0c;我们经常看到下面这些方法。 //同步的返回&#xff0c;不推荐使用 EasyExcel.read(file).sheet(sheetNo).head(Class.class).headRowNumber(headRowNum)..doReadSync(); //异步的&#xff0c;通过监听器处理读到的数据。 EasyExcel.read(file).sh…

VMware Tools安装“保熟“技巧

网上关于如何安装VMware Tools也有很多帖子,但是基本很难对症下药。下面笔者给出两种情况&#xff0c;读者可根据自己概况定位自己的问题&#xff0c;从而进行解决。 如果读者安装操作系统时是如笔者如下截图 那么读者可参考这个解决方案 安装VMware Tools选项显示灰色的正确解…

【算法与数据结构】151、LeetCode反转字符串中的单词

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题的主要思路是先处理多余的空格&#xff0c;这个处理方法可以参考博主的这篇文章【算法与数据结构】…

PNP三极管开关电路注意事项

这个是一个NPN三极管的开关电路。 有时候我们也会用PNP的三极管搭建三极管开关电路。 当MCU输出低电平时&#xff0c;三极管BE间的电压小于开启电压&#xff0c;这时三极管饱和导通。 当MCU输出高电平&#xff0c;很多同学认为三极管BE间的电压大于开启&#xff0c;这时三极管截…

在IDEA中使用groovy脚本生成POJO

步骤1&#xff1a;打开Database窗格&#xff0c;新建数据库连接 数据库连接默认只是当前工程使用&#xff0c;想要所有IDEA窗口共享 步骤2&#xff1a;编辑groovy脚本 步骤3&#xff1a;选择一张或多张表&#xff0c;生成代码 生成效果 附&#xff1a;groovy脚本 import com.i…

POI合并单元格设置单元格样式

文章目录 设置居中设置背景颜色设置边框设置字体合并单元格实际使用运行效果 设置居中 CellStyle centerStyle wb.createCellStyle();centerStyle.setAlignment(HorizontalAlignment.CENTER); // 居中centerStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中设…

桐庐旅行|桐庐团建全攻略「两天一夜行程」

桐庐被《国家地理》评选为全球25个最佳旅行目的地之一 获评「中国最美县城」&#xff0c;热门综艺《向往的生活》拍摄地 浙江的山水精华尽在「桐庐」 今夏绝对不能错过的避暑胜地 交通信息 车程&#xff1a;杭州1.5h 、上海3h、宁波2.5H、南京3.5H 尖峰推荐目的地 深澳古村 始…

原来,这就是铁路隧道R型变压器的工作真相!

铁路作为我们日常交通的重要出行设备&#xff0c;其安全稳定性极为重要。高速铁路具有行车速度快、行车密度高、负荷分布密集、自动化程度高、要求安全、正点运行的特点。铁路隧道对电力系统的供电可靠性也有非常严格的要求。铁路隧道R型变压器在铁路隧道供电系统中的主要功能是…

【线程池】史上最全的ThreadPoolExecutor源码详解

目录 一、线程池框架 1.1 第一层结构 1.2 接口简介 1.3 核心实现类 1.4 辅助类 1.5 完成服务 二、ThreadPoolExecutor的成员属性和内部类 2.1 主要成员属性以及工具方法 2.2 五种内部类 2.2.1 拒绝策略内部类&#xff08;Policy&#xff09; 2.2.2 工作线程内部类&a…

八数码、解华容道(bfs,全局择先,A*搜索)

【问题描述】 题目6&#xff1a;数阵问题 每个局面是三行三列的数字方阵&#xff0c;每个位置为0-8的一个数码且互不相同&#xff0c;求从初始局面&#xff08;自己设定&#xff09;如何“最快”移动到终止局面&#xff08;自己设定&#xff09;。 移动规则&#xff1a;每次只…

【实战】 四、JWT、用户认证与异步请求(上) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(四)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求1.login2.middleware of json-server3.jira-dev-tool&#xff08;imooc-jira-tool&#xff09;安装问…

Onlyoffice安装步骤

使用docker安装Onlyoffice社区版 第X章 占位… 文章目录 使用docker安装Onlyoffice社区版说明一、系统需求二、安装步骤1.下载2.安装3.测试4. 升级为HTTPS协议4.1生成私钥4.2 生成CSR,即&#xff1a;证书签名请求文件4.3 使用私钥和CSR签署证书 未完&#xff0c;待续总结 说明…

【程序员面试金典】面试题 17.21. 直方图的水量

【程序员面试金典】面试题 17.21. 直方图的水量 题目描述解题思路 题目描述 描述&#xff1a;给定一个直方图(也称柱状图)&#xff0c;假设有人从上面源源不断地倒水&#xff0c;最后直方图能存多少水量?直方图的宽度为 1。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直…

从数据取地址运算符 从地址取数据运算符* 数组函数传送三种方法

概念 a表示数据本身。 &a表示a对应的地址。 *a表示存a数据的地址。 #include<stdio.h> int main() { int a 10; int *b &a; int* d &a; int c *b; …

Spring Boot 中的 WebSocketSession 是什么,原理,如何使用

Spring Boot 中的 WebSocketSession 是什么&#xff0c;原理&#xff0c;如何使用 介绍 在现代 Web 应用程序中&#xff0c;实时通信是一个非常常见的需求。传统的 HTTP 协议是无法支持实时通信的&#xff0c;因为它是一种无状态协议&#xff0c;每次请求都是独立的&#xff0…

实现数据库版本的留言墙(表白墙)练习

目录 目标 1.创建工程 2.构建目录工程结构 3.设置编码格式 4.查看Maven的配置 6.导入HTML和JS&#xff0c;配置tomcat 7.测试网站是否可以正常访问 8.编写业务代码 目标&#xff1a; 1.熟练掌握前端向后端提交数据2.后端接收数据并校验3.通过JAVA代码进行数据库操作4.返回…

8、Redis哨兵(sentinel)

是什么? 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数 \textcolor{red}{投票数}投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务 作用&#xff1a;俗称无人值守运维 能干嘛? 主从监控&#xff1a;监控主从redis库运行是否正常 消息…