【Unity面试篇】Unity 面试题总结甄选 |网络相关 | ❤️持续更新❤️

news2024/7/4 23:07:32

请添加图片描述


前言

  • 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】
  • 为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新的内容,并对之前的版本中有些模糊的地方进行了纠正。
  • 进阶篇中有些题目在基础篇已经有了,这里划分模块时有些会再加一遍用于加深印象学习。
  • 所以本篇文章就来整理一下网络相关,说不准就会面试的时候就会遇到!

【Unity面试篇】Unity 面试题总结甄选 |网络相关 | ❤️持续更新❤️

      • 前言
    • 🤍网络
        • 1. 客户端与服务器交互方式有几种?
        • 2. OSI七层模型有哪些,每一层的作用
        • 3. UDP/TCP含义,区别
        • 4. TCP/IP协议栈各个层次及分别的功能?
        • 5. 写出WWW的几个方法
        • 6. Socket粘包
        • 7. Socket的封包、拆包
        • 8. Socket 客户端 队列 的问题
        • 9. 为什么会出现TCP 拥塞控制
        • 10. 简述序列化与反序列化
        • 11. 序列化的多种方案
        • 12. 网络抖动
        • 13. http与https的区别
  • 👥总结

请添加图片描述

🤍网络

1. 客户端与服务器交互方式有几种?

  1. socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有UDP和TCP两个协议。Socket处于网络协议的传输层。

  2. 协议传输的主要有http协议 和基于http协议的Soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。

2. OSI七层模型有哪些,每一层的作用

在这里插入图片描述

  • 应用层:是OSI参考模型的最高层
    它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。

  • 表示层:是OSI模型的第六层
    它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。

  • 会话层:是OSI模型的第5层:
    是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。

  • 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
    传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。

  • 网络层:它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
    一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。

  • 数据链路层:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。

  • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
    物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。

3. UDP/TCP含义,区别

UDP协议全称是用户数据报协议

  1. 面向无连接
  2. 面向报文,
  3. 不可靠性,
  4. 有单播,多播,广播的功能
  5. 头部开销小,传输数据报文时是很高效的。

TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。三次握手、四次挥手

TCP:

  1. 面向连接
  2. 仅支持单播传输
  3. 面向字节流
  4. 可靠传输
  5. 提供拥塞控制
  6. TCP提供全双工通信

4. TCP/IP协议栈各个层次及分别的功能?

网络接口层:这是协议栈的最低层,对应OSI的物理层和数据链路层,主要完成数据帧的实际发送和接收。

网络层:处理分组在网络中的活动,例如路由选择和转发等,这一层主要包括IP协议、ARP、ICMP协议等。

传输层:主要功能是提供应用程序之间的通信,这一层主要是TCP/UDP协议。

应用层:用来处理特定的应用,针对不同的应用提供了不同的协议,例如进行文件传输时用到的FTP协议,发送email用到的SMTP等。

5. 写出WWW的几个方法

  • WWW.LoadFromCacheOrDownload:可被用于将Assets Bundles自动缓存到本地磁盘
  • WWW.Dispose :释放现有的 WWW 对象。
  • WWW.isDone:是否完成下载?(只读)
  • WWW.progress:下载进度(只读)。

6. Socket粘包

什么是粘包?
答:顾名思义,其实就是多个独立的数据包连到一块儿。

什么情况下需要考虑粘包?
答:实际情况如下:

  1. 如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题。
  2. 如果发送的数据无结构,比如文件传输,这样发送方只管发送,接收方只管接收存储就ok,也不用考虑粘包。
  3. 如果双方建立连接,需要在连接后一段时间内发送不同结构数据,如连接后,有好几种结构:
    1)”good good study”
    2)”day day up”
    那这样的话,如果发送方连续发送这个两个包出去,接收方一次接收可能会是”good good studyday day up” 这样接收方就傻了,因为协议没有规定这么奇怪的字符串,所以要把它分包处理,至于怎么分也需要双方组织一个比较好的包结构,所以一般可能会在头加一个数据长度之类的包,以确保接收。

