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

JAVASCRIPT 基础 DOM元素,MAP方法,获取输入值

从输入框获取数据的一般写法是:
```javascript
const w = parseFloat(document.getElementById("weight").value);
const h = parseFloat(document.getElementById("height").value);
```
而从弹窗获取数据一般写法是:
```javascript
const w = parseFloat(prompt("输入体重:"));
const h = parseFloat(prompt("输入身高:"));
```

下面是几种常见的浏览器弹窗示例:

1. 只展示信息的“警告弹窗”:  
```html
<!-- HTML 中不需要额外代码,JS 可以直接写:-->
<script>
alert("这是一个只展示信息的弹窗");
</script>
```
它不会让用户输入内容,只是单纯显示文本。

2. 带“确认/取消”的弹窗:  
```javascript
if (confirm("确认要删除吗?")) {
    console.log("用户确认");
} else {
    console.log("用户取消");
}
```
它只显示信息并提供“确定/取消”按钮,没有输入框。

3. 带输入框的弹窗 (prompt):  
```javascript
const name = prompt("请输入你的名字:");
console.log(name);
```
它会自动出现一个能让用户输入文本的对话框,用户点击“确定”后将所输入的内容返回给 name 变量。没有办法在这个对话框里添加自定义标签,它是浏览器原生实现的输入弹窗。

---

## 1. innerHTML 的概念

innerHTML 不是分级的概念,而是一个属性,代表一个 DOM 元素的内部 HTML 内容。它不是"相对的"概念,而是指特定 DOM 元素的所有子内容(以 HTML 字符串形式)。当你访问 `element.innerHTML` 时,你获取的是该元素内部的所有 HTML 代码,不包括元素自身的标签。

## 2. 以给定的 HTML 片段为例

```html
<section>
  <img
    src="dinosaur.png"
    alt="A red Tyrannosaurus Rex: A two legged dinosaur standing upright like a human, with small arms, and a large head with lots of sharp teeth." />
  <p>
    Here we will add a link to the
    <a href="https://www.mozilla.org/">Mozilla homepage</a>
  </p>
</section>
```

对于 `<section>` 元素:

```html
- **innerHTML** 是:<imgsrc="dinosaur.png"alt="A red Tyrannosaurus Rex: A two legged dinosaur standing upright like a human, with small arms, and a large head with lots of sharp teeth." /><p>Here we will add a link to the<a href="https://www.mozilla.org/">Mozilla homepage</a></p>
```- **outerHTML** 是:
```html
<section><imgsrc="dinosaur.png"alt="A red Tyrannosaurus Rex: A two legged dinosaur standing upright like a human, with small arms, and a large head with lots of sharp teeth." /><p>Here we will add a link to the<a href="https://www.mozilla.org/">Mozilla homepage</a></p>
</section>
```

## 3. innerHTML 与 DOM 节点的关系

innerHTML

 是 DOM 节点的一个属性,提供节点内部 HTML 的字符串表示。而 DOM 节点是文档对象模型中的元素,代表 HTML 文档的结构。

### 代码示例:

```javascript
// 获取 section 元素
const section = document.querySelector('section');// 查看 DOM 节点本身
console.log("DOM 节点:", section);
// 输出: [object HTMLSectionElement] (浏览器中会显示更详细的对象信息)// 查看 innerHTML (HTML 字符串)
console.log("innerHTML:", section.innerHTML);
// 输出: 内部的 HTML 内容字符串// 查看 outerHTML (包含自身的 HTML 字符串)
console.log("outerHTML:", section.outerHTML);
// 输出: 包含自身在内的 HTML 内容字符串// 查看 DOM 节点的子节点 (实际的 DOM 节点对象数组,而非 HTML 字符串)
console.log("子节点:", section.childNodes);
// 输出: NodeList [img, text, p]// 修改 innerHTML (会替换所有子内容)
section.innerHTML = "<h1>新内容</h1>";
// 现在 section 只包含一个 h1 元素
```

