【Vue2】数据绑定_MVVM模型_数据代理_事件处理
目录
一、 数据绑定
1. Vue中有2种数据绑定的方式:
2. 响应式原理
el 与 data 的两种写法
二、 MVVM模型
三、 数据代理
1.回顾Object defineproperty方法
2. 何为数据代理
3.Vue中的数据代理
四、 事件处理
1.事件的基本使用:
2. Vue中的事件修饰符:
3. 键盘事件
总结不易~ 本章节对我有很大的收获,希望对你也是!!!
一、 数据绑定
Vue2 的数据绑定是其核心特性之一,它采用 双向数据绑定(Two-way Data Binding) 机制,使数据和视图保持同步更新。
1. Vue中有2种数据绑定的方式:
- 单向绑定(v-bind):数据只能从data流向页面。
- 双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data。
备注:
- 双向绑定一般都应用在表单类元素上(如:input、select等)
- v-model:value 可以简写为 v-model,因为v-model默认收集的就是value值。
单向绑定(v-bind
):
<p v-bind:title="message">{{ message }}</p>
双向绑定(v-model
):
<input v-model="name">
2. 响应式原理
Vue2 通过 数据劫持 + 观察者模式,当 data
发生变化时,Vue 触发 getter/setter
监听变化,并通知依赖更新视图。
<div class="root"><!-- 普通写法 -->单向数据绑定: <input type="text" v-bind:value="name"> <br>双向数据绑定: <input type="text" v-model:value="name"><br><!-- 简写 -->单向数据绑定: <input type="text" :value="name"> <br>双向数据绑定: <input type="text" v-model="name"><br></div>
当我对data里面的name值直接进行修改的时候,不论是单向还是双休, 都要对页面渲染的数据发生变化,因为他们都是要从data存储数据的地方获取name值,都是互通的
当我只对单向数据绑定修改时:
只能实现单向数据传递,没法将数据从页面流向data
当我对双向数据绑定修改时:
都能够实现页面 <--->data数据的双向流动完成修改
<!-- 如下代码是错误的 因为v-model 只能应用在表单元素上(输入类元素) --><h2 v-model:x="name">你好啊</h2>
el 与 data 的两种写法
el 的第一种写法:
在new的Vue里面通过el来获取与div容器的对应关系
const v = new Vue({el: '.root', // 第一种写法 来绑定容器跟Vue一一对应data: {name: ""}})
el 的第二种写法:
由于已经构建好了元素v, 那么直接用v的内置函数$mount来进行挂载 于外面的div容器进行一一对应
const v = new Vue({name: ""}})v.$mount('.root') // 第二种写法
data数据的第一种写法:
对象式,进行数据构造
const v = new Vue({el: '.root', data: { 第一种写法 对象式name: ""}
data数据的第二种写法,函数式
可能现在不常用,但是到后面如果不用函数式写法,就会报错!直接对该函数只进行返回,这里照样在div容器内可以直接获取到{{name}}
// data 的第二种写法 函数式 (常用 )data: function () {console.log(this) // 这里的this就是Vue实例对象return {name: '我是哈哈'}}// 简写data() {console.log(this)return {name: 'hh'}}})
二、 MVVM模型
MVVM模型
- M:模型(Model) :data中的数据
- V:视图(View) :模板代码
- VM:视图模型(ViewModel):Vue实例
观察发现:
- data中所有的属性,最后都出现在了vm身上。
- vm身上所有的属性 及 Vue原型上所有属性,在Vue模板中都可以直接使用。
<div class="root"><h1>学校名称:{{name}}</h1><h1>学校地址:{{address}}</h1><h1>测试一下1:{{1+1}}</h1><h1>测试一下2:{{$emit}}</h1></div>
</body><script>const vm = new Vue({el: '.root',data: function () {return {name: "hh",address: "湖北武汉"}}})console.log(vm)
</script>
测试一下2:就是vm里面新建new的内置函数了
在 Vue 开发中,通常使用 `const vm = new Vue({...})` 创建 Vue 实例,其中 `vm` 代表 ViewModel(视图模型),符合 MVVM(Model-View-ViewModel)架构。它作为数据(Model)和视图(View)之间的桥梁,实现数据绑定和 DOM 更新。`vm` 命名简洁明了,有助于区分 Vue 实例与普通变量,提高代码可读性。因此,`vm` 作为 Vue 实例的命名已成为开发中的常见约定。
三、 数据代理
1.回顾Object defineproperty方法
let number = 81let person = {name: '张三',sex: '男',// age: 18}// 此时 这里的age属性 是不可以被遍历的 , 并且这个age是不可以被修改的Object.defineProperty(person, 'age', {// value: 18,// enumerable: true, // 控制属性是否可以枚举 默认值是false// writable: true, // 控制属性是否可以被修改 默认值是false// configurable: true, // 控制属性是否可以被删除 默认值是false // 当有人读取person的age属性时,get函数就会被调用, 且返回值就是age// get: function () {// return number// }get() {return number},// 修改set(value) {number = value}})console.log(person)
这里我们可以看到,通过Object.defineProperty(person, 'age', {}) 新添加的age属性的颜色是跟person对象中自己定义的name 和 sex属性颜色是不一样的
因为该person属性的自定义对象中无论是访问还是修改,都是随意的,这样对数据都没有得到安全的保障,而这里的age 确实要通过get 和 set函数来进行访问分别来得到 和 修改该age属性的值,这里就有点向C++的私有化 对象的构建,为了类里面的数据安全,只有通过重新构建函数来得到private私有化数据的值才是更安全的,这样外面的对象就不能直接对类里面的属性值进行修改!
2. 何为数据代理
数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)
let obj = { x: 100 }let obj2 = { y: 200 }Object.defineProperty(obj2, 'x', {get() {return obj.x // 当访问 obj2.x 时,实际返回 obj.x 的值},set(value) {obj.x = value // 当修改 obj2.x 时,实际修改的是 obj.x}})console.log(obj)console.log(obj2)
通过 obj2
访问 obj
中的 x
属性,让 obj2.x
读写时实际上操作的是 obj.x
。
-
get()
作用:当console.log(obj2.x)
时,实际返回obj.x
的值,即100
。 -
set(value)
作用:当obj2.x = 300
时,实际上obj.x
也会变成300
。obj2.x = 300console.log(obj)console.log(obj2)
3.Vue中的数据代理
1.Vue中的数据代理:
通过vm对象来代理data对象中属性的操作(读/写)
2.Vue中数据代理的好处:
更加方便的操作data中的数据
3.基本原理:
- 通过Object.defineProperty()把data对象中所有属性添加到vm上。
- 为每一个添加到vm上的属性,都指定一个getter/setter。
- 在getter/setter内部去操作(读/写)data中对应的属性。
<div class="root"><h2>学校名称:{{name}}</h2><h2>学校地址:{{address}}</h2></div></body>
<script src="../js/vue.js"></script>
<script>const vm = new Vue({el: '.root',data: {name: "我是哈哈",address: '湖北武汉'}})</script>
证明:当我们把data数据单独抽离出来的时候,证明vm._data 这内置_data数据就是跟data对象是一模一样,说明vm._data 就是我们传入的data
let data = {name: "我是哈哈",address: '湖北武汉'}const vm = new Vue({el: '.root',data})// 这里就有 vm._data === option.data === data// 说明vm._data 就是我们传入的data
四、 事件处理
1.事件的基本使用:
- 使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;
- 事件的回调需要配置在methods对象中,最终会在vm上;
- methods中配置的函数,不要用箭头函数!否则this就不是vm了;
- methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象;
- @click="demo" 和 @click="demo($event)" 效果一致,但后者可以传参;
<button v-on:click="showInfo">点我提示信息</button><!-- 简写 --><button @click="showInfo1">点我提示信息1</button>
v-on
是 Vue.js 的一个指令,用于监听 DOM 事件,并在触发时执行指定的方法或表达式。它的作用相当于原生 JavaScript 中的 addEventListener
。
当我们想要进行函数传参时:
<!-- 传参 但是这样会将event弄丢 就要用$event关键字来提前占位--><button @click="showInfo2(66, $event)">点我提示信息2</button>
其中showInfo()是vm对象里面的一个方法:
const vm = new Vue({el: '.root',// 只有配置在data里面的数据才会做数据劫持 进行数据代理 有 set getdata: {name: "武汉传媒学院",},// method 可以设置很多的回调 这里面设置方法 只要写方法名即可!!methods: {showInfo1(e) {console.log(e.target.innerText)alert('欢迎报考武汉传媒学院')},showInfo2(number, e) {console.log(number)console.log(e.target.innerText)alert('欢迎报考武汉传媒学院')}}})
2. Vue中的事件修饰符:
- prevent:阻止默认事件(常用);
- stop:阻止事件冒泡(常用);
- .once:事件只触发一次(常用);
- capture:使用事件的捕获模式;
- self:只有event.target是当前操作的元素时才触发事件;
- passive:事件的默认行为立即执行,无需等待事件回调执行完毕;
1.阻止默认事件 :
本该点击后进行跳转到百度网页的,却没有进行跳转!
<!-- 阻止默认事件(常用) --><a href="http://www.baidu.com" @click.prevent="showInfo">点击我提示信息</a>
2. 阻止事件冒泡:
如果不添加stop事件修饰符, 那么从button位置开始就会依次网上冒泡,来调用两次showInfo函数,但是添加了stop时间修饰符后,该冒泡事件就会在当前button按钮位置停止
<!-- 阻止事件冒泡(常用) --><div class="demo1" @click="showInfo"><button @click.stop="showInfo">点位提示信息</button></div>
3. 只触发一次事件:
如果不添加once事件修饰符,那么点一次button就会调一次showInfo函数,但是添加了once事件修饰符后,多次点检button按钮只会触发一次调用showInfo函数
<!-- 事件只触发一次(常用) --><button @click.once="showInfo">点位提示信息</button>
4. 事件捕获:
当我们点击第二个div 也就是box2的时候,首先就是要发生事件捕获 从外层依次往里找 就是从box1 找到box2 , 然后开始调用showMsg函数 依次往上冒泡 在到box1 再次调用showMsg,这里就会有一个问题,明明已经从box1开始往下寻找,为何不直接在这个时候就进行执行当前的函数调用呢?? 这也就是说是一种事件捕获,那么添加事件修饰符capture,当前事件就在捕获阶段执行,不会在进行冒泡
<!-- 使用事件的捕获模式 --><!-- 在捕获阶段就进行事件操作 完成事件操作后 就不会发生事件冒泡--><div class="box1" @click.capture="showMsg(1)">div1<div class="box2" @click="showMsg(2)">div2</div></div>
5.self 只有执行事件是当前DOM标签所触发的,才会执行和触发当前事件:
self事件修饰符标签可以看出来,当外面点击button按钮向上进行冒泡的时候,在demo1位置所触发的事件还是button事件冒泡上来的
<!-- 只有event.target 是当前操作的元素时才触发事件 就算是冒泡冒上去的 那么触发该位置的事件也只是原来冒泡的原事件,而不是当前事件--><!-- 那么这个self修饰符 就只能执行当前div所触发的事件 同样也能阻止冒泡--><div class="demo1" @click.self="showInfo"><button @click="showInfo">点位提示信息</button></div>
6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕;
.list {width: 200px;height: 200px;background-color: peru;overflow: auto; // 添加滚动条}li {height: 100px;}<!-- passive:事件的默认行为立即执行,无需等待事件回调执行完毕; --><!-- scroll 滚动条的滚动 --><!-- wheel 滚轮的滚动 --><!-- 当我滚动滚轮的时候 为什么滚动条没有动? 因为要触发了当前事件立即执行 要把当前事件执行完后 才能触发滚动条 --><!-- 那么passive 就会立即让滚动条进行滚动 直接进行触发 --><ul @wheel.passive="demo" class="list"><li>1</li><li>2</li><li>3</li><li>4</li></ul>
3. 键盘事件
1.Vue中常用的按键别名:
- 回车 => enter
- 删除 => delete (捕获“删除”和“退格”键)
- 退出 => esc
- 空格 => space
- 换行 => tab (特殊,必须配合keydown去使用)
- 上 => up
- 下 => down
- 左 => left
- 右 => right
2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)
3.系统修饰键(用法特殊):ctrl、alt、shift、meta
- 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。
- 配合keydown使用:正常触发事件。
4.也可以使用keyCode去指定具体的按键(不推荐)
5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
<div class="root"><h2>欢迎来到{{name}}学习</h2><!-- .enter 代表该键盘事件 回车键 --><input type="text" placeholder="按下回车提示输入" @keyup.enter="showInfo"><!-- 额外补充 如果要按切换大小这个键 CapsLock(不常见) 那么就要将大写转成小写 并且 由多个单词组成之间的单词要用-来进行链接 --><input type="text" placeholder="按下回车提示输入" @keyup.caps-lock="showInfo"><!-- 系统修饰键(用法特殊):ctrl、alt、shift、meta(1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。(2).配合keydown使用:正常触发事件。 --><input type="text" placeholder="按下回车提示输入" @keyup.ctrl="showInfo"><!-- 只有在 ctrl + y 才适配 --><input type="text" placeholder="按下回车提示输入" @keyup.ctrl.y="showInfo"></div>
</body><script>const vm = new Vue({el: '.root',data: {name: ""},methods: {showInfo(e) {// console.log(e.target.value)// console.log(e.keyCode)// if (e.keyCode !== 13) returnconsole.log(e.target.value)}}})
总结不易~ 本章节对我有很大的收获,希望对你也是!!!
相关文章:
【Vue2】数据绑定_MVVM模型_数据代理_事件处理
目录 一、 数据绑定 1. Vue中有2种数据绑定的方式: 2. 响应式原理 el 与 data 的两种写法 二、 MVVM模型 三、 数据代理 1.回顾Object defineproperty方法 2. 何为数据代理 3.Vue中的数据代理 四、 事件处理 1.事件的基本使用: 2. Vue中的事…...
Python数据类型-dict
Python数据类型-dict 字典是Python中一种非常强大且常用的数据类型,它使用键-值对(key-value)的形式存储数据。 1. 字典的基本特性 无序集合:字典中的元素没有顺序概念可变(mutable):可以动态添加、修改和删除元素键必须唯一且不可变&…...
win10之mysql server 8.0.41安装
一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…...
解决Oracle PL/SQL中“表或视图不存在“错误的完整指南
解决Oracle PL/SQL中"表或视图不存在"错误的完整指南 前言问题概述根本原因分析一、 编译时与运行时验证差异二、权限问题三、 Schema命名问题 实际案例演示案例1:动态分表查询案例2:权限不足的场景 实用排查步骤排查流程图最佳实践建议解决方…...
从实用的角度聊聊Linux下文本编辑器VIM
本文从实用的角度聊聊Vim的常用命令。何为实用?我举个不实用的例子大家就明白了,用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成…...
MySQL的进阶语法8(SQL优化——insert、主键、order by、group by、limit、count和update)
目录 一、插入数据 1.1 insert 1.2 大批量插入数据 二、主键优化 2.1 数据组织方式 2.2 页分裂 2.2.1 主键顺序插入效果 2.2.2 主键乱序插入效果 2.3 页合并 2.4 索引设计原则 三、order by优化 3.1 执行以下两条语句(无索引) 3.2 创建索引…...
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的? 问题1:如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2:哪些寄存器,去哪里找呢? 问题三,寄存器的含义ÿ…...
FreeRTOS源码下载分享
FreeRTOS源码下载分享 官网下载太慢了,分享下FreeRTOSv202411 FreeRTOSv202411.00.zip 链接: https://pan.baidu.com/s/1P4sVS5WroYEl0WTlPD7GXg 提取码: g6aq...
PyArrow 核心技术与应用:高效数据处理与跨生态集成实践
Apache Arrow 作为列式内存数据格式的行业标准,其 Python 接口 PyArrow 正在重塑数据科学生态。本文深入解析 PyArrow 的核心计算能力,涵盖统计函数、分组聚合、窗口操作及跨库集成,通过完整代码示例演示如何利用其高性能特性优化数据处理流程…...
机试题——PCB印刷电路板布线
题目描述 在 PCB 印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大,而且器件之间还可能存在其他干扰源。为了简化问题,我们将电路板简化为一个 ( M * N ) 的矩阵,每个位置(单元格)的值表示其源干…...
数据化管理(一)---什么是数据化管理
目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…...
Android 10.0 通过广播控制systemui状态栏动态显示和隐藏功能实现
1.前言 在10.0的系统rom定制化开发中,在某些特定的产品开发中,需要通过接口来控制系统状态栏的显示和隐藏, 所以就需要了解systemui状态栏的显示构造过程,然后通过相关接口来显示和隐藏状态栏,接下来就来 实现相关的功…...
Linux服务器安装MinerU
安装MinerU 为了确保项目的稳定性和可靠性,我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时,能够获得最佳的性能表现和最少的兼容性问题。 这里我们以基础的 [[Linux服务器部署PaddleX实战教程]] 使…...
深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本
前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金…...
Vite 内联 CSS 和 JS 的解决方案
使用 vite-plugin-singlefile(推荐) 这个插件专门用于将整个 Vite 应用打包成单个 HTML 文件,内联所有 JS 和 CSS。 安装 pnpm i vite-plugin-singlefile -D配置 vite.config.js import { defineConfig } from vite import { viteSingleF…...
致敬生物信息学先驱:玛格丽特·戴霍夫(Margaret Dayhoff,1925-1983)
李升伟 编译 社论 发布于:2025年3月11日 《自然-计算科学》第五卷 第187页(2025年) 在玛格丽特戴霍夫(Margaret Dayhoff,1925-1983)百年诞辰之际,我们聚焦这位先驱在生物信息学领域留下的不朽…...
Knife4j文档请求异常 空指针
打开swagger文档报空指针异常 java.lang.NullPointerException: nullat springfox.documentation.oas.mappers.SchemaMapper.model(SchemaMapper.java:97)at springfox.documentation.oas.mappers.SchemaMapper.mapModel(SchemaMapper.java:85)at springfox.documentation.oas…...
笔记2——网络参考模型
一、OSI参考模型: 应用层: 报文 给应用程序提供接口 表示层: 进行数据格式的转换 会话层: 在通讯双方之间建立、管理和终止会话 传输层: 数据段;建立、维护、取消一次端到端的数据传输过程;控制…...
Spring AOP + Redis缓存设计实战:基于注解的优雅三防方案(击穿/穿透/雪崩)
文章目录 摘要 正文一、缓存设计的痛点与破局二、核心代码拆解:四层防御设计1. 注解驱动(ZywCacheable)2. 缓存击穿防护:双重检查锁3. 缓存穿透防护:空值标记4. 缓存雪崩防护:TTL随机算法 三、生产环境最佳…...
洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构
题目描述 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a a a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2 2 2,向下取整)。第几天的时候木…...
jdk21新特性详解使用总结
jdk21新特性详解总结 1.StringBuilder和StringBuffer新增了一个repeat方法 /*** Java 21的StringBuilder和StringBuffer新增了一个repeat方法*/public static void repeatStr(){var sbnew StringBuilder().repeat("*",10);System.out.println(sb);}运行结果如下&…...
解码 collections.Counter - 频率统计的利器
文章目录 前言一、什么是 collections.Counter?二、 基本用法:从创建到访问2.1 创建 Counter 对象2.2 访问计数三、 核心功能:更新与排序3.1 更新计数3.2 获取常见元素四、高级用法:数学运算与转换4.1 数学运算4.2 类型转换五、 实际应用:Counter 的威力5.1 词频统计5.2 在…...
Mysql基础笔记
# 1.SQL数据类型 可以去这篇文章看看: 最全 SQL 字段类型(4种)、属性(6种)总结:https://blog.csdn.net/weixin_45654582/article/details/119157403 ### 一.整数类型 ### 二.小数类型(2种) 1、浮点型:…...
HttpClient-03.入门案例-发送POST方式请求
一.发送POST方式请求 编写代码: 1.创建一个HttpClient对象 2.创建一个HttpGet请求 3.发送http的get请求并获得响应对象 4.通过发送GET请求获取的CloseableHttpResponse响应对象来获取状态码以及响应数据 package com.sky.test;import com.alibaba.fastjson.JS…...
Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>
包是Oracle数据库中一种重要的PL/SQL程序结构,它将逻辑相关的变量、常量、游标、异常、过程和函数组织在一起,提供了更好的封装性和模块化。在大型项目中,可能有很多模块,而每一个模块又有自己的存过、函数等。而这些存过、函数默…...
每日一题---买卖股票的最好时机(一)、(二)
目录 买卖股票的最好时机(一) 一、题目链接:买卖股票的最好时机(一)_牛客题霸_牛客网 二、解题思路 三、代码实现 买卖股票的最好时机(二) 一、题目链接:买卖股票的最好时机(二)_牛客题霸_牛客网 编辑 二、解题思路 …...
XSS漏洞的分类解释和演示实验
XSS漏洞:跨站脚本攻击(cross site scripting),为了不和CSS混淆而改名。攻击者网web插入恶意script代码,当用户浏览页面时,嵌入的代码会被执行。 危害:盗取各类用户,强制发送电子邮件,网站挂马等…...
【Pandas】pandas DataFrame info
Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…...
JP1 Systemwalker 和 unirita的A-AUTO制品对比
以下是 JP1 SystemWalker(日立) 与 Unirita A-AUTO 的对比分析。两者均为日本企业开发的IT运维自动化工具,但在功能定位、技术架构和适用场景上存在显著差异: 1. 产品背景与市场定位 维度JP1 SystemWalkerUnirita A-AUTO开发商日…...
探索鸿蒙操作系统:迎接万物互联新时代
# 探索鸿蒙操作系统:迎接万物互联新时代 在科技飞速发展的当下,万物互联的时代浪潮正席卷而来。在这个全新的时代背景下,移动应用开发领域面临着前所未有的挑战,同时也迎来了诸多机遇。而鸿蒙操作系统(HarmonyOS&…...
NOIP2010提高组.引水入城
*前置题目 901. 滑雪 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 310, INF 0x3f3f3f3f; const int dx[4] {0, -1, 0, 1}, dy[4] {1, 0, -1, 0};int n, m, h[N][N]; int f[N][N]; int ans;int dfs(i…...
NLP高频面试题(二十九)——大模型解码常见参数解析
在大语言模型的实际应用中,如何更有效地控制文本生成的质量与多样性,一直是热门研究话题。其中,模型解码(decode)策略至关重要,涉及的主要参数包括 top_k、top_p 和 temperature 等。本文将详细介绍这些常见…...
【AI产品分享】面向图片的原始位置翻译功能
1. 背景 在撰写文字材料时,往往需要配套图像以增强表达效果。然而,有时自己绘制的图可能达不到理想的质量,而在其他文献材料中却能发现更清晰、直观的示例。希望在“站在巨人的肩膀上”优化自己的图像时,通常希望在保留原始图像的…...
为什么要为 REST API 添加认证
在不断发展的 Web 服务领域,REST API 在各种软件系统之间的通信中扮演着至关重要的角色。然而,强大的功能也伴随着巨大的责任。确保敏感数据的安全性和通信的可靠性是至关重要的。这时,认证就显得尤为重要。通过使用认证,我们可以…...
AI 数字人短视频数字人源码部署揭秘:开启虚拟内容创作新纪元
在当下短视频盛行的时代,AI 数字人短视频以其独特的魅力吸引着大众的目光。虚拟偶像在舞台上活力四射,电商平台中数字人不知疲倦地推荐产品,这些令人瞩目的表现背后,源码的部署起着至关重要的作用。它如同幕后的神奇工匠ÿ…...
佳能imageRUNNER 2206N基本参数及管理员密码
基本参数: 产品类型 激光数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 速度类型 低速 最大原稿尺寸 A3 复印/打印方式 激光静电转印方式 感光材料 OPC 显影系统 干式单组分显影 定影…...
【Linux篇】探索进程地址空间:计算机背后的虚拟世界
进程地址空间的奥秘:让你理解程序如何在计算机中生存 一. 程序地址空间1.1 基本概念1.2 虚拟内存管理1.3 为什么存在虚拟地址空间1.3.1 意义 2. 最后 本文将介绍进程地址空间的基本概念与结构,帮助读者理解操作系统如何管理和分配内存。进程地址空间指的…...
Docker部署sprintboot后端项目
创建Docker网络 docker network create icjs 部署Redis docker run -d \--network icjs \--name redis \-p 6379:6379 \redis:latest数据持久化 docker run --restartalways --network icjs -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.c…...
1.4 基于模拟退火改进蛇算法优化VGG13SE网络超参数的故障诊断模型
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏,查看更多内容。 目录 0 引言 1 改进原理 2 本文改进方法 3 改进蛇优化VGG13SE的故障诊断模型 4 结语 0 引言 在【博客】中,我们采用了蛇算法来对VGG1…...
Vue + Scss项目中实现自定义颜色主题的动态切换
当时面试的时候遇到面试官问的一个问题如何实现自定义颜色主题切换,当时我做的只是elementUIPlus提供的暗黑和默认主题切换 theme.scss // 增加自定义主题类型 $themes: (light: (/* 原有配置保持不变 */),dark: (/* 原有配置保持不变 */),custom: () // 空映射…...
C#实现HiveQL建表语句中特殊数据类型的包裹
用C#实现搜索字符串中用’(‘和’)‘包裹的最外层的里面里面的字符串,将里面的记录按一个或多个空格、换行或tab,或者是它的在一起的组合作为分隔,分隔出多个字符串组,如果组中有字符串中同时包含’<‘和’>’,则…...
27 python 标准库概览
在办公室里,每个员工都有一套预装的办公软件:Word 处理文档、Excel 制作表格、Outlook 收发邮件... Python 的标准库就像公司预装的 "办公全家桶",包含 100 多个模块,覆盖文件操作、时间管理、数据分析等日常需求,无需额外安装即可直接使用。 一、文件管理 1.…...
whisper 语音识别的安装与使用
Whisper 是由OpenAI开发的开源自动语音识别(ASR)模型,不仅支持音频转录,还可以用于视频转录。通过调用ffmpeg处理视频,支持主流音视频格式的转录。 安装 安装ffmpeg:下载ffmpeg,Releases B…...
搜广推校招面经六十四
滴滴搜推算法 一、定义一个树结构、特征结构。写一个决策树对样本打分 逆天啊,上来就是暴击 import numpy as np class TreeNode:def __init__(self, feature_indexNone, thresholdNone, leftNone, rightNone, scoreNone):self.feature_index feature_index #…...
zabbix监控网站(nginx、redis、mysql)
目录 前提准备: zabbix-server主机配置: 1. 安装数据库 nginx主机配置: 1. 安装nginx redis主机配置: 1. 安装redis mysql主机配置: 1. 安装数据库 zabbix-server: 1. 安装zabbix 2. 编辑配置文…...
动态规划,如何应用动态规划解决实际问题?
一、动态规划核心概念 动态规划是一种分阶段解决问题的数学方法,它将复杂问题分解为更小的子问题,通过存储子问题的解来避免重复计算。 关键特征: 最优子结构:问题的最优解包含子问题的最优解重叠子问题:问题可…...
常见操作系统特点及区别对比
操作系统名称类型特点主要用途许可证类型内核类型Windows桌面/服务器图形界面友好,软件生态丰富,闭源个人电脑、企业办公专有商业许可混合内核macOS桌面 (Unix-like)高度优化的硬件整合,Unix基础,闭源创意设计、开发专有商业许可混…...
【资讯分享】为Apple Intelligence打造的有效屏障:“隐私保护气泡”
导读:苹果在WWDC大会上推出Apple Intelligence,主打个性化智能服务,深度整合iOS生态,支持跨App操作与内容感知。通过本地计算与私密云计算(PCC)技术实现端到端加密,确保数据匿名化处理与高透明度…...
AT_abc306_b [ABC306B] Base 2
题目描述 给定一个长度为64的序列A(A\_0,A\_1,\dots,A\_{63})A(A_0,A_1,…,A_63),由0和1组成。 求A\_0 2^0 A\_1 2^1 \dots A\_{63} 2^{63}A_020A_121⋯A_63263。 约束条件 A\_iA_i是0或1。 输入 从标准输入中以以下格式给出输入: A_0A0 A_1A…...
C++IO流类库
一、输入输出流(I/O strea) 编译系统已经以运算符或函数的形式做好了对标准外设(键盘、屏幕、打印机、文件)的接口,使用时只需按照要求的格式调用即可。 cin>>x; cout<<x; cin.get(ch); C语言的I/O系统向用户提供一个统一…...