常见的DOM操作有哪些?常见的BOM对象有哪些?DOM操作与BOM对象的区别?

news2024/11/18 14:01:26

常见的DOM操作有哪些?

一、DOM

文档对象模型 (DOM) 是 HTMLXML 文档的编程接口。

它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。

任何 HTMLXML文档都可以用 DOM表示为一个由节点构成的层级结构。

二、常见的DOM操作

日常前端开发,我们都离不开DOM操作。

在以前,我们使用Jqueryzepto等库来操作DOM,之后在vueAngularReact等框架出现后,我们通过操作数据来控制DOM(绝大多数时候),越来越少的去直接操作DOM

但这并不代表原生操作不重要。相反,DOM操作才能有助于我们理解框架深层的内容。

下面就来分析DOM常见的操作,主要分为:

常见的DOM操作包括以下几种:

  1. 获取元素:你可以使用 document.getElementById(id)document.getElementsByClassName(className)document.getElementsByTagName(tagName) 等方法来获取页面上的元素。

  2. 修改元素属性:你可以使用 .setAttribute(name, value) 方法来设置元素的属性,也可以使用 .getAttribute(name) 来获取属性的值。

  3. 修改元素内容:你可以使用 .innerHTML.textContent 来修改元素的文本内容。

  4. 创建新元素:使用 document.createElement(tagName) 方法可以创建新的元素节点,然后使用 .appendChild() 方法将其添加到父元素中。

  5. 移除元素:使用 .removeChild() 方法可以从父元素中移除子元素。

  6. 修改元素样式:你可以使用 .style 属性来修改元素的样式,也可以通过添加或移除 CSS 类来改变元素的样式。

  7. 添加事件监听器:使用 .addEventListener(event, callback) 方法可以为元素添加事件监听器,以响应用户的交互动作。

  8. 遍历DOM树:你可以使用不同的属性和方法来遍历DOM树,例如 .parentNode.childNodes.nextSibling.previousSibling 等。

  9. 查询元素位置和尺寸:使用 .offsetTop.offsetLeft.offsetWidth.offsetHeight 等属性可以获取元素的位置和尺寸信息。

  10. 修改元素的类名:使用 .classList 属性可以方便地添加、删除和切换元素的类名。

这些是常见的DOM操作,可以用来操控页面上的元素,实现动态交互和内容的修改。需要根据具体的需求选择合适的操作方法。

三、案例效果

选取元素:

描述:通过标签名、类名、ID或其他属性来选取HTML元素。
例子:选取所有段落元素并改变它们的颜色。
请添加图片描述

<!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>
    <p>这是第一个段落。</p>
    <p>这是第二个段落。</p>
    <p>这是第三个段落。</p>

    <script>
        var paragraphs = document.querySelectorAll('p');
        for (var i = 0; i < paragraphs.length; i++) {
            paragraphs[i].style.color = 'blue';
        }
    </script>
</body>
</html>

获取和设置元素内容:

描述:获取或设置HTML元素的文本内容或HTML代码。
例子:获取一个元素的文本内容并将其修改。
请添加图片描述

<!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>
    <p id="myElement">这是原始文本内容。</p>

    <script>
        var element = document.getElementById('myElement');
        var textContent = element.textContent; // 获取文本内容
        element.textContent = '新的文本内容'; // 设置文本内容
    </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>添加和删除元素示例</title>
</head>
<body>
    <ul id="myList">
        <li>列表项1</li>
        <li>列表项2</li>
    </ul>

    <button onclick="addItem()">添加新项</button>

    <script>
        function addItem() {
            var list = document.getElementById('myList');
            var newItem = document.createElement('li');
            newItem.textContent = '新的列表项';
            list.appendChild(newItem); // 添加新的列表项
        }
    </script>
</body>
</html>

修改元素属性:

描述:获取或修改元素的属性值,如src、href、class等。
例子:修改图像的src属性。
请添加图片描述

