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

肇庆网站建设解决方案/青岛网站排名推广

肇庆网站建设解决方案,青岛网站排名推广,安阳网站建设公司,wordpress头像不显示文章目录 一、props二、自定义事件三、mitt四、v-model1.v-model的本质2.v-model用在组件标签上3.更换modelValue4.更换modelValue时,可以在组件标签上多次使用v-model 五、$attrs六、$refs,与¥parent1. 回顾标签ref属性修改组件信息2. $refs实现父修改所…

文章目录

  • 一、props
  • 二、自定义事件
  • 三、mitt
  • 四、v-model
    • 1.`v-model`的本质
    • 2.`v-model`用在组件标签上
    • 3.更换`modelValue`
    • 4.更换`modelValue`时,可以在组件标签上多次使用`v-model`
  • 五、$attrs
  • 六、$refs,与¥parent
    • 1. 回顾标签ref属性修改组件信息
    • 2. $refs实现父修改所有子组件信息
    • 3. $parent实现子修改父
  • 七、provide、inject祖孙通信
    • 1. 祖传孙
    • 2. 孙传祖
  • 八、pinia,见之前的博客
  • 九、插槽slot
    • 1. 默认插槽
    • 2. 具名插槽
    • 3. 作用域插槽
  • 组件通信总结

一、props

概述:props是使用频率最高的一种通信方式,常用与 :父传子

  • 父传子:属性值是非函数
  • 子传父:属性值是函数

父传子

<!--父组件-->
<Child :car="car" />
<script>let car = ref('奔驰')
</script><!--子组件接收数据--><h4>父亲给的车:{{ car }}</h4><script>defineProps(['car'])
</script>

子传父:
需要父提前给子传递函数,通过参数接收子传递的数据

<!--父组件--><h4 v-if="toy">子组件给的玩具:{{ toy }}</h4><Child :car="car" :sendToy="sendToy" />
<script>let toy = ref('')function sendToy(value: string) {toy.value = value}
</script><!--子组件传递数据-->
<button @click="sendToy(toy)">把玩具给子组件</button>
<script setup lang="ts" name="Child">import { ref } from 'vue'let toy = ref('奥特曼')defineProps(['car', 'sendToy'])
</script>

二、自定义事件

触发事件的语法

 let emit = defineEmits(['函数名'])// 触发事件emit('函数名',需要传递的参数)

举例:

<!--父组件自定义事件send-toy--><h4 v-show="toy">子组件传递过来的玩具:{{ toy }}</h4><Child @send-toy="getToy" />
<script>let toy = ref('')function getToy(value: string) {toy.value = value}
</script><!--子组件接收数据-->
<!--触发send-toy事件,父组件进而调用了getToy函数,并收到了参数toy--><button @click="emit('send-toy', toy)">玩具给父组件</button><script>let toy = ref('奥特曼')// 接收之后,emit('send-toy')就是在触发事件let emit = defineEmits(['send-toy'])
</script>

emit接收两个事件:

let emit = defineEmits(['a','b'])

触发时:

emit('a')
emit('b')

三、mitt

消息订阅pubsub,全局事件总线$bus,mitt都是一样的思想。
接收数据的:提前绑好事件(提前订阅消息)
提供数据的:在合适的时候触发事件(发布消息)

  1. 安装mitt:npm i mitt
  2. 新建文件:src\utils\emitter.ts
    // 引入mitt 
    import mitt from "mitt";// 创建emitter
    const emitter = mitt()// 创建并暴露mitt
    export default emitter
    

    绑定事件:emitter.on(事件名,()=>{回调函数逻辑 })
    触发事件:emitter.emit(事件名,传递的参数)
    解绑事件:emitter.off(事件名)
    解绑所有事件:emitter.all.clear()

  3. 接收数据的组件绑定事件+在组件卸载前解绑事件
    在这里插入图片描述
  4. 发送数据的组件触发事件
    在这里插入图片描述

四、v-model

UI 组件库大量使用v-model进行通信。

1.v-model的本质

 <!-- v-model双向绑定,用在html标签上 --><input type="text" v-model="username"><!-- 上边代码的本质是:  --><!--  :value="username":实现数据到页面@input...:实现页面到数据--><input type="text" :value="username" @input="username = (<HTMLInputElement>$event.target).value">

(<HTMLInputElement>$event.target).value其实就是$event.target.value,因为ts语法的限制,需要加断言。

2.v-model用在组件标签上

