Vue核心指令解析:探索MVVM与数据操作之美

在这里插入图片描述


文章目录

  • 前言
  • 一、Vue.js
    • 1. MVVM模式介绍
    • 2. 单页面组件介绍及案例讲解
    • 3. 插值表达式介绍及案例讲解
  • 二、Vue常用指令详解
    • 1. 数据绑定指令
      • v-text
      • v-html
    • 2. 条件渲染指令
      • v-if
      • v-show
    • 3. 列表渲染指令
      • v-for
      • 循环数组介绍及案例讲解
      • 循环对象介绍及案例讲解
    • 4. 事件监听指令
      • v-on
      • 事件修饰符介绍与案例讲解
    • 5. 表单输入与数据同步指令
      • v-model
      • v-model修饰符介绍及案例讲解
    • 6. 属性绑定指令
      • v-bind
      • 对象语法绑定class介绍及案例讲解
      • 数组语法绑定class介绍及案例讲解
      • 绑定style介绍及案例讲解


前言

    MVVM模式将数据(Model)、视图(View)和视图模型(ViewModel)三者分离,实现数据驱动视图的双向绑定。而Vue.js的指令系统则提供了强大的数据操作和控制能力,使开发更加高效。

    接下来,我们将重点介绍Vue.js中一系列强大的指令。从数据绑定指令 v-textv-html开始,它们让我们能够轻松地将数据渲染到页面上;到条件渲染指令 v-ifv-show,它们使得页面能够根据不同的条件展示不同的内容;再到列表渲染指令 v-for,它极大地简化了列表数据的展示;此外,还有事件监听指令 v-on,它让我们能够监听用户与页面的交互,实现动态响应;而表单输入与数据同步指令 v-model,则让表单数据的处理变得简单而高效;最后,属性绑定指令 v-bind,它使得我们能够灵活地绑定元素的属性。


一、Vue.js

Vue.js是当下很火的一个JavaScript MVVM 库,它是以数据驱动和组件化的思想构建的。相比于Angular.jsVue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。
    相比于使用jQuery操作DOM,使用Vue.js时要先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。

1. MVVM模式介绍

下图不仅概括了MVVM模式(Model-View-ViewModel),还描述了在Vue.jsViewModel是如何和View以及Model进行交互的。
在这里插入图片描述
ViewModel是Vue.js的核心,它是一个Vue实例。Vue实例是作用于某一个HTML元素上的,这个元素可以是HTML的body元素,也可以是指定了id的某个元素。

当创建了ViewModel后,双向绑定是如何达成的呢?

  • 首先,我们将上图中的DOM ListenersData Bindings看作两个工具,它们是实现双向绑定的关键。
  • 从View侧看,ViewModel中的DOM Listeners工具会帮我们监测页面上DOM元素的变化,如果有变化,则更改Model中的数据;
  • 从Model侧看,当我们更新Model中的数据时,Data Bindings工具会帮我们更新页面中的DOM元素。

2. 单页面组件介绍及案例讲解

文件扩展名为 .vuesingle-file components (单文件组件) 为前端项目开发中遇到的一系列问题提供了解决方法。

这是一个文件名为 Hello.vue 的简单实例:

<template>
  <!-- 模板,存放HTML标签 -->
</template>

<script>
  // Js 代码
export default {
  name: "Hello"

}
</script>

<style>
/* css样式 */
</style>

3. 插值表达式介绍及案例讲解

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:

<template>
  <span>Message:{{msg}} </span>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "Hello World",
    };
  },
};
</script>

Mustache 标签将会被替代为对应数据对象上 msg property 的值。无论何时,绑定的数据对象上 msg property 发生了改变,插值处的内容都会更新。

对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。

{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

<div v-bind:id="'list-' + id"></div>

这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效

<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}

<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}

二、Vue常用指令详解

1. 数据绑定指令

v-text

v-text指令用于将数据填充到标签中,作用与插值表达式类似,但是没有闪烁问题:

<template>
  <span v-text="msg"></span>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "Hello World",
    };
  },
};
</script>

v-html

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令:

<template>
  <span v-html="msg"></span>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "<h1>Hello World</h1>",
    };
  },
};
</script>

你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。

2. 条件渲染指令

v-if

