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

WHAT - 前端阻塞场景梳理

目录

  • 前言
  • 场景梳理
    • 1. JavaScript 执行阻塞主线程
      • 场景
      • 优化思路
      • 具体代码示例
        • 1. 长时间运行的同步 JavaScript 代码
        • 2. 过多的主线程任务(如频繁的 `setTimeout`/`setInterval`)
        • 3. 未优化的第三方库或框架初始化逻辑
        • 总结
    • 2. 样式计算与布局(Layout)开销大
      • 场景
      • 优化思路
    • 3. 资源加载阻塞渲染
      • 场景
      • 优化思路
    • 4. 强制同步渲染
      • 场景
    • 5. 渲染流水线阻塞
    • 6. 渲染阻塞型 CSS
    • 总结

前言

前端主要的阻塞场景包括:JavaScript执行样式计算资源加载重排重绘主线程繁忙。对应的优化策略有异步加载JS、简化CSS、懒加载资源、减少重排重绘、使用性能分析工具定位瓶颈等。

场景梳理

在前端开发中,浏览器的渲染过程可能会因多种原因被阻塞,导致页面卡顿或性能下降。

以下是常见的阻塞场景及对应的优化思路:

1. JavaScript 执行阻塞主线程

场景

  • 长时间运行的同步 JavaScript 代码(如复杂的计算、频繁的 JS DOM 操作)。
  • 过多的主线程任务(如频繁的 setTimeout/setInterval)。
  • 未优化的第三方库或框架(如庞大的 React/Vue 组件初始化逻辑)。

优化思路

  • 异步化脚本:使用 asyncdefer 属性加载脚本,避免阻塞 HTML 解析。在 WHAT - script 加载(含 async、defer、preload 和 prefetch 区别) 有相关介绍。
  • 减少 DOM 操作:批量修改 DOM(如 DocumentFragmentrequestAnimationFrame)。 在 WHAT - CSS Animationtion 动画系列(三)- 动画卡顿分析 和 HOW - 优化回流频繁导致的性能开销 等文章里我们也详细介绍过。
  • 拆分任务:将长任务分解为微任务(Promise.resolve().then())或 Web Worker。
  • 代码分割:通过 Webpack 等工具按需加载代码(Lazy Loading)。

具体代码示例

1. 长时间运行的同步 JavaScript 代码

问题示例

// 模拟一个耗时的同步计算
function heavyCalculation() {let sum = 0;for (let i = 0; i < 1e8; i++) {sum += Math.sqrt(i);}console.log(sum); // 阻塞主线程约1秒+
}// 频繁的DOM操作
const list = document.getElementById('list');
for (let i = 0; i < 10000; i++) {const item = document.createElement('li');item.textContent = `Item ${i}`;list.appendChild(item); // 每次操作都触发重排
}

优化方案

  • 将计算转为异步:使用 Web WorkerPromise 分离主线程:

    // Web Worker 示例
    const worker = new Worker('worker.js');
    worker.postMessage({ data: 1e8 });
    worker.onmessage = (e) => console.log(e.data); // 主线程不受阻塞
    
  • 批量DOM操作:使用 DocumentFragmentrequestAnimationFrame

    const fragment = document.createDocumentFragment();
    for (let i = 0; i < 10000; i++) {fragment.appendChild(document.createTextNode(`Item ${i}`));
    }
    document.getElementById('list').appendChild(fragment);
    
