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

JavaScript BOM核心对象、本地存储

目录

BOM 核心对象详解

一、location 对象

1. 常用属性

2. 常用方法

3. 应用场景

二、navigator 对象

1. 核心属性

2. 常用方法

3. 应用场景

三、history 对象

1. 核心属性和方法

2. 应用场景

四、兼容性与注意事项

五、总结

本地存储与复杂数据类型处理

一、本地存储简介

二、基础操作

1. 存储简单数据类型

2. 存储限制与检测

三、处理复杂数据类型

1. 存储对象或数组

2. 处理特殊数据类型

四、高级技巧与最佳实践

1. 数据版本控制

2. 存储事件监听

3. 加密敏感数据

4. LRU 缓存策略

五、替代方案对比

六、总结


BOM 核心对象详解


一、location 对象

location 用于 获取或操作当前页面的 URL,支持导航到新页面。

1. 常用属性
属性说明示例值
href完整 URL"https://example.com/path?q=1"
protocol协议(http:https:"https:"
host主机名和端口"example.com:8080"
hostname主机名(不含端口)"example.com"
port端口"8080"
pathnameURL 路径"/path"
search查询参数(? 后的内容)"?q=1"
hash哈希值(# 后的内容)"#section"
2. 常用方法
方法说明示例
assign(url)跳转到新页面(保留历史记录)location.assign('new-page.html')
replace(url)替换当前页面(无历史记录)location.replace('login.html')
reload(force)重新加载页面location.reload(true)(强制刷新)
3. 应用场景
<body><form><input type="text" name="search"> <button>搜索</button></form><a href="#/music">音乐</a><a href="#/download">下载</a><button class="reload">刷新页面</button><script>// location 对象  // 1. href属性 (重点) 得到完整地址,赋值则是跳转到新地址console.log(location.href)// location.href = 'http://www.itcast.cn'// 2. search属性  得到 ? 后面的地址 console.log(location.search)  // ?search=笔记本// 3. hash属性  得到 # 后面的地址console.log(location.hash)// 4. reload 方法  刷新页面const btn = document.querySelector('.reload')btn.addEventListener('click', function () {// location.reload() // 页面刷新location.reload(true) // 强制页面刷新 ctrl+f5})</script>
</body>

二、navigator 对象

navigator 提供 浏览器和操作系统信息,支持设备能力检测。

1. 核心属性
属性说明示例值
userAgent浏览器用户代理字符串"Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
platform操作系统平台"Win32""MacIntel"
language浏览器首选语言"zh-CN"
onLine是否联网true
geolocation地理位置 APInavigator.geolocation.getCurrentPosition(...)
2. 常用方法
方法说明示例
geolocation.getCurrentPosition()获取当前位置(需用户授权)navigator.geolocation.getCurrentPosition(showPosition)
clipboard.writeText()写入剪贴板(需 HTTPS 和用户授权)navigator.clipboard.writeText('Hello')
vibrate()触发设备震动(移动端)navigator.vibrate(200)
3. 应用场景

// 检测 userAgent(浏览器信息)
(function () {const userAgent = navigator.userAgent// 验证是否为Android或iPhoneconst android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)// 如果是Android或iPhone,则跳转至移动站点if (android || iphone) {location.href = 'http://m.itcast.cn'}})();
  • 设备检测

    // 检测移动端
    const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);
  • 剪贴板操作

    // 读取剪贴板内容
    navigator.clipboard.readText().then(text => console.log(text));
  • 地理位置获取

    navigator.geolocation.getCurrentPosition(position => console.log(position.coords.latitude, position.coords.longitude),error => console.error(error)
    );

三、history 对象

history 用于 管理浏览器会话历史记录,支持无刷新页面导航(单页应用核心)。

1. 核心属性和方法
属性/方法说明示例
length历史记录条目数console.log(history.length)
back()返回上一页history.back()
forward()前进到下一页history.forward()
go(n)跳转到历史记录中的第 n 页history.go(-2)(后退两页)
pushState(state, title, url)添加历史记录(不刷新页面)history.pushState({id: 1}, '', '/page1')
replaceState(state, title, url)替换当前历史记录(不刷新页面)history.replaceState({}, '', '/login')
2. 应用场景
<body><button class="back">←后退</button><button class="forward">前进→</button><script>// histroy对象// 1.前进const forward = document.querySelector('.forward')forward.addEventListener('click', function () {// history.forward() history.go(1)})// 2.后退const back = document.querySelector('.back')back.addEventListener('click', function () {// history.back()history.go(-1)})</script>
</body>
  • 单页应用(SPA)路由

    // 添加新历史记录
    history.pushState({ page: 1 }, 'Page 1', '/page1');// 监听 popstate 事件(用户点击前进/后退)
    window.addEventListener('popstate', event => {console.log('当前状态:', event.state);
    });
  • 动态修改 URL

    // 修改 URL 但不触发刷新
    history.replaceState({}, '', '/profile');

四、兼容性与注意事项

  1. location 安全限制

    • 跨域脚本无法读取其他域的 location 属性(同源策略)。

    • location.replace() 可防止用户通过后退返回原页面。

  2. navigator 用户授权

    • geolocation 和 clipboard API 需用户明确授权。

    • 部分属性(如 userAgent)可被浏览器伪装。

  3. history 状态管理

    • pushState 和 replaceState 不会触发 popstate 事件。

    • 单页应用需自行处理路由变化后的内容更新。


五、总结

对象核心功能典型应用场景
locationURL 解析与导航控制页面跳转、URL 参数解析
navigator浏览器/设备信息获取与交互设备检测、剪贴板操作、地理位置
history会话历史记录管理单页应用路由、无刷新 URL 更新

   

本地存储与复杂数据类型处理


一、本地存储简介

JavaScript 提供了两种浏览器端存储方案,统称为 Web Storage API

类型生命周期作用域
localStorage永久存储(除非手动清除)同源的所有标签页共享
sessionStorage会话级存储(标签页关闭后清除)仅当前标签页有效

共同特点

  • 存储键值对(Key-Value),键和值均为字符串。

  • 存储容量通常为 5MB(不同浏览器可能略有差异)。

  • 仅限同源页面访问(同协议、域名、端口)。


二、基础操作

1. 存储简单数据类型
// 存储
localStorage.setItem('username', 'Alice');  // 字符串
localStorage.setItem('age', '25');          // 数值需转为字符串// 读取
const username = localStorage.getItem('username'); // 'Alice'
const age = parseInt(localStorage.getItem('age')); // 25(转回数值)// 删除
localStorage.removeItem('age');
localStorage.clear(); // 清空所有数据
2. 存储限制与检测
// 检测浏览器是否支持
if (typeof localStorage !== 'undefined') {// 支持 localStorage
}// 错误处理(如超出存储容量)
try {localStorage.setItem('key', 'value');
} catch (e) {if (e.name === 'QuotaExceededError') {console.error('存储空间不足!');}
}

三、处理复杂数据类型

由于 Web Storage 只能存储字符串,处理对象、数组等复杂数据需进行 序列化(JSON 转换)

存储对象/数组localStorage.setItem(key, JSON.stringify(data))
读取对象/数组JSON.parse(localStorage.getItem(key))
1. 存储对象或数组
const user = {id: 1,name: 'Alice',preferences: { theme: 'dark', notifications: true }
};// 序列化存储
localStorage.setItem('user', JSON.stringify(user));// 读取并反序列化
const storedUser = JSON.parse(localStorage.getItem('user'));
console.log(storedUser.preferences.theme); // 'dark'
2. 处理特殊数据类型
  • Date 对象

    // 存储
    const now = new Date();
    localStorage.setItem('lastLogin', now.toISOString());// 读取
    const lastLogin = new Date(localStorage.getItem('lastLogin'));
  • Map/Set

    const map = new Map([[1, 'a'], [2, 'b']]);
    localStorage.setItem('map', JSON.stringify(Array.from(map.entries()));const storedMap = new Map(JSON.parse(localStorage.getItem('map')));
  • 循环引用问题

    const obj = { a: 1 };
    obj.self = obj; // 循环引用
    // JSON.stringify(obj); // 报错,需自行处理循环结构

四、高级技巧与最佳实践

1. 数据版本控制

避免数据结构变更导致解析失败:

const data = {version: 2, // 版本号user: { /* ... */ }
};
localStorage.setItem('data', JSON.stringify(data));
2. 存储事件监听

监听同源页面的存储变化:

window.addEventListener('storage', (e) => {console.log(`键 ${e.key} 已更新,新值:${e.newValue}`);
});
3. 加密敏感数据

防止数据泄露:

// 使用加密库(如 CryptoJS)
const encrypted = CryptoJS.AES.encrypt('secret', 'key').toString();
localStorage.setItem('secret', encrypted);
4. LRU 缓存策略

管理存储空间,淘汰最近最少使用数据:

function setWithLRU(key, value, maxItems = 50) {const keys = JSON.parse(localStorage.getItem('lruKeys') || '[]');if (keys.length >= maxItems) {const oldKey = keys.shift();localStorage.removeItem(oldKey);}keys.push(key);localStorage.setItem('lruKeys', JSON.stringify(keys));localStorage.setItem(key, JSON.stringify(value));
}

五、替代方案对比

方案特点适用场景
localStorage简单键值存储,容量小(5MB)小量简单数据(用户偏好设置)
IndexedDB非关系型数据库,支持索引、事务、大容量大量结构化数据(离线应用)
Cookies每次请求自动携带,容量极小(4KB)服务器端需要的少量数据(会话ID)

六、总结

  1. 序列化必要:使用 JSON.stringify 和 JSON.parse 处理复杂数据。

  2. 容量管理:避免存储过大对象,必要时实现缓存淘汰策略。

  3. 安全防护:加密敏感数据,避免 XSS 攻击导致数据泄露。

  4. 版本控制:数据结构变更时通过版本号兼容旧数据。

  5. 合理选型:根据数据量和复杂度选择 localStorage 或 IndexedDB。


相关文章:

JavaScript BOM核心对象、本地存储

目录 BOM 核心对象详解 一、location 对象 1. 常用属性 2. 常用方法 3. 应用场景 二、navigator 对象 1. 核心属性 2. 常用方法 3. 应用场景 三、history 对象 1. 核心属性和方法 2. 应用场景 四、兼容性与注意事项 五、总结 本地存储与复杂数据类型处理 一、本…...

单元测试之测试覆盖率-jacoco基本使用

简介 免费的、开源的、针对java的单元测试覆盖率工具。基于字节码&#xff0c;无需源码也可以工作。 代码覆盖率&#xff1a;用来衡量测试代码对功能代码的测试情况&#xff0c;量化说明测试的充分度。通过执行测试用例&#xff0c;功能代码中的哪些行被执行了&#xff0c;哪…...

css3.31面试题

CSS 相关的面试题一般围绕基础知识、布局、性能优化、兼容性、深入原理等几个方向。以下是一些常见的面试题总结&#xff1a; CSS 基础知识 盒模型&#xff08;Box Model&#xff09;是什么&#xff1f;有哪些类型&#xff1f; px、em、rem、vw、vh、% 的区别&#xff1f; …...

Nature Electronics|一种透气、可拉伸的液态金属基3D电子皮肤系统(健康监测/可穿戴电子/透汗透气性电子/电子皮肤/柔性电子/集成电路)

一、 摘要 穿戴式和皮肤电子设备的发展要求高密度可伸展电子系统能够与软组织共形,持续运行并提供长期的生物相容性。大多数可拉伸电子系统的集成密度低,并且与外部印刷电路板连接,这限制了功能,降低了用户体验并阻碍了长期可用性。在此,作者提出了一种可渗透的三维集成电…...

【家政平台开发(15)】解锁Spring Boot:家政平台后端开发全攻略

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析&#xff0c;剖析家政行业现状、挖掘用户需求与梳理功能要点&#xff0c;到系统设计阶段的架构选型、数据库构建&#xff0c;再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化…...

AI Agent设计模式二:Parallelization

概念 &#xff1a;并行任务执行引擎 ✅ 优点&#xff1a;提升吞吐量&#xff0c;充分利用多核资源❌ 缺点&#xff1a;复杂度高&#xff0c;存在竞态条件风险 from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, START, END from typing impor…...

Upload-labs靶场通关

之前搭好了靶场&#xff0c;Upload-labs 靶场搭建 及一句话木马的原理与运用-CSDN博客 今天开始通关并写详细流程 Pass-1 来到靶场的第一关 先随便上传php 代码 点击上传 发现文件类型被限制了 方法1&#xff1a; 改文件后缀为合法文件&#xff08;.jpg .png .gif&#xf…...

Python数据结构之有序列表

一.基本介绍 在有序列表中&#xff0c;元素的相对位置取决于它们的基本特征。它们通常以升序或者降序排列&#xff0c;并且我们假设元素之间能进行有意义的比较。有序列表和无序列表(链表)的许多操作都是相同的。 二.代码实现 class OrderedList:"""有序列表类…...

LMK04828使用指南-01-简介与引脚功能描述

简介 LMK0482x系列是业界性能最高的时钟调节器&#xff0c;支持JEDEC JESD204B。 PLL2的14个时钟输出可以配置为使用设备和SYSREF时钟驱动七个JESD204B转换器或其他逻辑设备。可以使用直流和交流耦合提供SYSREF。不限于JESD204B应用&#xff0c;14个输出中的每一个都可以单独…...

统计学基本原理

目录 文章目录 目录统计学统计学基本概念描述性统计数据可视化图表工具 汇总统计统计数据的分布情况&#xff1a;中位数、众数、平均值统计数据的离散程度&#xff1a;极差、方差、标准差、离散系数 相关分析Pearson 线性关系相关系数Spearman 单调关系相关系数 回归分析回归模…...

日常真实工作环境,Mysql常用操作命令,笔记!

1、开放增删改查权限&#xff0c;不开放表结构修改权限 有许多生产环境是不需要修改表结构的&#xff0c;也是为了防止SQL注入。 创建用户 mysql> grant all on *.* to ie% identified by test1设置权限 1.首先我们先回收所有权限。 revoke all on *.* from ie% ;2.设…...

洛谷题单3-P1307 [NOIP 2011 普及组] 数字反转-python-流程图重构

题目描述 给定一个整数 N N N&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零&#xff08;参见样例 2&#xff09;。 输入格式 一个整数 N N N。 …...

洛谷题单3-P1420 最长连号-python-流程图重构

题目描述 输入长度为 n n n 的一个正整数序列&#xff0c;要求输出序列中最长连号的长度。 连号指在序列中&#xff0c;从小到大的连续自然数。 输入格式 第一行&#xff0c;一个整数 n n n。 第二行&#xff0c; n n n 个整数 a i a_i ai​&#xff0c;之间用空格隔开…...

PostgreSQL:表分区与继承

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

【NLP 55、投机采样加速推理】

目录 一、投机采样 二、投机采样改进&#xff1a;美杜莎模型 流程 改进 三、Deepseek的投机采样 流程 Ⅰ、输入文本预处理 Ⅱ、引导模型预测 Ⅲ、候选集筛选&#xff08;可选&#xff09; Ⅳ、主模型验证 Ⅴ、生成输出与循环 骗你的&#xff0c;其实我在意透了 —— 25.4.4 一、…...

CSS 创建与使用学习笔记

一、CSS 的作用 CSS&#xff08;层叠样式表&#xff09;用于控制 HTML 文档的样式和布局。当浏览器读取一个样式表时&#xff0c;它会根据样式表中的规则来格式化 HTML 文档&#xff0c;从而实现页面的美化和布局调整。 二、插入样式表的方法 CSS 可以通过以下三种方式插入到…...

CSS Id 和 Class 选择器学习笔记

一、概述 在 CSS 中&#xff0c;id 和 class 选择器是用于为 HTML 元素指定样式的强大工具。它们可以帮助我们精确地控制页面中元素的样式&#xff0c;让页面设计更加灵活和高效。 二、id 选择器 1. 定义和使用 定义&#xff1a;id 选择器用于为具有特定 id 属性的 HTML 元素…...

从小米汽车事故反思 LabVIEW 开发

近期&#xff0c;小米汽车的一起严重事故引发了社会各界的广泛关注。这起事故不仅让我们对智能汽车的安全性产生了深深的思考&#xff0c;也为 LabVIEW 开发领域带来了诸多值得汲取的知识与领悟。 在智能汽车领域&#xff0c;尤其是涉及到智能驾驶辅助系统时&#xff0c;安全是…...

解锁工业通信:Profibus DP到ModbusTCP网关指南!

解锁工业通信&#xff1a;Profibus DP到ModbusTCP网关指南&#xff01; 在工业自动化领域&#xff0c;随着技术的不断进步和应用场景的日益复杂&#xff0c;不同设备和系统之间的通讯协议兼容性问题成为了工程师们面临的一大挑战。尤其是在Profibus DP和Modbus/TCP这两种广泛应…...

web漏洞靶场学习分享

靶场&#xff1a;pikachu靶场 pikachu漏洞靶场漏洞类型: Burt Force(暴力破解漏洞)XSS(跨站脚本漏洞)CSRF(跨站请求伪造)SQL-Inject(SQL注入漏洞)RCE(远程命令/代码执行)Files Inclusion(文件包含漏洞)Unsafe file downloads(不安全的文件下载)Unsafe file uploads(不安全的文…...

【C++学习笔记】十三、速通笔记

完整的C编程教程 目录 开发环境配置C知识体系现代C特性设计模式数据结构CMake项目构建调试技巧进阶主题学习资源 1. 开发环境配置 1.1 安装编译器 sudo apt-get install g build-essential1.2 安装构建工具 sudo apt-get install cmake1.3 VS Code配置 安装C扩展配置调试…...

硬件电路(23)-输入隔离高低电平有效切换电路

一、概述 项目中为了防止信号干扰需要加一些隔离电路&#xff0c;而且有时传感器的信号是高有效有时是低有效&#xff0c;所以基于此背景&#xff0c;设计了一款方便实现高低电平有效检测切换电路。 二、应用电路...

基于深度学习的多模态癌症数据集调研

基于深度学习的多模态癌症数据集调研 关键词&#xff1a; 癌症、分割、多模态、radiology、pathology、深度学习 目录&#xff1a; 一、 数据集总结 二、 胶质瘤/脑肿瘤&#xff08;glioma&#xff09; 三、 肺癌/非小细胞肺癌&#xff08;NSCLC&#xff09; 四、 乳腺癌&am…...

Logo语言的系统监控

Logo语言的系统监控 引言 在信息技术飞速发展的时代&#xff0c;系统监控成为了确保计算机系统和网络平稳运行的重要手段。系统监控不仅可以实时跟踪系统的性能、资源使用情况和安全风险等&#xff0c;还能够在出现问题时及时发出警报&#xff0c;从而避免潜在的故障和损失。…...

Go语言-初学者日记(八):构建、部署与 Docker 化

&#x1f9f1; 一、go build&#xff1a;最基础的构建方式 Go 的构建工具链是出了名的轻量、简洁&#xff0c;直接用 go build 就能把项目编译成二进制文件。 ✅ 构建当前项目 go build -o myapp-o myapp 指定输出文件名默认会构建当前目录下的 main.go 或 package main &a…...

青少年编程与数学 02-015 大学数学知识点 08课题、信息论

青少年编程与数学 02-015 大学数学知识点 08课题、信息论 一、信息论基础二、熵与信息量三、信源编码四、信道编码五、率失真理论六、信息论的应用七、网络信息论八、信息论与统计学习九、量子信息论十、信息论的前沿研究总结 信息论是研究信息传输、存储和处理的数学理论&…...

【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录

解决办法&#xff1a;勾上【使用凭据帮助程序】&#xff08;英文&#xff1a;Use credential helper&#xff09;...

FreeRTOS:嵌入式实时操作系统的轻量化解决方案

一、FreeRTOS 的核心定位 FreeRTOS&#xff08;Free Real-Time Operating System&#xff09;是一款专为微控制器及资源受限的嵌入式设备设计的开源实时操作系统内核。自2003年由Richard Barry发布以来&#xff0c;其以轻量化、高实时性、低资源占用的特点&#xff0c;成为物…...

Linux操作系统 4.Linux实用操作

一、各类小技巧&#xff08;快捷键&#xff09; 强制停止 退出、登出 历史命令搜索 光标移动 1.CTRL C 强制停止 1.Linux某些程序的运行&#xff0c;如果想要强行停止它&#xff0c;可以使用ctrlc 2.命令输入错误&#xff0c;也可以通过快捷键ctrl c,退出当前输入&#xff0…...

学透Spring Boot — 010. 单元测试和Spring Test

系列文章目录 这是CSDN postnull 博客《学透Spring Boot》系列的一篇&#xff0c;更多文章请移步&#xff1a;Postnull - 学透Spring Boot系列文章 文章目录 系列文章目录前言1. 基本概念UT 单元测试TDD 测试驱动开发UT测试框架Mock框架 3. Spring Test为什么要用Spring Test引…...

Perl语言的文件系统

Perl语言中的文件系统操作 引言 在软件开发中&#xff0c;文件系统操作是一个不可或缺的部分。无论是简单的文件读取、写入&#xff0c;还是复杂的文件管理&#xff0c;合理的文件系统操作都能极大提升程序的效率和可维护性。Perl语言是一种强大的文本处理语言&#xff0c;凭…...

ffmpeg基础指令学习

文章目录 1. **基本的 FFmpeg 语法**2. **常见的 FFmpeg 基础指令****1. 转换视频格式****2. 视频剪切****3. 转换视频的编码****4. 提取音频****5. 改变视频分辨率****6. 改变音视频的比特率****7. 合并音视频****8. 提取视频中的一帧图片****9. 提取视频的帧速率&#xff08;…...

英国电商物流变革:ebay私人卖家如何借势简易配送提升履约效率?

近年来&#xff0c;英国电商物流正在经历一场不小的变革。从“等待5-7个工作日”到如今“次日达”成为常态&#xff0c;市场和用户对配送效率的要求越来越高。对于在 eBay 平台上的私人卖家来说&#xff0c;这既是挑战&#xff0c;也是机会。如何用有限的资源跟上平台和消费者对…...

第15周:注意力汇聚:Nadaraya-Watson 核回归

注意力汇聚&#xff1a;Nadaraya-Watson 核回归 Nadaraya-Watson 核回归是一个经典的注意力机制模型&#xff0c;它展示了如何通过注意力权重来对输入数据进行加权平均。以下是该内容的核心总结&#xff1a; 关键概念 注意力机制框架&#xff1a;由查询&#xff08;自主提示…...

批量图片文本识别重命名,批量ocr识别图片重命名,基于WPF和腾讯OCR云部署实,现批量对图片局部提取文字后重命名的操作详细步骤

​​1. 项目背景​​ 在日常工作中,我们经常需要处理大量图片文件,这些图片可能包含重要的文字信息。为了提高工作效率,我们需要一种自动化的方式,从图片中提取文字,并根据提取的文字对图片进行重命名。 本项目基于 ​​WPF​​ 框架开发桌面应用程序,结合 ​​腾讯 OCR…...

26考研——排序(8)

408答疑 文章目录 一、排序的基本概念二、插入排序三、交换排序四、选择排序五、归并排序、基数排序和计数排序六、排序的代码实操七、各种内部排序算法的比较及应用八、外部排序九、参考资料鲍鱼科技课件26王道考研书 十、总结基本排序算法希尔排序快速排序、堆排序和归并排序…...

KUKA机器人导入设备说明文件

KUKA机器人在应用中需要进行通讯配置&#xff0c;通讯前需要导入设备说明文件&#xff0c;比如常用的倍福设备说明文件。在Workvisual软件上通过以下步骤即可导入设备说明文件。 一、打开Workvisual软件&#xff0c;在选项卡【File】下找到【Import/Export】输入/输出并点击打…...

ssl.SSLCertVerificationError报错解决方案

这个错误 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate 指出 Python 在尝试建立安全的 HTTPS 连接时&#xff0c;无法验证远程服务器&#xff08;在此案例中是 GitHub 或 Hugging Face…...

drawio导出流程图为白色背景png图片

draw.io 操作路径&#xff1a; 1.纯白背景图片&#xff08;一般导出流程图就这种纯白背景&#xff0c;看自己需求 什么都不勾选 导出效果图 2.田字格白背景 只勾选网格 导出效果图 3.方块背景 只勾选背景 导出效果图 4.大方块背景 都勾选 导出效果图...

【Linux】——手撕线程池、简易线程池

前言 在现代计算机编程领域&#xff0c;随着多核处理器和分布式系统的广泛应用&#xff0c;并发编程变得越来越重要。而线程作为实现并发的基本手段之一&#xff0c;其重要性不言而喻。然而&#xff0c;在实际的应用开发中&#xff0c;如何高效地管理和调度线程&#xff0c;以充…...

使用mcp自定义编写mcp tool,使用 conda 启动,在cline中配置使用

自定义 mcp tool 例子 ## /langchain_learn/mcp学习/base_mcp_tool_study2.py # 导入必要模块 import os from typing import Optional from mcp.server.fastmcp import FastMCP# 初始化 MCP 服务器实例&#xff0c;指定服务器名称和版本 mcp_server FastMCP(name"DemoS…...

OpenEuler/CentOS一键部署OpenGauss数据库教程(脚本+视频)

&#x1f4cc;OpenEuler/CentOS一键安装OpenGauss数据库教程 为什么需要OpenGauss一键安装脚本&#xff1f; 手动部署OpenGauss数据库时&#xff0c;环境适配、依赖冲突等问题常让开发者头疼。尤其对新人而言&#xff0c;官方文档的配置步骤可能耗时数小时甚至引发未知报错。 …...

python如何快速删除文件夹中的大量文件

在 Python 中&#xff0c;删除文件夹中的大量小图片文件可以通过使用 os 模块或 shutil 模块来实现。以下是一个示例代码&#xff0c;展示了如何快速删除指定文件夹中的所有文件。如果你只需要删除小图片文件&#xff0c;可以添加额外的逻辑来检查文件大小。 以下是一个示例代…...

【mongodb】MongoDB的应用场景

目录 1.说明2.内容管理系统&#xff08;CMS&#xff09;2.1 场景描述2.2 MongoDB优势2.3 示例 3.实时分析与大数据3.1 场景描述3.2 MongoDB优势3.3 示例 4.移动应用后端4.1 场景描述4.2 MongoDB优势4.3 示例 5.游戏开发5.1 场景描述5.2 MongoDB优势5.3 示例 6.电子商务平台6.1 …...

使用 Swift 实现 LRU 缓存淘汰策略

&#x1f4cc; 实现思路 一、核心目标 我们要实现一个缓存类&#xff1a; 支持通过 get(key) 获取缓存的值&#xff1b;支持通过 put(key, value) 写入缓存&#xff1b;缓存容量有限&#xff0c;当超过容量时要淘汰最久未使用的元素。 二、为什么用「哈希表 双向链表」 功…...

【面试篇】Dubbo

基础概念 问题&#xff1a;请简要介绍一下 Dubbo 是什么&#xff0c;它的主要用途是什么&#xff1f;答案&#xff1a;Dubbo 是阿里巴巴开源的高性能、轻量级的分布式服务框架&#xff0c;它致力于提供高性能和透明化的 RPC 远程服务调用方案&#xff0c;以及 SOA 服务治理方案…...

01-STM32(介绍、工具准备、新建工程)p1-4

文章目录 工具准备和介绍硬件设备stm32简介和arm简介stm32简介STM32命名规则STM32选型STM32F103C8T6最小系统板引脚定义STM32启动配置STM32最小系统电路ARM简介 软件安装注册器件支持包安装ST-LINK驱动安装USB转串口驱动 新建工程创建stm32工程STM32工程编译和下载型号分类及缩…...

关于termux运行pc交叉编译的aarch64 elf的问题

在Linux系统上交叉编译Nim程序到Android Termux环境需要特殊处理&#xff0c;以下是详细的解决方案&#xff1a; 问题根源分析 ​​ABI不兼容​​ Android使用bionic libc而非标准glibc&#xff0c;直接编译的Linux ARM二进制无法直接运行 ​​动态链接错误​​ 默认编译会链…...

Ansible Playbook 进阶探秘:Handlers、变量、循环及条件判断全解析

192.168.60.100ansible.com192.168.60.110 client-1.com 192.168.60.120client-2.com192.168.60.130client-1.com 一、Handlers 介绍&#xff1a;在发生改变时执行的操作(类似puppet通知机制) 示例&#xff1a; 当apache的配置文件发生改变时&#xff0c;apache服务才会重启…...

解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution

目录 问题描述解决方案为什么需要这样配置&#xff1f; 问题描述 在你的项目中&#xff0c;如果你遇到了以下错误信息&#xff1a; [ERROR] Failed to execute goal org.graalvm.buildtools:native-maven-plugin:0.10.5:test (native-test) on project DIctSystemInJavaUsing…...