青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理
青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理
- 一、状态管理
- 二、Vuex
- 1. 安装Vuex
- 2. 创建Vuex Store
- 3. 在Vue应用中使用Store
- 4. 在组件中使用状态
- 5. 模块化Store
- 三、Vuex应用示例
- 1. 创建项目
- 2. 安装Vuex
- 3. 设置Vuex Store
- 4. 在主项目中使用Store
- 5. 创建组件
- 6. 更新App.vue
- 7. 运行项目
- 四、pinia
- 五、Pinia 与 Vuex 的区别
- 六、Pinia yiet
- 步骤 1: 创建项目
- 步骤 2: 安装依赖
- 步骤 3: 设置Pinia
- 步骤 4: 创建组件
- 步骤 5: 在主应用中使用组件
- 步骤 6: 运行项目
- 步骤 7: 构建项目
- 总结
课题摘要:本文介绍了Vue中的状态管理,重点讲解了Vuex和Pinia两种状态管理库。Vuex是Vue的官方状态管理库,适用于大型应用,它采用集中式存储管理应用状态,并确保状态以可预测的方式变化。文章详细阐述了Vuex的安装、创建Store、在Vue应用中使用Store、以及模块化Store的步骤。Pinia作为Vue 3的新一代状态管理库,以其轻量级、直观的API、TypeScript支持和模块化设计等特点,提供了一种更简洁的状态管理方案。文章还提供了使用Vuex和Pinia的示例代码,展示了如何在Vue项目中实现状态管理和组件间的状态共享。
一、状态管理
状态管理是软件工程中的一个概念,它涉及到在应用程序的不同部分之间跟踪、管理和同步状态(即数据)。在现代的前端开发中,尤其是在单页应用(SPA)中,状态管理尤为重要,因为它们通常需要处理复杂的用户界面和大量的交互。
以下是状态管理的一些关键点:
-
状态(State):
- 状态是应用在任何给定时间点的信息集合,它可以包括用户界面的状态、应用程序的配置、用户数据等。
-
状态的不可变性(Immutability):
- 在状态管理中,状态被视为不可变的,这意味着状态一旦被设置,就不能被直接改变。任何状态的改变都通过产生新的状态来实现。
-
状态的集中管理(Centralized State Management):
- 集中管理状态意味着所有的状态都被存储在一个单一的地方(如Vuex、Redux等状态管理库),这有助于避免状态分散在组件树中,使得状态的跟踪和调试变得更加困难。
-
状态的可预测性(Predictability):
- 状态管理的目标之一是使状态的变化可预测。这意味着状态的变化应该是可追踪和可重现的。
-
状态的响应性(Reactivity):
- 在Vue等框架中,状态管理通常与响应式系统结合使用,这意味着当状态发生变化时,依赖这些状态的UI会自动更新。
-
状态管理库:
- 有许多库和框架提供了状态管理的解决方案,如Redux(与React一起使用)、Vuex(与Vue一起使用)、MobX等。
-
状态的生命周期(State Lifecycle):
- 状态管理还涉及到状态的生命周期,包括状态的初始化、更新、删除等。
-
副作用(Side Effects):
- 在状态管理中,副作用指的是那些不直接影响状态,但可能会引起外部变化的操作,如API调用、路由跳转等。这些副作用通常需要被管理,以确保状态的一致性和应用的稳定性。
-
模块化(Modularization):
- 状态管理通常支持模块化,允许开发者将状态分割成更小的部分,每个部分管理自己的状态,这有助于保持代码的可维护性和可扩展性。
状态管理是构建大型、复杂前端应用的关键,它有助于提高应用的可维护性、可测试性和可扩展性。
二、Vuex
在Vue项目中实现状态管理,通常会使用Vuex作为状态管理库,尤其是对于大型应用。Vuex是Vue的官方状态管理库,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。以下是在Vue项目中使用Vuex实现状态管理的基本步骤:
1. 安装Vuex
如果你的项目中还没有安装Vuex,可以通过npm或yarn来安装:
npm install vuex@next --save # 对于Vue 3项目
2. 创建Vuex Store
在项目的 src
目录下创建一个 store
目录,并在其中创建 index.js
文件:
// src/store/index.js
import { createStore } from 'vuex';const store = createStore({state() {return {count: 0};},getters: {doubleCount(state) {return state.count * 2;}},mutations: {increment(state) {state.count++;}},actions: {increment(context) {context.commit('increment');}}
});export default store;
3. 在Vue应用中使用Store
在 src/main.js
中引入并使用store:
// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import store from './store';const app = createApp(App);app.use(store);app.mount('#app');
4. 在组件中使用状态
在Vue组件中,你可以通过mapState
、mapGetters
、mapMutations
和mapActions
辅助函数来使用store中的状态和方法:
<template><div><p>{{ count }}</p><p>{{ doubleCount }}</p><button @click="increment">Increment</button></div>
</template><script>
import { mapState, mapGetters, mapActions } from 'vuex';export default {computed: {...mapState(['count']),...mapGetters(['doubleCount'])},methods: {...mapActions(['increment'])}
};
</script>
5. 模块化Store
对于大型应用,你可能需要将store分割成模块。在Vuex中,你可以使用模块来逻辑划分和管理状态:
// src/store/modules/counter.js
export default {namespaced: true,state() {return {count: 0};},getters: {doubleCount(state) {return state.count * 2;}},mutations: {increment(state) {state.count++;}},actions: {increment(context) {context.commit('increment');}}
};// src/store/index.js
import { createStore } from 'vuex';
import counter from './modules/counter';const store = createStore({modules: {counter}
});export default store;
在组件中使用模块化的状态和方法:
<script>
import { mapState, mapGetters, mapActions } from 'vuex';export default {computed: {...mapState('counter', ['count']),...mapGetters('counter', ['doubleCount'])},methods: {...mapActions('counter', ['increment'])}
};
</script>
通过这些步骤,你可以在Vue项目中实现状态管理,使得状态的维护和更新变得更加集中和有序。
三、Vuex应用示例
以下是一个使用Vue 3和Vite创建的项目的示例,它展示了如何使用Vue的组合式API(Composition API)和Vuex 4来实现状态管理。
1. 创建项目
假设你已经使用Vite创建了一个Vue 3项目:
npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm install
2. 安装Vuex
在项目中安装Vuex:
npm install vuex@next
3. 设置Vuex Store
在 src
目录下创建一个 store
目录,并在其中创建 index.js
文件:
// src/store/index.js
import { createStore } from 'vuex';export default createStore({state() {return {count: 0,todos: [{ id: 1, text: 'Learn Vue', done: true },{ id: 2, text: 'Use Vuex', done: false },],};},getters: {doneTodos(state) {return state.todos.filter(todo => todo.done);},},mutations: {increment(state) {state.count++;},addTodo(state, todo) {state.todos.push(todo);},toggleTodo(state, todoId) {const todo = state.todos.find(todo => todo.id === todoId);if (todo) {todo.done = !todo.done;}},},actions: {increment(context) {context.commit('increment');},addTodo(context, todo) {context.commit('addTodo', todo);},toggleTodo(context, todoId) {context.commit('toggleTodo', todoId);},},
});
4. 在主项目中使用Store
在 src/main.js
中引入并使用store:
// src/main.js
import { createApp } from 'vue';
import App from './App.vue';
import store from './store';const app = createApp(App);app.use(store);app.mount('#app');
5. 创建组件
在 src
目录下创建 components
目录,并在其中创建 Counter.vue
和 Todos.vue
组件:
<!-- src/components/Counter.vue -->
<template><div><button @click="decrement">-</button><span>{{ count }}</span><button @click="increment">+</button></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const count = computed(() => store.state.count);function increment() {store.dispatch('increment');}function decrement() {store.commit('increment'); // 注意:这里直接提交mutation,因为不需要进行异步操作}return {count,increment,decrement,};},
};
</script>
<!-- src/components/Todos.vue -->
<template><div><ul><li v-for="todo in todos" :key="todo.id"><input type="checkbox" v-model="todo.done" @change="toggleTodo(todo.id)" /><span>{{ todo.text }}</span></li></ul><button @click="addTodo">Add Todo</button><div>Done Todos: {{ doneTodos.length }}</div></div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {setup() {const store = useStore();const todos = computed(() => store.state.todos);const doneTodos = computed(() => store.getters.doneTodos);function addTodo() {store.dispatch('addTodo', { id: Date.now(), text: 'New Todo', done: false });}function toggleTodo(todoId) {store.dispatch('toggleTodo', todoId);}return {todos,doneTodos,addTodo,toggleTodo,};},
};
</script>
6. 更新App.vue
在 src/App.vue
中使用这些组件:
<template><div id="app"><Counter /><Todos /></div>
</template><script>
import Counter from './components/Counter.vue';
import Todos from './components/Todos.vue';export default {name: 'App',components: {Counter,Todos,},
};
</script>
7. 运行项目
现在,你可以运行项目来查看状态管理的效果:
npm run dev
访问 http://localhost:3000
来查看应用,你将看到一个计数器和一个待办事项列表,它们的状态都由Vuex管理。
这个示例展示了如何在Vue 3项目中使用Vuex和组合式API来实现状态管理。你可以根据需要添加更多的状态和方法来扩展这个项目。
四、pinia
Pinia 是 Vue.js 的新一代状态管理库,专为 Vue 3 设计,并且也兼容 Vue 2。以下是 Pinia 的一些核心特点和简介:
-
轻量级:Pinia 是一个轻量级的状态管理库,体积非常小(大约1kb),几乎不会增加项目体积。
-
直观的 API:Pinia 的 API 设计简洁直观,类似于定义组件的方式定义 store,易于上手。
-
TypeScript 支持:Pinia 提供了完整的 TypeScript 支持,使得在编写状态管理代码时能够获得更好的类型安全性和开发体验。
-
去除 Mutations:与 Vuex 不同,Pinia 没有 mutations,只有 state、getters 和 actions,actions 支持同步和异步操作。
-
Vue Devtools 支持:Pinia 支持 Vue Devtools,提供更好的开发体验,可以在开发工具中查看和调试状态变化。
-
模块化设计:Pinia 鼓励将状态分割成多个 store,每个 store 都可以独立管理和维护,支持模块化和命名空间。
-
插件系统:Pinia 提供了一个插件系统,可以通过插件扩展功能,例如状态持久化、日志记录等。
-
状态持久化:通过 pinia-plugin-persistedstate 插件,可以轻松实现状态的持久化,将状态保存到浏览器的 localStorage 或 sessionStorage 中。
-
服务端渲染支持:Pinia 支持服务端渲染,可以在服务端渲染的 Vue 应用中方便地使用状态管理。
-
兼容性:虽然专为 Vue 3 设计,但也可以在 Vue 2 项目中使用(通过 pinia-compat)。
Pinia 的设计理念是将状态管理的复杂性降到最低,同时保持灵活性和可扩展性,使其成为 Vue 3 环境下的理想选择。
五、Pinia 与 Vuex 的区别
Pinia 作为 Vue 3 的新一代状态管理库,相较于 Vuex 有以下几个主要优势:
-
轻量级:Pinia 的体积非常小,压缩后大约只有 1KB,这使得它在性能上更加高效,尤其是在打包体积上更为精简。
-
简化的 API:Pinia 去除了 Vuex 中的
mutations
,只保留了state
、getters
和actions
,这简化了状态管理的流程,减少了样板代码。 -
组合式 API 风格:Pinia 与 Vue 3 的 Composition API 无缝集成,提供了更灵活的使用方式,使得状态的组织和复用更加简洁明了。
-
模块化设计:Pinia 提倡每个
Store
作为独立实体,自然支持模块化,不再需要像 Vuex 中通过modules
配置来组织不同状态域,这简化了大型应用的状态管理架构。 -
TypeScript 支持:Pinia 从一开始就对 TypeScript 提供了良好的支持,它的 API 设计考虑了 TypeScript 的使用,使得类型推断更加准确,减少了手动编写类型定义的需求。
-
性能优化:得益于其轻量级的设计和对 Vue 3 的深度优化,Pinia 在处理响应式数据时更为高效,特别是在使用 Composition API 时,性能表现得更加优异。
-
易用性提升:Pinia 的 API 设计围绕简洁和直观展开,降低了学习曲线,使得状态管理变得更加平易近人,即便是初学者也能快速上手并有效管理应用状态。
-
版本适应性:Pinia 专为 Vue 3 量身打造,充分利用 Vue 3 的最新特性和优化,为 Vue 3 应用提供最适配的状态管理方案。
-
支持插件功能:Pinia 支持插件来扩展自身功能,如状态持久化、日志记录等。
-
服务端渲染支持:Pinia 支持服务端渲染,可以在服务端渲染的 Vue 应用中方便地使用状态管理。
这些优势使得 Pinia 成为现代 Vue 开发的理想状态管理工具,尤其是在 Vue 3 项目中。
六、Pinia yiet
创建一个使用Vite、TypeScript、Vue 3组合式API(Composition API)和Pinia进行状态管理的完整项目示例,可以按照以下步骤进行:
步骤 1: 创建项目
首先,确保你已经安装了Node.js和npm/yarn。然后,使用Vite创建一个新的Vue 3项目,并选择TypeScript模板:
# 使用npm
npm create vite@latest my-vue-app --template vue-ts# 或者使用yarn
yarn create vite my-vue-app --template vue-ts
进入项目目录:
cd my-vue-app
步骤 2: 安装依赖
安装Pinia:
npm install pinia
# 或者
yarn add pinia
步骤 3: 设置Pinia
在src
目录下创建一个stores
目录,并在其中创建一个Pinia store文件,例如useCounterStore.ts
:
// src/stores/counter.ts
import { defineStore } from 'pinia';export const useCounterStore = defineStore('counter', {state: () => ({count: 0,}),actions: {increment() {this.count++;},decrement() {this.count--;},},
});
步骤 4: 创建组件
在src
目录下创建一个新的组件,比如Counter.vue
,并使用组合式API和Pinia store:
<template><div><button @click="decrement">-</button><span>{{ count }}</span><button @click="increment">+</button></div>
</template><script lang="ts">
import { defineComponent } from 'vue';
import { useCounterStore } from '@/stores/counter';export default defineComponent({name: 'Counter',setup() {const counterStore = useCounterStore();return {count: counterStore.count,increment: counterStore.increment,decrement: counterStore.decrement,};},
});
</script>
步骤 5: 在主应用中使用组件
编辑src/App.vue
文件,引入并使用Counter
组件:
<template><div id="app"><Counter /></div>
</template><script lang="ts">
import { defineComponent } from 'vue';
import Counter from './components/Counter.vue';export default defineComponent({name: 'App',components: {Counter,},
});
</script>
步骤 6: 运行项目
使用以下命令启动开发服务器:
npm run dev
# 或者
yarn dev
现在,你应该能够访问http://localhost:3000
看到你的应用。
步骤 7: 构建项目
当你准备好将项目部署到生产环境时,运行以下命令:
npm run build
# 或者
yarn build
这将构建你的应用,并生成可以在生产环境中部署的文件。
总结
这个简单的项目示例展示了如何使用Vite、Vue 3、TypeScript和Pinia来创建一个基本的Web应用。你可以根据需要添加更多的组件、路由、API调用等。Pinia 提供了一种简洁直观的方式来管理应用状态,使得代码更加模块化和可重用。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理
青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理 一、状态管理二、Vuex1. 安装Vuex2. 创建Vuex Store3. 在Vue应用中使用Store4. 在组件中使用状态5. 模块化Store 三、Vuex应用示例1. 创建项目2. 安装Vuex3. 设置Vuex Store4. 在主项目中使用Store5. 创建组件6. 更新…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
在 Linux 内核的网络子系统中,netif_start_queue 函数扮演着至关重要的角色。这个函数的主要功能是启动(或启用)网络接口的发送队列,标志着网络接口已经准备好开始发送数据包。本文将深入探讨 netif_start_queue 函数的用途、工作原理以及在实际网络驱动代码中的应用。 函…...
![](https://i-blog.csdnimg.cn/direct/c1bc13f4546a4725acb935f1b1768119.gif#pic_center)
数据结构之顺序结构二叉树(超详解)
文章目录 1 树1.1 树的概念与结构1.2 相关术语1.3 树的表示与运用场景1.3.1 运用场景 2. 二叉树2.1 概念与结构2.1.1 满二叉树2.1.2 完全二叉树 3. 顺序结构二叉树3.1 堆的引入3.1.1 概念与结构 3.2 功能实现3.2.1 堆的结构3.2.2 初始化、销毁 3.3 堆的插入数据3.3.1 向上调整算…...
![](https://i-blog.csdnimg.cn/img_convert/dd43d6ed37cf2a38e9c06c996f597fb4.png)
acwing_5722_十滴水
acwing_5722_十滴水 下面这篇大佬的题解属实是把指针用明白了,可以好好理解一下: 原题解连接:AcWing 5722. 一个简单模拟实现 - AcWing map/unordered_map的用法:见收藏夹 #include<iostream> #include<unordered_map> #incl…...
![](https://www.ngui.cc/images/no-images.jpg)
acwing-3194 最大的矩形
acwing-3194 最大的矩形 这个题程序设计课上有讲过, 平民算法,时间复杂度在 O ( n 2 ) O(n^2) O(n2) // // Created by HUAWEI on 2024/10/28. // #include<iostream>using namespace std;const int Max_size 1e4 20;int N; int h[Max_size];…...
![](https://i-blog.csdnimg.cn/direct/213c983dd7a64acfaba6ab91dc598a6f.png)
UnityDemo-TheBrave-制作笔记
这是我跟着b站up主MStudio的视频学习制作的,大体上没有去做一些更新的东西,这里只是一个总的总结。在文章的最后,我会放上可以游玩该游戏的链接和exe可执行文件,不过没有对游戏内容进行什么加工,只有基本的功能实现罢了…...
![](https://i-blog.csdnimg.cn/direct/dd1118e4d45b4ddfaf7a45b94466c025.png)
玩转 JMeter:Random Order Controller让测试“乱”出花样
嘿,各位性能测试的小伙伴们!今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller(随机顺序控制器),它就像是性能测试这场大戏里的“魔术棒”,轻轻一挥,就能让测试场景变得千变…...
![](https://i-blog.csdnimg.cn/direct/f4a58cb3093040dd9b7329e477ed6be3.png)
VTK知识学习(33)-交互问题2
1、前言 主要是针对前面有过实现不了交互的情况进行说明,经过一些尝试和分析调用API,总算实现RenderWindowControl函数回调正常串接,当然这个移动处理事件的效果目前也没有确认。 2、使用 vtkImageReslice reslice vtkImageReslice.New();p…...
![](https://www.ngui.cc/images/no-images.jpg)
Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性
Centos9-SSH免密登录配置-修改22端口-关闭密码登录 生成秘钥对将公钥信息存进authorized_keys测试登录查询访问记录、比对指纹更换22访问端口关闭账号密码登录生成秘钥对 生成密钥对,指定 备注 和 文件目录命令执行后,默认两次回车,不设置秘钥使用密码ssh-keygen -t rsa -b …...
![](https://www.ngui.cc/images/no-images.jpg)
SqlServer: An expression services limit has been reached异常处理
在工作中遇到一个问题,因为项目很老,代码很不规范,出现一种场景: 查询所有客户(5w条以上),然后根据客户Id,再去其他表查询,代码中是直接将customerId拼接到sql中去查询,形成的sql如…...
![](https://www.ngui.cc/images/no-images.jpg)
CentOS下安装Docker
Docker 必须要在Linux环境下才能运行,windows下运行也是安装虚拟机后才能下载安装运行,菜鸟教程 下载安装 linux 依次执行下边步骤 更新 yum yum update 卸载旧的Docker yum remove docker docker-client docker-client-latest docker-common doc…...
![](https://i-blog.csdnimg.cn/direct/4df607816fe2408e97e0a4efe2b4cdec.png)
WPF控件Grid的布局和C1FlexGrid的多选应用
使用 Grid.Column和Grid.Row布局,将多个C1FlexGrid布局其中,使用各种事件来达到所需效果,点击复选框可以加载数据到列表,移除列表的数据,自动取消复选框等 移除复选框的要注意!!!&am…...
![](https://i-blog.csdnimg.cn/direct/3bacdce6b54747b4bf6f6ffb214abf55.png)
Jenkins-持续集成、交付、构建、部署、测试
Jenkins-持续集成、交付、构建、部署、测试 一: Jenkins 介绍1> Jenkins 概念2> Jenkins 目的3> Jenkins 特性4> Jenkins 作用 二:Jenkins 版本三:DevOps流程简述1> 持续集成(Continuous Integration,CI࿰…...
![](https://i-blog.csdnimg.cn/direct/2f836415d51346f68d9ad4a0171f01ea.png)
高级第一次作业
1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。 2、写一个 shel1 脚本,实现批量添加 20个用户,用户名为user01-20,密码为user 后面跟5个随机字符。 3、编写个shel 脚本将/usr/local 日录下大于10M的文件转移到…...
![](https://i-blog.csdnimg.cn/img_convert/f9a1935ffc86640a875918802f2a2c43.png)
Copula算法原理和R语言股市收益率相依性可视化分析
阅读全文:http://tecdat.cn/?p6193 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它(点击文…...
![](https://i-blog.csdnimg.cn/img_convert/a10c8a00e2253736a1ab329baaf95229.png)
反弹SHELL不回显带外正反向连接防火墙出入站文件下载
什么是反弹shell 正向连接正向连接(Forward Connection):正向连接是一种常见的网络通信模式,其中客户端主动发起连接到服务器或目标系统。正向连接通常用于客户端-服务器通信,客户端主动请求服务或资源,例如…...
![](https://i-blog.csdnimg.cn/direct/b30aa9c696a24ab3871f0eee9705ba1f.jpeg)
后盾人JS--JS值类型使用
章节介绍与类型判断 看看构造函数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…...
![](https://i-blog.csdnimg.cn/direct/5ef19f817e6a4835b0f88642a6dc7941.png)
1月11日
[WUSTCTF2020]CV Maker 可以看到有个注册页面,尝试注册一个用户登进去看看 进来后第一眼就看到文件上传,尝试上传,上传php后返回了 文件上传后端检测exif_imagetype()函数 他提示不是image,也就是需要我们构造一个文件头为图像类…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习】Pytorch:加载自定义数据集
本教程将使用 flower_photos 数据集演示如何在 PyTorch 中加载和导入自定义数据集。该数据集包含不同花种的图像,每种花的图像存储在以花名命名的子文件夹中。我们将深入讲解每个函数和对象的使用方法,使读者能够推广应用到其他数据集任务中。 flower_ph…...
![](https://i-blog.csdnimg.cn/direct/153ede1dc6ba4ab282d0cb5d48e199b4.png)
最近在盘gitlab.0.先review了一下docker
# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...
![](https://i-blog.csdnimg.cn/direct/b35517725e474b499bb9564b339e6d81.png)
OA项目登录
导入依赖,下面的依赖是在这次OA登录中用到的 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sprin…...
![](https://www.ngui.cc/images/no-images.jpg)
verilogHDL仿真详解
前言 Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充) 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns,精度为1ps, //编译…...
![](https://www.ngui.cc/images/no-images.jpg)
基于http协议的天气爬虫
该系统将基于目前比较流行的网络爬虫技术, 对网站上的天气数据进行查询分析, 最终使客户能够通过简单的操作, 快速, 准确的获取目标天气数据。主要包括两部分的功能, 第一部分是天气数据查询, 包括时间段数…...
![](https://i-blog.csdnimg.cn/direct/68516156c1124c369b72436f76871e53.png)
_STM32关于CPU超频的参考_HAL
MCU: STM32F407VET6 官方最高稳定频率:168MHz 工具:STM32CubeMX 本篇仅仅只是提供超频(默认指的是主频)的简单方法,并未涉及STM32超频极限等问题。原理很简单,通过设置锁相环的倍频系数达到不同的频率&am…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序
一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样,它计算图中的最短路径。然而,Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面,Floy…...
![](https://i-blog.csdnimg.cn/direct/3de8db9ea31a4bdc86f90fb09a12046b.png)
AWS云计算概览(自用留存,整理中)
目录 一、云概念概览 (1)云计算简介 (2)云计算6大优势 (3)web服务 (4)AWS云采用框架(AWS CAF) 二、云经济学 & 账单 (1)定…...
![](https://www.ngui.cc/images/no-images.jpg)
1. npm 常用命令详解
npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...
![](https://www.ngui.cc/images/no-images.jpg)
js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值
问: 现在tabData.value 接收到了后端返回的数据, [{text:人力,percentage:‘90’},{text:物品,percentage:‘20’},{text:物理,percentage:‘50’},{text:服务,percentageÿ…...
![](https://i-blog.csdnimg.cn/direct/4bd28d2b5fda4f74b5f641bb762847d8.png)
【Spring】@Size 无法拦截null的原因
问题复现 在构建 Web 服务时,我们一般都会对一个 HTTP 请求的 Body 内容进行校验,例如我们来看这样一个案例及对应代码。当开发一个学籍管理系统时,我们会提供了一个 API 接口去添加学生的相关信息,其对象定义参考下面的代码&…...
![](https://i-blog.csdnimg.cn/direct/8d884a2520134de6b0ad9e5c15d14e6e.png)
【Block总结】掩码窗口自注意力 (M-WSA)
摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…...
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
哪里学网站开发/关键词优化推广排名
类和对象 1. 什么叫类:类是一种数据结构,就好比一个模型,该模型用来表述一类食物(食物即数据和动作的结合体),用它来生产真是的物体(实例) 2. 什么叫对象:睁开眼…...
![](/images/no-images.jpg)
网站推广流程是/新媒体运营哪个培训机构好
[b]冒泡排序[/b](Bubble Sort,台灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒…...
![](/images/no-images.jpg)
企业品牌策划方案/seo关键词优化报价
html中实现文本与标签居中的方法发布时间:2020-08-31 09:44:08来源:亿速云阅读:66作者:小新这篇文章主要介绍html中实现文本与标签居中的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小…...
![](https://img-blog.csdnimg.cn/img_convert/77b0d6f72250115d0b60bd2dd3b70f42.gif)
付费下载网站源码/广东短视频seo营销
一点PHP博客分享关于mysql中的执行计划explain的作用,对于博主而已这个东西可以神器啊,能让你清晰的看到mysql他的执行效果,从而可以让你更进一步的去调优。首先和大伙讲讲MySQL的基础结构及查询基本原理。在绝大部分的数据库软件中ÿ…...
![](/images/no-images.jpg)
网页界面设计需要首先做市场研究/长沙专业seo优化公司
众所周知,es新增了promise,避免了回调地狱。而es7的async/await更加完美的将异步实现为同步代码。 更多关于promise,async/await,推荐:阮一峰 在vue项目中,http请求我们更多用到的是axios,如果…...
![](/images/no-images.jpg)
一级a做片免费网站/晚上免费b站软件
将要通讯的主机ip加入host cat >> /etc/hosts <<EOF 10.10.10.101 10.10.10.102 10.10.10.103 EOF在101主机生成秘钥对 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa -q发送秘钥 for ((host_id101;host_id<103;host_id));dossh-copy-id 10.10.10.$host_id; do…...