本文是主要内容为转载,对其中部分内容进行了代码解析 只为记录学习过程,共享学习
Vue3快速上手
1、Vue3简介
2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)
耗时2年多、2600+次提交、30+个RFC、600+次PR、99位贡献者
github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0
2.Vue3带来了什么
1.性能的提升
打包大小减少41%
初次渲染快55%, 更新渲染快133%
内存减少54% …
2.源码的升级
3.拥抱TypeScript
4.新的特性
Composition API(组合API)
setup配置
ref与reactive
watch与watchEffect
provide与inject …
新的内置组件
Fragment
Teleport
Suspense
其他改变
新的生命周期钩子
data 选项应始终被声明为一个函数
移除keyCode支持作为 v-on 的修饰符 …
一、创建Vue3.0项目工程
1.使用 vue-cli 创建
## 查看@vue/ cli版本,确保@vue/ cli版本在4.5 .0 以上
vue -- version
## 安装或者升级你的@vue/ cli
npm install - g @vue/ cli
## 创建
vue create vue_test
## 启动
cd vue_test
npm run serve
二 、常用Conposition APL
点击跳转
三、其它 Composition API
1.shallowReactive 与 shallowRef
shallowReactive:
shallowReactive
用于创建一个浅层响应式对象,即只有对象的第一层属性是响应式的,而深层嵌套的对象不会被转换成响应式对象。这可以用于避免深层对象的监听,提高性能。
import { shallowReactive } from 'vue' ;
const obj = shallowReactive ( {
nested : {
count : 0
} ,
message : 'Hello'
} ) ;
console. log ( obj. nested) ;
console. log ( obj. message) ;
obj. message = 'Updated' ;
obj. nested. count++ ;
shallowRef:
shallowRef
用于创建一个浅层响应式引用,它与ref
相似,但只对引用类型(对象、数组等)进行浅层的响应式处理
import { shallowRef } from 'vue' ;
const refObj = { count : 0 } ;
const shallowObj = shallowRef ( refObj) ;
refObj. count++ ;
shallowObj. value. count++ ;
shallowObj. value = { count : 1 } ;
总结一下,shallowReactive
适用于创建一个对象,只使对象的第一层属性响应式,而 shallowRef
适用于创建一个引用,对引用类型进行浅层响应式处理。使用这两者之一取决于你的具体需求和数据结构。
2.readonly 与 shallowReadonly
readonly
readonly
用于创建一个完全的只读对象,该对象及其嵌套的属性都是不可修改的。这意味着无论是对象的属性值还是嵌套对象,都不能被修改。如果你尝试修改 readonly
对象的属性,Vue 会发出警告。
import { readonly } from 'vue' ;
const obj = readonly ( {
prop1 : 'value1' ,
nested : {
prop2 : 'value2'
}
} ) ;
obj. prop1 = 'new value' ;
obj. nested. prop2 = 'new value' ;
shallowReadonly:
shallowReadonly
用于创建一个浅层只读对象,即只有对象的第一层属性是只读的,而深层嵌套的对象仍然可以被修改。这允许你修改嵌套对象的属性,但不能修改嵌套对象本身。
import { shallowReadonly } from 'vue' ;
const obj = shallowReadonly ( {
prop1 : 'value1' ,
nested : {
prop2 : 'value2'
}
} ) ;
obj. prop1 = 'new value' ;
obj. nested. prop2 = 'new value' ;
总结:
readonly
创建的对象是完全只读的,包括对象的所有嵌套属性。
shallowReadonly
创建的对象只有第一层属性是只读的,允许修改嵌套对象的属性,但不允许修改嵌套对象本身。
3.toRaw 与 markRaw
toRaw
作用:将一个由reactive生成的响应式对象转为普通对象。
使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引起页面更新。例如在自定义函数中处理对象时,可能需要获取对象的原始版本而不是代理后的版本。
import { reactive, toRaw } from 'vue' ;
const obj = reactive ( {
prop1 : 'value1' ,
prop2 : 'value2'
} ) ;
const rawObj = toRaw ( obj) ;
console. log ( rawObj === obj) ;
console. log ( rawObj. prop1) ;
markRaw
作用:标记一个对象,使其永远不会再成为响应式对象。
应用场景: 有些值不应被设置为响应式的,例如复杂的第三方类库等。 当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能。
import { reactive, markRaw } from 'vue' ;
const obj = reactive ( {
prop1 : 'value1' ,
prop2 : markRaw ( {
nestedProp : 'value2'
} )
} ) ;
console. log ( obj. prop1) ;
console. log ( obj. prop2. nestedProp) ;
obj. prop2. nestedProp = 'new value' ;
总结:
toRaw
用于获取一个响应式对象的原始版本。
markRaw
用于标记一个对象,使其成为不可代理的对象。
4.customRef
customRef
在 Vue 3 中的应用场景主要是用于创建具有自定义行为的响应式对象。这个功能允许你手动控制对象的响应式,适用于一些特殊的需求。以下是一些 customRef
的应用场景:
延迟更新: 你可以使用 customRef
来实现一个具有延迟更新的响应式属性。例如,你可能希望在用户输入停止一段时间后再更新状态,而不是每次输入都立即更新。
import { customRef } from 'vue' ;
function useDebouncedRef ( value, delay = 200 ) {
let timeout;
return customRef ( ( track, trigger ) => {
return {
get ( ) {
track ( ) ;
return value;
} ,
set ( newValue) {
clearTimeout ( timeout) ;
timeout = setTimeout ( ( ) => {
value = newValue;
trigger ( ) ;
} , delay) ;
}
} ;
} ) ;
}
export default {
setup ( ) {
const inputValue = useDebouncedRef ( '' , 500 ) ;
return {
inputValue
} ;
}
} ;
异步更新: 你可以使用 customRef
来实现具有异步更新的响应式属性。例如,当某个异步操作完成后再更新状态。
import { customRef } from 'vue' ;
function useAsyncRef ( asyncGetter ) {
let value;
let isPending = true ;
return customRef ( ( track, trigger ) => {
return {
get ( ) {
track ( ) ;
return value;
} ,
async set ( newValue) {
isPending = true ;
value = await asyncGetter ( newValue) ;
isPending = false ;
trigger ( ) ;
}
} ;
} ) ;
}
export default {
setup ( ) {
const asyncValue = useAsyncRef ( async ( inputValue ) => {
await new Promise ( resolve => setTimeout ( resolve, 1000 ) ) ;
return inputValue. toUpperCase ( ) ;
} ) ;
return {
asyncValue
} ;
}
} ;
自定义依赖追踪: 如果你希望在特定条件下追踪依赖,可以使用 customRef
实现自定义依赖追踪的逻辑。
import { customRef } from 'vue' ;
function useConditionalRef ( initialValue ) {
let value = initialValue;
return customRef ( ( track, trigger ) => {
return {
get ( ) {
if ( value > 0 ) {
track ( ) ;
}
return value;
} ,
set ( newValue) {
value = newValue;
trigger ( ) ;
}
} ;
} ) ;
}
export default {
setup ( ) {
const conditionalValue = useConditionalRef ( 1 ) ;
return {
conditionalValue
} ;
}
} ;
这些是一些 customRef
的应用场景示例。总体来说,customRef
提供了更灵活的方式来处理响应式对象,使得你能够根据具体需求实现自定义的响应逻辑。
5.provide 与 inject
作用:实现祖与后代组件间通信
套路:父组件有一个 provide 选项来提供数据,后代组件有一个 inject 选项来开始使用这些数据
provide
provide
是一个在父组件中使用的函数,用于提供数据给其子组件。它接收两个参数,第一个是键名,用于在子组件中识别数据,第二个是提供给子组件的数据。
< script>
import { provide } from 'vue' ;
export default {
setup ( ) {
const sharedData = 'Shared Data' ;
provide ( 'sharedKey' , sharedData) ;
return {
} ;
}
} ;
< / script>
inject
inject
是一个在子组件中使用的函数,用于接收来自父组件的提供的数据。它接收一个键名数组或对象,键名对应了在父组件中使用 provide
时设置的键名。
< script>
import { inject } from 'vue' ;
export default {
setup ( ) {
const sharedData = inject ( 'sharedKey' , 'Default Value' ) ;
console. log ( sharedData) ;
return {
} ;
}
} ;
< / script>
在上面的例子中,inject
接收了一个键名 'sharedKey'
,它会在父组件中查找是否有与之对应的数据,如果找到,则返回该值,否则返回提供的默认值 'Default Value'
。
注意事项:
provide
和 inject
是成对使用的,子组件通过 inject
获取提供的值。
如果子组件的 inject
中没有找到对应的键名,它会使用提供的默认值。
provide
和 inject
不仅限于直接父子关系,也可以用于祖先和后代组件之间的通信。
这一对 API 提供了一种简单而强大的方式,在组件树
中共享数据,避免了通过 props 一层层传递数据的繁琐。
6.响应式数据的判断
isRef
: 检查一个值是否为一个 ref 对象
isReactive
: 检查一个对象是否是由 reactive 创建的响应式代理
isReadonly
: 检查一个对象是否是由 readonly 创建的只读代理
isProxy
: 检查一个对象是否是由 reactive 或者 readonly 方法创建的代理
四、Composition API 的优势
五、Composition API 的优势
1.Fragment
在Vue2中: 组件必须有一个根标签 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中 好处: 减少标签层级, 减小内存占用
2.Teleport
Teleport
将组件的内容渲染到任意的 DOM 元素上,而不受父组件的限制。 Teleport 在处理弹出层、模态框等情况时非常有用,因为它可以将组件的内容渲染到页面的其他位置,而不仅仅是组件所在的父组件内。
< template>
< div>
< button @click= "toggleModal" > Open Modal< / button>
< ! -- 使用 Teleport 渲染到 id 为 "modal-container" 的元素中 -- >
< teleport to= "#modal-container" >
< Modal v- if = "showModal" @close= "closeModal" / >
< / teleport>
< / div>
< / template>
< script>
import Modal from './Modal.vue' ;
export default {
data ( ) {
return {
showModal : false
} ;
} ,
methods : {
toggleModal ( ) {
this . showModal = ! this . showModal;
} ,
closeModal ( ) {
this . showModal = false ;
}
} ,
components : {
Modal
}
} ;
< / script>
在上面的例子中,
标签将 Modal
组件的内容渲染到页面中 id
为 “modal-container” 的元素上。这样,无论 Modal
组件在组件树中的位置如何,它的内容都会被移动到指定的 DOM 元素上。
注意:
Teleport 的实现涉及两个部分:
组件和 to
属性。to
属性指定了目标容器的选择器。
to
属性可以是一个字符串,也可以是一个函数。函数的参数是 teleport 目标元素的引用,返回值是一个 DOM 元素,表示 Teleport 的目标容器。
Teleport 可以用于任何需要在 DOM 树中的不同位置之间移动组件内容的情况,而不仅仅是模态框。
3.Suspense
是一个用于处理异步组件加载的特殊组件。它允许你在异步组件加载完成之前展示一些备用内容(例如 loading 状态),以提供更好的用户体验。
< template>
< div>
< Suspense>
< ! -- 异步组件的引入 -- >
< AsyncComponent / >
< ! -- 备用内容,可自定义 loading 状态 -- >
< template #fallback>
< p> Loading... < / p>
< / template>
< / Suspense>
< / div>
< / template>
< script>
const AsyncComponent = ( ) => import ( './AsyncComponent.vue' ) ;
export default {
components : {
AsyncComponent
}
} ;
< / script>
在上面的例子中,
是一个异步组件,通过使用 import()
动态导入。当这个异步组件加载时,
将显示备用内容,直到异步组件加载完成。
是
的一个插槽,用于定义备用内容,即在异步组件加载过程中显示的内容。
注意:
在 Vue 3 中,
可以包裹多个异步组件,而不仅仅是一个。
的插槽 fallback
中的内容可以是任何有效的 Vue 模板内容,因此你可以在加载过程中展示任何自定义的 loading 状态。
异步组件通常使用 import()
来异步加载,确保只在需要时才加载对应的 JavaScript。
的引入使得在处理异步操作时能够更好地控制用户体验,通过展示备用内容,提高了用户对于页面加载过程的感知。
六、其他
1.全局API的转移
2.x 全局 API(Vue)
3.x 实例 API (app)
Vue.config.xxxx
app.config.xxxx
Vue.config.productionTip
移除
Vue.component
app.component
Vue.directive
app.directive
Vue.mixin
app.mixin
Vue.use
app.usex
Vue.prototype
app.config.globalProperties
你可能感兴趣的:(【Vue3】系列,笔记)
C语言结构体学习笔记
BUG 劝退师
c语言 c语言 学习 笔记
C语言结构体学习笔记目录结构体基本概念结构体变量定义结构体初始化结构体数组结构体指针共用体枚举类型typedef自定义类型总结结构体基本概念1.什么是结构体?结构体:一种用户自定义的数据类型,用于将多个不同类型的变量组合成一个整体。用途:表示复杂数据(如学生信息:学号、姓名、成绩等)。2.结构体定义struct结构体名{数据类型成员1;数据类型成员2;//可以嵌套结构体struct子结构体名子成员
嵌入式MCU平台汇总
TENET-
嵌入式 单片机 嵌入式硬件 mcu
文章目录1.单片机(MCU)2.数字信号处理器(DSP)3.ARMCortex系列4.超低功耗MCU5.物联网MCU(IoTMCU)6.开源架构MCU(RISC-V)7.可编程逻辑器件(FPGA)1.单片机(MCU)概念:单片机(MicrocontrollerUnit,MCU)是集成了中央处理器(CPU)、存储器(RAM、ROM或Flash)、输入输出端口(I/O)以及各种外设(如定时器、串行通信
【Tools/macOS系列】macOS终端配置:zsh+iTerm2+OhMyZsh
飞翔的鲲
【实用工具专栏】 macOS zsh iTerm2 终端 ohmyzsh
DATE:2021.7.17文章目录1、前言2、参考3、终端和vim配置效果图4、终端配置步骤4.1、安装iTerm24.2、安装oh-my-zsh4.3、主题和颜色4.4、插件4.5、特殊字体Hackherdfont4.6、vim配置4.7、随时唤起4.8、自定义界面壁纸1、前言macOS的终端Terminal界面非常简单,没有Linux下面的颜色设置和自动补齐等功能,用起来非常不方便。本文讲解
Vue3 vuex
*且听风吟
# Vue 3 javascript vue.js 前端
概念Vuex:状态管理工具使用场景有时候,需要在多个组件中共享状态,并且是响应式的状态,一个变,全都跟着发生改变的场景。例如,一些全局要用的的状态信息:用户登录状态、用户信息等等;这时候,就需要这样的一个工具来进行全局的状态管理,而Vuex就是这样的一个工具。Vue2.xvuex基本结构store/index.js:importVuefrom'vue'importVuexfrom'vuex'Vue
SMT贴片加工中回流焊接机的关键工艺
CIT_PCBA
pcb工艺 制造
SMT贴片指的是在PCB基础上进行加工的系列工艺流程的简称。PCB(PrintedCircuitBoard)意为印刷电路板。(原文:SMT贴片指的是在PCB基础上进行加工的系列工艺流程的简称PCB(PrintedCircuitBoard))SMT是表面组装技术(表面贴装技术)(SurfaceMountedTechnology的缩写),是目前电子组装行业里最流行的一种技术和工艺。电子电路表面组装技术
浅谈vue常用的状态管理库vuex、pinia
超绝前端乱学小白
vue flutter vue.js vue javascript
Vuex和Pinia都是Vue.js应用程序中的状态管理库,虽然两种状态管理库的vue2,vue3都兼容,但是更推荐vue2(vuex),vue3(pinia)VuexVuex是Vue.js官方提供的状态管理库,它借鉴了Flux和Redux的设计思想,将应用的状态(state)集中管理于单个全局状态树中。核心概念State:存储应用程序的状态Getters:允许在Vuexstore中定义计算属性,
“深入浅出”系列之QT:(10)Qt接入Deepseek
我真不会起名字啊
qt 开发语言
项目配置:在.pro文件中添加网络模块:QT+=corenetworkAPI配置:将apiUrl替换为实际的DeepSeekAPI端点将apiKey替换为你的有效API密钥根据API文档调整请求参数(模型名称、温度值等)功能说明:使用QNetworkAccessManager处理HTTP请求自动处理JSON序列化/反序列化支持异步请求处理包含基本的错误处理扩展建议:添加更完善的错误处理(HTTP状
TT无人机零散笔记
xzal12
TT无人机 无人机 笔记
TT扩展板上传模式:sdk:软件开发工具包。一键安装驱动:扩展模块使用Mind+编程是通过USB串口,因此在首次使用Mind+连接扩展模块时需要一键安装驱动。恢复设备初始设置:由于扩展模块可编程,如果扩展模块中存在程序则会导致实时模式的控制无法生效,因此在使用实时模式前需要将扩展模块恢复默认固件。serial.begin(9600)#初始化串口通信,设置数据传输速率(波特率)为9600。波特率:表
使用vue3框架vue-next-admin导出表格excel(带图片)
乐多_L
vue.js 前端 javascript
想要使用vue3导出表格内容并且图片显示在表格中(如图):步骤如下:下载安装插件:安装命令:npminstalljs-table2excel引入插件:importtable2excelfrom'js-table2excel'使用插件直接上代码:onBatchExport方法中数据的key值要与data中保持一致,否则数据无法获取到,打印出的结果就回为undefined。我写了两种导出:一种是全部导
YOLOv8到YOLOv11:深度解析目标检测架构的演进
金外飞176
技术前沿 目标跟踪 人工智能 计算机视觉 目标检测 YOLO 神经网络 深度学习
YOLOv8到YOLOv11:深度解析目标检测架构的演进在计算机视觉领域,YOLO(YouOnlyLookOnce)系列模型一直是实时目标检测领域的佼佼者。从2015年的YOLOv1到2024年的YOLOv11,这一系列模型经历了快速的迭代和发展,不断刷新着目标检测的性能和效率。然而,由于部分YOLO版本缺乏详细的学术论文和架构图,研究人员和开发者在理解这些模型的工作原理时往往面临挑战。最近,一篇
使用vue3框架vue-next-admin导出列表数据
乐多_L
vue.js 前端 javascript
在Vue3中实现Excel导出功能可以通过以下步骤完成,这里使用xlsx库来实现前端Excel导出:1.安装依赖npminstallxlsxfile-saver#或yarnaddxlsxfile-saver2.实现代码示例需要在当前页引入import*asXLSXfrom"xlsx";注释:我导出的数据为列表的全部数据(datum);自定义我需要的表头,大家可以根据自己的需要进行替换。还可以只导出
《JavaScript高级程序设计》——第四章:变量、作用域与内存管理
dorabighead
javascript 开发语言 ecmascript
《JavaScript高级程序设计》——第四章:变量、作用域与内存管理大家好!我是小哆啦,欢迎回到《JavaScript高级程序设计》的读书笔记大本营!在这章中,我们要聊的是两个让人头疼又迷人的话题——变量、作用域与内存管理。有些人一提到这些,就会感到一阵头晕目眩,恍若置身一场JavaScript版的迷宫大冒险!但今天,小哆啦会带你们轻松过关,深入了解这些概念,并且保持足够的幽默感,让你既能笑着学
python 自动化数据提取之正则表达式_python 正则提取(2)
m0_60607245
程序员 python 学习 面试
一、Python所有方向的学习路线Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。二、Python必备开发工具工具都帮大家整理好了,安装就可直接上手!三、最新Python学习笔记当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理
Mysql学习笔记-Mysql基础进阶
少年无为
Mysql Mysql 数据库多表查询 数据库备份 Mysql查询
#知识点1.DQL:查询语句1.排序查询2.聚合函数3.分组查询4.分页查询2.约束3.多表之间的关系4.范式5.数据库的备份和还原#DQL:查询语句1.排序查询*语法:orderby子句*orderby排序字段1排序方式1,排序字段2排序方式2...*排序方式:*ASC:升序,默认的。*DESC:降序。*注意:*如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。2.聚合函数:将一列数
嵌入式学习DAY28 --- 线程、同步和互斥问题、如何实现同步和互斥?
楼台的春风
嵌入式学习 多线程 c语言 嵌入式 linux ubuntu
嵌入式入门学习笔记,遇到的问题以及心得体会!DAY28概述:一、线程二、同步和互斥问题三、如何实现同步四、如何实现互斥笔记:一、线程1、什么是线程:(1)线程是轻量级的进程(2)线程存在于进程内,不能独立存在(3)线程参与CPU调度,进程是系统资源分配最小单位,线程是系统调度的最小单位(4)在单核CPU中,多线程并发属于伪并发,但是不牵扯虚拟地址空间的切换,所以开销比进程间切换要小很多(5)在多核
基于JavaSpringboot+Vue实现前后端分离房屋租赁系统
网顺技术团队
成品程序项目 vue.js 前端 javascript 课程设计 spring boot mybatis
基于JavaSpringboot+Vue实现前后端分离房屋租赁系统作者主页网顺技术团队欢迎点赞收藏⭐留言文末获取源码联系方式查看下方微信号获取联系方式承接各种定制系统精彩系列推荐精彩专栏推荐订阅不然下次找不到哟Java毕设项目精品实战案例《1000套》感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人文章目录基于JavaSpringboot+
vue3的Element plus (一)
GIS瞧葩菜
Element plus vue elementui Element plus vue3
介绍ElementPlus是一个基于Vue3的UI组件库,它是对ElementUI组件库的升级和扩展。ElementPlus提供了一套美观、易用且高效的组件,可以用于构建现代化的Web应用程序。ElementPlus的主要特点包括:支持Vue3:ElementPlus是专为Vue3开发的,充分利用Vue3的新特性和优势。TypeScript支持:ElementPlus提供了完整的TypeScrip
Centos7 搭建 Jupyter + Nginx 服务
某龙兄
python nginx linux centos
JupyterNotebook(此前被称为IPythonnotebook)是一个交互式笔记本,支持运行40多种编程语言。JupyterNotebook的本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。本文讲述如何搭建Jupyter+Nginx服务,仅供学习与交流,请勿用于商业用途一
USB转串口芯片CH9102替代CP2102注意事项
Chery1140
单片机 嵌入式硬件
CH9102与CP2102可实现pin2pin兼容,可以在不更改硬件设计的前提下实现不同型号间快速切换与产品应用。CH9102系列型号包括:CH9102F(QFN24)和CH9102X(QFN28),CP2102系列型号包括:CP2102、CP2102N-GQFN24、CP2102N-GQFN28。1.应用差异说明1)驱动说明:CH9102芯片为CDC类串口芯片,用户可以选择使用操作系统内置的CD
嵌入式音视频开发(二)ffmpeg音视频同步
云雨歇
音视频 ffmpeg
系列文章目录嵌入式音视频开发(零)移植ffmpeg及推流测试嵌入式音视频开发(一)ffmpeg框架及内核解析嵌入式音视频开发(二)ffmpeg音视频同步嵌入式音视频开发(三)直播协议及编码器文章目录系列文章目录前言一、音视频同步1.1基础概念1.2三种同步方法二、音视频同步的实现2.1时间基的转换问题2.2音频为基准2.2.1实现思路2.2.2代码大纲2.3外部时钟同步2.3.1实现思路2.3.2
动态规划之背包问题
于冬恋
动态规划 算法
动态规划是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时间效率。目录01背包问题完全背包问题多重背包问题二维费用背包问题(1)01背包问题给定n个物体,和一个容量为c的背包,物品i的重量为wi,其价值为应该如何选择装入背包的物品使其获得的总价值最大。可以用贪心算法,但是不一定能达到最优解,所以用动态规划解决创建一个数组dp[i][j]i
在瑞芯微RK3588平台上使用RKNN部署YOLOv8Pose模型的C++实战指南
机 _ 长
YOLO系列模型有效涨点改进 深度学习落地实战 YOLO c++ 开发语言
在人工智能和计算机视觉领域,人体姿态估计是一项极具挑战性的任务,它对于理解人类行为、增强人机交互等方面具有重要意义。YOLOv8Pose作为YOLO系列中的新成员,以其高效和准确性在人体姿态估计任务中脱颖而出。本文将详细介绍如何在瑞芯微RK3588平台上,使用RKNN(RockchipNeuralNetworkToolkit)框架部署YOLOv8Pose模型,并进行C++代码的编译和运行。注本文全
vue3-video-play 插件在 Vue 3 项目上的应用
放逐者-保持本心,方可放逐
vue3应用 vue.js 前端 javascript vue3-video-play
文章目录vue3-video-play插件在Vue3项目上的应用一、插件简介二、插件安装三、插件组件应用示例1.局部引入组件2.全局引入组件四、需要注意的事项五、本地环境将`package.json`中`"module":"./dist/index.es.js"`改为`"module":"./dist/index.mjs"`问题解析探索问题描述原因分析解决方案格式及应用实例vue3-video-p
Java 运行时常量池笔记(详细版
小猫猫猫◍˃ᵕ˂◍
java 笔记 python
Java运行时常量池笔记(详细版)Java的运行时常量池(RuntimeConstantPool)是JVM方法区的一部分,用于存储编译期生成的字面量和符号引用。它是Java类文件常量池的运行时表示,具有动态性和共享性。运行时常量池的核心概念1.什么是运行时常量池?运行时常量池是JVM方法区的一部分,存储类文件中常量池的内容。它包含:字面量:如字符串、整数、浮点数等。符号引用:如类名、方法名、字段名
侯捷 C++ 课程学习笔记:C++ 面向对象开发的艺术
孤寂大仙v
c++ c++ 学习 笔记
在侯捷老师的C++系列课程中,《C++面向对象开发》这门课程让我对面向对象编程有了更深入的理解。面向对象编程(OOP)是现代软件开发中最重要的编程范式之一,而C++作为支持OOP的语言,提供了强大的工具和特性。侯捷老师通过系统的讲解和实战案例,帮助我掌握了如何在C++中高效地使用面向对象技术。以下是我对这门课程的学习笔记和心得体会。一、课程核心内容:C++面向对象开发的关键特性![侯捷老师的课程详
【Python系列】Python 解释器的站点配置
Kwan的解忧杂货铺@新空间代码工作室
s1 Python python 开发语言
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kwan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kafka,Spring,微服务,Netty等常用开发工具系列:罗列常用的开发工具,如IDEA,M
J-Link系列下载器的烧录问题彻底解决
1zero10
单片机 单片机
1.确保成功安装好keil5方法:按照此链接中课程1.1准备安装环境进行操作【铁头山羊stm32入门教程【新版】-哔哩哔哩】https://b23.tv/wb5XUGo2.安装J-link驱动2-1从jlink官网下载最新版本驱动2-2按照此链接视频中jlink对应部分进行操作【STM32常用程序烧录方法,KeilIDE,ST-Link,Jlink-OB,DAPLink,串口(Uart)-哔哩哔哩
改进YOLO系列 | YOLOv5/v7 引入 Dynamic Snake Convolution | 动态蛇形卷积
wei子
YOLO 目标跟踪 人工智能
改进YOLO系列:动态蛇形卷积(DynamicSnakeConvolution,DSC)简介YOLO系列目标检测算法以其速度和精度著称,但对于细长目标例如血管、道路等,其性能仍有提升空间。动态蛇形卷积(DSC)是YOLOv5/v7中引入的一种改进,旨在更好地处理细长目标。DSC原理DSC的核心思想是使用类似蛇形运动的卷积核来提取细长目标的特征。具体来说,DSC卷积核沿着一系列控制点移动,并根据每个
使用 Docker 基本命令创建并发布带有新功能的镜像到阿里云
2021级计算机网络技术2班梁嘉敏
docker 阿里云 容器
1.关于Docker镜像1.基础假定您在开发一个网上商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?您要如何确保应用能够在这些环境中运行和
等保系列之——网络安全等级保护测评工作流程及工作内容
等保管家
web安全 安全
等保系列之——网络安全等级保护测评工作流程及工作内容引言随着信息技术的快速发展,网络安全问题日益凸显。为了保障信息系统的安全稳定运行,我国实施了网络安全等级保护制度(简称等保)。等保测评作为该制度的重要组成部分,对于提高信息系统的安全防护能力具有重要意义。等保测评概述等保测评全称是信息安全等级保护测评,它依据国家标准《信息安全技术网络安全等级保护测评要求》进行,旨在评估信息系统的安全防护能力是否达
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多