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

Vue 2.x 项目升级到 Vue 3详细指南【修改清单】

文章目录

  • 前言
  • 0.迁移过程
    • 1. 安装 Vue 3
    • 2. 逐一处理迁移中的警告
    • 3. 迁移全局和内部 API
    • 4. 迁移 Vue Router 和 Vuex
    • 5. 处理其他的不兼容变更
  • 1. Vue3特性
    • 1. Composition API
    • 2. 更好的性能
    • 3. 更好的 TypeScript 支持
    • 4. 多个根元素
    • 5. Suspense 组件
    • 6. Teleport 组件
    • 7. 全局 API 的改变
    • 8. 自定义渲染器 API
  • 2.修改清单
    • 1.模板指令
    • 2. v-model
    • 3. key 使用改变
    • 4. **v-if 与 v-for 优先级
    • 5. v-bind 合并行为
    • 6. **v-on.native 移除**:
    • 8. 函数式组件
    • 9. **异步组件**:
    • 10. **emits 选项**:
    • 11. **渲染函数**:
    • 12. **移除的 APIs**:
    • 13. **按键修饰符**:
    • 14. **事件 API**:
    • 15. **过滤器**:
    • 16. **内联模板**:
    • 17. **$children**:
    • 18. **propsData 选项**:
    • 19. **Attribute 强制行为**:
    • 20. **自定义指令**:
    • 21. **Data 选项**:
    • 22. **Mount API 的改变**:
    • 23. **Props 的默认函数访问 this**:
    • 24. **Transition class 名更改**:
    • 25. **Transition 作为根节点**:
    • 26. **TransitionGroup 根元素**:
    • 27. **VNode 生命周期事件**:
    • 28. **Watch 侦听数组**:
  • 参考资料

前言

背景:有同学说我上一篇《Vue 2.x 项目升级到 Vue 3详细指南【总结版】》看的太费劲,让我直接整理一篇Vue2.x 升级到 vue3 的修改清单,所以整理了此文章。

Vue 3.0 已经发布,很多人可能都在疑惑如何将自己的 Vue 2.x 项目升级到 Vue 3.0。这篇文章将详细地介绍这个过程。它引入了许多新特性和改进,包括更好的性能、更小的包大小、更好的 TypeScript 支持,以及新的 API,如 Composition API。

从 Vue 2.x 升级到 Vue 3 并不是一个简单的任务,因为 Vue 3 引入了一些重大的不兼容变更。这些变更可能会影响你的应用的行为,或者需要你修改你的代码以适应新的 API。

在开始升级之前,我建议你先备份你的项目,或者使用版本控制系统,如Git,以便在需要时可以轻松地回滚到旧版本。此外,你应该确保你的项目的所有依赖项都已经支持 Vue 3,或者至少有可用的替代方案。

现在,让我们开始升级你的 Vue 2.x 项目到 Vue 3 吧!go go

0.迁移过程

1. 安装 Vue 3

首先,你需要安装 Vue 3 到你的项目。你可以通过 npm 或 yarn 来进行安装:

npm install vue@next
# 或者
yarn add vue@next

2. 逐一处理迁移中的警告

Vue 3 在兼容性构建中为大部分的有破坏性的改动提供了运行时警告。在你完成初始升级之后,你可以根据运行时控制台中的警告提示逐一处理新代码中的问题。

3. 迁移全局和内部 API

Vue 3 的全局 API 发生了一些改变,如Vue.prototype 被改为 config.globalProperties,Vue.mixin() 现在只适用在应用的根组件,而非全局。这些全局 API 的改变都需要在迁移时被处理和修改。

4. 迁移 Vue Router 和 Vuex

Vue Router 和 Vuex 在 Vue 3 中也有一些改变。你需要安装 vue-router@4 和 vuex@next 并根据相应文档进行迁移。

5. 处理其他的不兼容变更

Vue 3 有一些其他的不兼容变更,如新的生命周期函数名称、更改的事件行为、移除的 filters 等。你需要查阅迁移指南,了解如何处理这些不兼容变更。

在这里插入图片描述

1. Vue3特性

在说升级之前 我们先来了解一下。Vue 3 引入了许多新特性和改进,以下是一些主要的亮点:

1. Composition API

