【vue】vue-router_ vue3路由管理器
代码获取
vue-router_ vue3路由管理器
⼀、基本介绍
1. 单⻚应⽤程序介绍
1.1 概念
单⻚应⽤程序:SPA(Single Page Application)是指所有的功能都在⼀个HTML⻚⾯上实现
1.2 具体⽰例
单⻚应⽤⽹站: ⽹易云⾳乐 https://music.163.com/
多⻚应⽤⽹站: 京东 https://jd.com/
1.3 单⻚应⽤ VS 多⻚应⽤
开发分类 | 实现方式 | 页面性能 | 开发效率 | 用户体验 | 学习成本 | 首屏加载 | SEO |
---|---|---|---|---|---|---|---|
单页 | 一个 Html 页面 | 按需更新 性能高 | 高 | 非常好 | 高 | 慢 | 差 |
多页 | 多个 Html 页面 | 整页更新 性能低 | 中等 | 一般 | 中等 | 快 | 优 |
单⻚应⽤类⽹站:系统类⽹站 / 内部⽹站 / ⽂档类⽹站 / 移动端站点
多⻚应⽤类⽹站:公司官⽹ / 电商类⽹站
1.4 总结
- 什么是单⻚⾯应⽤程序?
答:所有的功能都在⼀个html⻚⾯上
- 单⻚⾯应⽤优缺点?
答:1、优点:体验好、开发效率⾼
2、缺点:⾸屏加载相对较慢、不利于SEO
- 单⻚应⽤场景?
答: 系统类⽹站 / 内部⽹站 / ⽂档类⽹站 / 移动端站点
2. 路由介绍
2.1 路由的介绍
⽣活中的路由:设备和ip的映射关系
Vue中的路由:路径和组件的映射关系
单⻚⾯应⽤程序, 之所以开发效率⾼, 性能好, ⽤⼾体验好, 最⼤的原因就是: ⻚⾯按需更新
⽐如当点击【发现⾳乐】和【关注】时, 只是局部更新内容, 对于头部是不更新的,要按需更新, ⾸先就需要明确: 访问路径 和 组件的对应关系!访问路径和⻚⾯的对应关系如何确定呢? 路由
2.2 如何实现路由
借助 vue3 的好基友 vue-router, 当修改地址栏路径时,切换显⽰的组件
2.3 介绍vue-router
官网
2.4 总结
- 什么是路由?
答:⼀种映射(对应)关系
- Vue中的路由是什么
答:路径和⻚⾯的映射关系
- vue-router是什么?
答:vue的官⽅路由
3. 组件存放⽬录
3.1 组件分类
⼈为的把 .vue ⽂件分为两类, 仅仅是为了便于理解和管理, 但⼆者本质⽆区别
-
⻚⾯组件: 配合路由切换, 展⽰整个⻚⾯, 不复⽤的•
-
复⽤组件: ⽤于组装⻚⾯组件, 可复⽤的
3.2 存放⽬录
- ⻚⾯组件 - ⻚⾯展⽰ - 配合路由使⽤
放置在 src/views ⽬录下
- 复⽤组件 - ⽤于组装⻚⾯组件
放置在 src/components ⽬录下
3.3 总结
- 组件分为哪两类?分类的⽬的?
答:⻚⾯组件、复⽤组件; 便于管理
- 不同分类的组件应该放在什么⽂件夹?作⽤分别是什么?
答: 1、 ⻚⾯组件 -> src/views -> 配合路由切换
2、 复⽤组件 -> src/components -> 组装⻚⾯组件
⼆、基本使⽤和模块封装
1. 基本使⽤(4+2)
1.1 四个固定步骤
如下4个固定的步骤
- 下载 VueRouter 模块
yarn add vue-router
- 导⼊相关函数
import { createRouter, createWebHashHistory } from 'vue-router'
- 创建路由实例
const router = createRouter({// 哈希模式, 路径带 #history: createWebHashHistory(),routes: [// 路由表规则, 即 path 与 component 的对应关系]
})
- 注册, 将路由实例注册到应⽤中, 让规则⽣效
app.use(router)
当完以上 4 步之后, 就可以看到浏览器地址栏中的路径变成了 /#/的形式。
表⽰项⽬的路由已经被 Vue-Router 管理了
1.2 两个核⼼步骤
- views⽬录下, 创建需要的⻚⾯组件,并配置路由规则
views/Find.vue
<script setup></script><template><div class="find"><p>发现⾳乐</p><p>发现⾳乐</p><p>发现⾳乐...</p></div>
</template><style scoped></style>
views/My.vue
<script setup></script><template><div class="my"><p>我的⾳乐</p><p>我的⾳乐</p><p>我的⾳乐...</p></div>
</template><style scoped></style>
views/Friend.vue
<script setup></script><template><div class="friend"><p>朋友</p><p>朋友</p><p>朋友...</p></div>
</template><style scoped></style>
main.js
// 导⼊两个相关函数
// createRouter(): 创建路由实例
// createWebHashHistory(): 创建哈希模式的路由, 路径带 #
import { createRouter, createWebHashHistory } from 'vue-router'// 导⼊ 3 个⻚⾯组件
import Find from '@/views/Find.vue'
import Friend from '@/views/Friend.vue'
import My from '@/views/My.vue'// 创建路由实例
const router = createRouter({history: createWebHashHistory(),routes: [{path: '/find',component: Find}, {path: '/my',component: My}, {path: '/friend',component: Friend}]
})// 注册
app.use(router)
- 给路由出⼝(路径匹配的组件, 显⽰的位置)
App.vue
<script setup></script>
<template><!-- 路由出⼝ --><router-view />
</template>
1.3 路由运作原理
当浏览器url改变时, 匹配路由表数组中的path值,如果命中了,
则把相应的component渲染到 <router-view /> 的位置;否则显⽰空⽩
1.4 总结
- 如何实现 路径改变,对应组件 切换,应该使⽤哪个插件?
答: vue-router
- vue-router的使⽤步骤是什么(4+2)?
答:下载->导⼊->创建->注册-> 配置规则表->给出⼝
2. 抽离封装路由模块
2.1 问题
路由配置代码都写在 main.js 中合适吗?显然不合适, 会让 main.js 代码变得臃肿
2.2 ⽬标
将路由模块抽离出来。 好处:利于管理和维护
2.3 代码⽰例
新建 router/index.js
// 添加路由功能配置
import { createRouter, createWebHashHistory } from "vue-router";
// 注意: 脚⼿架环境下 @ 代指 src ⽬录,可以⽤于快速引⼊组件
// 导入 3 个页面组件
import Find from "@/views/Find.vue";
import Friend from "@/views/Friend.vue";
import My from "@/views/My.vue";// 创建路由实例
const router = createRouter({history: createWebHashHistory(),routes: [{path: "/find",component: Find},{path: "/friend",component: Friend},{path: "/my",component: My}]
})
// 导出路由实例
export default router;
main.js
import App from "./App.vue";
import { createApp } from "vue";
import router from "./router/index.js";// 创建应用实例
const app = createApp(App);// 注册
app.use(router);app.mount("#app");
2.4 总结
- 封装抽离路由模块的好处是什么?
答:便于管理、维护
- 以后如何快速引⼊组件?
答:可以借助 @ 代指 src ⽬录
三、声明式导航与传参
1. 声明式导航
1.1 问题
要⼿动输⼊地址,切换⻚⾯,不合理吧?能否点击链接进⾏跳转
1.2 解决⽅案
vue-router 提供了⼀个全局组件 router-link, ⽤于点击跳转,需添加 to 属性指定路径 ,
其本质还是 a 标签
语法: <router-link to=“path值”> xxx </router-link>
<!-- App.vue --><script setup></script>
<template><nav><router-link to="/find">发现⾳乐</router-link><router-link to="/my">我的⾳乐</router-link><router-link to="/friend">朋友</router-link></nav><!-- ⼀级路由出⼝ --><router-view />
</template>
<style>
nav a {color: #333;text-decoration: none;
}nav a:nth-child(2) {margin: 0 80px;
}nav a.router-link-active {background: red;color: #fff;
}
</style>
1.3 ⾃带⾼亮类名
使⽤router-link跳转后,我们发现。当前点击的链接默认加了两个class的值router-link-exact-active 和 router-link-active
,
我们可以给任意⼀个class属性添加⾼亮样式即可实现功能
1.4 总结
- router-link是什么?
答: 声明式导航 , 点击跳转路由的
- router-link怎么⽤?
答:添加 to 属性
- router-link的好处是什么?
答:⾃带 激活类名 , ⽅便实现⾼亮样式
2. 两个类名
当我们使⽤跳转时,⾃动给当前导航加了两个类名
2.1 router-link-active
模糊匹配
只要是以/find开头的路径都可以和 to="/find"匹配到
2.2 router-link-exact-active
精确匹配
to=“/find” 仅可以匹配 /find
2.3 总结
- router-link 会⾃动给当前导航添加两个类名,有什么区别呢?
答:1、 router-link-active : 模糊匹配
2、 router-link-exact-active : 精确匹配
3. 声明式导航-传查询参
3.1 ⽬标
在跳转路由时,进⾏传参, ⽐如:现在我们在发现⾳乐⻚, 点击去朋友⻚, 并携带id, ⽅便后续查询详情,
如何传参?
3.2 跳转传参
我们可以通过两种⽅式,在跳转的时候把所需要的参数传到其他⻚⾯中
-
查询参数传参
-
动态路由传参
3.3 查询参数传参
传参(有2种格式)
a. 字符串
<router-link to="/path?参数名=值"> xxx </router-link>
b. 对象
<router-link :to="{path: '/path',query: {参数名: 值...}}"> xxx </router-link>
3.4 代码⽰例
App.vue
<!-- 字符串 --><router-link to="/friend?id=10086"> 朋友 </router-link><!-- 对象 --><router-link :to="{path: '/friend',query: {id: 10086}}"> 朋友 </router-link>
Friend.vue
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
console.log(route.query.id)
</script>
3.5 总结
- 路由查询参数如何传递?
答:字符串: “/path?参数名=值” 或 对象: path+query
- 查询参如何接收?
答: route.query.参数名
4. 声明式导航-传动态参
4.1 动态路由传参⽅式
-
配置动态路由
-
动态路由后⾯的参数可以随便起名,但要有语义
routes: [{path: "/find/:id",component: Find}
]
- 传递参数(有2种格式)
a. 字符串
<router-link to="/path/具体值"> xxx </router-link>
b. 对象
<router-link :to="{name: 'Friend',params: {参数名: 具体值}}"> xxx </router-link>
- 接收参数
<script setup>import { useRoute } from 'vue-router'const route = useRoute()// 获取动态路由参数console.log(route.params)
</script>
4.2 总结
- 路由动态参数如何传递?
答:1、 /:参数名 先占位
2、 字符串: “/path/具体值” 或 对象: name+params
- 查询参如何接收?
答: route.params.参数名
5. 查询参 VS 动态参
5.1 对⽐
- 查询参数传参 (⽐较适合传多个参数)
a. 跳转:to=“/path?参数名=值&参数名2=值”
b. 获取:route.query.参数名
- 动态路由传参 (优雅简洁,传单个参数⽐较⽅便)
a. 配置动态路由:path: “/path/:参数名”
b. 跳转:to=“/path/参数值”
c. 获取:route.params.参数名
- 注意:动态路由也可以传多个参数,但⼀般只传⼀个
四、更多配置
1. 重定向
1.1 问题
⽹⻚打开时, url 默认是 / 路径, 未匹配到组件时, 会出现空⽩
1.2 解决⽅案
重定向: 匹配 / 后, ⽐如强制跳转 /find 路径, 避免⻚⾯空⽩
1.3 语法
{ path: 匹配路径, redirect: 要重定向的路径 }
1.4 代码⽰例
// 访问 / , ⾃动跳转到 /find
{ path: '/', redirect: '/find'},
2. 404
2.1 作⽤
当路径找不到匹配时,给个提⽰⻚⾯
2.2 位置
404的路由,虽然配置在任何⼀个位置都可以,但⼀般都配置在其他路由规则的最后⾯
2.3 语法
path: “*” (任意路径) ‒ 前⾯不匹配就命中最后这个
2.4 代码
views/404.vue
<script setup></script><template><div><h3>404</h3><p> 你访问的⻚⾯去了⽉球 </p><router-link to="/"> 去⾸⻚ </router-link></div>
</template>
router/index.js
// 添加路由功能配置
import { createRouter, createWebHashHistory } from "vue-router";import _404 from "@/views/404.vue";
// 创建路由实例
const router = createRouter({history: createWebHashHistory(),routes: [...,{path: "/:pathMatch(.*)*",component: _404}]
})
// 导出路由实例
export default router;
3. 模式
3.1 问题
路由的路径看起来不好看, 有#, 能否切成真正路径形式?
hash路由(默认) 例如: http://localhost:5173/#/find
history路由(常⽤) 例如: http://localhost:8080/find (上线需要服务器端⽀持,开发环境Vite给规避掉了history模式的问题)
3.2 语法
// 添加路由功能配置
import { createRouter, createWebHashHistory,createWebHistory } from "vue-router";// 创建路由实例
const router = createRouter({// history: createWebHashHistory(), // hash 模式 URL 地址带 # 号history: createWebHistory(), // history 模式 URL 地址不带 # 号routes: [...]
})
// 导出路由实例
export default router;
五、编程式导航与传参
1. 编程式导航
1.1 问题
如何主动做路由跳转?⽐如:登录成功⾃动跳转⾄⾸⻚
1.2 解决⽅案
编程式导航: ⽤JS代码来进⾏跳转
1.3 语法
路由实例 router.push(路径)
<script setup>import { useRouter } from 'vue-router'const router = useRouter()router.push(字符串)router.push(对象)
</script>
1.4 代码⽰例
Find.vue
<script setup>
import { useRouter } from 'vue-router';
import { onMounted } from 'vue';
// 组件挂载后, 延迟 2 秒, 自动跳转到 find
const router = useRouter();
onMounted(() =>{setTimeout(() => {// 1. 通过 router.push() 方法跳转到 findrouter.push('/find');// 2. 对象// router.push({ path: '/find' });// 3. 命名路由// router.push({ name: 'find' });}, 2000);
});
</script><template><div class="friend"><p>朋友</p><p>朋友</p><p>朋友...</p></div>
</template><style scoped></style>
1.5 总结
- 编程式导航如何做路由跳转?
答: router.push(字符串/对象)
2. 编程式导航传参
2.1 问题
编程式导航如何传参呢?
2.2 语法
与 声明式导航<router-link> 传参和接参⽅式完全⼀样,既⽀持字符串, 也⽀持对象
router.push('/path?参数名=值')router.push({path: '/path',query:{参数名: 值
...
}
})router.push({name: '路由名称',params: {参数名: 值}
})
2.3 代码⽰例
2.3.1 查询参数
router/index.js
createRouter({routes: [{ path: '/friend', component: Friend }]
})
Find.vue
router.push('/friend?fid=110')router.push({path: '/friend',query: {fid: 101}
})
Friend.vue
<script setup>import {useRoute} from 'vue-router'const route = useRoute()console.log(route.query.fid)
</script>
2.3.2 动态参数
router/index.js
createRouter({routes: [{// 命名路由name: 'Friend',path: '/friend/:id',component: Friend}]
})
Find.vue
router.push({name: 'Friend',params: {id: 101}
})
Friend.vue
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
console.log(route.params.id)
</script>
2.4 总结
- 编程式导航如何传参和接参?
答:同声明式导航完全⼀样, router.push(字符串/对象)
六、嵌套与守卫
1. 嵌套
1.1 问题
能否在⼀个路由⻚⾯中,再进⾏⼀套路由的切换呢?⽐如 ⽹易云⾳乐 的发现⾳乐⻚
1.2 效果图

1.3 步骤
-
创建3个⼆级路由⻚⾯组件(Recommend、Ranking、SongList)
-
路由表数组中, 在相应的⼀级路由规则中, 配置 children 规则
-
在相应的⼀级路由⻚⾯组件中, 给⼆级路由 出⼝和导航链接
注意:
1、 ⼆级路由的 path 推荐 不加 /
2、 做路由跳转的时候要写 完整路径(⽗路径+当前路径)
3、 防⽌⼆级路由⻚⾯空⽩, 给默认显⽰的⼀级路由 添加重定向
1.4 代码⽰例
views/Recommend.vue
<script setup></script><template><div class="recommend"><h5>推荐</h5><h5>推荐</h5><h5>推荐</h5></div>
</template><style scoped></style>
views/Ranking.vue
<script setup></script><template><div class="ranking"><h5>排⾏榜</h5><h5>排⾏榜</h5><h5>排⾏榜</h5></div>
</template><style scoped></style>
views/SongList.vue
<script setup></script><template><div class="songlist"><h5>歌单</h5><h5>歌单</h5><h5>歌单</h5></div>
</template><style scoped></style>
router/index.js
// 添加路由功能配置
import { createRouter, createWebHashHistory, createWebHistory } from "vue-router";
// 注意: 脚⼿架环境下 @ 代指 src ⽬录,可以⽤于快速引⼊组件
// 导入 3 个页面组件
import Find from "@/views/Find.vue";
import Friend from "@/views/Friend.vue";
import My from "@/views/My.vue";
import _404 from "@/views/404.vue";
import Recommend from "@/views/Recommend.vue";
import SongList from "@/views/SongList.vue";
import Ranking from "@/views/Ranking.vue";
// 创建路由实例
const router = createRouter({// history: createWebHashHistory(), // hash 模式 URL 地址带 # 号history: createWebHistory(), // history 模式 URL 地址不带 # 号routes: [{path: "/",redirect: "/find"},{path: "/find",component: Find,// 重定向, 防⽌⼆级路由空⽩redirect: "/find/recommend",// 嵌套路由children: [{path: "recommend",component: Recommend},{path: "ranking",component: Ranking},{path: "songList",component: SongList},]},{path: "/friend",component: Friend},{path: "/my",component: My},{path: "/:pathMatch(.*)*",component: _404}]
})
// 导出路由实例
export default router;
views/Find.vue
<script setup></script>
<template><div class="router2"><nav><router-link to="/find/recommend">推荐</router-link><router-link to="/find/ranking">排行榜</router-link><router-link to="/find/songList">歌单</router-link></nav><!-- 二级路由 --><router-view /></div></template>
<style scoped>.router2 {padding: 20px;background: #5177c7;
}nav a {color: #333;text-decoration: none;
}nav a:nth-child(2) {margin: 0 80px;
}nav a.router-link-active {background: red;color: #fff;
}
</style>
1.5 总结
- 如何配置路由嵌套?
答:配 children ,给路由 出⼝<router-view/>
- 需要注意什么?
答:⼆级 path 不加 / ; 跳转要写完成路径; 避免空⽩、要添加重定向
2. 路由守卫
2.1 问题
能否在访问某个路由前, 添加权限判断? ⽐如 我的⾳乐⻚, 只有登录了才可以访问
2.2 解决⽅案
路由(导航)全局前置守卫: 每个路由在跳转前都会触发回调函数
router.beforeEach((to, from) => {// to: 即将要进⼊的路由// from: 当前正要离开的路由// false 取消导航(不发⽣跳转)return false// 正常放⾏、正常跳转return undefined | true// 重定向到指定的路由return '/路径'
})
2.3 代码⽰例
// ⽤来模拟是否登录
const isLogin = true
router.beforeEach((to, from) => {// 如果没有登录, 并且还要去 我的⾳乐⻚if (!isLogin && to.path === '/my') {// 进⾏提⽰alert('请先登录')// 不放⾏(不跳转)return false}// 正常放⾏return true
})
2.4 总结
- 如何在访问路由前添加权限校验?
答: 全局前置守卫 router.beforeEach((to, from) => { })
- 参数 to、from 和 回调函数返回值 都表⽰什么?
to:即将进⼊的路由
from:正要离开的路由
回调函数返回值:return false: 不放⾏return true/undefined: 放⾏return 路径: 重定向到指定路由
nav a.router-link-active {
background: red;
color: #fff;
}
#### 1.5 总结1. 如何配置路由嵌套? 答:配 children ,给路由 出⼝\<router-view/>2. 需要注意什么? 答:⼆级 path 不加 / ; 跳转要写完成路径; 避免空⽩、要添加重定向### 2. 路由守卫#### 2.1 问题能否在访问某个路由前, 添加权限判断? ⽐如 我的⾳乐⻚, 只有登录了才可以访问#### 2.2 解决⽅案路由(导航)全局前置守卫: 每个路由在跳转前都会触发回调函数```js
router.beforeEach((to, from) => {// to: 即将要进⼊的路由// from: 当前正要离开的路由// false 取消导航(不发⽣跳转)return false// 正常放⾏、正常跳转return undefined | true// 重定向到指定的路由return '/路径'
})
2.3 代码⽰例
// ⽤来模拟是否登录
const isLogin = true
router.beforeEach((to, from) => {// 如果没有登录, 并且还要去 我的⾳乐⻚if (!isLogin && to.path === '/my') {// 进⾏提⽰alert('请先登录')// 不放⾏(不跳转)return false}// 正常放⾏return true
})
2.4 总结
- 如何在访问路由前添加权限校验?
答: 全局前置守卫 router.beforeEach((to, from) => { })
- 参数 to、from 和 回调函数返回值 都表⽰什么?
to:即将进⼊的路由
from:正要离开的路由
回调函数返回值:return false: 不放⾏return true/undefined: 放⾏return 路径: 重定向到指定路由
相关文章:

【vue】vue-router_ vue3路由管理器
代码获取 vue-router_ vue3路由管理器 ⼀、基本介绍 1. 单⻚应⽤程序介绍 1.1 概念 单⻚应⽤程序:SPA(Single Page Application)是指所有的功能都在⼀个HTML⻚⾯上实现 1.2 具体⽰例 单⻚应⽤⽹站: ⽹易云⾳乐 https://music.163.com/ 多⻚应⽤⽹…...

昇思MindSpore进阶教程--Diffusion扩散模型(上)
大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 正文 关于扩散模型(Diffusi…...
Nginx:proxy_pass指令
proxy_pass 指令在 Nginx 中是实现反向代理和负载均衡的重要指令。 一. 反向代理 在反向代理的场景下,proxy_pass 指令用于将接收到的请求转发给另一个后端服务器。后端服务器地址可以是 IP 地址加端口、域名加端口、或者一个完整的 URL。 注意事项 proxy_pass …...

【AI学习】Mamba学习(十):HiPPO总结
前面用五篇文章陆续学了HiPPO框架。 这里再进行一下总结。 总结 HiPPO,高阶多项式投影,high-order polynomial projection operators 为了解决从序列数据中建模和学习的问题,尤其是长序列,十万甚至百万长度的序列,使…...

AI编程新纪元:Cursor与V0引领的技术变革
#1024程序员节 | 征文# AI编程新纪元:Cursor与V0引领的技术变革 作为一名SAP业务顾问,虽然我懂一些ABAP开发,但是我对于前后端开发是完全不懂的,我一直对前后端开发怀有浓厚兴趣,总想着自己能开发出一些好玩的东西&…...

python——类
问:小编为什么突然开始发python?难道C语言你不行了? 废话少说,让我们进入python中的类的学习!! (一)基本知识 (1)掌握类的概念 1、类的定义: 即…...

走廊泼水节——求维持最小生成树的完全图的最小边权和
题目 思考 代码 #include <bits/stdc.h> using namespace std; const int N 6010; const int M N; int p[N], sz[N]; struct edge{int a;int b;int c;bool operator < (const edge& v) const{return c < v.c;} }e[M]; int find(int x) {if(p[x] ! x) p[x] …...

LC:动态规划-买卖股票
文章目录 121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II714. 买卖股票的最佳时机含手续费309. 买卖股票的最佳时机含冷冻期 121. 买卖股票的最佳时机 链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/ 使用贪心,…...
FLINK SQL 任务参数
在Flink SQL任务中,参数配置对于任务的性能和稳定性至关重要。以下是对运行时参数、优化器参数和表参数的详细解析: 一、运行时参数 运行时参数主要影响Flink作业在执行过程中的行为。以下是一些关键的运行时参数: 并行度(Para…...

HCIP——以太网交换安全(四)DHCP Snooping
目录 一、DHCP Snooping的知识点 二、DHCP Snooping实验拓扑 三、总结 一、DHCP Snooping的知识点 1.1、DHCP snooping 概述: ①DHCP Snooping使能DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务端获取IP地址。DHCP服务器记录DHCP客户端IP…...
k8s worker 节点关机 sts 管理的 pod 无法迁移
背景 1.28.2 版本 k8s 中的一台 worker 节点内存异常,需要关机换内存,正好可以测试一下 pod 的迁移。 发现 deployment 管理的 pod 是能够重新创建飘到其他节点上的,但是 statefulset 管理的 pod 一直处于 Terminating 状态无法迁移&#…...

排序04 视频播放建模
视频播放时长 用p拟合y,t是用户的实际观看时长,用y和p熵作为损失函数,使得p接近y。 输出z,对z做sigmoid变换。 exp(z)可以视为对播放时长的预估 视频完播 回归方法 二元分类方法 调整:预估完播率不能直接使用...

【常见大模型API调用】第三篇:清华智谱--智谱AI
1. 公司及模型介绍 智谱AI是一家由清华大学计算机系知识工程实验室的技术成果转化而来的AI知识智能技术开发商。智谱AI致力于打造新一代认知智能大模型,专注于做大模型的中国创新。 2024年1月16日,智谱AI在首届技术开放日上发布了新一代基座大模型GLM-…...

LayerSkip – Meta推出加速大型语言模型推理过程的技术
我们提出的 LayerSkip 是一种端到端的解决方案,可加快大型语言模型(LLM)的推理速度。 首先,在训练过程中,我们采用了层间丢弃技术(layer dropout),早期层间丢弃率较低,后期层间丢弃率较高。 其次…...

环境变量与本地变量(Linux)
引言 在当今的计算机技术领域,Linux操作系统以其稳定性和灵活性而广受欢迎。它不仅是服务器和开发者的首选平台,也是探索计算机科学和系统编程的宝库。在这个强大的操作系统中,环境变量与本地变量扮演着至关重要的角色,它们是管理…...

【完-网络安全】Windows防火墙及出入站规则
文章目录 防火墙入站和出站的区别域网络、专用网络、公用网络的区别 防火墙 防火墙默认状态一般是出站允许,入站阻止。 入站和出站的区别 入站就是别人来访问我们的主机,也就是正向shell的操作 出站就是反向shell,主机需要主动连接kali&am…...

Vue学习记录之十七 css中样式穿透及新特征介绍
一、scoped原理 在vue页面的css中,有一个设置为scoped,使用以后dom的节点会出现下面的规则。其实我们打完包就是一个html页面,如果不做处理,将会导致css混乱。 给HTML的DOM节点加一个不重复data属性(形如:data-v-123)来表示他的唯一性在每句css选择器的末尾(编译后的生成的…...

Nature 正刊丨海洋涡旋中常见的地下热浪和寒潮
01摘要 由于全球变暖,极端海洋温度事件变得越来越普遍,造成了灾难性的生态和社会经济影响1,2,3,4,5。尽管基于卫星观测对表层海洋热浪(MHW)和海洋寒潮(MCS)进行了广泛的研究6,7,但我们对这些极…...
代码随想录算法训练营第六十二天| prim算法,kruskal算法
训练营六十二天打卡,图论比较难,坚持下来胜利就在眼前! 53.卡码网【寻宝】 题目链接 解题过程 没做过类似的题目,跟着答案敲了一遍最小生成树 可以使用 prim算法 也可以使用 kruskal算法计算出来。prim算法 是从节点的角度 采用…...

Newstar_week1_week2_wp
week1 wp crypto 一眼秒了 n费马分解再rsa flag: import libnum import gmpy2 from Crypto.Util.number import * p 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...