<!-- 修改modelValue -->
<ChildInput v-model="username" />
<!-- 本质是:默认写modelValue,也可以修改,修改见第3点更换modelValue -->
<ChildInput :modelValue="username" @update:modelValue="username = $event" />

:modelValue="username":props实现父传子
@update...:类似于自定义事件,实现子传父;$event是子组件传过来的值

ChildInput 组件中:

<template><!--将接收的modelValue值赋给input元素的value属性,目的是:为了呈现数据 --><!--给input元素绑定原生input事件,触发input事件时,进而触发update:model-value事件,触发时将$event.target.value通过参数传回去--><input type="text" :value="modelValue"@input="emit('update:modelValue', (<HTMLInputElement>$event.target).value)">
</template><script setup lang="ts" name="ChildInput">
// 接收父组件传递的值
defineProps(['modelValue'])
// 声明事件,
let emit = defineEmits(['update:modelValue'])
</script>

流程就是:

(1) 子组件将用户输入的值传给父组件:
  子组件中通过触发事件将$event.target.value的值(也就是用户输入的值)传给父组件,父组件将username的值改为用户输入的值。

(2) 用户输入的值传给子组件进而呈现在页面上:
  通过父组件的modelValue将新的username值传给子组件,子组件通过props接收后赋给input标签的value属性,呈现用户输入的数据。

3.更换modelValue

需要在v-model后加上别名

<!-- 修改modelValue --><ChildInput  v-model:mima="password" /><!-- 本质 -->
<ChildInput :mima="username" @update:mima="username = $event" />

4.更换modelValue时,可以在组件标签上多次使用v-model

在这里插入图片描述
注意:

父组件中:@update:modelValue="username = $event"
子组件中: @input="emit('update:modelValue', $event.target.value)

什么时候用$event,什么时候用$event.target.value

$event是什么?什么时候能.target

  1. 对于原生事件,$event就是事件对象,====>能.target
  2. 对于自定义事件,$event就是触发事件时,所传递的数据,===>不能.target

五、$attrs

  • 用来实现祖孙组件之间的通信。
  • 当父组件向子组件通过props传值时,子组件``defineProps()只接收部分值,剩下没接收的值则存在了$attrs里。

1. 未读取的数据存在$attrs

<!-- 父组件 -->
<div class="father"><h3>父组件</h3><h4>a:{{ a }}</h4><h4>b:{{ b }}</h4><h4>c:{{ c }}</h4><h4>d:{{ d }}</h4><!-- v-bind="{ x: 100, y: 200 }" 等价于 :x="100" :y="200" --><Child :a="a" :b="b" :c="c" :d="d" v-bind="{ x: 100, y: 200 }" /><!-- 等价于 --><!-- <Child :a="a" :b="b" :c="c" :d="d" :x="100" :y="200" /> -->
</div>
<!-- 子组件 --><h4>a:{{ a }}</h4><h4>其他:{{ $attrs }}</h4><script>defineProps(['a'])</script>

在这里插入图片描述

2. 祖向孙传数据

<!--Father.vue--><Child :a="a" :b="b" :c="c" :d="d" v-bind="{ x: 100, y: 200 }" /><!--Child.vue,中间组件啥也不接受,传给GrandChild--><GrandChild v-bind="$attrs" /><!--GrandChild.vue--><div class="grand-child"><h3>孙组件</h3><h4>a:{{ a }}</h4><h4>b:{{ b }}</h4><h4>c:{{ c }}</h4><h4>d:{{ d }}</h4><h4>x:{{ x }}</h4><h4>y:{{ y }}</h4></div>
<script setup lang="ts" name="GrandChild">defineProps(['a', 'b', 'c', 'd', 'x', 'y'])
</script>

3. 孙向祖传数据
Father.vue:通过props传递函数

<Child :a="a" :b="b" :c="c" :d="d" v-bind="{ x: 100, y: 200 }" :updateA="updateA" /><!-- 等价于 -->
<script setup lang="ts" name="Father">function updateA(value: any) {a.value = value}
</script>

Child.vue

<!--Child.vue,中间组件啥也不接受,传给GrandChild-->
<GrandChild v-bind="$attrs" />

GrandChild.vue:调用函数

<button @click="updateA(666)">更新A</button>
<script setup lang="ts" name="GrandChild">defineProps(['a', 'b', 'c', 'd', 'x', 'y', 'updateA'])
</script>

六、$refs,与¥parent