v-if 指令用于条件性的渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候渲染

<template>
    <div id="app">
        <p v-if="is_show">这是一个p标签</p>
        <p v-if="is_have">我也是一个p标签</p>
    </div>
</template>

<script>
export default {
    data(){
        return{
            is_show: true,
            is_have: false
        }
    }
}
</script>

案例:动态切换内容:

<template>
    <div id="app">
        <input type="radio" name="gender" value="" v-model="msg"><input type="radio" name="gender" value="" v-model="msg"><input type="radio" name="gender" value="保密" v-model="msg">保密

        <h2 v-if="msg == '女'">你是一个Girl</h2>
        <h2 v-else-if="msg == '男'">你是一个Boy</h2>
        <h2 v-else>你是一个神秘的人</h2>
    </div>
</template>

<script>
export default {
    data(){
        return{
            msg: "保密",
        }
    }
}
</script>

v-show

v-showv-if 的用法和效果看起来是一样的

<template>
    <div id="app">
        <input type="button" value="点击" @click="btn">
        <h2 v-show="a">嗨,我在</h2>
    </div>
</template>

<script>
export default {
    data(){
        return{
            a: true
        }
    },
    methods:{
        btn(){
            this.a = !this.a
        }
    }
}
</script>

v-if和v-show异同介绍:

  • v-if 是控制元素是否在 DOM 渲染,实现显示和隐藏
    v-show 是控制元素的 CSS 属性 display,实现显示和隐藏

3. 列表渲染指令

v-for

  • v-for 可以循环遍历数据,并渲染出多个标签
  • v-for指令操作里 a in b是必要格式
  • v-for 可以循环遍历数据,并渲染出多个标签
<div id="app">
    <p v-for="i in 8">
        {{i}}
    </p>
</div>
在v-for指令操作里 a in b是必要格式

v-for 可以循环遍历数据,并渲染出多个标签

循环数组介绍及案例讲解

  • 遍历数组时,i 是数组中的值,k 是索引
遍历数组介绍及案例讲解 
<template>
    <div id="app">
        <p v-for="(i, k) in list_">
            {{i}} {{k}}
        </p>
    </div>
</template>
<script>
export default {
    data(){
        return{
            list_: [2,4,6,8,10]
        }
    }
}
</script>

循环对象介绍及案例讲解

  • v-for 支持最多三个参数,同时获取遍历对象的keyvalue值,以及index索引位置
  • 要注意的是,此时的keyvalue和python中的顺序是颠倒的,key在后,value在前
<template>
    <div id="app">
        <p v-for="(value, key, i) in user">
            {{i}}--{{key}}--{{value}}
        </p>
    </div>
</template>

<script>
export default {
    data(){
        return{
            user: {
                name: "张三",
                age: 18
            }
        }
    }
}
</script>

4. 事件监听指令

v-on

v-on给元素绑定对应事件,可以缩写为@

<template>
  <div>
      <! -- <button v-on:click="btn">弹框</button> -->
    <!-- 效果和上面等同 -->
    <button @click="btn">弹框</button>
      
  </button>
  </div> 
</template>

<script>
export default {
    methods:{
        btn(){
            alert(111)
        }
    }
}
</script>

事件修饰符介绍与案例讲解

1、阻止冒泡 .stop介绍及案例讲解

  • 比如一个按钮在一个div中,并且按钮和div均有自己的事件,那么此时点击按钮,事件会像冒泡一样从按钮开始一直到div进行触发,.stop用来阻止默认的事件触发行为
<template>
  <div id="app">
      <p @click="pClick">
          <input type="button" value="按钮" @click.stop="btnClick">
      </p>
  </div>
</template>

<script>
export default {
    methods:{
        pClick() {
            console.log("p点击被触发了")
        },
        btnClick() {
            console.log("按钮点击被触发了")
        }
    }
}
</script>

2 、阻止默认 .prevent介绍及案例讲解

  • 比如像a标签这样的,在点击时他有默认的跳转动作,可以通过.prevent阻止该默认行为
<template>
  <div id="app">
      <a v-bind:href="url" :id="msg + '123'" @click.prevent="aClick">百度 </a>
  </div>
</template>