2. 过多的主线程任务(如频繁的 setTimeout/setInterval

问题示例

// 每秒执行一次的定时器,导致界面卡顿
setInterval(() => {// 模拟耗时操作Array.from(document.querySelectorAll('*')).forEach(el => el.style.transform = 'translateX(1px)');
}, 100);

在这段代码里,问题 1: setInterval 每 100ms 执行一次,相当于每秒触发 ​10 次​定时任务。如果任务本身耗时(即使很短),主线程会被持续占用,导致其他操作(如渲染、用户交互)被延迟。影响: 浏览器主线程需要处理定时任务 → 渲染线程无法及时刷新界面 → 动画卡顿或掉帧。问题 2querySelectorAll('*') 会遍历整个 DOM 树,获取页面上 所有元素​(假设页面有 1000+ 个节点,这个操作就会很慢)。影响: 每次循环都进行全量查询 → O(n) 时间复杂度随节点数量指数级增长 → 主线程阻塞。

优化方案

  • 使用 requestAnimationFrame:将动画交给浏览器调度:

    let pos = 0;
    function animate() {requestAnimationFrame(animate);  // 主动交还主线程控制权pos += 1;document.getElementById('box').style.transform = `translateX(${pos}px)`; // 仅操作必要元素
    }
    animate();
    
  • 合并定时任务:减少调用频率或使用 debounce/throttle

    // 合并多次快速触发的事件(如滚动事件)
    function handleScroll() {requestAnimationFrame(() => {// 实际逻辑});
    }
    window.addEventListener('scroll', handleScroll);
    
3. 未优化的第三方库或框架初始化逻辑

问题示例

// 未分割的 React 组件,首次加载时渲染百万级虚拟列表
import { Component } from 'react';class SlowComponent extends Component {constructor(props) {super(props);this.state = { items: Array(100000).fill('Item') }; // 初始化大量数据}render() {return (<ul>{this.state.items.map((item, index) => (<li key={index}>{item}</li>))}</ul>);}
}

优化方案

  • 代码分割:按需加载组件(React.lazy + Suspense):

    const LazyComponent = React.lazy(() => import('./HeavyComponent'));function App() {return (<Suspense fallback={<div>Loading...</div>}><LazyComponent /></Suspense>);
    }
    
  • 虚拟列表:仅渲染可见区域的数据(如 react-windowvue-virtual-scroller):

    // React 虚拟列表示例
    import { FixedSizeList as List } from 'react-window';const Row = ({ index, style }) => <div style={style}>Item {index}</div>;function App() {return (<Listheight={400}itemCount={100000}itemSize={35}width={300}>{Row}</List>);
    }
    
总结
  • 同步阻塞异步化(Web Worker、requestAnimationFrame)。
  • 频繁任务合并或降频debouncethrottlerequestAnimationFrame)。
  • 大型库/组件代码分割(动态导入) + 按需渲染(虚拟列表)。

通过这些优化,可以显著减少主线程阻塞时间,提升页面流畅度。

2. 样式计算与布局(Layout)开销大

场景

  • 复杂的 CSS 选择器(如多层嵌套的 div > ul > li)。
  • 强制同步布局(如频繁调用 offsetTop/scrollTop)。
  • 触发大量重排(Reflow)的操作(如 width/height 变化、DOM结构调整)。

优化思路

  • 简化选择器:优先使用类选择器(.class)而非层级过深的元素选择器。
  • 避免强制同步布局:将多次读操作合并为一次(例如缓存布局信息)。 在 WHAT - CSS Animationtion 动画系列(三)- 动画卡顿分析 中我们有相关介绍。
  • 减少重排触发: 在 HOW - 优化回流频繁导致的性能开销 我们有相关介绍
    • 使用 transformopacity 替代 left/top/visibility
    • 批量修改样式(通过 classList.add 或 CSS Variables)。
  • 启用 CSS Containment:限制子元素的布局影响范围(contain: layout;)。具体可以阅读 WHAT - CSS Containment 隔离子元素的布局 (contain=layout)

3. 资源加载阻塞渲染

场景

  • 关键资源(如首屏图片、字体)加载延迟。
  • 未压缩的媒体文件(如高清图片、视频)。
  • 大体积第三方脚本(广告、分析工具)阻塞主线程。

优化思路

  • 懒加载非关键资源:对图片、视频使用 loading="lazy" 属性。
  • 预加载关键资源:通过 <link rel="preload"> 提前加载字体、首屏图片。 具体可以阅读 WHAT - script 加载(含 async、defer、preload 和 prefetch 区别)
  • 压缩资源:启用 Gzip/LZ4 压缩文本资源,使用 WebP 格式替代 JPEG/PNG。
  • 异步加载第三方脚本:动态插入 <script> 标签或配置 async/defer

4. 强制同步渲染

注意,这个不同于前面提到的强制同步布局。

场景

  • 在主线程执行期间强制触发重绘(Painting)或合成(Compositing)。
  • 频繁修改样式导致浏览器不断重排重绘。

优化思路

  • 利用硬件加速:通过 will-change 或 CSS 属性(如 transform: translateZ(0))启用 GPU 加速。
  • 减少重绘触发:合并多次样式更新(例如批量修改元素的 class)。
  • 避免动画阻塞主线程:使用 CSS 动画(@keyframes)而非 JavaScript 控制动画。

5. 渲染流水线阻塞

场景

  • 主线程忙于其他任务(如 JS 执行、事件处理),无法及时处理渲染指令。
  • 合成层(Composite Layers)过多导致合成阶段耗时。

优化思路

  • 分析性能瓶颈:使用 Chrome DevTools 的 Performance 面板定位主线程阻塞点。
  • 合理使用合成层:避免不必要的 position: fixedz-index 导致层爆炸。
  • 优先级调度:通过 requestAnimationFrame 将动画任务交给主线程空闲时处理。

6. 渲染阻塞型 CSS

场景

  • 在 HTML 解析阶段遇到未完成的 <style> 标签(内联或外链),导致后续内容无法渲染。
  • 使用 @import 导入关键 CSS,会阻塞主线程。

优化思路

  • 内联关键 CSS:将首屏必需的样式直接嵌入 HTML <head> 中。
  • 异步加载非关键 CSS:通过 JavaScript 动态插入 <link> 标签加载次要样式。
  • 避免 @import:改用 <link rel="stylesheet"> 并设置 media="print" 触发异步加载。

总结

浏览器渲染阻塞的核心原因是 主线程忙于执行 JS 或计算样式,导致无法及时完成布局、绘制和合成。优化时需结合性能分析工具(如 Chrome DevTools 的 Lighthouse、Performance 面板),针对性地减少主线程负担、优化资源加载策略,并利用 CSS 和 Web API 的硬件加速能力。

相关文章:

WHAT - 前端阻塞场景梳理

目录 前言场景梳理1. JavaScript 执行阻塞主线程场景优化思路具体代码示例1. 长时间运行的同步 JavaScript 代码2. 过多的主线程任务&#xff08;如频繁的 setTimeout/setInterval&#xff09;3. 未优化的第三方库或框架初始化逻辑总结 2. 样式计算与布局&#xff08;Layout&am…...

微前端框架 Qiankun 的应用及问题分析

一、Qiankun 的核心应用场景与优势 多技术栈共存与灵活集成 Qiankun 支持主应用与子应用使用不同技术栈&#xff08;如 Vue、React、Angular 等&#xff09;&#xff0c;通过 HTML Entry 方式接入子应用&#xff0c;无需深度改造子应用即可实现集成&#xff0c;降低了技术迁移成…...

bash: uwsgi: 未找到命令

针对你提出的“bash: uwsgi: command not found”问题&#xff0c;以下是一些可能的解决方案&#xff0c;请按照步骤逐一排查&#xff1a; ‌1、检查uwsgi命令是否正确‌&#xff1a; 确保你输入的命令是uwsgi&#xff0c;而不是uWSGI或其他变体。 ‌2、确认uwsgi是否已安装‌&…...

HAL库,配置adc基本流程

1. 初始化阶段---cubemx (1) GPIO初始化 函数&#xff1a;HAL_GPIO_Init() 作用&#xff1a;配置ADC引脚为模拟输入模式。 代码示例&#xff1a; // 使能GPIOA时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 配置PA1为模拟输入 GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStr…...

【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器

更新日期&#xff1a;2025年3月7日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中&#xff0c;文件夹锁定器能够为任何文件夹加…...

网络安全技术整体架构 一个中心三重防护

网络安全技术整体架构&#xff1a;一个中心三重防护 在信息技术飞速发展的今天&#xff0c;网络安全的重要性日益凸显。为了保护信息系统不受各种安全威胁的侵害&#xff0c;网络安全技术整体架构应运而生。本文将详细介绍“一个中心三重防护”的概念&#xff0c;并结合代码示…...

《AJAX:前端异步交互的魔法指南》

什么是AJAX AJAX&#xff08;Asynchronous JavaScript and XML&#xff0c;异步 JavaScript 和 XML&#xff09; 是一种用于创建异步网页应用的技术&#xff0c;允许网页在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并局部更新页面内容。尽管名称中包含 XML&…...

Elasticsearch 2025/3/7

高性能分布式搜索引擎。 数据库模糊搜索比较慢&#xff0c;但用搜索引擎快多了。 下面是一些搜索引擎排名 Lucene是一个Java语言的搜索引擎类库&#xff08;一个工具包&#xff09;&#xff0c;apache公司的顶级项目。 优势&#xff1a;易扩展、高性能&#xff08;基于倒排索引…...

LLM论文笔记 19: On Limitations of the Transformer Architecture

Arxiv日期&#xff1a;2024.2.26机构&#xff1a;Columbia University / Google 关键词 Transformer架构幻觉问题数学谜题 核心结论 1. Transformer 无法可靠地计算函数组合问题 2. Transformer 的计算能力受限于信息瓶颈 3. CoT 可以减少 Transformer 计算错误的概率&#x…...

那年周五放学

2025年3月7日&#xff0c;周五&#xff0c;天气晴&#xff0c;脑子一瞬间闪过02-05年中学期间某个周五下午&#xff0c;17:00即将放学的场景&#xff0c;那种激动&#xff0c;那种说不上的欣喜感&#xff0c;放学后&#xff0c;先走一段316国道&#xff0c;再走一段襄渝铁路&am…...

002-SpringCloud-OpenFeign(远程调用)

SpringCloud-OpenFeign 1.引入依赖2.编写一个远程调用接口3.测试 1.引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency><dependencyManageme…...

SAP 顾问的五年职业规划

SAP 顾问的职业发展受到技术进步、企业需求变化和全球经济环境的影响&#xff0c;因此制定长远规划充满挑战。面对 SAP 产品路线图的不确定性&#xff0c;如向 S/4HANA 和 Business Technology Platform (BTP) 的转变&#xff0c;顾问必须具备灵活性&#xff0c;以保持竞争力和…...

Pandas使用stack和pivot实现数据透视

Pandas的stack和pivot实现数据透视 经过统计得到多维度指标数据非常常见的统计场景&#xff0c;指定多个维度&#xff0c;计算聚合后的指标 案例&#xff1a;统计得到“电影评分数据集”&#xff0c;每个月份的每个分数被评分多少次&#xff1a;&#xff08;月份&#xff0c;分…...

图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image

图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image 文章目录 图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image主要创新点模型架构图生成器生成器源码 判别器判别器源码 损失函数需要源码讲解的私信我 S…...

c++ 操作符重载详解与示例

c 操作符重载详解与示例 操作符重载详解一、基本规则二、必须作为成员函数重载的运算符1. 赋值运算符 2. 下标运算符 []3. 函数调用运算符 ()4. 成员访问运算符 ->5. 转型运算符 三、通常作为非成员函数重载的运算符1. 算术运算符 2. 输入/输出运算符 << >> 四、…...

在Spring Boot项目中分层架构

常见的分层架构包括以下几层: 1. Domain 层(领域层) 作用:领域层是业务逻辑的核心,包含与业务相关的实体类、枚举、值对象等。它是对业务领域的抽象,通常与数据库表结构直接映射。 主要组件: 实体类(Entity):与数据库表对应的Java类,通常使用JPA或MyBatis等ORM框架…...

upload-labs详解(1-12)文件上传分析

目录 uploa-labs-main upload-labs-main第一关 前端防御 绕过前端防御 禁用js Burpsuite抓包改包 upload-labs-main第二关 上传测试 错误类型 upload-labs-env upload-labs-env第三关 上传测试 查看源码 解决方法 重命名&#xff0c;上传 upload-labs-env第四关…...

无人机应用探索:玻纤增强复合材料的疲劳性能研究

随着无人机技术的快速发展&#xff0c;轻量化已成为其结构设计的核心需求。玻纤增强复合材料凭借高强度、低密度和优异的耐环境性能&#xff0c;成为无人机机身、旋翼支架等关键部件的理想选择。然而&#xff0c;无人机在服役过程中需应对复杂多变的环境&#xff1a;高空飞行时…...

计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【渗透测试】基于时间的盲注(Time-Based Blind SQL Injection)

发生ERROR日志告警 查看系统日志如下&#xff1a; java.lang.IllegalArgumentException: Illegal character in query at index 203: https://api.weixin.qq.com/sns/jscode2session?access_token90_Vap5zo5UTJS4jbuvneMkyS1LHwHAgrofaX8bnIfW8EHXA71IRZwsqzJam9bo1m3zRcSrb…...

学习threejs,Animation、Core、CustomBlendingEquation、Renderer常量汇总

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Animation常量汇总1.1.1 循…...

2、数据库的基础学习(中):分组查询、连接查询 有小例子

二、分组函数 功能&#xff1a;用作统计使用&#xff0c;又称为聚合函数或者统计函数或组函数 1、分类&#xff1a; sum 求和、avg 平均值、max最大值、min 最小值、count 计算个数 2、参数支持哪些类型 ​ Sum\avg 一般处理数值型数据 ​ max、min 可以数值型也可以字符型…...

Ubuntu搭建最简单WEB服务器

安装apache2 sudo apt install apache2 检查状态 $ sudo systemctl status apache2 ● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>Active: active (running) since Thu 2025-03-06 09:51:10…...

如何学习编程?

如何学习编程&#xff1f; 笔记来源&#xff1a;How To Study Programming The Lazy Way 声明&#xff1a;该博客内容来自链接&#xff0c;仅作为学习参考 写在前面的话&#xff1a; 大多数人关注的是编程语言本身&#xff0c;而不是解决问题和逻辑思维。不要试图记住语言本身…...

OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将彩色图像转换为灰度图像。它是数字印刷、风格化的黑白照片渲染&#xff0c;以及许多单通道图像处理应用中的基本工具。 cv::decolor 是 OpenCV…...

K8s 1.27.1 实战系列(七)Deployment

一、Deployment介绍 Deployment负责创建和更新应用程序的实例,使Pod拥有多副本,自愈,扩缩容等能力。创建Deployment后,Kubernetes Master 将应用程序实例调度到集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节点上的…...

Python第十五课:机器学习入门 | 从猜想到预测

&#x1f3af; 本节目标 理解机器学习两大核心范式&#xff08;监督/无监督学习&#xff09;掌握特征工程的核心方法论实现经典算法&#xff1a;线性回归与K-Means聚类开发实战项目&#xff1a;房价预测模型理解模型评估与调优基础 一、机器学习核心概念&#xff08;学生与老师…...

python 程序一次启动有两个进程的问题(flask)

0. 背景 写了一个使用 flask 作为服务框架的程序&#xff0c;发现每次启动程序的时候&#xff0c;使用 ps 都能观察到两个 python 进程。 此外&#xff0c;这个程序占用了 GPU 资源&#xff0c;我发现有两个 python 进程&#xff0c;分别占用了完全相同的 GPU 显存 1. 原因 …...

使用jcodec库,访问网络视频提取封面图片上传至oss

注释部分为FFmpeg&#xff08;确实方便但依赖太大&#xff0c;不想用&#xff09; package com.zuodou.upload;import com.aliyun.oss.OSS; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.zuodou.oss.OssProperties;…...

MyBatis-Plus 与 Spring Boot 的最佳实践

在现代 Java 开发中,MyBatis-Plus 和 Spring Boot 的结合已经成为了一种非常流行的技术栈。MyBatis-Plus 是 MyBatis 的增强工具,提供了许多便捷的功能,而 Spring Boot 则简化了 Spring 应用的开发流程。本文将探讨如何将 MyBatis-Plus 与 Spring Boot 进行整合,并分享一些…...

python-51-使用最广泛的数据验证库Pydantic

文章目录 1 Pydantic2 models2.1 基本模型应用2.1.1 实例化2.1.2 访问属性2.1.3 修改属性2.2 嵌套模型【Optional】3 Fields3.1 Field()函数3.2 带注释的模式Annotated3.3 默认值3.3.1 default参数3.3.2 default_factory3.4 字段别名3.5 数字约束3.6 字符串约束3.7 严格模式4 A…...

Linux - 网络基础(应用层,传输层)

一、应用层 1&#xff09;发送接收流程 1. 发送文件 write 函数发送数据到 TCP 套接字时&#xff0c;内容不一定会立即通过网络发送出去。这是因为网络通信涉及多个层次的缓冲和处理&#xff0c;TCP 是一个面向连接的协议&#xff0c;它需要进行一定的排队、确认和重传等处理…...

ADB、Appium 和 大模型融合开展移动端自动化测试

将 ADB、Appium 和 大模型(如 GPT、LLM) 结合,可以显著提升移动端自动化测试的智能化水平和效率。以下是具体的实现思路和应用场景: 1. 核心组件的作用 ADB(Android Debug Bridge): 用于与 Android 设备通信,执行设备操作(如安装应用、获取日志、截图等)。Appium: 用…...

【Pandas】pandas Series unstack

Pandas2.2 Series Computations descriptive stats 方法描述Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法Series.argmax([axis, skipna])用于返回 Series…...

rv1126交叉编译opencv+ffmpeg+x264

文章目录 &#x1f315;交叉编译x264&#x1f319;创建build_x264.sh(放在下载的x264目录下)&#x1f319;编译过程&#x1f319;查看编译后的so文件是否是arm版的 &#x1f315;下载编译ffmpeg&#x1f319;下载ffmpeg&#x1f319;创建编译脚本&#x1f319;创建ffmpeg编译路…...

【C++】ImGui:VSCode下的无依赖轻量GUI开发

本教程将手把手带您用纯原生方式构建ImGui应用&#xff0c;无需CMake/第三方库。您将全程明了自己每个操作的意义&#xff0c;特别适合首次接触GUI开发的新手。 环境配置 安装VSCode 作用&#xff1a;轻量级代码编辑器&#xff0c;提供智能提示操作&#xff1a; 官网下载安装…...

BUU44 [BJDCTF2020]ZJCTF,不过如此1 [php://filter][正则表达式get输入数据][捕获组反向引用][php中单双引号]

题目&#xff1a; 我仿佛见到了一位故人。。。也难怪&#xff0c;题目就是ZJCTF 按要求提交/?textdata://,I have a dream&filenext.php后&#xff1a; ......不太行&#xff0c;好像得用filephp://filter/convert.base64-encode/resourcenext.php 耶&#xff1f;那 f…...

Jetpack Compose — 入门实践

一、项目中使用 Jetpack Compose 从此节开始,为方便起见,如无特殊说明,Compose 均指代 Jetpack Compose。 开发工具: Android Studio 1.1 创建支持 Compose 新应用 新版 Android Studio 默认创建新项目即为 Compose 项目。 注意:在 Language 下拉菜单中,Kotlin 是唯一可…...

通过着装人体剪影预测关键点,以获取人体的二维尺寸数据。复现过程包括获取或生成3D人体数据集、生成轮廓图像、训练模型等步骤

根据文献《1_Clothes Size Prediction from Dressed-Human Silhouettes》复现方法&#xff0c;主要通过着装人体剪影预测关键点&#xff0c;以获取人体的二维尺寸数据。复现过程包括获取或生成3D人体数据集、生成轮廓图像、训练模型等步骤。 以下是进行复现的大致步骤&#xf…...

力扣HOT100之哈希:49. 字母异位词分组

这道题自己先想了一遍&#xff0c;定义了一个比较字符串的函数&#xff0c;用二重循环和一个数组来实现字符串的比较&#xff0c;若两个字符串是异位词&#xff0c;那么就返回true&#xff0c;否则返回false&#xff0c;在主函数中&#xff0c;同样用一个二重循环来遍历向量中的…...

基于单片机的智慧音乐播放系统研究

标题:基于单片机的智慧音乐播放系统研究 内容:1.摘要 随着科技的飞速发展&#xff0c;人们对音乐播放系统的智能化和个性化需求日益增长。本研究的目的是设计并实现一个基于单片机的智慧音乐播放系统。采用单片机作为核心控制单元&#xff0c;结合音频解码模块、存储模块和人机…...

pytest框架 核心知识的系统复习

1. pytest 介绍 是什么&#xff1a;Python 最流行的单元测试框架之一&#xff0c;支持复杂的功能测试和插件扩展。 优点&#xff1a; 语法简洁&#xff08;用 assert 替代 self.assertEqual&#xff09;。 自动发现测试用例。 丰富的插件生态&#xff08;如失败重试、并发执…...

nginx 代理 redis

kubernetes 发布的redis服务端口为 31250 通过命令查询 [miniecs-88500735 /]$ minikube service redis --url http://192.168.49.2:31250[rootecs-88500735 /]# vi /etc/nginx/nginx.conf配置nginx.conf stream {upstream redis {server 192.168.49.2:31250;}server {liste…...

什么是:分布式贝叶斯推断

什么是:分布式贝叶斯推断 分布式贝叶斯推断(Distributed Bayesian Inference)是一种在分布式计算环境下进行贝叶斯统计推断的方法,旨在利用多节点或多设备的并行计算能力,高效处理大规模数据或复杂模型。其核心思想是将数据、模型或计算过程分解到多个节点上,通过协作完…...

C# 命名空间(Namespace)详解

在C#中&#xff0c;命名空间&#xff08;Namespace&#xff09;是一种封装和组织代码的方式&#xff0c;它允许将相关的类、接口、结构体和枚举等类型组织在一起&#xff0c;以避免命名冲突&#xff0c;并提供了一种逻辑上的分组方式。命名空间的使用有助于提高代码的可读性、可…...

ASP.NET Core JWT认证与授权

1.JWT结构 JSON Web Token&#xff08;JWT&#xff09;是一种用于在网络应用之间安全传输声明的开放标准&#xff08;RFC 7519&#xff09;。它通常由三部分组成&#xff0c;以紧凑的字符串形式表示&#xff0c;在身份验证、信息交换等场景中广泛应用。 2.JWT权限认证 2.1添…...

Docker参数,以及仓库搭建

一。Docker的构建参数 注释&#xff1a; 1.对于CMD&#xff0c;如果不想显示&#xff0c;而是使用交互界面&#xff1a;docker run -ti --rm --name test2 busybox:v5 sh 2.对于CMD&#xff0c;一个交互界面只可以使用一个&#xff0c;如果想多次使用CMD&#xff0c;则用ENTR…...

hooks useModule自定义hooks (二次封装AgGridReact ag-table)自定义表头,自定义表头搜索

场景业务&#xff1a; 多次运用AgGridReact的table 列表 思路&#xff1a; 运用自定义hooks进行二次封装&#xff1a; 通用配置例如&#xff1a;传参的参数&#xff0c;传参的url&#xff0c;需要缓存的key这些键值类 定制化配置例如&#xff1a;需要对table 的一些定制化传…...

机试准备第11天

第一题是浮点数加法&#xff0c;目前写过最长的代码。 #include <stdio.h> #include <string> #include <iostream> #include <vector> using namespace std; int main() {string str1;string str2;while (getline(cin, str1) && getline(cin…...

正则表达式详解

这里写目录标题 一、基本概念1.基本语法2.修饰符3.方括号4.元字符5.量词 二、结构1.匹配模式2.字符组3.量词4.贪婪匹配和惰性匹配5.多选分支6.匹配模式关键词 三、位置1.位置锚点2.分组与引用1.分组与编号2.不保存子组3.括号嵌套4.命名捕获组5.引用捕获组 3.回溯匹配 四、对象方…...