正确的是$ref$parent,标题打这两个术语会出错。
$refs:用于父传子
$parent:用于子传父

属性说明
$refs值为对象,包含所有被ref属性标识的DOM元素或组件实例。
$parent值为对象,当前组件的父组件实例对象。

1. 回顾标签ref属性修改组件信息

在这里插入图片描述
子组件1Child1.vue

<template><div class="child1"><h3>子组件1</h3><h4> 玩具:{{ toy }}</h4><h4> 书籍:{{ book }}本</h4></div>
</template><script setup lang="ts" name="Child1">
import { ref } from 'vue';
let toy = ref('奥特曼')
let book = ref(3)
// 向外暴露出来,父组件才能读取到子组件的值
defineExpose({ toy, book })
</script>

子组件2Child2.vue结构类似:

...
<script setup lang="ts" name="Child2">
...
let computer = ref('联想')
let book = ref(6)
// 向外暴露
defineExpose({ computer, book })
</script>

父组件Father.vue修改子组件信息

<template><div class="father"><h3>父组件</h3><h4>房产有{{ house }}套</h4><button @click="changeToy">修改子组件1的玩具</button><button @click="changeComputer">修改子组件2的电脑</button><Child1 ref="c1" /><Child2 ref="c2" /></div>
</template><script setup lang="ts" name="Father">...let house = ref(4)// 获取到两个组件的实例对象let c1 = ref()let c2 = ref()function changeToy() {c1.value.toy = '小猪佩奇'}function changeComputer() {c2.value.computer = '华为'}
</script>

父组件通过ref获取子组件实例对象后,可以对其属性进行修改的前提条件时,子组件将该属性defineExpose()暴露出来。

2. $refs实现父修改所有子组件信息

父组件Father.vue

<button @click="getAllChild($refs)">增加所有子组件的书数量</button>
<script>// 参数或者写成 refs:{[key:string]:any}function getAllChild(refs: any) {console.log('refs',refs);for (let key in refs) {// 修改所有子组件的书本属性refs[key].book += 3}}
</script>

在这里插入图片描述

3. $parent实现子修改父

父组件Father.vue将数据暴露出去,子组件才能获取到该属性并修改:

let house = ref(4)
defineExpose({ house })

子组件:Child1.vue

<button @click="minusHouse($parent)">卖出一套房产</button>
<script>function minusHouse(parent: any) {console.log('parent',parent);parent.house -= 1}
</script>

在这里插入图片描述
这里读取数据不用写.value见之前的记录。

七、provide、inject祖孙通信

$attrs实现祖孙通信了,打扰了中间层;而provideinject不会打扰中间层。

提供数据:provide('数据或方法',数据或方法)
接收(注入)数据:inject('数据')

1. 祖传孙

祖组件:Father.vue

<script setup lang="ts" name="Father">let car = ref('奔驰')// 传递的数据,通过provide提供provide('car', car)
</script>

孙组件:GrandChild.vue

  <div class="grand-child"><h3>我是孙组件</h3><h4>车子:{{ car }}</h4></div>
<script setup lang="ts" name="GrandChild">// 1.引入injectimport { inject } from 'vue'// 2. 读取数据;let car = inject('car')
</script>

注意,如果接收数据时

   let car = inject('car2')

祖组件没有提供名为car2的数据,则孙组件读取到的car值是undefined;
孙组件可设置默认值

  let car = inject('car2','奥迪') // car的默认值是奥迪

2. 孙传祖

思想还是祖给孙传递函数,孙通过参数的方式来给祖传信息。

祖组件:Father.vue

<script setup lang="ts" name="Father">
import { ref, provide } from 'vue';
let money = ref(500)function spendMoney(value: number) {money.value -= value
}
// 可以将数据或方法一起传递
provide('moneyContext', { money, spendMoney })
</script>

孙组件:GrandChild.vue

 <div class="grand-child"><h3>我是孙组件</h3><h4>银子:{{ money }}万元</h4><h4>车子:{{ car }}</h4><button @click="spendMoney(6)">花钱</button></div><script setup lang="ts" name="GrandChild">import { inject } from 'vue'// 解构取值// let { money, spendMoney } = inject('moneyContext')// 上面的方式会有警告,ts不确定是否会有money和spendMoney,所以给个默认值let { money, spendMoney } = inject('moneyContext', { money: 0, spendMoney: (param: number) => { } })
</script>

注意:为什么传递的不是money.value,而是money?