<!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>
    <img id="myImage" src="./img/1.jpeg" alt="原始图片">

    <button onclick="changeImage()">修改图片</button>

    <script>
        function changeImage() {
            var image = document.getElementById('myImage');
            image.src = './img/2.jpeg'; // 修改图像的src属性
        }
    </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>事件处理示例</title>
</head>
<body>
    <button id="myButton">点击我</button>

    <script>
        var button = document.getElementById('myButton');
        button.addEventListener('click', function() {
            alert('按钮被点击了!');
        });
    </script>
</body>
</html>

遍历DOM树:

遍历DOM树是指在HTML文档中沿着父子、兄弟关系浏览元素。这允许您查找、访问和操作文档中的不同部分。

描述:遍历文档的层次结构,访问父元素、子元素和兄弟元素。
例子:查找元素的父元素和子元素。
请添加图片描述

<!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>
    <div id="parentDiv">
        <p>这是父元素。</p>
        <ul>
            <li>子元素1</li>
            <li>子元素2</li>
        </ul>
        <p>另一个子元素。</p>
    </div>

    <!-- 将JavaScript代码放在文档底部 -->
    <script>
        // 等待文档加载完成后再执行代码
        document.addEventListener("DOMContentLoaded", function() {
            // 获取父元素
            var parentElement = document.getElementById('parentDiv');
            if (parentElement) {
                console.log("父元素标签名: " + parentElement.tagName); // 输出:DIV
            }

            // 获取子元素
            var childElements = parentElement ? parentElement.children : [];
            console.log("子元素数量: " + childElements.length); // 输出:3

            // 遍历子元素
            for (var i = 0; i < childElements.length; i++) {
                var child = childElements[i];
                console.log("子元素标签名: " + child.tagName);
            }

            // 获取下一个兄弟元素
            var siblingElement = parentElement ? parentElement.nextElementSibling : null;
            if (siblingElement) {
                console.log("下一个兄弟元素标签名: " + siblingElement.tagName); // 输出:P
            }

            // 获取前一个兄弟元素
            var previousSiblingElement = parentElement ? parentElement.previousElementSibling : null;
            if (previousSiblingElement) {
                console.log("前一个兄弟元素标签名: " + previousSiblingElement.tagName); // 输出:H1
            }
        });
    </script>
</body>
</html>

常见的BOM对象有哪些?

一、BOM 是什么