<script>
export default {
    name: 'one',
    data(){
        return{
            url: "http://www.baidu.com",
            msg:"bd"
        }
    },
    methods:{
        aClick(){
                  console.log("链接被点击啦")
              }
    }
}
</script>

3、 捕获事件 .capture介绍及案例讲解

  • 默认的事件触发处理机制是冒泡机制,通过.capture即可将冒泡顺序从里向外,颠倒顺序
  • 也可理解为在冒泡机制中,谁有该修饰符,先触发谁的事件
<template>
  <div id="app">
      <p @click.capture="pClick">
          <input type="button" value="按钮" @click="btnClick">
      </p>
  </div>
</template>

<script>
export default {
    name: 'one',
    data(){
        return{
            msg:'hello'
        }
    },
    methods:{
        pClick() {
            console.log("p点击被触发了")
        },
        btnClick() {
            console.log("按钮点击被触发了")
        }
    }
}
</script>

4、 自身事件 .self介绍及案例讲解:

  • 与capture和冒泡不同,.self只有是自身触发的当前的事件才真正执行处理的回调函数
  • 并且.self只会阻止当前元素的事件触发行为
<template>
    <div @click="divClick" class="div1">
        <p @click.self="pClick" class="p1">
            <input type="button" value="按钮" @click="btnClick">
        </p>
    </div>
</template>

<script>
export default {
    name: 'one',
    data(){
        return{
            msg:'hello'
        }
    },
    methods:{
        divClick() {
            console.log("盒子点击被触发了")
        },
        pClick() {
            console.log("p点击被触发了")
        },
        btnClick() {
            console.log("按钮点击被触发了")
        }
    }
}
</script>

5、 单次事件 .once介绍及案例讲解:

  • 使用.once只触发一次事件函数
<template>
    <div id="app">
        <input type="button" value="提交" @click.once="btn">
    </div>
</template>

<script>
export default {
    name: 'one',
    data(){
        return{
            msg:'hello'
        }
    },
    methods:{
        btn(){
            alert(1111)
        }
    }
}
</script>

5. 表单输入与数据同步指令

v-model

  • 使用v-model指令可以在表单 inputtextarea 以及 select 元素上创建双向数据绑定 根据表单上的值,自动更新模板变量中的值
  • 注意v-model会忽略表单的初始值,比如: checkedvalueselected ,如果需要的话,应该在 javascript中首先声明初始值

1、表单类型为文本输入框

使用v-model指令可以在表单 input 、 textarea 以及 select 元素上创建双向数据绑定 根据表单上的值,自动更新模板变量中的值
<template>
  <div>
    <p>
      用户名:<input type="text" v-model="userinfo.name" />
    </p>
    <p>
      密码:<input type="password" v-model="userinfo.pwd" />
    </p>
    <p> {{userinfo.name}} 已登录</p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      userinfo:{
        name:"xxx",
        pwd:"xxx"
      }
    };
  },
};
</script>

2、表单类型为文本域

<template>
  <div>
    <p>
      <input type="textarea" v-model="a" />
    </p>
    <p>{{a}}</p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      a: 1,
    };
  },
};
</script>

<style scoped>
input{
  width: 200px;  /* 设置宽 */
  height: 50px;  /* 设置高 */
}
</style>

3、单个复选框:数据为绑定为 truefalse 的布尔值

<template>
  <div>
    <p>
      <input type="checkbox" v-model="checked" />
    </p>
    <p>{{checked}}</p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      checked: false,
    };
  },
};
</script>

<style scoped>
input {
  width: 100px;
  height: 100px;
}
</style>

复选框:选中的结果会绑定到同一个数组,将保存的 v-model 变量创建为数组

<template>
  <div>
    <p>
      <input type="checkbox" name="fruit" value="banana" v-model="checked" /> 香蕉
      <input type="checkbox" name="fruit" value="apple" v-model="checked" /> 苹果
      <input type="checkbox" name="fruit" value="orange" v-model="checked" /> 橘子
    </p>
    <p>{{checked}}</p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      checked: new Array(), // [] 空数组
    };
  },
};
</script>

<style scoped>
input {
  width: 20px;
  height: 20px;
}
</style>


4、表单类型为单选框

