JavaScript基础之BOM与DOM

news2024/11/15 21:39:35

文章目录

  • BOM操作
    • window对象
      • window的子对象之navigator对象(了解即可)
      • window的子对象之screen对象(了解即可)
      • window的子对象之history对象(了解即可)
      • window的子对象之location对象
    • 弹出框
      • 警告框
      • 确认框
      • 提示框
    • 记时相关
      • setTimeout()
      • setInterval()
  • DOM操作
    • 查找标签
      • 直接查找
      • 间接查找
    • 操作节点
    • 事件
      • 常见事件

JavaScript分为三个部分:ECMAScript(核心)、BOM、DOM,上篇所写的全是ECMAScript知识:https://blog.csdn.net/achen_m/article/details/134161395?spm=1001.2014.3001.5501(没看过上一篇的可以先看上一篇)

这篇主要讲的就是JavaScript下面两个部分的内容:

  1. BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行‘对话’
  2. DOM(Document Object Model)是指文档对象模型,通过它可以访问HTML文档的所有元素

在这里插入图片描述

Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。例如:window.document.write()可以简写成:document.write()。

BOM操作

window对象

所有浏览器都支持 window 对象。它表示浏览器窗口。

没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。全局函数是 window 对象的方法。
接下来要讲的HTML DOM 的 document 也是 window 对象的属性之一。

语法意义
window.open()打开新窗口
window.close()关闭当前窗口
window.navigator.userAgent()获取客户端绝大部分信息
window.history.forward()前进一页
window.history.back()后退一页
window.location.href获取当前URL
window.location.href = 新网址跳转到指定页面
window.location.reload()重新加载页面
alter()警告
confirm()确认
prompt()提示

一些常用的window方法:

	window.innerHeight		//浏览器窗口的内部高度(浏览器书签栏底部到控制台顶点的高度距离)
	window.innerWidth		//浏览器窗口的内部宽度(浏览器左侧边框到控制台左侧边框的宽度距离)
	window.open()			//打开新窗口(括号内可以填写真实的网址,也可以不填写,不填写就新开空白页面)
	window.close()			//关闭当前窗口(括号内填写或不填写都是关闭当前窗口)

	window.open('https://www.baidu.com','','height=400px,width=400px,top=400px,left=400px')
	解析内容:新建窗口打开页面,第二个参数写空即可,第三个参数写新建窗口的大小和位置

在这里插入图片描述

在这里插入图片描述

window的子对象之navigator对象(了解即可)

浏览器对象,通过这个对象可以判定用户所使用的浏览器,包含了浏览器相关信息。

	navigator.appName //Web浏览器全称
	navigator.appVersioin //Web浏览器厂商和版本的详细字符串
	navigator.userAgent	  //客户端绝大部分信息
	navigator.platform 	  //浏览器运行所在的操作系统(API)
	'因为是window的子对象,完整的写法是window.navigator.appName'


	网址防爬:
	1.最简单最常用的一个就是校验当前请求的发起者是否是一个浏览器 userAgent
	    user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36

	如何破解该措施?
	        在你的代码中加上上面的user-agent配置即可

在这里插入图片描述

window的子对象之screen对象(了解即可)

屏幕对象,不常用。

	一些属性:
		screen.availWidth //可用的屏幕宽度
		screen.availHeight //可用的屏幕高度

window的子对象之history对象(了解即可)

window.history 对象包含浏览器的历史。
浏览历史对象,包含了用户对当前页面的浏览历史,但我们无法查看具体的地址,可以简单的用来前进或后退一个页面。

	history.forward()	// 前进一页
	history.back()		// 后退一页

在这里插入图片描述

window的子对象之location对象

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

	常用属性和方法:
		location.href	//获取URL网址
		location.href="URL" //跳转到指定页面
		location.reload()	//重新加载页面

弹出框

可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。

警告框

