DOM中的元素获取方式、事件以及属性操作

news2024/11/24 3:34:06

一、WebApi介绍

1. Api的概念

API ( Application Programming Interface:应用程序编程接口) 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组程序的能力,而又无需访问源码,无需了解其内部的工作机制细节,只需要直接调用即可。

例如:

C语言又一个函数fopen()可以打开硬盘上的文件,这个函数对于我们来说,就是C语言提供的打开文件的工具

javaScript中又一个alert() 可以在页面弹出一个提示框,这个函数就是js提供的一个弹框工具

这些工具(函数)由编程语言提供的,内部的实现已经封装好了,我们只需要学会应用这些工具即可。

  • MDN详细API : https://developer.mozilla.org/zh-CN/docs/Web/API

  • 因为api很多,所以我们将这个学习阶段就称为Web APIs

  • 此处webapi特指是浏览器提供的一些api(就是函数或对象方法),即操作网页的一系列工具

2. API 和 WebApi总结

  • api是为我们程序员提供的一个接口,帮助我们实现某种功能,我们会使用这个就可以了,不必纠结内部如何实现
  • WebApi主要是针对浏览器提供的接口,主要针对于浏览器做交互效果
  • WebApi一般都由输入和输出(函数传参 和 返回值),WebApi很多的方法(函数)都是这样
  • 学习WebApi可以结合前面你学习内置对象方法的思路学习

二. DOM(document)

1. 什么是DOM

  • Document Object Model :文档对象模型。是W3C组织推荐的处理可扩展标记语言的标准编程接口
  • W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容、接口和样式。
  • DOM 是W3C组织定义的一套处理html文档的规范,所有的浏览器都遵循了这个标准。

2. dom树

在这里插入图片描述

DOM树又称之为文档树模型,把文档映射成树形结构,通过节点对象对其处理,处理的结果可以加入到当前的页面

  • 文档:一个页面就是一个文档,DOM中用document表示
  • 节点:网页中的所有内容,在文档树中都有节点(标签、属性、文本、注释等等),使用node表示
  • 标签节点:网页中的所有的标签,通常称之为元素节点,又简称为“元素”,使用element表示

DOM把以上内容都看作是对象

三、获取元素的方式

为什么要获取页面的元素?

我们想要取操作页面的某个部分(显示/隐藏)需要先获取到该部分对应的元素,再来对其进行操作。

1. 根据ID获取
var obj = document.getElementById(id);

2.根据标签获取
var objs = document.getElementsByTagName('标签名');  
或者 element(元素).getElementsByTagName('标签名');

3.根据类选择器获取
var reds = document.getElementsByClassName('类选择器名');

1. 根据ID获取

语法

var obj = document.getElementById(id);
  • 作用:根据id获取元素对象
  • 参数:id是区分大小写的字符串
  • 返回值:元素对象 或者是null

案例

<body>
    <div id="time">
        2024-10-15
    </div>

    
    <script>
        //因为我们文档页面从上往下加载,所以先得有标签,所以我们script写道标签的下面
        //获取到了id是time的元素对象
        var timer = document.getElementById('time');
        console.log(timer);  //<div id="time">2024-10-15</div>
        console.log(typeof timer); //object

        //console.dir:打印我们返回的元素对象,更好的查里面的属性和方法
        console.dir(timer);
    </script>
</body>

2. 根据标签获取

语法

var objs = document.getElementsByTagName('标签名');  或者 element.getElementsByTagName('标签名');
  • 作用:根据标签的名字获取元素对象
  • 参数:标签的名字
  • 返回值:元素对象集合 (伪数组,数组元素是元素对象)要返回具体值需要遍历

案例

<ul>
    <li>总理同印度尼西亚总统通电话1</li>
    <li>总理同印度尼西亚总统通电话2</li>
    <li>总理同印度尼西亚总统通电话3</li>
    <li>总理同印度尼西亚总统通电话4</li>
</ul>