DOM 节点是对象,而 innerHTML 是一个返回或设置 HTML 字符串的属性。当你修改 innerHTML 时,浏览器会解析这个字符串并创建新的 DOM 节点来替换原有内容。

---

把 <script> 放在 body 底部的策略对内联脚本和外部脚本都有效。当浏览器加载 HTML 时,直到解析到 <script> 标签时才会加载并执行这段脚本;因此,无论脚本代码内联还是通过 src 引入,都能确保在页面的元素加载完毕后再执行脚本。

---

给定一个包含学生成绩的字典数组,使用 map 修改数组,其中包含学生姓名和他们的成绩等级(>=90 为 "A", >=80 为 "B", >=70 为 "C", 其他为 "F")。

const students = [{ name: 'Alice', score: 92 },{ name: 'Bob', score: 76 },{ name: 'Charlie', score: 85 },{ name: 'Dave', score: 63 }
];
const passingScore = {A: 90,B: 80,C: 70,D: 60
}
students = students.map(onestudent => {const score=onestudent.score;
;for( const attribute in passingScore){const threshold = passingScore.attribute;if(score>=threshold){return onestudent.grade>=threshold? onestudent.grade=`${attribute}` :`${attribute}`}}
});
console.log(students);

我认为return onestudent.grade>=threshold? onestudent.grade=${attribute} :${attribute} 能保证“不断随着最大能达到的等级来更新,最终只留下最大匹配”

这段代码存在几个严重问题,**无法**实现"不断随着最大能达到的等级来更新,最终留下最大匹配":

1. **属性访问错误**:
   ```javascript
   const threshold = passingScore.attribute;
   ```
   应该用方括号访问:`passingScore[attribute]`,因为attribute是变量

2. **提前返回**:
   ```javascript
   if(score>=threshold){
       return onestudent.grade>=threshold? onestudent.grade=`${attribute}` :`${attribute}`
   }
   ```
   当找到第一个符合条件的阈值时就立即返回,无法比较所有等级

3. **遍历顺序问题**:`for...in`循环的遍历顺序不确定,可能先检查D再检查A

4. **返回值混乱**:
   - 正在返回字符串值而不是学生对象
   - 三元表达式逻辑不明确

// 正确的实现方式
const students = [{ name: 'Alice', score: 92 },{ name: 'Bob', score: 76 },{ name: 'Charlie', score: 85 },{ name: 'Dave', score: 63 }
];const gradedStudents = students.map(student => {const score = student.score;if (score >= 90) {return { name: student.name, grade: 'A' };} else if (score >= 80) {return { name: student.name, grade: 'B' };} else if (score >= 70) {return { name: student.name, grade: 'C' };} else {return { name: student.name, grade: 'F' };}
});console.log(gradedStudents);

---

# JavaScript map() 方法的参数解释

map()方法接受一个回调函数作为唯一必需的参数。实际语法是:

```javascript
array.map(callback)
```

其中 `callback` 是一个函数,会被应用于数组的每个元素。这个回调函数可以接收三个参数:
1. 当前元素
2. 当前索引(可选)
3. 原数组(可选)

## 两种常见的写法:

### 1. 内联定义函数:
```javascript
students = students.map(function(onestudent) {
    // 这里的代码会应用到每个 student
    return /* 某个值 */;
});
```

### 2. 使用预定义函数:
```javascript
function changeLevel(onestudent) {
    // 处理逻辑
    return /* 某个值 */;
}

students = students.map(changeLevel);
```

## 错误示例(不正确的语法):
```javascript
// 这是错误的!map 不接受两个参数
students = students.map(onestudent, changeLevel);
```

所以 students.map(function(onestudent) {...})是完全正确的语法,其中 `function(onestudent) {...}` 就是传递给 map()的回调函数。在这里,onestudent 是回调函数的参数,代表当前正在处理的数组元素。

在 JavaScript 的 map()函数中,参数是在函数定义时声明的。onestudent不需要在外部预先定义,它是作为回调函数的参数自动创建的。

