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

Vue 2 和 Vue 3 中的钩子函数

Vue 钩子函数也被叫做生命周期钩子函数,它是 Vue 实例在其生命周期的不同阶段自动调用的函数。可以利用这些钩子函数在特定阶段执行自定义代码。

Vue 2 生命周期钩子函数

在 Vue 2 里,生命周期钩子函数可以在组件选项对象中定义。下面是一个简单的 Vue 2 组件示例,展示了各个生命周期钩子函数:

new Vue({el: '#app',data() {return {message: 'Hello, Vue!'};},beforeCreate() {console.log('beforeCreate: 实例初始化之后,数据观测和 event/watcher 事件配置之前被调用');},created() {console.log('created: 实例已经创建完成之后被调用。在这一步,实例已经完成了数据观测、property 和 method 的计算、watch/event 事件回调的配置等');},beforeMount() {console.log('beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用');},mounted() {console.log('mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子');},beforeUpdate() {console.log('beforeUpdate: 数据更新时调用,发生在虚拟 DOM 打补丁之前');},updated() {console.log('updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子');},beforeDestroy() {console.log('beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用');},destroyed() {console.log('destroyed: 实例已经销毁之后调用。在这一步,所有的事件监听器和子实例都已经被销毁');},activated() {console.log('activated: 被 keep-alive 缓存的组件激活时调用');},deactivated() {console.log('deactivated: 被 keep-alive 缓存的组件停用时调用');},errorCaptured() {console.log('errorCaptured: 当捕获一个来自子孙组件的错误时被调用');}
});

Vue 3 生命周期钩子函数

Vue 3 采用了组合式 API,生命周期钩子函数需要通过 onXXX 函数来使用。以下是 Vue 3 中对应的生命周期钩子函数示例:

<template><div>{{ message }}</div>
</template><script setup>
import { ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, onActivated, onDeactivated, onErrorCaptured } from 'vue';const message = ref('Hello, Vue 3!');onBeforeMount(() => {console.log('onBeforeMount: 在挂载开始之前被调用');
});onMounted(() => {console.log('onMounted: 组件挂载完成后调用');
});onBeforeUpdate(() => {console.log('onBeforeUpdate: 数据更新时调用,发生在虚拟 DOM 打补丁之前');
});onUpdated(() => {console.log('onUpdated: 数据更新导致的虚拟 DOM 重新渲染和打补丁之后调用');
});onBeforeUnmount(() => {console.log('onBeforeUnmount: 组件实例销毁之前调用');
});onUnmounted(() => {console.log('onUnmounted: 组件实例销毁之后调用');
});onActivated(() => {console.log('onActivated: 被 keep-alive 缓存的组件激活时调用');
});onDeactivated(() => {console.log('onDeactivated: 被 keep-alive 缓存的组件停用时调用');
});onErrorCaptured(() => {console.log('onErrorCaptured: 当捕获一个来自子孙组件的错误时被调用');
});
</script>

生命周期钩子函数总结

  • 创建阶段beforeCreatecreated(Vue 2)、onBeforeMount(Vue 3)用于在实例初始化和挂载前执行操作,像数据初始化这类操作就适合在这一阶段进行。
  • 挂载阶段beforeMountmounted(Vue 2)、onMounted(Vue 3)用于在组件挂载到 DOM 前后执行操作,比如操作 DOM 元素、发起网络请求等。
  • 更新阶段beforeUpdateupdated(Vue 2)、onBeforeUpdateonUpdated(Vue 3)用于在数据更新前后执行操作,可用来处理数据更新时的副作用。
  • 销毁阶段beforeDestroydestroyed(Vue 2)、onBeforeUnmountonUnmounted(Vue 3)用于在组件销毁前后执行操作,像清理定时器、取消订阅等操作就适合在这一阶段进行。
  • 特殊钩子activateddeactivated(Vue 2 和 Vue 3)用于处理被 keep-alive 缓存的组件的激活和停用状态;errorCaptured(Vue 2 和 Vue 3)用于捕获子孙组件抛出的错误。

