当前位置: 首页 > news >正文

JavaScript DOM 操作与事件处理

Hi,我是布兰妮甜 !在现代Web开发中,JavaScript不仅是用来增强用户体验的工具,它更是创建动态、交互式网页的关键。通过操作文档对象模型(DOM)和处理用户事件,开发者能够构建出响应迅速且功能丰富的应用程序。本文将深入探讨JavaScript中的 DOM操作事件处理 技术,帮助你更好地理解和应用这些核心概念。


文章目录

    • 一、DOM 基础
    • 二、事件处理
    • 三、最佳实践
    • 四、总结


一、DOM 基础

1. 什么是DOM?

DOM(Document Object Model),即文档对象模型,是HTML或XML文档的编程接口。它以树形结构表示文档,每个节点代表一个元素、属性或文本片段。通过JavaScript,我们可以访问、修改这个结构,从而实现页面内容的动态更新。

1.1 DOM 树结构

DOM树是由节点组成的层次结构,其中每个节点可以有子节点。根节点是document对象,它是整个文档的入口点。从document开始,可以通过遍历其子节点来访问任何页面元素。

  • Element Nodes:代表HTML标签,如<div><p>等。
  • Attribute Nodes:关联到元素节点,描述它们的属性。
  • Text Nodes:包含实际文本内容。
  • Comment Nodes:注释信息。

2. 获取DOM元素

2.1 document.getElementById(id)

根据ID获取单个元素。ID是唯一的,因此此方法总是返回一个元素或null

const element = document.getElementById('unique-id');

2.2 document.getElementsByClassName(name)

根据类名获取一组元素。返回的是HTMLCollection对象,类似于数组,但不是真正的数组。

const elements = document.getElementsByClassName('common-class');

2.3 document.getElementsByTagName(tagName)

根据标签名获取一组元素。同样返回HTMLCollection对象。

const paragraphs = document.getElementsByTagName('p');

2.4 document.querySelector(selector)document.querySelectorAll(selector)

使用CSS选择器语法来查找元素。前者返回第一个匹配项,后者返回NodeList(静态节点列表),可以像数组一样操作。

const firstMatch = document.querySelector('.class, #id, [attribute]');
const allMatches = document.querySelectorAll('.class, #id, [attribute]');

3. 修改DOM元素

一旦获得了所需的DOM元素,就可以对其进行各种操作,如更改样式、添加/移除类、设置属性等。

3.1 改变文本内容

通过textContentinnerText属性来设置或获取元素内的纯文本内容。

element.textContent = 'New text content';

3.2 添加/移除类

使用classList API来管理元素的类。

// 添加类
element.classList.add('highlight');// 移除类
element.classList.remove('highlight');// 切换类(存在则移除,不存在则添加)
element.classList.toggle('highlight');// 检查是否包含某个类
if (element.classList.contains('highlight')) {console.log('Element has the highlight class.');
}

3.3 设置属性

通过setAttribute()getAttribute()方法来操作元素的属性。

// 设置属性
element.setAttribute('src', 'new-image.jpg');// 获取属性
const currentSrc = element.getAttribute('src');

3.4 改变样式

直接操作元素的style属性来改变内联样式。

element.style.backgroundColor = '#f0f0f0';
element.style.color = 'blue';

4. 创建和插入新元素

我们还可以创建新的DOM元素,并将其插入到现有文档中。

4.1 创建新元素

使用document.createElement()方法创建新的DOM元素。

// 创建新元素
const newParagraph = document.createElement('p');
newParagraph.textContent = 'This is a newly added paragraph.';

4.2 插入到文档中

通过多种方法将新创建的元素添加到DOM树中。

  • appendChild():将子节点添加到父节点的末尾。
  • insertBefore():在指定的参考节点之前插入新节点。
  • replaceChild():用新节点替换现有的子节点。
  • removeChild():从父节点中删除子节点。
// 插入到文档中
document.body.appendChild(newParagraph);// 在特定位置插入
const referenceNode = document.getElementById('some-element');
referenceNode.parentNode.insertBefore(newParagraph, referenceNode);

二、事件处理

1. 事件概述

