硬件工程师面试题 21-30
把常见的硬件面试题进行总结,方便及时巩固复习。其中包括网络上的资源、大佬们的大厂面试题,其中可能会题目类似,加强印象即可。
更多硬件面试题:
硬件工程师面试题 1-10
硬件工程师面试题 11-20
21、单片机最小系统需要什么?
单片机最小系统是指能够使单片机芯片正常运行并发挥其功能所必需的最少硬件电路集合。它主要由以下几个关键部分组成:
- 电源:为单片机提供稳定的直流电源供电,确保单片机能够正常工作。常见51系列通常需要5V直流电源,STM32系列需要3.3V。
电源电路可能包括直流电源稳压模块、滤波电容以及电源指示灯等元件,其中直流电源稳压模块用于将输入的交流电转换为稳定的直流电,滤波电容则用于滤除电源中的杂波干扰。- 时钟(晶振)电路:是单片机正常运行的关键部分。提供了单片机运行所需的时钟信号,用于单片机的计时、延时、同步等操作,是单片机内部各部件协调工作的基础。
通常由晶振和相关的电容、电阻等元件组成,能够产生稳定的频率信号,确保单片机按照预定的时间周期执行指令。典型的晶振频率有11.0592MHz和12MHz等。- 复位电路:在单片机上电初期或发生异常情况时,复位电路能够确保单片机处于一个可控的初始状态,避免系统启动时出现异常。
通常由复位按钮、电容和电阻等元件组成。当复位按钮被按下时,复位电路会产生一个高电平信号,使单片机内部各电路状态恢复到确定的初始值,并从这个状态开始工作。
22、FreeRTOS移植最重要的是什么
FreeRTOS移植过程中最重要的是确保移植后的系统能够在目标硬件上稳定运行,并满足应用需求。
一、文件与文件夹的添加与删除
- 添加必要文件:从FreeRTOS官方下载的源码包中,将必要的文件和文件夹添加到自己的工程中。通常包括FreeRTOS的内核文件、配置文件、端口文件等。
- 删除无关文件:删掉
portable
文件夹中与自己芯片无关的部分,以减小工程体积并提高编译效率。二、中断函数的处理
- 删除本地中断处理函数:在移植FreeRTOS之前,需要删除本地原有的中断处理函数。
- 添加FreeRTOS中断处理函数:将FreeRTOS中的三个主要中断处理函数(如
PendSV_Handler
、SVC_Handler
和SysTick_Handler
)进行声明,并确保能被正确调用。三、配置文件调整
- 修改
FreeRTOSConfig.h
:这是FreeRTOS的核心配置文件,需要根据目标硬件和应用需求进行详细的调整。包括但不限于设置是否使用抢占式内核、时间片调度、任务优先级、堆栈大小、时钟节拍频率等参数。- 配置中断优先级:在STM32等基于ARM Cortex-M系列的单片机上,需要配置NVIC的中断优先级分组,并确保FreeRTOS的中断优先级设置合理。
四、内核代码适配
- 任务管理:确保FreeRTOS的任务管理功能能够在目标硬件上正常工作,包括任务的创建、删除、挂起、恢复等。
- 内存管理:如果使用动态内存分配功能,需要确保FreeRTOS的内存管理模块与目标硬件的内存管理单元(如MMU)兼容。
- 时间管理:配置FreeRTOS的时钟节拍源和节拍频率,以确保系统能够按照预定的时间周期执行任务调度。
五、端口代码移植
- 硬件抽象层:根据目标硬件的特性,编写或修改FreeRTOS的端口代码,以实现对硬件的抽象和封装。
- 外设驱动:如果FreeRTOS需要使用到外设(如UART、SPI、I2C等),需要确保这些外设的驱动代码已经正确移植到目标硬件上。
六、其他注意事项
- 编译器兼容性:确保使用的编译器与FreeRTOS兼容,并正确配置编译环境。
- 调试与测试:在移植过程中,需要进行充分的调试和测试,以确保FreeRTOS能够在目标硬件上稳定运行并满足应用需求。可以使用调试器、日志输出等方式进行调试测试。
23、DC-DC与LDO区别
DC-DC转换器和LDO(低压差线性稳压器)是两种常见的电源管理技术.
工作原理:
- LDO:采用线性调节方式,通过调整可变阻抗元件(如MOSFET)的导通状态,将多余的输入电压转化为热量来降低电压。其内部通常使用P沟道MOSFET,通过负反馈控制输出电压的稳定性。
- DC-DC:采用开关调节方式,通过快速开关控制电感和电容的充放电过程,将输入电压转换为所需的输出电压。其工作原理包括开关元件的导通和截止状态切换,通过脉宽调制(PWM)调节输出电压。
效率:
- LDO:效率较低,尤其在输入输出电压差较大的情况下,效率更低,通常在40%
- DC-DC:效率较高,尤其在输入输出电压差较大的情况,效率可达80%以上
输出特性:
- LDO:输出纹波小,负载响应快,噪声低,适用于对电源质量要求较高的场合,但输出电流能力有限,通常不超过几安培。
- DC-DC:输出纹波较大,负载响应较慢,但带载能力强,适合需要大电流输出的应用。
输入输出电压范围:
- LDO:适用于输入电压稍高于输出电压的场合,输入输出电压差不能太大,通常要求输入电压比输出电压高出1~2V。
- DC-DC:输入电压范围较宽,可以实现升压、降压或升降压等多种拓扑结构。
成本与复杂性:
- LDO:外围元件少,电路简单,成本低。
- DC-DC:外围元件多,电路复杂,成本较高。
应用场景:
- LDO:适用于对电压稳定性要求高但功率需求不大的场合,如传感器、微控制器
- DC-DC:适用于需要高效率、大电流输出的场合,如手机、通信设备和医疗设备
24、PSRR是什么,单位是什么
应用LDO、DCDC、运放的时候,规格书中都会标准PSRR这个指标
PSR为电源抑制(Power Supply Rejection),即电源到输出增益的抑制,
PSRR为电源抑制比( Power Supply Rejection Ratio),即输入到输出的增益除以从电源到输出的增益。描述了电路抑制任何电源变化传递到其输出信号的能力
单位是dB
电源抑制比(PSRR)的基础知识_psrr电源抑制比-CSDN博客
25、iic时序?随机读取一个字符的过程?iic设备出问题的时候怎么排查?上拉电阻对iic速率有没有影响?
I²C时序
I²C通信协议的时序要求非常严格,主要包括以下几个关键信号和状态:
- 起始信号(Start Condition):当SCL(串行时钟线)为高电平时,SDA(串行数据线)由高电平变为低电平,表示一个起始信号的开始。这标志着一次通信的起始。
- 停止信号(Stop Condition):当SCL为高电平时,SDA由低电平变为高电平,表示一个停止信号的结束。这标志着一次通信的结束。
- 数据传输:在SCL为低电平时,SDA可以变化数据;而在SCL为高电平时,SDA必须保持稳定,以便接收方能够正确地读取数据。数据是逐位传输的,高位在前,低位在后。
- 应答信号(Acknowledge):在接收方成功接收到一个字节的数据后,它会在SCL的高电平期间将SDA拉低,产生一个应答信号(通常为0)。如果接收方没有应答(例如,由于缓冲区已满或地址不匹配等原因),则它会在SCL的高电平期间保持SDA为高电平(无应答信号,通常为1)
随机读取一个字符的过程
在I²C通信中,随机读取一个字符通常涉及以下步骤:
- 发送起始信号:主机产生并发送起始信号到从机,表示一次通信的开始。
- 发送设备地址和写控制命令:主机发送从机的设备地址,并设置读写控制位为低电平,表示将对从机进行写数据操作。同时,主机还需要发送要访问的从机内部寄存器的地址(即字地址)。注意,这些地址和命令的发送都是高位在前,低位在后。
- 接收应答信号:从机接收到设备地址和写控制命令后,会回传一个应答信号。如果主机接收到应答信号,则表示从机已准备好接收数据。
- 发送字地址:主机向从机发送要读取数据的字地址。如果是双字节地址,则需要先发送高8位地址,再发送低8位地址。每发送一个地址字节后,主机都需要等待从机的应答信号。
- 重新发送起始信号:在字地址写入完成后,主机需要再次发送一个起始信号,以切换到读数据模式。
- 发送读控制命令:主机发送读控制命令到从机,设置读写控制位为高电平,表示将对从机进行读数据操作。
- 接收数据:从机接收到读控制命令后,会开始输出数据。主机在接收到从机回传的应答信号后,开始接收从机传回的单字节数据。数据是逐位接收的,直到接收完一个完整的字节。
- 发送非应答信号(可选):如果主机只需要读取一个字节的数据,则在接收完数据后,它会向从机发送一个非应答信号(即将SDA保持为高电平),表示不再继续读取数据。
- 发送停止信号:最后,主机发送停止信号到从机,表示一次通信的结束
iic设备出问题的时候怎么排查
1. 基本检查
- 确认设备连接:首先检查I²C设备的连接是否正确,包括引脚焊接、线材是否断线或接触不良等问题。
- 检查电源:确保I²C设备及其相关电路正常供电,没有电源波动或不足的情况。
2. 波形抓取与分析
- 使用示波器:利用示波器抓取I²C总线上的SCL(时钟线)和SDA(数据线)波形,以便进行详细的时序分析。
- 检查波形异常:观察波形是否存在异常,如尖波、斜波、杂波等不符合I²C设备的波形。这些异常可能由于驱动能力不足、上拉电阻设置不当、总线负载过重等原因引起。
3. 硬件问题排查
- 检查上拉电阻:确认I²C总线上是否按从机要求加了合适阻值的上拉电阻(通常为2~10kΩ)。阻值的选择应根据从机芯片手册或模块手册的要求进行。
- 引脚配置:检查I²C设备的引脚配置是否正确,特别是SDA和SCL引脚是否配置为开漏输出模式。对于软件模拟I²C,还需要确保GPIO被正确配置。
- 检查从机地址:确认从机地址是否正确,以及是否存在与其他I²C设备的地址冲突。
4. 通信协议与速率匹配
- 通信速率匹配:确保I²C主机的通信速率与从机的通信速率相匹配。如果速率不匹配,可能会导致通信失败。
- 协议一致性:检查I²C通信协议的一致性,包括起始信号、停止信号、数据传输格式、应答信号等。
5. 软件问题排查
- 初始化代码:检查I²C设备的初始化代码是否正确,包括GPIO配置、I²C模块使能、中断配置等。
- 固件更新:如果可能,尝试更新I²C设备的固件或驱动程序,以修复存在的软件问题。
6. 特定问题排查
死锁问题:如果I²C设备出现死锁现象(即数据线被拉低,主机无法拉高),可以按照以下方法排查:
- 检查是否存在从机设备在返回数据时未发送完成,而主机时钟消失的情况。这可能导致从机等待时钟信号,产生钳住并拉低SDA的现象。
- 尝试在系统复位时提供足够的时钟信号,以解锁SDA。
中断问题:如果I²C通信过程中无法产生中断或中断处理异常,可以检查中断号是否正确、中断脚电平是否异常、IC供电电平是否等于中断电平等问题。
上拉电阻对iic速率有没有影响?
有影响。
上升时间:
- 上拉电阻的阻值直接影响I²C总线上信号的上升时间。电阻越大,上拉至高电平的速度就越慢,这会导致数据传输速率受限。
- 为了保证数据传输速率,需要根据I²C总线的最大频率来确定合适的上升时间,并据此选择阻值。一般来说,I²C总线标准建议的上升时间应小于300ns。
寄生电容:
- I²C总线上的寄生电容(包括引脚电容、PCB导线寄生电容等)与上拉电阻形成RC充电回路。这个回路会影响信号的上升沿速率,从而影响数据传输速率。
- 较大的寄生电容需要较小的上拉电阻来保持较快的上升沿速率,但过小的电阻又会增加功耗和可能的电流冲击。
功耗与电流限制:
- 上拉电阻上会持续消耗一定的功率(P=I²R),虽然这部分功耗通常很小,但在低功耗设计中仍需考虑。
- 同时,I²C总线规范定义了每个总线上的设备在拉低线路时能够承受的最大电流(灌电流)。上拉电阻的阻值应确保即使所有挂载的设备同时尝试将线路拉低,也不会超过任何单个设备的最大灌电流规格。
26、pwm输入捕获定时器怎么工作的
主要基于定时器的捕获单元和外部PWM信号的交互。
PWM输入捕获是指定时器能够捕获外部PWM信号的周期和占空比。在STM32等微控制器中,定时器的捕获单元通常具有多个捕获通道,这些通道可以配置为输入捕获模式,用于检测外部信号的边沿变化。
PWM输入捕获的工作过程:
信号接入:
- 外部PWM信号通过定时器的输入通道接入捕获单元。
边沿检测:
- 捕获单元内部的边沿检测器会检测外部PWM信号的上升沿或下降沿。
- 当检测到边沿变化时,定时器当前的计数值会被捕获并存入捕获比较寄存器中。
捕获周期和占空比:
- 在PWM输入模式下,定时器通常会使用两个捕获通道来同时捕获PWM信号的周期和占空比。
- 假设使用捕获通道1和捕获通道2,捕获通道2会在PWM信号的上升沿将主计数器清除并开始向上计数。随后,捕获通道1会在PWM信号的下一个下降沿捕获当前计数值,这个值即为PWM信号的高电平周期(或占空比的一部分)。
- 当捕获通道2再次检测到PWM信号的下一个上升沿时,此时计数器的值即为PWM信号的完整周期。同时,计数器会被清除以准备下一次测量。
中断处理:
- 在捕获到PWM信号的周期和占空比后,定时器可以产生中断或DMA请求,以便CPU能够及时处理捕获的数据。
27、绿色发光二极管的导通压降大概是多少伏?如果一个LED指示灯没有定义颜色,红、绿、黄、橙、蓝、白色你会选择哪一种,为什么?
2V 左右。按照使用习惯,电源指示灯用红色,信号指示灯用绿色,这两种颜色的LED灯技术最成熟,价格最便宜。
28、请简述TVS瞬态电压抑制二极管的工作原理。
当TVS(Transient Voltage Suppressor,瞬态电压抑制二极管)上的电压超过一定幅度时,器件迅速导通,从而将浪涌能量泄放掉,并将浪涌电压限制在一定的幅度。
工作原理基于二极管的雪崩击穿效应,能够在极短的时间内吸收大量的能量,从而保护电路不受损害。
正常工作状态:在正常工作电压下,TVS二极管表现为高阻抗状态,几乎不导电,因此不会影响电路的正常工作。
雪崩击穿:当电路中出现电压瞬态冲击,如静电放电(ESD)、电感负载切换、雷击等,导致电压超过TVS二极管的击穿电压时,TVS二极管会迅速从高阻抗状态转变为低阻抗状态,即雪崩击穿。
能量吸收:在雪崩击穿状态下,TVS二极管能够导电并将瞬态电压限制在一个安全水平,同时吸收和分流这些高能量的瞬态电流,防止电压冲击对后续电路造成损害。
恢复高阻抗:一旦瞬态冲击结束,TVS二极管会迅速恢复到高阻抗状态,电路可以继续正常工作。
极性保护:TVS二极管分为单向和双向两种类型。单向TVS二极管只在一个方向上导电,而双向TVS二极管则可以在两个方向上导电,分别对应正向和反向电压冲击。
响应时间:TVS二极管的响应时间非常快,通常在皮秒(ps)级别,远快于电路中其他保护元件的响应时间,因此能够有效地保护电路。
29、请列举您知道的二极管型号。
1N4148、1N5817、1N5819、1N5820、1N5822、1N4001、1N4007、SR160、SR360、BAT54A、BAT54C、BAT54S
30、请列举您知道的NPN三极管型号。
2N2222、2N3904、2N5550、2N5551、M8050、S9013、S9014、S9018
相关文章:
硬件工程师面试题 21-30
把常见的硬件面试题进行总结,方便及时巩固复习。其中包括网络上的资源、大佬们的大厂面试题,其中可能会题目类似,加强印象即可。 更多硬件面试题:硬件工程师面试题 1-10硬件工程师面试题 11-20 21、单片机最小系统需要什么&#x…...