BOM(Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象。

其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新,浏览器的窗口发生变化,滚动条的滚动,以及获取客户的一些信息如:浏览器品牌版本,屏幕分辨率。

浏览器的全部内容可以看成DOM,整个浏览器可以看成BOM。区别如下:

DOMBOM
文档对象模型文档对象模型
DOM就是把 文档当作一个 对象 来看待BOM把 浏览器 当作一个 对象 来看待
DOM的顶级对象是 document BOM的顶级对象是 window
DOM主要学习的是操作页面元素BOM学习的是浏览器窗口交互的一些对象
DOM是 W3C 标准规范BOM是浏览器厂商在各自浏览器上定义的,兼容性较差

二、window

Bom 的核心对象是 window ,它表示浏览器的一个实例。

在浏览器中,window 对象有双重角色,即是浏览器窗口的一个接口,又是全局对象。

因此所有在全局作用域中声明的变量、函数都会变成 window 对象的属性和方法。

var name = 'js每日一题';
function lookName(){
  alert(this.name);
}

console.log(window.name);  //js每日一题
lookName();                //js每日一题
window.lookName();         //js每日一题

关于窗口控制方法如下:

  • moveBy(x,y):从当前位置水平移动窗体x个像素,垂直移动窗体y个像素,x为负数,将向左移动窗体,y为负数,将向上移动窗体。
  • moveTo(x,y):移动窗体左上角到相对于屏幕左上角的(x,y)点。
  • resizeBy(w,h):相对窗体当前的大小,宽度调整w个像素,高度调整h个像素。如果参数为负值,将缩小窗体,反之扩大窗体。
  • resizeTo(w,h):把窗体宽度调整为w个像素,高度调整为h个像素。
  • scrollTo(x,y):如果有滚动条,将横向滚动条移动到相对于窗体宽度为x个像素的位置,将纵向滚动条移动到相对于窗体高度为y个像素的位置。
  • scrollBy(x,y): 如果有滚动条,将横向滚动条向左移动x个像素,将纵向滚动条向下移动y个像素。

window.open() 既可以导航到一个特定的 url,也可以打开一个新的浏览器窗口。

如果 window.open() 传递了第二个参数,且该参数是已有窗口或者框架的名称,那么就会在目标窗口加载第一个参数指定的URL。

window.open('htttp://www.vue3js.cn','topFrame')
==> < a href=" " target="topFrame"></ a>

window.open() 会返回新窗口的引用,也就是新窗口的 window 对象。

const myWin = window.open('http://www.vue3js.cn','myWin')

window.close() 仅用于通过 window.open() 打开的窗口。

新创建的 window 对象有一个 opener 属性,该属性指向打开他的原始窗口对象。

三、location

location属性描述如下:

属性名例子说明
hash“#Examples”utl中#后面的字符,没有则返回空串
hostdeveloper.mozilla.org:443服务器名称和端口号
hostnamedeveloper.mozilla.org域名,不带端口号
hrefhttps://developer.mozilla.org:443/en-US/Location.host?q=123#Examples完整url
pathname“/en-US/”服务器下面的文件路径
port443url的端口号,没有则为空
protocolhttps:使用的协议
search?q=123url的查询字符串,通常为?后面的内容

除了 hash之外,只要修改location的一个属性,就会导致页面重新加载新URL

location.reload(),此方法可以重新刷新当前页面。这个方法会根据最有效的方式刷新页面,如果页面自上一次请求以来没有改变过,页面就会从浏览器缓存中重新加载。

如果要强制从服务器中重新加载,传递一个参数true即可。

四、navigator

navigator 对象主要用来获取浏览器的属性,区分浏览器类型。属性较多,且兼容性比较复杂。

Navigator 接口表示用户代理的状态和标识。它允许脚本查询它和注册自己进行一些活动。

可以使用只读的 window.navigator 属性检索 navigator 对象。

下表列出了一些navigator 对象接口定义的属性和方法:

属性说明
appCodeName返回浏览器的代码名。只读,任何浏览器中,总是返回 ‘Gecko’。该属性仅仅是为了保持兼容性。
appMinorVersion返回浏览器的次级版本。
appName返回浏览器的名称。只读,不要指望该属性返回正确的值。
appVersion返回浏览器的平台和版本信息。只读,返回一个字符串,表示浏览器的版本。不要指望该属性返回正确的值。
browserLanguage返回当前浏览器的语言。
battery返回一个 BatteryManager 对象,你可以用它来获取一些电池充电状态的信息。
connection返回一个提供NetworkInformation对象来获取设备的网络连接信息,只读 。
cookieEnabled返回指明浏览器中是否启用 cookie 的布尔值。只读,当忽略 cookie 时返回 false,否则返回 true
cpuClass返回浏览器系统的 CPU 等级。
onLine返回浏览器是否在线,在线返回 ture,否则返回 false。
platform返回运行浏览器的操作系统平台。只读,返回一个字符串。
systemLanguage返回 OS 使用的默认语言。
userAgent返回由客户机发送服务器的 user-agent 头部的值。只读,返回当前浏览器的用户代理字符串。
userLanguage返回 OS 的自然语言设置。
geolocation返回浏览器的地理位置信息。只读,返回一个 Geolocation 对象。
language返回浏览器使用的语言。只读,返回表示用户的首先语言,通常是浏览器用户界面的语言。当未知的时,返回null。
languages返回一个表示用户已知语言的数组,只读,并按优先顺序排列。
mineTypes返回浏览器所支持的MIME类型的数组,只读。
oscpu返回当前操作系统名。
product返回浏览器使用的引擎(产品)。只读,返回当前浏览器的产品名称(如,“Gecko”)。
方法说明
javaEnabled()返回一个布尔值,该值指示浏览器是否支持并启用了 Java。如果是,则返回 true,否则返回 false。
taintEnabled()返回一个布尔值,规定浏览器是否启用数据污点(data tainting) 。如果浏览器启用了数据污染,则为 true,否则为 false。

五、screen

保存的纯粹是客户端能力信息,也就是浏览器窗口外面的客户端显示器的信息,比如像素宽度和像素高度。

属性说明
availHeight返回屏幕的高度(不包括Windows任务栏),只读。
availWidth返回屏幕的宽度(不包括Windows任务栏),只读。
availLeft返回屏幕左边边界的第一个像素点,只读。
availTop返回屏幕最顶端像素,只读。
colorDepth返回目标设备或缓冲器上的调色板的比特深度,只读。
height返回屏幕的总高度
left返回从最左边界到当前屏幕的像素值。
pixelDepth返回屏幕的颜色分辨率(每象素的位数),只读。
top返回最上边界到当前屏幕的像素值。
width返回屏幕的总宽度
orientation返回当前屏幕的朝向。
mozEnabled布尔值。如果设置为 false 将关闭设备的屏幕。
mozBrightness控制设备屏幕的亮度。期望参数是 0-1.0 之间的浮点数。

六、history

history对象主要用来操作浏览器URL的历史记录,可以通过参数向前,向后,或者向指定URL跳转。

常用的属性如下:

history.go()
接收一个整数数字或者字符串参数:向最近的一个记录中包含指定字符串的页面跳转。

history.go('maixaofei.com')

当参数为整数数字的时候,正数表示向前跳转指定的页面,负数为向后跳转指定的页面。

history.go(3) //向前跳转三个记录
history.go(-1) //向后跳转一个记录

history.forward():向前跳转一个页面
history.back():向后跳转一个页面
history.length:获取历史记录数

DOM操作与BOM对象的区别?

DOM(Document Object Model)和BOM(Browser Object Model)都是用于在浏览器中进行编程的重要对象模型,但它们有一些关键的区别:

一、 DOM(文档对象模型)

  • DOM用于操作和访问网页文档的结构和内容。
  • 它允许您以树状结构的方式访问HTML或XML文档中的元素,如元素、属性、文本等。
  • DOM提供了一种方式来添加、修改、删除文档中的元素和内容。
  • 主要用于处理网页的内容和结构,例如更改文本、添加/删除元素、修改样式等。
  • 典型的DOM对象包括documentelementnode等,用于操作HTML或XML文档的元素和内容。

二、 BOM(浏览器对象模型)

  • BOM用于与浏览器窗口和浏览器本身的交互。
  • 它提供了对象来控制浏览器的行为,如打开/关闭窗口、导航历史、浏览器尺寸、弹出对话框等。
  • BOM不是标准化的,它的特性和行为在不同的浏览器中有所不同,因此在跨浏览器开发中需要小心处理。
  • 典型的BOM对象包括windownavigatorlocationhistoryscreen等,用于控制浏览器窗口和浏览器的属性和行为。

总结来说,DOM主要关注于操作和访问网页的内容和结构,而BOM关注于与浏览器本身的交互。这两者虽然在JavaScript中都使用对象模型来表示,但它们的职责和操作对象是不同的。在Web开发中,您通常需要同时使用DOM和BOM来实现各种交互和功能。

持续学习总结记录中,回顾一下上面的内容:
常见的DOM操作有哪些?常见的BOM对象有哪些?DOM操作与BOM对象的区别?

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

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

相关文章

FineBI:简介

1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能&#xff08;Business Intelligence&#xff09;产品。 FineBI 是定位于自助大数据分析的 BI 工具&#xff0c;能够帮助企业的业务人员和数据分析师&#xff0c;开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…

【Java集合篇】为什么HashMap的Cap是2^n,如何保证?

为什么HashMap的Cap是2^n&#xff0c;如何保证&#xff1f; ✔️目录✔️ 为什么是2 ^ n ?✔️为什么 X %2^n X & (2^n - 1) ? ✔️如何保证✔️初始化时期保证✔️扩容时期保证 ✔️目录 ✔️ 为什么是2 ^ n ? HashMap是通过 (table.length - 1) & (key.hashCode …

swing快速入门(四十)JList、JComboBox实现列表框

注释很详细&#xff0c;直接上代码 新增内容 &#x1f9e7;1.列表的属性设置与选项监听器 &#x1f9e7;2.下拉框的属性设置与选项监听器 &#x1f9e7;3.Box中组件填充情况不符合预期的处理方法 &#x1f9e7;4.LIst向Vector的转化方法 源码&#xff1a; package swing31_40;i…

Unity中Shader序列帧动画(总结篇)

文章目录 前言一、半透明混合自定义调整1、属性面板2、SubShader中3、在片元着色器(可选)3、根据纹理情况自己调节 二、适配Build In Render Pipeline三、最终代码 前言 在前几篇文章中&#xff0c;我们依次解决了实现Shader序列帧动画所遇到的问题。 Unity中Shader序列图动画…

K8S集群部署解决工作节点couldn‘t get current server API group list问题

最近在自己电脑上装了VMWare Player&#xff0c;在上面装了两个Ubuntu虚拟机&#xff0c;为了方便学习云原生技术&#xff0c;决定在上面装一个2个节点&#xff08;一个控制面&#xff0c;一个工作节点&#xff09;的K8S集群。 参考这篇文章&#xff1a; Ubuntu 22.04 搭建K8…

WebStorm 创建一个Vue项目

一、下载并安装WebStorm 步骤一 步骤二 选择激活方式 激活码&#xff1a; I2A0QUY8VU-eyJsaWNlbnNlSWQiOiJJMkEwUVVZOFZVIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lEQURFIEVTVEFEVUFMIERFIENBTVBJTkFTIiwiYXNzaWduZWVOYW1lIjoiVGFvYmFv77yaSkVU5YWo5a625qG25rAIOa0uW3peS9nOWup…

MATLAB指令

01--根据数学公式进行绘制 1.绘制连续函数 ①一元函数 t0:0.1:10; y3*t2; plot(t,y) ②一元二次函数 t0:0.1:10; yt.*t; plot(t,y) 注意此处应为点乘 ③一元3次 t0:0.1:10; yt.*t.*t; plot(t,y) ④y1/t t0:0.1:10; y1./t; plot(t,y) ⑤yexp(t) t0:0.1:10; yexp(2*t); p…

实现pytorch版的mobileNetV1

mobileNet具体细节&#xff0c;在前面已做了分析记录&#xff1a;轻量化网络-MobileNet系列-CSDN博客 这里是根据网络结构&#xff0c;搭建模型&#xff0c;用于图像分类任务。 1. 网络结构和基本组件 2. 搭建组件 &#xff08;1&#xff09;普通的卷积组件&#xff1a;CBL …

光明源:智慧公厕在实际应用中作用

什么是智慧公厕呢&#xff1f; 智慧公厕是一种应用先进科技和智能化技术的公共卫生设施&#xff0c;旨在提高公厕的管理效率、服务水平以及用户体验。这类公厕整合了各种现代技术&#xff0c;包括实时监控系统、智能预约服务、在线反馈机制、卫生自动化技术、导航服务、电子支…

Git 常用命令详解及如何在IDEA中操作

文章目录 前言发现宝藏一、初识Git1.Git概述2. Git的功能3. Git运行图示 二、Git下载安装三、Git 代码托管服务1.常用的 Git 代码托管服务2.使用码云代码托管服务 四、Git 常用命令1.Git 全局设置2.获取Git 仓库3.工作区、暂存区、版本库 概念4.Git 工作区中文件的两种状态5.本…

视频云存储/视频智能分析平台EasyCVR在麒麟系统中无法启动该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

2024年阿里云、腾讯云、华为云、LightNode、硅云服务器如何选?怎么买最划算?[最新价格表]

很多小伙伴都有一颗上云的心&#xff0c;包括我自己 有事没事的折腾一下自己的小破站&#xff0c;也挺有意思的&#xff01; 那么&#xff0c;云服务器哪家好&#xff1f;优惠力度哪家大&#xff1f;活动入口哪里进&#xff1f;云服务器如何配置&#xff1f;如何选型&#xf…

时间序列预测 — VMD-LSTM实现单变量多步光伏预测(Tensorflow):单变量转为多变量预测多变量

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 ​1.3 缺失值分析 2 VMD经验模态分解 2.1 VMD分解实验 2.2 VMD-LSTM预测思路 3 构造训练数据 4 LSTM模型训练 5 LSTM模型预测 5.1 分量预测 5.2 可视化 时间序列预测专栏链接&#xff1a;https://blog.csdn.net/qq_…

前端Web系统架构设计

文章目录 1.目录结构定义2. 路由封装2.1 API路由定义2.2 组件路由定义 3. Axios请求开发4. 环境变量封装5. storage模块封装(sessionStorage, localStorage)6. 公共函数封装(日期,金额,权限..)7. 通用交互定义(删除二次确认,类别,面包屑...)8. 接口全貌概览 1.目录结构定义 2. …

Flume基础知识(十):Flume 聚合实战

1&#xff09;案例需求&#xff1a; hadoop100上的 Flume-1 监控文件/opt/module/group.log&#xff0c; hadoop101上的 Flume-2 监控某一个端口的数据流&#xff0c; Flume-1 与 Flume-2 将数据发送给 hadoop102 上的 Flume-3&#xff0c;Flume-3 将最终数据打印 到控制台。…

基于Java实现全功能电子商城

&#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩项目推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 基于SpringBoot的旅游网站 基于SpringBoot的MusiQ音乐网站 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及…

【数据库】视图索引执行计划多表查询面试题

文章目录 一、视图1.1 概念1.2 视图与数据表的区别1.3 优点1.4 语法1.5 实例 二、索引2.1 什么是索引2.2.为什么要使用索引2.3 优缺点2.4 何时不使用索引2.5 索引何时失效2.6 索引分类2.6.1.普通索引2.6.2.唯一索引2.6.3.主键索引2.6.4.组合索引2.6.5.全文索引 三、执行计划3.1…

2024.1.5 关于 二叉平衡树(AVL 树)详解

目录 二叉搜索树 二叉搜索树的简介 二叉搜索树的查找 二叉搜索树的效率 AVL树 AVL 树的简介 AVL 树的实现 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 完整 AVL树插入代码 验证 AVL 树 AVL 树的性能 二叉搜索树 要想了解关于二叉平衡树的相关知识&#xff0c;了…

mnn-llm: 大语言模型端侧CPU推理优化

在大语言模型(LLM)端侧部署上&#xff0c;基于 MNN 实现的 mnn-llm 项目已经展现出业界领先的性能&#xff0c;特别是在 ARM 架构的 CPU 上。目前利用 mnn-llm 的推理能力&#xff0c;qwen-1.8b在mnn-llm的驱动下能够在移动端达到端侧实时会话的能力&#xff0c;能够在较低内存…

安全与认证Week3

目录 Key Management 密钥管理 密钥交换、证书 密钥的类别 密钥管理方面 密钥分发问题 密钥分发方案 混合密钥分发 公钥分发 公钥证书 X.509 理解X.509 X.509证书包含 X.509使用过程 X.509身份验证服务 X.509版本3 取消 由X.509引申关于CA 用户认证、身份管理…