所以说:Tcp连续发送消息的时候,会出现消息一起发送过来的问题,这时候需要考虑粘包的问题。

粘包出现的原因 (在流传输中,UDP不会出现粘包,因为它有消息边界。)

  1. 发送端需要等缓冲区满才发送出去,造成粘包 (发送端出现粘包)
  2. 接收端没有及时接收缓冲区包数据,造成一次性接收多个包,出现粘包 (接收端出现粘包)

解决粘包

  1. 缓冲区过大造成了粘包,所以在发送/接收消息时先将消息的长度作为消息的一部分发出去,这样接收方就可以根据接收到的消息长度来动态定义缓冲区的大小。(这种方法就是所谓的自定义协议,这种方法是最常用的)
  2. 对发送的数据进行处理,每条消息的首尾加上特殊字符,然后再把要发送的所有消息放入一个字符串中,最后将这个字符串发送出去,接收方接收到这个字符串之后,再通过特殊标记操作字符串,把每条消息截出来。(这种方法只适合数据量较小的情况)

注:要记住这一点:TCP对上层来说是一个流协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片的,其间是没有分界线的,也就是没有包的概念。所以我们必须自己定义包长或者分隔符来区分每一条消息。

7. Socket的封包、拆包

  1. 为什么基于TCP的通信程序需要封包、拆包?
    答:TCP是流协议,所谓流,就是没有界限的一串数据。但是程序中却有多种不同的数据包,那就很可能会出现如上所说的粘包问题,所以就需要在发送端封包,在接收端拆包。
  2. 那么如何封包、拆包?
    答:封包就是给一段数据加上包头或者包尾。比如说我们上面为解决粘包所使用的两种方法,其实就是封包与拆包的具体实现。

8. Socket 客户端 队列 的问题

项目中采用了socket通信,通过TCP发送数据给服务器端,因为项目需要,要同时开启大量的线程去发送不同的数据给服务器端,然后服务器端返回不同的数据。由于操作频繁,经常会阻塞,或没有接收到服务器端返回的数据;

因此考虑到使用一个队列:将同一ip下的数据存入一个队列中,通过队列协调发送;当第一条数据发送出去没有收到服务器端返回的数据时,让第二条数据插入队列中排队,当第三条数据也发送出来后,继续排队,以此类推;
如果当第四条数据发出来的时候,存入队列中,第一条数据收服务器端返回数据后,队列中的第二条第三条数据就扔掉,直接发送第四条数据

9. 为什么会出现TCP 拥塞控制

拥塞的发生是因为路由器缓存溢出,拥塞会导致丢包,但丢包不一定触发拥塞。拥塞控制是快速传输的基础。一个拥塞控制算法一般包括慢启动算法、拥塞避免算法、快速重传算法、快速恢复算法四部分。

10. 简述序列化与反序列化

序列化 简单理解成把对象转换为容易传输的格式的过程。
⽐如,可以序列化⼀个对象,然后使⽤HTTP通过Internet在客户端和服务器端之间传输该对象

反序列化 :将已经序列化过后的数据恢复成原先对象的过程。

11. 序列化的多种方案

XML
指可扩展标记语言(eXtensible Markup Language)。是一种通用和重量级的数据交换格式。以文本结构存储。

  • 优点:格式更为标准和统一、更容易和其它系统进行远程交互、数据共享比较方便
  • 缺点: 相比于JSON,由于需要成对的数据标签,数据更加的冗余。 而JSON使用键值对,压缩了数据空间并且更加可读。

JSON
是一种通用和轻量级的数据交换格式。以文本结构存储。

优点:

  1. 简单易用开发成本低、
  2. 跨语言、
  3. 轻量级数据交换、
  4. 非冗长性(对比xml标签简单括号闭环)