这是 Vue 3 的一项主要新特性,它提供了一种新的方式来组织和复用代码。与 Vue 2 的 Options API 相比,Composition API 提供了更好的类型推断,使得 Vue 更易于与 TypeScript 一起使用。

import { ref, computed } from 'vue';export default {setup() {const count = ref(0);const increment = () => { count.value++ };const decrement = () => { count.value-- };const isEven = computed(() => count.value % 2 === 0);return {count,increment,decrement,isEven};}
};

2. 更好的性能

Vue 3 的虚拟 DOM 重写和优化,使得渲染速度比 Vue 2 快约 1.3 到 2 倍。此外,Vue 3 的包大小比 Vue 2 小约 10%。

3. 更好的 TypeScript 支持

Vue 3 的源代码完全用 TypeScript 重写,这使得 Vue 3 与 TypeScript 的集成更加紧密,提供了更好的类型推断和编辑器支持。

4. 多个根元素

vue 3 允许在单文件组件中使用多个根元素,这使得组件的结构更加灵活。

<template><header>...</header><main>...</main><footer>...</footer>
</template>

5. Suspense 组件

Vue 3 引入了新的 Suspense 组件,用于处理异步组件的加载状态。这使得你可以在异步组件加载完成之前显示一个加载指示器,或者在加载失败时显示一个错误消息。

<Suspense><template #default><AsyncComponent /></template><template #fallback><div>Loading...</div></template>
</Suspense>

6. Teleport 组件

Vue 3 引入了新的 Teleport 组件,用于将子组件渲染到 DOM 树的其他位置。这对于实现模态对话框、通知、弹出菜单等功能非常有用。

<Teleport to="#modal-container"><div class="modal">...</div>
</Teleport>

7. 全局 API 的改变

Vue 3 对全局 API 进行了重大的改变,以使其更加模块化和树摇优化友好。例如,Vue.componentVue.directive 等全局 API 在 Vue 3 中被移除,取而代之的是 app.componentapp.directive 等实例方法。

8. 自定义渲染器 API

Vue 3 提供了一个新的自定义渲染器 API,使得你可以创建自己的渲染器,例如用于创建原生移动应用的渲染器。

2.修改清单

我们需要按照以下方式将项目中使用到地方进行修改。以进行适配。

1.模板指令

Vue 3 对多个模板指令进行了更新,包括 v-modelv-if/v-forv-bind 等。这意味着这些指令的行为可能与 Vue 2 不同,你需要检查你的代码以确保它们与新的行为保持一致。

2. v-model

在 Vue 3 中,v-model 的行为和语法发生了变化。现在,你需要使用 v-model:[argument]="data" 的形式来绑定数据,而不是 Vue 2 中的 v-model="data"

<!-- Vue 2 -->
<input v-model="message" /><!-- Vue 3 -->
<input v-model:value="message" />

3. key 使用改变

在 Vue 3 中,key 的使用方式发生了变化。现在,v-for 中的 key 是必须的。这意味着你需要在所有的 v-for 指令中添加 key

<!-- Vue 2 -->
<div v-for="item in items">{{ item }}
</div><!-- Vue 3 -->
<div v-for="item in items" :key="item.id">{{ item }}
</div>

4. **v-if 与 v-for 优先级

在 Vue 3 中,v-ifv-for 在同一个元素上的优先级发生了变化。现在,v-if 的优先级高于 v-for。这意味着如果你在同一个元素上使用了这两个指令,你需要确保它们的使用是正确的。

<!-- Vue 2 -->
<div v-for="item in items" v-if="item.isActive">{{ item }}
</div><!-- Vue 3 -->
<div v-for="item in items" :key="item.id"><div v-if="item.isActive">{{ item }}</div>
</div>

5. v-bind 合并行为

Vue 3 改变了 v-bind 的合并行为。在 Vue 2 中,如果你有多个 v-bind,它们会被合并。但在 Vue 3 中,后面的 v-bind 会覆盖前面的。

<!-- Vue 2 -->
<div v-bind="{ id: 'foo' }" v-bind="{ id: 'bar' }"></div> <!-- id is 'foo' --><!-- Vue 3 -->
<div v-bind="{ id: 'foo' }" v-bind="{ id: 'bar' }"></div> <!-- id is 'bar' -->

6. v-on.native 移除:

Vue 3 移除了 v-on.native 修饰符。你需要更新你的代码,移除所有的 .native 修饰符,并使用新的 emits 选项。