开源架构的容器化部署优化版
上三篇文章推荐: 开源架构的微服务架构实践优化版(New) 开源架构中的数据库选择优化版(New) 开源架构学习指南:文档与资源的智慧锦囊(New) 我管理的社区推荐:【青云交社区…...

Qt使用CMake编译项目时报错:#undefined reference to `vtable for MainView‘
博主将.h文件和.cpp文件放到了不同的文件目录下面,如下图所示: 于是构建项目的时候就报错了#undefined reference to vtable for MainView,这个是由于src/view目录下的CMake无法自动moc头文件导致的,需要手动moc include/view目录…...

python学习笔记—12—
1. 布尔类型 (1) 定义 (2) 比较运算符 (3) 代码演示 1. 手动定义 bool_1 True bool_2 False print(f"bool_1的内容是:{bool_1}, 类型是:{type(bool_1)}") print(f"bool_2的内容是:{bool_2}, 类型是:{type(bool…...

==和===的区别,被坑的一天
在 JavaScript 中, 和 都用于比较两个值,但它们有一个重要的区别: 1. (宽松相等运算符) 进行比较时,会 自动类型转换(也叫做强制类型转换),即如果比较的两个值的类型不同,JavaScr…...
基于 GPUTasker 的 GPU 使用情况钉钉推送机器人实现
引言 https://github.com/cnstark/gputasker 随着 AI 模型的广泛应用,GPU 成为团队中最重要的资源之一。然而,如何实时监控 GPU 的使用情况并及时通知团队是一个值得关注的问题。为了更好地管理显卡资源,本文基于 GPUTasker,实现了…...
Python自学 - 函数初步(内置函数、模块函数、自定义函数)
1 Python自学 - 函数初步(内置函数、模块函数、自定义函数) 1.1 内置函数 几乎所有的编程都会提供一些内置函数,以便完成一些最基本的任务,Python提供了丰富的内置函数,熟悉内置函数可以给工作带来极大便利。 Python官方的内置函数介绍网…...

【生活】冬天如何选口罩(医用口罩,N95, KN95还是KP95?带不带呼吸阀门?带不带活性炭?)
💡总结一下就是: 日常防护的话,医用口罩就可以啦。要是想长时间佩戴N95(KN95)口罩的话也可以. 在高风险环境(像医院、疫情防控期间),一定要选不带呼吸阀门的N95口罩KN95)…...

