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

【Vue】路由1——路由的引入 以及 路由的传参

目录

一、什么是路由 !

1.1 一个完整的前端路由规则​编辑

1.2 后端路由

1.3 安装路由插件

1.4 嵌套(多级)路由

二、路由的query传参

2.1 传参

2.2 取值

三、命名路由

四、 路由的params参数

五、路由的props配置

第一种写法:props的对象写法,但是由于数据是死的,这样传参没有意义就用的很少

第二种写法:传递params值 为布尔值

第三种写法:函数形式 (最推荐)

总结:

路由

1.基本使用

2.几个注意点

3.多级路由(多级路由)

4.路由的query参数

5.命名路由

6.路由的params参数

7.路由的props配置

总结不易~ 本章节对我有很大的收获, 希望对你也是!!!


本节素材已上传至Gitee:yihaohhh/我爱Vue - Gitee.comhttps://gitee.com/liu-yihao-hhh/i-love---vue/tree/master/30_src_%E8%B7%AF%E7%94%B1%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8

一、什么是路由 !

 路由这一节非常重要!几乎每一个用vue写的项目里面都要包含路由~ 我们先来区分路由和路由器的区别是什么!

  1. 路由就是一组key-value的对应关系
  2. 多个路由,需要经过路由器的管理

生活里的路由就是实现多台设备同时上网,编程里面的路由就是实现单页面应用!以前我们写的页面都是通过一个a超链接进行各种跳转来实现各种丰富多彩的页面,但是那就会存在一个问题,每次页面都要重新渲染你大量的页面信息,会造成页面抖动还很慢交互效果很不好。所以现在就都采用的是单页面应用(SPA),也就是路由控制。

这就是单页面应用,在同一页面中点击左侧的导航位置,页面是不发生跳转的,但是页面内容会发生变化! 

1.1 一个完整的前端路由规则

 当年点击班级管理的时候, Vue里面的router路由器时刻都在监测,监测到端口号后面内容发生了改变,/class 然后router路由器就去进行route路由规则对比,发现真的存在一个/class的key值,然后就去配对value的班级组件来渲染在页面上!

此时,你又点击了学科管理,此时端口号后面的路径再次发生变化,router又监测到了,那么Vue里面的router路由器又进行route规则比对,发现又存在一个/subject的key值,然后进行配对当前的value值学科组件然后再次渲染在页面上

所以SPA里面的路由应用是为了实现导航区和展示区的相互切换

1.2 后端路由

 对于后端路由,你是什么路径,我就调用什么样的函数去响应你的请求

  1. 理解:value 是 function, 用于处理客户端提交的请求。
  2. 工作过程:服务器接收到一个请求时, 根据请求路径找到匹配的函数来处理请求, 返回响应数据。

1.3 安装路由插件

npm i vue-router@3

main.js 进行引入和应用插件:

import Vue from 'vue'import App from './App.vue'// 引入
import VueRouter from 'vue-router'// 引入路由器
import router from './router'// 关闭Vue生产提示
Vue.config.productionTip = false// 应用插件
Vue.use(VueRouter)// 创建vm
new Vue({el: '#app',render: h => h(App),router: router
})

那么引入的路由器,肯定在一个应用中要来专门创建这个路由器,一个应用里面由一个router文件专门管理路由

./router/index.js文件时专门创建并暴露一个路由器的, 写法很简单!

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
// 引入组件
import About from '../components/About.vue'
import Home from '../components/Home.vue'// 创建并暴露一个路由器
export default new VueRouter({routes: [{path: '/about',component: About},{path: 'home',component: Home}]
})

回到App组件中,我们的a链接跳转就不在用了,以后都可以用路由跳转,那就是由重新的语法描述:a改成router-link, href改成to 同时跳转的链接改成 / + 组件名

          <!-- 原始html中 我们使用a标签实现页面的跳转 --><!-- <a class="list-group-item active" href="./about.html">About</a> --><!-- <a class="list-group-item" href="./home.html">Home</a> --><router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link>

但其实也可以看到,当前的router-link在vue-router库下又给我们转成了a标签

active-class="active"  

是 Vue Router 中 <router-link> 组件的一个属性,用来自定义激活状态时应用的 CSS 类名。 

可以观察此时实现的效果,左上角的刷新也没有该改变,但是实现了跳转功能!

这里实现有个误区,并不是靠点击激活的!而是路径改变来激活!!

在你点击 <router-link> 的时候,Vue Router 会跳转到目标路由:

  • 比如你点击 /home,路径就变成 /home

  • 然后 Vue Router 会找到 to="/home"<router-link>,给它加上 class="list-group-item active"

所以是路径变化带来的“激活效果”,而不是“点击”这个动作本身带来的。

 <router-view></router-view>