<ul id="nav">
    <li>听泉鉴宝称从未说过自己是北大的1</li>
    <li>听泉鉴宝称从未说过自己是北大的2</li>
    <li>听泉鉴宝称从未说过自己是北大的3</li>
</ul>

<script>
//1.返回的是 这个页面中所有的li元素,以伪数组的形式返回给lis这个对象
var lis = document.getElementsByTagName('li');
    console.log(lis);
    console.log(lis[0]);

//2.我们想要依次打印里面元素我们可以通过遍历的方式
for(var i = 0; i < lis.length; i++){
    console.log(lis[i]);
}

//3.可以对象.getElementsByTagName('标签名') 获取的是这个对象里面的标签元素
var nav = document.getElementById('nav'); //获取nav元素
var navLis = nav.getElementsByTagName('li');
console.log(navLis);
</script>

注意:

  • 因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历
  • 得到元素对象是动态的。即:当页面增加了标签,这个集合也就增加了元素。

3. 根据类选择器获取

语法

var reds = document.getElementsByClassName('类选择器名');
  • 作用:根据类选择器的名字获取元素对象
  • 参数:类选择的名字
  • 返回值:元素对象集合 (伪数组,数组元素是元素对象) 要返回具体值需要遍历

案例

<body>
    <div>
        <p class="red">今天是2024</p>
        <span class="blue">1015</span>
        <span class="red">1015日redred</span>
    </div>

    <script>
        //根据类选择器获取元素
        var reds = document.getElementsByClassName('red')
        //遍历
        for(var i = 0; i < reds.length; i++){
            console.log(reds[i]);
        }
    </script>
</body>

4. H5新增获取元素方式

语法

document.getElemensByClassName('类选择器名');   //根据类名返回元素对象集合

document.querySelector('选择器');  //返回指定选择器返回第一个元素对象

document.querySelectorAll('选择器'); //根据指选择器返回

注意:querySelector 和 querySelectorAll 选择器必须要添加符号。

