前端面经--网络通信与后端协作篇--XMLHttpRequest、axios、fetch、AbortController
一、XMLHttpRequest
1、什么是 XMLHttpRequest?
XMLHttpRequest
(简称 XHR)是浏览器提供的一个异步通信接口,允许网页在不刷新页面的情况下,与服务器交换数据。
它是AJAX(Asynchronous JavaScript and XML)技术的核心,广泛用于早期前端开发中发起 HTTP 请求。
关键词:异步、局部更新、动态刷新
XHR 的引入标志着网页从“静态展示”变为“动态交互”的关键转折。
2、基本使用方式
const xhr = new XMLHttpRequest()xhr.open('GET', '/api/user', true)xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(xhr.responseText)}
}xhr.send()
3、重要属性说明
属性 | 含义 |
---|---|
readyState | 请求状态(0~4),4 表示完成 |
status | HTTP 状态码(如 200、404) |
responseText | 返回的字符串数据 |
responseXML | 返回的 XML 数据(已不常用) |
onreadystatechange | 状态变化时触发的回调函数 |
4、readyState 状态机说明
值 | 描述 |
---|---|
0 | 请求未初始化 |
1 | 请求已建立,尚未发送 |
2 | 请求已发送,收到响应头 |
3 | 正在接收响应体 |
4 | 请求完成,响应就绪 |
完整 POST 示例(含 JSON)
const xhr = new XMLHttpRequest()
xhr.open('POST', '/api/login', true)
xhr.setRequestHeader('Content-Type', 'application/json')xhr.onreadystatechange = () => {if (xhr.readyState === 4) {if (xhr.status === 200) {const data = JSON.parse(xhr.responseText)console.log('登录成功', data)} else {console.error('登录失败', xhr.status)}}
}xhr.send(JSON.stringify({ username: 'alice', password: '123456' }))
5、XHR 的优势和局限
✅ 优点:
-
所有浏览器都支持(包括 IE6)
-
可处理复杂场景:进度监听、分块接收等
-
自由控制请求方式与状态码处理
❌ 缺点:
问题 | 说明 |
---|---|
语法繁琐 | 需手动管理状态、编码结构混乱 |
回调地狱 | 没有 Promise,易出错 |
不支持 async/await | 写法不现代化,难维护 |
不直观 | 状态码判断、数据解析都要手写逻辑 |
6、常用高级功能
功能 | 示例 | 说明 |
---|---|---|
设置请求头 | xhr.setRequestHeader('key', 'value') | 如 Content-Type、Authorization 等 |
设置超时 | xhr.timeout = 5000 | 超时后触发 ontimeout 回调 |
请求取消 | xhr.abort() | 可中断请求 |
监听错误 | xhr.onerror = () => {} | 网络错误或跨域失败时触发 |
二、fetch
1、什么是 fetch
?
fetch
是 浏览器原生的 HTTP 请求接口,用于在前端发送网络请求,基于 Promise 实现,替代早期的XMLHttpRequest
(XHR)。
它支持现代的异步语法(如 async/await
),使得请求处理更加清晰、易读。
2、基本语法
fetch(url, options).then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error))
-
url
:请求地址 -
options
:请求配置对象(method、headers、body 等)
3 、常用配置选项详解
fetch('/api/data', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer token123'},body: JSON.stringify({ name: 'Alice' }),credentials: 'include', // 携带 cookiemode: 'cors' // 跨域请求
})
选项 | 说明 |
---|---|
method | 请求方式,如 GET 、POST 、PUT |
headers | 请求头配置 |
body | 请求体,仅 POST/PUT 有效 |
credentials | 是否携带 Cookie(如 include ) |
mode | 请求模式:cors 、same-origin 、no-cors |
4、响应处理(Response
对象)
fetch('/api/user').then(response => {if (!response.ok) {throw new Error('请求失败: ' + response.status)}return response.json()}).then(data => console.log(data))
-
response.ok
:状态码是否是 200-299 -
response.status
:状态码 -
response.json()
:解析 JSON 响应体 -
也可以使用
response.text()
、response.blob()
、response.formData()
5、fetch 常见注意事项
问题 | 描述 |
---|---|
❌ 不自动抛出 HTTP 错误 | fetch 只对网络错误抛出异常,4xx/5xx 状态不会报错,需要手动判断 |
❌ 默认不带 Cookie | 需要设置 credentials: 'include' |
❌ 不支持请求超时 | 必须配合 AbortController 手动实现 |
❌ 不支持拦截器 | 与 axios 相比,功能较原始,需要自己封装 |
6、fetch 与 XMLHttpRequest 对比
特性 | fetch | XMLHttpRequest |
---|---|---|
是否原生 | ✅ 是 | ✅ 是 |
Promise 支持 | ✅ 原生支持 | ❌ 需手动封装 |
请求写法 | 简洁优雅 | 语法繁琐 |
错误处理 | 仅网络失败抛出异常 | 有 onerror 、onload |
请求取消 | ✅ 支持(AbortController ) | ❌ 需 hack |
7、使用场景总结
场景 | 适用性 |
---|---|
简单数据请求 | ✅ 适合 |
精细控制请求头/体 | ✅ 灵活 |
前端自己封装统一请求模块 | ✅ 推荐 |
项目已有 axios 等库 | ❌ 不建议重复使用 fetch |
三、axios
1、什么是 Axios?
Axios 是一个基于 Promise 的浏览器和 Node.js 的 HTTP 客户端。
它封装了 XMLHttpRequest
(XHR)请求,在语法、功能、兼容性和错误处理方面都更友好,是前端项目中使用最广泛的请求库之一。
2、Axios 的核心优势
优势 | 描述 |
---|---|
简洁语法 | 默认封装请求/响应处理 |
自动转换 JSON | 请求数据和返回数据自动处理为 JS 对象 |
拦截器支持 | 请求和响应统一处理,如添加 token、错误处理 |
取消请求 | 内置取消机制(CancelToken) |
浏览器兼容性好 | 支持 IE 和移动端浏览器 |
SSR 友好 | 可在 Node.js 中使用(如在 Nuxt/Next 等服务端渲染框架中) |
3、基本使用示例
GET 请求:
import axios from 'axios'
axios.get('/api/user?id=123').then(res => console.log(res.data)).catch(err => console.error(err))
POST 请求:
axios.post('/api/login', {username: 'alice',password: '123456'
})
.then(res => console.log(res.data))
.catch(err => console.error(err))
4、常用配置项(axios 请求选项)
axios({url: '/api/user',method: 'post',headers: {'Content-Type': 'application/json','Authorization': 'Bearer xxx'},data: {name: 'Alice'},params: {page: 1,size: 10},timeout: 5000, // 设置超时时间(单位毫秒)withCredentials: true // 是否携带 Cookie
})
5 、拦截器机制(非常重要)
拦截器是 axios 的强大功能,允许在请求发送前、响应返回后统一做处理。
请求拦截器:
axios.interceptors.request.use(config => {// 在请求发送前做统一处理,如添加 tokenconfig.headers.Authorization = 'Bearer ' + localStorage.getItem('token')return config
})响应拦截器:
axios.interceptors.response.use(res => res.data, // 默认直接返回 dataerr => {if (err.response && err.response.status === 401) {// 处理未授权错误console.warn('未登录或登录过期')}return Promise.reject(err)}
)
6、取消请求(防抖、离开页面时中断请求)
const controller = new AbortController()axios.get('/api/user', { signal: controller.signal }).then(res => console.log(res)).catch(err => {if (axios.isCancel(err)) {console.log('请求取消')}})// 手动取消
controller.abort()
7、与 fetch 的对比
特性 | axios | fetch |
---|---|---|
是否原生 | ❌ 第三方库 | ✅ 浏览器原生 |
自动转换 JSON | ✅ 自动解析 | ❌ 手动 .json() |
错误处理 | ✅ 4xx/5xx 会自动抛出 | ❌ 只抛网络错误 |
拦截器 | ✅ 有请求/响应拦截器 | ❌ 需要手动封装 |
请求取消 | ✅ CancelToken / signal | ✅ 使用 AbortController |
默认超时 | ✅ 可配置 timeout | ❌ 需自己实现超时逻辑 |
8、常见问题处理
问题 | 原因/解决 |
---|---|
请求失败 401 | token 过期,响应拦截器中处理 |
跨域请求无效 | 设置 withCredentials: true 且服务端支持 |
下载文件失败 | 设置 responseType: 'blob' |
后端接口路径变化频繁 | 使用 baseURL 统一管理 |
Axios 是一个功能强大、封装完善、兼容性好的 HTTP 客户端,适合绝大多数前端项目使用,尤其适用于中大型应用的请求模块封装与统一管理。
四、AbortController
1、什么是 AbortController
?
AbortController
是浏览器原生提供的控制器对象,用来取消正在进行的异步操作(如 fetch 请求)。
它配合 AbortSignal
使用,通过手动调用 .abort()
来中止任务,是现代前端实现“中断请求”的推荐方式。
构成关系
const controller = new AbortController()
const signal = controller.signal
controller.abort():发出取消信号
signal:传给支持取消的 API(如 fetch),用于监听取消状态
2、常见用途场景
场景 | 描述 |
---|---|
请求超时 | 避免接口长时间无响应卡住页面 |
切换页面时中断请求 | 避免页面卸载后还处理响应导致报错 |
防抖节流 | 快速连续点击或输入时,只保留最后一个请求 |
组件卸载时取消请求 | React / Vue 组件卸载后避免内存泄漏 |
AbortController
是控制异步任务取消的原生工具,适用于 fetch / axios 请求的取消和超时控制,是现代前端必备的稳定性与性能优化手段。
剩还有些内容等博主想到就继续更新
相关文章:
前端面经--网络通信与后端协作篇--XMLHttpRequest、axios、fetch、AbortController
一、XMLHttpRequest 1、什么是 XMLHttpRequest? XMLHttpRequest(简称 XHR)是浏览器提供的一个异步通信接口,允许网页在不刷新页面的情况下,与服务器交换数据。 它是AJAX(Asynchronous JavaScript and XML&…...
缓存套餐-03.功能测试
一.功能测试 点击小程序,就会触发根据分类id查询套餐方法,根据分类id查询套餐。 第一次查询,redis中没有数据,就会发sql进行sql数据库查询。 redis当中就有了对应的缓存。 再次点击,发现sql根本没有执行,…...
Django进阶:用户认证、REST API与Celery异步任务全解析
前言 在掌握了Django基础开发后,如何构建更强大、更专业的Web应用?本文将带你深入Django的三大高级特性:allauth用户认证系统、DRF(Django REST framework)API开发,以及Celery异步任务处理。这些技术栈是构…...
【基础复习笔记】计算机视觉
目录 一、计算机视觉基础 1. 卷积神经网络原理 2. 目标检测系列 二、算法与模型实现 1. 在PyTorch/TensorFlow中实现自定义损失函数或网络层的步骤是什么? 2. 如何设计一个轻量级模型用于移动端的人脸识别? 3. 描述你使用过的一种注意力机制&…...
65.微服务保姆教程 (八) 微服务开发与治理实战
微服务开发与治理实战:搭建一个简单的微服务系统 在这个实战中,我们将使用以下技术栈来搭建一个简单的微服务系统: 注册中心和配置中心:使用 Nacos。服务开发框架:使用 Spring Boot。服务间通信:使用 Feign。API 网关:使用 Spring Cloud Gateway。依赖管理工具:使用 M…...
【愚公系列】《Manus极简入门》026-市场分析专家:“市场洞察家”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
day23-集合(泛型Set数据结构)
1.泛型 1.1泛型概述 泛型的介绍 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:<…...
印度股票市场API对接文档
一、概述 StockTV提供全球股票、外汇、期货及加密货币的实时行情数据接口,支持印度、美国、日本、东南亚等多国市场。本文档重点介绍印度股票市场的API对接流程,包含市场列表、指数、K线、IPO数据、实时行情等核心功能。 二、准备工作 1. 获取API Key …...
【前端基础】8、CSS的选择器
一、什么是选择器? 根据一定的规则选出符合条件的HTML元素,从而为他们添加各种特定的样式。 二、选择器分类 通用选择器元素选择器类选择器id选择器属性选择器后代选择器兄弟选择器选择器组伪类 三、通用选择器(*) 作用&…...
Redis支持哪些数据类型?各适用于什么场景?
Redis(C语言实现)支持以下9种核心数据类型及其适用场景: String(字符串) 场景:缓存、计数器、分布式锁示例:SET user:1001 "John" EX 60(缓存用户信息60秒)优势…...
两种方法求解最长公共子序列问题并输出所有解
最长公共子序列(Longest Common Subsequence, LCS)是动态规划领域的经典问题,广泛应用于生物信息学(如DNA序列比对)、文本差异比对(如Git版本控制)等领域。本文将通过自顶向下递归记忆化…...
Linux下的c/c++开发之操作Sqlite3数据库
libsqlite3-dev 介绍(Linux 下的 SQLite3 C/C 开发包) libsqlite3-dev 是一个开发包,在 Linux 环境下为使用 SQLite3 C API 进行开发的 C/C 程序员提供头文件(如 sqlite3.h)和静态库/动态库的链接信息(如 …...
设计模式-策略模式
概念 策略模式主要是定义一系列算法,把它们封装起来,并且使它们可以互相替换。这样客户端可以根据需要选择不同的策略,而不需要改变使用策略的上下文。 策略模式的核心思想: 解耦策略定义:把各种支付方式࿰…...
Lost connect to debugger on ‘iphone‘
跑项目的时候,遇到这样一个报错,无法在真机和模拟器上跑, 处理方法 在根目录下,创建.lldbinit 文件 touch .lldbinit查找该文件 ls -all 然后 打开该文件 open .lldbinit 添加如下文案 settings set plugin.process.gdb-remot…...
全球森林数据如何分析?基于R语言森林生态系统结构、功能与稳定性分析与可视化
森林生态系统的结构、功能与稳定性研究是生态学领域的核心议题,涉及物种多样性、空间分布、能量流动及抗干扰能力等关键生态过程。为系统解析这些复杂关系,本研究采用R语言作为核心分析工具,整合多元统计方法与可视化技术,构建了一…...
Modbus RTU 转 PROFINE 网关
一、功能及注意事项 (1)功能说明:此文档用来说明Modbus RTU 转 PROFINE网关和立迈胜一体化485通讯电机使用。 (2)注意事项:文档介绍的是高迈德 PN-01MB模块。 二、系统参数设置 1.参考电机的波特率和校验码进行正确设置,如图所示…...
Redis如何实现分布式锁
Redis如何实现分布式锁 背景复盘解答被问到的问题如果过期时间没有设置好, 业务没有处理完锁就被释放了, 怎么办呢? 背景 之前被面试问到了 复盘解答 核心就是利用 set param1 nx param2 命令. set not exist 如果不存在就自行set操作. 被问到的问题 如果过期时间没有设置…...
vue3的深入组件-组件 v-model
组件 v-model 基本用法 v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始,推荐的实现方式是使用 defineModel() 宏: <script setup> const model defineModel()function update() {model.value } </script><template>…...
【Dv3Admin】Git 子模块在 Dv3admin 插件项目统一管理实践
在 Dv3admin 框架中,plugins 目录下存放的都是基于 Git 的独立插件项目。为了实现多个插件的统一管理与更新,我们推荐使用 Git 的子模块(submodule)功能。通过子模块的方式,将多个 Git 仓库嵌套管理,可以简…...
什么是死信队列?死信队列是如何导致的?
死信交换机(Dead Letter Exchange,DLX) 定义:死信交换机是一种特殊的交换机,专门用于**接收从其他队列中因特定原因变成死信的消息**。它的本质还是交换机,遵循RabbitMQ中交换机的基本工作原理,…...
计算机网络:深入分析三层交换机硬件转发表生成过程
三层交换机的MAC地址转发表生成过程结合了二层交换和三层路由的特性,具体可分为以下步骤: 一、二层MAC地址表学习(基础转发层) 初始状态 交换机启动时,MAC地址表为空,处于学习阶段。 数据帧接收与源MAC学习 当主机A发送数据帧到主机B时,交换机会检查数据帧的源MAC地址。…...
java使用MinIO,虚拟机时间异常
使用docker进行环境部署和启动 docker pull minio/miniodocker run -d -p 9000:9000 -p 9001:9001 \-e "MINIO_ROOT_USERminio" \-e "MINIO_ROOT_PASSWORDminio123" \-v /opt/minio/data:/data \-v /opt/minio/config:/root/.minio \minio/minio server --…...
使用Jmeter进行核心API压力测试
最近公司有发布会,需要对全链路比较核心的API的进行压测,今天正好分享下压测软件Jmeter的使用。 一、什么是Jmeter? JMeter 是 Apache 旗下的基于 Java 的开源性能测试工具。最初被设计用于 Web 应用测试,现已扩展到可测试多种不同的应用程…...
嵌入式学习笔记 - LCD
一 显示器接口种类: 下图中间左边一个为不带MCU的RGB屏,中间右边一个为带MCU的MCU屏 带控制器的LCD屏幕跟STM32单片机的交互方式,可以为串口,也可以为SPI,或者8080,通过命令的方式对液晶控制器芯片进行操作…...
聊聊Spring AI Alibaba的SentenceSplitter
序 本文主要研究一下Spring AI Alibaba的SentenceSplitter SentenceSplitter spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/transformer/splitter/SentenceSplitter.java public class SentenceSplitter extends TextSplitter {private final EncodingRegis…...
Python 异常处理与文件 IO 操作:构建健壮的数据处理体系(3/10)
摘要:在 Python 开发中,异常处理和文件 IO 操作是构建稳定程序的基石。本文将深入探讨异常捕获机制、上下文管理器原理,并结合 JSON/CSV 数据持久化与实战项目,帮助你掌握应对复杂场景的核心技术。 本文深入探讨了 Python 编程中的…...
Python中,正则表达式,
目录 1.基本匹配2.量词3.边界匹配4.选择和逻辑5.示例代码 在Python中,正则表达式(Regular Expressions,简称regex)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的模式。Python通过 re模块提供正则表达式支…...
CSS:元素显示模式与背景
元素显示模式 元素显示模式是指元素在浏览器页面中显示的模式,比如<div></div>是独占一行的块级元素,<span></span>是行内元素 元素显示模式分为三大类: 块级元素行内元素行内块元素 块级元素 block 常见的块级…...
Java游戏服务器开发流水账(2)开发中Maven的管理
Maven 是一款流行的 Java 项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念来管理项目的构建、依赖和文档等。游戏服务器开发中也会使用. 项目构建 生命周期管理:Maven 定义了一套清晰的项目构建生…...
学习设计模式《八》——原型模式
一、基础概念 原型模式的本质是【克隆生成对象】; 原型模式的定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 。 原型模式的功能: 1、通过克隆来创建新的对象实例; 2、为克隆出来的新对象实例复制…...
【MySQL】存储引擎 - MEMORY详解
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
正则表达式实用指南:原理、场景、优化与引擎对比
正则表达式实用指南:原理、场景、优化与引擎对比 正则表达式(Regular Expression,简称 regex 或 regexp)是程序员处理文本数据时不可或缺的“瑞士军刀”。无论是表单校验、日志分析、数据清洗,还是敏感信息脱敏&#…...
Python3正则表达式:字符串魔法师的指南[特殊字符]♂️
Python3正则表达式 什么是正则表达式?在Python中使用正则表达式一、正则表达式基础语法:你的魔法咒语基本匹配符字符类:性格各异的字符们预定义字符类:常见角色的快捷方式重复限定符:贪婪的收集者贪婪vs非贪婪…...
k8s术语之CronJob
CronJob管理基于时间的Job,即: 在给定时间点只运行一次 周期性地在给定时间点运行 一个CronJob对象类似于crontab文件中的一行。它根据指定的预定计划周期地运行一个Job,格式可以参考Cron 前提条件 当前使用地Kubernetes集群,版本>1.8.对…...
常见的提示词攻击方法 和防御手段——提示词注入(Prompt Injection)攻击解析
提示词注入(Prompt Injection)攻击解析 提示词注入是一种针对大型语言模型(LLM)的新型攻击手段,攻击者通过精心设计的输入文本(提示词)操控AI模型的输出,使其执行非预期行为或泄露敏…...
软件逆向工程核心技术:脱壳原理与实战分析
目录 一、脱壳技术概述:从保护到还原的逆向之旅 1.1 脱壳技术的本质与核心价值 1.2 壳的分类与核心技术解析 1.3 学习路径:从压缩壳到加密壳的渐进式突破 二、脱壳三步法:系统化逆向工程框架 2.1 核心流程总览 2.2 实战案例࿱…...
C27-简单选择排序法
一 基本思想 每轮从待排序序列中选出最小或最大的元素,与待排序区间起始位置交换,逐步缩小待排序区间 二 算法实现 遍历数组:设数组长度为n,外层循环i从0到n-2(共n-1轮) 找最小值下标:内层循环j从i1到n-1,遍历待排序区间(i到n-1),记录找最小值下标min 交换元素:将arr[i]与a…...
【Redis】持久化与事务
文章目录 1. 持久化1.1 RDB(定期)1.1.1 触发方式1.1.2 触发流程 1.2. AOF(实时)1.2.1 设置AOF1.2.2 刷新策略1.2.3 重写机制 2. 事务2.1 redis事务概念2.2 事务操作 Mysql有几个特性: 原子性一致性隔离性,redis是串行的,自带隔离性持久性&…...
Web 自动化之 HTML JavaScript 详解
文章目录 一、HTML 常用标签二、javascript 脚本1、什么是 javascript(js)2、 js变量和函数3、js 弹窗处理4、js 流程控制语句和 switch 结构语句应用 一、HTML 常用标签 HTML:超文本标记语言 超文本:不仅只包含文字,还有超链接、视频…这些…...
【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...
Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效
Python在自动驾驶实时数据处理中的应用:让AI驾驶更智能、更高效 近年来,自动驾驶技术的飞速发展离不开人工智能和数据处理的支撑,而Python作为AI与数据分析的核心编程语言,在自动驾驶实时数据处理方面扮演着不可或缺的角色。从传感器数据解析,到路径规划与决策优化,再到…...
功能安全的关键——MCU锁步核技术全解析(含真实应用方案)
随着智能汽车的发展,整车对功能安全的要求越来越高。特别是像电动助力转向(EPS)、制动控制系统、气囊控制器这类对“出错零容忍”的系统,已经广泛采用一种重要的安全架构——锁步核(Lockstep Core)。 今天我…...
Java实现桶排序算法
1. 桶排序原理图解 桶排序是一种基于分桶思想的非比较排序算法,适用于数据分布较为均匀的场景。其核心思想是将数据分散到有限数量的“桶”中,每个桶再分别进行排序(通常使用插入排序或其他简单的排序算法)。以下是桶排序的步骤&a…...
剖析 FFmpeg:从基本功能到过滤器,实现音视频处理的灵活性
目录 1.解复用2 解码2.1 音频解码2.2 视频解码 3 修饰3.1 avio3.2 重采样 4 过滤器4.1 过滤器基本知识4.2 简单过滤器4.3 复杂滤镜图 1.解复用 解复用就是把容器中的媒体流分离出来,方便我们对媒体流处理。 step1:对媒体文件上下文初始化 AVFormatCont…...
maven如何搭建自己的私服(LINUX版)?
环境准备 安装 JDK :确保系统已安装 JDK 8 或更高版本。可以通过以下命令安装 JDK: 安装 OpenJDK :sudo apt update && sudo apt install openjdk-11-jdk 安装 Oracle JDK :需要添加第三方仓库,例如 WebUpd8 …...
机器视觉的手机FPC油墨丝印应用
在现代智能手机制造过程中,精密的组件装配和质量控制是确保产品性能和用户体验的关键。其中,柔性印刷电路板(FPC)的油墨丝印工艺尤为关键,它不仅影响到电路板的美观,更直接关系到电路的导电性能和可靠性。而…...
AI原生手机:三大技术阵营的终极对决与未来展望
引言:AI手机时代的真正到来 2024年,智能手机行业迎来了一个历史性转折点——AI原生手机从概念走向主流。根据IDC最新报告,中国AI手机出货量同比激增591%,渗透率从2023年的3%飙升至22%。这一数据背后,是手机厂商在硬件…...
CFCA受邀参加盛京银行手机银行7.0发布会
4月30日,盛京银行举办手机银行7.0发布会。 盛京银行手机银行7.0围绕“慧享生活,财富随行”主题,聚焦便捷体验、财富管理、惠民生活,构建12大类服务,升级142项功能,全新设置信用卡频道,推出“云…...
IT/OT 融合架构下的工业控制系统安全攻防实战研究
1. 引言 随着工业 4.0 和智能制造的浪潮席卷全球,信息技术 (IT) 与运营技术 (OT) 的融合已成为不可逆转的趋势。这种融合旨在通过实时数据交换和分析,打破传统的信息孤岛,显著提升生产效率、优化决策、降低运营成本并增强市场竞争力。IT 系统…...
AI优化高频PCB信号完整性:猎板PCB的技术突破与应用实践
随着5G通信、AI服务器及新能源汽车的快速发展,高频PCB的信号完整性已成为决定电子产品性能的关键。本文以猎板PCB的技术实践为例,解析如何通过AI算法与精密制造工艺的结合,实现高频信号传输的极致优化,为行业提供高可靠性的解决方…...