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

Vue 3 路由配置使用与讲解

在现代前端开发中,单页应用(SPA)已成为主流趋势,Vue.js 作为一款优秀的 JavaScript 框架,在构建 SPA 方面表现出色。Vue Router 作为 Vue.js 官方的路由管理器,与 Vue.js 核心深度集成,极大地简化了单页应用的路由管理工作。在 Vue 3 中,Vue Router 也进行了升级,带来了新特性与改进,本文将全面深入地介绍 Vue 3 中路由的配置和使用。​

一、安装和基础设置​

(一)安装 Vue Router​

首先,确保你的项目已经初始化好 Vue 3 环境。若尚未安装vue-router,可以通过 npm 或 yarn 进行安装,以 npm 为例,安装命令如下:

npm install vue-router@4

这里指定安装@4版本,是因为 Vue 3 搭配的是 Vue Router 4,它在功能和使用方式上与之前版本有所不同。​

(二)创建路由实例​

安装完成后,通常在项目的src目录下创建一个router文件夹,在其中新建index.js文件用于配置路由实例。代码示例如下:

// src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
// 导入路由对应的组件
import Home from '../views/Home.vue'
import About from '../views/About.vue'const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
]const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
})export default router

上述代码中,createRouter用于创建路由实例,createWebHistory则用于启用 HTML5 History 模式,该模式下 URL 更加美观,没有#符号,但需要服务器进行相应配置,否则刷新页面可能出现 404 错误。若不想配置服务器,也可使用createWebHashHistory模式,即 Hash 模式,URL 会带有#符号,兼容性更好。routes数组定义了路由的映射关系,每个对象包含path(路径)、name(路由名称,方便通过名称进行导航)和component(路径对应的组件)。​

(三)在 Vue 应用中使用路由​

在main.js文件中引入并使用上述创建好的路由实例,代码如下:

// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'createApp(App).use(router).mount('#app')

通过app.use(router)将路由实例挂载到 Vue 应用中,这样整个应用就具备了路由功能。同时,在根组件App.vue中,需要使用<router - view>标签作为路由出口,用来渲染匹配到的组件。例如:

<template><div id="app"><router - view></router - view></div>
</template>

二、路由配置详解​

(一)路由模式​