缺点:

  1. 体积大,影响高并发
  2. 无版本检查,自己做兼容
  3. 片段的创建和验证过程比一般的XML复杂
  4. 缺乏命名空间导致信息混合
  5. 没有XML格式这么推广的深入人心和使用广泛,没有XML那么通用性

Protobuf
protocol buffer是Google的一种独立和轻量级的数据交换格式。以二进制结构进行存储。

Protobuf是一种以有效并可扩展的格式编码结构化数据的方式。

优点:

  1. 跨平台多语言,可自定义数据结构。
  2. 字段被编号,新添加的字段不影响老结构。解决了向后兼容问题。
  3. 序列化后体积相比json和xml很小,适合网络传输。
  4. 序列化反序列化速度很快,快于Json的处理速度。
  5. 自动化生成代码,简单易用。
  6. 二进制消息,效率高,性能高。
  7. Netty等框架集成了该协议,提供了编×××提高开发效率。

缺点:

  1. 二进制格式,可读性差(抓包dump后的数据很难看懂)
  2. 对象冗余,字段很多,生成的类较大,占用空间。
  3. 默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)

三者比较:

  1. json:一般的web项目中,最流行的主要还是json。因为浏览器对于json数据支持非常好,有很多内建的函数支持。
  2. xml:在webservice中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签。json使用了键值对的方式,不仅压缩了一定的数据空间,同时也具有可读性。
  3. protobuf:是后起之秀,是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。

12. 网络抖动

什么是网络抖动

如果网络发生拥塞,排队延迟将影响端到端的延迟,并导致通过同一连接传输的分组延迟各不相同,而抖动,就是用来描述这样一延迟变化的程度。

它是网络延时变化,最大延迟与最小延迟的时间差;
如最大延迟是20毫秒,最小延迟为5毫秒,那么网络抖动就是15毫秒,它主要标识一个网络的稳定性。

造成网络抖动的原因

如果网络发生拥塞,排队延迟将影响端到端的延迟,并导致通过同一连接传输的分组延迟各不相同;

当网络设备无法发送相同数据的流量,因此他们的数据包缓冲区已满并开始丢弃数据包。如果端点上的网络没有干扰,则每个数据包都会到达。

但是,如果端点缓冲区满了,会使数据包到达的越来越晚,导致抖动。而抖动,就是用来描述这样一延迟变化的程度。因此,抖动对于实时性的传输将会是一个重要参数,比如:VOIP,视频等。

解决方法
数据包接收端的抖动缓存;缓存指针队列对接收到的数据包进行排序后,将接收到的数据包插入抖动缓存指针队列的相应位置;

抖动缓存指针队列的出队线程定时器,以一定时间间隔触发出队线程,出队线程判断抖动缓存指针队列队头的数据包,是否应该在当前触发时刻出队,如果是,则将该数据包出队。

13. http与https的区别

  • HTTP协议以明文方式发送内容,不提供任何方式的数据加密。HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
  • https则是具有安全性的ssl加密传输协议。

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。并且https协议需要到ca申请证书。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。


👥总结

  • 全网最全的 网络相关 面试题都在这里了,希望本篇文章能够让你在面试关卡如鱼得水得到自己想要的工作。
  • 看完觉得有用别忘了点赞收藏哦,如果觉得哪个方面的内容不够丰富欢迎在评论区指出!
  • 如果你的Unity基础知识还不够熟练,也欢迎来 『Unity精品学习专栏⭐️』『Unity 实战100例 教程⭐️』继续学习哦!
  • 如果你还有更好的面试题,欢迎在评论区提出,会整理到文章中去哦!!!

请添加图片描述