那么回到App组件中,要想指定组件呈现的位置,就是跟插槽有着一样的效果但是不叫slot 而是vue-router提供的router-view,此时就已经能够实现组件展示的效果了~

          <div class="panel-body"><!-- 指定组件的呈现位置 --><router-view></router-view></div>

我们主打就是一个专业!创建一个Benner组件进行引入,来区分路由组件的区别,那么久创建一个pages文件夹,专门来存放路由组件!记得修改router的路由路径!!!

1.4 嵌套(多级)路由

分别创建Message组件 和 News组件:

    <ul><li><a href="/message1">message001</a>&nbsp;&nbsp;</li><li><a href="/message2">message002</a>&nbsp;&nbsp;</li><li><a href="/message/3">message003</a>&nbsp;&nbsp;</li></ul>
    <ul><li>news001</li><li>news002</li><li>news003</li></ul>

创建好后,我们推荐第一步先不要在Home路由组件内修改结构,先去修改路由路径:二级路径在children对象下书写,是一个数组,配置path的时候不要添加'/'

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
// 引入组件
import About from '../pages/About.vue'
import Home from '../pages/Home.vue'
import News from '../pages/News.vue'
import Message from '../pages/Message.vue'// 创建并暴露一个路由器
export default new VueRouter({routes: [// 一级路由{path: '/about',component: About},{path: '/home',component: Home,// 二级路由 不用加 /children: [{path: 'news',component: News},{path: 'message',component: Message},]},]
})

修改Home组件的结构,进行二级路由引入,其实就跟一级一样没什么区别,同样是touter-link 来进行链接跳转 active-class进行路由激活,router-view配置路由出口进行展示引入的路由组件

        <ul class="nav nav-tabs"><li><!--  二级路由及必须要写父路由的路径 --><router-link class="list-group-item" active-class="active" to="/home/news">News</router-link></li><li><router-link class="list-group-item" active-class="active" to="/home/message">Message</router-link></li></ul><router-view></router-view>

本节素材已上传至Gitee:yihaohhh/我爱Vue - Gitee.comhttps://gitee.com/liu-yihao-hhh/i-love---vue/tree/master/32_src_%E8%B7%AF%E7%94%B1%E7%9A%84query%E5%8F%82%E6%95%B0

二、路由的query传参

设想一下,假如我们现在需要三级路由,只是进行一个消息列表展示,倘若有100个消息列表,我们不可能去写一百个路由组件在来分别展示,所以我们要想办法将说要展示的消息都存放在一个路由组件中,然后通过传参来进行判断我们要获取的是什么内容来展示!

我们配置好三级路由后,就可以开始进行传参了:

2.1 传参

<router-link to="/home/message/detail?id=666&title=你好啊!">{{ e.title }}</router-link>&nbsp;&nbsp;

2.2 取值

在Detail组件内用生命周期钩子观察到数据router

export default {name:'Detail',mounted() {console.log(this.$route)}
}

Detail组件:取值

<template><div><ul><li>消息编号{{$route.query.id}}</li><li>消息标题{{$route.query.title}}</li></ul></div>
</template><script>
export default {name:'Detail',mounted() {console.log(this.$route)}
}
</script>

传参:v-bind来进行数据绑定,因为当前的数据获取是会变化的

to的字符串写法: 

<router-link :to="`/home/message/detail?${id=m.id}&${title=m.title}`">{{ e.title }}</router-link>&nbsp;&nbsp;

to的对象写法(推荐):

        <!-- 跳转路由并携带query参数 to的对象写法 --><router-link :to="{path:'/home/message/detail',query: {id: e.id,title: e.title}}">{{ e.title }}</router-link>&nbsp;&nbsp;

本节素材已上传至Gitee:yihaohhh/我爱Vue - Gitee.comhttps://gitee.com/liu-yihao-hhh/i-love---vue/tree/master/33_src_%E8%B7%AF%E7%94%B1%E5%91%BD%E5%90%8D

三、命名路由

我们可以给每一个路由都起一个自己的名字,这样再多级路由下,就不用写那么长的路径才能跳转

 name 就代替了path的路径跳转,可以看到只能使用对象的形式进行书写

        <router-link :to="{// path:'/home/message/detail',name:'xinxi',query: {id: e.id,title: e.title}}">{{ e.title }}</router-link>&nbsp;&nbsp;

像这种一级路由,要用name方式还是要进行改写对象的形式,所以,这种比较短的路由,就还是建议用path方法 

          <!-- <router-link class="list-group-item" active-class="active" to="/about">About</router-link> --><router-link class="list-group-item" active-class="active" :to="{name:'guanyu'}">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link>

 

// 该文件专门用于创建整个应用的路由器
import VueRouter from "vue-router";
// 引入组件
import About from '../pages/About.vue'
import Home from '../pages/Home.vue'
import News from '../pages/News.vue'
import Message from '../pages/Message.vue'
import Detail from '../pages/Detail.vue'// 创建并暴露一个路由器
export default new VueRouter({routes: [// 一级路由{name: 'guanyu',path: '/about',component: About},{name: 'jia',path: '/home',component: Home,// 二级路由 不用加 /children: [{name: 'xinwen',path: 'news',component: News},{name: 'xinxi',path: 'message',component: Message,children: [{name: 'xiaoxi',path: 'detail',component: Detail}]},]},]
})

本节素材已上传至Gitee:yihaohhh/我爱Vue - Gitee.comhttps://gitee.com/liu-yihao-hhh/i-love---vue/tree/master/34_src_%E8%B7%AF%E7%94%B1%E7%9A%84params%E5%8F%82%E6%95%B0

四、 路由的params参数

to方式传参

        <!-- 跳转路由并携带params参数 to的字符串写法 --><router-link :to="`/home/message/detail/${e.id}/${e.title}`">{{ e.title }}</router-link>&nbsp;&nbsp;

路径后面直接跟的是传入的参数,那么未来让路由器明白我们传入的参数而不是要他去寻找多级路由,那么我们就要配置路由规则,再要传入参数的路由路径下进行配置

path: 'detail/:id/:title'

          children: [{name: 'xiaoxi',path: 'detail/:id/:title',component: Detail}

Detail路由组件进行参数接受,使用params规则即可

    <ul><li>消息编号{{$route.params.id}}</li><li>消息标题{{$route.params.title}}</li></ul>

本节素材已上传至Gitee:yihaohhh/我爱Vue - Gitee.comhttps://gitee.com/liu-yihao-hhh/i-love---vue/tree/master/35_src_%E8%B7%AF%E7%94%B1%E7%9A%84props%E9%85%8D%E7%BD%AE

五、路由的props配置

你有没有一直感觉,组件的模板如果写100个会不会很麻烦!

      <li>消息编号{{$route.params.id}}</li><li>消息标题{{$route.params.title}}</li>

那有没有什么办法可以用来简化呢??

计算属性!

<template><div><ul><li>消息编号{{id}}</li><li>消息标题{{title}}</li></ul></div>
</template><script>
export default {name:'Detail',computed: {id() {return this.$route.params.id},title() {return this.$route.params.title}},mounted() {// console.log(this.$route)}
}
</script>

但是这样有一百个参数要传值也未免太夸张了些,所以就有我们之前学组件间通信的props可以用来路由间传参

第一种写法:props的对象写法,但是由于数据是死的,这样传参没有意义就用的很少

          children: [{name: 'xiaoxi',path: 'detail/:id/:title',component: Detail,// props的第一种写法, 值为对象,该对象的所有key-value都会以props的形式传给Detail组件// 这种写法非常少,因为传递的是死数据,那没有意义props: { a: 1, b: 'hello' }}

在Detail组件中用props来进行接受:

<template><div><ul><li>消息编号{{id}}</li><li>消息标题{{title}}</li><li>{{ a }}</li><li>{{ b }}</li></ul></div>
</template><script>
export default {name:'Detail',props: ['a', 'b'],
}
</script>

第二种写法:传递params值 为布尔值

值为布尔值 若为真,就会把该路由组件收到的所有params参数 以props的形式传递给了Detail组件 

          children: [{name: 'xiaoxi',path: 'detail/:id/:title',component: Detail,// 第二种写法, 值为布尔值 若为真,就会把该路由组件收到的所有params参数 以props的形式传递给了Detail组件props: true}]

Detail组件直接用props进行数据接受就可以直接使用,但是但是!!!这种办法虽然很香,但是不可以接受query参数

<template><div><ul><li>消息编号{{id}}</li><li>消息标题{{title}}</li></ul></div>
</template><script>
export default {name:'Detail',props: ['id', 'title'],
}
</script>

第三种写法:函数形式 (最推荐)

          children: [{name: 'xiaoxi',path: 'detail',component: Detail,// 第三种写法:值为函数 props($route) {return { id: $route.query.id, title: $route.query.title }}// 解构赋值的连续写法props({ query: { id, title } }) {return { id: id, title: title }}}]

Detail组件直接接受即可!

<template><div><ul><li>消息编号{{id}}</li><li>消息标题{{title}}</li></ul></div>
</template><script>
export default {name:'Detail',// props: ['a', 'b'],props: ['id', 'title'],
}
</script>

但是这里注意是用query方式进行传值的,所以在Message传入的时候,一定要修改成query方式传入! 修改为query方式传值

        <router-link :to="{// path:'/home/message/detail',// 如果使用params参数 那么就不允许使用path 必须使用name  name:'xiaoxi',query: {id: e.id,title: e.title}}">{{ e.title }}</router-link>&nbsp;&nbsp;

本节素材已上传至Gitee:yihaohhh/我爱Vuehttps://gitee.com/liu-yihao-hhh/i-love---vue

总结:

路由

  1. 理解: 一个路由(route)就是一组映射关系(key - value),多个路由需要路由器(router)进行管理。

  2. 前端路由:key是路径,value是组件。

1.基本使用

  1. 安装vue-router,命令:npm i vue-router

  2. 应用插件:Vue.use(VueRouter)

  3. 编写router配置项:

      //引入VueRouterimport VueRouter from 'vue-router'//引入Luyou 组件import About from '../components/About'import Home from '../components/Home'​//创建router实例对象,去管理一组一组的路由规则const router = new VueRouter({routes:[{path:'/about',component:About},{path:'/home',component:Home}]})​//暴露routerexport default router

  4. 实现切换(active-class可配置高亮样式)

      <router-link active-class="active" to="/about">About</router-link>

  5. 指定展示位置

     <router-view></router-view>

2.几个注意点

  1. 路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹。

  2. 通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。

  3. 每个组件都有自己的$route属性,里面存储着自己的路由信息。

  4. 整个应用只有一个router,可以通过组件的$router属性获取到。

3.多级路由(多级路由)

  1. 配置路由规则,使用children配置项:

      routes:[{path:'/about',component:About,},{path:'/home',component:Home,children:[ //通过children配置子级路由{path:'news', //此处一定不要写:/newscomponent:News},{path:'message',//此处一定不要写:/messagecomponent:Message}]}]

  2. 跳转(要写完整路径):

      <router-link to="/home/news">News</router-link>

4.路由的query参数

  1. 传递参数

      <!-- 跳转并携带query参数,to的字符串写法 --><router-link :to="/home/message/detail?id=666&title=你好">跳转</router-link><!-- 跳转并携带query参数,to的对象写法 --><router-link :to="{path:'/home/message/detail',query:{id:666,title:'你好'}}">跳转</router-link>

  2. 接收参数:

     $route.query.id$route.query.title

5.命名路由

  1. 作用:可以简化路由的跳转。

  2. 如何使用

    1. 给路由命名:

        {path:'/demo',component:Demo,children:[{path:'test',component:Test,children:[{name:'hello' //给路由命名path:'welcome',component:Hello,}]}]}

    2. 简化跳转:

       <!--简化前,需要写完整的路径 --><router-link to="/demo/test/welcome">跳转</router-link>​<!--简化后,直接通过名字跳转 --><router-link :to="{name:'hello'}">跳转</router-link>​<!--简化写法配合传递参数 --><router-link :to="{name:'hello',query:{id:666,title:'你好'}}">跳转</router-link>

6.路由的params参数

  1. 配置路由,声明接收params参数

     {path:'/home',component:Home,children:[{path:'news',component:News},{component:Message,children:[{name:'xiangqing',path:'detail/:id/:title', //使用占位符声明接收params参数component:Detail}]}]}

  2. 传递参数

    <!-- 跳转并携带params参数,to的字符串写法 --><router-link :to="/home/message/detail/666/你好">跳转</router-link><!-- 跳转并携带params参数,to的对象写法 --><router-link :to="{name:'xiangqing',params:{id:666,title:'你好'}}">跳转</router-link>

    特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

  3. 接收参数:

     $route.params.id$route.params.title

7.路由的props配置

​ 作用:让路由组件更方便的收到参数

  {name:'xiangqing',path:'detail/:id',component:Detail,​//第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件// props:{a:900}​//第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props(route){return {id:route.query.id,title:route.query.title}}}

总结不易~ 本章节对我有很大的收获, 希望对你也是!!!

相关文章:

【Vue】路由1——路由的引入 以及 路由的传参

目录 一、什么是路由 &#xff01; 1.1 一个完整的前端路由规则​编辑 1.2 后端路由 1.3 安装路由插件 1.4 嵌套&#xff08;多级&#xff09;路由 二、路由的query传参 2.1 传参 2.2 取值 三、命名路由 四、 路由的params参数 五、路由的props配置 第一种写法&…...

大模型为什么学新忘旧(大模型为什么会有灾难性遗忘)?

字数&#xff1a;2500字 一、前言&#xff1a;当学霸变成“金鱼” 假设你班上有个学霸&#xff0c;数学考满分&#xff0c;英语拿第一&#xff0c;物理称霸全校。某天&#xff0c;他突然宣布&#xff1a;“我要全面发展&#xff01;从今天起学打篮球&#xff01;” 一周后&am…...

07 负载均衡

01 面试题 面试题: 说一下如何实现的负载均衡 1.使用的proxy_pass模块 2.通过proxy_pass模块转发给upstream模块定义的地址池 3.使用的是默认的rr轮训算法分发到后端的服务器02 负载均衡配置 # 写一个简单的配置 [rootlikexy-nginx-01 conf.d]# cat lb.conf server {listen …...

谢赛宁团队提出 BLIP3-o:融合自回归与扩散模型的统一多模态架构,开创CLIP特征驱动的图像理解与生成新范式

BLIP3-o 是一个统一的多模态模型&#xff0c;它将自回归模型的推理和指令遵循优势与扩散模型的生成能力相结合。与之前扩散 VAE 特征或原始像素的研究不同&#xff0c;BLIP3-o 扩散了语义丰富的CLIP 图像特征&#xff0c;从而为图像理解和生成构建了强大而高效的架构。 此外还…...

【深度学习】残差网络(ResNet)

如果按照李沐老师书上来&#xff0c;学完 VGG 后还有 NiN 和 GoogLeNet 要学&#xff0c;但是这两个我之前听都没听过&#xff0c;而且我看到我导师有发过 ResNet 相关的论文&#xff0c;就想跳过它们直接看后面的内容。 现在看来这不算是不踏实&#xff0c;因为李沐老师说如果…...

最新最热门的特征提取方式:CVOCA光学高速复值卷积

目录 一、问题背景与核心挑战 二、CVOCA核心原理与数学建模 1. 复杂值卷积的数学表达 2. CVOCA的三大光学映射策略 三、关键创新点详解 1. 合成波长技术(Synthetic Wavelength) 2. 复杂值电光调制器(CVEOM) 3. 时间-波长交织卷积计算 四、代码实现与仿真验证 1. …...

获取Class的方式有哪些?

在Java中&#xff0c;获取Class对象是进行反射操作的基础&#xff0c;以下是几种常见方式及其详细说明&#xff0c;以及记忆方法&#xff1a; 1. 使用 .class 语法 语法&#xff1a;类名.class&#xff08;如 String.class&#xff09;。特点&#xff1a; 编译时确定&#xff…...

STM32八股【9】-----volatile关键字

一句话&#xff1a; 主要是为了防止编译器优化导致无法得到最新的值。主要用于以下三处&#xff1a; 1.在中断中修改访问的变量。 2.多任务&#xff08;线程&#xff09;共享的变量。 3.硬件寄存器变量 问题 嵌入式程序中常出现变量值改变但代码未正确响应的现象 原因 编译…...

【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】

在蓝牙协议栈中&#xff0c;HCI_LE_Set_Event_Mask 是一个主机控制接口&#xff08;HCI&#xff09;层的命令&#xff0c;属于 LE&#xff08;Low Energy&#xff09;控制指令集。该命令用于 配置控制器向主机报告哪些 LE 事件&#xff0c;以便主机能够根据需求控制被中断的事件…...

关于文件分片的介绍和应用

文件分片&#xff0c;顾名思义&#xff0c;就是将一个大文件分割成多个小的文件块&#xff08;chunk&#xff09;。每个文件块都是原始文件的一部分&#xff0c;并可以通过特定的方式将这些小文件块重新组装成原始文件。 1. 基本原理: 文件分片从底层来看&#xff0c;主要是对…...

tauri2项目动态添加 Sidecar可行性方案(运行时配置)

tauri2官方文档&#xff1a;Embedding External Binaries | Tauri Tauri 的 Sidecar 功能允许你将外部二进制文件&#xff08;External Binaries&#xff09;与你的 Tauri 应用程序捆绑在一起&#xff0c;并在运行时调用它们。根据你提供的链接和 Tauri 的文档&#xff0c;以下…...

20倍云台球机是一种高性能的监控设备

20倍云台球机是一种高性能的监控设备&#xff0c;其主要特点包括20倍光学变焦能力和云台旋转功能。以下是对20倍云台球机的详细分析&#xff1a; 一、主要特点 20倍光学变焦 &#xff1a; 摄像机镜头能够在保持图像清晰度的前提下&#xff0c;将监控目标放大20倍。 这一功能…...

利用html制作简历网页和求职信息网页

前言 大家好&#xff0c;我是maybe。今天下午初步学习了html的基础知识。做了两个小网页&#xff0c;一个网页是简历网页&#xff0c;一个网页是求职信息填写网页。跟大家分享一波~ 说明:我不打算上传图片。所以如果有朋友按照我的代码运行网页&#xff0c;会出现一个没有图片…...

三:操作系统线程管理之线程概念

揭秘幕后英雄&#xff1a;理解线程的奥秘与优势 在当今软件应用的世界里&#xff0c;流畅的用户体验、高效的后台处理以及强大的并发能力已经成为必备的要求。你有没有想过&#xff0c;一个看似简单的程序是如何在同一时间处理多个任务的&#xff1f;或者为什么一个复杂的应用…...

学习黑客Active Directory 入门指南(一)

Active Directory 入门指南&#xff08;一&#xff09;&#xff1a;初识AD与核心概念 &#x1f511; 大家好&#xff01;欢迎来到 “Active Directory 入门指南” 系列的第一篇。在本系列中&#xff0c;我们将逐步深入探索 Windows Active Directory (AD)——微软推出的目录服…...

单列集合——ArrayList,LinkedList,迭代器的底层原理和源码

ArrayList 底层原理 空参构造创建集合时候&#xff0c;创建长度为零的数组名叫elementData&#xff0c;还有个成员变量size用来记录元素的个数&#xff0c;第一次空参&#xff0c;size长度是0。 添加第一个元素时&#xff0c;底层创建新的长度尾10的数组&#xff0c;数组中默认…...

C++模板进阶使用技巧

非类型模板参数缺省模板参数类模板特化全特化偏特化 模板的分离编译 我们在前面已经初识了 模板并且在各种数据结构的实现中&#xff0c;熟练掌握了模板的一些基础功能。 至于为什么是基础功能&#xff0c;因为模板还有一些进阶的功能&#xff0c;像非类型模板参数&#xff0c…...

jqGrid冻结列错行问题,将冻结表格(悬浮表格)与 正常表格进行高度同步

在使用jqGrid时&#xff0c;如果你遇到了冻结列&#xff08;也称为冻结表格或悬浮表格&#xff09;与正常表格高度不同步的问题&#xff0c;这通常是由于CSS样式或者布局管理不当所导致的。下面是一些解决此问题的步骤和建议&#xff1a; 1. 确保CSS样式正确 首先&#xff0c;确…...

Milvus(25):搜索迭代器、使用分区密钥

1 搜索迭代器 ANN Search 对单次查询可调用的实体数量有最大限制&#xff0c;因此仅使用基本 ANN Search 可能无法满足大规模检索的需求。对于 topK 超过 16,384 的 ANN Search 请求&#xff0c;建议考虑使用 SearchIterator。 1.1 概述 Search 请求返回搜索结果&#xff0c;而…...

深入探索PointNet:点云处理的革命性算法

深入探索PointNet&#xff1a;点云处理的革命性算法 在计算机视觉和三维图形处理领域&#xff0c;点云数据的处理一直是一个极具挑战性的任务。点云数据由一系列三维坐标点组成&#xff0c;这些点通常来源于激光雷达&#xff08;LiDAR&#xff09;、三维扫描仪等设备。与图像数…...

四品种交易策略

策略概述 策略思路: 交易品种:同时交易四个品种,每个品种使用总资金的10%。 合约选择:使用连续合约(data0)发出交易信号,实际交易 主力合约(data1)和下一个主力合约(data2)。 资金管理:总资金用A_CurrentEquity表示,交易手数据此计算。 止损执行:盘中达到止损…...

NC61 两数之和【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 排序双指针3.1 散列 四、参考代码4.1 排序双指针4.2 散列 零、原题链接 NC61 两数之和 一、题目描述 二、测试用例 三、解题思路 3.1 排序双指针 基本思路&#xff1a;   先对序列进行排序&#xff0c;然后…...

电子电路:什么是电流离散性特征?

关于电荷的量子化,即电荷的最小单位是电子的电荷量e。在宏观电路中,由于电子数量极大,电流看起来是连续的。但在微观层面,比如纳米器件或单电子晶体管中,单个电子的移动就会引起可观测的离散电流。 还要提到散粒噪声,这是电流离散性的表现之一。当电流非常小时,例如在二…...

如何完美安装GPU版本的torch、torchvision----解决torch安装慢 无法安装 需要翻墙安装 安装的是GPU版本但无法使用的GPU的错误

声明&#xff1a; 本视频灵感来自b站 如何解决所述问题 如何安装对应版本的torch、torchvison 进入pytorch官网 进入历史版本 这里以cuda11.8 torch 2.1.0为例演示 根据文档找到要安装的torch、torchvison版本 但不是使用命令行直接安装 命令行直接安装可能面临着 安装慢…...

Fine-Tuning Llama2 with LoRA

Fine-Tuning Llama2 with LoRA 1. What is LoRA?2. How does LoRA work?3. Applying LoRA to Llama2 models4. LoRA finetuning recipe in torchtune5. Trading off memory and model performance with LoRAModel ArgumentsReferences https://docs.pytorch.org/torchtune/ma…...

Compose笔记(二十五)--Brush

这一节主要了解一下Compose中Brush,在Jetpack Compose里&#xff0c;Brush是一个重要的 API&#xff0c;它用于定义填充图形的颜色渐变或图案&#xff0c;能够为界面元素添加丰富的视觉效果。简单总结如下: 1 常见场景 填充形状&#xff08;圆形、矩形等&#xff09; 创建渐变…...

访问共享打印机提示错误0x00000709多种解决方法(支持win10和win11)

在日常办公和生活中&#xff0c;打印机是不可或缺的重要设备。然而&#xff0c;有时在连接打印机的过程中&#xff0c;我们可能会遇到错误代码0x00000709的提示。有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的&#xff0c;针对访问共享打…...

【Mini 型 http 服务器】—— int get_line(int sock, char *buf, int size);

作用&#xff1a; 逐行读取并返回读取的内容长度&#xff0c;取出读取的内容保存在 buf 数组中 输入&#xff1a; int sock&#xff1a;需要读取的 sock 套接字 char *buf&#xff1a;用于记录保存读取的内容 int size&#xff1a;buf 的大小 返回值&#xff1a; -1 表示 读取…...

Window远程连接Linux桌面版

Window远程连接Linux桌面版 卸载RealVNC Server 一、确认是否安装了 VNC Server 先检查是否已安装&#xff1a; which vncserver # 或 dpkg -l | grep vnc # 或 rpm -qa | grep vnc二、在 Debian / Ubuntu 上卸载&#xff08;.deb 安装&#xff09; 1. 卸载 RealVNC Serve…...

计算机系统---TPU(张量处理单元)

一、定义与定位 TPU&#xff08;Tensor Processing Unit&#xff09; 是由Google开发的专用AI加速芯片&#xff0c;专为深度学习中的张量运算&#xff08;如矩阵乘法、卷积&#xff09;设计&#xff0c;属于ASIC&#xff08;专用集成电路&#xff09;范畴。其核心目标是在算力…...

5.18 day24

知识点回顾&#xff1a; 元组可迭代对象os模块 作业&#xff1a;对自己电脑的不同文件夹利用今天学到的知识操作下&#xff0c;理解下os路径。 元组 元组的特点&#xff1a; 有序&#xff0c;可以重复&#xff0c;这一点和列表一样 元组中的元素不能修改&#xff0c;这一点…...

Filament引擎(一) ——渲染框架设计

filament是谷歌开源的一个基于物理渲染(PBR)的轻量级、高性能的实时渲染框架&#xff0c;其框架架构设计并不复杂&#xff0c;后端RHI的设计也比较简单。重点其实在于项目中材质、光照模型背后的方程式和理论&#xff0c;以及对它们的实现。相关的信息&#xff0c;可以参考官方…...

区间带边权并查集,XY4060泄露的测试点

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 码蹄集 二、解题报告 1、思路分析 关于带边权并查集&#xff1a;并查集&…...

虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系

虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系1. 什么是Pawn&#xff1f;2. 什么是胶囊体&#xff08;Capsule Component&#xff09;&#xff1f;3. Pawn与胶囊体的具体关系&#xff08;1&#x…...

USB学习【11】STM32 USB初始化过程详解

1.USB HAL库里面的结构体 为了管理USB&#xff0c;HAL首先构建了一下几个结构体 1.1 USBD设备结构体 USB用到的全局变量&#xff0c;保存了USB生命周期的全部信息。 1.2 USBD PCD底层硬件操作相关结构体 1.3 USB 配置结构体 USB速度、PHY接口类型、端点0参数等 1.4 端点配置…...

Estimation(估算):业务分析师的“不确定性对抗术”

在变化中给出最靠谱的预判。 当面对项目排期模糊、资源计划混乱、老板催问“多久能搞定”的时候&#xff0c; 我总会说&#xff1a;“别着急&#xff0c;我们先做个 Estimation。” 因为&#xff0c;没有靠谱的估算&#xff0c;承诺和资源分配就是空中楼阁。 什么是 Estimati…...

【MyBatis-11】MyBatis批处理:提升数据操作性能的利器

1. 批处理概述 在数据密集型应用中&#xff0c;频繁的单条数据操作会导致严重的性能问题。MyBatis批处理技术通过将多个SQL语句组合成一个批处理单元&#xff0c;显著减少与数据库的交互次数&#xff0c;从而大幅提升数据操作效率。 1.1 为什么需要批处理&#xff1f; 减少网…...

MyBatis 核心技术详解:从连接池到多表查询

一、MyBatis 连接池&#xff1a;提升数据库访问效率 1. 连接池的本质与作用 本质&#xff1a;连接池是存储数据库连接的 “容器”&#xff0c;负责创建、管理连接&#xff0c;避免频繁创建 / 销毁连接带来的性能损耗。核心问题&#xff1a;若无连接池&#xff0c;每次执行 SQ…...

2025.05.17得物机考笔试真题第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 魔法浮石逃生记 问题描述 LYA 不慎闯入了一片禁忌湖泊,现在她需要踩着湖中的魔法浮石迅速逃离。湖中有 n n n...

时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?

随着物联网、金融交易、在线游戏等场景对实时数据处理需求的增长&#xff0c;市场上涌现出多种专门针对实时数据处理的数据库解决方案。然而&#xff0c;面对时序数据库、实时数据库和实时数据仓库这三种看似相似的技术&#xff0c;许多技术决策者常常感到困惑&#xff1a;它们…...

构建一个“湖仓一体”(Data Lakehouse)系统

构建一个“湖仓一体”&#xff08;Data Lakehouse&#xff09;系统&#xff0c;关键是融合数据湖&#xff08;Data Lake&#xff09;的灵活性与数据仓库&#xff08;Data Warehouse&#xff09;的高性能分析能力。下面是构建流程的核心步骤&#xff1a; 一、总体架构设计 分层架…...

【C++】尾置返回类型(Trailing Return Type)总结

尾置返回类型&#xff08;Trailing Return Type&#xff09;是 C11 引入的一种函数返回类型声明方式&#xff0c;允许将返回类型放在函数参数列表之后&#xff0c;使用 -> 符号指定。这种语法在模板编程、Lambda 表达式和复杂类型推导时特别有用。 1. 基本语法 auto func(参…...

[人月神话_6] 另外一面 | 一页流程图 | 没有银弹

另外一面&#xff08;The other face&#xff09; 计算机程序是人类向机器传递信息的一种方式&#xff0c;为了确保意图能够被无言的机器准确理解&#xff0c;程序采用了严格的语法和精确的定义。&#xff08;这就需要 我们有严密的逻辑思维&#xff09; 然而&#xff0c;除了…...

GO学习指南

GO学习指南 主题一 go语言基础知识讲解 go语言面向对象编程 go语言接口详解 go语言协程 后续内容请大家持续关注&#xff0c;每月一主题&#xff0c;让各位读者能零基础、零成本学习go语言...

【机器学习】逻辑回归

文章目录 一、逻辑回归概述1.定义2.原理 二、Sigmoid函数三、梯度上升算法四、实验1.代码2.运行结果3.实验小结 一、逻辑回归概述 1.定义 Logistic回归是一种广义线性回归&#xff08;generalized linear model&#xff09;&#xff0c;因此与多重线性回归分析有很多相同之处…...

Nginx配置与命令

Nginx 配置文件基础 全局块&#xff08;Main Context&#xff09;&#xff1a;配置影响全局的参数&#xff0c;如用户、进程数、日志路径等。 user nginx; # 运行Nginx的用户和组 worker_processes auto; # 工作进程数&#xff08;通常设为CPU核心数&…...

测试--测试分类 (白盒 黑盒 单元 集成)

一、按照测试目标分类&#xff08;测试目的是什么&#xff09; 主类别细分说明1. 界面测试UI内容完整性、一致性、准确性、友好性&#xff0c;布局排版合理性&#xff0c;控件可用性等2. 功能测试检查软件功能是否符合需求说明书&#xff0c;常用黑盒方法&#xff1a;边界值、…...

工作流介绍

了解工作流对大模型进行高质量工作的辅助意义学会复现吴恩达博士的翻译工作流开源项目了解构成大模型工作流系统的关键元素学会搭建一个更复杂的业务场景工作流 一、为什么我们需要工作流&#xff1f; ❓ 什么样的职场打工人是合格的打工人&#xff1f; 反应快&#xff0c;理…...

学习黑客Active Directory 入门指南(五)

Active Directory 入门指南&#xff08;五&#xff09;&#xff1a;管理工具、安全基础与学习路径 &#x1f6e0;️&#x1f6e1;️&#x1f4da; 大家好&#xff01;欢迎来到 “Active Directory 入门指南” 系列的最后一篇。在前四篇中&#xff0c;我们已经全面探讨了Active…...

【第三篇】 SpringBoot项目中的属性配置

简介 SpringBoot支持多种配置文件格式&#xff0c;包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法&#xff0c;以及在程序中如何对配置文件中的属性进行读取。文章内容若存在错误或需改进的地方&#xff0c;欢迎大家指正&#…...