Vue Router 4 支持两种主要的路由模式:Hash 模式和 History 模式。​

  1. Hash 模式:使用 URL 的 hash(即#号后面的部分)来模拟一个完整的 URL,当#号后面的内容发生变化时,不会向服务器发送请求。这种模式兼容性好,在一些不支持 HTML5 History API 的老旧浏览器中也能正常使用。配置方式如下:
    const router = createRouter({history: createWebHashHistory(),routes: [...]
    })

  2. History 模式:利用 HTML5 History API 来实现 URL 的变化,通过pushState和replaceState方法改变浏览器地址栏的 URL,同时不会重新加载页面。这种模式下的 URL 更加简洁美观,符合现代 Web 应用的需求,但如前文所述,需要服务器进行配置,确保所有路径都能正确回退到index.html。配置代码如下:

    const router = createRouter({history: createWebHistory(),routes: [...]
    })
    (二)路由匹配​
  3. 动态路由匹配:在实际应用中,经常需要根据不同的参数来展示不同的内容,这时就可以使用动态路由匹配。例如,要创建一个用户详情页面,每个用户有唯一的 ID,通过 ID 来展示对应用户的信息。定义动态路由的方式如下:
    // src/router/index.js
    import { createRouter, createWebHistory } from 'vue-router'
    // 导入路由对应的组件
    import Home from '../views/Home.vue'
    import About from '../views/About.vue'const routes = [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}
    ]const router = createRouter({history: createWebHistory(process.env.BASE_URL),routes
    })export default router

    上述代码中,createRouter用于创建路由实例,createWebHistory则用于启用 HTML5 History 模式,该模式下 URL 更加美观,没有#符号,但需要服务器进行相应配置,否则刷新页面可能出现 404 错误。若不想配置服务器,也可使用createWebHashHistory模式,即 Hash 模式,URL 会带有#符号,兼容性更好。routes数组定义了路由的映射关系,每个对象包含path(路径)、name(路由名称,方便通过名称进行导航)和component(路径对应的组件)。​

    (三)在 Vue 应用中使用路由​

    在main.js文件中引入并使用上述创建好的路由实例,代码如下:

    // src/main.js
    import { createApp } from 'vue'
    import App from './App.vue'
    import router from './router'createApp(App).use(router).mount('#app')

    通过app.use(router)将路由实例挂载到 Vue 应用中,这样整个应用就具备了路由功能。同时,在根组件App.vue中,需要使用<router - view>标签作为路由出口,用来渲染匹配到的组件。例如:

    <template><div id="app"><router - view></router - view></div>
    </template>

    二、路由配置详解​

    (一)路由模式​

    Vue Router 4 支持两种主要的路由模式:Hash 模式和 History 模式。​

  4. Hash 模式:使用 URL 的 hash(即#号后面的部分)来模拟一个完整的 URL,当#号后面的内容发生变化时,不会向服务器发送请求。这种模式兼容性好,在一些不支持 HTML5 History API 的老旧浏览器中也能正常使用。配置方式如下:
    const router = createRouter({history: createWebHashHistory(),routes: [...]
    })

    History 模式:利用 HTML5 History API 来实现 URL 的变化,通过pushState和replaceState方法改变浏览器地址栏的 URL,同时不会重新加载页面。这种模式下的 URL 更加简洁美观,符合现代 Web 应用的需求,但如前文所述,需要服务器进行配置,确保所有路径都能正确回退到index.html。配置代码如下:

    const router = createRouter({history: createWebHistory(),routes: [...]
    })
    (二)路由匹配​
  5. 动态路由匹配:在实际应用中,经常需要根据不同的参数来展示不同的内容,这时就可以使用动态路由匹配。例如,要创建一个用户详情页面,每个用户有唯一的 ID,通过 ID 来展示对应用户的信息。定义动态路由的方式如下:
    const routes = [{path: '/user/:id',component: User}
    ]

    在User组件中,可以通过$route.params.id来访问这个动态参数id。例如,在User组件的setup函数中获取参数:

    import { useRoute } from 'vue - router'
    export default {setup() {const route = useRoute()const userId = route.params.id// 可以根据userId进行数据请求等操作return {userId}}
    }

    路由参数的可选性:有时候,某个动态参数可能是可选的。例如,我们有一个商品详情页面,除了商品 ID 外,还可能有一个查询参数variant用于指定商品的变体。可以这样定义路由:

    const routes = [{path: '/product/:id',name: 'product',component: Product,children: [{path: 'variant',name: 'variant',component: Variant}]}
    ]

    在Product组件中,可以通过$route.params.id获取商品 ID,通过$route.query.variant获取变体参数。当访问/product/123时,$route.query.variant为空;当访问/product/123?variant=red时,$route.query.variant的值为red。​

    (三)嵌套路由​

    在复杂的应用中,页面往往具有多层嵌套结构,Vue Router 允许配置嵌套路由来满足这种需求。例如,有一个用户管理模块,用户详情页面包含个人资料和用户发布的文章两个子页面。配置嵌套路由的代码如下:

    const routes = [{path: '/user/:id',component: User,children: [{path: 'profile',name: 'profile',component: UserProfile},{path: 'posts',name: 'posts',component: UserPosts}]}
    ]

    在上述代码中,User组件作为父组件,其模板中需要包含<router - view>标签,用于渲染子路由对应的组件。例如:

    <template><div><h1>用户详情</h1><router - view></router - view></div>
    </template>

    当访问/user/123/profile时,UserProfile组件会被渲染到User组件的<router - view>中;当访问/user/123/posts时,UserPosts组件会被渲染。需要注意的是,子路由的path不需要以/开头,它会继承父路由的路径。​

    三、编程式导航​

    除了使用<router - link>组件进行声明式导航外,Vue Router 还提供了编程式导航的方式,即通过调用路由实例的方法来实现页面跳转。​

    (一)使用 push 方法​

    push方法用于向历史记录中添加一个新的路由记录,从而实现页面跳转。它可以接收多种类型的参数:​

  6. 字符串路径:直接传入目标路径字符串,例如:
    router.push('/home')

    带有路径的对象:通过对象形式传入路径,这种方式更加灵活,例如:

    router.push({ path: '/about' })

    命名的路由,并加上参数:如果在定义路由时给路由设置了name,可以通过name来导航,并传入参数,代码如下:

    router.push({ name: 'user', params: { id: 123 } })

    上述代码会跳转到name为user的路由,并将id参数设置为123。​

    4. 带查询参数:可以在跳转时携带查询参数,例如:

    router.push({ path: '/search', query: { keyword: 'vue' } })

    此时,跳转到的 URL 为/search?keyword=vue。​

    (二)使用 replace 方法​

    replace方法与push方法类似,不同之处在于replace方法不会向历史记录中添加新记录,而是替换当前的历史记录。例如:

    router.replace({ path: '/login' })

    执行上述代码后,当前页面会跳转到/login,并且历史记录中当前页面的记录会被/login的记录替换,用户无法通过浏览器的后退按钮回到之前的页面。​

    (三)使用 go 方法​

    go方法用于在历史记录中向前或向后跳转指定的步数,类似于浏览器的前进和后退按钮。例如

    //向前一页跳转
    router.go(1)
    //向后一页跳转
    router.go(-1)

    四、路由守卫​

    路由守卫主要用于通过跳转或取消的方式守卫导航,在路由导航的不同阶段执行特定的逻辑,例如权限验证、页面加载前的数据预取等。​

    (一)全局前置守卫​

    全局前置守卫会在每次路由导航之前被调用,其语法如下:

    router.beforeEach((to, from) => {// to: 即将进入的目标路由对象// from: 当前导航正要离开的路由对象// 可以在这里进行权限验证等操作if (to.meta.requiresAuth &&!isAuthenticated()) {return { name: 'login' } // 未登录则跳转到登录页面}return true // 允许导航
    })

    在上述代码中,to.meta.requiresAuth用于判断目标路由是否需要登录权限,isAuthenticated()是一个自定义函数,用于判断用户是否已经登录。如果用户未登录且目标路由需要权限,则返回一个新的路由对象,跳转到登录页面;否则返回true,允许导航继续进行。​

    (二)路由独享的守卫​

    每个路由配置对象可以定义自己的beforeEnter守卫,该守卫仅在进入该路由时被调用。例如:

    const routes = [{path: '/admin',name: 'admin',component: Admin,beforeEnter: (to, from) => {if (!isAdmin()) {return { name: 'home' } // 非管理员用户跳转到首页}return true}}
    ]

    这里的isAdmin()是一个判断用户是否为管理员的自定义函数,如果用户不是管理员,则跳转到首页,否则允许进入/admin路由。​

    (三)组件内的守卫​

    在组件内部也可以定义路由守卫,有以下几种:​

  7. beforeRouteEnter:在渲染该组件的对应路由被验证前调用,此时组件实例还未被创建,不能使用this。例如:
    export default {setup() {const beforeRouteEnter = (to, from) => {// 可以在进入路由前进行一些操作,如数据预取const userId = to.params.idfetchUserData(userId)}return {beforeRouteEnter}}
    }

    beforeRouteUpdate:在当前路由改变,但是该组件被复用时调用,例如,在动态路由参数变化时,组件不会重新创建,而是复用已有的组件实例,此时可以在这个守卫中处理参数变化的逻辑。代码如下:

    export default {setup() {const beforeRouteUpdate = (to, from) => {const newId = to.params.idconst oldId = from.params.idif (newId!== oldId) {// 根据新的参数重新获取数据fetchData(newId)}}return {beforeRouteUpdate}}
    }

    beforeRouteLeave:在导航离开渲染该组件的对应路由时调用,可以用于防止用户不小心离开页面,例如,当用户在表单中输入了未保存的数据时,提示用户是否保存。示例代码如下:

    <template><form><input v - model="formData.name"><input v - model="formData.email"></form>
    </template>
    <script>
    export default {data() {return {formData: {name: '',email: ''}}},setup() {const beforeRouteLeave = (to, from) => {if (Object.keys(this.formData).some(key => this.formData[key])) {const confirmLeave = window.confirm('您有未保存的数据,确定离开吗?')return confirmLeave}return true}return {beforeRouteLeave}}
    }
    </script>

    五、路由元信息​

    在定义路由时,可以为每个路由配置meta字段,用于存储一些自定义的元信息,例如页面标题、是否需要权限等。这些元信息可以在路由守卫或组件中获取和使用。例如:

    const routes = [{path: '/dashboard',name: 'dashboard',component: Dashboard,meta: {title: '仪表盘',requiresAuth: true}},{path: '/login',name: 'login',component: Login,meta: {title: '登录'}}
    ]

    在全局前置守卫中,可以根据meta字段来设置页面标题,例如:​

    router.beforeEach((to, from) => {​document.title = to.meta.title || '默认标题'​return true​})​​

    在权限验证时,也可以通过meta字段判断目标路由是否需要权限:​

    router.beforeEach((to, from) => {​if (to.meta.requiresAuth &&!isAuthenticated()) {​return { name: 'login' }​}​return true​})​​

    通过以上对 Vue 3 路由配置和使用的详细讲解,相信你对 Vue Router 有了更深入的理解。合理运用路由的各种特性,可以构建出更加灵活、高效的单页应用。在实际开发中,根据项目需求不断探索和实践,充分发挥 Vue Router 的强大功能。

希望这篇博客能对你有所帮助,感兴趣的话,请在评论区留言讨论吧!!

相关文章:

Vue 3 路由配置使用与讲解

在现代前端开发中&#xff0c;单页应用&#xff08;SPA&#xff09;已成为主流趋势&#xff0c;Vue.js 作为一款优秀的 JavaScript 框架&#xff0c;在构建 SPA 方面表现出色。Vue Router 作为 Vue.js 官方的路由管理器&#xff0c;与 Vue.js 核心深度集成&#xff0c;极大地简…...

7系列fpga在线升级和跳转

一、常见跳转方式 1&#xff0c;一般FPGA只要上电&#xff0c;就会自动从外部flash的0地址加载程序。2&#xff0c;而我们所谓的在线式升级就是在flash0地址放一个程序&#xff08;boot/golden image&#xff09;&#xff0c;然后在后面再放一个程序&#xff08;app/update im…...

解决靶机分配的 IP 地址与 Kali 机器静态 IP 地址冲突的方法

在网络安全学习或渗透测试中&#xff0c;经常会遇到靶机和 Kali 机器处于同一网络环境的情况。如果靶机通过 DHCP 自动获取的 IP 地址与 Kali 机器手动设置的静态 IP 地址发生冲突&#xff0c;就会导致网络通信异常&#xff0c;例如无法正常 ping 通或访问目标。本文将详细介绍…...

LLM做逻辑推理题 - 飞机事件

题目: 有N架一样的飞机停靠在同一个机场&#xff0c;每架飞机都只有一个油箱&#xff0c;每箱油可使飞机绕地球飞半圈。注意&#xff1a;天空没有加油站&#xff0c;飞机之间只是可以相互加油。如果使某一架飞机平安地绕地球飞一圈&#xff0c;并安全地回到起飞时的机场&#x…...

【Netty4核心原理】【全系列文章目录】

文章目录 一、前言二、目录 一、前言 本系列虽说本意是作为 《Netty4 核心原理》一书的读书笔记&#xff0c;但在实际阅读记录过程中加入了大量个人阅读的理解和内容&#xff0c;因此对书中内容存在大量删改。 本系列内容基于 Netty 4.1.73.Final 版本&#xff0c;如下&#xf…...

SAP ECCS 标准报表 切换为EXCEL电子表格模式

在解决《SAP ECCS标准报表在报表中不存在特征CG细分期间 消息号 GK715报错分析》问题过程中通过DEBUG方式参照测试环境补录数据后&#xff0c;不再报GK715错误&#xff0c;此时用户要的很急&#xff0c;要出季报。要求先把数据导出供其分析出季报。 采用导出列表方式&#xff…...

开源推荐#6:可爱的临时邮箱服务

大家后&#xff0c;我是 jonssonyan。 我们的邮箱常常被各种推广邮件、验证码甚至垃圾邮件淹没。每次注册新服务或临时需要一个邮箱时&#xff0c;都担心自己的主邮箱地址被泄露或滥用&#xff1f;也许你用过一些公共的临时邮箱服务&#xff0c;但数据隐私和可控性总是让人不那…...

SpringBoot企业级开发之【用户模块-更新用户密码】

具体内容: 依旧是查看接口文档信息&#xff1a; 开发思路&#xff1a; 实操&#xff1a; 1.controller //更新用户密码PatchMapping("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params) {//1.校验参数String oldPwdparams.get(…...

MyBatis-Plus 通过 ID 更新数据为NULL总结

在使用 MyBatis-Plus 通过 ID 更新数据时&#xff0c;若需将字段值设为 null&#xff0c;可参考以下解决方案&#xff1a; 方法一&#xff1a;使用 TableField 注解 在实体类字段上添加注解&#xff0c;指定更新策略为忽略非空检查&#xff1a; public class User {TableFie…...

SpringCloud Alibaba微服务工程搭建

前言 在讲微服务工程的搭建之前&#xff0c;我们先分析下为什么要使用微服务呢&#xff1f; 1、单体应用的痛点 维护困难&#xff1a;代码臃肿&#xff0c;牵一发而动全身。扩展性差&#xff1a;无法按需扩展特定功能&#xff0c;只能整体扩容。技术栈僵化&#xff1a;难以引…...

mobaXterm添加自定义内容按钮方法、mobaXterm宏的另一种使用方式、mobaxterm免输密码自动su到root用户

文章目录 说明添加自定义按钮内容方式完整流程说明root密码demo一键suroot 说明 就是给mobax添加secureCRT工具中的自定义按钮。 但发现mobax中的按钮其实是固定功能&#xff0c;并不能自定义编辑按钮内容。 添加自定义按钮内容方式 完整流程说明 虽然mobax不能直接像CRT那…...

04.Python代码NumPy-通过索引或切片来访问和修改

04.Python代码NumPy-通过索引或切片来访问和修改 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ python语法…...

继承:(开始C++的进阶)

我们今天来学习C的进阶&#xff1a; 面向对象三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态。 封装我们在前面已经学了&#xff0c;我们细细理解&#xff0c;我们的类的封装&#xff0c;迭代器的封装&#xff08;vector的迭代器可以是他的原生指针&#xff0c;li…...

【本地MinIO图床远程访问】Cpolar TCP隧道+PicGo插件,让MinIO图床一键触达

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言MinIO本地安装与配置cpolar 内网穿透PicGo 安装MinIO远程访问总结互动致谢参考目录…...

OpenCV数组的操作

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 这里的数组不是普通意义上的数组。核心模块Core专门提供了一些全局函数用于对数组&#xff08;矩阵&#xff09;进行操作。常用函数如表3-2所示。 3.2.1 寻找数组中最小值和最大值的位置&#xff08;minMaxL…...

python idea pycharm ModuleNotFoundError: No module named ‘bin‘

一、解决方案​​ ​​1.修正运行配置中的环境变量​​ 2.打开运行配置&#xff1a; 3.点击 IDEA 右上角配置下拉菜单 -> Edit Configurations。 4.选择 Django Server 配置&#xff08;或自定义的调试配置&#xff09;。 5.移除错误变量&#xff1a; 5.1在 Environment var…...

自动驾驶创建场景(just soso)

使用 ‌Driving Scenario Designer‌ 创建弯道驾驶场景并导出模型的详细步骤整理与补充说明&#xff1a; 步骤 1&#xff1a;打开应用程序‌ 启动 MATLAB‌在 MATLAB 命令窗口中输入以下命令&#xff0c;打开驾驶场景设计器&#xff1a;matlabCopy CodedrivingScenarioDesigne…...

大模型在轮状病毒肠炎预测及临床方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、轮状病毒肠炎概述 2.1 病毒特性与传播途径 2.2 临床症状与病理机制 2.3 流行病学特征 三、大模型技术原理及在医疗领域应用现状 3.1 大模型基本原理 3.2 医疗领域应用案例分析 3.3 大模型应用于轮状病毒…...

从 PyTorch 到 ONNX:深度学习模型导出全解析

在模型训练完毕后&#xff0c;我们通常希望将其部署到推理平台中&#xff0c;比如 TensorRT、ONNX Runtime 或移动端框架。而 ONNX&#xff08;Open Neural Network Exchange&#xff09;正是 PyTorch 与这些平台之间的桥梁。 本文将以一个图像去噪模型 SimpleDenoiser 为例&a…...

移动硬盘突然打不开紧急救援指南:从排查到完整恢复‌

突发状况的典型特征‌ 当移动硬盘突然打不开时&#xff0c;用户常会遇到多种异常表现&#xff1a;接入电脑后硬盘指示灯虽亮但无法识别、系统反复提示“设备未连接成功”或弹出“磁盘结构损坏”的警告。部分情况下&#xff0c;资源管理器中的盘符虽可见&#xff0c;但双击后显示…...

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发&#xff1a;父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域&#xff0c;组件之间的状态管理是一个至关重要的概念。通过有效的状态管理&#xff0c;我们可以确保应用的数据流动清晰、可预测&#xff0c;从而提升应用的稳定性和可维护性。本次实验…...

lodash-es 详解

import { cloneDeep } from lodash-es 是使用 ​​ES Modules​​ 语法从 lodash-es 包中按需导入 cloneDeep 函数。这是现代前端开发中推荐的使用 Lodash 的方式&#xff1a; 1. lodash-es 是什么&#xff1f; 它是 Lodash 的 ​​ES Modules 版本​​&#xff08;普通 lodas…...

使用nvm install XXX 下载node版本时网络不好导致npm下载失败解决方案

若nvm install ***安装报错解决方案&#xff1a; 离线安装Node.js npm&#xff0c;可直接下载Node.js 14.21.3的完整离线包&#xff08;含npm&#xff09;&#xff1a; 访问 Node.js历史版本下载页&#xff1a;https://nodejs.org/download/release/v14.21.3/ 下载 node-v14.…...

VScode+OpenOCD+HTOS栈回溯在国产mcu芯片上完全调试

VScodeOpenOCDCmakeHTOS栈回溯在国产32芯片上完全调试 说实话用的都是HAL库开发的&#xff0c;flash链接文件用的都是stm32的&#xff0c;只能说国产芯片抄的基本完全一样了。具体芯片是什么就不介绍了&#xff0c;看过文章就能猜出来是哪家的了。代码开源在Gitee上了。https:…...

2025年最新版动漫短剧系统开发小程序app教程,源码部署上线

以下是动漫短剧系统开发上线的详细教程&#xff0c;包含从0到1的全流程&#xff1a; 一、需求分析&#xff08;关键&#xff1a;明确核心功能&#xff09; 核心功能清单&#xff1a; 用户端&#xff1a;短视频浏览、弹幕评论、收藏/点赞、创作者关注、付费订阅。创作者端&am…...

Java练习——day2(集合嵌套)

文章目录 练习1练习2练习3 练习1 给定一个字符串列表List words&#xff0c;统计每个单词出现的次数&#xff0c;并用Map<String, Integer>存储结果。 示例代码&#xff1a; import java.util.*;public class WordCount {public static void main(String[] args) {// 示…...

国产CPU处理器性能实测:龙芯/海光/兆芯/华颉VS英特尔和AMD!

最近后台总收到粉丝留言&#xff1a;"现在国产CPU到底行不行&#xff1f;想换电脑又怕国产的不够强"。今天咱们就掏心窝子聊聊这个话题——国产CPU处理器到底是"弯道超车"还是"贴牌组装"&#xff1f;性能真能和英特尔i5、AMD锐龙掰手腕吗&#x…...

Excel自定义函数取拼音首字母

1.启动Excel 2003&#xff08;其它版本请仿照操作&#xff09;&#xff0c;打开相应的工作表&#xff1b; 2.执行“工具 > 宏 > Visual Basic编辑器”命令&#xff08;或者直接按“AltF11”组合键&#xff09;&#xff0c;进入Visual Basic编辑状态&#xff1b; 3.执行“…...

Vue3 SSR生物启发架构:仿生渲染与DNA流式编码

一、神经元弹性调度网络 1.1 突触连接式渲染集群 1.2 生物能效对比表 调度模式能耗(kWh/万次)突触延迟容错阈值信息熵利用率轮询调度4.2220ms60%35%蚁群算法2.8150ms75%48%神经形态调度0.945ms93%82%DNA协进化调度0.312ms99.9%95% 二、DNA流式编码协议 2.1 四碱基序列转换器…...

git的上传流程

好久没使用git 命令上传远程仓库了。。。。。温习了一遍&#xff1b; 几个注意点--单个文件大小不能超过100M~~~ 一步步运行下面的命令&#xff1a; 进入要上传的文件夹内&#xff0c;点击git bash 最终 hbu的小伙伴~有需要nndl实验的可以自形下载哦...

C++学习记录:

今天我们来学习一门新的语言&#xff0c;也是C语言最著名的一个分支语言&#xff1a;C。 在C的学习中&#xff0c;我们主要学习的三大组成部分&#xff1a;语法、STL、数据结构。 C的介绍 C的历史可追溯至1979年&#xff0c;当时贝尔实验室的本贾尼斯特劳斯特卢普博士在面对复杂…...

MAC-批量任务并行处理​​实现

批量任务并行处理示例(基于Spring框架)​​ 以下是一个 ​​完整可运行​​ 的批量任务并行处理示例,包含 ​​任务拆分、异步执行、线程池管理、耗时 监控​​ 等核心功能,适用于数据清洗、文件处理、批量通知等场景。 ​​1. 线程池配置​​ @Configuration @EnableA…...

《电子类专业:通往科技未来的钥匙》

一、电子类专业全景概览 在当今科技飞速发展的时代,电子类专业无疑占据着现代科技体系中基础与核心的重要地位。从我们日常生活中不可或缺的智能手机、电脑,到推动社会进步的人工智能、大数据技术,再到探索宇宙奥秘的航天航空设备,电子类专业的身影无处不在。它就像一把万…...

全链路开源数据平台技术选型指南:六大实战工具链解析

在数字化转型加速的背景下&#xff0c;开源技术正重塑数据平台的技术格局。本文深度解析数据平台的全链路架构&#xff0c;精选六款兼具创新性与实用性的开源工具&#xff0c;涵盖数据编排、治理、实时计算、联邦查询等核心场景&#xff0c;为企业构建云原生数据架构提供可落地…...

大塔集团乔迁开新局 企业赋能贯全程

2025年4月15 日&#xff0c;在佛山市佛山大道北175号&#xff0c;大塔集团乔迁开业盛大启幕&#xff0c;业界目光聚焦于此。 点睛仪式 揭牌仪式 彩绸飘扬、嘉宾云集&#xff0c;现场气氛热烈非凡&#xff0c;这一标志性时刻&#xff0c;宣告着大塔集团正式踏上全新发展征程。 …...

Ubuntu系统下部署 NFS服务教程

Ubuntu系统下部署 NFS服务教程 一、NFS 服务简介二、环境准备三、服务器端配置1. 安装 NFS 服务端2. 创建共享目录3. 配置共享规则4. 生效配置并启动服务四、客户端配置1. 安装 NFS 客户端2. 创建本地挂载点3. 挂载远程目录4. 验证挂载状态5. 测试读写五、高级配置技巧1. 开机自…...

shell编程正则表达式与文本处理器

目录 基础正则表达式 扩展正则表达式 sed工具使用方法 awk 工具使用方法 前言 在 Shell 编程的世界里,正则表达式与文本处理器是两大不可或缺的利器。正则表达式(RegularExpression,简称 RE)作为一种强大的字符串匹配工具,能够通过特定的字符组合来描述和匹配一系列符合特…...

SparseDrive---论文阅读

纯视觉下的稀疏场景表示 算法动机&开创性思路 算法动机&#xff1a; 依赖于计算成本高昂的鸟瞰图&#xff08;BEV&#xff09;特征表示。预测和规划的设计过于直接&#xff0c;没有充分利用周围代理和自我车辆之间的高阶和双向交互。场景信息是在agent周围提取&#xff…...

YOLOV8 OBB 海思3516训练流程

YOLOV8 OBB 海思3516训练流程 目录 1、 下载带GPU版本的torch(可选) 1 2、 安装 ultralytics 2 3、 下载pycharm 社区版 2 4、安装pycharm 3 5、新建pycharm 工程 3 6、 添加conda 环境 4 7、 训练代码 5 9、配置Ymal 文件 6 10、修改网络结构 9 11、运行train.py 开始训练模…...

ThinkPHP框架接入Stripe支付

我的框架是ThinkPHP5.0&#xff0c;后台是fastadmin 1.安装composer包&#xff0c;包名是 stripe/stripe-php 2.下单代码 <?php namespace app\common\service; use app\common\controller\Api; use Stripe\Stripe; use Stripe\Checkout\Session; use think\Config;clas…...

文件上传漏洞学习

什么是文件上传漏洞 文件上传漏洞指用户通过上传一个恶意的可执行文件&#xff0c;例如木马、病毒、webshell、恶意脚本等等在服务器中执行&#xff0c;配合其他工具&#xff0c;获得网站控制权或达到一些其他效果。 文件上传漏洞原理 由于对上传文件的格式限制不够严格&…...

【function call】大模型的hello function call

1. 所有的大模型的function call 功能就是将function 也当作输入到大模型中 2. 不同的平台或者模型调用的方式可能不一样 一个硅基流动的例子 import requests from openai import OpenAIclient = OpenAI(api_key="sk-vuffqulyakrzccyqenavdryxyamqkhemidvgaihdqmehmhlv&…...

CVFSNet:一种用于端到端脑梗塞溶栓治疗后改良脑梗死溶栓分级(mTICI)评分的跨视图融合评分网络|文献速递-深度学习医疗AI最新文献

Title 题目 CVFSNet: A Cross View Fusion Scoring Network for end-to-end mTICI scoring CVFSNet&#xff1a;一种用于端到端脑梗塞溶栓治疗后改良脑梗死溶栓分级&#xff08;mTICI&#xff09;评分的跨视图融合评分网络 01 文献速递介绍 中风目前是全球主要的致死原因之…...

解决 .Net 6.0 项目发布到IIS报错:HTTP Error 500.30

今天在将自己开发许久的项目上线的时候&#xff0c;发现 IIS 发布后请求后端老是报一个 HTTP Error 500.30 的异常&#xff0c;如下图所示。   后来仔细调查了一下发现是自己的程序中写了 UseStaticFiles 的依赖注入&#xff0c;这个的主要作用就是发布后端后&#xff0c;想…...

施磊老师基于muduo网络库的集群聊天服务器(一)

文章目录 技术栈项目需求环境安装muduo网络库安装编译错误:解决办法:移动头文件和库文件 redis和mysql安装验证mysql环境修改mysql密码Nginx--先不安装 Json介绍为什么需要json?什么是 json 序列化?常用的数据传输序列化格式?直接使用json第三方库json序列化代码演示复杂键值…...

WebStorm中Gitee账号的密码登录与令牌登录设置

1.账号密码添加 1.1安装插件 说明&#xff1a;安装Gitee插件 1.2点击通过账号密码登录 说明&#xff1a;需要Gitee账号和密码 1.3登录 说明&#xff1a;通过邮箱和密码登录 1.4登录成功 2.令牌登录 2.1Token登录 说明&#xff1a;需要Gitee生成的私人令牌进行登录。 2.2G…...

Android开发案例——简单计算器

实现计算机的简单功能 1、显示页面jsj.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height&…...

实现类似 “更新中” 的水平进度条按钮效果

如上图所示 activity_test3.xml <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent…...

【QT入门到晋级】QT打动态库包及引入动态库包

前言 本篇为持续更新状态&#xff0c;内容包含window、Linux下打动态库包&#xff0c;以及引入动态库包的方式。 一、window 1、动态库打包 以百度的OCR接口调用打dll库为例&#xff0c;以下为qtcreator创建动态库过程&#xff1a; 1.1Qtcreator创建lib项目 创建成功后&…...

Linux:解决 yum 官方源无法使用(CentOS 7)

文章目录 一、原因二、解决方法 一、原因 CentOS 7 在 2024年 6 月 30 日结束了它的生命周期&#xff08;End of Life, EOL&#xff09;&#xff0c;这意味着官方不再提供更新和支持&#xff0c;包括其 yum 源也将停止服务。 因此对于仍然需要使用 CentOS 7 的用户来说&#…...