provide('moneyContext', { money.value, spendMoney })

如果传递.value,则传递的只是一个值;
在这里插入图片描述

八、pinia,见之前的博客

Vue3(四) pinia

九、插槽slot

回顾Vue2插槽内容Vue2插槽

1. 默认插槽

将组件标签中的html结构放入slot所在的位置
在这里插入图片描述
在这里插入图片描述

2. 具名插槽

上边的例子中,游戏列表四个字在英雄联盟等列表的上方,是因为页面结构中<h2>游戏列表</h2>ul的上方。
如果页面结构中<h2>游戏列表</h2>ul的下方。如何仍旧保持这样的页面效果:
在这里插入图片描述
采用具名插槽,通过v-slot:插槽名#插槽名 指定要把页面结构放在哪个插槽里。

 <Category><template #s2><video video :src="videoUrl" controls></video></template><template #s1><h2>今日影视推荐</h2></template></Category>

3. 作用域插槽

子组件Game

<template><div class="game"><h2>游戏列表</h2><!-- 需要传递的值 --><slot :youxi="games" x="hh" y="hello"></slot></div>
</template><script setup lang="ts" name="Game">
import { reactive } from 'vue';
let games = reactive([{ id: 'asgytdfats01', name: '英雄联盟' },{ id: 'asgytdfats02', name: '王者农药' },{ id: 'asgytdfats03', name: '红色警戒' },{ id: 'asgytdfats04', name: '斗罗大陆' }
])
</script>

父组件Father.vue
在这里插入图片描述
params包含所有参数:
在这里插入图片描述
总结:

  1. 默认插槽:
  2. 具名插槽:
    命名<slot name="xxx"></slot>;
    使用: <template #xxx> <template v-slot:xxx>
  3. 作用域插槽
    数据在子组件身上: <slot :xxx="yyy" :n1="zzz" ></slot>
    父组件使用数据:
    <template v-slot="params"> params接收所有传递过来的数据
    <template v-slot:defalut="params"> 通过插槽名指定接收某个插槽的数据
    <template #defalut="{xxx}"> 通过#插槽名指定接收某个插槽的数据

组件通信总结

在这里插入图片描述

相关文章:

Vue3(五) 组件通信大汇总

文章目录 一、props二、自定义事件三、mitt四、v-model1.v-model的本质2.v-model用在组件标签上3.更换modelValue4.更换modelValue时&#xff0c;可以在组件标签上多次使用v-model 五、$attrs六、$refs,与&#xffe5;parent1. 回顾标签ref属性修改组件信息2. $refs实现父修改所…...

红队信息搜集扫描使用

红队信息搜集扫描使用 红队行动中需要工具化一些常用攻击&#xff0c;所以学习一下 nmap 等的常规使用&#xff0c;提供灵感 nmap 帮助 nmap --help主机扫描 Scan and no port scan&#xff08;扫描但不端口扫描&#xff09;。-sn 在老版本中是 -sP&#xff0c;P的含义是 P…...

Python自学查漏9.28

自学查漏9.28 一、环境安装&代码执行原理&变量命名 安装 Python 代码执行原理 解析&#xff08;Parsing&#xff09;: 当你运行一个 Python 脚本时&#xff0c;Python 解释器首先会解析整个代码&#xff0c;将其转换成一种叫做“字节码”&#xff08;bytecode&…...

Java文件I/O处理之RandomAccessFile【随意存取文件】

Java语言有一个处理文件输入输出的RandomAccessFile类&#xff0c;既可以读取文件内容&#xff0c;也可以向文件输出数据。 RandomAccessFile类在国内的技术文档和书籍中都翻译为“随机访问文件”类&#xff0c;确实令人不解。 在中文中“随机”的意思&#xff1a; 不设任何条…...

Android页面跳转与返回机制详解

在Android开发中&#xff0c;页面跳转是实现应用功能交互的重要手段之一。本文将从Activity之间的跳转、Activity与Fragment之间的跳转、Fragment之间的跳转以及页面返回的问题四个方面进行详细解析。 一、Activity之间的跳转 Activity是Android应用的基本构建块&#xff0c;…...

Elasticsearch学习笔记(1)

初识 Elasticsearch 认识和安装 Elasticsearch 是由 Elastic 公司开发的一套强大的搜索引擎技术&#xff0c;属于 Elastic 技术栈的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1a;用于数据存储、计算和搜索。Logstash/Beats&#xff1a;用于数据收集。Kib…...