这个概念可能对初学者来说有点抽象,让我用一个简单的例子来解释:

```javascript
// 普通的函数调用
function greet(person) {
    console.log("Hello, " + person);
}
greet("John"); // person = "John"

// 类似地,map 自动为每个数组元素调用你的函数
students.map(onestudent => {
    // 这里 onestudent 自动等于当前正在处理的数组元素
    // 第一次循环:onestudent = { name: 'Alice', score: 92 }
    // 第二次循环:onestudent = { name: 'Bob', score: 76 }
    // 以此类推...
});
```

map() 方法会自动:
1. 遍历数组中的每个元素
2. 对每个元素调用你提供的函数
3. 将当前元素作为参数传递给函数
4. 收集函数的返回值组成一个新数组

所以 onestudent是在函数参数位置上定义的变量,它会自动接收当前正在处理的学生对象。这是 JavaScript 函数式编程的标准模式,你不需要预先声明这个变量。
---
1. DOM 节点层级判断标准

在 DOM 中,每个 HTML 元素都是一个节点,但节点不仅限于元素。节点类型包括:

- 元素节点(如 `<p>`、`<span>`)
- 文本节点(元素内的文本)
- 注释节点(HTML 注释)
- 属性节点等

2. DOM 节点和 CSS 选择器的对比
- DOM 包含文本节点,CSS 选择器不直接处理文本节点
- CSS 选择器有特殊语法(如 `>`、`+`、`~` 等组合器)

### 比较例子:```html
<div id="container"><p class="intro">Hello <span>world</span></p><p>Another paragraph</p>
</div>
```**DOM 访问方式:**
```javascript
// 获取元素节点
const container = document.getElementById("container");
const paragraphs = container.getElementsByTagName("p");
const firstPara = paragraphs[0];
const span = firstPara.getElementsByTagName("span")[0];// 访问子节点(包括文本节点)
console.log(firstPara.childNodes); // [文本节点"Hello ", span元素节点]
```**对应的 CSS 选择器:**
```css
/* 选择container下的所有p */
#container p { }/* 选择container下的直接p子元素 */
#container > p { }/* 选择intro类的p内部的span */
p.intro span { }
```CSS 选择器聚焦于元素的选择,而 DOM API 更关注节点的操作和遍历,包括文本节点、注释等非元素节点。# DOM 选择器与节点关系## 1. `document.querySelectorAll()` 的行为`document.querySelectorAll()` 会选择文档中所有匹配 CSS 选择器的元素,无论它们在哪个层级,返回一个 NodeList。### 1.1 对于示例文件中的选择器:```javascript
// 选择所有 <p> 元素
const allPs = document.querySelectorAll("p");
console.log(allPs); 
// 结果: NodeList(2) [p, p] 
// 包含 box1 中的 "小猪课堂" 和 box2 中的 "box2p1"、"box2p2"// 选择所有 <div> 元素
const allDivs = document.querySelectorAll("div");
console.log(allDivs);
// 结果: NodeList(2) [div#box1, div#box2]
// 包含两个 div,一个 id 为 box1,一个 id 为 box2
```### 1.2 只选择 box2 中的第二个 span (hhh2):```javascript
// 方法1:使用 CSS 选择器
const secondSpan = document.querySelector("#box2 span:nth-child(4)");
// 或
const secondSpan = document.querySelectorAll("#box2 span")[1];
secondSpan.textContent = "iii2";// 方法2:使用 DOM 遍历
const box2 = document.getElementById("box2");
const spans = box2.getElementsByTagName("span");
spans[1].textContent = "iii2";
```### 1.3 选择所有 span 元素并修改:```javascript
// 选择所有 span 元素
const allSpans = document.querySelectorAll("span");// 遍历并修改每一个
allSpans.forEach(span => {span.textContent = "iii2";
});// 或使用 for 循环
for (let i = 0; i < allSpans.length; i++) {allSpans[i].textContent = "iii2";
}
```

## 2. DOM 节点关系与选择方法

针对你的文件,以下是访问各种节点关系的代码示例:

### 子节点 (Child Nodes)

```javascript
// 获取 box1 的所有子节点(包括文本节点和注释)
const box1 = document.getElementById("box1");
const box1Children = box1.childNodes;
console.log(box1Children); 
// NodeList 包含所有子节点,包括文本节点和注释