如:document.querySelector(’#nav’); document.querySelector(’.blue’);

案例

<body>
    <div class="box">盒子1</div>
    <div class="box">盒子2</div>

    <div id="nav">
        <ul>
            <li>首页</li>
            <li>产品</li>
        </ul>
    </div>

    <script>
        //1.document.getElemensByClassName('类选择器名');   //根据类名返回元素对象集合
        var boxs = document.getElementsByClassName('box');
        console.log(boxs);

        //2.document.querySelector('选择器');  //返回指定选择器返回第一个元素对象
        var firstBox = document.querySelector('.box');
        console.log(firstBox);

        //3.document.querySelectorAll('选择器'); //根据指选择器返回
        // var divs = document.querySelectorAll('#nav');
        var divs = document.getElementById('nav');
        console.log(divs);
        var divLis = divs.getElementsByTagName('li');
        console.log(divLis);


		var lis = document.querySelectorAll('li');
        console.log(lis)
    </script>
</body>

5. 获取特殊元素(html,body)

获取body元素

document.body;  //返回的body元素对象

获取html元素

document.documentElement;  //返回的是html元素对象
//1.获取body元素
var bodyEle = document.body;
console.log(bodyEle);
console.dir(bodyEle);

//2.获取html元素
//var htmlEle = document.html; 没有这个语法
var htmlEle = document.documentElement;
console.log(htmlEle);

四、事件

1. 概述

  • javaScript是我们有能力创建动态页面,而事件是可以被javaScript侦测到的行为
  • 简单的理解:触发——响应机制
  • 网页中每一个元素都可以产生某些可以触发javaScript的事件,比如:点击某个按钮,在触发事件后去执行某些操作。

2. 事件三要素

  • 事件源(谁):触发事件的元素
  • 事件类型(什么事件):比如点击就是click
  • 事件处理程序(做什么):事件触发后要执行的代码(代码以函数的形式组织),事件处理函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn">唐伯虎</button>

    <script>
        //点击按钮,弹出对话框
        //1.事件有三部分组成的:1)事件源  2)事件类型 3)事件处理程序
        //1)事件源:事件被触发的对象,谁——是按钮
        var btnObj = document.getElementById('btn');
        //2)事件类型:如何触发事件,比如我们这里就是要点击按钮,事件都是on + 动作
        btnObj.onclick = function(){
            //3)事件的处理程序,通过一个函数完成
            alert('点秋香');
        }
    </script>
</body>
</html>

3. 执行事件的步骤

  • 第一步:获取事件源
  • 注册事件(绑定事件)
  • 添加事件处理程序(采用函数赋值形式)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>123</div>

    <script>
        //事件执行的步骤
        //1.获取事件源
        var div = document.querySelector('div'); //获取到第一个div
        //2.绑定事件,注册事件 div.onclick
        //3.添加事件处理程序
        div.onclick = function(){
            console.log('我被点击了');
        }
    </script>
</body>
</html>

4. 常见的鼠标事件

鼠标事件触发条件
onclick鼠标点击(鼠标左键点击触发)
onmouseover鼠标经过触发
onmouseout鼠标离开触发
onfocus鼠标获取焦点
onblue失去鼠标焦点
onmousemove鼠标移动触发
onmouseup鼠标弹起触发
onmousedown鼠标按下触发

5.操作元素

javaScript的Dom操作可以改变网页内容、结构和样式。我们可以利用dom操作来改变元素里面的内容、属性等

6. 改变元素内容

  • element.innerText
    • 从起始位置到终点位置的内容,但是它会去掉html的标签,同时空格和换行也会被去掉
  • element.innerHTML
    • 起始位置到终点位置全部内容,包括html的标签,同时保留空格和换行

6.1 innerText

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>innerText</title>
</head>
<body>
    <button>显示当前系统时间</button>
    <div>某个时间</div>
    <p>这是p</p>

    <script>
        //1.获取元素
        var btn = document.querySelector('button'); //获取到第一个button
        var div = document.querySelector('div'); //获取到第一个div

        //2.注册事件,绑定函数
        btn.onclick = function(){
            //div.innerText = '2024-4-4'; //修改对象中的文本内容
            div.innerText = getDate();
        }
        //获取时间
        function getDate(){
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();

            return '今天是:' + year + '年' + month + '月' + day + '日';
        }

        var p = document.querySelector('p');
        p.innerText = getDate();
    </script>
</body>
</html>

6.2 innerHTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>10.innerHTML</title>
</head>
<body>
    <button>显示当前系统时间</button>
    <div>某个时间</div>
    <p>这是p</p>

    <script>
        //1.获取元素
        var btn = document.querySelector('button'); //获取到第一个button
        var div = document.querySelector('div'); //获取到第一个div

        //2.注册事件,绑定函数
        btn.onclick = function(){
            //div.innerText = '2024-4-4'; //修改对象中的文本内容
            div.innerHTML = getDate();
        }
        //获取时间
        function getDate(){
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();

            return '今天是:' + year + '年' + month + '月' + day + '日';
        }

        var p = document.querySelector('p');
        p.innerHTML = getDate();
    </script>
</body>
</html>

6.3 他们的区别

  • 获取内容的时候有区别
    • innserText会去掉空格和换行,而innnerHTML会保留空格和换行
  • 设置内容时的区别
    • innerText不会识别html,而innerHTML会识别
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>11innserText和innerHTML区别</title>
</head>
<body>
    <div></div>
    <p>
        我是文字
        <span>123</span>
    </p>
    <script>
        //innserText 和 innserHTML的区别
        //1.innserText:从起始位置到终点位置的内容,但是它会去掉html的标签,同时空格和换行也会被去掉
        //2. innserHTML起始位置到终点位置全部内容,包括html的标签,同时保留空格和换行
        var div = document.querySelector('div');
        //div.innerText = '<strong>天气真好</strong>哈哈哈'
        div.innerHTML = '<strong>天气真好</strong>哈哈哈'


        var p = document.querySelector('p');
        console.log(p.innerText);
        console.log(p.innerHTML);
    </script>
</body>
</html>

7. 操作元素的属性

7.1 常用的元素属性

1.innerText 或 innerHTML改变元素的内容
2.src href
3.id  alt title

7.2 获取属性的值

语法:

元素对象.属性名

7.3 设置属性的值

语法:

元素对象.属性名 = 值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作元素的属性</title>
</head>
<body>
    <button id="ldh">刘德华</button>
    <button id="zxy">张学友</button>
    <div></div>
    <img src="images/ldh.jpg" alt="" title="刘德华" id="img">


    <script>
        //1.获取元素
        var zxy = document.getElementById('zxy');
        var ldh = document.getElementById('ldh');
        var div = document.querySelector('div');
        var img = document.getElementById('img');

        //2.注册事件,处理程序
        zxy.onclick = function(){
            img.src = 'images/zxy.jpg'
            img.title = '张学友'
            div.innerText = img.title;
        }

        ldh.onclick = function(){
            img.src = 'images/ldh.jpg'
            img.title = '刘德华'
            div.innerText = img.title;
        }
        div.innerText = img.title;
    </script>
</body>
</html>

7.4 案例

需求:分时显示不同图片,显示不同的问候语

  • 如果是上午时间打开页面,显示上午好,显示上午的图片 ( 6:00 - 12:00 不包括12点)
  • 如果是下午时间打开页面,显示下午好,显示下午的图片 (12:00 - 18:00 )
  • 如果是晚上时间打开页面,显示晚上好,显示晚上的图片 (18:00- 24:00)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="images/z.gif" alt="">
    <div>早上好</div>
    <script>
        //需求:分时显示不同图片,显示不同的问候语
        // - 如果是上午时间打开页面,显示上午好,显示上午的图片  (  6:00 -  12:00  不包括12点)
        // - 如果是下午时间打开页面,显示下午好,显示下午的图片  (12:00 - 18:00  )
        // - 如果是晚上时间打开页面,显示晚上好,显示晚上的图片   (18:00- 24:00)
        //1.得到当前时间的小时
        var date = new Date();
        var h = date.getHours();
        //获取对象
        var img = document.querySelector('img');
        var div = document.querySelector('div');

        //2.判断时间
        if(h >= 6 && h < 12){ //上午
            img.src = 'images/s.gif';
            div.innerText = '上午好';
        } else if (h >= 12 && h < 18) { //下午
            img.src = 'images/x.gif';
            div.innerText = '下午好';
        } else {  //晚上
            img.src = 'images/w.gif';
            div.innerText = '晚上好';
        }
    </script>
</body>
</html>

8. 表单元素的属性操作

利用dom可以操作如下表单元素的属性:

type、value、checked、selected、disabled

8.1 获取属性的值

元素对象.属性名

8.2设置属性的值

元素对象.属性名 = 值

表单元素中有一些属性如:disabled、checked、selected元素对象这些属性的值是布尔型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button id="btn" >按钮</button>
    <input type="text" name="" id="txt" value="输入内容">

    <button id="btn2">解禁</button>
    <script>
        //1.获取元素
        var btn = document.getElementById('btn');
        var input = document.getElementById('txt');
        var btn2 = document.getElementById('btn2');
        //2.注册事件
        btn.onclick = function(){
            input.value = '按钮被点击了';
            //如果想要某个表单按钮被禁用,不能再点击了就可以是disabled
            //btn.disabled = true;  //disabled是按钮中的一个属性
            this.disabled = true; //this指的是,绑定事件的这个东西.这里指的是btn
        }

        btn2.onclick = function(){
            btn.disabled = false;
        }
    </script>
</body>
</html>

8.3 案例

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .box {
            position: relative;
            width: 400px;
            border-bottom: 1px solid #ccc;
            margin: 100px auto;
        }
        
        .box input {
            width: 370px;
            height: 30px;
            border: 0;
            outline: none;
        }
        
        .box img {
            position: absolute;
            top: 2px;
            right: 2px;
            width: 24px;
        }
    </style>
</head>

<body>
    <div class="box">
        <label for="">
            <img src="images/close.png" alt="" id="eye">
        </label>
        <input type="password" name="" id="pwd">
    </div>
    <script>
        //1.获取元素
        var eye = document.getElementById('eye');
        var pwd = document.getElementById('pwd');

        //2.注册事件,处理程序
        var flag = false;
        eye.onclick = function(){
            if(flag == false){
                //替换图片
                eye.src = 'images/open.png';
                pwd.type = 'text';
                flag = true;
            } else {
                //替换图片
                eye.src = 'images/close.png';
                pwd.type = 'password';
                flag = false;
            }
            
        }
    </script>
</body>

</html>

9. 样式属性操作

我们可以通过js修改元素的大小、颜色和位置等样式

常用方式

  • element.style 行内样式操作
  • element.className 类名样式操作

9.1 style属性操作

元素对象style属性也是一个对象

元素对象.style.样式属性= 值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>16.style属性操作</title>
    <style>
        .a {
            background-color: purple;
            font-size: 30px;
        }
    </style>
</head>
<body>
    <div>现场:朝鲜炸毁朝韩间道路视频曝光</div>

    <script>
        //style:js里面的样式采用的是驼峰写法
        //1.获取元素
        var div = document.querySelector('div');
        //2.注册事件 处理程序
        div.onclick = function(){
            div.style.backgroundColor = 'purple';
            this.style.width = '250px';
            this.style.fontSize = '50px'
        }
    </script>
</body>
</html>
案例一
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .box {
            position: relative;
            width: 74px;
            height: 88px;
            border: 1px solid #ccc;
            margin: 100px auto;
            font-size: 12px;
            text-align: center;
            color: #f40;
            /* display: block; */
        }
        
        .box img {
            width: 60px;
            margin-top: 5px;
        }
        
        .close-btn {
            position: absolute;
            top: -1px;
            left: -16px;
            width: 14px;
            height: 14px;
            border: 1px solid #ccc;
            line-height: 14px;
            font-family: Arial, Helvetica, sans-serif;
            cursor: pointer;
        }

    </style>
</head>

<body>
    <div class="box">
        淘宝二维码
        <img src="images/tao.png" alt="">
        <i class="close-btn">×</i>
    </div>
    <script>
        //1.获取元素
        var btn = document.querySelector('.close-btn');
        var div = document.querySelector('.box');
        //2.注册事件,处理程序
        btn.onclick = function(){
            div.style.display = 'none';
        }
    </script>
</body>

</html>
案例二

循环精灵图背景

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>18精灵图</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 250px;
            margin: 100px auto;
        }
        li{
            list-style: none;
        }
        .box li{
            float: left;
            width: 24px;
            height: 24px;
            background-color: pink;
            margin: 15px;
            background: url(images/sprite.png) no-repeat;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <script>
        //1.获取元素,所有的小li
        var lis = document.querySelectorAll('li');
        //2.遍历li
        for(var i = 0; i < lis.length; i++){
            var index = i * 44;
            lis[i].style.backgroundPosition = '0 -' + index + 'px';
        }
    </script>
</body>
</html>
案例三
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        input {
            color: #999;
        }
    </style>
</head>

<body>
    <input type="text" value="手机">
    <script>
        // 1.获取元素
        var text = document.querySelector('input');
        // 2.注册事件 获得焦点事件 onfocus 
        text.onfocus = function() {
            //alert('获取了焦点');
            if(this.value === '手机'){
                this.value = ''
            }
            this.style.color = '#333';
        }
            // 3. 注册事件 失去焦点事件 onblur
        text.onblur = function() {
            //alert('失去了焦点');
            if(this.value === ''){
                this.value = '手机'
                //失去焦点需要把文本框中的颜色变浅
                this.style.color = '#999'
            }
            
        }
    </script>

</body>

</html>

9.2 操作className属性

元素对象.className = 值;

因为class是关键字,所以使用className

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>20通过className更改元素样式</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        .change{
            background-color: purple;
            color: #fff;
            font-size: 25px;
            margin-top: 100px;
        }
        .first{

        }
    </style>
</head>
<body>
    <div class="abc">文本</div>

    <script>
        //1.获取对象
        var test = document.querySelector('div');
        //2.注册事件
        test.onclick = function(){
            // this.style.backgroundColor = 'purple'
            // this.style.color = '#fff'
            // this.style.fontSize = '25px'
            // this.style.marginTop = '100px'
            //我们可以通过修改元素的calssName更改元素的样式
            //如果要保留原来的样式,记得要加入到后面
            test.className = 'change first abc'
        }
    </script>
</body>
</html>

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

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

相关文章

26K star!学习AI也不难,这个项目讲的非常全

马上就要2024年了&#xff0c;谁不想学习一下AI相关的知识呢&#xff1f;怎么开始上手一直困扰着很多初学者&#xff0c;现在网上也充斥着各种搬运的垃圾课程&#xff0c;更是让人难以选择&#xff0c;我们就是希望帮初学者避开那些垃圾内容。 今天我们推荐的开源项目是微软推…

Windows上安装Go并配置环境变量(图文步骤)

前言 1. 本文主要讲解的是在windows上安装Go语言的环境和配置环境变量&#xff1b; Go语言版本&#xff1a;1.23.2 Windows版本&#xff1a;win11&#xff08;win10通用&#xff09; 下载Go环境 下载go环境&#xff1a;Go下载官网链接(https://golang.google.cn/dl/) 等待…

阿里大佬带你一周刷完 Java 面试八股文,比刷视频效果好多了

今天在脉脉刷到了这么一条消息&#xff0c;现在这个大环境&#xff0c;都后悔学 Java 了&#xff0c;想转行学前端&#xff0c; 看完很是震惊&#xff0c;据大数据统计&#xff0c;Java 的待遇是要好过前端的。小伙伴竟然被卷到想要转行......但是行情这个东西&#xff0c;也不…

Python实时视频流+网络摄像头+视频检测流程播放

实时视频处理 概述需求网络摄像头推流流媒体服务器查看设备视频、音频设备列表查看指定设备配置信息 不编码、指定分辨率推流编码加速python服务端处理多线程最终的处理方式 问题与分析 概述 一款桌面应用&#xff0c;可以配置视频处理参数&#xff0c;根据参数播放网络摄像头…

MySQL 8.4.0解压版安装记录

这几天&#xff0c;安装最新版mysql 8.4的时候&#xff0c;遇到了不少问题&#xff0c;网上的教程大多数都是旧版本的&#xff0c;也安装不成功。 参考了大量教程后&#xff0c;经过自己的摸索终于装好了&#xff0c;这里记录一下。 我下载的是8.4.0 LTS MySQL :: Download …

智绘城市地图:使用百度地图 API 实现智能定位

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

全网最易详解-数据仓库分区详解

最近要搭某个业务域的数仓&#xff0c;本来设计规划的挺好的&#xff0c;该搭DIM,DWD,DWS的也都设计好了&#xff0c;结果一跑数仓&#xff0c;全是大大小小的BUG&#xff0c;最后揪出来整个过程&#xff0c;最大的烦人东西就是设计ETL数据入库分区的问题。 那么这时候肯定有…

AI大模型学习路线,只看这一篇就够了!

1. 打好基础&#xff1a;数学与编程 数学基础 线性代数&#xff1a;理解矩阵、向量、特征值、特征向量等概念。 推荐课程&#xff1a;Khan Academy的线性代数课程、MIT的线性代数公开课。 微积分&#xff1a;掌握导数、积分、多变量微积分等基础知识。 推荐课程&#xff1a…

【Python爬虫实战】XPath与lxml实现高效XML/HTML数据解析

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、为什么学习xpath和lxml &#xff08;一&#xff09;高效解析和提取数据 …

【软件】Ubuntu下QT的安装和使用

【软件】Ubuntu下QT的安装和使用 零、前言 QT是应用得比较广泛的程序框架&#xff0c;是因为其跨平台特性比较好&#xff0c;且用C/C作为开发语言&#xff0c;性能也比较好&#xff0c;故本文介绍如何安装和使用QT&#xff0c;用的版本是QT 6.2.4&#xff0c;由于QT在Windows…

windows安装deepspeed setup.py 207行找不到文件

一直报莫名奇妙的错误&#xff0c;查了半天也没查到 去看了一下源码&#xff0c;需要安装git&#xff0c;我没有安装 git命令获得信息也没啥用 直接注释掉 成功运行

HazyDet数据集:包含 383,000 雾霾场景中基于无人机的目标检测设计的大规模数据集

2024-09-30&#xff0c;由中国人民解放军陆军工程大学、南开大学、南京邮电大学和南京理工大学的研究人员联合创建了HazyDet数据集&#xff0c;目的解决无人机在恶劣天气条件下的环境感知问题。这个数据集的推出&#xff0c;极大地填补了相关基准测试的空白&#xff0c;为无人机…

Windows系统部署redis自启动服务

文章目录 引言I redis以本地服务运行(Windows service)使用MSI安装包配置文件,配置端口和密码II redis服务以终端命令启动缺点运行redis-server并指定端口和密码III 知识扩展确认redis-server可用性Installing the Service引言 服务器是Windows系统,所以使用Windows不是re…

Langchain CharacterTextSplitter无法分割文档问题

在使用Langchain的文档分割器时&#xff0c;使用CharacterTextSplitter拆分文档是&#xff0c;发现返回的文档根本没有变化&#xff0c;即使设置了chunk_size&#xff0c;返回的大小也不符合参数设置。 CharacterTextSplitter设置了150&#xff0c;但是根本没有处理&#xff0…

软件测试学习笔记丨Linux三剑客-sed

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32521 一、简介 sed&#xff08;Stream editor&#xff09;是一个功能强大的文本流编辑器&#xff0c;主要用于对文本进行处理和转换。它适用于自动化处理大量的文本数据&#xff0c;能够支持…

ASML业绩暴雷,股价一度跌超16%

KlipC报道&#xff1a;当地时间10月15日&#xff0c;阿斯麦&#xff08;ASML&#xff09;原定于周三公布的三季度业绩报告由于技术原因被短暂地提前公布&#xff0c;业绩报告显示&#xff0c;阿斯麦第三季度总净销售额75亿欧元&#xff0c;毛利率50.8%&#xff0c;净利润21亿欧…

NoMachine安装使用

目录 前言 一、安装教程 1) 首先下载 NoMachine 软件 Linux arm64 deb 版本的安装包&#xff0c;然后安装到开发板的Linux 系统中 a. 由于 RK3588S 是 ARMv8 架构的 SOC&#xff0c;我们使用的系统为 Ubuntu 或者Debian&#xff0c;所以这里需要下载 NoMachine for ARM ARM…

C++ 模板(基础)

前言&#xff1a; C 中的模板是一个强大的功能&#xff0c;允许程序员编写通用的代码&#xff0c;这些代码可以处理任何数据类型。模板使得代码更加灵活和可重用&#xff0c;而不必为每种数据类型编写重复的代码。下面详细解释 C 中的模板 内容摘要&#xff1a; 本文内容包含…

vue使用jquery的ajax,页面跳转

一、引入jquery依赖 打开终端更新npm npm install -g npm 更新完后引入输入npm install jquery 加载完后 在最外层的package.json文件中加入以下代码 配置好后导入jquery 设置变量用于接收服务器传输的数据 定义ajax申请数据 服务器的Controller层传输数据 &#xff08;…

传输层协议UDP详解

目录 一. 知识准备 1.1 传输层 1.2 重识端口号 二. UDP协议 三. UDP协议特点 一. 知识准备 1.1 传输层 前面已经讲过&#xff0c;HTTP协议是应用层协议&#xff0c;在此之前&#xff0c;我们短暂的认为HTTP是直接通过应用层与外界通信的。但是我们要知道&…