【Vue】上万个字把事件处理讲解的淋漓尽致
hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~
事件处理
事件的基本用法
重点内容
-
使用
v-on:xxx缩写@xxx绑定事件,其中xxx是事件名(回顾:v-bind缩写为冒号:) -
事件的回调需要配置在
methods对象中,最终会在VM上 -
methods中配置的函数,不要用箭头函数,否则 this 就不是VM了,重点强调! -
methods中配置的函数,都是被 Vue所管理的函数,this 的指向是VM(ViewModel-vue实例对象)或组件实例对象 -
@click="demo"和@click="demo($event)"效果一致,前者是默认会传event,省略了而已,后者更加灵活,可以传更多参数 -
当我们需要给函数传参时
@click='showInfo(666)'怎么获取event? -
关于
this的详细理解
详细解析
先看这一组代码,哪里有问题
<body><div id="root"><h2>这是name:{{name}}</h2><button v-on:click = "showInfo">点击提示信息</button></div><script type="text/JS">Vue.config.productionTip = falsefunction showInfo(){alert('你好哈')}new Vue({el:'#root',data:{name:'即兴小索奇'}})</script>
</body>
不知道methods的伙伴可能看不出什么问题,但实际的问题是点击按钮没有任何反应

image-20230812205755903
这里定义了一个普通的JS 函数 showInfo(),但没有将它添加到 Vue 实例的 methods 选项中,因此在模板中使用 v-on:click="showInfo" 时无法正确调用该函数我们需要将 showInfo 函数添加到 Vue 实例的 methods 选项中
因为 Vue 实例的 methods 选项专门用于存放可以在模板中调用的方法
当在methods中加上showInfo方法就会成功显示

image-20230812211754411
事件对象
当你在模板中使用事件处理函数时,Vue 会自动将事件对象作为第一个参数传递给该函数因此,你可以在事件处理函数中定义一个参数来接收这个事件对象常见的做法是将这个参数命名为 event,以表示它是一个事件对象
例如,在你的代码中,如果你使用 v-on:click="showInfo" 来绑定事件,那么在 showInfo 函数中,你可以定义一个名为 event 的参数,这样就可以访问到事件对象,从而获取事件的信息(如点击的坐标、触发的元素等)
举个栗子
<body><div id="root"><button v-on:click="showInfo">点击提示信息</button></div><script type="text/JS">new Vue({el: '#root',data: {name: '即兴小索奇'},methods: {showInfo(event) {console.log(event)console.log(event.target)alert('你好哈,点击坐标:' + event.clientX + ',' + event.clientY + ' ' + event.target.innerText);}}});</script>
</body>

image-20230812213221250
在这里这个事件就是button
event.target就是这个事件目标(button)

image-20230812213746135
用console.log(event)输出可以看到所有属性及方法

