1718_js事件
目录
事件基础
一 DOM0级事件
1.1添加事件
1.2删除事件
二 DOM2级事件
2.1 添加事件
2.2 移除事件
三 常见的鼠标事件
四 其他事件
五 事件对象
5.1 获取事件对象
5.2 兼容写法
六
七、键盘事件
7.2键盘码
7.3 组合键
八、事件对象的属性
九、 事件冒泡
十、事件捕获
十一、浏览器的默认行为
十二 事件委托
事件基础
javascript 事件是由访问web页面的用户引起的一系列的操作,
当用户执行某些操作的时候,再去执行一系列代码,比如鼠标事件 键盘事件 滚动事件
一 DOM0级事件
语法: dom.οnclick=function(){}
1.1添加事件
<button id="btn1">按钮1</button>
<button id="btn2">按钮2</button>
<!-- 第三种 -->
<button id="btn3" onclick="console.log('点击了按钮3');console.log('哈哈哈')">按钮3</button>
<button id="btn4" onclick="fn4()">按钮4</button>
<script>var btn1 = document.querySelector("#btn1");var btn2 = document.querySelector("#btn2");// 写法一btn1.onclick=function(){console.log("点击了按钮1");}// 写法二var fn2 = function(){console.log("点击了按钮2");}btn2.onclick = fn2;function fn4(){console.log("点击了按钮4");}
1.2删除事件
btn1.onclick = null;
二 DOM2级事件
2.1 添加事件
ele.addEventListener(事件名,处理函数,布尔值);<button id="btn1">btn1</button>
<button id="btn2">btn2</button>
<script>var btn1 = document.querySelector("#btn1");var btn2 = document.querySelector("#btn2");// add 添加// event 事件// Listener 监听// 第一个参数是事件名 可以是点击 双击 鼠标滑过等等// 第二个参数是事件处理函数btn1.addEventListener('click',function(){console.log("点击了按钮1")})function fn2(){console.log("点击了按钮2");}btn2.addEventListener('click',fn2)
</script>
2.2 移除事件
ele.removeEventListener(事件名,函数)btn2.removeEventListener('click',fn2)
三 常见的鼠标事件
onclick 单击鼠标
ondblclick 双击鼠标
onmonsedown 按下鼠标还未弹起触发
onmonseup 弹起鼠标时触发
onmouseover 鼠标移入
onmouseout 鼠标移出
onmousemove 鼠标移动
onmouseenter 鼠标移入
onmouseleave 鼠标移出
四 其他事件
onload 当页面或者资源加载完毕后在执行onload里的代码
onchange 当表单元素发生改变时触发
* 文本框或文本域内容改变且失去焦点时触发
* 单选框和复选框 下拉框 只要一改变就会触发
oninput 当文本框input或者textarea 内容以改变就触发(实时获取到输入框的内容)
onfocus 获取到焦点时触发
onblur 失去焦点时触发
onresize 当窗口大小改变时触发
onscroll 页面中有滚动条 并且滚动时触发
五 事件对象
当触发某个事件,会产生一个事件对象, 这个对象包含了所以和事件有关的信息, 比如事件源(导致事件的元素)
事件的类型, 与特定事件的相关信息(比如oninput 获取到用户的输入,,,,onscroll 滚动的举例)
5.1 获取事件对象
btn.onclick=function(e){console.log(e);
}
ipt.oninput=function(e){console.log(e.target.value); //获取到输入框的值
}
window.onscroll=function(e){console.log(e);
}
5.2 兼容写法
var e = e || window.event; //这种写法叫短路操作如果能获取e就用e如果获取不到e 就用window.event
六
暂无,后续填充
七、键盘事件
keyup、keydown 、keypress
onkeydown: 当用户按下任意键时触发,如果按住不放 会一直触发
onkeyup: 当按键弹起来的时候触发,
onkeypress :当用户按下字符键的过程中触发,如果按住不放 会一直触发
ipt.onkeydown=function(e){//console.log("键盘按下的瞬间执行");console.log(e.keyCode);if(e.keyCode==13){console.log("执行搜索");}}ipt.onkeyup=function(){//console.log("按键松开的瞬间执行");}ipt.onkeypress=function(){//console.log("按压下去的过程执行");}
7.2键盘码
ipt.onkeydown=function(e){console.log(e.keyCode);if(e.keyCode==13){console.log("执行搜索");}}
7.3 组合键
ctrlKey altKey shiftKey
ctrlkey属性:布尔类型 如果按下了ctrl就是true
altkey属性:布尔类型 如果按下了alt就是true
shiftkey属性:布尔类型 如果按下了shift就是true
ipt.onkeydown=function(e){//console.log("键盘按下的瞬间执行");//console.log(e.keyCode);// if(e.keyCode==13){// console.log("执行搜索");// }//console.log(e);if(e.ctrlKey==true&&e.keyCode==13){console.log("执行搜索");}}
八、事件对象的属性
e.button
按下了鼠标的哪个键(左键0 滚轮1 右键2 )
box.onmousedown=function(e){console.log(e.button);}
e.target
事件源 是谁触发了这个事件。。。(如果你点击的是div div就是事件源)
var box = document.querySelector("div");var ipt = document.querySelector("input");// box.onmousedown=function(e){// console.log(e.button);// }box.onclick=function(e){//console.log(e.target);}ipt.oninput=function(e){console.log(e.target.value);}
clientX、clientY
鼠标在可视区窗口的x y的坐标 即距离左边框和上边框的距离
scrreenX screenY
鼠标在屏幕区的x y的坐标
offsetX offsetY
对于事件源的X y 的坐标
pageX pageY
鼠标相对于文档的x y的坐标 (和可视窗口的区别 在于有没有滚动条)
九、 事件冒泡
事件传递过程(由内到外传递)
var father = document.querySelector(".father");var son = document.querySelector(".son");son.onclick=function(){console.log("触发了儿子");}father.onclick=function(){console.log("触发了爸爸");}document.body.onclick=function(){console.log("触发了body");}
如果点的是son
会触发son的事件 向外传递 接着触发father 继续向外传递 触发body
如何阻止事件冒泡
son.onclick=function(e){e.stopPropagation();console.log("触发了儿子");}
十、事件捕获
事件捕获:事件冒泡是由内向外传递的过程,事件捕获 是由外向内传递的过程
不管是dom0 dom2级事件 默认都是冒泡的
dom2事件 可以通过第三个参数控制事件是冒泡还是捕获
false 事件冒泡
true 事件捕获
var father = document.querySelector(".father");var son = document.querySelector(".son");father.addEventListener("click",function(){console.log("点击了father");},true);son.addEventListener("click",function(){console.log("点击了son");},true)
十一、浏览器的默认行为
javascript事件本身所具有的属性,比如a标签的跳转, submit按钮具有提交功能 右键菜单等等
通过 e.preventDefault() 阻止 或者 reture false
<a href="http://www.baidu.com">跳转到百度</a><form action="#"><input type="text" name="username"> <br><input type="password" name="password"> <br><button type="submit">提交</button></form><script>var a = document.querySelector("a");var btn = document.querySelector("button")a.onclick = function (e) {if (a.href.includes("127.0.0.1")) {} else {//e.preventDefault();return false;console.log("就不跳转!!!");}}btn.onclick=function(e){// e.preventDefault()return false}// 右键菜单事件document.oncontextmenu=function(e){// e.preventDefault()return false}</script>
</body></html>
十二 事件委托
利用事件冒泡的原理,向外传递, 把本应该给某元素的事件委托给它的父元素(外层)
比如页面中有100个删除按钮, 点击每一个按钮时都删掉它当前的这一条数据
做法1:可以获取到100个按钮 循环这100个按钮 给他们呢分别加上点击事件
做法2: 把删除事件委托给按钮的父元素, 这样的话事件加1次就行!!!
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><input type="text" placeholder="请输入"> <button id="add">添加</button><ul><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li><li><p>你好</p><button class="del">删除</button></li></ul><script>var ipt = document.querySelector("input");var add = document.querySelector("#add");add.onclick=function(){var content = ipt.value;// 把内容添加到 ul里ul.innerHTML += `<li><p>`+content+`</p><button class="del">删除</button></li>`}var ul = document.querySelector("ul");var delbtn = document.querySelectorAll("button");ul.onclick=function(e){// 只有点的是按钮时才执行删除// target 事件源 点击谁 谁就是事件源// console.log(e.target);if(e.target.classList.contains('del')){console.log("点击了删除按钮");}console.log("点击了父元素");}// console.log(delbtn);</script>
</body>
</html>
相关文章:
1718_js事件
目录 事件基础 一 DOM0级事件 1.1添加事件 1.2删除事件 二 DOM2级事件 2.1 添加事件 2.2 移除事件 三 常见的鼠标事件 四 其他事件 五 事件对象 5.1 获取事件对象 5.2 兼容写法 六 七、键盘事件 7.2键盘码 7.3 组合键 八、事件对象的属性 九、 事件冒泡 十…...
OpenCV图像输入输出模块imgcodecs
《OpenCV计算机视觉开发实践:基于Python(人工智能技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 要处理图像,第一步就是把图像文件从磁盘上读取到内存,处理完毕后再保存到内存,所以…...
OAS光学分析软件 | 高光束反射器设计案例
简介 在光学设计领域,满足特定的光束要求并符合相关标准规范是设计的关键目标。本次设计旨在借助 OAS 光学分析软件,打造一个符合欧洲经委会(ECE)规定的高光束反射器。欧洲经委会对狭窄宽度(高)波束图案有…...
检查指定的IP地址和端口号是否可以连接
是的,Socket 类可以直接用来检查指定的IP地址和端口号是否可以连接。以下是一个简单的Java代码示例,展示如何使用 Socket 类来检查连接是否可用: import java.net.Socket; import java.net.UnknownHostException; public class NetworkCheck…...
【商城实战(93)】商城高并发实战:分布式锁与事务处理深度剖析
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
【C++】模拟实现一颗二叉搜索树
❤️欢迎来到我的博客❤️ 前言 搜索二叉树是在二叉树的基础上加了一个特征:左子树的所有节点都小于根,右子树的所有节点都大于根(每一颗子树都要满足) 因为这个特性的存在,使得他特别擅长搜索数据 比如我要寻找10&a…...
vue 点击放大,图片预览效果
背景: 在vue框架element组件的背景下,我们对图片点击放大(单张);如果是多张图片,要支持左右滑动查看多张图片(多张)。 图片单张放大,el-image图片组件,或者原生的img标签。previewSrcList string[单个] 图片…...
AI知识补全(七):AI Agent 智能代理是什么?
名人说:人生如逆旅,我亦是行人。 ——苏轼《临江仙送钱穆父》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(六):RLHF 人类反馈…...
Java 中各种锁的使用详解
Java 锁的使用详解 Java 提供了多种锁机制来处理并发编程中的同步问题。下面我将通过代码示例来展示各种锁的使用方法和特点。 锁的选择指南 以下是选择合适锁的指南: 基本锁类型演示 // 由于这是在 Node.js 环境中模拟 Java 锁的概念,我们将使用注释…...
【GreenHills】GHS解决客户端在连接的时候提示在黑名单
1、 文档目标 解决GHS网络版客户在客户端连接的时候出现黑名单的问题 2、 问题场景 用于解决GHS的网络版客户在搭建完服务端后,客户端去连接服务的时候出现提示“在黑名单中”等情况(如图2-1和图2-2)。但是在服务器上面并没有设置黑名单。 …...
智能运维时代的网络拓扑管理:乐维监控的架构可视化实践
在数字化转型的浪潮中,企业IT基础设施正经历着前所未有的复杂化进程。当数以千计的网络设备、服务器、存储系统构成庞大网络体系时,如何实现全局可视化管理已成为企业数字化转型的关键命题。乐维监控网络拓扑系统作为新一代智能运维平台的核心组件&#…...
GitHub美化个人主页3D图表显示配置操作
这个功能主要是用的这个开源仓库:https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话,我的个人主页:https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可,…...
Arduino示例代码讲解:Serial Event example 连续事件例子
Arduino示例代码讲解:Serial Event example 连续事件例子 Serial Event example 连续事件例子功能概述硬件部分:软件部分:代码逐行解释定义变量`setup()` 函数`loop()` 函数`serialEvent()` 函数工作原理Serial Event example 连续事件例子 这段代码是一个Arduino示例程序,…...
Java基础关键_031_反射(一)
目 录 一、概述 二、获取 Class 的三种方式 1.Class.forName("完整全限定类名") 2.getClass() 3.class 属性 三、通过反射机制实例化对象 1.newInstance()(已过时) 2.配置文件利用反射机制实例化对象 四、反射 Class 的 Field 1.获取 P…...
verilog/systemverilog中的位序问题
verilog或者systemverilog中在使用位选择时,必须按照定义的大小端顺序进行位选操作,比如定义了reg [11:0] data,在使用data的中间4位时,必须使用data[7:4],不能使用data[4:7]。 如下示例: module tb;reg […...
JVM考古现场(十三):混沌重启——从量子永生到宇宙热寂的终极编译
开篇:鸿蒙初判熵火燎原"诸君可曾窥见《诛仙剑阵》终章里那冻结的量子递归?当Project Omega的热寂算法冰封时空熵增,当意识编译器的玻尔兹曼大脑撕裂熵障,此刻我们将踏碎归墟晶壁,在第十三维度叩问:从代…...
CARLA常见技术问题集锦(一)地图与场景构建篇
编者荐语: 在自动驾驶技术加速落地的今天,CARLA 仿真引擎凭借其开源生态与高保真仿真能力,已成为全球开发者构建智能驾驶算法的核心工具之一。随着虚幻引擎 5.5 的全面升级,CARLA 0.10.0 版本实现了视觉革命:Lumen 全…...
视图、MySQL、触发器、存储过程、流程控制语句
DAY19.1 Java核心基础 MySQL 视图 数据库中的一张虚拟的表,允许不同用户和不同程序以不同的方式查询同一张表的数据 基于数据表,创建一个虚拟的表,然后可以选择需要展示的字段 为不同的用户创建不同的视图,一个视图包含薪资&…...
多层感知机(MLP)全面指南
多层感知机(MLP) 是一种人工神经网络,由多个神经元层组成。MLP中的神经元通常使用非线性激活函数,使得网络能够学习数据中的复杂模式。MLP 在机器学习中非常重要,因为它能够学习数据中的非线性关系,使其成为分类、回归和模式识别等任务中的强大模型。 神经网络基础 神经…...
【第13届蓝桥杯C/C++B组省赛】顺子日期
答案:14 1.数组办法解决 思路:前四个元素已经确定,分别枚举其他元素的合法性 #include <stdio.h> int main() {int a[8] {2,0,2,0,0,0,0,0};int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int i,j;int count 0;for(i 1;…...
智慧医疗胃癌检测数据集VOC+YOLO格式487张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):487 标注数量(xml文件个数):487 标注数量(txt文件个数):487 标注…...
每日一题-力扣-2716: 最小化字符串长度 0328
LeetCode 2716: 最小化字符串长度问题剖析 题目解读 LeetCode 2716 是一道关于字符串操作的算法题。这道题乍看复杂,实则蕴含着优雅的数学规律。题目要求通过一系列特定的删除操作来最小化字符串的长度: 给定一个下标从 0 开始的字符串 s每次操作可以选…...
量子计算:开启未来计算的新纪元
一、引言 在当今数字化时代,计算技术的飞速发展深刻地改变了我们的生活和工作方式。从传统的电子计算机到如今的高性能超级计算机,人类在计算能力上取得了巨大的进步。然而,随着科技的不断推进,我们面临着越来越多的复杂问题&…...
安卓车载app面经
java部分 常见集合类 List 继承了Collection接口的一个接口,List中的数据是有序的,可重复的 实现类 在Java中,List 是一个接口,它属于 Java Collections Framework 的一部分。List 接口代表了一个有序的集合(有时…...
JAVA SE :认识数组
目录 1.概念 2.数组的创建和初始化 2.1 创建 2.2 初始化 3.数组的使用 4.认识引用数据类型 4.1 JVM的内存分布 4.2 基本数据类型和引用数据类型 4.3 null的认识 5.二维数组 6.Arrays类的了解和使用 1.概念 数组用于存储一定数量相同类型的数据,可以看…...
深入理解机器学习之TF-IDF:文本特征提取的核心技术
文章目录 引言一、什么是TF-IDF?二、TF-IDF的数学原理1. 词频(TF)计算2. 逆文档频率(IDF)计算3. TF-IDF计算 三、TF-IDF的Python实现1.数据文件介绍2.导入库3.读取数据4.数据预处理5.对单词进行排序6.全部代码 四、结语 引言 在自然语言处理(NLP)和文本挖掘领域&am…...
Anaconda Jupyter 默认启动位置修改
Anaconda Jupyter 默认启动位置修改 本篇给大家分享的事关于Anaconda Jupyter的保存路径修改方法。 我们使用Anaconda Jupyter默认启动时,通常会跳转进入C盘的用户目录下,如下图所示。 但是很多时候我们使用 Jupyter 的场景并不在C盘,因为它…...
CNG汽车加气站操作工备考真题及答案解析【判断题】
1、燃气经营许可证按照燃气经营规模和类别实行分级审批。(√) 解析:不同规模和类别的燃气经营,其许可证审批级别不同,以确保经营活动的规范和安全。 2、依照《安全生产法》的规定,安全生产监督检查人员对检…...
es 3期 第27节-运用Script脚本实现复杂需求
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...
智能监控视频聚合平台,GB28181/RTSP/SIP/RTMP直播会议融合方案
全场景智能监控聚合平台:打破边界,赋能高效协同 在数字化转型加速的今天,海量视频监控设备、多样化的编码协议与复杂的业务场景,让企业面临跨系统整合难、资源调度效率低、协作响应慢等痛点。我们的智能监控聚合平台以技术创新为…...
B494:开关电源领域的PWM控制新星
在电子技术飞速发展的今天,高效的电源管理系统成为各类电子设备稳定运行的关键。B494电压驱动型脉宽调制(PWM)控制集成电路以其卓越的性能和丰富的功能,成为开关电源设计领域的焦点。 一、B494:开关电源领域的PWM控制…...
03 相机标定图像采集
学完本文,您将获取一下技能: 1:如何提升标定质量,如选择标定板,标定图像采集的注意事项, 2:实现标定图像自动筛选的代码 3:量产场景如何通过一张图像来标定相机 为了实现良好的标定效果,以下因素在标定数据采集前必须设置得当。 标定板选择 标定板尺寸准确材料平…...
详解Spark executor
在 Apache Spark 中,Executor(执行器) 是运行在集群工作节点(Worker Node)上的进程,负责执行具体的计算任务并管理数据。它是 Spark 分布式计算的核心组件之一,直接决定了任务的并行度和资源利用…...
约束文件SDC常用命令
约束文件SDC常用命令 定义时钟create_clock -name CLK-period 2 [get_ports_clk]告诉工具主时钟周期是2ns(频率500MHz),从clk端口输入 输入信号延迟set_input_delay 0.5 -clock CLK [get_ports data_in]数据进芯片前,外部电路已消耗0.5ns,综合要预留这段“堵车时间”。 输出…...
流量分析2
一,webshell流量 [GKCTF 2021]签到 先看协议分级,大部分是tcp,里面有http的基于的行文本数据占了很大的比重,看看里面有什么 过滤http的流量 点击一条流量,里面的内容进去后面有基于行的文本数据, 先解he…...
23种设计模式-组合(Composite)设计模式
组合设计模式 🚩什么是组合设计模式?🚩组合设计模式的特点🚩组合设计模式的结构🚩组合设计模式的优缺点🚩组合设计模式的Java实现🚩代码总结🚩总结 🚩什么是组合设计模式…...
数据库概述
文章目录 数据库1、什么是数据库?2、数据库的分类关系型数据库非关系型数据库优缺点 3、MySQL数据库的安装和使用3.1 卸载3.2 安装命令行操作 4、 Navicat For MySQL连接MySQL新建数据库新建表在表中添加数据执行SQL语句 数据库 1、什么是数据库? 数据…...
C# System.Text.Encoding 使用详解
总目录 前言 在C#编程中,处理字符串和字节数组之间的转换是一个常见的任务。System.Text.Encoding类及其派生类提供了丰富的功能,帮助开发者实现不同字符编码之间的转换。本文将详细讲解System.Text.Encoding类的使用方法,包括常用编码的介绍…...
js 对象深拷贝的五种方法
js 对象深拷贝 今天遇到一个bug ,子组件页面修改了内容,但是按了取消保存按钮,没有将数据传回父组件的,但是父组件的数据改了,原因是通过子组件接受父组件的参数对象层级深没有做深拷贝的原因。 在 JavaScript 中&…...
1.1 计算机网络的概念
首先来看什么是计算机网络,关于计算机网络的定义并没有一个统一的标准,不同的教材有 不同的说法(这是王道书对于计算机网络的定义),我们可以结合自己的生活经验去体会这个 定义。 可以用不同类型的设备去连接计算机网络…...
当EFISH-SBC-RK3576遇上区块链:物联网安全与可信数据网络
在工业物联网场景中,设备身份伪造与数据篡改是核心安全隐患。EFISH-SBC-RK3576 通过 硬件安全模块 区块链链上验证,实现设备身份可信锚定与数据全生命周期加密,安全性能提升10倍以上。 1. 安全架构:从芯片到链的端到端防…...
k8s 基础知识:Service + 负载均衡(下)
但凡觉得哪块说有问题,欢迎评论区留言探讨,谢谢 K8s Service 是 Kubernetes 集群中用于暴露应用程序的一种资源对象: 一、概念与作用: Service 可以将一组具有相同功能的 Pod(容器组)定义为一个逻辑分组…...
deepseek(2)——deepseek 关键技术
1 Multi-Head Latent Attention (MLA) MLA的核心在于通过低秩联合压缩来减少注意力键(keys)和值(values)在推理过程中的缓存,从而提高推理效率: c t K V W D K V h t c_t^{KV} W^{DKV}h_t ctKVWDKVht…...
机器学习之条件概率
1. 引言 概率模型在机器学习中广泛应用于数据分析、模式识别和推理任务。本文将调研几种重要的概率模型,包括EM算法、MCMC、朴素贝叶斯、贝叶斯网络、概率图模型(CRF、HMM)以及最大熵模型,介绍其基本原理、算法流程、应用场景及优势。 2. EM算法(Expectation-Maximizati…...
第四天 文件操作(文本/CSV/JSON) - 异常处理机制 - 练习:日志文件分析器
Python文件操作与异常处理完全指南:从入门到实战 一、为什么要学习文件操作和异常处理? 在Python编程的初级阶段,我们主要处理内存中的数据。但当我们需要: 永久保存数据处理各种格式的数据文件分析系统日志构建数据处理管道 …...
多onnx模型导出合并调研(文本检测+方向分类+文本识别)
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! 多onnx模型合并导出调研(文本检测+方向分类+文本识别) 引言1,尝试合并两个模型(文本方向分类+文本识别模型)(并行合并)(1)文本方向分类(2)文本识别模型(…...
linux scp复制多层级文件夹到另一服务器免密及脚本配置
文章目录 生成 SSH 密钥对将公钥复制到目标服务器验证免密登录scp 多级文件夹复制脚本 生成 SSH 密钥对 在本地机器上,使用 ssh-keygen 命令生成 SSH 密钥对。打开终端并执行以下命令: ssh-keygen -t rsa 按提示连续按回车键,默认会在 ~/.ss…...
Ubuntu 22.04 安装向日葵远程控制
1. 前言 由于公司客户的服务器用是图形化桌面,所以我们需要一个远程控制工具来控制服务器,目前市面上两款比较热门的控制软件就是ToDesk和向日葵了,我们今天就来学习一下向日葵的使用 2. 下载软件 前往向日葵官网下载 向日葵远程控制app官…...
Spring Boot(十七):集成和使用Redis
Redis(Remote Dictionary Server,远程字典服务器)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Spring Boot 中集成和使用Redis主要涉及以下几个步骤: 添加依赖 在项目的pom.xml文件中添加Redis的依赖。Spring Boot提供了对Redis的集…...
Redisson - 分布式锁和同步器
文章目录 锁(Lock)公平锁(Fair Lock)联锁(MultiLock)红锁(RedLock) 【已废弃】读写锁(ReadWriteLock)信号量(Semaphore)可过期许可信号…...