警告框经常用于确保用户可以得到某些信息。当警告框出现后,用户需要点击确定按钮才能继续进行操作。

	语法:
		alert('New World!');

在这里插入图片描述

确认框

确认框用于使用户可以验证或者接受某些信息。
当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。

	语法:
		confirm('Are you sure?');

在这里插入图片描述

提示框

提示框经常用于提示用户在进入页面前输入某个值。
当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

	语法:
		prompt('请在下方输入哦!');

在这里插入图片描述

记时相关

通过使用 JavaScript,我们可以在一定时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件

setTimeout()

过一段时间之后触发(一次性)

	语法:
		一次性定时关键字:setTimeout()
		var t = setTimeout("JS语句",毫秒);
		//第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)
		
		取消计时事件
		clearTimeout();
	'''
	setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 t 的变量中。假如你希望取消这个
	setTimeout(),你可以使用这个变量名来指定它。
	setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。
	这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,
	诸如 alertMsg()"。第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)。
	'''

	eg:
	<script>
		'组合写法(匿名函数)'
	    // 在指定时间之后执行一次相应函数
	    var timer = setTimeout(function(){alert('helloworld!');}, 3000)  
	    // 毫秒为单位 3秒之后自动执行fun函数
	    
	    // 取消定时任务  如果你想要清除定时任务 需要提前用变量指代定时任务
	    clearTimeout(timer);

		'分开写法'
		function time(){
			alert('helloworld!');
		}
		
		//指定时间之后执行一次函数
		var t = setTimeout(time,3000);
		//取消定时任务
		clearTimeout(t);
		
	</script>

setInterval()

