【八股文】网络基础
1.简述一下TCP和UDP的区别?
特性 | TCP(Transmission Control Protocol) | UDP(User Datagram Protocol) |
---|---|---|
连接类型 | 面向连接,需要建立三次握手连接 | 无连接,发送数据无需建立连接 |
数据传输 | 提供可靠的数据传输,保证数据顺序和完整性 | 不保证数据传输的可靠性,不保证数据顺序 |
错误校验 | 通过确认和重传机制进行错误检测和纠正 | 提供基本的错误检测,但不进行重传 |
流控制 | 使用滑动窗口机制进行流量控制 | 无流控制机制 |
拥塞控制 | 包含慢启动、拥塞避免等机制以控制网络拥塞 | 不包含拥塞控制机制 |
效率 | 相对较低,因为需要确认和重传等额外开销 | 较高,因为没有确认和重传机制的开销 |
数据单元 | 传输的数据单元称为段(Segment) | 传输的数据单元称为数据报(Datagram) |
应用场景 | 文件传输、网页浏览、电子邮件等需要可靠传输的场景 | 实时音频/视频、在线游戏等对延迟敏感的场景 |
安全性 | 更高的安全性,因为数据传输过程可控 | 较低安全性,数据传输过程不受控 |
多播和广播 | 不支持多播和广播 | 支持多播和广播,适合一对多的通信模式 |
2.TCP为什么要三次握手,两次不行吗?为什么?
- 三次握手的含义:
- 第一次握手(SYN):客户端向服务器发送一个带有SYN标志的TCP报文段,请求建立连接。这一步确认客户端的存在及其发送的能力。
- 第二次握手(SYN-ACK):服务器收到SYN报文后,发送一个带有SYN和ACK标志的TCP报文段作为响应。这一步不仅确认了服务器的存在和接收能力,同时也确认了客户端的接收能力。
- 第三次握手(ACK):客户端接收到SYN-ACK报文后,发送一个ACK标志的TCP报文段,确认收到了服务器的SYN-ACK报文。这一步最终确认了服务器的发送能力和客户端的接收能力。
- 为什么两次握手不行?
客户端发送一个连接的请求报文,但由于网络不好,这个请求没有及时到达服务端,而是在某个网络节点滞留了,直到某个时间才到达服务端,本来这已经是一个失效的报文,但服务端接收到这个请求报文后,还是会向客户端发出确认的报文,表示同意连接。假如不采用三次握手,那么只要服务端发出确认,新的建立就连接了,但其实这个请求是失效的,客户端是不会理睬服务端的确认信息,也不会向服务端发送确认请求,但服务端认为新的连接已经建立,并一直等待客户端发来的数据,这样服务端的很多资源会白白浪费掉
3.TCP为什么要四次挥手?
四次挥手是指在TCP协议中,当一端完成其数据发送任务后,双方释放连接的过程,通过发送和确认四个不同的控制报文来完成TCP连接的终止。
- 第一次挥手(主动关闭方发送FIN):
主动关闭方(通常是客户端)发送一个FIN(Finish)标志位设置为1的TCP报文段,告诉接收方(通常是服务器)它已经没有数据要发送 了,但此时它仍可以接收数据。- 第二次挥手(被动关闭方发送ACK):接收方收到FIN报文后,会发送一个ACK报文作为回应,确认序号是收到 的序列号+1,同时接收方进入CLOSE_WAIT(关闭等待)状态。此时,接收方若发送数据,继续发送,直到发送完毕。
- 第三次挥手(被动关闭方发送FIN):当接收方没有数据要发送时,它会发送自己的FIN报文,这时,接收方变为主动关闭方。这一报文也作为一个结束数据发送的信号。
- 第四次挥手(主动关闭方发送ACK) :主动关闭方收到FIN报文后,同意发送一个ACK报文作为回应,确认序号是收到的序列号+1,此时,主动关闭进入TIME_WAIT(时间等待)状态。需要经过时间等待计时器设置的时间2MSL后,才能回到CLOSED状态。2MSL的时间长度是为了确保被动关闭方能够收到ACK报文,从而正确关闭连接。
为什么要四次挥手:- 因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。
4.UDP如何实现可靠传输
- 应用层确认机制:在应用层上,可以实现自定义的确认机制。发送方在发送数据后等待接收方的确认信息,如果在一定时间内未收到确认,则重新发送数据。这样可以确保数据的可靠传输。
- 超时重传:发送方可以设置一个超时计时器,如果在指定时间内未收到确认信息,则认为数据丢失,触发重传操作。
- 数据校验和重传:在UDP数据包中添加校验和字段,接收方在接收数据时计算校验和并与发送方的校验进行比较。如果不匹配,则要求发送方重新发送数据。
- 流量控制和拥塞控制:通过控制发送数据的速率和接收数据的处理速度,可以避免网络拥塞和数据丢失。这可以通过动态调整发送速率、使用滑动窗口等方法来实现。
5.OSI的七层模型都有哪些?每层的作用是什么?
- 第七层:应用层
- 功能:为应用程序提供网络服务,如文件传输、电子邮件等。它还负责处理与应用程序相关的数据格式和编码。
- 协议:HTTP、FTP、SMTP等。
- 第六层:表示层
- 功能:处理数据的表示形式,如数据加密解密和压缩,确保数据在发送和接收端的表示一致。
- 协议:JPEG、ASCII等。
- 第五层:会话层
- 功能:管理绘画的建立、维护和终止,包括同步会话和恢复会话数据
- 协议:SQL等
- 第四层:传输层
- 功能:提供端到端的数据传输服务,确保数据的可靠、顺序传输,以及错误检测和恢复。
- 协议:TCP和UDP
- 第三层:网络层
- 功能:负责数据包的路由选择,将数据从源网络传输到目的网络,处理逻辑寻址和路径选择。
- 协议:IP、ICMP等
- 第二层:数据链路层
- 功能:提供物理链路上无差错的数据传输,处理数据帧的封装和解封装,实现介质访问控制和错误检测。
- 第一层:物理层
- 功能:负责比特流的传输,定义了网络的物理接口、电气特性、机械特性、功能特性和过程特性。
OSI模型的每层都与相邻的上层和下层进行通信,每层都提供了一定程度的抽象,使得上层不必关心下层的具体实现细节。
6.forward和redirect的区别?
在Web开发中,特别是适用Servlet或类似的Web框架时,forward和redirect是两种常用的方法来控制浏览器的行为,它们用于将请求从一个资源转发到另一个资源。
forward(请求转发)
- 服务器端处理:forward是服务器端的内部操作,由Servlet容器执行,当一个Servlet调用RequestDispatcher.forward()方法时,当前请求会被转发到另一个请求,但整个过程中浏览器的地址栏不会发生变化。
- 会话数据保持:在请求转发过程中,原始请求的所有数据都会被保持并传递到转发的目标资源。这就意味着在目标资源中可以直接访问原始请求的参数和会话数据。
- 性能: forward通常比redirect更高效,因为它不需要重新发起HTTP请求,所有处理都在服务器端完成,减少网络开销。
redirect(重定向)
- 客户端处理:redirect是通过发送一个HTTP 302状态码和一个Location头来指示浏览器重新发送一个请求到新的URL。这意味着浏览器地址栏会更新为目标资源的URL。
- 会话数据:redirect不会自动携带原始请求的数据,这意味着原始请求的参数和会话数据不会自动传递到重定向的目标资源。如果需要传递数据,通常需要通过URL参数或使用会话管理机制。
- 性能:redirect需要向浏览器发起一个新的HTTP请求,因此可能比forward慢,因为涉及额外的网络往返。
总结:
- forward和redirect的主要区别在于处理的位置(服务端和客户端)、URL地址栏的变化、以及会话数据的传递。
- 选择使用forward还是redirect取决于具体的应用场景。例如,如果需要保持请求的上下文和会话数据,同时优化性能,通常会选择forward。而如果需要改变浏览器的URL地址,或者需要用户看到一个新的页面URL,或者在不同域之间跳转,redirect则更为合适。
7.HTTP响应码301和302代表的是什么有什么区别?
HTTP响应状态码301和302都是用来指示客户端(通常是浏览器)重定向到另一个资源的。但是有一些重定向的持久性和缓存行为上的区别。
- HTTP 301 Moved Permanently
- 含义:301状态码表示请求的资源已被永久移动到新的URI,未来的请求应该使用响应中的新URI。
- 持久性:301重定向是永久性的,这意味着搜索引擎和其他客户端会更新他们的链接数据库,指向新的URI。
- 缓存:301重定向可以被缓存,这意味着如果客户端之前缓存了这个响应,它会记住新的URI,以后直接使用而不需要再次重定向。
- HTTP 302 Found(临时重定向)
- 含义:302状态码表示请求的资源现在临时位于不同的URI。客户端应使用响应中的新URI来获取请求的资源,但是未来的请求应该仍然使用原来的URI
- 持久性:302重定向是临时的,搜索引擎和其他客户端不会更新它们的链接数据库,而是继续使用原始的URI
- 缓存:302重定向通常不被缓存,或者如果缓存,有效期很短,这意味着每次请求可能都需要进行重定向检查。
8.get和post请求有什么区别?
特性 | GET请求 | POST请求 |
---|---|---|
数据传输位置 | 参数包含在URL中 | 参数放在请求体中 |
数据可见性 | 数据在URL可见 | 数据在请求体中,不可见 |
安全性 | 较低,不适合传输敏感信息 | 较高,适合传输敏感信息 |
缓存 | 可以被缓存 | 通常不被缓存 |
幂等性 | 应该是幂等的,即多次请求结果相同 | 不一定是幂等的 |
URL长度限制 | URL长度有限制,通常不超过2048个字符 | 没有固定长度限制,但可能受服务器限制 |
收藏 | URL可以被收藏 | 请求体重的数据无法通过URL直接访问,不适合收藏 |
用途 | 用于获取资源,查询信息 | 用户提交数据,修改和创建资源 |
重发行为 | 可以安全地重发,如刷新页面 | 重发可能会导致数据重复提交,如表单重复提交 |
总结:GET和POST是HTTP协议中最常用的两种请求方法,它们在数据传输、安全性、缓存和幂等性上有显著区别。GET请求将参数嵌入URL中,适用于获取信息,数据可见,可以被缓存,且应该是幂等的。然而,它不适合传输敏感信息,因为数据可能被保存在历史记录或日志中。相比之下,POST请求将参数放在请求体中,更加安全,适合传输大量数据和敏感信息,但通常不会被缓存,且不一定幂等。此外,GET请求的URL可以被书签收藏,而POST请求的URL通常不被收藏,因为请求体中的数据无法直接通过URL访问。
9.如何实现跨域?
跨域:在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。
解决办法:
- JSONP(JSON with Padding)
- 原理:利用script标签不受同源策略限制的特性,通过动态插入script标签来实现跨域请求。JSONP请求通常通过在URL中附加一个回调函数名作为参数,服务器响应时会将数据包裹在这个函数调用中返回。
- 限制:仅支持GET请求,不适合POST等其他HTTP方法
- CORS(Cross-Origin Resource Sharing)
- 服务器配置:在服务器端响应头中添加Access-Control-Allow-Origin字段,指定允许访问的源,可以是具体的域名,也可以是通配符*表示所有源。
- 预检请求:对于某些HTTP请求(如PUT、DELETE等),浏览器会先发送一个预检请求来确认跨域请求是否安全。服务器需要再预检请求的响应中包含Access-Control-Allow-Methods和Access-Control-Allow-Headers信息。
- 代理服务器
- 原理:在服务器端或本地搭建一个代理服务器,所有跨域请求先发送到代理服务器,由代理服务器转发请求到目标服务器,获取响应后再返回给前端。这样前端请求看起来像是同源请求。
- 实现:可以使用Node.js的Express框架配合相关中间件(如http-proxy-middleware),或Apache、Nginx等反向代理服务器来实现。
- 使用WebSocket
- 原理:WebSocket协议本身不受同源策略限制,可以用于实现跨域的实时通信
- 实现:客户端与服务器建立WebSocket连接,之后的数据传输不受同源策略约束。
总结:(面试回答)
- 跨域问题源于浏览器的同源策略,限制了不同源之间JavaScript的交互。为了解决这个问题,有多种方法可以实现跨域请求。其中,JSONP利用script标签的特性实现GET请求的跨域,但不支持其他HTTP方法。CORS通过在服务器端响应头中添加特定字段,允许指定源的跨域请求,对于PUT、DELETE等方法的跨域请求,CORS还支持预检请求机制,确保安全。代理服务器方案通过搭建一个中间服务器,将跨域请求转换为同源请求,适用于复杂场景。WebSocket和Server-Sent Events则提供了不受同源策略限制的实时通信渠道。在实际应用中,CORS因其灵活性和安全性,成为首选的跨域解决方案。
10.TCP流量控制,拥塞控制
- 流量控制:是TCP协议中的一项重要功能,它通过滑动窗口机制确保数据的平稳流动。发送方根据接收方的反馈(即ACK确认应答)和窗口大小来调整数据发送的速率,以防止数据积压和缓冲区溢出。
- 拥塞控制:是TCP协议中的另一项核心功能,它通过慢启动、拥塞避免、快速重传和快速恢复等机制来监测和调整网络中的数据流量,以防止网络拥塞。慢启动算法帮助网络逐步适应数据流量,而拥塞避免则确保在达到一定阈值后,流量的增长更加平缓。快速重传和快速恢复机制则允许在检测到网络拥塞时快速响应,通过减少发送窗口大小和智能重传来恢复正常的流量水平。
11.ip协议,icmp协议,arp协议的作用
- IP协议是互联网的核心,它负责数据包的封装、寻址和路由,使数据能够跨越不同的网络到达目的地
- ICMP协议则作为IP协议的补充,用于错误报告和网络监控,帮助我们诊断网络问题并进行网络管理。
- ARP协议(Address Resolution Protocol 地址解析协议)则在局域网环境中起着关键作用,它将IP地址转换为MAC地址,确保数据包能够在物理网络中正确传输。
12.http的不同版本和https的理解
- HTTP的发展经历了从HTTP/1.0到HTTP/2等多个版本,每个版本都在不断提高网络通信的效率和性能。HTTP/1.1引入了持久连接和管道化请求,大大提升了多请求的处理效率。而HTTP/2通过二进制分帧、多路复用和头部压缩等技术,进一步提高了资源加载的速度,特别是在移动网络和高延迟网络环境下表现更佳。
- HTTPS则是HTTP协议的安全版本,它通过SSL/TLS协议为HTTP通信提供了加密保护。HTTPS不仅可以保护数据免遭窃听和篡改,还可以通过数字证书验证服务器的身份,建立用户对网站的信任。HTTPS已经成为现代Web应用的标配,尤其是在涉及敏感信息传输的场景下,如在线支付、个人信息提交等。
相关文章:

【八股文】网络基础
1.简述一下TCP和UDP的区别? 特性TCP(Transmission Control Protocol)UDP(User Datagram Protocol)连接类型面向连接,需要建立三次握手连接无连接,发送数据无需建立连接数据传输提供可靠的数据传…...

Nginx进阶-常见配置(一)
一、nginx Proxy 反向代理 1、代理原理 反向代理产生的背景: 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,…...

九/十:C语言-扫雷游戏实现与函数递归
九:数组和函数实践:扫雷游戏 1.扫雷游戏的分析和设计 (1)扫雷游戏功能说明: 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现暂停或者退出游戏扫雷的游戏界面是9*9的格子默认随机布置10个雷可以排查雷࿱…...

【Android Studio】gradle文件、配置、版本下载、国内源(gradle版本以及gradle-plugin版本)
文章目录 AS查看gradle-plugin版本及gradle版本(图形)查看gradle-plugin版本及gradle版本(配置文件)配置文件分析解决gradle下载失败、版本错乱等问题。 Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的自动化构建工具&…...

主要的软件设计模式及其在Kotlin中的实现示例
软件设计模式(Software Design Patterns)是面向对象设计中常用的解决方案,它们为常见的软件设计问题提供了一些被证明有效的解决方案。以下是一些主要的软件设计模式及其在Kotlin中的实现示例。 创建型模式(Creational Patterns&…...

FFmpeg音频重采样基本流程
目录 流程概述用到的APItipsdemo样例附录 - SwrContext结构体字段 流程概述 音频重采样的基本流程为: 申请重采样器上下文设置重采样去上下文的参数初始化重采样器申请数据存放的缓冲区空间进行重采样 注意,要先设置参数再对重采样器初始化 用到的API…...

无人机无人车固态锂电池技术详解
随着无人机和无人车技术的飞速发展,对高性能、高安全性电池的需求日益迫切。固态锂电池作为下一代电池技术的代表,正逐步从实验室走向市场,为无人机和无人车等应用领域带来革命性的变化。相比传统液态锂电池,固态锂电池在能量密度…...

ElementUI元件库在Axure中使用
一、ElementUI元件库介绍 ElementUI 是一套为开发者、UI/UX设计师和产品经理准备的基于Vue 2.0的桌面端组件库。它以其优雅的设计和丰富的组件,极大地提升了Web应用的开发效率与用户体验。ElementUI的组件设计精致且符合现代UI规范,包括按钮、表单、弹窗…...

联想M7615DNA打印机复印证件太黑的解决方法及个人建议
打印机在使用过程中,可能会出现复印的文字或图片太黑的问题,这会影响到打印或复印的效果。下面我们来了解一下这种情况的原因和解决方法;以下所述操作仅供大家参考,如有不足请大家提出宝贵意见; 证件包括:…...

【算法题】无重复字符的最长子串(滑动窗口)
目录 一、题目描述 二、解题思路 1、什么是滑动窗口算法? 2、滑动窗口一般解题模板 三、参考答案 一、题目描述 无重复字符的最长子串 给定一个字符串s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s "abcabcbb"…...

Hikari连接池 最大连接数与最小空闲连接数配置多少合适?
spring:datasource: # 数据源的相关配置type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCPdriver-class-name: com.mysql.jdbc.Driver # mysql驱动url: jdbc:mysql://localhost:3306/t…...

【2.4 python中的基本输入和输出】
2.4 python中的基本输入和输出 在Python中,基本输入和输出是通过内置的input()函数和print()函数来实现的。这两个函数提供了与用户或其他程序进行交互的基本方式。 1. input() 函数 input() 函数用于从标准输入设备(通常是键盘)接收一行文…...

netty长连接集群方案
背景 公司某拍卖系统使用的netty服务不支持集群部署,不能进行横向扩展;并且和用户聚合服务耦合在一起,服务多节点部署不能提高拍卖性能,不能支撑更多用户使用拍卖。 目前需要改造并出一个集群的方案。 思路 因为是长连接的服务做集群,需要我们在客户端和服务器建立链接…...

Python面试题:结合Python技术,如何使用Keras进行神经网络建模
使用Keras进行神经网络建模是机器学习和深度学习领域中常用的方法之一。Keras是一个高级神经网络API,能够在TensorFlow、Theano等后端上运行,提供了简单易用的接口。下面是使用Keras进行神经网络建模的基本步骤: 安装Keras Keras是集成在Te…...

dll文件丢失怎么恢复?超简单的5个方法,1分钟搞定dll文件修复!
DLL,或称动态链接库,是一种重要的文件类型,包含了一系列用于运行几乎所有程序的指令,这些程序在win11、win10、win8和win7系统中都广泛使用。如果Windows操作系统中的dll文件丢失,您可能无法正常启动所需的程序或应用。…...

[Meachines] [Easy] Sense PFSense防火墙RCE
信息收集 IP AddressOpening Ports10.10.10.60TCP:80,443 $ nmap -p- 10.10.10.60 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http lighttpd 1.4.35 |_http-title: Did not follow redirect to https://10.10.10.60/ |_http-server-header…...

codetop标签双指针题目大全解析(C++解法),双指针刷穿地心!!!
写在前面:此篇博客是以[双指针总结]博客为基础的针对性训练,题源是codetop标签双指针近一年,频率由高到低 1.无重复字符的最长子串2.三数之和3.环形链表4.合并两个有序数组5.接雨水6.环形链表II7.删除链表的倒数第N个节点8.训练计划II9.最小覆…...

Floyd求最短路
给定一个 nn 个点 mm 条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定 kk 个询问,每个询问包含两个整数 xx 和 yy,表示查询从点 xx 到点 yy 的最短距离,如果路径不存在,则输出 impossible。…...

python爬虫初识
一、什么互联网 互联网(Internet)是全球范围内最大的计算机网络,它将数以百万计的私人、公共、学术、商业和政府网络通过一系列标准通信协议(如TCP/IP)连接起来形成的一个庞大的国际网络。 互联网的起源可以追溯到196…...

Java中类的构造
1.私有化成员变量。 2.空参构造方法。 3.带全部参数的构造方法。 4.get / set方法。 package demo;public class student{//1.私有化成员变量。//2.空参构造方法。//3.带全部参数的构造方法。//4.get / set方法。private String name;private int age;public student() {}pu…...

【C++高阶】深入理解C++异常处理机制:从try到catch的全面解析
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:Lambda表达式 🌹🌹期待您的关注 🌹🌹 ❀C异常 📒1. C异常概念…...

【RHEL7】无人值守安装系统
目录 一、kickstart服务 1.下载kickstart 2.启动图形制作工具 3.选择设置 4.查看生成的文件 5.修改ks.cfg文件 二、HTTP服务 1.下载HTTP服务 2.启动HTTP服务 3.将挂载文件和ks.cfg放在HTTP默认目录下 4.测试HTTP服务 三、PXE 1.查看pxe需要安装什么 2.安装 四、…...

[RTOS 学习记录] 预备知识:C语言结构体
这篇文章是我阅读《嵌入式实时操作系统μCOS-II原理及应用》后的读书笔记,记录目的是为了个人后续回顾复习使用。 文章目录 结构体结构体基础声明和定义结构体类型声明和定义结构体变量初始化结构体变量初始化各个成员使用列表符号初始化 使用结构体变量综上 结构体…...

sqli-labs注入漏洞解析--less-9/10
第九关: 这一关相比第八关,第八关他正确显示you are in,错误不显示you are in,但是第九关你不管是输入正确或者错误都显示 you are in ,这个时候布尔盲注就不适合我们用,所以我们的换一下思路,布尔盲注适合页面对于错误和正确结果…...

文心智能体平台:食尚小助,提供美食推荐和烹饪指导
文章目录 前言文心智能体平台介绍创建自己的智能体我的文心智能体体验地址总结 前言 在快节奏的现代生活中,许多人都希望能够享受美味的食物,但往往缺乏时间和精力来自己动手烹饪。为了解决这一问题,文心智能体平台推出了“食尚小助”智能体…...

工作中,如何有效解决“冲突”?不回避,不退让才是最佳方式
职场里每个人都在争取自己的利益,由于立场的不同,“冲突”不可避免。区别在于有些隐藏在暗处,有些摆在了台面上。 隐藏在“暗处”的冲突,表面上一团和气,实则在暗自较劲,甚至会有下三滥的手段;…...

Qt读写配置(ini)文件
本文介绍Qt读写配置(ini)文件。 1.配置文件(ini)简介 配置文件(ini)也叫ini文件(Initialization File),即初始化文件。它由节名,键名,键值构成。…...

Python笔试面试题AI答之面向对象(2)
文章目录 6.阐述 Python自省(机制与函数) ?7.简述Python中面向切面编程AOP和装饰器?面向切面编程(AOP)基本概念核心原理应用场景Python中的实现方式 装饰器(Decorator)基本概念语法应…...

Python学习计划——12.1选择一个小项目并完成
在这节课中,我们将选择一个小项目并完成它。为了综合运用前面所学的知识,我们选择构建一个简单的Web应用,该应用将包含数据分析和展示功能。我们将使用Flask框架和Pandas库来处理数据,并将结果展示在Web页面上。 项目:…...

uniapp 多渠道打包实现方案
首先一个基础分包方案: 包不用区分渠道,只是通过文件名进行区分,公共代码逻辑可以通过mixins进行混入。 这样分包后就需要在打包时只针对编译的渠道包文件进行替换打包,其他渠道包的文件不打包进去,通过工具类实现…...