<template>
  <div>
    <h3>哈哈,我的性别是:{{checked}}</h3>
    <p>
      <input type="radio" name="gender" value="man" v-model="checked"><input type="radio" name="gender" value="women" v-model="checked"><input type="radio" name="gender" value="secret" v-model="checked"> 保密
    </p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      checked: "XX", 
    };
  },
};
</script>

5、表单类型为下拉框

<template>
  <div>
    <h3>十一你想要去旅游的城市:{{selected}}</h3>
    <select v-model="selected">
      <option disabled value selected="selected">省份</option>
      <option value="山西">山西</option>
      <option value="北京">北京</option>
      <option value="上海">上海</option>
    </select>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      selected: "",
    };
  },
};
</script>

设置select标签的multiple属性即可设置为多选下拉菜单,按着ctrl键可以多选

<template>
  <div>
    <h3>十一你想要去旅游的城市:{{selecteds}}</h3>
    <select multiple v-model="selecteds">
      <option value="山西">西安</option>
      <option value="北京">北京</option>
      <option value="上海">上海</option>
    </select>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      selecteds: new Array(), // 多重数据一般都要保存成数组
    };
  },
};
</script>

v-model修饰符介绍及案例讲解

默认情况下,v-modelinputtextarea表单中进行同步输入框的改动,添加了.lazy修饰符之后,对应的v- model绑定事件触发机制将变为change事件,只有在光标失去焦点时会触发。

<template>
  <div>
    <h3 v-html="msg"></h3>
    <input type="text" v-model.lazy="msg" />
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "hello",
    };
  },
};
</script>

使用.trim可以自动过滤输入框的首尾空格

<template>
  <div>
    <h3 v-html="msg"></h3>
    <input type="text" v-model.trim="msg" />
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "hello",
    };
  },
};
</script>

如果用户希望将输入表单的内容处理为Number类型,可以使用.numberv-model进行修饰;如果表单字符串无法被处理为数字,则返回原始的值

<template>
  <div>
    <h3 v-html="msg"></h3>
    <input type="text" v-model.number="msg" />
    <p>{{typeof msg}}</p>
  </div>
</template>

<script>
export default {
  name: "Hello",
  data() {
    return {
      msg: "123",
    };
  },
};
</script>

6. 属性绑定指令

v-bind

v-bind 主要用于属性绑定,比方你的class属性style属性value属性href属性等等,只要是属性,就可以用v-bind指令进行绑定。

对象语法绑定class介绍及案例讲解


对象语法
顾名思义,就是传给class的是一个对象,例如:

<template>
<div id="app">
  <p class="font_Size" v-bind:class="{ red: isRed }">Hello World!</p>
</div>
</template>
<script>
 export default {
   name:'HelloWorld',
    data: {
      return {
      isRed: true
    }
   }
 }
</script>
<style>
    css先后顺序有影响
    .red{
        font-size: 20px;
        color: red;
    }
    .font_size{
        font-size: 40px;
        color: blue;
    }
    
</style>

数组语法绑定class介绍及案例讲解

数组语法
数组语法可以理解为我们把一个class列表直接传给class,例如:

<div id="app">
 <p v-bind:class="[redClass, centerClass]">Hello World!</p>
</div>
<script>
export default{
  name:'HelloWorld',
    data: {
      return{
      	redClass: 'active',
    	centerClass: 'text-danger'
    }
    }
  }

</script>
<style>
.active {
	width: 100px;
	height: 100px;
	background: green;
}
.text-danger {
	background: red;
}
</style>

绑定style介绍及案例讲解

除了绑定class,v-bind指令还可以绑定style,绑定style和绑定class其实大同小异,也是可以使用对象语法和数组语法,使用对象语法的时候也是可以直接绑定data上的对象或者绑定一个返回对象的计算属性
唯一不同的是在使用数组语法的时候,绑定class传的是class列表,绑定style传的是style对象列表

<template>
	<div id="app">
	 <p>直接绑定:</p>
	 <p v-bind:style="{color: redColor, 'text-align': centerPos}">Hello World!</p>
	 <p>绑定data的对象:</p>
	 <p v-bind:style="classObj">Hello World!</p>
	 <p>绑定计算属性:</p>
	 <p v-bind:style="classObj1">Hello World!</p>
	 <p>数组语法:</p>
	 <p v-bind:style="[redStyle, centerStyle]">Hello World!</p>
	</div>