资料白嫖,技术互助
请添加图片描述

  • 🎬 博客主页:https://xiaoy.blog.csdn.net

  • 🎥 本文由 呆呆敲代码的小Y 原创 🙉

  • 🎄 学习专栏推荐:Unity系统学习专栏

  • 🌲 游戏制作专栏推荐:游戏制作

  • 🌲Unity实战100例专栏推荐:Unity 实战100例 教程

  • 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

学习路线指引(点击解锁)知识定位人群定位
🧡 Unity系统学习专栏 🧡入门级本专栏从Unity入门开始学习,快速达到Unity的入门水平
💛 Unity实战类项目 💛进阶级计划制作Unity的 100个实战案例!助你进入Unity世界,争取做最全的Unity原创博客大全。
❤️ 游戏制作专栏 ❤️ 难度偏高分享学习一些Unity成品的游戏Demo和其他语言的小游戏!
💚 游戏爱好者万人社区💚 互助/吹水数万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Unity100个实用技能💙 Unity查漏补缺针对一些Unity中经常用到的一些小知识和技能进行学习介绍,核心目的就是让我们能够快速学习Unity的知识以达到查漏补缺

在这里插入图片描述

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

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

相关文章

git命令将一个项目推送到多个远程仓库

一、查看远程仓库(已经有一个仓库的地址)输入下面命令进行查看 git remote -v二、把项目添加到另外一个远程仓库的地址(git remote add 仓库名称 仓库地址) git remote add gitee http://git.XXXX.com/XXX/XXX.git/三、此时已经把项目添加到另外一个远程仓库了可以通过命令gi…

Java+Vue+Uniapp全端WMS仓库管理系统