react是一种语言?

React 不是一种编程语言&#xff0c;而是一种用于构建用户界面的 JavaScript 库。它由 Facebook 开发&#xff0c;并广泛用于开发单页应用程序&#xff08;SPA&#xff09;。React 允许你将 UI 拆分成独立的、可复用的组件&#xff0c;这些组件可以接收输入&#xff08;称为“p…...

如何区分这个ip是真实ip,不是虚假的ip

区分一个IP地址是真实IP还是虚假IP&#xff08;伪造IP&#xff09;是非常重要的&#xff0c;特别是在网络安全、数据采集和其他与IP相关的业务场景中。虚假IP&#xff08;也称为伪造IP或假冒IP&#xff09;可以通过多种方式被创建&#xff0c;如代理、VPN、或IP欺骗&#xff08…...

【软件测试】详解软件测试中的测试级别

目录 一、测试级别二、组件测试三、开发者测试3.1测试与调试3.2 组件测试目标3.3 测试功能 四、稳健性测试4.1 效率的测试4.2 测试可维护性4.3 测试策略4.4 白盒测试 一、测试级别 软件系统通常是由许多子系统组成的&#xff0c;而这些子系统又是由多个组件组成的&#xff0c;…...

一条sql在MySQL中是怎么执行的

目录 一、MySQL总体架构二、各层的作用1、连接层2、应用层3、存储引擎层 一、MySQL总体架构 作为常问八股文&#xff0c;相信不少小伙伴当年都被问到过这个问题&#xff0c;回答这个问题我们首先得知道MySQL服务器基本架构&#xff0c;主要分为连接层&#xff0c;应用层和存储…...

Git | Dockerized GitLab 安装使用(简单实操版)

1. 详细步骤 1.1 安装启动 postgresql 服务 docker pull sameersbn/postgresql:14-20230628docker run --name gitlab-postgresql -d \--env DB_NAMEgitlabhq_production \--env DB_USERgitlab --env DB_PASSpassword \--env DB_EXTENSIONpg_trgm,btree_gist \--volume /srv/…...

SpringCloud简介 Ribbon Eureka 远程调用RestTemplate类 openfeign

〇、SpringCloud 0.区别于单体项目和soa架构&#xff0c;微服务架构每个服务独立&#xff0c;灵活。 1. spring cloud是一个完整的微服务框架&#xff0c;springCloud包括三个体系&#xff1a; spring cloud Netflix spring cloud Alibaba spring 其他 2.spring cloud 版本命名…...

微信小程序开发系列之-微信小程序性能优化

微信小程序开发系列之-微信小程序性能优化 性能优化是任何应用开发中的重要组成部分&#xff0c;尤其是在移动环境中。对于微信小程序而言&#xff0c;随着用户量的增加和应用功能的丰富&#xff0c;性能优化显得尤为关键。良好的性能不仅提升用户体验&#xff0c;还能增加用户…...

线程池面试集

目录 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优雅的停止一个线程? 线程池的核心线程数、最大线程数该如何设置? 如何理解Java并发中的可见性、原子性、有序性? Java死锁如何避免? 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优…...

从密码学看盲拍合约:智能合约的隐私与安全新革命!

文章目录 前言一、什么是盲拍合约&#xff1f;二、盲拍合约的优势1.时间压力的缓解2.绑定与秘密的挑战 三、盲拍合约的工作原理1.提交盲出价2.披露出价3.结束拍卖4.退款机制 四、代码示例总结 前言 随着区块链技术的发展&#xff0c;智能合约在各种场景中的应用越来越广泛。盲…...

c++学习笔记(47)

七、_public.cpp #include "_public.h" // 如果信号量已存在&#xff0c;获取信号量&#xff1b;如果信号量不存在&#xff0c;则创建它并初始化为 value。 // 如果用于互斥锁&#xff0c;value 填 1&#xff0c;sem_flg 填 SEM_UNDO。 // 如果用于生产消费者模型&am…...

软件设计之SSM(1)

软件设计之SSM(1) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; Spring框架结构SpringIoC容器SpringIoC实践…...

STM32F745IE 能进定时器中断,无法进主循环

当你遇到STM32F745IE这类问题,即能够进入定时器中断但无法进入主循环(main() 函数中的循环),可能的原因和解决方法包括以下几个方面: 检查中断优先级和嵌套: 确保没有其他更高优先级的中断持续运行并阻止了主循环的执行。使用调试工具查看中断的进入和退出情况。检查中断…...