image-20230812213517353
当我们需要给函数传参时@click='showInfo(666)'怎么获取event?
当我们需要传参时,会发现event不能输出了,即使设置多个参数也是undefined,这时候我们只要在参数后面加上$(event)关键词即可
-
@click='showInfo(666,$event)方法中对应两个参数就可以输出event了,这是官方设置的,记住就行 -
对于event的顺序没有要求,可以把其它参数放在
event后面也行
this函数的区分
如果把下面代码中的普通函数改为箭头函数,它的this会如何变化?
<body><div id="root"><button v-on:click="showInfo">点击提示信息</button></div><script type="text/JS">new Vue({el: '#root',data: {name: '即兴小索奇'},methods: {showInfo:(event)=> {console.log(this) // 箭头函数时输出windowconsole.log(this) // 普通函数时输出vuealert('你好哈,点击坐标:' + event.clientX + ',' + event.clientY + ' ' + event.target.innerText);}}});</script>
</body>
-
当showInfo为普通函数时,显示的是Vue对象
-
当showInfo为箭头函数时,显示的是Window对象
在普通函数中,this 的值是在函数被调用时确定的,它可以根据调用的方式(比如函数被作为对象的方法调用、作为构造函数调用等)而发生改变
而在箭头函数中,this 的值是由外围(定义箭头函数的上下文)的上下文确定的,它继承自最近的非箭头函数父级换句话说,箭头函数的 this 始终指向定义箭头函数的代码块所在的上下文,而不是调用箭头函数的方式
这种行为对于在回调函数中捕获外部上下文非常有用,但也可能导致在某些情况下出现意外的结果所以,大家在使用箭头函数时,需要特别注意 this 的行为哈
注意
-
在被Vue管理的函数中(在Vue实例对象里面)最好都写成普通函数,不要写箭头函数!
让我们首先来看看普通函数中的 this:
函数作为独立函数调用: 当函数作为独立的函数调用时,this 会指向全局对象(在浏览器中通常是 window 对象,Node.js 中是 global 对象)
function normalFunction() {console.log(this); // 在浏览器中输出 window(全局对象)
}
normalFunction();
函数作为对象方法调用: 当函数作为对象的方法调用时,this 会指向调用该方法的对象
const obj = {name: 'John',greet: function() {console.log(this.name);}
};obj.greet(); // 输出 "John"
函数作为构造函数调用: 当函数用作构造函数创建新对象时,this 会指向正在创建的新对象
function Person(name) {this.name = name;
}const person = new Person('Alice');
console.log(person.name); // 输出 "Alice"
而在箭头函数中,this 的行为有所不同:
箭头函数中的 this: 箭头函数的 this 始终由外围(定义箭头函数的上下文)的上下文决定,它不会因为函数被调用的方式而改变
const arrowFunction = () => {console.log(this); // 这里的 this 是外围上下文中的 this
};
arrowFunction(); // 输出的 this 取决于外围上下文
这种行为使得箭头函数在某些情况下非常有用,例如在回调函数中,你可以捕获外部函数的上下文,避免了在回调中使用 that 或 self 来保存上下文
总结来说,普通函数中的 this 在调用时会根据调用方式和上下文而变化,而箭头函数中的 this 始终继承自外围上下文,不会随着调用方式的改变而改变
拓展一下
在箭头函数中,this 的取值是由箭头函数所在代码块的上下文决定的换句话说,箭头函数的 this 继承自最近的非箭头函数父级的 this 值
这意味着,如果箭头函数直接位于全局作用域中,那么它的 this 就会继承自全局对象(例如,在浏览器环境中,就是 window 对象)
让我们来看一个示例:
const arrowFunction = () => {console.log(this);
};
arrowFunction(); // 输出的 this 取决于全局上下文,通常是 window 或 global 对象(取决于环境)
在浏览器环境中运行上述代码,arrowFunction 的 this 将指向全局对象 window
然而,如果箭头函数嵌套在其他函数或对象方法中,它的 this 将继承自外围上下文:
function outerFunction() {const innerArrow = () => {console.log(this);};innerArrow();
}outerFunction(); // 输出的 this 取决于 outerFunction 的上下文
在这个示例中,innerArrow 的 this 将继承自 outerFunction 的上下文
我们可以在不同的上下文中尝试运行这些示例代码,并查看输出的 this 值,以更好地理解箭头函数的 this 行为
这里的this也就是输出全局对象window
<script type="text/JS">new Vue({el: '#root',data: {name: '小索奇'},methods: {showInfo: () => {console.log(this); // 输出全局对象 window,因为箭头函数没有外围上下文}}});</script>
索奇问答
这里可能又会有人问了
A:什么是外围上下文?
Q:在JS 中,每个函数都有一个自己的执行上下文(execution context),其中包含函数的作用域、参数、变量等信息函数的执行上下文在函数被调用时创建,随后被推入执行上下文栈(execution context stack)中,函数执行完毕后从栈中弹出
代码举例
假设有一个函数 outer 包含一个函数 inner,在 inner 函数中,outer 就是 inner 函数的外围上下文
function outer() {// 我是外围const outerVar = 'I am outer'; function inner() {console.log(outerVar); // 访问外围上下文中的变量}inner();
}
outer(); // 输出 "I am outer"
在这个例子中,inner 函数的外围上下文是包含它的 outer 函数的执行上下文因此,inner 函数可以访问 outer 函数中的变量 outerVar
另一个例子是使用事件处理函数时:
<!DOCTYPE html>
<html>
<head><title>Outer Context</title>
</head>
<body><button id="myButton">Click Me</button><script>const button = document.getElementById('myButton');button.addEventListener('click', function() {console.log(this); // 这里的 this 是事件目标,即按钮元素console.log('Button clicked!');});</script>
</body>
</html>
当按钮被点击时,事件处理函数中的 this 指向事件目标,即按钮元素这是因为事件处理函数的外围上下文是事件目标的上下文
全局作用域中的外围上下文: 在全局作用域中,外围上下文就是全局上下文~
console.log(this === window); // 在浏览器环境中输出 true,因为 this 在全局作用域中指向全局对象 window
外围上下文就是包裹当前代码块的上一层环境,它决定了代码中的 this、变量访问等行为
不同的this
-
这里再精简一下this,既然说了,一下子多拓展一点
当在不同的上下文中输出 this 时,会得到不同的结果以下是几个例子来演示不同上下文中的 this:
全局上下文中的 this:
console.log(this); // 在浏览器环境中输出全局对象 window,在 Node.js 中输出全局对象 global
对象方法中的 this:
const person = {name: 'John',sayHello: function() {console.log(this); // 指向当前对象 person}
};
person.sayHello();
构造函数中的 this:
function Person(name) {this.name = name;console.log(this); // 指向新创建的对象实例
}
const john = new Person('John');
箭头函数中的 this:
const myArrowFunction = () => {console.log(this); // 在浏览器环境中指向全局对象 window(如果没有外围上下文的话)
};
myArrowFunction();
加下外围函数的this:
当在外围函数中使用箭头函数时,箭头函数会继承外围函数的上下文这意味着,在外围函数中定义的箭头函数会共享外围函数的 this 值让我们来看一个示例:
function outerFunction() {console.log(this); // 外围函数的 thisconst innerArrow = () => {console.log(this); // 继承外围函数的 this};innerArrow();
}const myObject = {name: 'John',outer: outerFunction
};myObject.outer(); // 外围函数的 this 是 myObject,箭头函数继承了外围函数的 this
再来一个,加强理解
在data中的this:
data: {name: '即兴小索奇',age: '6',showInfo(){console.log(this) // 输出window}}
在全局作用域(即没有嵌套在任何函数或对象中)中定义对象字面量,这个函数实际上会成为全局对象的属性,那么对象字面量内部的函数的 this 默认会指向全局对象 window
所以,在对象字面量中定义了 showInfo 方法时,它的上下文(this 的值)会指向全局对象 window,而不是 Vue 实例
事件修饰符
用不同的事件修饰符时,以不同的方式行动
重点
-
**
.prevent**:这个修饰符就像是阻止事件按照平常的方式去做举个例子,你点击一个链接,但是加了.prevent修饰符,链接就不会打开新页面 -
**
.stop**:阻止事件传播给其他元素(阻止事件冒泡) -
**
.once**:只会触发一次事件,后面再次点击事件就无效了 -
**
.capture**:让事件监听器在捕获阶段就能听到事件,而不是等到冒泡阶段就好像是你提前听到了一个消息,比其他人都早 -
**
.self**:只有event.target是当前操作的元素时事件才会被触发; -
**
.passive**:事件的默认行为立即执行,告诉事件先做你的事情,无需等待事件回调执行完毕
修饰符可以连着写,比如@click.stop.prevent
索奇问答
A:什么是事件冒泡?
Q:事件冒泡是指当在DOM中触发一个事件时,事件会从触发的元素开始,然后逐级向上(向外)传播到DOM树的更高层次的元素,直到达到根节点为止这个过程就像气泡一样从水底冒到水面,所以称为“冒泡”
看下面的代码
<div class="demo1" @click="showInfo"><button @click="showInfo">看我小索奇冒泡</button>
</div>
new Vue({el: '.demo1',methods: {showInfo: function() {console.log('看我小索奇冒泡');}}
});
当你点击按钮时,以下事情会发生:
-
首先,按钮的点击事件会触发,因为按钮也绑定了
@click事件这时会执行按钮自己的showInfo方法,控制台会打印出 "看我小索奇冒泡" -
事件会冒泡到外部的
div元素,也会执行div绑定的showInfo方法,再次打印出 "看我小索奇冒泡"
弹窗两次

事件冒泡
点击按钮会依次触发按钮自己的点击事件处理程序和外部 div 元素的点击事件处理程序,这就是事件冒泡的过程
如果你想要阻止事件冒泡,就需要用到上面提到的修饰符,如 @click.stop修饰符 stop 会阻止事件继续向上层元素传播,这样只会触发按钮自己的点击事件处理程序,不会再触发外部 div 元素的点击事件处理程序
什么是capture?
简记重点:捕获是从外到里,冒泡是从里到外
当加上capture时,即使点击box2,box1在捕获阶段就开始处理了,即使点击2事件,先触发的也是1事件
<div class="box1" @click.capture="showMsg(1)">div1<div class="box2" @click="showMsg(2)">div2</div></div>
什么是self?
// 上面的@click.self只是管div的,只有target是div时候才会调用它的方法
<div class="container" @click.self="handleContainerClick"><button @click="handleButtonClick">点我提示信息</button>
</div>
methods: {handleContainerClick(event) {console.log("Container被点击,触发了handleContainerClick方法");console.log("事件目标 (target):", event.target);},handleButtonClick() {console.log("按钮被点击,触发了handleButtonClick方法");}
}
-
由于我们在外部的
container元素上使用了.self修饰符,只有点击container元素自身时,才会触发handleContainerClick方法如果点击按钮,事件目标是按钮,所以不会触发container上的点击事件处理程序 -
无论点击
container元素的哪个部分,都只有在点击container自身时才会触发点击事件处理程序点击按钮,事件会从按钮冒泡到container,但由于我们使用了.self修饰符,它不会触发container上的点击事件处理程序可能有点绕吧...仔细理解一下~
详解passive
-
在给移动端使用的时候用的会偏多一些
passive 是一个用于优化浏览器滚动性能的事件修饰符在Web开发中,滚动事件(例如滚动页面或元素)可能会触发一些复杂的处理,这可能导致页面性能下降,因为浏览器需要等待事件处理程序完成才能继续执行默认滚动行为
通过使用 passive 修饰符,可以告诉浏览器事件监听器,使浏览器在执行事件处理程序时更加高效,不必等待事件处理完成这对于优化滚动性能非常有帮助~
看下面代码演示
<style>#scroll-container {height: 400px;overflow: auto;}ul li {border-left: 50px;height: 400px;width: 400px;background-color: aquamarine;}</style>
</head>
<body><div id="app"><!-- 使用 passive 优化滚动性能 --><div id="scroll-container" @scroll.passive="handleScroll('优化')"><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul></div></div><script type="text/JS">new Vue({el: '#app',methods: {handleScroll(type) {console.log(`${type}滚动事件处理`);}}});</script>
</body>
滚动时,不用等待事件处理完成才能够执行操作
键盘事件
键盘上的每个按键都有自己的名称和编码,例如:回车键是13
Vue还对一些常用按键起了别名方便使用
Vue中常用的按键别名有下面一些(注意:别名是小写的,大些也可以,但是为了方便大多数写小写)
记住一下常见的即可
-
回车
enter -
删除
delete(退格和删除键都能够捕获) -
退出
esc -
空格
space -
换行
tab特殊 -
上下左右分别对应
up、down、left、right
Q:不用别名如何使用?
A:需要配合键值达到效果
<body><div id="root"><h2>{{name}}</h2><input type="text" placeholder="按下回车提示输入" @keyup = "showInfo"></div><script type="text/JS">Vue.config.productionTip = falsenew Vue({el:'#root',data:{name:"即兴小索奇"},methods:{showInfo(e){// console.log(e.target.value) //输入什么出什么valueif(e.keyCode !=13){console.log(e.target.value) // 当点击回车的时候再显示对应的value}console.log(e.keyCode)}}})</script>
</body>
上面配合别名只需要在@keyup后面添加别名即可,比如上面的案例使用 @keyup.enter即可,省去了非常多的麻烦
拓展
Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(烤肉串格式)
如:给CapsLock绑定事件 = @keyup.caps-lock
tips:可以借助下面获取键名和键码
想要获取每一个键名和键码可以用event.key,event.keyCode
console.log(e.key,e.keyCode)

image-20230818010846033
其中需要注意一些按键
-
tap:因为它的作用就是跳出,所以需要配合
keyup.down按下时候就触发的事件使用,否则没效果
特殊:系统修饰键(用法特殊)ctrl、alt、shift、meta(meta就是win菜单键)
都一样的道理,比如@keydown.ctrl
-
配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
-
配合keydown:能够正常触发事件,不用搭配其他按键
自定义别名
// 定义一个name 它的keyCode是66
vue.config.keyCodes.name = 66
对您有用的话点个免费的赞叭~

相关文章:
【Vue】上万个字把事件处理讲解的淋漓尽致
hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~ 事件处理 事件的基本用法 重点内容 使用v-on:xxx缩写xxx绑定事件,其中 xxx 是事件名(回顾:v-bind缩写为冒号…...
Remmina中VNC、SSH和RDP的区别
Remmina 可以在 Linux 系统上对远程进行连接。它支持多种远程连接协议,包括 VNC(Virtual Network Computing)、SSH(Secure Shell)和 RDP(Remote Desktop Protocol)。这些协议用于实现不同类型的…...
Spring Boot实现web.xml功能
Spring Boot实现web.xml功能 1. 基于注解实现1.1 组件注册1.2 WebInitParam注解 2. 基于编码实现2.1 Servlet & Filter2.2 Listener 3. 总结 在Spring Boot中,不再需要使用传统的 web.xml 文件来配置web应用的功能,Spring Boot支持通过注解和基于代码…...
陆拾捌- 如何通过数据影响决策(三)
一、如何正确的引导别人? 引导与误导的区别是什么? 看下面这广告图 单看上面大字的结果,感觉好像真的使用过的人均觉得有好处 可如果我们看下面的细字 对111位连续14天食用(本产品)的燕麦片非重度使用者所做调研… 从…...
VMware 三种网络连接模式
VMware虚拟机的三种网络连接模式:桥接,NAT,仅主机。 网卡vmnet0,vmnet1,vmnet8区别。 在VMware中,虚拟机的网络连接主要是由VMware创建的虚拟交换机负责实现的,VMware可以根据需要创建多个虚拟网络。 VMware的虚拟网…...
Scikit-Learn快速生成分类数据集
假如你学习了新的分类算法并想进一步探索研究、尝试不同的超参数评估模型性能,但问题是你找不到好的数据集用于实验。幸运的是Scikit-Learn 提供的 make_classification() 方法可以创建不同类型的数据集,它可以生成不同类型的数据集:二分类、…...
西门子 S7 协议解析
目录 1 建立连接 2 读数据 3 写数据 1 建立连接 03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A (第一次握手报文) 03 00 报文头 00 16 数据总长度:22 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A 报文结束…...
一、python解题——求序列最长递增
解题代码: import os import sys# 请在此输入您的代码 n int(input()) a list(map(int, input().split())) # 创建一个初始元素全为1的列表,用来存放每个递增序列的长度 b [1 for x in range(0, n)] # 设置num,用来控制b列表的下标 num …...
【Java 基础篇】Java线程:volatile关键字与原子操作详解
在多线程编程中,确保线程之间的可见性和数据一致性是非常重要的。Java中提供了volatile关键字和原子操作机制,用于解决这些问题。本文将深入讨论volatile关键字和原子操作的用法,以及它们在多线程编程中的重要性和注意事项。 volatile关键字…...
992. K 个不同整数的子数组
992. K 个不同整数的子数组 给定一个正整数数组 nums和一个整数 k,返回 nums 中 「好子数组」 的数目。 如果 nums 的某个子数组中不同整数的个数恰好为 k,则称 nums 的这个连续、不一定不同的子数组为 「好子数组 」。 例如,[1,2,3,1,2] 中…...
Vue 使用vue-cli构建SPA项目(超详细)
目录 一、什么是vue-cli 二,构建SPA项目 三、 运行SPA项目 前言: 在我们搭建SPA项目时候,我们必须去检查我们是否搭建好NodeJS环境 cmd窗口输入以下指令:去检查 node -v npm -v 一、什么是vue-cli Vue CLI(Vu…...
SpringBoot工程模板
spring脚手架:https://start.spring.io/ <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati…...
学习SLAM:SLAM进阶(十)暴力更改ROS中的PCL库
话不多说,上活 1.1 为什么要这么做 项目中有依赖。。。。 1.2 安装VTK7.1.1 PCL1.8.0 略 1.3 移植到ROS 删除ROS依赖的vtk6.2和PCL1.8.0的动态链接库: liugongweiubuntu:~$ sudo mv /usr/lib/x86_64-linux-gnu/libvtk* Desktop/lib/ [sudo] password fo…...
js 事件流、事件冒泡、事件捕获、阻止事件的传播
事件流 js 事件的执行过程分为捕获阶段(由外层节点传播到内层节点)和冒泡阶段(由内层节点传播到外层节点),即先执行捕获阶段的代码,后执行冒泡阶段的代码 事件冒泡 js 事件中的代码默认在冒泡阶段执行&…...
一家美国公司被黑,一个拉美国家政务服务瘫痪
政务系统承包商遭勒索攻击,导致哥伦比亚国家政务服务陷入瘫痪。 据报道,9月19日哥伦比亚的多个重要政府部门正在应对一次勒索软件攻击,官员们被迫大幅变更部门运作方式。 哥伦比亚卫生和社会保护部、司法部门、工商监管部门上周宣布&#x…...
c++ QT 十八位时间戳转换
先说一下UTC: 它是协调世界时间,又称世界统一时间、世界标准时间、国际协调时间,简称UTC UTC时间与本地时间关系:UTC 时间差本地时间 如果UTC时间是 2015-05-01 00:00:00 那么北京时间就是 2015-05-01 08:00:00 解释:…...
全国职业技能大赛云计算--高职组赛题卷④(容器云)
全国职业技能大赛云计算--高职组赛题卷④(容器云) 第二场次题目:容器云平台部署与运维任务1 Docker CE及私有仓库安装任务(5分)任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续…...
【TCP】延时应答 与 捎带应答
延时应答 与 捎带应答 一. 延迟应答(效率机制)二. 捎带应答(效率机制) 一. 延迟应答(效率机制) 延时应答:相当于 流量控制 的延伸。 流量控制是 踩下了刹车,是发送方发的不要太快&a…...
URL与URI小结
文章目录 一、URL是什么?URL的一般形式: 二、分类三、URI总结 一、URL是什么? 每条由Web服务器返回的内容都是和它管理的某个文件相关联的,这些文件中的每一个都有一个唯一的名字,叫做URL(通用资源定位符&…...
QT--day5
注册 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include <QMessageBox> #include<QString> #include<QSqlDatabase> …...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