</template>
<script>
export default{
  name:'HelloWorld',
    data: {
      return{
           redColor: 'red',
	  			centerPos: 'center',
	  			redStyle: {color: 'red'},
	  			centerStyle: {'text-align': 'center'},
	  			classObj: {
	  				color: 'red',
	    		'text-align': 'center'
	  		}
    }

    },
	computed: {
		classObj1: function(){
			return {
				color: 'red',
	    		'text-align': 'center'
			}
		}
	}
  }
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/739106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【unity小技巧】unity事件系统创建通用的对象交互的功能

文章目录 前言实现1. **InteractEvent 类**&#xff1a;2. **Interact 类**&#xff1a;3. **Player 类**&#xff1a;4. **Chest 类**&#xff1a; 工作流程说明&#xff1a;开单个箱子按钮触发打开很多箱子拾取物品&#xff08;传参&#xff09;参考完结 前言 游戏开发过程中…

有效利用MRP能为中小企业带来什么?

在离散制造企业&#xff0c;主流的生产模式主要为面向订单生产和面向库存生产&#xff08;又称为预测生产&#xff09;&#xff0c;在中小企业中&#xff0c;一般为面向订单生产&#xff0c;也有部分面向库存和面向订单混合的生产方式&#xff08;以面向订单为主&#xff0c;面…

【初阶数据结构】深入解析栈:探索底层逻辑

&#x1f525;引言 本篇将深入解析栈:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1…

Kylin系列:架构和高级功能详解

目录 一、Kylin的架构 1.1 总体架构概述 1.2 数据源 1.3 元数据存储 1.4 构建引擎 1.5 存储引擎 1.6 查询引擎 1.7 用户接口 二、Kylin的高级功能 2.1 多维立方体(Cube) 2.1.1 Cube的定义 2.1.2 Cube的构建 2.2 查询优化 2.3 数据模型和星型模式 2.3.1 数据模…

我的常见问题记录