HTML5新特性|01 音频视频
音频 1、Audio (音频) HTML5提供了播放音频文件的标准 2、control(控制器) control 属性供添加播放、暂停和音量控件 3、标签: <audio> 定义声音 <source> 规定多媒体资源,可以是多个<!DOCTYPE html> <html lang"en"> <head><…...

迅为RK3568开发板编译Android12源码包-设置屏幕配置
在源码编译之前首先要确定自己想要使用的屏幕并修改源码,在编译镜像,烧写镜像。如下图所示: 第一步:确定要使用的屏幕种类,屏幕种类选择如下所示: iTOP-3568 开发板支持以下种类屏幕: 迅为 LV…...
力扣hot100——图论
200. 岛屿数量 class Solution { public:int numIslands(vector<vector<char>>& grid) {int ans 0;vector<int> dx { 0, 1, 0, -1 };vector<int> dy { 1, 0, -1, 0 };int n grid.size(), m grid[0].size();vector<vector<int>> …...

Docker- Unable to find image “hello-world“locally
Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…...

spring-boot启动源码分析(二)之SpringApplicationRunListener
在上一篇《spring-boot启动源码分析(一)之SpringApplication实例构造》后,继续看了一个月的Spring boot启动源码,初步把流程看完了,接下来会不断输出总结,以巩固这段时间的学习。同时也希望能帮到同样感兴趣…...

ELK入门教程(超详细)
什么是ELK? ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(后来出现的filebeat属于beats家族中的一员,可以用来替代logstash的数据收集功能,比较轻量级),也被称为Elastic Stack。 Filebeat Filebeat是用于转…...

人工智能知识分享第六天-机器学习_逻辑回归(Logistic Regression)
简介 在机器学习中,分类问题是一种常见的任务,目标是根据输入特征将数据点分配到不同的类别中。为了实现分类,我们需要训练一个分类器,该分类器能够根据输入数据的特征进行预测。 逻辑回归(Logistic Regression&…...

基于Springboot + vue实现的校园周边美食探索及分享平台
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...

初学STM32 --- 外部SRAM
目录 SRAM简介 SRAM特性: XM8A51216 功能框图 8080并口读时序编辑 8080并口写时序 SRAM 读写操作步骤 FSMC介绍 FSMC时序介绍 FSMC控制器对内核地址映射编辑 FSMC HAL库相关驱动 SRAM驱动步骤 SRAM简介 静态随机存取存储器(Static Random-Access Memory&am…...

创龙3588——debian根文件系统制作
文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…...

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别
javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…...
kylin安装docker
1. 前言 本文详细介绍如何在kylin v10上安装docker。系统环境如下: dockder: 20.10.7 linux os: kylinv 10 (GFB) linux kernel: 4.19.90-52.23.v2207.gfb01.ky10.aarch642. 安装docker 2.1. 下载docker二进制包 wget https://mirror.nju.edu.cn…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...