<!-- Vue 2 -->
<my-component @click.native="doSomething"></my-component><!-- Vue 3 -->
<my-component @click="doSomething"></my-component>

8. 函数式组件

Vue 3 更改了函数式组件的写法,不再需要 functional 关键词。你需要更新你的函数式组件以适应新的写法。

  <!-- Vue 2 -->Vue.component('my-component', {functional: true,// ...})<!-- Vue 3 -->const MyComponent = (props, { slots }) => {// ...}

9. 异步组件:

Vue 3 改变了异步组件的语法。你需要将你的异步组件语法更新为新的语法。

<!-- Vue 2 -->
Vue.component('my-component', () => import('./MyComponent.vue'))<!-- Vue 3 -->
const MyComponent = defineAsyncComponent(() => import('./MyComponent.vue'))

10. emits 选项:

Vue 3 添加了全新的 emits 选项,用于定义组件发出的事件。你需要在你的组件中添加 emits 选项。

<!-- Vue 3 -->
export default {emits: ['my-event'],methods: {doSomething() {this.$emit('my-event')}}
}

11. 渲染函数:

Vue 3 的渲染函数 API 有所改变。你需要更新你的渲染函数以适应新的 API。

   <!-- Vue 2 -->Vue.component('my-component', {render: function (createElement) {return createElement('div', this.$slots.default)}})<!-- Vue 3 -->const MyComponent = {render() {return h('div', this.$slots.default())}}

12. 移除的 APIs:

Vue 3 移除了一些不再需要的 APIs,例如 Vue.setVue.deleteVue.observable。这些API在Vue.js 2.x中用于添加响应式属性到对象或删除属性,Vue 3中的响应式系统使用 Proxy,所以这些API不再需要。

// Vue 2
Vue.set(object, propertyName, value);
Vue.delete(object, propertyName);
Vue.observable(object);// Vue 3
// 整个对象都是响应式的,不需要特定的API

13. 按键修饰符:

Vue 3 不再支持按键修饰符的别名,例如 @keyup.enter@keyup.space 等。你需要将这些修饰符替换为它们的键码。

<!-- Vue 2 -->
<input @keyup.enter="submit"><!-- Vue 3 -->
<input @keyup.13="submit">

14. 事件 API:

Vue 3 的事件 API 有所改变,例如 $on$off$once 已被移除。你需要使用新的事件 API。

// Vue 2
this.$on('event', handler);
this.$off('event', handler);
this.$once('event', handler);// Vue 3
// 使用事件发射器如mitt或tiny-emitter

15. 过滤器:

Vue 3 不再支持过滤器。你需要将过滤器替换为计算属性或者方法。

<!-- Vue 2 -->
{{ message | filterA | filterB }}<!-- Vue 3 -->
{{ filterB(filterA(message)) }}

16. 内联模板:

Vue 3 不再支持内联模板。你需要将内联模板替换为 render 函数或者 template

<!-- Vue 2 -->
<my-component inline-template><div>{{ message }}</div>
</my-component><!-- Vue 3 -->
<my-component><template #default="{ message }"><div>{{ message }}</div></template>
</my-component>

17. $children:

Vue 3 不再支持 $children。你需要找到其他方式来访问子组件。要访问子组件,可以使用 refprovide/inject

<!-- Vue 2 -->
this.$children;<!-- Vue 3 -->
// 使用 ref 或 provide/inject 访问子组件

18. propsData 选项:

Vue 3 不再支持 propsData 选项。你需要在创建组件实例时直接传递 props

// Vue 2
new Vue({propsData: {prop: value,},
});// Vue 3
createApp({props: {prop: value,},
});

19. Attribute 强制行为:

Vue 3 现在默认将未声明的 attribute 视为 DOM attribute。如果你需要强制 attribute 来响应化,你需要使用 v-bind

<!-- Vue 2 -->
<my-component my-attr="value" /><!-- Vue 3 -->
<my-component v-bind="{ 'my-attr': 'value' }" />

20. 自定义指令:

Vue 3 的自定义指令 API 有所改变。你需要更新你的自定义指令以适应新的 API。

// Vue 2
Vue.directive('my-directive', {bind(el, binding, vnode, oldVnode) { /* ... */ },update(el, binding, vnode, oldVnode) { /* ... */ },
});// Vue 3
const myDirective = {beforeMount(el, binding, vnode, prevVnode) { /* ... */ },updated(el, binding, vnode, prevVnode) { /* ... */ },
};

21. Data 选项:

Vue 3 的 data 选项必须是一个函数。你需要将所有的 data 选项转换为函数。

   // Vue 2new Vue({data: {message: 'Hello Vue!',},});// Vue 3createApp({data() {return {message: 'Hello Vue!',};},});

22. Mount API 的改变:

Vue 3 的 mount API 有所改变。你需要更新你的 mount 调用以适应新的 API。

   // Vue 2new Vue({/* options */}).$mount('#app');// Vue 3createApp({/* options */}).mount('#app');

23. Props 的默认函数访问 this:

Vue 3 不再允许在 props 的默认函数中访问 this。你需要找到其他方式来获取需要的数据。

   // Vue 2props: {prop: {default: function () {return this.someData;},},};// Vue 3props: {prop: {default() {// "this" 是 undefined},},};

24. Transition class 名更改:

Vue 3 更改了 transition 的 class 名称,为了与 CSS 动画一致,v-enter 改为了 v-enter-fromv-leave 改为了 v-leave-from

   /* Vue 2 */.fade-enter, .fade-leave-to {opacity: 0;}/* Vue 3 */.fade-enter-from, .fade-leave-to {opacity: 0;}

25. Transition 作为根节点:

Vue 3 不再允许 transition 作为根节点。你需要确保你的组件有一个非 transition 的根节点。

   <!-- Vue 2 --><transition><div>...</div></transition><!-- Vue 3 --><!-- transition 不能作为根节点 --><div><transition><div>...</div></transition></div>

26. TransitionGroup 根元素:

Vue 3 的 TransitionGroup 不再渲染一个默认的根元素。你需要手动添加一个根元素。

   <!-- Vue 2 --><transition-group><div v-for="item in items" :key="item.id">{{ item }}</div></transition-group><!-- Vue 3 --><transition-group><div><div v-for="item in items" :key="item.id">{{ item }}</div></div></transition-group>

27. VNode 生命周期事件:

Vue 3 的 VNode 生命周期事件有所改变。你需要更新你的代码以适应新的事件。

   // Vue 2vnode.context.$on('hook:updated', handler);// Vue 3onUpdated(handler);

28. Watch 侦听数组:

Vue 3 的 watch 对于数组的行为有所改变。你需要更新你的 watch 调用以适应新的行为。

   // Vue 2watch(() => [...array], handler);// Vue 3watch(() => array, handler, { deep: true });

参考资料

  1. Vue 3 Migration Guide - Vue 官方提供的迁移指南,详细介绍了从 Vue 2 到 Vue 3 的各种改变和升级策略。

  2. Vue 3 Upgrade Guide - 这篇博客文章详细介绍了 Vue 2 到 Vue 3 的升级过程,包括实践技巧和遇到的问题。

相关文章:

Vue 2.x 项目升级到 Vue 3详细指南【修改清单】

文章目录 前言0.迁移过程1. 安装 Vue 32. 逐一处理迁移中的警告3. 迁移全局和内部 API4. 迁移 Vue Router 和 Vuex5. 处理其他的不兼容变更 1. Vue3特性1. Composition API2. 更好的性能3. 更好的 TypeScript 支持4. 多个根元素5. Suspense 组件6. Teleport 组件7. 全局 API 的…...

【算法日志】贪心算法刷题:重叠区问题(day31)

代码随想录刷题60Day 目录 前言 无重叠区间&#xff08;筛选区间&#xff09; 划分字母区间&#xff08;切割区间&#xff09; 合并区间 前言 今日的重点是掌握重叠区问题。 无重叠区间&#xff08;筛选区间&#xff09; int eraseOverlapIntervals(vector<vector<in…...

基于Jenkins构建生产CICD环境、jenkins安装

目录 Jenkins简介 安装配置Jenkins Jenkins简介 Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后&#xff0c;项目从Hudson项目独立。官方网站&#xff1a;https://jenkins.io/。 Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中&#xff…...

基于Java SpringBoot+vue+html 的地方美食系统(2.0版本)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,csdn、博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 系统流程的分析3.1 用户管理的流程3.2个人中心管理流程3.3登录流程 4系统设计…...

opencv-gpu版本编译(添加java支持,可选)实现硬解码

目录 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取1、准备文件2、复制 NVCUVID 头文件到 cuda 安装目录 include3、安装相关依赖4、 执行cmake5、编译安装6、测试 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取 前置条…...

数据分析问答总结

一、SQL窗口函数 1.是什么 OLAP&#xff08;Online Anallytical Processing联机分析处理&#xff09;&#xff0c;对数据库数据进行实时分析处理。 2.基本语法&#xff1a; <窗口函数>OVER &#xff08;PARTITION BY <用于分组的列名> ORDER BY <用于排序的…...

Python学习笔记_实战篇(二)_django多条件筛选搜索

多条件搜索在很多网站上都有用到&#xff0c;比如京东&#xff0c;淘宝&#xff0c;51cto&#xff0c;等等好多购物教育网站上都有&#xff0c;当然网上也有很多开源的比楼主写的好的多了去了&#xff0c;仅供参考&#xff0c;哈哈 先来一张效果图吧&#xff0c;不然幻想不出来…...

【生态经济学】利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手

查看原文>>>如何快速掌握利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手 近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、…...

xml中的vo是干什么用的

在Java中&#xff0c;VO&#xff08;Value Object&#xff09;是一种常见的设计模式&#xff0c;用于表示纯粹的数据对象。VO 通常用于在不同层或模块之间传递数据&#xff0c;并且它们的主要目的是封装和组织数据&#xff0c;而不包含业务逻辑。 VO 在Java中的具体作用有以下…...

现代企业数据泄露的原因分析与建议

近年来&#xff0c;随着信息技术的飞速发展&#xff0c;数据已经成为现代企业不可或缺的发展资源。然而&#xff0c;随之而来的数据泄露危机&#xff0c;给个人、企业甚至整个社会带来了巨大的风险与威胁。本文将综合探讨企业数据泄露的主要途径和原因&#xff0c;并提出防护建…...

飞天使-kubeadm安装一主一从集群

文章目录 安装前准备安装前准备配置yum源等安装前准备docker安装 安装kubeadm配置kubeadm验证集群 参考链接 安装前准备 cat >> /etc/hosts <<EOF 192.168.100.30 k8s-01 192.168.100.31 k8s-02 EOF hostnamectl set-hostname k8s-01 #所有机器按照要求修改 ho…...

string类写时拷贝

文章目录 1.string类拷贝构造函数的现代写法2.string类写时拷贝vs和g下string结构的不同vs下string的结构&#xff1a;g下string的结构 3.总结 1.string类拷贝构造函数的现代写法 string类拷贝构造函数的传统写法&#xff1a; string(const string& s){if (this ! &s)…...

QT VS编译环境无法打开包括文件type_traits

这问题&#xff0c;别人给的处理方法都是&#xff1a; 添加环境变量执行vsvars32.bat/vcvarsall.bat/vsdevcmd.bat重新安装QT项目&#xff1a;执行qmake。。。。 个人不推荐配置环境编译&#xff0c;除非你非常熟&#xff0c;因为配置环境变量需要你知道有哪些路径需要添加&a…...

深入浅出 TCP/IP 协议栈

TCP/IP 协议栈是一系列网络协议的总和&#xff0c;是构成网络通信的核心骨架&#xff0c;它定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构&#xff0c;分别是应用层、传输层、网络层和链路层&#xff0c;每一层都呼叫它的下…...

Servlet+JDBC实战开发书店项目讲解第13讲:库存管理功能

ServletJDBC实战开发书店项目讲解第13讲&#xff1a;库存管理功能 在第13讲中&#xff0c;我们将讲解如何实现书店项目中的库存管理功能。该功能包括图书的添加、编辑、删除和查询等核心功能。下面是实现该功能的主要思路&#xff1a; 显示库存列表&#xff1a; 创建一个管理页…...

Shepherd: A Critic for Language Model Generation

本文是LLM系列的相关文章&#xff0c;针对《Shepherd: A Critic for Language Model Generation》的翻译。 Shepherd&#xff1a;语言模型生成的评价 摘要1 引言2 数据收集3 Shepherd模型4 评估反馈5 结果6 相关工作7 结论不足 摘要 随着大型语言模型的改进&#xff0c;人们对…...

【Python爬虫案例】爬取大麦网任意城市的近期演出!

老规矩&#xff0c;先上结果&#xff1a; 含10个字段&#xff1a; 页码&#xff0c;演出标题&#xff0c;链接地址&#xff0c;演出时间&#xff0c;演出城市&#xff0c;演出地点&#xff0c;售价&#xff0c;演出类别&#xff0c;演出子类别&#xff0c;售票状态。 代码演示…...

【框架】SpringBoot数组传参问题

方式一 前端以字符串形式传递idList&#xff0c;采用逗号拼接&#xff0c;后端直接使用list接收 // 前端代码 form: {otherParam: ,idList: [id1,id2].join(,) }//后端代码 // 在后端接收idList时&#xff0c;直接使用List<T> 就可以接收前端字符串&#xff08;默认使用…...

四川天蝶电子商务:2023短视频运营分析

短视频运营分析是指通过对短视频平台上的各种数据进行收集、整理和分析&#xff0c;以寻找出视频内容、用户活跃度、用户行为等方面的规律和问题&#xff0c;从而为短视频平台的运营决策提供依据。下面将从几个方面具体介绍短视频运营分析的重要性和方法。 首先&#xff0c;短…...

Git(5)已有项目连接远端git仓库

文章目录 初始化git连接远程仓库拉下仓库代码添加代码到本地仓库删除idea配置的git本地缓存提交代码推上去 初始化git git init连接远程仓库 git remote add origin 你的仓库地址拉下仓库代码 git pull --rebase origin master添加代码到本地仓库 git add .删除idea配置的g…...

Datawhale Django 后端开发入门 Task05 DefaultRouter、自定义函数

一、DefaultRouter是Django REST framework中提供的一个路由器类&#xff0c;用于自动生成URL路由。路由器是将URL与视图函数或视图集关联起来的一种机制。Django REST framework的路由器通过简单的配置可以自动生成标准的URL路由&#xff0c;从而减少了手动编写URL路由的工作量…...

JVM的元空间了解吗?

笔者近期在面试的时候被问到了这个问题&#xff0c;元空间也是Java8当时的一大重大革新&#xff0c;之前暑期实习求职的时候有专门看过&#xff0c;但是近期秋招的时候JVM相关的内容确实有点生疏了&#xff0c;故在此进行回顾。 结构 首先&#xff0c;我们应了解JVM的堆结构&a…...

WPS中的表格错乱少行

用Office word编辑的文档里面包含表格是正常的&#xff0c;但用WPS打开里面的表格就是错乱的&#xff0c;比如表格位置不对&#xff0c;或者是表格的前几行无法显示、丢失了。 有一种可能的原因是&#xff1a; 表格属性里面的文字环绕选成了“环绕”而非“无”&#xff0c;改…...

Pytorch-day09-模型微调-checkpoint

模型微调&#xff08;fine-tune)-迁移学习 torchvision微调timm微调半精度训练 起源&#xff1a; 1、随着深度学习的发展&#xff0c;模型的参数越来越大&#xff0c;许多开源模型都是在较大数据集上进行训练的&#xff0c;比如Imagenet-1k&#xff0c;Imagenet-11k等2、如果…...

leetcode304. 二维区域和检索 - 矩阵不可变(java)

前缀和数组 二维区域和检索 - 矩阵不可变题目描述前缀和代码演示 一维数组前缀和 二维区域和检索 - 矩阵不可变 难度 - 中等 原题链接 - 二维区域和检索 - 矩阵不可变 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总…...

记一次oracle数据库迁移至mysql数据库(表同步)

目录 一、利用Navicat将oracle迁移至mysql数据库 1、建立数据传输 2、选择需要迁移的数据库跟目标库 3、数据传输选项 4、选择需要迁移表信息 二、迁移之后遇到的一些问题 1、大小写问题 2、数据库函数问题 3、sql语句是否使用空格隔开问题 4、关于子查询别命名问题 …...

打怪升级之从零开始的网络协议

序言 三个多月过去了&#xff0c;我又来写博客了&#xff0c;这一次从零开始学习网络协议。 总的来说&#xff0c;计算机网络很像现实生活中的快递网络&#xff0c;其最核心的目标&#xff0c;就是把一个包裹&#xff08;信息&#xff09;从A点发送到B点去。下面是一些共同的…...

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…...

读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具 1.1. mysql -u root -p; 1.2. mysql&#xff1e; show databases; 1.3. mysql&#xff1e; use sakila; 1.4. mysql&#xff1e; SELECT now(); 1.4.1. now()是MySQL的内建函数 1.4.2. 返回当前日期和时间 1.5. mysql&#xff1e; SELECT now() FROM dual…...

易思智能物流无人值守系统文件上传漏洞复现

0x01 产品简介 易思无人值守智能物流系统是一款集成了人工智能、机器人技术和物联网技术的创新产品。它能够自主完成货物存储、检索、分拣、装载以及配送等物流作业&#xff0c;帮助企业实现无人值守的智能物流运营&#xff0c;提高效率、降低成本&#xff0c;为现代物流行业带…...

git获取远端分支和merge

要将远程分支拉取到本地&#xff0c;你可以使用以下命令&#xff1a; 1. 首先&#xff0c;使用git fetch命令从远程仓库获取最新的分支信息&#xff1a; git fetch origin 这个命令将会将远程仓库origin的分支信息下载到本地。 2. 接下来&#xff0c;可以使用git checkout命…...

linux-进程

文章目录 1.先谈硬件冯诺依曼体系结构 2.再谈软件操作系统什么是操作系统&#xff1f;为什么要有操作系统&#xff1f;如何管理&#xff1f;系统调用 3.再谈进程那么具体Linux是怎么做的?指令 ps ajx 查看所有进程 非实时top 实时查看进程 相当于任务管理器ls /proc 内存级进程…...

整数数组区间的插入与删除

相似题参考&#xff1a; 56. Merge Intervals - 力扣&#xff08;LeetCode&#xff09;合并区间 57. 插入区间 - 力扣&#xff08;LeetCode&#xff09; 1272. 删除区间 package Jerry;import org.junit.Assert; import org.junit.Test;import java.util.ArrayList; import…...

Git标签

Git 中的标签&#xff0c;指的是某个分支某个特定时间点的状态(静态)。通过标签&#xff0c;可以很方便的切换到标记时的状态。 比较有代表性的是人们会使用这个功能来标记发布结点 (v1.0、v1.2等)。 下面是myatis-plus的标签: 1 标签相关命令 命令作用git tag查看标签&…...

BarCodeWiz ActiveX Control Crack

BarCodeWiz ActiveX Control Crack BarcodeWiz ActiveX Control–只需单击按钮即可将所有基本条形码类型添加到Microsoft Office中。在Microsoft Word中&#xff0c;创建单独的条形码、标签页或合并文档。在Microsoft Excel中&#xff0c;选择单元格范围并自动将每个单元格转换…...

mysql高版本(8.0+)group_by报错的处理方法

mysql高版本8.0 group_by报错的处理方法 1. 原因2. 处理方法2.1 临时方法,重启后失效2.2 修改配置my.ini文件 1. 原因 这个错误一般发生在mysql 5.7以及 5.7以上的版本中&#xff0c;其原因是mysql的默认配置中,sql_mode“ONLY_FULL_GROUP_BY” 这个配置严格执行了 ‘SQL92标准…...

Java 下载压缩zip

Java压缩zip /*** 下载压缩包** param instId 实例id* param response 响应* author 梁伟浩* date 2023-08-21*/GetMapping("/downloadZip")ApiOperation(value "下载压缩包")ApiImplicitParam(name "instId", value "实例id", r…...

GTK3实现自定义列表

使用gtk,如果想自己定义列表,思路可以将每个列表项作为一个hbox,整个列表是一个vbox。通过对容器动态的添加删除,实现列表操作,同时添加任何自己所需要的控件。 下面的例子是实现一个显示图片、按钮和进度条的列表,并且进行上移下移,具有添加和删除列表项功能但没有演示…...

Go语言基础之数组

Array(数组) 数组是同一种数据类型元素的集合。 在Go语言中&#xff0c;数组从声明时就确定&#xff0c;使用时可以修改数组成员&#xff0c;但是数组大小不可变化。 基本语法&#xff1a; // 定义一个长度为3元素类型为int的数组a var a [3]int数组定义&#xff1a; var 数…...

信息安全从业者考试认证大全

证书是IT从业者知识水平能力的一个体现&#xff0c;考证同时也是拓展自身知识的一个方法。近年来&#xff0c;安全行业风生水起&#xff0c;各种认证层出不穷&#xff0c;眼花缭乱。这里不对任何一个证书做评价&#xff0c;只是做出介绍&#xff0c;在国内&#xff0c;对任何事…...

详解react 15~18新增特性

React 15.x 版本的新增特性&#xff1a; 创建组件类&#xff1a;在 React 15 中&#xff0c;可以使用 createClass 方法来创建组件类。这个方法允许你定义组件的生命周期方法、渲染函数以及其他功能。 PropTypes&#xff1a;React 15 引入了 PropTypes&#xff0c;它是一种用于…...

SpringBoot整合FFmpeg进行视频分片上传(Linux)

SpringBoot整合FFmpeg进行视频分片上传&#xff08;Linux&#xff09; 上传的核心思路&#xff1a; 1.将文件按一定的分割规则&#xff08;静态或动态设定&#xff0c;如手动设置20M为一个分片&#xff09;&#xff0c;用slice分割成多个数据块。 2.为每个文件生成一个唯一标识…...

eNSP综合小实验:VRRP、MSTP、Eth-Trunk、NAT、DHCP等技术应用

完成下图要求&#xff1a; 拓扑图&#xff1a; 配置命令&#xff1a; 由于交换机日志太多不便于复制&#xff0c;所以就复制命令。大概步骤如下&#xff1a; 第一步先分配IP地址&#xff0c;在sw1和sw2上创建VLAN100用于e0/0/3口配IP&#xff0c;在sw1、sw2、sw3、sw4上创建VL…...

正中优配:尾盘拉升的股票第二天的走势?

尾盘拉升是指买卖日快结束时股票价格呈现上涨的状况。关于许多投资者来说&#xff0c;这一般是好事情&#xff0c;因为它可认为他们带来更高的收益。但是&#xff0c;人们常常会问尾盘拉升的股票第二天的走势怎么。本文将从多个角度进行剖析。 首要&#xff0c;咱们需求认识到这…...

ios小组件报错:Please adopt containerBackground API

iOS 17 小组件报错:Please adopt containerBackground API 使用下面的方法解决了: 代码: extension View {func widgetBackground(_ backgroundView: some View) -> some View {if #available(iOSApplicationExtension 17.0, *) {return containerBackground(for: .wi…...

基于AWS的3D模型搜索服务实现

3D模型广泛应用于计算机游戏、电影、工程、零售业、广告等许多领域。市场上有很多制作3D模型的工具&#xff0c;但几乎没有工具可以直观地搜索3D模型数据库以找到类似的3D模型 因为开发好的 3D 模型搜索工具非常具有挑战性。 它需要复杂的计算和 AI/ML 框架来创建模型描述符并提…...

pycharm远程连接docker容器

pycharm远程连接docker容器 1.根据镜像创建容器2.进入容器3.修改容器的root密码4. 容器安装openssh-server和openssh-client5.修改SSH配置文件6.重启ssh服务7. 退出测试8.配置pycharm并连接docker容器9. 选择docker环境 1.根据镜像创建容器 sudo docker run -itd --nameconn_t…...

开源全球地理空间数据可视化框架——Cesium学习(2023.8.21)

Cesium学习 2023.8.21 1、Cesium简介1.1 Github上的Cesium 2、Cesium下载安装使用2.1 方式一&#xff1a;页面在线引用2.2 方式二&#xff1a;页面离线使用2.3 方式三&#xff1a;完整项目使用 3、CesiumJS学习教程&#xff08;快速上手 API文档&#xff09;3、Cesium官方示例…...

RT-Thread学习日记——点亮LED

最近开始接触RT-Thread&#xff0c;后面会单独建立专栏以此记录我的学习过程&#xff0c;如果能给你的学习提供参考&#xff0c;本人倍感荣幸。 学习工具&#xff1a;正点原子战舰开发板 一、、点亮LED 在RT-Thread的配置项里搜索LED可以看到和LED相关的很多内容&#xff0c…...

粘包问题(TCP面向字节流批量发送数据导致)

粘包问题出现的原因 由于TCP协议网络传输数据的基本单位是字节流&#xff0c;所以当应用程序收到了传输的数据时&#xff0c;看到的是一连串的字节数据&#xff0c;而TCP协议网络传输数据有滑动窗口的机制&#xff08;核心就是批量传输数据&#xff0c;推荐看TCP中窗口和滑动窗…...