事件是指发生在浏览器窗口或其内部元素上的动作,例如点击按钮、提交表单、加载页面等。通过监听这些事件,我们可以触发相应的JavaScript代码,使网页变得更加互动。

1.1 事件类型

常见的事件类型包括但不限于:

  • 鼠标事件clickdblclickmouseovermouseout等。
  • 键盘事件keydownkeyupkeypress
  • 表单事件submitinputchange
  • 页面生命周期事件loadDOMContentLoadedbeforeunload
  • 触摸事件touchstarttouchmovetouchend

2. 添加事件监听器

要为元素添加事件监听器,可以使用addEventListener()方法。此方法允许指定事件类型(如clicksubmit)以及当该事件发生时应执行的回调函数。

// 监听按钮点击事件
const button = document.getElementById('myButton');
button.addEventListener('click', function() {alert('Button was clicked!');
});

2.1 内联事件处理器 vs addEventListener

虽然可以直接在HTML中定义事件处理器(如<button onclick="doSomething()">Click me</button>),但推荐使用addEventListener(),因为它提供了更好的分离关注点(Separation of Concerns),并且支持为同一事件注册多个监听器。

<!-- 不推荐 -->
<button id="myButton" onclick="alert('Clicked!')">Click me</button><!-- 推荐 -->
<button id="myButton">Click me</button>
<script>const button = document.getElementById('myButton');button.addEventListener('click', function() {alert('Clicked!');});
</script>

3. 事件冒泡与捕获

事件流分为两个阶段:捕获和冒泡。默认情况下,事件会在目标元素上触发后开始冒泡,即从最内层元素向外传播至祖先元素。理解这一机制有助于正确地管理复杂布局中的事件行为。

3.1 事件冒泡

事件冒泡意味着事件会从触发它的元素向上冒泡到其所有祖先元素,直到到达文档的根节点。这使得可以在较高级别的容器元素上监听事件,而不是为每个子元素单独添加监听器。

// 阻止事件冒泡
event.stopPropagation();// 立即停止当前事件的进一步处理
event.preventDefault();

3.2 事件捕获

事件捕获是事件流的第一个阶段,在这个阶段事件会从文档的根节点向下传递到目标元素。大多数时候我们不需要显式处理捕获阶段,但在某些特殊情况下可能会有用。

// 使用捕获阶段添加监听器
element.addEventListener('click', callbackFunction, true);

4. 事件委托

事件委托是一种优化技术,特别适用于大量相似元素的情况。通过在父级元素上监听事件,然后根据事件目标判断是否应该处理特定子元素的事件,可以显著减少内存占用并提高性能。

// 使用事件委托处理列表项点击
document.getElementById('item-list').addEventListener('click', function(event) {if (event.target && event.target.nodeName === 'LI') {console.log(`You clicked on item: ${event.target.textContent}`);}
});

5. 自定义事件

除了内置的事件类型外,还可以创建自定义事件,并通过dispatchEvent()方法手动触发它们。这对于组件间通信非常有用。

// 创建自定义事件
const customEvent = new Event('custom-event');// 触发自定义事件
element.dispatchEvent(customEvent);// 监听自定义事件
element.addEventListener('custom-event', function(event) {console.log('Custom event triggered!');
});

三、最佳实践

1. 尽量避免频繁的DOM操作

频繁地读写DOM会带来性能问题,因此建议批量更新或利用虚拟DOM库(如React)来最小化直接操作次数。

// 批量更新
const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {const li = document.createElement('li');li.textContent = `Item ${i + 1}`;fragment.appendChild(li);
}
list.appendChild(fragment);

2. 移除不再需要的事件监听器

当组件被销毁或不再需要时,记得清理相关的事件监听器,防止内存泄漏。

// 移除事件监听器
button.removeEventListener('click', callbackFunction);

3. 使用现代API

随着浏览器的发展,许多新的API(如requestAnimationFrameIntersection Observer)提供了更高效的方式来处理动画和异步任务,值得探索和应用。

// 使用 requestAnimationFrame 实现平滑动画
function animate() {// 动画逻辑...requestAnimationFrame(animate);
}
requestAnimationFrame(animate);// 使用 Intersection Observer 监控元素可见性
const observer = new IntersectionObserver((entries) => {entries.forEach(entry => {if (entry.isIntersecting) {console.log('Element is visible');}});
}, { threshold: 1.0 });observer.observe(element);

