【Vue】最新Vue3实战教程:全面掌握响应式数据、v-on事件、v-if/v-show条件渲染及更多核心技术
文章目录
- 为什么选择Vue3?
- 更多实用工具
- 快速上手Vue3
- 安装与配置
- 项目结构
- 响应式数据处理
- 创建响应式数据
- 使用`ref`
- 使用`reactive`
- 计算属性与侦听器
- 计算属性
- 侦听器
- 事件绑定与处理(v-on)
- 基本用法
- 简写语法
- 事件修饰符
- 绑定多个事件
- 条件渲染(v-if与v-show)
- v-if
- v-show
- v-if与v-show的区别
- 列表渲染(v-for)
- 基本用法
- 使用对象遍历
- 在循环中使用索引
- 动态添加与删除列表项
- 属性绑定(v-bind)
- 基本用法
- 简写语法
- 绑定多个属性
- 绑定类与样式
- 实战项目:构建一个Todo应用
- 项目结构
- TodoItem组件
- TodoList组件
- App组件
- 优化与最佳实践
- 使用组合式API(Composition API)
- 按需引入
- 代码分割与懒加载
- 使用`v-bind`避免不必要的DOM更新
- 优化响应式数据结构
- 避免不必要的计算属性和侦听器
- 使用Vue DevTools调试
为什么选择Vue3?
在开始之前,让我们先了解一下为何选择Vue3作为你的前端框架。Vue3不仅在性能上有显著提升,尤其是在大规模应用上的表现更为出色,同时它还引入了诸如组合式API(Composition API)等新特性,使得代码更加简洁、可维护。与其他框架如React和Angular相比,Vue3在学习曲线和灵活性方面表现优异,适合多种开发场景。
更多实用工具
【OpenAI】获取OpenAI API Key的多种方式全攻略:从入门到精通,再到详解教程!!
【VScode】VSCode中的智能编程利器,全面揭秘ChatMoss & ChatGPT中文版
体验最新的GPT系列模型!支持Open API调用、自定义助手、文件上传等强大功能,助您提升工作效率!点击链接体验:CodeMoss & ChatGPT-AI中文版
快速上手Vue3
安装与配置
要开始使用Vue3,首先需要安装Node.js和npm。安装完成后,可以通过以下命令创建一个Vue3项目:
npm install -g @vue/cli
vue create my-vue3-app
在选择配置时,建议选择默认配置或根据项目需求自定义配置。创建完成后,进入项目目录并启动开发服务器:
cd my-vue3-app
npm run serve
浏览器打开http://localhost:8080,你将看到Vue3默认的欢迎页面。
项目结构
一个典型的Vue3项目结构如下:
my-vue3-app
├── node_modules
├── public
│ └── index.html
├── src
│ ├── assets
│ ├── components
│ ├── App.vue
│ └── main.js
├── package.json
└── vue.config.js
- public/index.html:应用的入口HTML文件。
- src/main.js:Vue应用的入口文件,负责创建和挂载Vue实例。
- src/App.vue:根组件。
- src/components/:存放各个组件的目录。
响应式数据处理
响应式数据是Vue的核心特性之一,使得数据变化能够自动反映到视图中。Vue3使用Proxy机制实现响应式,比Vue2的Object.defineProperty更加高效和强大。
创建响应式数据
在Vue3中,可以使用ref
和reactive
来创建响应式数据。
使用ref
ref
用于创建基本数据类型的响应式引用。
<template><div><p>计数:{{ count }}</p><button @click="increment">增加</button></div>
</template><script>
import { ref } from 'vue'export default {setup() {const count = ref(0)const increment = () => {count.value++}return { count, increment }}
}
</script>
使用reactive
reactive
用于创建对象或数组的响应式状态。
<template><div><p>用户姓名:{{ user.name }}</p><p>用户年龄:{{ user.age }}</p><button @click="increaseAge">增龄</button></div>
</template><script>
import { reactive } from 'vue'export default {setup() {const user = reactive({name: '张三',age: 25})const increaseAge = () => {user.age++}return { user, increaseAge }}
}
</script>
计算属性与侦听器
除了简单的响应式数据,Vue3还提供了计算属性(computed)和侦听器(watch)来处理更复杂的逻辑。
计算属性
计算属性基于响应式数据自动计算并缓存结果,只有相关依赖变化时才重新计算。
<template><div><p>原始计数:{{ count }}</p><p>双倍计数:{{ doubleCount }}</p><button @click="increment">增加</button></div>
</template><script>
import { ref, computed } from 'vue'export default {setup() {const count = ref(0)const doubleCount = computed(() => count.value * 2)const increment = () => {count.value++}return { count, doubleCount, increment }}
}
</script>
侦听器
侦听器用于监听响应式数据的变化,并在数据变化时执行相应的操作。
<template><div><input v-model="name" placeholder="请输入姓名" /><p>姓名:{{ name }}</p></div>
</template><script>
import { ref, watch } from 'vue'export default {setup() {const name = ref('')watch(name, (newName, oldName) => {console.log(`姓名从 ${oldName} 修改为 ${newName}`)})return { name }}
}
</script>
事件绑定与处理(v-on)
在Vue中,事件处理是前端开发中不可或缺的一部分。v-on
指令用于绑定事件监听器,简化了传统的JavaScript事件处理方式。
基本用法
使用v-on
绑定一个点击事件:
<template><button v-on:click="handleClick">点击我</button>
</template><script>
export default {methods: {handleClick() {alert('按钮被点击了!')}}
}
</script>
简写语法
Vue提供了@
作为v-on
的简写:
<template><button @click="handleClick">点击我</button>
</template>
事件修饰符
Vue提供了多种事件修饰符,用于简化事件处理逻辑,如.prevent
防止默认行为、.stop
阻止事件传播等。
<template><form @submit.prevent="handleSubmit"><input v-model="inputText" /><button type="submit">提交</button></form>
</template><script>
export default {data() {return {inputText: ''}},methods: {handleSubmit() {console.log('表单提交,输入内容:', this.inputText)}}
}
</script>
绑定多个事件
可以在一个元素上绑定多个事件监听器:
<template><div><input @focus="handleFocus" @blur="handleBlur" /></div>
</template><script>
export default {methods: {handleFocus() {console.log('输入框获得焦点')},handleBlur() {console.log('输入框失去焦点')}}
}
</script>
条件渲染(v-if与v-show)
在前端开发中,根据不同的条件展示不同的内容是常见的需求。Vue提供了v-if
和v-show
两种指令来实现条件渲染。
v-if
v-if
根据条件真伪来决定是否渲染DOM元素,如果条件为假,DOM元素不会存在于页面中。
<template><div><button @click="toggle">切换显示</button><p v-if="isVisible">现在你看到我了!</p></div>
</template><script>
import { ref } from 'vue'export default {setup() {const isVisible = ref(true)const toggle = () => {isVisible.value = !isVisible.value}return { isVisible, toggle }}
}
</script>
v-show
v-show
通过CSS的display
属性来控制元素的显示与隐藏,而不涉及DOM的插入与移除。
<template><div><button @click="toggle">切换显示</button><p v-show="isVisible">现在你看到我了!</p></div>
</template><script>
import { ref } from 'vue'export default {setup() {const isVisible = ref(true)const toggle = () => {isVisible.value = !isVisible.value}return { isVisible, toggle }}
}
</script>
v-if与v-show的区别
- 渲染机制:
v-if
是真正的条件渲染,能根据条件动态地添加或移除DOM元素;v-show
始终会渲染DOM元素,只是通过CSS控制其显示与隐藏。 - 性能考虑:
v-if
在条件切换频繁时性能较低,因为每次条件变化都会触发DOM的添加与移除;v-show
适用于频繁切换显示状态的场景,因为隐藏与显示仅涉及CSS样式的改变。 - 初始渲染:
v-if
在初始渲染时会根据条件决定是否渲染;v-show
则会始终渲染元素。
列表渲染(v-for)
在需要展示动态列表数据时,v-for
指令可以高效地遍历数组或对象,并生成对应的DOM元素。
基本用法
遍历数组展示列表项:
<template><ul><li v-for="(item, index) in items" :key="index">{{ item }}</li></ul>
</template><script>
import { ref } from 'vue'export default {setup() {const items = ref(['苹果', '香蕉', '橙子'])return { items }}
}
</script>
使用对象遍历
遍历对象的键值对:
<template><ul><li v-for="(value, key) in user" :key="key">{{ key }}: {{ value }}</li></ul>
</template><script>
import { reactive } from 'vue'export default {setup() {const user = reactive({name: '李四',age: 30,occupation: '工程师'})return { user }}
}
</script>
在循环中使用索引
有时候需要在循环中使用当前项的索引:
<template><ol><li v-for="(item, index) in items" :key="index">{{ index + 1 }}. {{ item }}</li></ol>
</template><script>
import { ref } from 'vue'export default {setup() {const items = ref(['学习Vue3', '编写实战项目', '掌握核心技术'])return { items }}
}
</script>
动态添加与删除列表项
结合事件处理,实现动态管理列表:
<template><div><input v-model="newItem" placeholder="添加新项" /><button @click="addItem">添加</button><ul><li v-for="(item, index) in items" :key="index">{{ item }}<button @click="removeItem(index)">删除</button></li></ul></div>
</template><script>
import { ref } from 'vue'export default {setup() {const items = ref(['学习Vue3', '编写实战项目', '掌握核心技术'])const newItem = ref('')const addItem = () => {if (newItem.value.trim()) {items.value.push(newItem.value.trim())newItem.value = ''}}const removeItem = (index) => {items.value.splice(index, 1)}return { items, newItem, addItem, removeItem }}
}
</script>
属性绑定(v-bind)
v-bind
指令用于动态绑定HTML属性,简化了动态属性赋值的过程。
基本用法
动态绑定元素的href
属性:
<template><a v-bind:href="url">点击访问</a>
</template><script>
import { ref } from 'vue'export default {setup() {const url = ref('https://www.example.com')return { url }}
}
</script>
简写语法
使用冒号(:
)作为v-bind
的简写:
<template><img :src="imageSrc" :alt="imageAlt" />
</template><script>
import { ref } from 'vue'export default {setup() {const imageSrc = ref('https://via.placeholder.com/150')const imageAlt = ref('示例图片')return { imageSrc, imageAlt }}
}
</script>
绑定多个属性
可以使用对象语法一次性绑定多个属性:
<template><button v-bind="buttonProps">点击我</button>
</template><script>
import { reactive } from 'vue'export default {setup() {const buttonProps = reactive({id: 'submit-btn',class: 'btn btn-primary',disabled: false})return { buttonProps }}
}
</script>
绑定类与样式
动态绑定CSS类和内联样式:
<template><div :class="{ active: isActive }" :style="{ color: textColor }">动态样式示例</div><button @click="toggleActive">切换激活状态</button>
</template><script>
import { ref } from 'vue'export default {setup() {const isActive = ref(false)const textColor = ref('black')const toggleActive = () => {isActive.value = !isActive.valuetextColor.value = isActive.value ? 'green' : 'black'}return { isActive, textColor, toggleActive }}
}
</script><style>
.active {font-weight: bold;
}
</style>
实战项目:构建一个Todo应用
通过前述介绍的核心技术,本节将带你一步步构建一个简单但功能完善的Todo应用,涵盖响应式数据管理、事件处理、条件渲染、列表循环和属性绑定等。
项目结构
src
├── components
│ ├── TodoItem.vue
│ └── TodoList.vue
├── App.vue
└── main.js
TodoItem组件
用于展示单个Todo项。
<!-- src/components/TodoItem.vue -->
<template><li :class="{ completed: todo.completed }"><input type="checkbox" v-model="todo.completed" @change="toggleComplete" /><span>{{ todo.text }}</span><button @click="removeTodo">删除</button></li>
</template><script>
export default {props: {todo: Object,index: Number},methods: {toggleComplete() {this.$emit('toggle-complete', this.index)},removeTodo() {this.$emit('remove-todo', this.index)}}
}
</script><style scoped>
.completed {text-decoration: line-through;color: gray;
}
</style>
TodoList组件
用于展示Todo列表及添加新Todo项。
<!-- src/components/TodoList.vue -->
<template><div><h2>Todo List</h2><input v-model="newTodo" @keyup.enter="addTodo" placeholder="添加新任务" /><button @click="addTodo">添加</button><ul><TodoItemv-for="(todo, index) in todos":key="index":todo="todo":index="index"@toggle-complete="toggleComplete"@remove-todo="removeTodo"/></ul><p v-if="todos.length === 0">当前没有任务。</p></div>
</template><script>
import { ref } from 'vue'
import TodoItem from './TodoItem.vue'export default {components: { TodoItem },setup() {const todos = ref([{ text: '学习Vue3', completed: false },{ text: '构建实战项目', completed: false },{ text: '掌握核心技术', completed: false }])const newTodo = ref('')const addTodo = () => {if (newTodo.value.trim()) {todos.value.push({ text: newTodo.value.trim(), completed: false })newTodo.value = ''}}const toggleComplete = (index) => {todos.value[index].completed = !todos.value[index].completed}const removeTodo = (index) => {todos.value.splice(index, 1)}return { todos, newTodo, addTodo, toggleComplete, removeTodo }}
}
</script><style scoped>
input {padding: 8px;width: 200px;margin-right: 10px;
}
button {padding: 8px 12px;
}
ul {list-style-type: none;padding: 0;
}
</style>
App组件
将TodoList集成到主应用中。
<!-- src/App.vue -->
<template><div id="app"><h1>我的Todo应用</h1><TodoList /></div>
</template><script>
import TodoList from './components/TodoList.vue'export default {components: {TodoList}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;text-align: center;margin-top: 50px;
}
</style>
通过上述步骤,我们成功构建了一个功能完善的Todo应用,涵盖了Vue3的核心技术。你可以根据需求进一步扩展功能,如添加任务优先级、分类、搜索过滤等。
优化与最佳实践
在实际开发中,遵循最佳实践和优化策略能够大幅提升应用的性能和可维护性。以下是一些Vue3开发中的优化建议:
使用组合式API(Composition API)
组合式API通过函数组合来组织组件逻辑,提高代码的复用性和可读性。相比于选项式API,组合式API更适合复杂组件的开发。
import { ref, computed } from 'vue'export default {setup() {const firstName = ref('John')const lastName = ref('Doe')const fullName = computed(() => `${firstName.value} ${lastName.value}`)return { firstName, lastName, fullName }}
}
按需引入
在大型项目中,按需引入组件和库可以减少打包体积,提升加载速度。例如,使用Vue的异步组件加载:
import { defineAsyncComponent } from 'vue'export default {components: {AsyncComponent: defineAsyncComponent(() =>import('./components/AsyncComponent.vue'))}
}
代码分割与懒加载
利用Webpack或Vite等构建工具进行代码分割,将不同模块的代码分开打包,减少初始加载时间。
使用v-bind
避免不必要的DOM更新
在列表渲染中,使用唯一的key
属性可以帮助Vue更高效地更新DOM。
<li v-for="item in items" :key="item.id">{{ item.text }}</li>
优化响应式数据结构
避免在响应式对象中频繁添加或删除属性,因为这可能导致性能问题。可以预先定义所需的属性,或使用reactive
的另一种形式。
避免不必要的计算属性和侦听器
只有在确实需要时才使用计算属性和侦听器,避免过度使用它们导致性能下降。
使用Vue DevTools调试
Vue DevTools是一个强大的调试工具,可以帮助你实时查看组件结构、响应式数据变化以及性能问题。合理使用DevTools可以大大提高开发效率和代码质量。
相关文章:
【Vue】最新Vue3实战教程:全面掌握响应式数据、v-on事件、v-if/v-show条件渲染及更多核心技术
文章目录 为什么选择Vue3?更多实用工具快速上手Vue3安装与配置项目结构 响应式数据处理创建响应式数据使用ref使用reactive 计算属性与侦听器计算属性侦听器 事件绑定与处理(v-on)基本用法简写语法事件修饰符绑定多个事件 条件渲染࿰…...
实时数仓Kappa架构:从入门到实战
引言 随着大数据技术的不断发展,企业对实时数据处理和分析的需求日益增长。实时数仓(Real-Time Data Warehouse, RTDW)应运而生,其中Kappa架构作为一种简化的数据处理架构,通过统一的流处理框架,解决了传统…...
爬虫笔记24——纷玩岛(某岛)自动抢票脚本笔记
纷玩岛自动抢票,协议抢票思路实现 一、获取Authorization凭证二、几个关键的参数三、几个关键的接口获取参数v,这个参数其实可以写死,可忽略通过价位获取演出的参数信息获取观演人信息,账号提前录入即可提交订单接口 先看实现图&a…...
接口性能优化宝典:解决性能瓶颈的策略与实践
目录 一、直面索引 (一)索引优化的常见场景 (二)如何检查索引的使用情况 (三)如何避免索引失效 (四)强制选择索引 二、提升 SQL 执行效率 (一)避免不必…...
5G NR:带宽与采样率的计算
100M 带宽是122.88Mhz sampling rate这是我们都知道的,那它是怎么来的呢? 采样率 子载波间隔 * 采样长度 38.211中对于Tc的定义, 在LTE是定义了Ts,在NR也就是5G定义了Tc。 定义这个单位会对我们以后工作中的计算至关重要。 就是在…...
python的openpyxl库设置表格样式:字体/边框/对齐/颜色等
学习目录 1. 安装和使用openpyxl库设置表格样式 2 设置字体font 3 设置边框 4 设置对齐方式 5 设置单元格数据格式 6 设置行高和列宽 7 填充单元格颜色 附录-关于颜色说明 本章节主要介绍如何使用openpyxl库设置表格中的一些样式,比如字体,边框…...
Vue报错:error Mixed spaces and tabs no-mixed-spaces-and-tabs——报错处理
最近在写后台管理系统的时候,遇到一个报错Vue报错:error Mixed spaces and tabs no-mixed-spaces-and-tabs 出现这个问题的原因,就是同事那边安装了eslint,用来规范代码风格。Eslint是语法检查工具,缺点是对所写代码要…...
Spring:Spring事务管理代码案例讲解
Spring事务管理知识讲解请见:Spring事务知识点讲解 下面演示一个代码示例进行理解。 需求 两个账户相互转账,并记录日志,即使有转账失败也要记录 需求分析 这里主要是需要开启事务机制来控制转入和转出: 1,创建一…...
【Petri网导论学习笔记】Petri网导论入门学习(十) —— 3.2 关联矩阵与状态方程
目录 3.2 关联矩阵与状态方程定义 3.3 关联矩阵引理 3.4引理 3.5定理 3.4例 3.7例 3.83.2 关联矩阵与状态方程 正如 Petri 网的一个标识可以表示成一个 $ m $ 维非负整数向量一样,Petri 网的结构也可以用一个矩阵来表示。这样,就可以引入线性代数的方法对 Petri 网的性质进行…...
(计算机网络)期末
计算机网络概述 物理层 信源就是发送方 信宿就是接收方 串行通信--一次只发一个单位的数据(串行输入) 并行通信--一次可以传输多个单位的数据 光纤--利用光的反射进行传输 传输之前,要对信源进行一个编码,收到信息之后要进行一个…...
自动驾驶目标检测融合全貌
1、early fusion 早期融合,特点用到几何空间转换3d到2d或者2d到3d的转换,用像素找点云或者用点云找像素。 2、deep fusion 深度融合,也是特征级别融合,也叫多模态融合,如bevfusion范式 3、late fusion 晚融合&#x…...
Spring中实现动态数据源切换,基于AbstractRoutingDataSource
背景 在项目开发过程中,我们可能会遇到一个场景:某个类型数据源有多个数据源实例,需要我们按照不同的请求切换到不同数据源去。 而目前绝大多数java应用都是基于Spring框架来开发,我们很多时候相关的数据源连接都是交给了Spring框…...
Linux指标之平均负载(The Average load of Linux Metrics)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…...
基于SpringBoot共享汽车管理系统【附源码】
基于SpringBoot共享汽车管理系统 效果如下: 系统注册页面 系统登陆页面 系统管理员主页面 用户信息管理页面 汽车投放管理页面 使用订单页面 汽车归还管理页面 研究背景 随着计算机技术和计算机网络的逐渐普及,互联网成为人们查找信息的重要场所。二十…...
React-useState的使用
useState 是 React 提供的一个 Hook,允许你在函数组件中添加和管理状态(state)。在类组件中,状态管理通常是通过 this.state 和 this.setState 来实现的,而在函数组件中,useState 提供了类似的功能。 基本…...
wordpress 中添加图片放大功能
功能描述 使用 Fancybox 实现图片放大和灯箱效果。自动为文章内容中的图片添加链接,使其支持 Fancybox。修改了 header.php 和 footer.php 以引入必要的 CSS 和 JS 文件。在 functions.php 中通过过滤器自动为图片添加 data-fancybox 属性。 最终代码 1. 修改 hea…...
Day 27 贪心算法 part01
贪心算法其实就是没有什么规律可言,所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律, 没有思路就立刻看题解。 基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。 学完贪心之后再去看动态规划,就会了解贪心和动规的区别。…...
运维面试题.云计算面试题
一、选择题(每题1分,合计15分) 1.若当前目录为 /home,命令 ls–l 将显示 home 目录下的( )。 A.所有文件 B.所有隐含文件 C.所有非隐含文件 D.文件的具体信息 2.如果要列出一个目录下的所有文件需要使用命令行( )。 A. ls–l B. ls C. ls–a(all) D. ls–d 3.下面关于文件…...
计算机专业的真正的就业情况
首先听到计算机行业,大多数人岗位已经饱和,前端已死,程序员35岁危机。但是事实上这些认知都是片面的,今天由我来为大家分析计算机行业的内幕。 疫情过后,过内各种行业都受到了冲击,你们敢说除了体制内的行业…...
行为型模式-状态模式
状态模式(State Pattern)是行为型设计模式之一,用于允许一个对象在其内部状态改变时改变其行为。状态模式可以有效避免在对象中使用大量的条件语句,通过将状态的逻辑转移到独立的状态类中,实现状态与行为的分离。 核心…...
字节跳动青训营刷题笔记19
问题描述 小R正在组织一个比赛,比赛中有 n 支队伍参赛。比赛遵循以下独特的赛制: 如果当前队伍数为 偶数,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。如果当前队伍数为 奇数&…...
【MATLAB源码-第225期】基于matlab的计算器GUI设计仿真,能够实现基础运算,三角函数以及幂运算。
操作环境: MATLAB 2022a 1、算法描述 界面布局 计算器界面的主要元素分为几大部分:显示屏、功能按钮、数字按钮和操作符按钮。 显示屏 显示屏(Edit Text):位于界面顶部中央,用于显示用户输入的表达式和…...
C++学习日记---第14天(蓝桥杯备赛)
笔记复习 1.对象的初始化和清理 对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用后果是未知,同样的使用完一个对象或者变量,没有及时清理,也会造成一定的安全问题 构造函数&…...
windows C#-定义和读取自定义特性
使用特性,可以声明的方式将信息与代码相关联。 特性还可以提供能够应用于各种目标的可重用元素。 考虑 ObsoleteAttribute。 它可以应用于类、结构、方法、构造函数等。 用于声明元素已过时。 然后,由 C# 编译器负责查找此特性,并执行某响应操…...
一个vue项目如何运行在docker
将 Vue.js 应用程序通过 Docker 发布是一个非常常见的做法,它可以帮助你轻松地部署应用到不同的环境中。下面是一个简单的指南,介绍如何为 Vue.js 项目创建 Dockerfile 并进行构建和运行。 第一步:安装 Docker 确保你的开发机器上已经安装了…...
重读《人月神话》(15)-祸起萧墙(Hatching a Catastrophe
增加更多的人手到一个已经延期的项目中往往不会加快项目的进度,反而可能使情况变得更糟。 项目进度的细微延迟往往难以察觉,但它们却能悄无声息地累积起来,最终对整个项目的完成时间造成重大影响。昨天,一位关键成员因突发疾病未…...
【大数据学习 | Spark-Core】广播变量和累加器
1. 共享变量 Spark两种共享变量:广播变量(broadcast variable)与累加器(accumulator)。 累加器用来对信息进行聚合,相当于mapreduce中的counter;而广播变量用来高效分发较大的对象,…...
C/C++基础知识复习(30)
1) 什么是 C 中的 Lambda 表达式?它的作用是什么? Lambda 表达式: 在 C 中,Lambda 表达式是一种可以定义匿名函数的机制,可以在代码中快速创建一个内联的函数对象,而不需要显式地定义一个函数。Lambda 表…...
【Spring MVC】如何获取cookie/session以及响应@RestController的理解,Header的设置
前言 🌟🌟本期讲解关于SpringMVC的编程之参数传递~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废…...
Could not locate device support files.
报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…...
Kafka日志索引详解以及生产常见问题分析与总结
文章目录 一、Kafka的Log日志梳理1.1、Topic下的消息如何存储1.1.1、log文件追加记录所有消息1.1.2、index和timeindex加速读取log消息日志 1.2、文件清理机制1.2.1、如何判断哪些日志文件过期了1.2.2、过期的日志文件如何处理 1.3、Kafka的文件高效读写机制1.3.1、Kafka的文件…...
Qt中QGraphics绘图类相关解释
Item(图元)坐标系、Scene(场景)坐标系、View(视图)坐标系,三者均为:x轴正方向向右,y轴正方向向下 1、Item(图元):坐标属于局部坐标,通常以图元中心为原点(中心对称)。 场景坐标系统描述了顶层的图元,每个图…...
@Pattern (用于校验字符串是否符合特定正则表达式)
Pattern 是一个用于校验字符串是否符合特定正则表达式的注解,它在 Java 中常用于验证输入数据的格式。以下是 Pattern 注解的详解和使用方法: 含义 Pattern 注解用于在 Java 中对字段进行注解,以确保其值与指定的正则表达式匹配。这个注解可…...
线程与进程的个人理解
进程(Process): 一个程序在执行时,操作系统为其分配的资源(如内存、CPU 时间等)构成了一个进程。每个进程都有自己的独立的地址空间、堆栈和局部变量,它们之间不共享内存(除非通过特…...
移远通信携手紫光展锐,以“5G+算力”共绘万物智联新蓝图
11月26日,2024紫光展锐全球合作伙伴大会在上海举办。作为紫光展锐重要的合作伙伴,移远通信应邀参会。 在下午的物联网生态论坛上,移远通信产品总监胡勇华作题为“5G与算力双擎驱动 引领智联新未来”的演讲,深度剖析了产业发展的趋…...
【接口封装】——7、连接并使用 MySQL 数据库
头文件: #include <qsqlquery.h> #include <qsqldatabase.h>(注:需要先适配数据库) 函数定义: public:bool verifyLogin(const QString& account, const QString& password);QString getUserName(…...
vue2 中使用 Ag-grid-enterprise 企业版
文章目录 问题Vue2 引入企业版不生效npm run dev 时卡住了94% after seal 卡在这里了测试打包源 git 解决方案记录 问题 我想用企业版的树状表格 Vue2 引入企业版不生效 编译引入 // vue.config.js module.exports {transpileDependencies: ["ag-grid-enterprise"…...
计算机视觉算法:从基础到应用的全面解析
计算机视觉(Computer Vision, CV)是一门研究如何使计算机“看懂”图像和视频的学科。它结合了数学、计算机科学和人工智能的多个领域,旨在通过自动分析和理解数字图像、视频中的内容,模拟人类的视觉感知。计算机视觉算法广泛应用于图像识别、目标检测、自动驾驶、医疗影像等…...
[HCTF 2018]WarmUp
抓包什么也没看到 就是访问这个滑稽的图片 信息收集 这里说明就是他的后台代码 在这个php里面 我们访问 这样就很好看了 代码审计 [HCTF 2018]WarmUp全网最详细解释-CSDN博客 这篇博客讲得真JB好 我就复述下我对博主的理解吧~ 这里我们可以看见白名单是source.php 和h…...
解决jupyter notebook 新建或打开.ipynb 报500 : Internal Server Error(涉及jinja2兼容性问题)
报错: [E 10:09:52.362 NotebookApp] 500 GET /notebooks/Untitled16.ipynb?kernel_namepyt hon3 (::1) 93.000000ms refererhttp://localhost:8888/tree ...... 重点是: from .exporters import * File "C:\ProgramData\Anaconda3\lib\site-p…...
Android 实现悬浮球的功能
Android 实现悬浮球的功能 在 Android 中,实现悬浮球可以通过以下方式实现,常见的方法是使用 WindowManager 创建一个悬浮窗口。以下是具体的实现步骤: 1. 配置权限 在 AndroidManifest.xml 中添加悬浮窗权限: <uses-permis…...
SQL EXISTS 子句的深入解析
SQL EXISTS 子句的深入解析 引言 SQL(Structured Query Language)作为一种强大的数据库查询语言,广泛应用于各种数据库管理系统中。在SQL查询中,EXISTS子句是一种非常实用的工具,用于检查子查询中是否存在至少一行数…...
<项目代码>YOLOv8 红绿灯识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
Linux笔记---进程:进程状态
1. Linux中的进程状态 上图是操作系统学科中,对进程状态的分类。但是这样细致的划分是在操作系统的设计层面上做的,其中的很多细节,用户其实不必关心。 在Linux操作系统中,面向用户层面,对进程状态做了如下的划分&am…...
基于Qt实现的自定义树结构容器:设计与应用
在Qt框架中,尽管其提供了许多强大的容器类(如 QList, QMap, QTreeWidget 等),但缺少一个通用的、灵活的树结构容器,直接支持多层级数据管理。为了满足这些需求,本文设计并实现了一个可复用的自定义树结构容…...
Minio 客户端 mc
1、文档参阅: 1.1、 服务别名设置: https://min.io/docs/minio/linux/reference/minio-mc/mc-alias-set.html 1.2、cp 命令 https://min.io/docs/minio/linux/reference/minio-mc/mc-cp.html 2、mc 命令安装 1、wget https://dl.minio.org.cn/cl…...
python控制鼠标,键盘,adb
python控制鼠标,键盘,adb 听说某系因为奖学金互相举报,好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗,被丁胖子逮到。他面对警察的问询面不改色坚持自我,反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这…...
使用 Python 剪辑视频的播放速度
要使用 Python 调整视频的播放速度,可以利用 moviepy 库中的 fx(特效)模块来实现这一功能。通过 moviepy.editor 中的 VideoFileClip 类和 fx.speedx 函数,可以轻松地调整视频的播放速度。 安装 moviepy 首先,确保已…...
Scrapy图解工作流程-cnblog
1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…...
mongodb
MongoDB增加身份验证 - jason47 - 博客园 db.collection.find() - MongoDB 手册 v6.0 1. 登录 rootJTVMbushu104:~# mongosh # 无账号登录 test> use admin # 切换数据库,先切换到有权限数据库再登录授权 switched to db admin admin> db.auth(username,pas…...