《凡人歌》中的IT职业启示录

《凡人歌》是由中央电视台、正午阳光、爱奇艺出品&#xff0c;简川訸执导&#xff0c;纪静蓉编剧&#xff0c;侯鸿亮任制片&#xff0c;殷桃、王骁领衔主演&#xff0c;章若楠、秦俊杰、张哲华、陈昊宇主演的都市话题剧 &#xff0c;改编自纪静蓉的小说《我不是废柴》。该剧于2…...

go libreoffice word 转pdf

一、main.go 关键代码 完整代码 package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath" ) import _ "github.com/go-sql-driver/mysql"import &q…...

打造双模兼容npm包:无缝支持require与import

为了实现一个npm包同时支持require和import&#xff0c;你需要确保你的包同时提供了CommonJS和ES6模块的入口点。这通常是通过在package.json文件中指定main和module字段来实现的&#xff0c;以及在构建过程中生成两种不同模块格式的文件。 以下是具体步骤&#xff1a; 设置pa…...

便捷将屏幕投射到安卓/iOS设备-屏幕投射到安卓/iOS设备,Windows/Mac电脑或智能电视上-供大家学习研究参考

1. 下载并安装软件(安卓苹果都需要) 确保 Android 设备和 Windows/Mac电脑都安装。启动应用程序并将 Android 设备和 Windows / Mac 了解到同一个wifi下面。 2、 发起投屏请求 在接收设备上:...

yolox训练自己的数据集

环境搭建 gpu按自己情况安装 nvidia-smi 查看自己的版本 CUDA和cudnn 按自己的安装&#xff0c;我的驱动551.76&#xff0c;注意不要用最新的&#xff0c;官网只要求驱动是大于等于&#xff0c;可以用低版本的cuda&#xff0c;我安装的是CUDA 11.1 cuda下载后&#xff0c…...

Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置

由于后边可能要启动多个服务&#xff0c;避免服务之间相互干扰&#xff0c;本课程建议每个服务独立部署到一台主机上&#xff0c;这样做会导致资源占用过多&#xff0c;可能会影响系统的运行。服务器部署一般不采用GUI图形界面部署&#xff0c;而是采用命令行方式部署&#xff…...

基于SSM+小程序的自习室选座与门禁管理系统(自习室1)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 1、管理员实现了首页、基础数据管理、论坛管理、公告信息管理、用户管理、座位管理等 2、用户实现了在论坛模块通过发帖与评论帖子的方式进行信息讨论&#xff0c;也能对账户进行在线充值…...

支付宝远程收款api之小荷包跳转码

想要生成小荷包跳转码的二维码&#xff0c;需要进行以下步骤&#xff1a; 1、开通支付宝小荷包的收款功能权限 2、获取支付宝的小荷包收款码和支付宝账户的UID已经手机号等相应信息&#xff08;可能会有变动&#xff09; 3、可能需要一定的代码基础&#xff0c;讲所需信息填…...

STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能

STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能 文章目录 STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能前言部分主要相关代码# USMART介绍1. mf_scan_files 扫描磁盘文件2. mf_mount 挂载磁盘3. mf_open 打开文件4. mf_read 读数据内容5. mf…...

YOLOv8改进 | 融合篇,YOLOv8主干网络替换为MobileNetV3+CA注意机制+添加小目标检测层(全网独家首发,实现极限涨点)

原始 YOLOv8 训练结果: YOLOv8 + MobileNetV3改进后训练结果: YOLOv8 + MobileNetV3 + CA 注意机制 + 添加小目标检测层改进后训练结果(极限涨点): 摘要 小目标检测难点众多,导致很多算法对小目标的检测效果远不如大中型目标。影响算法性能的主要原因如下:第一,小目…...

深入探索机器学习中的目标分类算法

在当今数据驱动的世界中&#xff0c;机器学习&#xff08;Machine Learning, ML&#xff09;正逐渐成为解决问题的重要工具。在众多机器学习任务中&#xff0c;目标分类&#xff08;Classification&#xff09;算法尤其受到关注。本文将深入探讨目标分类算法的基本概念、常见类…...

一文上手SpringSecurity【七】

之前我们在测试的时候,都是使用的字符串充当用户名称和密码,本篇将其换成MySQL数据库. 一、替换为真实的MySQL 1.1 引入依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</v…...