webAPI -DOM 相关知识点总结(非常细)
title: WebAPI语法 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端
WEB API
了解DOM的结构并掌握其基本的操作,体验 DOM 在开发中的作用
API简介
就是使用js来操作html和浏览器
什么是DOM?
就是一个文档对象模型,是用来呈现预计于任意html交互的API.
一句话:是浏览器提供的一套专门来操作网页内容的功能。
-
DOM :开发网页内容特效和实现用户交互。
-
DOM树
将html文档以树状结构直观的呈现出来,我们称之为文档树,DOm树
描述网页内容关系的名词。
作用:文档树直观的体现了标签与标签的关系
DOM对象(重要)
-
对象:浏览器根据html标签生成的Js对象
-
所有的标签属性都可以在这个对象上面找到
-
修改这个对象的属性会自动映射到标签身上。
核心思想:把网页内容当作对象来处理。
Document :是DOM里面提供的一个对象
-
所以他提供的属性和方法都是用来访问和操作网页内容的
-
网页内容都在document里面
获取一个DOM 元素我们使用谁?能直接操作修改吗?
一般我们用的谁querySelector() 可以直接操作修改
获取多个DOM 元素我们使用querySelctorAll(),不可以直接进行修改,只能通过遍历的方式一次给里面的元素做修改。
根据CSS选择器来获取DOM元素(重点)
document.querySelctorAll('css选择器')
得到的是一个伪数组
-
有长度有索引号的数组
-
但是没有pop(),push()等数组的方法
想要得到里面的每一个对象,则需要遍历(for)来实现。
那么我应该怎么做呢?
//获取元素 const lis = document,querySelectorAll('.nav li') //console.log(lis) for(let i = 0;i<lis.length;i++) {console.log(lis[i]); //每一个小li对象 }
小括号里面的参数必须是字符串,也就是必须加引号。
其他获取DOM元素的方法
document.getElementById('nav') //根据id获取一个元素
操作元素内容
目标:能够修改元素的文本更换内容
DOM对象就是根据标签生成的,所以操作标签,本质上就是操作DOM对象
就是操作对象使用的点语法
如果想要修改标签元素的里面的内容,那么可以使用如下的几种方式
-
对象.innerText属性
那么具体上是怎么要的呢
<div class="box">我是文字的内容</div> <script> //获取元素 const box = document.querySelector('.box') //修改文字内容。对象.innerText 属性 console.log(box.innerText) //获取文字内容 box.innerText = '我是一个盒子' </script>
innerText 属性 显示纯文本,不解析标签
可以将文本内容添加/更新到任意标签位置
-
对象.innerHTML属性
<div class="box">我是文字的内容</div> <script> //获取元素 const box = document.querySelector('.box') //修改文字内容。对象.innerText 属性 console.log(box.innerText) //获取文字内容 box.innerHTML = '<strong>我要更换</strong>' </script>
一个具体例子
<script> //线声明一下数组 const personArr = ['周杰伦','sw','qd','wdw'] //随机数数组下标 const random = Math.floor(Math.random() * personArr.length) //获取one 元素 const one = doucument.querySelctor('#one') </script>
操作元素属性
对象.属性 = 值
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title> </head> <body><img src="./images/1.webp" alt=""><script>// 1. 获取图片元素const img = document.querySelector('img');// 2. 修改图片对象的属性img.src = './images/2.webp';img.title = 'pink老师的艺术照';</script> </body> </html>
然后再写一个生成随机照片的程序
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>随机图片</title> </head> <body><img src="./images/1.webp" alt=""><script>// 获取 N ~ M 的随机整数function getRandom(N, M) {return Math.floor(Math.random() * (M - N + 1)) + N;} // 1. 获取图片对象const img = document.querySelector('img'); // 2. 随机得到序号const random = getRandom(1, 6); // 3. 更换路径img.src = `./images/${random}.webp`;</script> </body> </html>
这个得记住,当模版来记忆
操作对象的样式属性
img.src = ./images/${random}.webp
; 这里是重点,也是精髓所在
小驼峰命名法(Camel Case)是一种命名约定,通常用于编程中变量、函数、对象等的命名。
特点:
1. 首字母小写:小驼峰命名法的第一个单词以小写字母开头。
2. 后续单词首字母大写:从第二个单词开始,每个单词的首字母大写,其余字母小写。
3. **不使用分隔符**:单词之间不使用下划线、连字符等,仅通过字母大小写区分单词边界。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>修改样式</title> </head> <body><div class="box"></div><script>// 1. 获取元素const box = document.querySelector('.box'); // 2. 修改样式属性 对象.style.样式属性 = '值' 别忘了跟单位box.style.width = '300px';box.style.backgroundColor = 'hotpink';box.style.border = '2px solid blue';box.style.borderTop = '2px solid red';</script> </body> </html>
注意这个格式
小驼峰形式
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>通过类名修改样式</title><style>.box {width: 300px;height: 200px;background-color: hotpink;border: 1px solid #000;}</style> </head> <body><div></div><script>// 1. 获取元素const div = document.querySelector('div');// 2. 添加类名 class 是个关键字 我们用 classNamediv.className = 'box';</script> </body> </html>
如果你想更换的是nav 的话,可以在添加类名也就是第2步鞋
Div.className = 'nav box'
操作元素样式属性
-
通过classList 操作类控制CSS
-
为了解决className 容易覆盖以前的类名,我们可以通过classList 方式追加和删除类名
通过classList修改样式
<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>classList.add 示例</title><style>.box {width: 100px;height: 100px;background-color: lightgray;}.active {background-color: lightblue;border: 2px solid blue;}</style> </head> <body><div class="box">文字</div><script>//获取元素const box = document.querySelector('.box')// 添加类名 activebox.classList.add('active')//删除一个类box.claaList.remove('active')//切换一个类box.classList.togglē('active')</script> </body> </html>
轮播图
首先随机数
随机数(记住)
<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>随机内容更新</title><style>.slider-wrapper img {width: 300px;height: 200px;}.slider-footer {padding: 10px;text-align: center;}</style> </head> <body><div class="slider-wrapper"><img src="placeholder.jpg" alt="随机图片" /></div><div class="slider-footer"><p>占位文字</p></div> <script>const sliderData = [{ url: 'image1.jpg', title: '图片一标题', color: '#ffcccc' },{ url: 'image2.jpg', title: '图片二标题', color: '#ccffcc' },{ url: 'image3.jpg', title: '图片三标题', color: '#ccccff' }] const random = parseInt(Math.random() * sliderData.length) const img = document.querySelector('.slider-wrapper img')img.src = sliderData[random].url const p = document.querySelector('.slider-footer p')p.innerHTML = sliderData[random].title const footer = document.querySelector('.slider-footer')footer.style.backgroundColor = sliderData[random].color</script> </body> </html>
加小点
的具体实现
<div class="slider-wrapper"><img src="placeholder.jpg" alt="图片"><ul class="slider-indicator"><li></li><li></li><li></li></ul> </div>
.slider-wrapper {position: relative;width: 300px;height: 200px; } .slider-wrapper img {width: 100%;height: 100%; } .slider-indicator {position: absolute;bottom: 10px;left: 50%;transform: translateX(-50%);display: flex;justify-content: center;list-style: none;padding: 0; } .slider-indicator li {width: 10px;height: 10px;background-color: lightgray;border-radius: 50%;margin: 0 5px;cursor: pointer; } .slider-indicator li.active {background-color: blue; /* 当前选中小圆点的颜色 */ }
const sliderData = [{ url: 'image1.jpg', title: '图片一标题', color: '#ffcccc' },{ url: 'image2.jpg', title: '图片二标题', color: '#ccffcc' },{ url: 'image3.jpg', title: '图片三标题', color: '#ccccff' } ]; // 随机选择一个图片和对应的小圆点 const random = parseInt(Math.random() * sliderData.length); // 更新图片 const img = document.querySelector('.slider-wrapper img'); img.src = sliderData[random].url; // 更新标题 const p = document.querySelector('.slider-footer p'); p.innerHTML = sliderData[random].title; // 更新背景颜色 const footer = document.querySelector('.slider-footer'); footer.style.backgroundColor = sliderData[random].color; // 选中小圆点并添加 active 类 const li = document.querySelector(`.slider-indicator li:nth-child(${random + 1})`); li.classList.add('active');
操作表单元素属性
<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表单值操作</title> </head> <body><input type="text" value="电脑" id="uname"> <script>// 1. 获取元素const uname = document.querySelector('input'); // 2. 获取值// 获取表单里当前的值,用 uname.valueconsole.log(uname.value); // 输出:电脑 // innerHTML 无法获取表单值console.log(uname.innerHTML); // 输出:undefined 或空字符串 // 3. 设置表单的值uname.value = '我要买电脑';console.log(uname.value); // 输出:我要买电脑 // 4. 获取和设置表单类型console.log(uname.type); // 输出:textuname.type = 'password'; // 将表单类型改为密码输入框</script> </body> </html>
操作表属性(实现勾选)
自定义属性
这样就会出现5个<div>
自定义属性。在html5中推出来了专门的data-自定义属性
在标签上一律是以data-开头
在DOM对象上一律是以dataset对象方式获取
<div data-id="1" data-spm="不知道">1</div> <div data-id="2">2</div> <div data-id="3">3</div> <div data-id="4">4</div> <div data-id="5">5</div> const one = document.querySelector('div'); console.log(one.dataset.id); // 输出:1 console.log(one.dataset.spm); // 输出:不知道
定时器
间歇函数
<body><script>第一种方法setInterval(fuction(){console.log('1111')},1000)第二种方法setInterval(fn,3000)关闭定时器fuction fn(){console.log('1111')}let n = setInterval(fn,1000)console.log(n)clearInterval(n)</script> </body>
实现用户倒计时效果
let i = 1 setInterval(fuction (){ i++ document.write(i) },200)
<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>倒计时启用按钮</title><style>.btn {padding: 10px 20px;font-size: 16px;cursor: not-allowed;}.btn:enabled {cursor: pointer;}</style> </head> <body><button class="btn" disabled>我已经阅读用户协议(5)</button> <script>// 1. 获取元素const btn = document.querySelector('.btn');// console.log(btn.innerHTML); // 按钮的初始内容 // 2. 倒计时let i = 5; // 倒计时初始值// 2.1 开启定时器let n = setInterval(function () {i--; // 倒计时减少// 更新按钮文字btn.innerHTML = `我已经阅读用户协议(${i})`;// 判断倒计时是否结束if (i === 0) {clearInterval(n); // 关闭定时器// 定时器停止后,按钮可用,文字更新为“同意”btn.disabled = false;btn.innerHTML = '同意';}}, 1000); // 每秒执行一次</script> </body> </html>
轮播图定时器版本
论比
事件监听
程序检测是否有事件发生。
关闭广告
日期对象
const date = new
const date = new Date() console.log(data) console.log(date.getFullYear()); const date1 = new Date('') console.log(date1)
时间戳
在 JavaScript 中,时间戳(Timestamp) 是指从 1970 年 1 月 1 日 00:00:00 UTC 开始的毫秒数,用于表示一个具体的时间点。以下是关于时间戳的相关知识和常用方法。
这是获得时间的三种方式
查找DOM节点
在前端开发中,DOM(Document Object Model)节点是 HTML 文档的基础组成部分。DOM 是一种用于表示和操作 HTML 和 XML 文档的编程接口。
什么是 DOM 节点?
• 节点(Node) 是 DOM 树中的基本单元。
• 每个节点代表 HTML 文档中的一部分,比如标签、属性、文本等。
• 整个 HTML 文档被解析后,会被表示为一个由节点组成的树状结构,称为 DOM 树。元素节点 表示 HTML 标签,比如
查找节点
通过 ID 查找
const node = document.getElementById("myID");
通过类名查找:
const nodes = document.getElementsByClassName("myClass");
通过标签名查找:
const nodes = document.getElementsByTagName("div");
使用 querySelector:
const node = document.querySelector(".myClass"); // 选择第一个符合条件的节点 const nodes = document.querySelectorAll(".myClass"); // 选择所有符合条件的节点
父子节点
增加节点
创造节点
const newDiv = document.createElement("div");
添加子节点:
const parent = document.getElementById("parent"); const child = document.createElement("div"); parent.appendChild(child);
在指定位置插入节点
const parent = document.getElementById("parent"); const newNode = document.createElement("p"); const referenceNode = document.getElementById("child"); parent.insertBefore(newNode, referenceNode);
删除节点:
const parent = document.getElementById("parent"); const child = document.getElementById("child"); parent.removeChild(child);
修改节点内容
const node = document.getElementById("myID"); node.textContent = "New Content";
修改节点属性
const node = document.getElementById("myID"); node.setAttribute("class", "newClass");
DOM 节点关系
在 DOM 树中,节点之间存在层级关系:
• 父节点(Parent Node): 使用 parentNode 属性访问。
const parent = childNode.parentNode;
• 子节点(Child Nodes): 使用 childNodes 属性访问(包括文本节点)。
const children = parentNode.childNodes;
• 第一个子节点/最后一个子节点:
const firstChild = parentNode.firstChild; const lastChild = parentNode.lastChild;
• 兄弟节点(Sibling Nodes):
const nextSibling = currentNode.nextSibling; // 下一个节点 const previousSibling = currentNode.previousSibling; // 上一个节点
M端事件
swipper插件
在swipper插件这里
BOM
在前端开发中,BOM(Browser Object Model,浏览器对象模型)是一个用于操作浏览器窗口和浏览器相关功能的接口。BOM 提供了 JavaScript 与浏览器交互的能力,比如控制窗口、导航、获取浏览器信息等。
在前端开发中,BOM(Browser Object Model,浏览器对象模型)是一个用于操作浏览器窗口和浏览器相关功能的接口。BOM 提供了 JavaScript 与浏览器交互的能力,比如控制窗口、导航、获取浏览器信息等。
console.log(window.innerWidth); // 浏览器窗口的宽度 console.log(window.innerHeight); // 浏览器窗口的高度 window.alert("这是一个弹窗!"); // 显示警告框 window.open("https://www.example.com"); // 打开新窗口
2. navigator 对象
• 提供浏览器和用户设备的信息,比如浏览器的名称、版本、操作系统等。
console.log(navigator.userAgent); // 用户代理字符串,包含浏览器信息 console.log(navigator.platform); // 操作系统类型 console.log(navigator.language); // 当前使用的语言 console.log(navigator.onLine); // 检测是否联网
3. location 对象
• 提供当前页面的 URL 信息,并可以通过它操作浏览器跳转。
console.log(location.href); // 当前页面的完整 URL console.log(location.hostname); // 主机名 console.log(location.pathname); // 路径部分 console.log(location.search); // 查询字符串部分 location.assign("https://www.example.com"); // 跳转到指定 URL location.reload(); // 重新加载当前页面
4. history 对象
• 提供对浏览器历史记录的操作能力。
history.back(); // 返回上一页 history.forward(); // 前进到下一页 history.go(-2); // 跳转到历史记录中的指定位置,负数表示后退
5. screen 对象
• 提供与用户屏幕相关的信息,比如分辨率。
console.log(screen.width); // 屏幕宽度 console.log(screen.height); // 屏幕高度 console.log(screen.availWidth); // 可用宽度(减去任务栏等) console.log(screen.availHeight); // 可用高度
定时器
JS执行机制
本地存储
在前端开发中,本地存储(Local Storage) 是 HTML5 提供的一种持久化存储方式,用于在浏览器中以键值对的形式保存数据。这些数据保存在用户的浏览器中,即使刷新页面或关闭浏览器后数据仍然存在。
1. 本地存储的特点
• 容量大:一般为 5MB,比传统的 cookie 容量大。
• 持久性:数据会一直保存在浏览器中,直到手动清除。
• 键值对存储:以字符串形式存储键值对。
• 仅在同一域名下共享:同一域名下的页面可以访问相同的本地存储。
(1) 保存数据
使用 localStorage.setItem(key, value) 方法。
localStorage.setItem('username', 'Alice');
• 参数说明:
• key:键名(字符串)。
• value:键值(必须是字符串)。
(2) 读取数据
使用 localStorage.getItem(key) 方法。
const username = localStorage.getItem('username'); console.log(username); // 输出:Alice
(3) 删除某个键值对
使用 localStorage.removeItem(key) 方法。
localStorage.removeItem('username');
(4) 清除所有数据
使用 localStorage.clear() 方法。
localStorage.clear();
(5) 获取所有键
使用 localStorage.key(index) 方法获取指定索引的键名。
for (let i = 0; i < localStorage.length; i++) {console.log(localStorage.key(i)); // 遍历所有键名 }
只能存储字符串
存储复杂数据类型
1. 存储对象
存储方法
将对象通过 JSON.stringify() 转换为字符串后存储:
const user = { name: 'Alice', age: 25, hobbies: ['reading', 'coding'] }; localStorage.setItem('user', JSON.stringify(user)); // 转为字符串存储
读取方法
从本地存储中获取字符串后,用 JSON.parse() 转换回对象:
const userStr = localStorage.getItem('user'); // 获取字符串 if (userStr) {const user = JSON.parse(userStr); // 转为对象console.log(user.name); // 输出:Aliceconsole.log(user.hobbies); // 输出:['reading', 'coding'] }
Map
map也称之为映射
join 把数组转换为字符串
正则表达式
正则表达式(Regular Expression)是用来匹配字符串中字符模式的工具,广泛应用于文本处理,比如验证输入格式、查找替换字符串、数据提取等。
1. 正则表达式的基础
正则表达式由普通字符和元字符(特殊字符)组成,具有灵活且强大的匹配能力。
正则表达式中的一些特殊字符需要通过反斜杠 \ 转义才能匹配本身:
• . 匹配 .,* 匹配 *。
• 如果要匹配反斜杠本身,写成 \。
常见正则表达式作用
-
表单验证
-
过滤敏感词
-
字符串中提取我们想要的部分
三组词语
匹配,替换,提取
const regex = /abc/;
const regex = /hello/i; console.log(regex.test("Hello")); // true
定义-检测是否匹配
元字符(Metacharacters) 是正则表达式中具有特殊含义的字符,用于定义匹配规则,而不是直接匹配它们的字面值。元字符赋予了正则表达式强大的功能,使其可以灵活处理字符串模式匹配。
const regex = /a.b/; console.log(regex.test("acb")); // true console.log(regex.test("a_b")); // true console.log(regex.test("ab")); // false
const regex1 = /^hello/; // 必须以 "hello" 开头 console.log(regex1.test("hello world")); // true console.log(regex1.test("world hello")); // false const regex2 = /world$/; // 必须以 "world" 结尾 console.log(regex2.test("hello world")); // true console.log(regex2.test("world hello")); // false
边界符
const regex1 = /^hello/; // 必须以 "hello" 开头 console.log(regex1.test("hello world")); // true console.log(regex1.test("world hello")); // false const regex2 = /world$/; // 必须以 "world" 结尾 console.log(regex2.test("hello world")); // true console.log(regex2.test("world hello")); // false
(4) {}(量词)
• {n}:匹配前面的字符恰好 n 次。
• {n,}:匹配前面的字符至少 n 次。
• {n,m}:匹配前面的字符 n 到 m 次。
const regex1 = /a{2}/; // 匹配两个连续的 "a" console.log(regex1.test("aa")); // true console.log(regex1.test("a")); // false const regex2 = /a{2,}/; // 匹配至少两个连续的 "a" console.log(regex2.test("aaa")); // true console.log(regex2.test("a")); // false const regex3 = /a{2,4}/; // 匹配 2 到 4 个连续的 "a" console.log(regex3.test("aaa")); // true console.log(regex3.test("aaaaa"));// true(只匹配前 4 个 "a")
const regex1 = /a{2}/; // 匹配两个连续的 "a" console.log(regex1.test("aa")); // true console.log(regex1.test("a")); // false const regex2 = /a{2,}/; // 匹配至少两个连续的 "a" console.log(regex2.test("aaa")); // true console.log(regex2.test("a")); // false const regex3 = /a{2,4}/; // 匹配 2 到 4 个连续的 "a" console.log(regex3.test("aaa")); // true console.log(regex3.test("aaaaa"));// true(只匹配前 4 个 "a")
3. 特殊的字符类
正则表达式还提供了一些预定义的字符类,可以快速匹配特定类型的字符:
相关文章:

webAPI -DOM 相关知识点总结(非常细)
title: WebAPI语法 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端WEB API 了解DOM的结构并掌握其基本的操作,体验 DOM 在开发中的作用 API简介 就是使用js来操作html和浏览器 什么是DOM? 就是一个文档对象模型,是用来呈现预计于任意htm…...
web集群
项目名称 基于keepalivednginx构建一个高可用、高性能的web集群 项目架构图 项目描述 构建一个基于nginx的7层负载均衡的web集群项目,模拟企业的业务环境达到构建一个高并发、高可用的web集群。通过压力测试来检验整个集群的性能,找出瓶颈࿰…...

Elasticsearch——Elasticsearch性能优化实战
摘要 本文主要介绍了 Elasticsearch 性能优化的实战方法,从硬件配置优化、索引优化设置、查询方面优化、数据结构优化以及集群架构设计等五个方面进行了详细阐述,旨在帮助读者提升 Elasticsearch 的性能表现。 1. 硬件配置优化 升级硬件设备配置一直都…...

不背单词快捷键(不背单词键盘快捷键)
文章目录 不背单词快捷键 不背单词快捷键 ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ …...
kafka-保姆级配置说明(consumer)
bootstrap.servers #deserializer应该与producer保持对应 #key.deserializer #value.deserializer ##fetch请求返回时,至少获取的字节数,默认值为1 ##当数据量不足时,客户端请求将会阻塞 ##此值越大,客户端请求阻塞的时间越长&…...

1.五子棋对弈python解法——2024年省赛蓝桥杯真题
问题描述 原题传送门:1.五子棋对弈 - 蓝桥云课 "在五子棋的对弈中,友谊的小船说翻就翻?" 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第…...

python3+TensorFlow 2.x(三)手写数字识别
目录 代码实现 模型解析: 1、加载 MNIST 数据集: 2、数据预处理: 3、构建神经网络模型: 4、编译模型: 5、训练模型: 6、评估模型: 7、预测和可视化结果: 输出结果ÿ…...
杨辉三角(蓝桥杯2021年H)
输入一个数字,看杨辉三角压缩矩阵第几个数与之相等。 #include<iostream> using namespace std; /* typedef struct Node {int* data;int size;Node* next; }Node,*Linklist; */ int C(int a,int b) {//求解组合数int c 1,div 1;if (b 0) {c 1;}else {fo…...

【蓝桥杯嵌入式入门与进阶】2.与开发板之间破冰:初始开发板和原理图2
个人主页:Icomi 专栏地址:蓝桥杯嵌入式组入门与进阶 大家好,我是一颗米,本篇专栏旨在帮助大家从0开始入门蓝桥杯并且进阶,若对本系列文章感兴趣,欢迎订阅我的专栏,我将持续更新,祝你…...
C++ queue
队列用vector<int>好不好 不好 为什么? 因为队列是先进先出 vector没有提供头删(效率太低) 要强制适配也可以 就得用erase函数和begin函数了 库里面的队列是不支持vector<int>的 queue实现 #pragma once #include<vector…...

【MySQL-7】事务
目录 1. 整体学习思维导图 2. 什么是事务 2.1 事务的概念 2.2 事务的属性(ACID) 2.3 事务出现的原因 2.4 查看存储引擎对事务的支持 3. 事务的使用 3.1 事务的提交方式 3.1.1 手动提交 3.1.2 自动提交 结论: 3.2 事务的隔离级别 3.2.1 理解隔离 3.2.2…...

03链表+栈+队列(D1_链表(D1_基础学习))
目录 一、什么是链表 二、基本操作 三、为什么要使用链表 四、为什么能够在常数时间访问数组元素 数组优点 数组缺点 五、动态数组诞生 链表优点 链表缺点 六、链表、数组和动态数组的对比 七、 链表种类 1. 单向链表 2. 双向链表 3. 循环链表 八、链表衍生 ...…...
Git 出现 Please use your personal access token instead of the password 解决方法
目录 前言1. 问题所示2. 原理分析3. 解决方法前言 1. 问题所示 执行Git提交代码的时候,出现如下所示: lixiaosong@IT07 MINGW64 /f/java_project/JavaDemo (master) $ git push -u origin --all libpng warning: iCCP: known incorrect sRGB profile libpng warning...

AI大模型开发原理篇-1:语言模型雏形之N-Gram模型
N-Gram模型概念 N-Gram模型是一种基于统计的语言模型,用于预测文本中某个词语的出现概率。它通过分析一个词语序列中前面N-1个词的出现频率来预测下一个词的出现。具体来说,N-Gram模型通过将文本切分为长度为N的词序列来进行建模。 注意:这…...

STM32新建不同工程的方式
新建工程的方式 1. 安装开发工具 MDK5 / keil52. CMSIS 标准3. 新建工程3.1 寄存器版工程3.2 标准库版工程3.3 HAL/LL库版工程3.4 HAL库、LL库、标准库和寄存器对比3.5 库开发和寄存器的关系 4. STM32CubeMX工具的作用 1. 安装开发工具 MDK5 / keil5 MDK5 由两个部分组成&#…...

【Rust自学】14.5. cargo工作空间(Workspace)
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 14.4.1. 为什么需要cargo workspace 假如说我们构建了一个二进制crate,里面既有library又有库。随着项目规模不断增长&#…...

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI
不管是在传统领域还是 Crypto,AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代,Web3 AIGC(AI生成内容)和 AI Agent(人工智能代理)正成为两大关键赛道。 AIGC 通过 AI 技术生成…...
10.3 LangChain实战指南:解锁大模型应用的10大核心场景与架构设计
LangChain实战指南:解锁大模型应用的10大核心场景与架构设计 关键词: LangChain使用场景、LLM应用案例、检索增强生成、智能体开发、知识库问答 一、LangChain场景全景图:从简单到复杂的应用分层 #mermaid-svg-nzjpyXIPLzL0j3PG {font-family:"trebuchet ms",ver…...

Swing使用MVC模型架构
什么是MVC模式? MVC是一组英文的缩写,其全名是Model-View-Controller,也就是“模型-视图-控制器”这三个部分组成。这三个部分任意一个部分发生变化都会引起另外两个发生变化。三者之间的关系示意图如下所示: MVC分为三个部分,所以在MVC模型中将按照此三部分分成三…...

设计新的 Kibana 仪表板布局以支持可折叠部分等
作者:来自 Elastic Teresa Alvarez Soler, Hannah Mudge 及 Nathaniel Reese 在 Kibana 中构建可折叠仪表板部分需要彻底改造嵌入式系统并创建自定义布局引擎。这些更新改进了状态管理、层次结构和性能,同时为新的高级仪表板功能奠定了基础。 我们正在开…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...