详情图片为运行截图,功能列表: 1、数据管理:物料数据管理、物料Bom管理、物料组管理、物料分类管理、供应商管理、仓库管理、货位管理、车间管理 2、采购管理:物料标签管理、入库单管理、入库退货管理 3、质检管理:质检单管理(包括单据号、单据类型、创建时间、检验状态…

华为OD机试真题 JavaScript 实现【人民币转换】【牛客练习题】

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 专栏导读 本专栏收录于《华为OD机试(JavaScript)真题(A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题…

【算法基础】进制转换

一、X进制转十进制 (一)Question 1. 问题描述 2. Input 第一行一个整数 x; 第二行一个字符串 S。 3. Output 输出仅包含一个整数,表示答案。 4. Sample Input 16 7B5. Sample Output 123(二)题解 #include <bits/stdc++.h> using

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化&#xff1a;地图符号与注…

宝塔Linux面板安装Composer依赖管理工具与PHP依赖包的方法

最近看见腾讯云有一个AI绘画还挺有意思&#xff0c;想搞来写个接口玩 但是Composer一直运行不成功 提示xdebug什么的 最后经过搜索 发现 需要删除你宝塔里所有php中禁用的putenv函数 然后重启php就可以了&#xff01; 然后就可以运行这个命令了 出现这种情况 还需要删除所有…

MySQL创建索引的方式详解、索引的删除、MySQL8.0降序索引

1、索引创建的方式 方式1&#xff1a;创建表时指定索引列方式2&#xff1a;使用ALTER TABLE创建索引方式3&#xff1a;使用CREATE TABLE创建索引 2、表中索引查看的方式 方式1&#xff1a;使用语句 SHOW INDEX FROM 表名; 语句查看表中的索引 如&#xff1a; 方式2&#x…

UG\NX二次开发 获取对象的边界包容盒 UF_MODL_ask_bounding_box

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取对象的边界包容盒 UF_MODL_ask_bounding_box,只能得到绝对坐标系下的边界包容盒,速度快,结果不精确。 效果: 代码: //UF_MODL_ask_bounding_box #include "me.hpp" #include &…

发布项目管理生产的时候出现界面滚动不了

新的项目管理发布后出现页面鼠标上下滚动不了的问题&#xff0c;比较奇怪的是&#xff0c;本地开发没有问题&#xff0c;但发布生产后就出现问题了。 因为这次增加的组件比较多&#xff0c;相应的样式也比较多&#xff0c;所以那先分几个部分处理 1、先新加的几个组件是否有冲…

浅谈物联网在电力行业的应用

摘要&#xff1a;随着社会经济的快速发展&#xff0c;物联网技术也在各个行业中得到了广泛的应用&#xff0c;特别是在电力行业中应用物联网技术&#xff0c;也有效的促进了电力行业的现代化发展。而物联网与智能电网同样都是当代重要的高新技术以及新兴产业。所以通过对于物联…

3Ds max入门教程:逼真的细菌

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 最终图像 在本教程中&#xff0c;您将学习如何创建一个异国情调的细菌世界。主要重点将是制造使一切变得不同的材料。 步骤-1 遵循红色、绿色和橙色框参数。 步骤-2 在“渲染场景”&#xff08;F10&…

Web训练项目相关

一、简述 一直没有机会整理前面做过的内容&#xff0c;特此文章整理所学过的web相关训练内容,方便查阅&#xff0c;并在其中参杂对代码理解。 二、相关项目 1.getparameter的url传值 index.jsp <% page language"java" contentType"text/html; charsetu…

概率论的学习和整理16: 泊松分布(未完成)

目录 简单的扩展到泊松分布 比较整体的动态过程&#xff0c;增加实验次数时 当二项分布&#xff0c;n很大&#xff0c;p很小的时候&#xff0c;会趋向泊松分布 当n足够大时&#xff0c;二项分布趋向于正态分布。这个结论在概率论中被称为中心极限定理&#xff0c;它是概率论中一…

【剑指offer】14. 数值的整数次方(java)

文章目录 数值的整数次方描述示例1示例2示例3思路完整代码 数值的整数次方 描述 实现函数 double Power(double base, int exponent)&#xff0c;求base的exponent次方。 注意&#xff1a; 1.保证base和exponent不同时为0。 2.不得使用库函数&#xff0c;同时不需要考虑大…

家政小程序开发-H5+小程序

移动互联网的发展&#xff0c;微信小程序逐渐成为商家拓展线上业务的重要手段。家政服务作为日常生活中不可或缺的一部分&#xff0c;也开始尝试通过小程序来提高服务质量和效率。 下面是一篇关于家政小程序开发的H5小程序的文章&#xff0c;希望对您有所帮助。 家政服…

【大虾送书第二期】《Python机器学习:基于PyTorch和Scikit-Learn 》

目录 ✨写在前面 ✨亲笔作序推荐 ✨内容简介 ✨学完本书&#xff0c;你将能够 ✨作者简介 ✨PyTorch核心维护者亲笔推荐 ✨抢先购买 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 近年来&#xff0c;…

nginx日志分析,实时可视化工具goaccess

一款可以实时分析NGINX访问日志&#xff0c;并且支持可视化的软件 GoAccess - Visual Web Log Analyzer github如下&#xff1a;GitHub - allinurl/goaccess: GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or th…

精通从入门到工程应用 PLC:

PLC&#xff08;可编程逻辑控制器&#xff09;的学习和入门相对容易&#xff0c;但其难点在于实际的工程应用。学习PLC并熟悉其基本操作并不复杂&#xff0c;但真正掌握其在实际工程中的应用需要更多的经验和实践。 PLC的实际工程应用与具体项目紧密相关&#xff0c;需要了解信…

一套完全开源,支持多租户,界面配置单点的后端框架JVS

JVS的多租户体系统 在IT系统中&#xff0c;“租户”&#xff08;tenant&#xff09;通常用于指代一种多租户架构&#xff08;multi-tenancy&#xff09;&#xff0c;它是一种软件架构模式&#xff0c;允许多个用户或组织共享相同的应用程序或系统实例&#xff0c;但彼此之间的…

【Docker安装部署Hippo4j教程】

&#x1f680; 线程池管理工具-Hippo4j &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#…