过一段时间之后触发(循环)

	语法:
		循环定时关键字:setInterval()
		s = setInterval(("JS语句",时间间隔);
		//第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)
		
		//取消计时事件
 		clearInterval(s);

	'''
	setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
	setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
	由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
	'''
	
	 eg:
	 <script>	
		function func(){
            alert('helloworld!');
        }

        function show(){
            let t = setInterval(func,3000); //每间隔3秒执行一次
            function inner(){
                clearInterval(t); //清除定时器
            }
            setTimeout(inner,9000); // 9秒后触发执行闭包函数
        }


        // 调用函数
        show();
	</script>

DOM操作

DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法。 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树。

HTML DOM树
在这里插入图片描述

	DOM标准规定HTML文档中的每一个成分都是节点(node):
		文档节点(document对象):代表整个文档
		元素节点(element对象):代表一个元素(标签)
		文本节点(text对象):代表元素(标签)中的文本
		属性节点(attribute对象):代表一个属性,元素(标签)才有属性
		注释是注释节点(comment对象)

	JavaScript可以通过DOM创建动态的HTML:
		JavaScript能够改变页面中的所有HTML元素
		JavaScript能够改变页面中的所有HTML属性
		JavaScript能够改变页面中的所有CSS样式
		JavaScript能够对页面中的所有事件做出反应

查找标签

直接查找

DOM (Document Object Model)是指文档对象模型,通过它可以访问HTML文档的所有元素,既然DOM操作是通过js代码来操作标签 所以我们需要先学习如何查找标签之后才能给标签绑定一些JS代码(DOM操作)

在JavaScript内,我们可以通过多种方式可以查找到我们想要操作的标签

	'''
		1.js中变量名的命名风格推荐使用驼峰体
		2.js代码查找到的标签如果需要反复使用可以用变量接收
	'''
	document.getElementById('标签的id值');
		根据id值查找标签,结果直接是标签对象本身
	document.getElementsByClassName('标签的class值');
		根据class值查找标签,结果是数组类型'
	document.getElementsByTagName('标签名');
		根据标签名查找标签,结果是数组类型
	'还可以通过标签名加索引值查找相同标签中的第一个标签'
	document.getElementsByTagName('标签名')[索引值];
	
	document.getElementsByName('name属性值');
	
	'通过id找的话,只能找到一个标签,因为id在html中是唯一的'
	注意:以getElements的方式查找标签,可能灰找到多个标签,并且是以数组的形式反馈给我们

首先在页面内创建几个标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM-test</title>

</head>
<body>
    <div id="contents">具有id</div>

    <div class="box">具有box类</div>
    <div class="box">具有box类</div>

    <span>span1</span>
    <span>span2</span>

    <br />

    male: <input type="radio" name="gender">
    female: <input type="radio" name="gender">
</body>
</html>

创建好了标签后,此时我们通过上面所介绍的标签查找方式,来找到我们创建的标签:

通过id值查找
在这里插入图片描述

通过class值查找
在这里插入图片描述

这里我们可以发现,找到的标签被放入了数组内,取出来的方式也很简单

在这里插入图片描述

因为是多个标签,我们先将它放入了一个变量保存起来,那么我们需要哪个标签就通过数组取值方式就可以找到对应标签了

通过标签名查找
在这里插入图片描述

通过name属性来查找
在这里插入图片描述


间接查找

	parentElement		//父节点标签元素
	children			//所有子标签元素
	firstElementchild		//第一个子标签元素
	lastElementchild		//最后一个子标签元素
	nextElementSibling		//下一个兄弟标签元素
	previousElementSibling	//上一个兄弟标签元素

操作节点

	节点操作
	1.js代码创建一个标签
		let xxx = document.createElement('标签名');
	2.添加节点
		xxx.appendchild(新标签名1); //添加在后面的节点
		xxx.insertBefore(新标签名1,某个节点); //添加在某个节点后面
	3.删除节点
		xxx.removeChild(要删除的节点);
	4.替换节点
		xxx.replaceChild(新标签名1,某一个节点);
	5.属性节点
		//获取文本节点的值
		var xxx = document.getElementById('标签的id值');
		xxx.innerText
		xxx.innerHTML
		//设置文本节点的值
		var xxx = document.getElementById('标签的id值');
		xxx.innerText="1";
		xxx.innerHTML="<p>2</p>";
		//attribute操作
		var xxx = document.getElementById('标签的id值');
		xxx.setAttribute('name','jack'); //兼容默认属性和自定义属性
		xxx.getAttribute('name');
		xxx.removeAttribute('name');
		//自带的属性还可以直接句点符号(.)属性名来获取和设置
		xxx.src='...';

innerText与innerHTML的区别

	.innerText		//获取标签内部所有的文本内容
	.innerText='文本'; //替换/设置标签内部的文本(不识别标签语法)
	
	.innerHTML		//获取标签内部所有的标签包含文本
	.innerHTML='文本'; //替换/设置内部的文本(识别标签语法)

获取值的操作

	1.针对用户输入和用户选择的标签
		标签对象.value
	2.针对用户上传的文件数据(需要索引取值)
		标签对象.files		fileList [文件对象、文件对象、文件对象]
		标签对象.files[0]	文件对象
		注意:点value无法获取到文件数据(错误取值),获取的是文件路径,要加上索引值
		eg:
			fileEle.value
			'C\dosktop\\dds\as.doc

class与css操作

	1.js操作标签css样式
		标签对象.style.属性名(-没有 变成驼峰体)
		标签对象.style.color = 'red'; //字体颜色
		标签对象.style.fontSize = '30px'; //字体大小
		标签对象.style.backgroundColor = 'lightblue'; //背景颜色
		.....
	2.js操作标签class属性
		标签对象.classList //获取标签素有的类属性
		标签对象.classList.add('content'); //添加类
		标签对象.classList.contains(); //验证是否包含某一个类属性true/false
		标签对象.classList.remove(); //移除某一个类属性
		标签对象.classList.toggle(); //有则删除无则添加 有则返回true

现在我们可以用之前在页面创建的好的标签页面来试试

增加样式

通过找到对应的标签后,对改标签增加css样式

在这里插入图片描述

当我们的样式为连续性时,如:background-color;这个是css内表示,中间如果有-话,在JS里面将会去掉,并且在后面的单词变为首字母大写:backgroundColor

在这里插入图片描述


标签增加属性与移除属性
JS实现方式如下:

	标签元素.setAttribute('属性名','属性值');
	标签元素.removeAttribute('属性名');

setAttribute当元素存在属性时,则修改,当元素不存在时,则增加

在这里插入图片描述

使用removeAttribute删除属性

在这里插入图片描述

创建html元素
我们创建html元素的方式有多种,先介绍第一种:

	var div = document.createElement('标签名');

新创建的元素需要插入到某一个元素下面,介绍两种插入方式:

	追加一个子节点(放到最后)
	somenode.appendChild(新的子节点);

	插入一个子节点(插入到某一个节点前)
	somenode.insertBefore(新的子节点,某个节点)

在次强调:在JS内获取到的HTML元素也可以称为节点
在这里插入图片描述

那么也可以删除某个节点

	somenode.removeChild(要删除的子节点);
	somenode.replaceChild(新的子节点,某个子节点); 将某个节点替换

在这里插入图片描述

当然,如果想要我们创建的节点存放到某个位置,我们必须要先获取其父节点,还有获取插入位置的那一个节点

获取父节点下面的所有子节点
在这里插入图片描述

第二种创建HTML元素的方式:

其实我们在上面也讲过一种,不过那种是直接输出到body内的,而我们这个可以指定输出到某个节点下面。
在这里插入图片描述
注意:这样创建会有一个很大的弊端,那就是会替换掉我们节点下面的所以内容


获取值

获取某个标签的文本值
在这里插入图片描述

获取表单控件值
在这里插入图片描述


class操作

	var div = document.getElementById('contents');
	div.classList.remove('box'); 移除类名box
	div.classList.add('box'); 添加类名box
	div.classList.contains('box'); 判断box类名是否存在
	div.classList.toggle('box');判断box类名是否存在:不存在则添加、存在则移除

效果展示:
在这里插入图片描述

事件

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时执行一段JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

简单理解就是通过js代码给html标签绑定一些自定义的功能

常见事件

onclick        当用户点击某个对象时调用的事件句柄
onfocus        元素获得焦点  // 练习:输入框        
onblur         元素失去焦点   //应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证           
onchange       域的内容被改变   //应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

......

补充知识:
ondblclick     当用户双击某个对象时调用的事件句柄。
onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

事件需要与HTML元素进行绑定,绑定的位置可以在元素的属性栏内,也可以在JavaScript内:

绑定事件的两种方式:
	绑定方式1:标签内部指定点击的时候运行
			<input type="button" value="点我" onclick="alert('helloworld!')"> 
			
			
	绑定方式2: 先查询到标签 然后绑定使用 可以批量绑定
		<button id="but">点点看</button>
		<script>
			let but = document.getElementById('but')
			but.onclick=function(){
	           alert('点你个傻der啊!') //触发匿名函数,因为我们需要执行的可能是很多js代码
	       	}
		</script>

在这里插入图片描述

事件中的关键字this
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM</title>
</head>
<body>
    <input type="button" value="点击me" onclick="alert('helloworld!')"> 
    <!--绑定方式1:标签内部指定点击的时候运行-->
    
    <button id="but">点点看</button>

    <script>
        
        // 绑定方式2:先查询到标签,然后绑定使用,可以批量绑定
        let but = document.getElementById('but');
        but.onclick=function(){
            alert('点你个傻der啊!') //触发匿名函数,因为我们需要执行的可能是很多js代码
            console.log(this);
        }
    </script>
</body>
</html>

在这里插入图片描述

window.load()

注意事项:之前script是说是写在head标签里面的,为什么现在都是写在body标签最下面呢?
因为在HTML中是从上往下依次执行的,如果JavaScript的代码写在head标签里面会先执行,这样还没有body标签中的代码执行JavaScript代码就没有数据,就会报错。

当然有另一种方法可以让JavaScript的代码写在head标签中,且还让代码最后执行

	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>Document</title>
	    <script>
	        window.onload = function(){
	            //页面js代码  文档加载完毕后执行的代码
	        }
	    </script>
	</head>
	<body>
	    
	</body>
	</html>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】MVCC机制(undo log,read view)

文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC&#xff08;多版本并发控制&#xff09;是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID&#xff0c;为每个修改保存一个版本&#xff0c;版本与事物ID相关联…

043-第三代软件开发-第三方串口库使用

第三代软件开发-第三方串口库使用 文章目录 第三代软件开发-第三方串口库使用项目介绍第三方串口库使用示例代码 关键字&#xff1a; Qt、 Qml、 QextSerialPort、 QThread、 高频 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt…

Websocket传输协议是什么

WebSocket 是一种网络通信协议&#xff0c;属于 HTML5 规范的一部分。它提供了在单个长期连接上进行全双工通信的能力&#xff0c;使得数据可以从客户端发送到服务器&#xff0c;也可以从服务器发送到客户端&#xff0c;这与传统的 HTTP 请求和响应模型不同。 WebSocket 协议定…

ROS Hello World

万物始于Hello World&#xff0c;为了体验ROS&#xff0c;使用Hello World介绍ROS的简单使用。 一、Hello World工程简介 首先需要创建工程&#xff0c;流程为&#xff1a; 创建工作空间目录&#xff08;即工程根目录&#xff0c;注意此时还不是ROS工作空间&#xff0c;只是…

>LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法

>LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法 >LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法_fatal link error-CSDN博客 如果无法解决&#xff1a;只能试试在之前的项目中能否运行 这个错误提示表明在编译连接时&#xff…

PubScholar-可检索1.7亿篇科技文献的公益平台来了!

可检索1.7亿篇科技文献的 公益平台来了&#xff01; 11月1日 由中国科学院等单位联合建设的 PubScholar公益学术平台 正式对社会公众开放 网址&#xff1a;https://pubscholar.cn/ “公益学术平台”旨在为我国科技界和全社会提供高质量的公益性学术资源&#xff0c;提供学…

安全第一!速卖通测评补单稳定的系统注意事项大盘点

对新卖家而言&#xff0c;测评并非可耻之事&#xff0c;反而是无法起步、耗费自身时间才是真正的可耻。由于速卖通新店几乎无法获得任何活动的支持&#xff0c;流量也基本没有&#xff0c;因此要在90天内达成60单的业绩对于许多卖家来说都是一项挑战。因此&#xff0c;通过快速…

算法训练 第五周

一、多数元素 本题给了我们一个数组&#xff0c;要求我们找出这个数组中出现次数大于这个数组元素总量一半的那个元素&#xff0c;也可以理解为找出数组中出现次数最多的那个元素&#xff0c;本题的解决方法有很多&#xff0c;在此我们主要讨论三种解决思路。 1.Hash表 我们可…

Linux驱动——并发与竞态

并发 并发指多个执行单元同时、并行被执行&#xff0c;而并发执行单元对共享资源&#xff08;硬件资源和软件上的全局变量、静态变量等&#xff09;的访问很容易导致竞态。 如下列AB写&#xff0c;C读&#xff0c;AB在写的过程中&#xff0c;C读的话就会出错。 对称多处理器…

Lightdb23.4 Client 包含ecpg可执行程序及相关库文件

功能介绍 部分客户在使用Lightdb client绿色包时需要ecpg程序和ecpg相关的头文件和库文件&#xff0c;所以在Lightdb 23.4版本client绿色包中新增了ecpg的程序和相关头文件和库文件&#xff0c;以方便用户的使用。 Client包目录结构 bin目录是可执行程序和脚本&#xff0c;i…

windows wsl使用,安装ubuntu

windows wsl使用 环境配置windows 家庭版 打开 hyper11 安装ubuntuwsl 命令 环境配置 搜索 启动和关闭 Windows功能 打开下面组件 windows 家庭版 打开 hyper11 解决Windows11 Home 没有 Hyber-v 创建 hyber-v.cmd 并管理员身份执行 pushd "%~dp0" dir /b %Sy…

使用QEMU启动uboot引导linux内核

上篇文章中实现了使用qemu启动uboot&#xff0c;本文实现使用qemu启动uboot引导内核的过程。 一、环境准备 主机系统&#xff1a;WSL-ubuntu20.04 uboot版本&#xff1a;u-boot-2023.10 Kernel版本&#xff1a;linux-5.4.18 二、制作sd卡 qemu支持模拟sd卡&#xff0c;可以…

Linux C语言进阶-D11多级指针、void指针及const

多级指针 多级指针变量&#xff1a;指向指针变量的指针变量 在下图中&#xff0c;定义一个a数组&#xff0c;再定义一个指针数组p[2]&#xff0c;其中p数组中存储的是地址&#xff0c;再定义一个二级指针q指向p[0]&#xff0c;即&p[0]&#xff0c;又由于&p[0]就是p&am…

SpringCloud(七) Feign远程调用

目录 一, RestTemplate远程调用存在的问题 二, Feign的远程调用 2.1 什么是Fegin 2.2 Feign的使用(代替RestTemplate) 1. 引入依赖 2. 添加注解 3. 编写Feign的客户端 4. 测试 5. 总结 2.3 自定义配置 1. 配置文件方式 2. Java代码方式 三, Feign使用优化 3.…

keepalived与nginx与MySQL

keepalived VRRP介绍 集群&#xff08;cluster&#xff09;技术是一种较新的技术&#xff0c;通过集群技术&#xff0c;可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益&#xff0c;其任务调度则是集群系统中的核心技术。 集群组成后&#xff0c;可…

Jellyfin转码和色调映射效率提升:开启处理器低电压模式(GuC/HuC)

Jellyfin转码和色调映射效率提升 系统环境拉取nyanmisaka/jellyfin镜像开启低电压模式Jellyfin配置开启QSV和低电压模式解码开启色调映射&#xff08;基于OpenCL&#xff09; 实测验证低电压模式转码帧率实测测试视频概况221029版本 vs 230901版本开启色调映射的影响开启低电压…

AI智能分析网关高空抛物算法如何实时检测高楼外立面剥落?

高楼外立面剥落是一种十分危险的行为&#xff0c;会造成严重的人身伤害和财产损失。TSINGSEE青犀智能分析网关利用高楼外立面剥落的信息&#xff0c;结合高空抛物算法来进行处理就可很好解决此问题。 1. 数据收集 首先&#xff0c;需要收集关于高楼外立面剥落的数据。这可以通…

Restful风格与Wesocket之间的关联

RESTful 风格和 WebSocket 本质上是两种不同的通信机制&#xff0c;它们在设计理念和用途上有明显的区别。 RESTful 是一种基于 HTTP 协议的架构风格&#xff0c;它使用标准的 HTTP 方法&#xff08;如 GET、POST、PUT、DELETE 等&#xff09;来进行资源的操作&#xff0c;并倾…

计算机毕业设计选题推荐-招聘信息推荐系统-Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

浅谈煤矿井下6kV动力电缆绝缘线监测系统的设计与应用

贾丽丽 安科瑞电气股份有限公司上海嘉定 201801 摘要&#xff1a;针对供电系统绝缘问题检测技术限制煤炭产量效率的问题&#xff0c;以某煤炭企业6kV井下供电系统为研究对象&#xff0c;开展了在线监测系统设计与应用工作。结果表明&#xff0c;系统工作稳定&#xff0c;满足井…