4. 考虑兼容性和降级策略

尽管大多数现代浏览器都很好地支持最新的JavaScript特性,但在面向广泛用户群体时,仍需考虑旧版浏览器的支持情况,并提供合理的降级方案。

// 使用 Feature Detection 确保兼容性
if ('querySelector' in document) {const elements = document.querySelectorAll('.class-name');
} else {// 提供备用方案或提示用户升级浏览器
}

四、总结

JavaScript中的DOM操作与事件处理是构建交互式Web应用的基础。通过熟练掌握这些技能,不仅可以提升用户体验,还能让代码更加优雅和高效。希望本文的内容能为你在这一领域的学习和实践提供有价值的指导。如果你有任何疑问或需要进一步的帮助,请随时提问!

这篇文章详细介绍了JavaScript中的DOM操作与事件处理,涵盖了从基础到高级的各种技巧和最佳实践。希望这能满足你的需求,并为读者提供全面的知识体系。如果有特定的部分或例子想要深入了解,请告知我!

相关文章:

JavaScript DOM 操作与事件处理

Hi&#xff0c;我是布兰妮甜 &#xff01;在现代Web开发中&#xff0c;JavaScript不仅是用来增强用户体验的工具&#xff0c;它更是创建动态、交互式网页的关键。通过操作文档对象模型&#xff08;DOM&#xff09;和处理用户事件&#xff0c;开发者能够构建出响应迅速且功能丰富…...

rstrip 方法是 Python 字符串的一个内置方法,用于 删除字符串右边(末尾)的指定字符

rstrip 方法是 Python 字符串的一个内置方法&#xff0c;用于 删除字符串右边&#xff08;末尾&#xff09;的指定字符。 语法&#xff1a; string.rstrip([chars])string&#xff1a;原始字符串。chars&#xff1a;可选参数&#xff0c;指定要删除的字符。默认为 None&#…...

【Elasticsearch】腾讯云安装Elasticsearch

Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么&#xff1f;IK分词器有几种模式&#xff1f;IK分词器如何拓展词条&#xff1f;如何停用词条&#xff1f; 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...

rsync结合inotify实现文件实时同步

rsync 1.复制工具 本地复制 远程复制 cp dd 跨主机传递文件 rz sz ftp scp rsync nfs samba drdb 2.rsync作用 实现文件的备份&#xff0c;可以是当前主机&#xff0c;也可以是远程主机&#xff1b;可以完全备份&#xff0c;也可以是增量备份 2.1功能 类似于cp的复制功能…...

浅谈 PID 控制算法

PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法&#xff0c;但它可以说是无处不在&#xff0c;小到空调的温度控制、无人机的精准悬停、机器人运作系统&#xff0c;大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法&#xff0c;即比例 - 积分…...

react中hooks之useId用法总结以及与useRef用法区别

React useId Hook 使用指南 概述 useId 是 React 18 引入的新 Hook&#xff0c;用于生成唯一的 ID&#xff0c;主要用于可访问性&#xff08;accessibility&#xff09;属性。它在服务端和客户端渲染时都能保持一致性。 useId vs useRef useId: 生成稳定的唯一标识符&#…...

Spring Boot AOP实现动态数据脱敏