// 只获取元素子节点(不包括文本节点和注释)
const box1ElementChildren = box1.children;
console.log(box1ElementChildren);
// HTMLCollection 只包含元素节点:p, span, em
```

### 后代节点 (Descendant Nodes)

```javascript
// 获取 body 下所有的 span 元素(后代,不限于直接子元素)
const allBodySpans = document.querySelectorAll("body span");
console.log(allBodySpans);
// NodeList 包含 body 下所有 span,无论层级深度

// 另一种获取特定后代的方式
const spanInBox2 = document.querySelectorAll("#box2 span");
console.log(spanInBox2);
```

### 父节点 (Parent Node)

```javascript
// 获取第一个 p 元素的父节点
const firstP = document.querySelector("p");
const parentOfP = firstP.parentNode;
console.log(parentOfP); // 是 box1 div

// 或者
console.log(firstP.parentElement);
```

### 兄弟节点 (Sibling Nodes)

```javascript
// 获取 box1 中 p 元素的下一个兄弟元素
const pInBox1 = document.querySelector("#box1 p");
const nextSibling = pInBox1.nextElementSibling;
console.log(nextSibling); // 是 span 元素

// 获取 box1 中 em 元素的上一个兄弟元素
const emInBox1 = document.querySelector("#box1 em");
const prevSibling = emInBox1.previousElementSibling;
console.log(prevSibling); // 是 span 元素