1,maven在idea工具可以正常使用,在命令窗口执行出现问题 代码: E:\test-hello\simple-test>mvn clean compile [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for org.consola:simple-test:jar…

SpringBoot系列之搭建WebSocket应用

SpringBoot系列之@ServerEndpoint方式开发WebSocket应用。在实时的数据推送方面,经常会使用WebSocket或者MQTT来实现,WebSocket是一种不错的方案,只需要建立连接,服务端和客户端就可以进行双向的数据通信。很多网站的客户聊天,也经常使用WebSocket技术来实现。 WebSocket…

[巨详细]使用HBuilder-X新建uniapp项目教程

文章目录 安装HBuilder-X启动uniapp项目其他&#xff1a;下载预览浏览器下载终端插件想用uni-ui 安装HBuilder-X 详细步骤可看上文》》 启动uniapp项目 先打开HBuilder-X 点击新建项目 选择uniapp侧边栏&#xff0c;mian中的点击浏览 选择已经安装到本地的uniapp项目&#…

多商户零售外卖超市外卖商品系统源码

构建你的数字化零售王国 一、引言&#xff1a;数字化零售的崛起 在数字化浪潮的推动下&#xff0c;零售业务正经历着前所未有的变革。多商户零售外卖超市商品系统源码应运而生&#xff0c;为商户们提供了一个全新的数字化零售解决方案。通过该系统源码&#xff0c;商户们可以…

SpringIOC核心源码

一、Spring IOC容器源码解析 1、Spring IOC容器的核心类 &#xff08;1&#xff09;BeanFactory与ApplicationContext &#xff08;2&#xff09;默认容器DefaultListableBeanFactory a. DefaultListableBeanFactory实现的接口 b.DefaultListableBeanFactory继承的类&#…

【TB作品】MSP430G2553单片机,红外双机通信,红外通信程序

文章目录 NEC 红外通信协议实验步骤1. 硬件连接2. 程序说明红外发射部分红外接收部分 说明帮助 NEC 红外通信协议 NEC 红外通信协议是一种广泛应用于遥控器设备的红外通信协议。它采用脉冲宽度调制(PWM)来编码数据&#xff0c;并使用38kHz的载波频率进行传输。协议的特点如下&…

让在制品管理更有效

徐总的工厂生产线非常繁忙&#xff0c;每天都在不停地运转。但在制品的流转和存储也非常混乱&#xff0c;导致了很多问题的出现。 一方面&#xff0c;由于缺乏有效的管理&#xff0c;在制品的库存不断增加&#xff0c;占用了大量的资金和空间资源。这些库存不仅增加了库存成本&…

麦肯锡:量子传感究竟在何处可以发光发热

量子传感技术已经提供价值&#xff0c;潜在的应用案例可以塑造多个行业。有四种核心技术具有应用前景&#xff1a;固态自旋、中性原子、超导电路和离子阱&#xff0c;它们具有在广泛的物理属性上的传感能力&#xff0c;包括磁场、电场、旋转、温度、重力、时间和压力。选择哪种…

HTML(23)——垂直对齐方式

垂直对齐方式 属性名&#xff1a;vertical-align 属性值效果baseline基线对齐(默认)top顶部对齐middle居中对齐bottom底部对齐 默认情况下浏览器对行内块&#xff0c;行内标签都按文字处理&#xff0c;默认基线对齐 导致图片看起来会偏上&#xff0c;文字偏下。 示例&#…

USB2.0学习1--基本概念

目录 1.USB概念 2.USB协议发展 3.USB接口类型 3.1 TYPE类型 3.2 Mini类型 3.3 Micro类型 4. USB体系结构和关键概念 4.1 USB工作原理 4.2 USB物理拓扑结构 4.3 USB逻辑拓扑结构 4.4 USB软件架构 4.5 USB数据流模型 4.5.1 USB设备端点 4.5.2 USB管道 4.6 USB即插…

高晓松音频 百度网盘,高晓松音频 百度网盘资源,百度云大全

讲座主要围绕分享了自己的心得和体会&#xff0c;以及对产业现状的深刻洞察。认为&#xff0c;不仅是一种艺术形式&#xff0c;更是一种生活方式。他鼓励年轻人要勇于追求自己的音乐梦想&#xff0c;同时也要关注音乐产业的发展趋势&#xff0c;为音乐产业的繁荣贡献自己的力量…

自动预约申购 i茅台工具完善

自动预约申购茅台工具 概述新的改变界面预览 概述 今天刷到一个windows自动刷茅台的工具&#xff0c;是用wpf实现的&#xff0c;看到作者最后是2023年更新的&#xff0c;评论中有好多人提出一些需求&#xff0c;刚才在学习wpf&#xff0c;就试着完善了一下。 工具下载&#x…

分布式系列之限流组件

概述 在高并发场景下&#xff0c;请求量瞬间到达&#xff0c;后端服务器即使有缓存、集群主备、分库分表、容错降级等措施&#xff0c;也有可能扛不住这请求量&#xff0c;因此可考虑引入限流组件。限流的目的&#xff1a;防止恶意请求流量或流量超出系统承载。 应用场景&…

DEtection TRansformer (DETR)与YOLO在目标检测方面的比较

1. 概述 计算机视觉中的目标检测是一个复杂而有趣的领域&#xff0c;它涉及到让计算机能够识别图像中的物体&#xff0c;并确定它们的位置。下面是DETR和YOLO这两种目标检测方法简单比较&#xff1a; 1.1 YOLO YOLO是一种非常流行的目标检测算法&#xff0c;它的核心思想是将…

IDEA 2024.01版本 git分支merge合并

使用idea工具来进行merge合并 1、拉取远端分支信息 2、我的分支是sprint-240627,我要将test分支合并到我这个分支上 找到test分支 3、选择【Merge origin/test into sprint-240627】 从test合并到我们要合并得分支上&#xff0c;结束 4、如果有冲突&#xff0c;就解决冲突即可…

5. zabbix分布式监控

zabbix分布式监控 一、zabbix分布式监控二、zabbix分布式监控部署1、环境描述2、zabbix proxy的部署2.1 安装zabbix proxy相关的软件2.2 创建proxy需要的库、导入表2.3 编辑zabbix proxy配置文件&#xff0c;指定数据库连接2.4 启动zabbix proxy 3、在zabbix server添加代理4、…