WEB前端12-axios基础
Vue2-axios基础
1.axios基本概念
在现代的前端开发中,处理网络请求是至关重要的一部分。Axios 是一个流行的基于 Promise 的 HTTP 客户端,它可以在浏览器和 Node.js 环境中使用。它的设计简单易用,支持并行请求、拦截器、CSRF 防护等特性,使得它成为开发人员首选的 HTTP 请求库之一。
Axios 提供了许多优点,使得它比传统的 XMLHttpRequest 或者其他 HTTP 客户端更具吸引力:
1.简单易用的API:Axios 的 API 设计非常直观,支持 Promise API,使得异步请求变得更加简单和清晰。
2.浏览器和 Node.js支持:Axios 可以在浏览器和 Node.js 环境中无缝使用,这使得它可以用于各种类型的项目。
3.拦截器支持:可以在请求或响应被 then 或 catch 处理之前拦截它们。这对于在请求发送前或收到响应后执行额外的逻辑(比如添加认证信息、日志记录等)非常有用。
4.自动转换 JSON 数据:Axios 默认会自动将 JSON 数据转换为 JavaScript 对象,这简化了在请求和响应之间转换数据的过程。
5.错误处理:对于HTTP 请求错误,Axios 提供了清晰的错误信息和状态码,帮助开发者更容易地处理异常情况。
2.axios发送请求
安装:使用 npm 安装 Axios:
npm install axios -S
导入 Axios:安装完成后,在你的 JavaScript 文件中导入 Axios:
import axios from 'axios';
方法:Axios 提供了多种方法用于发起 HTTP 请求:
方法 | 描述 |
---|---|
axios.get(url[, config]) | 发起 GET 请求 |
axios.delete(url[, config]) | 发起 DELETE 请求 |
axios.head(url[, config]) | 发起 HEAD 请求 |
axios.options(url[, config]) | 发起 OPTIONS 请求 |
axios.post(url[, data[, config]]) | 发起 POST 请求 |
axios.put(url[, data[, config]]) | 发起 PUT 请求 |
axios.patch(url[, data[, config]]) | 发起 PATCH 请求 |
参数
url
: 请求的 URL 地址。config
: 可选的配置对象,可以包含查询参数 (params
)、请求头 (headers
)、认证信息 (auth
) 等。data
: 可选的请求体数据,通常用于 POST、PUT 和 PATCH 请求。
1. 发送 GET 请求
async sendReq() {try {const response = await axios.get('/management_system/getStudentsServlet');console.log(response);} catch (error) {console.error('获取数据出错:', error);}
}
这段代码展示了如何使用 Axios 发送一个简单的 GET 请求,从指定的 URL 获取数据。
2. 发送带请求头的 POST 请求
async sendReq() {try {const response = await axios.post('/management_system/getStudentsServlet', null, {headers: { Authorization: 'Bearer your_token_here' }});console.log(response);} catch (error) {console.error('请求出错:', error);}
}
这里我们演示了如何在 POST 请求中添加自定义的请求头信息。
//servlet接受方式
System.out.println(request.getHeader("Authorization"));
3. 发送带参数的 GET ,POST请求
//GET方式
async sendReq() {try {const username = '白鹿';const password = '女神';const response = await axios.get(`/management_system/getStudentsServlet?username=${username}&password=${password}`);console.log(response);} catch (error) {console.error('请求出错:', error);}
}//POST方式
const response = await axios.post(`/management_system/getStudentsServlet`,null,{params:{username : name, message : msg}}
);
console.log(response);
这段代码展示了如何在 GET 请求中携带参数,参数会自动编码并添加到 URL 中。
//servlet接受方式
System.out.println("名字是:" + request.getParameter("name"));
System.out.println("信息是:" + request.getParameter("message"));
- 发送 JSON 数据的 POST 请求
async sendReq() {try {const data = {name: '白鹿',message: '女神'};const response = await axios.post('/management_system/getStudentsServlet', data);console.log(response);} catch (error) {console.error('请求出错:', error);}
}
这段代码展示了如何通过 POST 请求发送 JSON 格式的数据。
//servlet接受方式
StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader();
String line;
while ((line = reader.readLine()) != null) {sb.append(line);
}
String json = sb.toString();
// 现在 `json` 变量中包含了请求体的 JSON 数据
System.out.println("Received JSON data: " + json);
- 发送
application/x-www-form-urlencoded
格式的 POST 请求
application/x-www-form-urlencoded
是 HTTP 请求的默认编码类型,通常用于通过 URL 参数传递较简单的表单数据。数据会以键值对的形式发送,每个键值对之间用 &
符号分隔,键名和键值都会进行 URL 编码。
async sendReq() {try {const params = new URLSearchParams();params.append('name', '白鹿');params.append('message', '女神');const response = await axios.post('/management_system/getStudentsServlet', params);console.log(response);} catch (error) {console.error('请求出错:', error);}
}
这段代码展示了如何以 URL 查询参数形式发送 POST 请求。
//servlet接受方式
System.out.println("名字是:" + request.getParameter("name"));
System.out.println("信息是:" + request.getParameter("message"));
6. 发送 multipart/form-data
格式的 POST 请求
multipart/form-data
格式通常用于上传文件或者发送复杂的数据结构,它允许将一个表单分成多个部分,每个部分有自己的内容类型和编码方式。每个部分之间用 boundary 进行分隔,这个 boundary 是一个唯一的字符串,用于区分各个部分。
async sendReq() {try {const formData = new FormData();formData.append('name', '白鹿');formData.append('message', '女神');const response = await axios.post('/management_system/getStudentsServlet', formData);console.log(response);} catch (error) {console.error('请求出错:', error);}
}
- application/x-www-form-urlencoded:适合发送简单的键值对表单数据,如用户名和密码等。它的优点是简单易用,但不支持文件上传,且对于复杂的数据结构支持有限。
- multipart/form-data:适合上传文件或者发送包含文件在内的复杂数据结构。它的优点是能够处理大文件和复杂的数据格式,但相对于
application/x-www-form-urlencoded
,它需要更多的请求体积和处理时间。
3.axios默认配置
在使用axios时,一般使用的默认的axios,这使得一些常用的配置需要在每次发送请求的时候多次重复配置,所以我们可以修改axios的默认配置,减少重复的代码
const axios = create(config);
常见的 config 项有
名称 | 含义 |
---|---|
baseURL | 将自动加在 url 前面(常常用做修改统一路径,减少取消自动代理带来的工作量) |
headers | 请求头,类型为简单对象 |
params | 跟在 URL 后的请求参数,类型为简单对象或 URLSearchParams |
data | 请求体,类型有简单对象、FormData、URLSearchParams、File 等 |
withCredentials | 跨域时是否携带 Cookie 等凭证,默认为 false(在浏览器端请求服务器端时,默认在跨域情况下不会携带cookie,这使得服务器每次不会得到正确的cookie信息,这时需要设置发送的请求应携带cookie,因此可以添加withCredentials=true;在服务器端默认不会接受跨域来的cookie,因此在@CrossOrigin注解中allowCredentuals=true,用于接受cookie) |
responseType | 响应类型,默认为 json |
const _axios = axios.create({baseURL:"http://localhost:8080",withCredentials:true
});const response = await _axios.get("/management_system/getStudentsServlet");
console.log(response);
4.response对象属性
名称 | 含义 | 具体 |
---|---|---|
data | 响应体数据 ⭐️ | |
status | 状态码 ⭐️ | 200 表示响应成功 400 请求数据不正确 401 身份验证没通过 403 没有权限 404 资源不存在 405 不支持请求方式 post 500 服务器内部错误 |
headers | 响应头 |
5.axios拦截器
Axios拦截器是在发送请求或接收响应前允许我们进行额外处理的机制。它可以用来全局地添加、修改或者捕获请求和响应。在实际应用中,拦截器可以用来处理诸如添加认证信息、统一处理错误、请求/响应日志记录等场景。
添加请求拦截器
请求拦截器允许我们在发送请求前对其进行修改或者添加额外信息,例如请求头部的设置。
import axios from 'axios';// 添加请求拦截器
axios.interceptors.request.use(function (config) {// 在发送请求之前做些什么// 可以在此处添加认证信息,例如 tokenconfig.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});
添加响应拦截器
响应拦截器允许我们在接收到响应后进行处理,例如统一处理错误、日志记录等操作。
// 添加响应拦截器
axios.interceptors.response.use(function (response) {// 对响应数据做点什么return response;
}, function (error) {// 对响应错误做点什么// 可以在此处处理 HTTP 错误状态码,例如 401 Unauthorizedreturn Promise.reject(error);
});
在上面的例子中,axios.interceptors.response.use
中的第一个函数用于处理正常的响应,第二个函数用于处理响应时的错误。你可以根据需要对错误进行处理,例如弹出错误提示或者重新跳转到登录页面。
相关文章:
WEB前端12-axios基础
Vue2-axios基础 1.axios基本概念 在现代的前端开发中,处理网络请求是至关重要的一部分。Axios 是一个流行的基于 Promise 的 HTTP 客户端,它可以在浏览器和 Node.js 环境中使用。它的设计简单易用,支持并行请求、拦截器、CSRF 防护等特性&a…...
Ubuntu 防火墙设置
目录 1. 安装防火墙 2. 开启和关闭防火墙 3. 开放端口和服务规则 4. 关闭端口和删除服务规则 5. 查看防火墙状态 1. 安装防火墙 如果已经安装就忽略 # 安装ufw(Uncomplicated Firewall),这是Ubuntu上管理防火墙的一个简单工具 sudo ap…...
JL 跳转指令的理解
一般情况下,JU 和 JC 是最常见的跳转指令;但有时会用到JL 指令,JL 说起来更像是一组指令,类似C,C# 语言中的 switch case 语句,但是有个明显的不同,前者的判断条件可以是任意合理数字,后者范围…...
vue大屏展示组件库datav
主要用于构建大屏数据展示页面,具有多种类型组件可供使用。详情参考 datav官网 一、安装 npm 安装 npm install jiaminghi/data-viewyarn安装 yarn add jiaminghi/data-view二、使用 在main.js中注册为全局组件 import dataV from jiaminghi/data-view Vue.us…...
Vue.js 与 Ajax(vue-resource)的集成应用
Vue.js 与 Ajax(vue-resource)的集成应用 Vue.js 是一款流行的前端JavaScript框架,以其简洁、灵活和高效的特点而受到开发者的喜爱。在实际开发中,与后端服务的通信是不可或缺的,而Ajax技术是实现这一功能的关键。在V…...
【讲解下AI Native应用中的模型微调】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...
【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】
请阅读【嵌入式及芯片开发学必备专栏】 请阅读【芯片设计 DFT 学习系列 】 如有侵权,请联系删除 转自: 芯爵ChipLord 2024年07月10日 12:00 浙江 文章目录 概述DRC的概念Tessent DRC检查的概述时钟相关检查扫描相关检查BIST规则检查预DFT时钟规则检查 …...
深度学习:如何计算感受野
感受野(Receptive Field)是卷积神经网络(CNN)中的一个重要概念,用于描述输入图像中的一个像素在输出特征图中影响的区域大小。在设计和理解卷积神经网络时,计算感受野有助于理解网络如何对输入数据进行处理…...
【状语从句】
框架 概念,特点主将从现连接词时间条件地点结果方式让步原因目的比较省略倒装 解读 1【概念,特点】 一个完整的句子,去修饰另一个完整句子中的动词,称为状语从句;特点:从句完整,只用考虑连接词是…...
阿里云服务器安装Anaconda后无法检测到
前言 问题如标题所言,就是conda -V验证错误,不过后来发现其实就是虽然安装时,同意了写入环境变量,但是其实还没有写入,需要手动写入。下面也会重复一遍安装流程。 安装 到[Anaconda下载处](Download Now | Anaconda)查…...
在没有源程序的情况时,如何通过控制鼠标按钮控制电脑exe程序?
有时候想控制第三方软件,但是没有源程序,可以控制鼠标键盘自动操作软件达到我们想要的目的 首先建一个功能类包含窗口控制,鼠标控制和输入控制等 csharp using System; using System.Collections.Generic; using System.Linq; using System.…...
如何排查GD32 MCU复位是由哪个复位源导致的?
上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等,在一个GD32系统中,如果莫名其妙产生了MCU复位,如何排查具体是由哪个复位源导致的呢? GD32 MC…...
【C算法】编程初学者入门训练140道(1~20)
牛客编程初学者入门训练150题 BC1 实践出真知BC2 我是大VBC3 有容乃大BC6 小飞机BC7 缩短二进制BC8 十六进制转十进制BC9 printf的返回值BC10 成绩输入输出BC11 学生基本信息输入输出BC12 字符圣诞数BC13 ASCII 码BC14 出生日期输入输出BC15 按照格式输入并交换输出BC16 字符转…...
消息队列-rabbitmq(生产者.消费者. 消息.可靠性)
生产者者的可靠性 为了保证我们生产者在发送消息的时候消息不丢失,我们需要保证发送者的可靠性 1.生产者重试 假如发送消息的时候消息丢失 ,我们可以使用发送者 重试机制,尝试重新发送消息 实现该机制非常简单,只需要在yml文…...
《InheriBT行为树》For Unity
InheriBT: Unity Editor中的行为树编辑框架 行为树(Behavior Tree)是一种广泛应用于人工智能(AI)领域的决策模型,特别是在游戏开发中。行为树通过分层结构和节点的组合,实现了复杂行为的简洁表达。然而&am…...
黑马头条Day11- 实时计算热点文章、KafkaStream
一、今日内容 1. 定时计算与实时计算 2. 今日内容 KafkaStream 什么是流式计算KafkaStream概述KafkaStream入门案例SpringBoot集成KafkaStream 实时计算 用户行为发送消息KafkaStream聚合处理消息更新文章行为数量替换热点文章数据 二、实时流式计算 1. 概念 一般流式计…...
pnpm 设置国内源
pnpm config set registry https://registry.npmmirror.com/...
链表分割 C语言
链表分割_牛客题霸_牛客网 (nowcoder.com) ( 点击前面链接即可查看题目) /* struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {} };*/ #include <cstddef> class Partition { public:ListNode* partition(ListNode* pHea…...
python编程,设计一个详细的软件 与SADS 相似
软件功能模块: 用户界面模块(UI Module) 项目管理界面模型构建界面分析和设计界面结果展示和报告生成界面 数据库模块(Database Module) 材料数据库结构组件数据库设计标准和规范数据库用户项目数据存储 模型构建模块&…...
META 备受期待的 Llama 3 405B 即将发布
本心、输入输出、结果 文章目录 META 备受期待的 Llama 3 405B 即将发布前言Llama 3 405B或许会彻底改变专用模型的数据质量Llama 3 405B将形成新的模型生态系统:从基础模型到专家组合Llama 3 405B有最高效 API 的竞争Llama 3 405B 基准测试META 备受期待的 Llama 3 405B 即将…...
c# Math.Round()四舍五入取整数
可以使用Math.Round()方法进行四舍五入取整数的操作。 以下是使用Math.Round()方法的实现方法: 将浮点数直接作为参数传递给Math.Round()方法,并指定要保留的小数位数。此方法将返回最接近的整数值。 double number 3.89; int roundedNumber (int)Mat…...
【C++BFS算法】886. 可能的二分法
本文涉及的点 CBFS算法 LeetCod886. 可能的二分法 给定一组 n 人(编号为 1, 2, …, n), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。 给定整数 n 和数组 dislikes ,其…...
【MySQL】记录MySQL加载数据(LOAD DATA)
MySQL LOAD DATA 一、背景二、模拟生成用户信息三、加载到mysql表3.1、建表语句3.2 加载数据3.3、查看结果 一、背景 现在有个需求是将用户信息存入student.data文件中,在现在load到数据库中 二、模拟生成用户信息 假设用户信息,包含姓名,…...
6 网络
6 网络 1、概念2 IP地址3、套接字4、TCP协议4.1 TCP协议的基本特征4.2 建立连接4.4 终止连接4.5 编程模型 5、UDP协议5.1 UDP协议的基本特性5.2 常用函数5.3 UDP通信模型 6、域名解析 1、概念 计算机网络是实现资源共享和信息传递的计算机系统 ISO/OSI网络协议模型 TCP/IP协…...
SQL中CASE WHEN的用法
CASE WHEN的用法 1. CASE WHEN数据转换 说明:使用CASE WHEN我们可以将范围的数据转换成特定的值来表达; 假如:有一个员工表Employee(employee_id,department_id.salary,name,age); 需求:需要根据薪资情况来评定等级:…...
CTF-Web习题:[GXYCTF2019]Ping Ping Ping
题目链接:[GXYCTF2019]Ping Ping Ping 解题思路 访问靶机,得到如下页面,类似于URL参数 尝试用HackBar构造url传输过去看看 发现返回了ping命令的执行结果,可以猜测php脚本命令是ping -c 4 $ip,暂时不知道执行的函数…...
python+vue3+onlyoffice在线文档系统实战20240725笔记,首页开发
解决遗留问题 内容区域的高度没有生效,会随着菜单的高度自动变化。 解决方案:给侧边加上一个最小高度。 首页设计 另一种设计: 进来以后,是所有的文件夹和最近的文件。 有一张表格,类似于Windows目录详情&…...
映美精彩色相机IFrameQueueBuffer转halcon的HObject
1.之前写了黑白IFrameQueueBuffer转halcon的HObject,下载这边文件写,彩色IFrameQueueBuffer转halcon的HObject 2.相机的部署跟黑白的一样,不同的是取图的格式改变 if (CamerTakeImageOne._camer_take_image_static._camer_is_exit){textbox_m…...
写代码对人的影响
1 代码是需要跑起来的,不能你写了一段代码运行不了 2 代码过程中有大量的bug,经常异常报错,你需要花费时间去解决 对人的影响就是解决问题的态度得到强化,解决问题要比坚持正确困难,坚持正确只是需要自然而然的努力&…...
Hive-基础介绍
简介 Apache Hive是一款数据仓库系统 功能 可以将存储在Hadoop(HDFS)中的数据映射为一张数据库表。核心是将HQL语句转化为MapRece程序,然后提交到Hadoop执行。 组件 用户接口:CLI(shell命令行)、WebGUI、Thrift Server元数据存储(Metastore)&#x…...
网站如何从0-1搭建部署蓝图介绍
第一步:网站规划 确定网站目的:明确网站的目标和预期的受众。内容规划:决定网站将包含哪些内容和功能。技术需求分析:确定所需的技术栈,例如前端和后端技术。 第二步:设计 草图和布局:绘制网…...
面向对象(封装)练习题 巩固一下啦!
# 设计一个类,用来描述手机 class Phone:# 提供私有成员变量:__is_5g_enable__is_5g_enable False # 5g状态# 提供私有成员方法:__check_5gdef __check_5g(self):if self.__is_5g_enable:print("5g开启")else:print("5g关闭…...
一些问题 7/28
get post可以public吗 在Java Servlet中,doGet()和doPost()方法的访问修饰符通常是public,因为这些方法需要被Servlet容器(如Tomcat)调用。 如果将这些方法声明为private或protected,Servlet容器将无法访问它们&…...
昇思MindSpore 应用学习-基于MobileNetv2的垃圾分类
基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入,对图像中的垃圾物体进行检测,并将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写(Python语言)&…...
matlab 常用数据类型的转换
目录 一、数据类型1、整型2、浮点型3、逻辑型4、元胞数组5、结构体 二、数据类型转换三、图像数据类型转换四、参考链接 一、数据类型 1、整型 int和unit都是整型,只是前一个有符号,后一个没有符号,比如在16位系统中,int范围是-3…...
Cocos Creator2D游戏开发(6)-飞机大战(4)-敌机产生
敌机产生&玩家发射子弹 敌机产生: 创建一个空节点 创建一个敌机预制体 把敌机图片拖入预制体内 使用代码生成敌机 让敌机动起来 创建一个预制体enemy_prefab双击预制体enemy_prefab,然后拖入一个敌机图片,设置好方向和尺寸,一定要记得保存然后关闭(场景编辑器里面的保存)…...
Hugo部署到Vercel踩大坑——全是XML文件?
问题描述 部署到Vercel全都是XML文件 Vercel是著名PAAS服务,相比于 Github Pages,其中国大陆可直接访问,因此尝试把Hugo站点发布到vercel中,部署后遇到问题,所有页面都为xml文件,如下所示: Ve…...
2024 暑假友谊赛-热身1
[ABC102D] Equal Cut - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:找在区间[2,n-1]中找到i,j,k三个点,把序列分割成4个区间:[1,i],[i1,j],[j1,k],[k1,n] 暴力的做法是枚举i,j,k加上前缀和是o(n^3)的 key:"考虑枚举处于中间的j,然后用i平衡左两个区间,…...
Nginx系列-11 HTTP消息处理流程
背景 了解Nginx处理HTTP请求的11个阶段,有助于理解和配置nginx、自定义模块、基于lua模块自定义功能。按如下配置,执行"curl http://localhost:8001/query/test.html",如果读者对结果不是很确定,建议阅读本文。 serve…...
前端知识--前端访问后端技术Ajax及框架Axios
一、异步数据请求技术----Ajax Ajax是前端访问后端的技术,为异步请求(不刷新页面,请求数据,只更新局部数据)。 例如:在京东网站中搜索电脑,就会出现一些联想搜索,但此时页面并没有…...
【前端/js】使用js读取本地文件(xml、二进制)内容
目录 说在前面FileReaderDOMParser文本文件二进制文件 说在前面 浏览器版本:Microsoft Edge 126.0.2 (正式版本) (64 位) FileReader MDNFileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容&#x…...
初步入门C ++之类的概念
文章目录 0 Hello World!1 编译过程2 类2.1 类的概念2.2 构造函数与析构函数 0 Hello World! #include <iostream> //相当于#include <stdio.h>int main(int argc, char argv[]) {char c;std::cout << "Hello World!\n" <<…...
什么是技术作家风格指南?
技术写作风格指南旨在提供必要的格式风格,以帮助技术作家为读者创建引人入胜且一致的内容。然而,技术写作与普通的自由写作有很大不同。目的是将复杂的技术主题分解为易于理解的内容,以帮助读者了解如何使用产品或服务。 在本文中࿰…...
WebGIS学习——Cesium|Javascript
1.Cesium学习什么:Cesium实战项目说明-CSDN博客 2.Cesium绘制图形(箭头等):Cesium 态势标绘 _cesium态势标绘-CSDN博客 3.CesiumThree集成 4.Cesium深度图相关:Cesium离屏渲染深度图实验_cesium 离屏渲染-CSDN博客 5.洪涝:cesium淹没分析…...
Qt,获取其他.exe文件的标准输出流的信息(printf/print的输出信息)
比如,通过Python编写爬虫软件功能是运行程序获取豆瓣电影排行榜信息,并通过print打印出来。将其打包成.exe,通过Qt来调用,并获取到.exe程序运行的结果 简单示例代码: // 创建 QProcess 对象QProcess process;// 连接信号槽以获取…...
LeetCode 热题 HOT 100 (010/100)【宇宙最简单版】
【链表】No. 0206 反转链表 【简单】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持…...
Ubuntu24.04安装mysql-server小计,解决mysql_secure_installation时不能重置密码的问题
Ubuntu24.04安装mysql-server小计,解决mysql_secure_installation时不能重置密码的问题 为什么要写这往篇文章? 一般情况下,我安装mysql都用源码编译,以此方便安装更多自定义插件,但这次只需要安装一台开发机&#x…...
unity3d:TabView,UGUI多标签页组件,TreeView树状展开菜单
概述 1.最外层DataForm为空壳编辑数据用。可以有多个DataForm,例如福利DataForm,抽奖DataForm 2.Menu层为左边栏层,每个DataForm可以使用不同样式的MenuForm预制体 3.DataForm中使用ReorderList,可排列配置 4.有定位功能…...
go语言map底层及扩容机制原理详解(下)
前言 上文对Go map的底层数据结构有所了解,并对其扩容机制的步骤进行简略的描述。本文将会详细地去解释Go map扩容机制的详细原理。 1. 触发扩容操作 在go语言中,当我们插入一个元素到hmap时,会有以下两种情况: 若元素存在&…...
网络协议二 : 使用Cisco Packet Traceer工具模拟网络环境,集线器,网桥,交换机,路由器,IP,同一网段
1. 安装 Cisco Packet Tracer baidu 网盘地址,感谢大神分享 安装,破解,中文化,都有说明,建议使用7.x的那个版本,感觉比8.x的翻译要完整一点 https://pan.baidu.com/s/18iWBOfhJJRhqgQqdNQcfMQ?pwddcch#…...