// 注意:nextSibling 和 previousSibling 会包含文本节点
// 而 nextElementSibling 和 previousElementSibling 只包含元素节点
```

这些方法允许你在 DOM 树中精确导航,根据节点之间的关系选择特定元素。与 CSS 选择器不同,这些 DOM 属性提供了更细粒度的控制和访问。

相关文章:

JAVASCRIPT 基础 DOM元素,MAP方法,获取输入值

从输入框获取数据的一般写法是&#xff1a; javascript const w parseFloat(document.getElementById("weight").value); const h parseFloat(document.getElementById("height").value); 而从弹窗获取数据一般写法是&#xff1a; javascript const w …...

VLAN间通信

目录 第一步&#xff1a;配vlan 第二步&#xff1a;配置核心vlanif,MAC地址信息。 第三步&#xff1a;ospf协议 三层交换机&#xff08;汇聚层&#xff09;: 对于交换机、路由器、防火墙等网络设备而言&#xff0c;接口类型一般存在两种&#xff1a;二层接口&#xff0c;三…...

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数&#xff08;Window Functions&#xff09;1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式&#xff08;Common Table Expressions, CTEs&#xff09;2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…...

5.安全相关(双手启动、安全触边传感器)

一、关于双手启动按钮的使用规范 本文介绍双手启动按钮的使用。概括来讲&#xff1a; 双手按下之间的时间差间隔应该在0.5-2秒之间。一旦释放任何一个按钮&#xff0c;启动信号输出结束。只有两个按钮都被释放之后&#xff0c;才能再次触发双手启动信号。如果某按钮被按下超过…...

国产达梦(DM)数据库的安装(Linux系统)

目录 一、安装前的准备工作 1.1 导包 1.2 创建用户和组 1.3 修改文件打开最大数 1.4 目录规划 1.5 修改目录权限 二、安装DM8 2.1 挂载镜像 2.2 命令行安装 2.3 配置环境变量 2.4 启动图形化界面 三、配置实例 四、注册服务 五、启动 停止 查看状态 六、数据库客…...

mapper.xml中 “http://mybatis.org/dtd/mybatis-3-mapper.dtd“> 报错的解决方法

我用mybatisx自动生成代码&#xff0c;但是mapepr.xml中的 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">报错&#xff0c;如下图&#xff0c;圈起来的部分是之前的报错&#xff0c;现在已经解决&#xff0c;所以没有爆红&#xff1a; 解决方法&#xff1a;…...

01_JavaScript

目录 一、js介绍、能做什么 --了解 二、JavaScript的组成-重点 三、JavaScript代码的书写位置 行内JS 内嵌 JS 外链 JS 四、JS 中的注释 单行 多行 五、变量&#xff08;重点&#xff09; 定义变量及赋值 变量的命名规则和命名规范 六、数据类型&#xff08;重…...

数组作为哈希表的妙用:寻找缺失的第一个正数

数组作为哈希表的妙用&#xff1a;寻找缺失的第一个正数 大家好&#xff0c;我是Echo_Wish&#xff0c;今天我们来探讨一个经典的算法问题——“缺失的第一个正数”。听起来可能有点简单&#xff0c;但它实际上是一个非常有意思且富有挑战性的题目&#xff0c;在面试中常常会碰…...

JAVA学习*Object类

Object类 Object类是所有类的父类 类中有一些方法&#xff08;都需要掌握&#xff09; toString()方法 在学习类的对象的时候有介绍过了&#xff0c;当我们重新给此方法就会打印类与对象的信息 equals()方法 在Java中的比较&#xff0c; 如果左右两侧是基本类型变量&#…...

《论语别裁》第02章 为政(03)星辰知多少

第二个问题说到“北辰”。我们中国文化发达得最早的是天文。过去我们把天体分成二十八宿和三垣——紫微、少微、太微&#xff0c;类似于我们现在讲天文的经纬度。经纬度是西方的划分法。曾经有位天文学家主张&#xff0c;我们自己重新划过&#xff0c;不照西方的度数划&#xf…...

git_version_control_proper_practice

git_version_control_proper_practice version control&#xff0c;版本控制的方法之一就是打tag 因为多人协作的项目团队&#xff0c;commit很多&#xff0c;所以需要给重要的commit打tag&#xff0c;方便checkout&#xff0c;检出这个tag 参考行业的实践方式。如图git、linux…...

playwright-go实战:自动化登录测试

1.新建项目 打开Goland新建项目playwright-go-demo 项目初始化完成后打开终端输入命令&#xff1a; #安装项目依赖 go get -u github.com/playwright-community/playwright-go #安装浏览器 go run github.com/playwright-community/playwright-go/cmd/playwrightlatest insta…...

手机扫描仪 含PDF转word功能+OCR识别110种语言

TapScanner Premium 是一款功能强大的手机扫描仪应用&#xff0c;支持 PDF 合并、分割以及转换为 Word 文档格式&#xff0c;还具备 OCR 识别功能&#xff0c;可识别 110 种语言。汉化中文且已激活全部功能&#xff0c;可免费使用。 该应用操作简洁&#xff0c;扫描文档、收据…...

数据可视化在商业智能中的应用:从数据到洞察的桥梁

数据可视化在商业智能中的应用:从数据到洞察的桥梁 大家好,我是Echo_Wish。今天,我们来探讨一个数据领域的热门话题——数据可视化在商业智能中的应用。在数据驱动的时代,如何从海量的数字和信息中提炼出有价值的洞察,成为了企业决策的关键。而数据可视化,正是将枯燥的数…...

【HarmonyOS Next的奇幻大冒险】DevEco Studio的AI助手CodeGenie挺好用

遇到些问题在官网搜不出答案&#xff0c;CodeGenie都给解决了&#xff01; 不过我的问题可能比较初级&#xff0c;往后再看看它的能力怎么样 下面的截图是关于其中一个问题的对话。可见CodeGenie干脆利索&#xff0c;并且给出了相关知识点在官网上的参考信息链接&#xff0c;大…...

替代-UX设计师

初创公司如何在没有设计师的情况下 打造实用的用户体验 一个常见的捷径是使用预构建的组件库&#xff0c;如谷歌的 Material UI它们为你提供了构建块&#xff0c;但它们并没有为你考虑整个用户流程你仍然需要弄清楚所有这些是如何组合在一起的但是&#xff0c;很多时候&#x…...

ISIS-1 ISIS概述

前面几章我们介绍了OSPF的基础工作原理以及怎样交互LSA形成LSDB链路状态数据库的 这一章我们来介绍另一个链路状态路由协议,ISIS路由协议 一、概述 ISIS(Intermediate System to Intermediate System,中间系统到中间系统)是由ISO(International Organization for Standardiza…...

电脑上不了网普通用户排除方法

1&#xff1a;首先通过电脑的运行/CMD/ipconfig /all 命令查看电脑的ip地址是否正常如图&#xff1a; 2&#xff1a;在命令行中运行&#xff1a;ping 127.0.0.1 如图则正常&#xff0c;否则要重新安装网卡驱动 程序。 3&#xff1a;用ping命令&#xff0c;ping一下同网段的电…...

Qt 控件概述 QLCDNumber 和 Progressbar

目录 QLCDNumber 进度条 定时器进度条的实现 通过stylesheet来改变进度条颜色​ QLCDNumber LCD数字显示器 实现一个定时器 QLCDNumber 进度条 定时器进度条的实现 为什在Widget.h种头文件并没有包含QTimer这个头文件&#xff0c;却还可以申明一个TImer指针呢&#xff1f;…...

2025.03.21首板涨停股票分析

目录 1 涨停原因分析2 交易建议 1 涨停原因分析 2 交易建议...

数据库的DDL操作

目录 一、创建数据库 &#xff08;1&#xff09;字符集和校验集 二、操作数据库 &#xff08;1&#xff09;查看数据库 &#xff08;2&#xff09;显示创建语句 &#xff08;3&#xff09;修改数据库 &#xff08;4&#xff09;删除数据库 三、数据库的备份与恢复 四、…...

Docker 部署 Graylog 日志管理系统

Docker 部署 Graylog 日志管理系统 前言一、准备工作二、Docker Compose 配置三、启动 Graylog 服务四、访问 Graylog Web 界面总结 前言 Graylog 是一个开源的日志管理平台&#xff0c;专为实时日志收集、分析和可视化设计。它支持强大的搜索功能&#xff0c;并且与 Elastics…...

特征工程自动化(FeatureTools实战)

目录 特征工程自动化(FeatureTools实战)1. 引言2. 项目背景与意义2.1 特征工程的重要性2.2 自动化特征工程的优势2.3 工业级数据处理需求3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法4. 自动化特征工程理论基础4.1 特征工程的基本概念4.2 FeatureTools库简介4.3 关键公…...

Linux:xxx is not in the sudoers file. This incident will be reported.

报错 xxx is not in the sudoers file. This incident will be reported.解决方式 切换到root用户下操作 # 1、修改/etc/sudoers文件为可修改&#xff0c;默认是只读的 ls -lh /etc/sudoers -r--r----- 1 root root 4.3K Dec 1 01:45 /etc/sudoerschmod uw /etc/sudoersls…...

fastapi+playwright爬取google搜索1-3页的关键词返回json

1,playwright无头 2,代理池随机获取代理ip 3,随机浏览行为,随机页面滚动 4,启用stealth模式 5,随机延时搜索 from fastapi import FastAPI, HTTPException from fastapi.responses import JSONResponse import asyncio from concurrent.futures import ThreadPool…...

论文阅读笔记:Denoising Diffusion Probabilistic Models (3)

论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (1) 论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (2) 论文阅读笔记&#xff1a;Denoising Diffusion Probabilistic Models (3) 4、损失函数逐项分析 可以看出 L L L总共分为了3项…...

FlauBERT:面向法语的无监督语言模型预训练

摘要 语言模型已成为在许多不同自然语言处理&#xff08;NLP&#xff09;任务中取得最先进成果的关键步骤。利用当今可用的大量未标注文本&#xff0c;它们提供了一种有效的方式来预训练连续词表示&#xff0c;这些表示可以在下游任务中进行微调&#xff0c;并在句子级别上进行…...

JavaScript严格模式

文章主要介绍JavaScript严格模式&#xff0c;包括启用原因、方式以及需避开的常见陷阱&#xff0c;助力开发者写出更健壮代码。 1. 启用原因&#xff1a;将普通JavaScript中的“静默错误”变为抛出错误&#xff0c;有助于编写健壮代码&#xff1b;修复阻碍JavaScript引擎优化的…...

文件上传的小点总结(1)

2.文件类型绕过 问题插入&#xff1a;BP无法拦截本地流量 ①插件限制 不代理的地址列表通常写有localhost和127.0.0.1&#xff0c;把本地的全都删掉&#xff0c;然后应用保存。 ②浏览器限制 Firefox浏览器设置&#xff1a;检查浏览器代理配置和proxy listeners都没问题后&…...

2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序

2024年数维杯数学建模 B题 生物质和煤共热解问题的研究 原题再现&#xff1a; 随着全球能源需求的不断增长和对可再生能源的追求&#xff0c;生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源&#xff0c;源自植物和动物的有机物质&#xff0c;而煤…...

@maptalks/gl-layers中的VectorTileLayer的Symbol样式文档

maptalks/gl-layers中的VectorTileLayer的Symbol样式文档 矢量的Symbol样式分为以下几个大类&#xff1a; marker样式属性&#xff0c;定义了图标相关样式属性 text样式属性&#xff0c;定义了文字相关样式属性 line样式属性&#xff0c;定义了线相关的样式属性 polygon样式属…...

OpenCV旋转估计(3)帮助构建一个最大生成树(Maximum Spanning Tree)函数findMaxSpanningTree()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::findMaxSpanningTree 是 OpenCV 中用于图像拼接工作流的一个函数&#xff0c;它帮助构建一个最大生成树&#xff08;Maximum Spanni…...

OpenCV HighGUI 模块使用指南(Python 版)

用户让我编写一个 HighGUI 模块的使用指南&#xff0c;包括函数的使用和应用场景的实现。首先&#xff0c;我需要回顾 HighGUI 模块的主要功能&#xff1a;图像显示、视频捕获、鼠标和键盘事件。然后&#xff0c;按照用户提供的结构&#xff0c;整理每个部分的函数详解、代码示…...

SPI 机制与 Spring Boot AutoConfiguration 对比解析

一、架构效率革命性提升 1.1 类加载效率跃升 Spring Boot 2.7引入的AutoConfiguration.imports采用清单式配置加载&#xff0c;对比传统SPI机制&#xff1a; 传统SPI扫描路径&#xff1a;META-INF/services/** Spring Boot新方案&#xff1a;META-INF/spring/org.springfram…...

算法基础篇(1)(蓝桥杯常考点)

算法基础篇 前言 算法内容还有搜索&#xff0c;数据结构&#xff08;进阶&#xff09;&#xff0c;动态规划和图论 数学那个的话大家也知道比较难&#xff0c;放在最后讲 这期包含的内容可以看目录 模拟那个算法的话就是题说什么写什么&#xff0c;就不再分入目录中了 注意事…...

【蓝桥杯速成】| 10.回溯切割

前面两篇内容我们都是在做有关回溯问题的组合应用 今天的题目主题是&#xff1a;回溯法在切割问题的应用 题目一&#xff1a;分割回文串 问题描述 131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些 子串&#xff…...

【Spring】深入理解 Spring 事务管理

文章目录 一、事务的基本概念​原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔离性&#xff08;Isolation&#xff09;持久性&#xff08;Durability&#xff09; 二、Spring 事务管理的优势​简化事务管理代码提供多种事务管理方式整合…...

java学习笔记6

按住shift键&#xff0c;选择开始的一位和最后结束的一位来全选 面向对象特征之二&#xff1a;继承性(inheritance) 面向对象特征之二:继承性1.继承性的理解 > 生活上:财产的继承、颜值的继承 > 代码层面:> 自上而下:定义了一个类A&#xff0c;在定义另一个类B时&…...

人工智能在现代科技中的应用和未来发展趋势

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种模拟人类智能思维和行为的技术&#xff0c;已经在现代科技中得到广泛应用。以下是人工智能在现代科技中的应用和未来发展趋势&#xff1a; 应用&#xff1a; 机器学习&#xff1a;机器学习是人工…...

第二十一章:模板与继承_《C++ Templates》notes

模板与继承 重点和难点编译与测试说明第一部分&#xff1a;多选题 (10题)第二部分&#xff1a;设计题 (5题)答案与详解多选题答案&#xff1a;设计题参考答案 测试说明 重点和难点 21.1 空基类优化&#xff08;EBCO&#xff09; 知识点 空基类优化&#xff08;Empty Base Cla…...

STC89C52单片机学习——第35节: [16-1] AD/DA

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.03.23 51单片机学习——第35节: [16-1] AD/DA 前言开发板说明引用解答和科普一、AD问题…...

算法-最大公约数

1、约数&#xff1a; 1.1 试除法求约数 原理&#xff1a;只需要遍历最小的约数即可&#xff0c;较大的那个可以直接算出来。 import java.util.*; public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {int t sc.nextIn…...

在 SaaS 应用上构建 BI 能力的实战之路

SaaS 产品在持续运营过程中积累了大量数据&#xff0c;这些数据不仅是数字的记录&#xff0c;更是洞察市场趋势、优化产品功能、提升用户体验的宝贵资源。 因此&#xff0c;大部分的 SaaS 产品在发展到一定阶段后&#xff0c;都会开始构建自己的报表模块或分析模块&#xff0c;…...

代码随想录刷题day51|(二叉树篇)654.最大二叉树

一、二叉树基础知识 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二叉树的递归遍历-CSDN博客 二、递归思路 递归三部曲 构造树一般采用前序遍历&#xff0c;因为先构造中间节点&#xff0c;然后递归构造左子树和右子树&#xff1b; 1.递归函数参数…...

深入理解 C++11 智能指针:独占、共享与弱引用的完美管理

文章目录 std::unique_ptr&#xff08;独占式智能指针&#xff09;std::shared_ptr&#xff08;共享式智能指针&#xff09;std::weak_ptr&#xff08;弱引用智能指针&#xff09;示例展示&#xff1a;智能指针的原理内存泄漏**什么是内存泄漏&#xff0c;内存泄漏的危害****如…...

1.2 编译器结构

编译器具有模块化的高层结构。还可以将模块化进一步细化。编译器可以看成多个阶段构成的流水线结构。 一种没有优化的编译器结构 更复杂的编译器结构...

文件操作助手

文件操作助手 在我们实现一个大型项目时&#xff0c;往往会有一个公共模块&#xff0c;这个公共模块是公用的&#xff0c;里面可能会包含文件操作助手、字符串操作助手、时间戳操作助手… 而我们今天就来实现一个文件操作助手&#xff0c;里面包含的功能有&#xff1a; 判断…...

线段树与扫描线 —— 详解算法思想及其C++实现

目录 一、线段树&#xff08;Segment Tree&#xff09; 基本概念 结构 操作 示例代码 二、扫描线&#xff08;Sweep Line&#xff09; 基本概念 应用场景 示例代码&#xff08;矩形面积并集&#xff09; 三、总结 一、线段树&#xff08;Segment Tree&#xff09; 基本…...

Leetcode 刷题笔记1 图论part04

leetcode 110 字符串接龙 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…...

快速入手:Nacos融合SpringCloud成为注册配置中心

快速入手&#xff1a;Nacos融合SpringCloud成为注册配置中心 前言安装Nacos项目搭建添加配置启动类添加注解运行项目服务调用RestTemplate 模式FeignClient 模式 前言 Spring Cloud是一系列框架的集合&#xff0c;提供了微服务架构下的各种解决方案&#xff0c;如服务治理、配…...