Vue 2 和 Vue 3 中的钩子函数在不同的生命周期阶段发挥着重要作用,下面为你详细介绍它们的具体应用场景。

Vue 2 钩子函数应用场景

1. beforeCreatecreated

这两个钩子在实例初始化和数据观测完成后调用,常用于数据的初始化和异步请求。

new Vue({data() {return {userData: null};},beforeCreate() {// 可以做一些全局配置的初始化console.log('实例初始化,开始准备数据');},created() {// 发起异步请求获取用户数据fetch('https://api.example.com/user').then(response => response.json()).then(data => {this.userData = data;});}
});
2. beforeMountmounted

beforeMount 在挂载开始之前调用,mounted 在挂载完成后调用。mounted 常用于操作 DOM 元素和发起网络请求。

new Vue({template: '<div id="app">{{ message }}</div>',data() {return {message: 'Hello, Vue!'};},beforeMount() {console.log('DOM 挂载前');},mounted() {// 操作 DOM 元素const appElement = document.getElementById('app');appElement.style.color = 'red';// 发起网络请求fetch('https://api.example.com/data').then(response => response.json()).then(data => {console.log(data);});}
});
3. beforeUpdateupdated

当数据更新时,beforeUpdate 在虚拟 DOM 打补丁之前调用,updated 在重新渲染和打补丁之后调用。常用于处理数据更新后的副作用。

new Vue({data() {return {count: 0};},beforeUpdate() {console.log('数据更新前,count:', this.count);},updated() {console.log('数据更新后,count:', this.count);},methods: {increment() {this.count++;}}
});
4. beforeDestroydestroyed

beforeDestroy 在实例销毁之前调用,destroyed 在实例销毁之后调用。常用于清理定时器、取消订阅等操作。

new Vue({data() {return {timer: null};},created() {this.timer = setInterval(() => {console.log('定时器在运行');}, 1000);},beforeDestroy() {// 清理定时器clearInterval(this.timer);console.log('定时器已清理');},destroyed() {console.log('实例已销毁');}
});
5. activateddeactivated

这两个钩子用于处理被 keep-alive 缓存的组件的激活和停用状态。

<template><div><p>这是一个被 keep-alive 缓存的组件</p></div>
</template><script>
export default {activated() {console.log('组件被激活');},deactivated() {console.log('组件被停用');}
};
</script>
6. errorCaptured

用于捕获子孙组件抛出的错误。

new Vue({errorCaptured(err, vm, info) {console.error('捕获到错误:', err);console.log('错误信息:', info);return false; // 阻止错误继续向上传播}
});

Vue 3 钩子函数应用场景

1. onBeforeMountonMounted
<template><div>{{ message }}</div>
</template><script setup>
import { ref, onBeforeMount, onMounted } from 'vue';const message = ref('Hello, Vue 3!');onBeforeMount(() => {console.log('挂载开始前');
});onMounted(() => {// 操作 DOM 元素const appElement = document.querySelector('div');appElement.style.color = 'blue';// 发起网络请求fetch('https://api.example.com/data').then(response => response.json()).then(data => {console.log(data);});
});
</script>
2. onBeforeUpdateonUpdated
<template><div><p>{{ count }}</p><button @click="increment">增加</button></div>
</template><script setup>
import { ref, onBeforeUpdate, onUpdated } from 'vue';const count = ref(0);const increment = () => {count.value++;
};onBeforeUpdate(() => {console.log('数据更新前,count:', count.value);
});onUpdated(() => {console.log('数据更新后,count:', count.value);
});
</script>
3. onBeforeUnmountonUnmounted
<template><div></div>
</template><script setup>
import { onBeforeUnmount, onUnmounted } from 'vue';let timer = null;const startTimer = () => {timer = setInterval(() => {console.log('定时器在运行');}, 1000);
};startTimer();onBeforeUnmount(() => {// 清理定时器clearInterval(timer);console.log('定时器已清理');
});onUnmounted(() => {console.log('组件已销毁');
});
</script>
4. onActivatedonDeactivated
<template><div>这是一个被 keep-alive 缓存的组件</div>
</template><script setup>
import { onActivated, onDeactivated } from 'vue';onActivated(() => {console.log('组件被激活');
});onDeactivated(() => {console.log('组件被停用');
});
</script>
5. onErrorCaptured
<script setup>
import { onErrorCaptured } from 'vue';onErrorCaptured((err, instance, info) => {console.error('捕获到错误:', err);console.log('错误信息:', info);return false; // 阻止错误继续向上传播
});
</script>

这些钩子函数可以帮助你在组件的不同生命周期阶段执行特定的操作,从而更好地管理组件的状态和行为。

相关文章:

Vue 2 和 Vue 3 中的钩子函数

Vue 钩子函数也被叫做生命周期钩子函数&#xff0c;它是 Vue 实例在其生命周期的不同阶段自动调用的函数。可以利用这些钩子函数在特定阶段执行自定义代码。 Vue 2 生命周期钩子函数 在 Vue 2 里&#xff0c;生命周期钩子函数可以在组件选项对象中定义。下面是一个简单的 Vue…...

零基础如何学会Appium自动化测试?

前言 appium是一款移动自动化测试工具&#xff0c;经常被用于实现UI自动化测试&#xff0c;其可支持安卓和IOS两大平台&#xff0c;还支持多种编程&#xff0c;因而得到了广泛的应用。此处便是立足于安卓平台&#xff0c;借助appium工具&#xff0c;使用python语言实现简单的自…...

用Python实现TCP代理

依旧是Python黑帽子这本书 先附上代码&#xff0c;我在原书代码上加了注释&#xff0c;更好理解 import sys import socket import threading#生成可打印字符映射 HEX_FILTER.join([(len(repr(chr(i)))3) and chr(i) or . for i in range(256)])#接收bytes或string类型的输入…...

SQL复杂查询与性能优化:医药行业ERP系统实战指南

SQL复杂查询与性能优化&#xff1a;医药行业ERP系统实战指南 一、医药行业数据库特性分析 在医药ERP系统中&#xff0c;数据库通常包含以下核心表结构&#xff1a; -- 药品主数据 CREATE TABLE drug_master (drug_id INT PRIMARY KEY,drug_name VARCHAR(255),specification …...

问题大集10-git使用commit提交中文显示乱码

&#xff08;1&#xff09;问题 &#xff08;2&#xff09;解决步骤 1&#xff09; 设置全局编码为 UTF-8 git config --global core.quotepath false git config --global i18n.commitEncoding utf-8 git config --global i18n.logOutputEncoding utf-8 2&#xff09; 显示或设…...

vue前端项目技术架构(第二版)

vue技术架构介绍 如下图所示&#xff0c;展示了项目系统的软件层次架构。该系统采用基于SOA&#xff08;面向服务架构&#xff09;思想的分层架构&#xff0c;分为四个主要层次&#xff1a;视图层、编译层、代码层和数据层。 视图层 浏览器&#xff1a;核心职责是解析并展示…...

Java 开发中的 AI 黑科技:如何用 AI 工具自动生成 Spring Boot 项目脚手架?

在 Java 开发领域&#xff0c;搭建 Spring Boot 项目脚手架是一项耗时且繁琐的工作。传统方式下&#xff0c;开发者需要手动配置各种依赖、编写基础代码&#xff0c;过程中稍有疏忽就可能导致配置错误&#xff0c;影响开发进度。如今&#xff0c;随着 AI 技术的迅猛发展&#x…...

计算机网络知识点汇总与复习——(一)计算机网络体系结构

Preface 计算机网络是考研408基础综合中的一门课程&#xff0c;它的重要性不言而喻。然而&#xff0c;计算机网络的知识体系庞大且复杂&#xff0c;各类概念、协议和技术相互关联&#xff0c;让人在学习时容易迷失方向。在进行复习时&#xff0c;面对庞杂的的知识点&#xff0c…...

Copilot完全指南:AI编程助手的革命性实践

一、智能编程新时代&#xff1a;从代码补全到AI结对编程 1.1 Copilot的进化历程 2021年GitHub Copilot的诞生标志着编程辅助工具进入新纪元。与传统IDE补全工具相比&#xff0c;Copilot展现出三大革命性特征&#xff1a; 语义理解&#xff1a;基于GPT模型理解代码上下文跨文…...

Redis 梳理汇总目录

Redis 哨兵集群&#xff08;Sentinel&#xff09;与 Cluster 集群对比-CSDN博客 如何快速将大规模数据保存到Redis集群-CSDN博客 Redis的一些高级指令-CSDN博客 Redis 篇-CSDN博客...

5、无线通信基站的FPGA实现架构

基站&#xff08;Base Station&#xff0c;BS&#xff09;&#xff0c;也称为公用移动通信基站&#xff0c;是无线电台站的一种形式&#xff0c;具体则指在一定的无线电覆盖区中&#xff0c;通过移动通信交换中心&#xff0c;与移动电话终端之间的信息传递的无线电收发信电台。…...

MySQL - 索引原理与优化:深入解析B+Tree与高效查询策略

文章目录 引言一、BTree索引核心原理1.1 索引数据结构演化1.2 BTree的存储结构通过主键查询&#xff08;主键索引&#xff09;商品数据的过程通过非主键&#xff08;辅助索引&#xff09;查询商品数据的过程 MySQL InnoDB 的索引原理 二、执行计划深度解析三、索引失效的六大陷…...

2025年数智化电商产业带发展研究报告260+份汇总解读|附PDF下载

原文链接&#xff1a;https://tecdat.cn/?p41286 在数字技术与实体经济深度融合的当下&#xff0c;数智化产业带正成为经济发展的关键引擎。 从云南鲜花产业带的直播热销到深圳3C数码的智能转型&#xff0c;数智化正重塑产业格局。2023年数字经济规模突破53.9万亿元&#xff…...

html实现手势密码

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>手势密码</title><style>body {font-fam…...

机器学习(八):K-Means聚类原理与实战

声明&#xff1a;未经允许禁止转载与抄袭。 前言 k k k均值&#xff08; k k k-means&#xff09;聚类算法是一种经典的无监督聚类算法&#xff0c;本文将深入解析其理论原理&#xff0c;并在真是数据集上进行算法实践&#xff0c;话不多说&#xff0c;请看下文。 算法原理 …...

从 Word 到 HTML:使用 Aspose.Words 轻松实现 Word 文档的高保真转换

从 Word 到 HTML&#xff1a;使用 Aspose.Words 轻松实现 Word 文档的高保真转换 前言一、环境准备二、核心代码实现1. 将 Word 转换为 HTML 文件流2. 优化超链接样式 三、测试效果四、总结 前言 在日常开发中&#xff0c;我们经常需要将 Word 文档转换为 HTML&#xff0c;用于…...

SQLMesh调度系统深度解析:内置调度与Airflow集成实践

本文系统解析SQLMesh的两种核心调度方案&#xff1a;内置调度器与Apache Airflow集成。通过对比两者的适用场景、架构设计和操作流程&#xff0c;为企业构建可靠的数据分析流水线提供技术参考。重点内容包括&#xff1a; 内置调度器的轻量级部署与性能优化策略Airflow集成的端到…...

【深度学习新浪潮】Grok过去两周的进展一览(2025.04.01)

1. Grok过去两周的进展一览 根据公开信息,Grok在过去两周的主要进展如下: Grok 3正式上线并开放 xAI于2025年3月30日宣布Grok 3正式向所有Premium+订阅用户开放,并同步将X平台的Premium+订阅费用上涨至月费近50美元、年费350美元。这是继Grok 2之后的重大升级,其推理能力和…...

Vue表单数据回显失败技术解析与修复指南!!!

Vue表单数据回显失败技术解析与修复指南 &#x1f680; 在Vue.js应用开发中&#xff0c;「父子组件通信」「动态弹窗」是经典功能组合。但当遇到关键场景表单数据无法回显时&#xff0c;你是否也在深夜加班改bug&#xff1f;本文通过完整案例分析&#xff0c;揭秘该问题背后深层…...

【Office办公】【Excel】VLOOKUP函数-高速查找指定匹配数据,可合并2个表格

VLOOKUP 是 Excel 中常用的查找函数&#xff0c;用于在表格或区域中按列查找特定值并返回对应行的其他列数据。以下是详细使用方法及注意事项&#xff1a; 函数语法 VLOOKUP(查找值, 表格范围, 列索引号, [匹配方式])查找值&#xff1a;要查找的值&#xff08;如单元格引用或…...

Java基础-21-基本语法-封装

封装&#xff08;Encapsulation&#xff09; 1. 什么是封装&#xff1f; 封装&#xff08;Encapsulation&#xff09;是面向对象编程&#xff08;OOP&#xff09;中的一个重要特性。它指的是将对象的属性和行为封装在一个类中&#xff0c;并提供访问控制机制&#xff0c;防止…...

SpringCloud概述

Spring Cloud Alibaba 1 系统架构演进 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的&#xff0c;也就是将整个系统作为一个单一的…...

Kafka中的消息是如何存储的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka中的消息是如何存储的&#xff1f;】面试题。希望对大家有帮助&#xff1b; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Kafka 中&#xff0c;消息是通过 日志&#xff08;Log&#xff09; 的方式进行存储的。…...

主流Web3公链的核心区别对比

以下是当前主流Web3公链的核心区别对比表&#xff0c;涵盖技术架构、性能、生态等关键维度&#xff1a; 特性以太坊 (Ethereum)SolanaBNB ChainPolygonAvalanche共识机制PoS&#xff08;信标链分片&#xff09;PoH&#xff08;历史证明&#xff09; PoSPoSA&#xff08;权益证…...

美甲预约管理系统基于Spring Boot SSM

目录 摘要 1. 引言‌ 1.1 研究背景与意义 1.2 国内外研究现状 ‌2. 系统需求分析‌ 2.1 功能需求 2.2 非功能需求 ‌3. 系统设计与实现‌ 3.1 系统架构设计 3.2 关键技术实现 3.3 系统模块实现 ‌3.3.1店铺管理‌ ‌3.3.2商品管理‌ ‌3.3.3用户管理‌ ‌3.3.4订…...

Doris Streamloader安装教程

官方连接&#xff1a;Doris Streamloader - Apache Doris 简单概述&#xff1a;Doris Streamloader 是一款用于将数据导入 Doris 数据库的专用客户端工具。 step1&#xff1a;安装go环境 [rootlocalhost ~]# rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-…...

用Python做数据分析之数据统计

接下来说说数据统计部分&#xff0c;这里主要介绍数据采样&#xff0c;标准差&#xff0c;协方差和相关系数的使用方法。 1、数据采样 Excel的数据分析功能中提供了数据抽样的功能&#xff0c;如下图所示。Python 通过 sample 函数完成数据采样。 2、数据抽样 Sample是进行…...

H.264编码解析与C++实现详解

一、H.264编码核心概念 1.1 分层编码结构 H.264采用分层设计&#xff0c;包含视频编码层&#xff08;VCL&#xff09;和网络抽象层&#xff08;NAL&#xff09;。VCL处理核心编码任务&#xff0c;NAL负责封装网络传输数据。 1.2 NALU单元结构 // NAL单元头部结构示例 struc…...

OpenAI即将开源!DeepSeek“逼宫”下,AI争夺战将走向何方?

OpenAI 终于要 Open 了。 北京时间 4 月 1 日凌晨&#xff0c;OpenAI 正式宣布&#xff1a;将在未来几个月内开源一款具备推理能力的语言模型&#xff0c;并开放训练权重参数。这是自 2019 年 GPT-2 部分开源以来&#xff0c;OpenAI 首次向公众开放核心模型技术。 【图片来源于…...

音视频 四 看书的笔记 MediaPlayerService

Binder机制看这里 Binde机智 这是一个分割符 Binder机智 分割(goutou) Binder机制 MediaPlayerService多媒体框架中一个非常重要的服务。MediaPlayerService 我原称之为链接之王 图片来源 MediaPlayer 是客户端 C/S 中的CMediaPlayerService MediaPlayerService::Client 是服…...

android Fragment使用

在 Android Fragment 中&#xff0c;导入 id&#xff08;findViewById&#xff09;并给控件赋值的逻辑通常应该写在 onViewCreated() 方法中&#xff0c;而不是 onCreateView()。 Fragment 生命周期 & 适合的位置 方法作用适合的操作onCreateView()创建并返回 Fragment 的…...

LayaAir3.3.0-beta.3重磅更新!Spine4.2、2D物理、UI系统、TileMap等全面升级!

正式版推出前&#xff0c;说明3.3的功能还没开发完。所以&#xff0c;又一大波更新来了~ 下面对重点更新进行说明。 Spine的重要更新 3.3.0-beta.3版本开始&#xff0c;新增了Spine 4.2 的运行时库&#xff0c;Spine动画上可以支持物理特性了。例如&#xff0c;下图右侧女孩在启…...

deepseek v3-0324 化学键线式Canvas编辑器设计

化学键线式Canvas编辑器设计 下面是一个基于HTML5 Canvas的化学键线式编辑器的基本实现方案。这个编辑器允许用户绘制有机化学中常见的键线式结构。 基本HTML结构 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"…...

解决 CMS Old GC 频繁触发线上问题技术方案

目录 一、CMS GC 工作原理 二、现象分析 &#xff08;一&#xff09;具体表现说明 &#xff08;二&#xff09;触发条件 三、总结优化措施 &#xff08;一&#xff09;调整 CMS 启动条件&#xff1a;降低 Old 区触发阈值 1. 原理分析 2. 建议配置 &#xff08;二&…...

后端实现加解密工具类(记录)

后端利用3DES加解密工具类实现特殊字段加解密&#xff0c;比如个人信息、请求参数等 &#xff0c;可以自定义密钥和IV加密&#xff0c;代码如下&#xff0c;直接使用即可。 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory…...

云原生技术赋能企业数字化转型:实战案例与架构演进

引言&#xff1a;数字化转型的云原生机遇 在VUCA时代背景下&#xff0c;某金融科技企业面临系统扩展性差、运维成本高企的困境。通过采用云原生技术栈&#xff0c;6个月内实现资源利用率提升300%&#xff0c;故障恢复时间从小时级缩短至分钟级。本文将深度解析该企业技术演进路…...

驱动开发系列49 - 搭建 Vulkan 驱动调试环境(编译 mesa 3D)- Ubuntu24.04

一:搭建Vulkan运行环境 安装vulkan依赖包: 1. sudo apt install vulkan-tools 2. sudo apt install libvulkan-dev 3. sudo apt install vulkan-utility-libraries-dev spirv-tools 4. sudo apt install libglfw3-dev libglm-dev 5. sudo apt install libxxf86vm-dev libxi-…...

自然语言处理(26:(终章Attention 2.)带Attention的seq2seq的实现)

系列文章目录 终章 1&#xff1a;Attention的结构 终章 2&#xff1a;带Attention的seq2seq的实现 终章 3&#xff1a;Attention的评价 终章 4&#xff1a;关于Attention的其他话题 终章 5&#xff1a;Attention的应用 目录 系列文章目录 前言 一、编码器的实现 二、解…...

Qt5.14.2+mingw64编译OpenCV3.4.14一次成功记录

上一文中编译opencv4.5成功了&#xff0c;但是使用过程中没有成功&#xff0c;网上很多的代码没法跑起来&#xff0c;所以才有了此文来编译一个低版本的opencv3的过程记录&#xff0c;全程截图。 一、软件安装 1.1 Python3.8版本安装路径:C:\Users\Administrator\AppData\Loca…...

【数据库原理】基础篇:MySQL基础入门与实战指南

前言 在当今数字化时代&#xff0c;数据已成为企业运营的核心资产之一。而MySQL作为一款广泛使用的开源关系型数据库管理系统&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将从MySQL的基础概念出发&#xff0c;逐步深入到实际操作&a…...

使用Python解析PPT文件并生成JSON结构详解

引言 PowerPoint&#xff08;PPT&#xff09;文件的自动化处理是办公自动化和数据提取的常见需求。本文将介绍如何通过Python的python-pptx库&#xff0c;将PPT文件的样式、结构、文本内容等信息解析为标准化的JSON格式&#xff0c;为后续的自动化处理、数据迁移或样式复用提供…...

C#:第一性原理拆解属性(property)

目录 第一步&#xff1a;从最基本的需求出发 第二步&#xff1a;引入控制需求 第三步&#xff1a;优化访问方式 第四步&#xff1a;剖析属性的本质 第五步&#xff1a;进一步简化和演化 自动属性的定义和作用 自动属性的特点和限制 第六步&#xff1a;总结属性的第一性…...

nacos 2.x使用java语言实现自定义Loadbalance

一、核心实现思路 Nacos 2.x 的负载均衡自定义支持两种模式&#xff1a; 基于 Ribbon 的兼容方案&#xff08;适用于 Spring Cloud 2020 之前版本&#xff09;基于 Spring Cloud LoadBalancer 的方案&#xff08;推荐&#xff0c;适配最新 Spring Cloud 2023 和 Nacos 2.x&am…...

torch.nn.Conv2d介绍——Pytorch中的二维卷积层

torch.nn.Conv2d是torch.nn模块中的二维卷积层类&#xff0c;用于构建神经网络中的二维卷积层。 1、基本语法 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone)将 2D …...

ubuntu虚拟机裁剪img文件系统

1. 定制文件系统前期准备 将rootfs.img文件准备好&#xff0c;并创建target文件夹2. 挂载文件系统 sudo mount rootfs.img target #挂载文件系统 sudo chroot target #进入chroot环境3. 内裁剪文件系统 增删裁剪文件系统 exit #退出chroot环境 sudo umount target…...

一文详细讲解Python(详细版一篇学会Python基础和网络安全)

引言 在当今数字化时代&#xff0c;Python 作为一种简洁高效且功能强大的编程语言&#xff0c;广泛应用于各个领域&#xff0c;从数据科学、人工智能到网络安全等&#xff0c;都能看到 Python 的身影。而网络安全作为保障信息系统和数据安全的关键领域&#xff0c;其重要性不言…...

使用QT调试LidarView

前段时间使用VeloView想进行点云的显示&#xff0c;后来发现VeloView的尺子测距不好用&#xff0c;也没有筛选点的功能&#xff0c;就放弃了。kitware同家的还有LidarView&#xff0c;功能多一些&#xff0c;更新的时间更晚&#xff0c;而且还兼容速腾、禾赛等多家点云设备可以…...

JAVA:使用 Curator 进行 ZooKeeper 操作的技术指南

1、简述 Apache Curator 是一个基于 ZooKeeper 的 Java 客户端库&#xff0c;它极大地简化了使用 ZooKeeper 的开发工作。Curator 提供了高层次的 API&#xff0c;封装了很多复杂的 ZooKeeper 操作&#xff0c;例如连接管理、分布式锁、Leader 选举等。 在分布式系统中&#…...

【SpringCloud】LoadBalance-负载均衡

4. 负载均衡-LoadBalance 4.1 为什么需要负载均衡&#xff1f; 不知道各位心中有没有女神&#xff0c;通常来说一个女神就会有多个舔狗&#xff0c;那这些舔狗呢&#xff0c;就会心甘情愿的帮女神干活&#xff0c;假设女神小美现在有三个舔狗&#xff0c;小美喜欢让这三个舔狗…...

[250401] OpenAI 向免费用户开放 GPT-4o 图像生成功能 | Neovim 0.11 新特性解读

目录 OpenAI 向免费用户开放 GPT-4o 图像生成功能Neovim 0.11 新特性解读更简化的 LSP 设置和配置内置自动补全改进的悬停文档诊断信息增强更多默认键映射终端模拟器改进其他改进 OpenAI 向免费用户开放 GPT-4o 图像生成功能 2025年4月1日早上&#xff0c;OpenAI CEO Sam Altm…...