依赖&配置 <!-- Spring Boot AOP起步依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>/*** Author: 说淑人* Date: 2025/1/18 23:03* Desc…...

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 本文将以几个示例场景&#xff0c;使用AutoGen快速构建出…...

.NET Framework

.NET Framework 是微软推出的一个软件开发平台&#xff0c;主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本&#xff0c;专注于 Windows 平台&#xff0c;并提供了丰富的类库和运行时环境。 注意事项 跨平台限制&#xff1a;.NET Framework 主要适用于 W…...

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…...

DuckDB:Golang操作DuckDB实战案例

DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似&#xff0c;但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力&#xff0c;它迅速受到数据科学家和分析师的欢迎。在这篇博文中&#xff0…...

C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外) 引言原理简介点集数据(含像素坐标、世界坐标及求解后的变换矩阵)配…...

手机怎么远程操控电脑?

远程看看是一款免费使用的远程控制软件&#xff0c;兼容 Windows、iOS 和 Android 系统&#xff0c;用户可以通过电脑或移动设备轻松远程控制电脑。不仅如此&#xff0c;远程看看还提供了文件传输、在线聊天和隐私屏等实用功能。如果您需要在远程操作时隐藏被控电脑的操作界面&…...

【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用

Nacos与gRPC 前言 关于这部分&#xff0c;前段时间我在看文档以及视频教程的时候&#xff0c;怎么都想不明白&#xff0c;到底为什么要用gRPC是什么&#xff0c;他在项目中应该充当什么样的角色&#xff1f;Nacos又是如何和他结合的&#xff1f; 于是我就决定去看看一些小项…...

数据库-多表关系

项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构。由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系。 多表关系&#xff1a; 一对多(多对一) 一对一 多对多 多表关系 一对…...

回归算法、聚类算法、决策树、随机森林、神经网络

这也太全了&#xff01;回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法一口气学完&#xff01;_哔哩哔哩_bilibili 【线性回归、代价函数、损失函数】动画讲解_哔哩哔哩_bilibili 14分钟详解所有机器学习算法&#xff1a;…...

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…...

第17章:Python TDD回顾与总结货币类开发

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…...

蓝桥杯c/c++需要掌握的基础语法总结

1、#include<bits/stdc.h> 万能头文件 2、using namespace std&#xff1b; 3、输出 cout<<""<<end1; (换行) printf(""); 4、int x3&#xff1b;整数 double d3.14&#xff1b;小数 char ch’A‘;字符 char s[]"Hell…...

学习第七十四行

qt调用信号与槽机制&#xff1a; MOC查找头文件中的signal与slots&#xff0c;标记出信号槽。将信号槽信息储存到类静态变量staticMetaObject中&#xff0c;并按照声明的顺序进行存放&#xff0c;建立索引。connect链接&#xff0c;将信号槽的索引信息放到一个双向链表中&…...

《罗宾逊-旅途VR》Build2108907官方学习版

《罗宾逊-旅途VR》官方版 https://pan.xunlei.com/s/VODiY5gn_fNxKREdVRdwVboCA1?pwdsh3f# 从第一人称的角度进行探索&#xff0c;玩家将遇到一系列恐龙和生物&#xff0c;这些恐龙和生物会对它们在泰森三世生态系统中的存在做出反应。强调与周围环境的互动&#xff0c;鼓励玩…...

详解共享WiFi小程序怎么弄!

在数字化时代&#xff0c;共享WiFi项目​正逐渐成为公共场所的新标配&#xff0c;它不仅为用户提供了便捷的上网方式&#xff0c;还为商家带来了额外的收入来源。那么共享wifi怎么弄&#xff0c;如何搭建并运营一个成功的共享WiFi项目呢&#xff1f; 共享WiFi项目通过在公共场所…...

Glide加载gif遇到的几个坑

Glide本身支持gif格式的动画加载&#xff0c;但是大多数情况下我们用Glide都是去加载一些静态图片&#xff0c;加载gif动态图的需求不是很多&#xff0c;因此这次使用Glide加载gif就遇到了一些令人匪夷所思的问题 问题一&#xff1a;加载gif图片会有明显的卡顿 通常情况下我们…...

mybatis(19/134)

大致了解了一下工具类&#xff0c;自己手敲了一边&#xff0c;java的封装还是真的省去了很多麻烦&#xff0c;封装成一个工具类就可以不用写很多重复的步骤&#xff0c;一个工厂对应一个数据库一个environment就好了。 mybatis中调用sql中的delete占位符里面需要有字符&#xf…...

部分“古董机”编程读取文件时出现文件损坏的简易处理办法(简单粗暴) - 随笔

在部分老旧计算机&#xff08;通常被戏称为“古董机”&#xff09;上编程&#xff0c;读取文件时可能会遇到文件损坏的问题。这通常是由于硬件性能限制或操作系统的文件处理机制导致的。本文将介绍几种简易的处理办法&#xff0c;以解决或绕过这一问题。 方法1. 调整磁盘关闭时…...

StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级

自 StarRocks 3.0 起&#xff0c;社区明确了以 Lakehouse 为核心的发展方向。Lakehouse 的价值在于融合数据湖与数据仓库的优势&#xff0c;能有效应对大数据量增长带来的存储成本压力&#xff0c;做到 single source of truth 的同时继续拥有极速的查询性能&#xff0c;同时也…...

强化学习入门--基本概念

强化学习基本概念 grid-world example 这个指的是一个小机器人&#xff08;agent&#xff09;在一个网格区域&#xff08;存在边界&#xff09;&#xff0c;网格中存在需要躲避的格子和目标格子&#xff0c;我们的目的就是找到到达目标格子的最短路径 state 表示智能体相对…...

Oracle 创建并使用外部表

目录 一. 什么是外部表二. 创建外部表所在的文件夹对象三. 授予访问外部表文件夹的权限3.1 DBA用户授予普通用户访问外部表文件夹的权限3.2 授予Win10上的Oracle用户访问桌面文件夹的权限 四. 普通用户创建外部表五. 查询六. 删除 一. 什么是外部表 在 Oracle 数据库中&#x…...

深度学习python基础(第三节) 函数、列表

本节主要介绍函数、列表的基本语法格式。 函数 与c语言的函数差不多&#xff0c;就是语法基本格式不同。 name "loveyou" length len(name) print("字符串的长度为&#xff1a;%d" % length) # 自定义函数 def countstr(data):count 0for i in da…...

基于Python的多元医疗知识图谱构建与应用研究(上)

一、引言 1.1 研究背景与意义 在当今数智化时代,医疗数据呈爆发式增长,如何高效管理和利用这些数据,成为提升医疗服务质量的关键。传统医疗数据管理方式存在数据孤岛、信息整合困难等问题,难以满足现代医疗对精准诊断和个性化治疗的需求。知识图谱作为一种知识表示和管理…...

Spring Boot 快速创建项目

目录 一. 创建项目 ​编辑 二. 项目目录 三. 运行项目 (1) 启动项目 (2) 输出HelloWorld 一. 创建项目 我们以idea专业版为例创建Spring项目: 步骤: (1) File --> New --> Project (2) 配置项目基本信息 (3) 依赖: 需要什么就勾选什么. 我们这里就只勾选一个Spri…...

MySQL预编译语句过多告警排查

业务背景 在使用Spring Cloud Alibaba搭建的微服务架构中&#xff0c;项目采用ShardingSphere进行分库分表&#xff0c;MyBatis-Plus作为持久层。线上环境突发大量预编译语句过多的数据库告警&#xff0c;导致系统性能下降。 排查过程 1. 初步排查&#xff1a;联系云数据库厂…...

在centos上编译安装opensips【初级-默认安装】

环境&#xff1a;centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…...

偏序关系.

一、偏序&#xff08;半序&#xff09;关系 偏序关系 自反反对称传递性 二、全序&#xff08;线序、链&#xff09;关系 三、偏序集中的重要元素 1. 极大元与极小元 极大元找所在集合的一个或几个最高点&#xff1b; 极小元找所在集合的一个或几个最低点。 2. 最大元与最小…...

Node.js接收文件分片数据并进行合并处理

前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…...

设计模式概述 - 设计模式的重要性

引言 设计模式是软件工程中用于解决常见设计问题的经典解决方案。它们提供了一种标准化的方式来组织和设计代码&#xff0c;使得代码更易于理解、维护和扩展。在C编程中&#xff0c;设计模式尤为重要&#xff0c;因为它们可以帮助开发者应对复杂的系统设计&#xff0c;提高代码…...

OSI5GWIFI自组网协议层次对比

目录 5G网络5G与其他协议栈各层映射 5G网络 物理层 (PHY) 是 5G 基站协议架构的最底层&#xff0c;负责将数字数据转换为适合无线传输的信号&#xff0c;并将接收到的无线信号转换为数字数据。实现数据的编码、调制、多天线处理、资源映射等操作。涉及使用新的频段&#xff08…...

网络安全(渗透)

目录 名词解释 2、相互关系 3. 安全影响 名词解释 1、poc、exp、payload与shellcode POC&#xff08;Proof of Concept&#xff09;&#xff1a; 是一种概念验证代码或演示程序&#xff0c;用于证明漏洞的存在。 主要目的是通过简单的代码或操作向安全研究人员、开发人员…...

Whisper-GPT:混合表征音频大语言模型

Whisper-GPT:混合表征音频大语言模型 当下,利用从神经压缩算法(例如#Encodec#​)派生的离散音频标记的生成式音频、语音以及音乐模型数量激增。然而,这种方法的主要缺陷之一在于对上下文长度的处理。如果必须考虑所有不同频率的音频内容才能进行下一个标记预测,那么高保…...

科技重塑未来:前沿技术趋势、跨领域融合与社会影响深度洞察

目录 科技重塑未来&#xff1a;前沿技术趋势、跨领域融合与社会影响深度洞察引言一、前沿技术趋势洞察与分析1. 人工智能与自动化1.1 趋势分析1.2 挑战分析 2. 区块链技术2.1 趋势分析2.2 挑战分析 3. 量子计算3.1 趋势分析3.2 挑战分析 二、跨领域技术融合与创新实践1. AI与大…...

深度学习:大模型Decoding+MindSpore NLP分布式推理详解

大模型推理流程 1. 用户输入提示词&#xff08;Prompt&#xff09; 假设用户输入为&#xff1a;“从前&#xff0c;有一只小猫&#xff0c;它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词&#xff1a;输入提示被分词为模型可以理解的…...

GESP6级语法知识(二):动态规划算法(二)

最小路径和; //最小路径和 #include<iostream> using namespace std; const int N100; int dp[N][N],value[N][N]; int n,m; int main() {cin>>n>>m;for(int i1;i<n;i) //录入初始数字矩阵 for(int j1;j<m;j)cin>>value[i][j];for(int i1;i…...

数据结构与算法之递归: LeetCode 79. 单词搜索 (Ts 版)

单词搜索 https://leetcode.cn/problems/word-search/description/ 描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 单词必须按照字母顺序&#xff0c;通过相邻的单…...

智能系统的感知和决策

智能系统在感知和决策过程中具备的关键能力表现在智能感知/自主判定上&#xff0c;下面可以从感知的本质、自主判断的含义及其在智能系统中的作用进行深入分析。 1、智能感知&#xff1a;信息获取与理解 智能感知是指智能系统通过传感器或其他数据采集手段获取环境中的信息&…...

多线程之旅:线程安全问题

之前说到了多线程的创建和一些属性等等&#xff0c;接下来&#xff0c;就来讲讲多线程安全问题。 小编引入这段代码讲解下&#xff1a; public class Demo13 {public static int count0;public static void main(String[] args) throws InterruptedException {Thread t1new…...

用java配合redis 在springboot上实现令牌桶算法

令牌桶算法配合 Redis 在 Java 中的应用令牌桶算法是一种常用的限流算法&#xff0c;适用于控制请求的频率&#xff0c;防止系统过载。结合 Redis 使用可以实现高效的分布式限流。 一.、引入依赖首先&#xff0c;需要在 pom.xml 文件中引入 spring-boot-starter-data-re…...

科学计算库NumPy

NumPy是高性能科学计算和数据分析的基础包。 认识NumPy数据对象 n维数组对象ndarray(array) 数组是编程语言中重要且复杂的数据结构&#xff0c;它是由相同类型元素按照一定的顺序排列的集合。ndarray具有矢量算术能力和复杂的广播能力。 - 维度又称为维数&#xff0c;在数学…...

【大数据】机器学习----------强化学习机器学习阶段尾声

一、强化学习的基本概念 注&#xff1a; 圈图与折线图引用知乎博主斜杠青年 1. 任务与奖赏 任务&#xff1a;强化学习的目标是让智能体&#xff08;agent&#xff09;在一个环境&#xff08;environment&#xff09;中采取一系列行动&#xff08;actions&#xff09;以完成一个…...

Unicode不可见字符

场景复现 在访问 https://dotnet.microsoft.com/zh-cn/apps/aspnet地址时 突然出现 https://dotnet.microsoft.com/zh-cn/apps/aspnet%E2%80%8C%E2%80%8C 但是正常来看&#xff0c;这个地址后面是没有%E2%80%8C%E2%80%8C的&#xff0c;粘贴到idea里发现了url地址后面还拼接了2…...