当前位置: 首页 > news >正文

【前端】Axios AJAX Fetch

不定期更新,建议关注收藏点赞。


目录

  • Axios
  • AJAX
    • CORS 允许跨域请求
  • Fetch

Axios

  • axios 是一个基于 Promise 的 JavaScript HTTP 客户端,用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求,并处理请求的结果。axios 主要用于与服务器进行数据交互,比如发送 GET、POST、PUT、DELETE 请求等。相比于浏览器原生的 fetch API,axios 提供了更多的功能和便利,特别是在处理请求和响应时。
axios.get('/api/todolist')
.then((res)=>{console.log(res.data);this.setState(()=>{return {list: [...res.data]}})
.catch(()=>{alert('error')})
}
  1. 安装 axios

如果你使用的是 Node.js 或者 React 等项目,首先需要通过 npmyarn 安装 axios

# 使用 npm 安装
npm install axios# 使用 yarn 安装
yarn add axios
  1. 基本用法

axios 提供了多种方法来发送 HTTP 请求,包括 axios.get()axios.post()axios.put()axios.delete()等。

发送 GET 请求

import axios from 'axios';axios.get('https://api.example.com/data').then(response => {console.log(response.data);  // 响应数据}).catch(error => {console.error('Error fetching data:', error);});
  • get 方法用于发送 GET 请求。
  • response.data 包含了从服务器返回的数据。

发送 POST 请求

import axios from 'axios';const data = {name: 'John Doe',email: 'john@example.com'
};axios.post('https://api.example.com/users', data).then(response => {console.log('User created:', response.data);}).catch(error => {console.error('Error posting data:', error);});
  • post 方法用于发送 POST 请求。
  • 请求体中的数据(data)会被发送到服务器。

发送 PUT 请求

import axios from 'axios';const updatedData = {name: 'Jane Doe',email: 'jane@example.com'
};axios.put('https://api.example.com/users/1', updatedData).then(response => {console.log('User updated:', response.data);}).catch(error => {console.error('Error updating data:', error);});
  • put 方法用于发送 PUT 请求。它通常用于更新现有的资源。

发送 DELETE 请求

import axios from 'axios';axios.delete('https://api.example.com/users/1').then(response => {console.log('User deleted:', response.data);}).catch(error => {console.error('Error deleting data:', error);});
  • delete 方法用于删除指定的资源。
  1. 请求配置

axios 支持配置请求的各个方面,如 headers、params、timeout 等。你可以通过第二个参数传递一个配置对象来设置这些选项。

示例:设置请求头

import axios from 'axios';axios.get('https://api.example.com/data', {headers: {'Authorization': 'Bearer your_token_here'}
}).then(response => {console.log(response.data);}).catch(error => {console.error('Error:', error);});

示例:设置请求超时

import axios from 'axios';axios.get('https://api.example.com/data', {timeout: 5000  // 设置超时时间为 5 秒
}).then(response => {console.log(response.data);}).catch(error => {if (error.code === 'ECONNABORTED') {console.log('Request timeout');} else {console.error('Error:', error);}});
  1. 拦截器(Interceptors)

axios 提供了拦截器机制,使得你可以在请求发送之前或响应返回之后执行一些逻辑。

请求拦截器

import axios from 'axios';axios.interceptors.request.use(config => {console.log('Request Interceptor:', config);// 在发送请求之前做些什么,比如添加 token 等config.headers['Authorization'] = 'Bearer your_token_here';return config;
}, error => {return Promise.reject(error);
});

响应拦截器

import axios from 'axios';axios.interceptors.response.use(response => {console.log('Response Interceptor:', response);return response;
}, error => {console.error('Response Error:', error);return Promise.reject(error);
});
  • 请求拦截器可以在请求发送之前修改请求的配置。
  • 响应拦截器可以在响应返回之后处理响应数据或者捕获错误。
  1. 取消请求

有时你可能需要取消一个正在进行的请求,axios 提供了 CancelToken 来实现这一功能。

import axios from 'axios';const cancelToken = axios.CancelToken;
const source = cancelToken.source();axios.get('https://api.example.com/data', {cancelToken: source.token
}).then(response => {console.log(response.data);}).catch(error => {if (axios.isCancel(error)) {console.log('Request canceled:', error.message);} else {console.error('Error:', error);}});// 取消请求
source.cancel('Operation canceled by the user.');
  1. 并发请求

axios 还可以让你同时发送多个请求,并在它们全部完成后进行处理,使用 axios.allaxios.spread 来实现。

import axios from 'axios';const request1 = axios.get('https://api.example.com/data1');
const request2 = axios.get('https://api.example.com/data2');axios.all([request1, request2]).then(axios.spread((response1, response2) => {console.log('Response 1:', response1.data);console.log('Response 2:', response2.data);})).catch(error => {console.error('Error:', error);});
  1. 处理错误

axios 会将所有错误统一通过 catch 捕获。你可以通过 error.response 来访问服务器返回的错误信息。

import axios from 'axios';axios.get('https://api.example.com/data').then(response => {console.log(response.data);}).catch(error => {if (error.response) {// 服务器返回了响应console.error('Response error:', error.response);} else if (error.request) {// 请求已发出但没有收到响应console.error('Request error:', error.request);} else {// 发生了其他错误console.error('Error:', error.message);}});
  • axios v.s. AJAX v.s. fetch

axios 在前端开发中具有较高的使用率,fetch 作为原生 API 也被广泛采用,而 XMLHttpRequest 的使用率相对较低。

特性AJAX (XMLHttpRequest)Fetch APIAxios
基于回调函数PromisePromise
请求响应处理需要手动管理请求状态和解析响应自动解析 JSON,但仍需要手动处理错误自动解析 JSON,无需手动处理响应数据
请求和响应拦截器支持请求和响应拦截器
跨域请求需要额外配置 CORS 头需要额外配置 CORS 头支持自动处理跨域请求(需要后端支持)
请求取消需要使用 AbortController需要使用 AbortController支持请求取消,直接使用 CancelToken
浏览器兼容性在所有浏览器中都能工作,但老旧浏览器不支持大多数现代浏览器支持,但 IE 需要 polyfill支持现代浏览器和 IE(需要 polyfill)
支持的功能基本的 HTTP 请求功能基本的 HTTP 请求功能更丰富的功能:请求/响应拦截器、取消请求等
使用难度相对较复杂,需要手动管理请求状态和响应解析简单,支持 Promise,且 API 直观简单,且有更多的功能和配置选项
  • axios与python requests库
功能Axios (JavaScript)Requests (Python)
异步操作基于 Promise,支持 async/await同步请求,需要配合 aiohttp 异步库
自动解析响应自动解析 JSON自动解析 JSON
请求拦截器/响应拦截器支持请求和响应拦截器不支持直接的拦截器功能
取消请求支持 CancelToken 来取消请求无原生支持取消请求
跨域请求处理跨域请求(CORS)不涉及浏览器,跨域由后端控制
浏览器支持支持现代浏览器仅支持 Python 环境

低级 HTTP 请求通常是指在较低的抽象层次上进行的 HTTP 请求,通常需要开发者手动处理许多细节,例如请求头、参数、响应处理、编码等。相比高级 HTTP 请求,低级 HTTP 请求提供了更多的灵活性和控制,但也要求开发者更了解底层的 HTTP 协议和细节。

python中类似的库:requests、httpx、aiohttp、urllib、pycurl、tornado,后端开发使用。

AJAX

AJAX(Asynchronous JavaScript and XML)本身并不属于 HTML。它是一个基于 JavaScript 的技术,用于实现网页的异步请求和更新。因此,AJAX 更准确地说是 JavaScript 技术,而不是 HTML 技术。
AJAX(Asynchronous JavaScript and XML)是一个用于创建动态和交互式网页的技术,它允许网页在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种方式能提高用户体验,因为它使得网页加载更加流畅,用户可以与页面进行交互,而无需等待页面的完全刷新。
尽管它的名字中有 “XML”,但现在 AJAX 主要用于通过 JSON(JavaScript Object Notation)与服务器交换数据。不过,它也支持通过 XML、HTML 或纯文本等格式进行数据交换。

  • AJAX 的工作原理
    AJAX 允许浏览器在后台发送 HTTP 请求到服务器,获取数据并在不刷新页面的情况下更新网页内容。通常,AJAX 使用 JavaScript 与服务器进行通信,通过 XMLHttpRequest 对象或现代的 fetch API 来发送请求。
    AJAX 的基本流程如下:
    用户发起请求(例如,点击按钮或加载页面时)。
    JavaScript 使用 XMLHttpRequest 或 fetch() 向服务器发送请求(GET、POST 等)。
    服务器接收请求,处理数据,并返回响应。
    JavaScript 处理服务器返回的数据,并更新页面内容。

什么是 XMLHttpRequest 对象?
XMLHttpRequest 对象用于在后台与服务器交换数据。
XMLHttpRequest 对象能够:
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据
在页面已加载后从服务器接收数据
在后台向服务器发送数据

responseText 只适用于文本响应。如果服务器返回的是 JSON 或 XML 数据,可以使用 JSON.parse(req.responseText) 来将其转换为 JavaScript 对象,或使用 req.responseXML 获取 XML 格式的响应。

readyState 表示当前请求的状态。
XMLHttpRequest 的请求生命周期有 5 个阶段(0 到 4),表示请求的不同状态:
0 - UNSENT:对象已创建,但尚未调用 open() 方法。
1 - OPENED:已调用 open(),但尚未调用 send()。
2 - HEADERS_RECEIVED:已发送请求,并且已接收到响应头。
3 - LOADING:正在下载响应体。
4 - DONE:响应已完全下载,处理完成。
status 表示 HTTP 响应的状态码。

  • 例子
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AJAX Example</title>
</head>
<body><h1>AJAX Example</h1><button id="loadData">Load Data</button><div id="result"></div>  <!-- 结果将显示在这里 --><script src="app.js"></script>
</body>
</html>
// 获取按钮和结果展示区域
const button = document.getElementById('loadData');
const result = document.getElementById('result');// 添加点击事件监听器
button.addEventListener('click', function() {// 创建一个新的 XMLHttpRequest 对象const xhr = new XMLHttpRequest();// 配置请求:GET 请求,指向一个 JSON 文件xhr.open('GET', 'data.json', true);  // 异步请求// 设置 onload 事件处理函数xhr.onload = function() {if (xhr.status === 200) {  // 如果请求成功const data = JSON.parse(xhr.responseText);  // 解析返回的 JSON 数据result.innerHTML = `Message: ${data.message}`;  // 显示结果} else {result.innerHTML = 'Error loading data';}};// 发送请求xhr.send();
});

XMLHttpRequest对象的open()方法有3个参数,第一个参数指定是GET还是POST,第二个参数指定URL地址,第三个参数指定是否使用异步,默认是true,所以不用写。
注意,尽量不要把第三个参数指定为false,否则浏览器将停止响应,直到AJAX请求完成。如果这个请求耗时10秒,那么10秒内你会发现浏览器处于“假死”状态。
最后调用send()方法才真正发送请求。GET请求不需要参数,POST请求需要把body部分以字符串或者FormData对象传进去。

  • 上面代码的URL使用的是相对路径。如果你把它改为’http://www.sina.com.cn/',再运行,肯定报错。在Chrome的控制台里,还可以看到错误信息。
    这是因为浏览器的同源策略导致的。默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致。
    完全一致的意思是,域名要相同(www.example.com和example.com不同),协议要相同(http和https不同),端口号要相同(默认是:80端口,它和:8080就不同)使用 JavaScript 请求外域(即跨域请求)时,通常会遇到 跨域资源共享 (CORS, Cross-Origin Resource Sharing) 的限制。默认情况下,浏览器会阻止网页发起跨域请求,以保护用户的安全。为了绕过这个限制,目标网站必须明确允许你的域名进行请求。

CORS 允许跨域请求

用JavaScript怎么请求外域(就是其他网站)的URL了呢?

  1. 使用 fetch() API(推荐)
    现代浏览器支持 fetch(),可以发起跨域请求,但前提是目标网站支持 CORS。如果目标网站没有明确设置允许跨域访问,那么请求会被浏览器阻止。如果目标网站支持 CORS 并正确设置了头部(例如 Access-Control-Allow-Origin),请求就会成功。
fetch('https://example.com/data', {method: 'GET',  // 或者 'POST',取决于你的请求类型headers: {'Content-Type': 'application/json'},mode: 'cors'  // 必须设置为 'cors',表示进行跨域请求
}).then(response => response.json())  // 解析 JSON 数据.then(data => console.log(data))    // 处理返回的响应.catch(error => console.error('Error:', error));  // 错误处理fetch('https://example.com').then(response => {if (!response.ok) {throw new Error('Network response was not ok');}return response.text();  // 将响应转换为文本(HTML)}).then(html => {console.log(html);  // 打印出返回的 HTML 文本}).catch(error => {console.error('There has been a problem with your fetch operation:', error);});
  1. 使用 XMLHttpRequest(旧版)
    XMLHttpRequest 是发起 HTTP 请求的传统方式,它也可以用于发起跨域请求,但依赖于目标网站的 CORS 设置。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/data', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(JSON.parse(xhr.responseText));}
};
xhr.send();

Fetch

  • 例子:使用 fetch() API 替代 XMLHttpRequest
    fetch() 是现代浏览器提供的一个 API,使用 Promise,比 XMLHttpRequest 更简洁,更强大的功能:fetch() 支持更多的功能,如设置请求头、控制超时等。并且它默认支持异步操作。这里是相同请求的 fetch() 版本:
const button = document.getElementById('loadData');
const result = document.getElementById('result');button.addEventListener('click', function() {// 使用 fetch 发起请求fetch('data.json').then(response => response.json())  // 解析返回的 JSON.then(data => {result.innerHTML = `Message: ${data.message}`;  // 显示数据}).catch(error => {result.innerHTML = 'Error loading data';console.error(error);});
});

相关文章:

【前端】Axios AJAX Fetch

不定期更新&#xff0c;建议关注收藏点赞。 目录 AxiosAJAXCORS 允许跨域请求 Fetch Axios axios 是一个基于 Promise 的 JavaScript HTTP 客户端&#xff0c;用于浏览器和 Node.js 中发送 HTTP 请求。它提供了一个简单的 API 来发起请求&#xff0c;并处理请求的结果。axios …...

C++ 继承与运算符重载的简单练习

1.长方形的继承类 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>using namespace std; class AB{ private:int a;int …...

pycharm技巧--鼠标滚轮放大或缩小 Pycharm 字体大小

1、鼠标滚轮调整字体 设置 Ctrl 鼠标滚轮调整字体大小 备注&#xff1a; 第一个是活动窗口&#xff0c;即缩放当前窗口 第二个是所有编辑器窗口&#xff0c;即缩放所有窗口的字体 2、插件 汉化包&#xff1a; Chinese Simplified 包...

deepseek 导出导入模型(docker)

前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局&#xff0c;然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹&#xff0c;然后拷贝…...

STM32——HAL库开发笔记21(定时器2—输出比较)(参考来源:b站铁头山羊)

本文主要讲述输出比较及PWM信号相关知识。 一、概念 所谓输出比较&#xff0c;就是通过单片机的定时器向外输出精确定时的方波信号。 1.1 PWM信号 PWM信号即脉冲宽度调制信号。PWM信号的占空比 &#xff08;高电压 所占周期 / 整个周期&#xff09; * 100% 。所以PWM信号…...

【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘

问题描述&#xff1a; vue运行时正常&#xff0c;但是打开页面后报错 Uncaught SecurityError: Failed to construct WebSocket: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 解决方案&#xff1a; 在项目列表中的public下的ind…...

【初探数据结构】时间复杂度和空间复杂度

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…...

将DeepSeek接入vscode的N种方法

接入deepseek方法一:cline 步骤1:安装 Visual Studio Code 后,左侧导航栏上点击扩展。 步骤2:搜索 cline,找到插件后点击安装。 步骤3:在大模型下拉菜单中找到deep seek,然后下面的输入框输入你在deepseek申请的api key,就可以用了 让deepseek给我写了一首关于天气的…...

《TransMamba:一种混合Transformer-Mamba网络用于单图像去雨》学习笔记

paper&#xff1a;2409.00410 GitHub&#xff1a;sunshangquan/TransMamba 目录 摘要 1、介绍 2、相关工作 2.1 单图像去雨 2.2 视觉Transformer 2.3 光谱域中的Transformer 2.4 光谱域中的图像恢复 2.5 视觉Mamba 3、方法 3.1 整体网络架构 3.2 光谱域变换块&am…...

危化品经营单位安全管理人员的职责及注意事项

危化品经营单位安全管理人员肩负着保障经营活动安全的重要责任&#xff0c;以下是其主要职责及注意事项&#xff1a; 职责 1. 安全制度建设与执行&#xff1a;负责组织制定本单位安全生产规章制度、操作规程和生产安全事故应急救援预案&#xff0c;确保这些制度符合国家相关法…...

安装Redis并把Redis设置成windows下的服务然后进行Redis实例演示

目录 &#xff08;一&#xff09;安装Redis &#xff08;二&#xff09;Redis设置成windows下的服务 1、把redis设置成windows下的服务 2、设置服务命令 &#xff08;三&#xff09;Redis实例演示 1、Redis插入数据 2、Redis修改数据 3、Redis删除数据 4、Redis查询数…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...

牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)

文章目录 牛客周赛 Round 82&#xff08;思维、差分、树状数组、大根堆、前后缀、递归&#xff09;A. 夹心饼干B. C. 食堂大作战&#xff08;思维&#xff09;D. 小苯的排列计数(差分、树状数组)E. 和和&#xff08;大根堆&#xff0c;前缀和&#xff09;F. 怎么写线性SPJ &…...

【python】解析自动化脚本文件并按照=测试周期=存储记录

【python】连接Jira获取token以及jira对象 【python】解析自动化脚本文件并按照测试周期存储记录 【python】向Jira推送自动化用例执行成功 【python】向Jira测试计划下&#xff0c;附件中增加html测试报告 将已编写的自动化测试用例按照jira号解析出来&#xff0c;并按照测试计…...

一种简单有效的分析qnx+android智能座舱项目中的画面闪烁的方法(8155平台)

在智能座舱项目的开发过程中&#xff0c;画面闪烁问题是一个常见但棘手的挑战。由于这些闪烁现象往往转瞬即逝&#xff0c;传统的分析工具如截图、录屏或dump图层等方法难以捕捉和定位问题根源。针对这一难题&#xff0c;本文介绍了一种较为有效的分析方法&#xff0c;能够帮助…...

架构师论文《论湖仓一体架构及其应用》

软考论文-系统架构设计师 摘要 作为某省级商业银行数据中台建设项目技术负责人&#xff0c;我在2020年主导完成了从传统数据仓库向湖仓一体架构的转型。针对日益增长的支付流水、用户行为埋点及信贷审核影像文件等多模态数据处理需求&#xff0c;原有系统存在存储成本激增、实…...

一篇文章学懂Vuex

一、基于VueCli自定义创建项目 233 344 二、Vuex 初始准备 建项目的时候把vuex勾选上就不用再yarn add vuex3了 store/index.js // 这里面存放的就是vuex相关的核心代码 import Vuex from vuex import Vue from vue// 插件安装 Vue.use(Vuex)// 创建仓库&#xff08;空仓库…...

模拟实现Java中的计时器

定时器是什么 定时器也是软件开发中的⼀个重要组件. 类似于⼀个 "闹钟". 达到⼀个设定的时间之后, 就执⾏某个指定好的代码. 前端/后端中都会用到计时器. 定时器是⼀种实际开发中⾮常常⽤的组件. ⽐如⽹络通信中, 如果对⽅ 500ms 内没有返回数据, 则断开连接尝试重…...

全面理解-深拷贝与浅拷贝

在 C 中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09; 和 浅拷贝&#xff08;Shallow Copy&#xff09; 是两种完全不同的对象拷贝策略&#xff0c;主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…...

20250212:https通信

1:防止DNS劫持:使用 https 进行通信。 因为是SDK授权开发,需要尽量压缩so库文件和三方依赖。所以第一想法是使用 head only 的 cpp-httplib 进行开发。 cpp-httplib 需要 SSL 版本是 3.0及以上。但本地已经在开发使用的是1.0.2a版本,不满足需求。 方案1:升级OpenSSL 将Op…...

如何使用爬虫获取淘宝商品详情:API返回值说明与案例指南

在电商数据分析和运营中&#xff0c;获取淘宝商品详情是常见的需求。淘宝开放平台提供了丰富的API接口&#xff0c;允许开发者通过合法的方式获取商品信息。本文将详细介绍如何使用PHP编写爬虫&#xff0c;通过淘宝API获取商品详情&#xff0c;并解析API返回值的含义和结构。 一…...

List 接口中的 sort 和 forEach 方法

List 接口中的 sort 和 forEach 方法是 Java 8 引入的两个非常实用的函数&#xff0c;分别用于 排序 和 遍历 列表中的元素。以下是它们的详细介绍和用法&#xff1a; sort 函数 功能 对列表中的元素进行排序。 默认使用自然顺序&#xff08;如数字从小到大&#xff0c;字符…...

7.建立文件版题库|编写model文件|使用boost split字符串切分(C++)

建立文件版题库 题目的编号题目的标题题目的难度题目的描述&#xff0c;题面时间要求(内部处理)空间要求(内部处理) 两批文件构成第一个&#xff1a;questions.list : 题目列表&#xff08;不需要题目的内容&#xff09;第二个&#xff1a;题目的描述&#xff0c;题目的预设置…...

鸿蒙NEXT应用App测试-专项测试(DevEco Testing)

注意&#xff1a;大家记得先学通用测试在学专项测试 鸿蒙NEXT应用App测试-通用测试-CSDN博客 注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注…...

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象&#xff0c;如果如何来访问呢&#xff1f; 我们看下下面示例&#xff1a; 定义一个Student类 cla…...

docker离线安装记录

1.安装包 首先需要从官方网站下载Docker的离线安装包&#xff0c;可以通过以下地址找到自己想安装的版本&#xff1a; wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.7.tgz 【Docker】Docker学习之一&#xff1a;离线安装Docker步骤_docker离线…...

FreiHAND (handposeX-json 格式)数据集-release >> DataBall

FreiHAND &#xff08;handposeX-json 格式&#xff09;数据集-release 注意&#xff1a; 1)为了方便使用&#xff0c;按照 handposeX json 自定义格式存储 2)使用常见依赖库进行调用,降低数据集使用难度。 3)部分数据集获取请加入&#xff1a;DataBall-X数据球(free) 4)完…...

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载&#xff0c;导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas&#xff0c;UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…...

anaconda不显示jupyter了?

以前下载的anaconda显示jupyter&#xff0c;但是最近学习吴恩达的机器学习视频&#xff0c;需要用到jupyter&#xff0c;以前的jupyter运行不了&#xff0c;就重新下载了一个anaconda&#xff0c;发现新版的anaconda首页不显示jupyter了&#xff0c;在查找资料之后&#xff0c;…...

WordPress平台如何接入Deepseek,有效提升网站流量

深夜改代码到崩溃&#xff1f;《2024全球CMS生态报告》揭露&#xff1a;78%的WordPress站长因API对接复杂&#xff0c;错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案&#xff0c;配合147SEO的智能发布系统&#xff0c;让你用3个步骤实现日均50篇EEAT合规内容自动…...

第十三:路由两个注意点:

4.3. 【两个注意点】 路由组件通常存放在pages 或 views文件夹&#xff0c;一般组件通常存放在components文件夹。 通过点击导航&#xff0c;视觉效果上“消失” 了的路由组件&#xff0c;默认是被卸载掉的&#xff0c;需要的时候再去挂载。 <script setup lang"ts&q…...

【前端学习笔记】Pinia

1.介绍 Pinia 是 Vue 3 中的官方状态管理库&#xff0c;作为 Vuex 的继任者&#xff0c;它为 Vue 3 提供了一个更现代、更灵活、更易用的状态管理解决方案。Pinia 主要用于管理应用中的全局状态&#xff0c;并提供了一个清晰、简洁的 API 来处理复杂的状态逻辑、数据流和副作用…...

Windows 11【1001问】Windows 11系统硬件配置要求

Windows 11 的设计目标是让用户更贴近自己喜欢的内容&#xff0c;在其发布之际&#xff0c;计算机在连接、创作以及游戏体验方面扮演了更加核心的角色。在设定 Windows 11 的最低系统要求时&#xff0c;我们依据三个关键原则来指导决策&#xff0c;以确保用户能够获得卓越的使用…...

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪 系统版本&#xff1a;Ubuntu20.04 Ros版本&#xff1a;noetic Moveit版本&#xff1a;moveit-noetic 参考博客&#xff1a; ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例&#xf…...

火绒终端安全管理系统V2.0网络防御功能介绍

火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能&#xff0c;多层次、多方位&#xff0c;守护用户终端安全。 …...

halcon三维点云数据处理(二十五)moments_object_model_3d

目录 一、moments_object_model_3d例程二、moments_object_model_3d函数三、效果图一、moments_object_model_3d例程 这个例子说明了如何使用moments_object_model_3d运算符来将3D数据与x、y、z坐标轴对齐。在实际应用中,通过3D传感器获取的物体模型可能具有一个与物体主轴不…...

网络安全漏洞管理要求 网络安全产品漏洞

一、漏洞类型 缓冲区溢出、跨站脚本、DOS攻击、扫描、SQL 注入、木马后门、病毒蠕虫、web攻击、僵尸网络、跨站请求伪造、文件包含、文件读取、目录遍历攻击、敏感信息泄露、暴力破解、代码执行漏洞、命令执行、弱口令、上传漏洞利用、webshell利用、配置不当/错误、逻辑/涉及错…...

XML(eXtensible Markup Language)

eXtensible Markup Language&#xff08;可扩展标记语言&#xff09;是一种用来存储和传输数据的文本格式。 具体定义 XML 可扩展标记语言&#xff0c;是用于标记电子文件使其具有结构性的标记语言&#xff0c;可以 用来标记数据、定义数据类型&#xff0c;是一种允许用户对自…...

SpringBoot两种方式接入DeepSeek

方式一&#xff1a;基于HttpClient 步骤 1&#xff1a;准备工作 获取 DeepSeek API 密钥&#xff1a;访问 DeepSeek 的开发者平台&#xff0c;注册并获取 API 密钥。 步骤 2&#xff1a;引入依赖 <dependency><groupId>org.springframework.boot</groupId&g…...

el-date-picker 组件限制禁止选择当前时间之前的时间

页面代码 <el-date-pickerv-model"xxx.startTime"type"datetime"placeholder"请选择开始时间"value-format"YYYY-MM-DD HH:mm:ss"clearable:disabledDate"disabledDateFn":disabled-hours"disabledHours":dis…...

嵌入式科普(33)深度解析C语言中的const和volatile关键字

1. 关键字基础概念 const&#xff1a;定义"只读变量"&#xff0c;被修饰的变量不可被程序修改 volatile&#xff1a;提醒编译器该变量可能被意外修改&#xff0c;禁止编译器优化 九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参 嵌入式科普(23)指向寄存器的…...

DIP的实际举例

SOLID原则。 依赖倒置原则&#xff08;DIP&#xff09;的核心是高层模块不应该依赖于低层模块&#xff0c;二者都应该依赖于抽象&#xff08;接口或抽象类&#xff09; 例如&#xff0c;随着业务的发展&#xff0c;订单总金额的计算规则可能需要根据不同的客户类型或促销活动…...

【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵

GESP二级真题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3955/ 【GESP】C二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵 | OneCoderGESP二级真题&#xff0c;多层循环、分支…...

python类型转换深浅拷贝

1.类型转换 1.1 int(x):转化为一个整数&#xff0c;只能转换由纯数字组成的字符串 float->int 浮点型强转整形会去掉小数点后面的数&#xff0c;只保留整数部分 a 1.2 print(type(a)) #<class float> b int(a) print(type(b)) #<class int>print(int…...

Kafka面试题汇总

基础篇 1、什么是 Apache Kafka&#xff1f;它的主要用途是什么&#xff1f; 2、Kafka 中的几个核心概念是什么&#xff1f;请简要说明每个概念的作用。 3、Kafka 的 Producer 和 Consumer 是如何工作的&#xff1f;它们之间的数据传递机制是什么&#xff1f; 进阶篇 1、K…...

window安装MySQL5.7

1、下载MySQL5.7.24 浏览器打开&#xff1a; https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip 2、解压缩 下载下来的是一个压缩包&#xff0c;解压到你想放到的目录下面&#xff0c;我放的是“C:\MySQL” 3、配置MySQL环境变量 计算机右键 - 属性 …...

什么是手机9008模式?如何进入9008

之前给大家分享了一些有关手机刷机的知识&#xff0c;今天给大家讲一讲如果刷机过程中不慎变砖应该如何应对&#xff08;当然了&#xff0c;希望大家都不会遇到&#xff09;&#x1f602;&#x1f604; 在给手机 Root 或刷机时&#xff0c;线刷 9008 指的是利用 高通 9008 模式…...

【jira】用到几张表

jira用到的几张表 测试计划&#xff0c;测试周期&#xff0c;测试用例&#xff0c;问题记录 1. 测试计划 # 记录表&#xff0c;查计划详情 SELECT ID,issuenum,SUMMARY FROM jiraissue where issuenum 22871# 测试计划下&#xff0c;测试周期&#xff0c;查测试周期id&…...

文件包含-session2

[题目信息]&#xff1a; 题目名称题目难度文件包含-session22 [题目考点]&#xff1a; 由于网站功能需求&#xff0c;会让前端用户选择要包含的文件&#xff0c;而开发人员又没有对要包含的文件进行安全考虑&#xff0c;就导致攻击者可以通过修改文件的位置来让后台执行任意…...

在 MySQL 的 InnoDB 存储引擎中,脏页(Dirty Page)的刷盘(Flush)时机

1. 后台线程周期性刷盘 触发机制&#xff1a; InnoDB 的 Page Cleaner 线程 会周期性地将脏页刷入磁盘&#xff0c;防止内存中脏页堆积。 触发条件&#xff1a; 脏页比例阈值&#xff1a;当 Buffer Pool 中脏页占比超过 innodb_max_dirty_pages_pct&#xff08;默认 90%&#…...