深入浅出MySQL 8.0:新特性与最佳实践
MySQL作为开源关系型数据库的佼佼者,近年来持续更新迭代,尤其是在8.0版本中引入了一系列令人兴奋的新特性。本文将介绍一些MySQL 8.0的关键新功能,并提供最佳实践,旨在帮助开发人员和DBA更好地利用这一强大的数据库管理系统。
一、MySQL 8.0的新特性
MySQL 8.0 版本自发布以来,带来了诸多新特性,这些特性不仅增强了数据库的性能和可用性,还提高了开发人员和数据库管理员的工作效率。以下是一些重要的新特性,逐一解读其功能和使用场景。
1. 通用表表达式(CTE)
通用表表达式(CTE)极大地提升了SQL查询的可读性和组织性。CTE允许开发人员编写复杂的查询而无需反复嵌套子查询,从而简化了查询语句的构建过程。CTE的作用域是该查询的整段,它们可以用于递归查询和分组操作。
使用场景:在处理层次结构数据(如员工管理层次、组织架构等)时,CTE特别有用。递归CTE还允许进行深层次的数据检索。
示例:
sql
WITH RECURSIVE OrgChart AS (SELECT id, name, manager_id FROM employees WHERE manager_id IS NULL UNION ALL SELECT e.id, e.name, e.manager_id FROM employees e INNER JOIN OrgChart o ON e.manager_id = o.id
)
SELECT * FROM OrgChart;
2. 窗口函数
窗口函数的引入是MySQL 8.0的一项重要特性,它允许开发人员在查询中使用聚合函数而不需要进行分组。这使得执行复杂的分析计算变得更为简单。例如,使用窗口函数可以轻松计算累积值、移动平均值等。
使用场景:在数据分析和报告生成中,窗口函数可以用于排名、运行总和计算和分位数分析等情况。
示例:
sql
SELECT employee_id, salary,RANK() OVER (ORDER BY salary DESC) AS salary_rank,SUM(salary) OVER (ORDER BY salary) AS running_total
FROM employees;
3. 更强大的JSON支持
MySQL 8.0郑重增强了对JSON数据类型的支持。新版本中,JSON相关函数和操作的扩展让开发者能够更灵活地存储和处理非结构化数据。其中,JSON_TABLE
函数特别重要,它允许将JSON数据直接转换为表格格式,从而可以使用普通SQL查询的方式进行访问。
使用场景:在处理RESTful API返回的JSON数据或者需要存储非结构化数据场景下,JSON提供了一种灵活且高效的解决方案。
示例:
sql
SELECT *
FROM JSON_TABLE(json_data_column,'$[*]' COLUMNS (id INT PATH '$.id',name VARCHAR(100) PATH '$.name')
) AS jt;
4. 性能优化与改进
MySQL 8.0还引入了一系列的性能优化,包括改进InnoDB存储引擎、改进查询优化器等。特别是在处理高并发请求和大数据量时,其性能表现显著优于之前的版本。
- InnoDB改进:MySQL 8.0通过采用多线程算法和改进的缓冲池机制,极大提升了插入、更新和删除操作的速度。
- 向量化计算:支持向量化计算的优化方法,使得某些复杂查询的执行速度提高了数倍。
5. 角色和权限管理
MySQL 8.0引入了角色的概念,使得用户权限的管理更加方便。例如,用户可以被赋予角色,而角色则可以拥有一组权限。
使用场景:在大规模团队中,当需要管理大量用户和各自的权限时,角色管理能够减少不必要的权限管理工作的复杂性。
示例:
sql
CREATE ROLE data_reader;
GRANT SELECT ON database_name.* TO data_reader;
GRANT data_reader TO 'user1';
6. 隐式字符集和排序规则
MySQL 8.0默认使用utf8mb4
字符集,支持所有Unicode字符,从而解决了早期版本对某些字符的支持不足问题。同时,新版本中的排序规则也得到了增强,更加灵活且支持更多复杂的文本比较操作。
使用场景:应用于国际化和多语言支持的数据库设计中,采用utf8mb4
能确保对全球用户输入的字符都能正确处理。
7. 数据字典的改进
MySQL 8.0对数据字典进行了重新设计,所有的元数据都被存储在InnoDB表中。这一变化不仅提高了元数据操作的性能,同时也简化了备份和恢复的过程。
使用场景:在需要频繁操作元数据(如表结构修改、索引调优等)的场景中,新的数据字典架构能够加速这些操作。
以上这些新特性相互融合,共同增强了MySQL 8.0的功能,提升了用户的使用体验。通过有效利用这些新特性,开发人员和数据库管理员能够更高效地构建和维护他们的数据库应用。
二、最佳实践
在使用MySQL 8.0的过程中,掌握一些最佳实践可以显著提高数据库的性能、稳定性和可维护性。以下是一些推荐的MySQL 8.0最佳实践,帮助开发人员和数据库管理员充分发挥MySQL 8.0的优势。
1. 利用索引优化查询性能
在MySQL中,索引是提高查询性能的核心工具之一。通过合理设计和使用索引,能够大大减少查询的响应时间。以下是一些常见的索引优化策略:
- 选择合适的索引类型:MySQL支持多种类型的索引(如B树索引、哈希索引、全文索引等)。了解每种索引的特性,并根据查询场景选择合适的索引类型。例如,全文搜索需要使用
FULLTEXT
索引,而在范围查询中使用B-tree
索引更为合适。 - 多列索引的使用:当查询涉及多个列时,使用多列索引(联合索引)通常能够提高性能。例如,当查询条件涉及
first_name
和last_name
时,可以创建一个组合索引,而不是为每个列单独创建索引。 - 覆盖索引(Covering Index) :当查询只需要从索引中获取所有数据时,使用覆盖索引可以提高查询效率,因为它避免了回表操作。通过选择合适的列作为索引字段,可以使查询完全在索引层面完成,从而减少磁盘IO。
示例:
sql
CREATE INDEX idx_name ON employees (first_name, last_name);
2. 合理使用事务和隔离级别
事务是确保数据库一致性和完整性的关键工具。合理使用事务能够避免脏读、不可重复读、幻读等问题。MySQL 8.0提供了多种事务隔离级别,常见的有:
- READ COMMITTED:每次读取数据时都会获取最新的值,可以有效避免脏读,但可能导致不可重复读。
- REPEATABLE READ:确保在事务过程中读取的数据始终保持一致,防止不可重复读,适用于大多数应用场景。
- SERIALIZABLE:最严格的隔离级别,能够避免幻读,但性能开销较大,适用于要求极高一致性的场景。
在高并发环境下,适当的事务隔离级别设置可以提高数据库的性能和响应速度。为了避免死锁,建议开发人员尽量减少长时间占用锁的事务,并且按照一定的顺序访问资源。
示例:
sql
START TRANSACTION;
UPDATE employees SET salary = salary + 1000 WHERE department_id = 10;
COMMIT;
3. 定期更新统计信息和优化表
MySQL的查询优化器依赖于表的统计信息来选择最佳的执行计划。为了确保优化器使用最新的数据,定期更新表的统计信息非常重要。可以使用ANALYZE TABLE
命令来手动更新统计信息。
此外,随着数据的增多,表的性能可能会逐渐下降。定期优化表、重建索引可以帮助恢复性能,尤其是在高频更新操作之后。
示例:
sql
ANALYZE TABLE employees;
OPTIMIZE TABLE employees;
4. 采用合理的备份策略
定期备份数据库是保障数据安全的重要措施。MySQL 8.0支持多种备份方式,包括逻辑备份(mysqldump
)和物理备份(XtraBackup
)。根据业务需求,合理选择备份方式:
- 全量备份与增量备份结合:对于大规模的数据库,建议结合全量备份和增量备份来减小备份的时间和存储空间。全量备份可以定期进行,而增量备份可以每天进行,确保数据的安全性。
- 备份验证:备份只是第一步,确保备份的有效性至关重要。可以定期恢复备份并进行验证,确保备份的数据可以恢复。
示例:
bash
# 使用 mysqldump 进行逻辑备份
mysqldump -u root -p my_database > backup.sql
5. 监控与日志管理
数据库的监控是确保其稳定运行的关键。MySQL 8.0提供了丰富的监控指标和日志功能,可以帮助我们及时发现性能瓶颈和潜在的故障。
- 启用慢查询日志:慢查询日志可以记录执行时间较长的查询,帮助我们识别和优化性能瓶颈。通过
long_query_time
参数,可以设置查询执行超过一定时间才被记录到日志中。 - 查询性能分析:可以通过
EXPLAIN
命令分析查询的执行计划,识别是否使用了索引,是否有全表扫描等问题。
示例:
sql
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 设置慢查询时间为2秒
6. 数据库安全性最佳实践
数据库安全性是任何应用程序中不可忽视的部分。以下是一些MySQL 8.0的安全性最佳实践:
- 使用强密码策略:MySQL 8.0默认启用了
caching_sha2_password
作为认证插件,提供了更强的密码加密机制。确保为数据库用户设置复杂的密码,并定期更新密码。 - 最小权限原则:仅赋予用户执行其职责所需的最少权限。使用角色和权限管理功能来集中管理用户权限。
- 启用SSL加密:通过启用SSL加密连接,确保客户端与服务器之间的数据传输安全。
示例:
sql
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'StrongPassword123';
GRANT SELECT, INSERT ON my_database.* TO 'user1'@'localhost';
7. 数据库版本升级与兼容性
MySQL 8.0提供了许多新特性和性能提升,但也可能带来与早期版本的不兼容问题。在升级MySQL版本时,建议先在测试环境中进行充分验证,确保应用能够兼容新版本。
- 使用
mysql_upgrade
工具:升级MySQL后,运行mysql_upgrade
工具来检查和修复表结构和权限等问题。 - 测试与回滚计划:在生产环境进行升级前,一定要做好充分的测试,并制定详细的回滚方案。
示例:
mysql_upgrade -u root -p
通过应用上述最佳实践,MySQL 8.0能够充分发挥其性能优势,确保数据库系统的高效运行、数据安全以及良好的可维护性。无论是在开发、部署还是维护过程中,合理配置和使用MySQL 8.0的新特性及最佳实践,都是成功构建高性能数据库系统的关键。
三、结论
MySQL 8.0的发布标志着开源数据库发展的一个重要里程碑,其新特性为开发人员提供了更多的灵活性和性能。同时,随之而来的也有新的挑战,如何合理利用这些新特性和最佳实践,是每一个MySQL用户都需要面对的课题。希望本文能够为您在使用MySQL的过程中提供一些有价值的参考。
相关文章:
深入浅出MySQL 8.0:新特性与最佳实践
MySQL作为开源关系型数据库的佼佼者,近年来持续更新迭代,尤其是在8.0版本中引入了一系列令人兴奋的新特性。本文将介绍一些MySQL 8.0的关键新功能,并提供最佳实践,旨在帮助开发人员和DBA更好地利用这一强大的数据库管理系统。 一…...
【登录认证】JWT令牌
一、概述 JWT全称:**JSON Web Token **(https://jwt.io/)定义了一种简洁的、自包含的格式,用于通信双方以json数据格式安全的传输信息。组成: ①第一部分:Header(头),记录令牌类型、签名算法等。例如: (“alg”:" HS256"," type":“…...
coco数据集mAP评估
0 coco数据集划分说明 1 用yolo自带的评估 from ultralytics import YOLOmodel YOLO("../spatial-perception/checkpoints/yolo11n.pt")metrics model.val(data"./coco.yaml", save_jsonTrue) ## save_json为True,可以把预测结果存成json文件ÿ…...
C++23 ranges::range_adaptor_closure:程序定义的范围适配器闭包的辅助类
文章目录 一、背景介绍二、ranges::range_adaptor_closure 的定义与要求三、使用示例四、编译器支持情况五、总结 一、背景介绍 C23 引入了 std::ranges::range_adaptor_closure,这是一个辅助类模板,用于定义用户自定义的范围适配器闭包对象。这一特性主…...
滑动窗口——水果成篮
根据题意我们转化一下,在数组中求一个最长的子数组,数组中的数字种类不超过2种。 借助暴力思想,我们定义双指针进行进窗口、判断、出窗口、更新结果的流程。 我们需要借助hash表来记录不同数字出现的种类以及每个数字出现的次数。然后先让r…...
论文精读:YOLO-UniOW: Efficient Universal Open-World Object Detection
文章目录 前言1、出发点2、方法2.1.符号说明2.2.Efficient Adaptive Decision Learning2.3.Open-World Wildcard Learning 3、实验结果总结 前言 本文介绍一篇来自Tencent的开放词汇和世界检测结合的论文:Yolo-uniow,开源地址。 1、出发点 本篇论文相当…...
网络协议分析 实验四 ICMPv4与ICMPv6
文章目录 实验4.1 ICMP协议练习一 利用仿真编辑器编辑ICMP回显请求报文练习二 ICMP差错报文1.目的端不可达2.超时 练习三 仿真发送ICMP时间戳请求报文实验4.2 IPV6与ICMPV6实验设计题:设计一个能产生ICMPV6超时类型差错报文实验,并截图记录实验结果。 实…...
《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》
目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…...
nginx配置反向代理支持CORS跨域请求
nginx配置反向代理支持CORS跨域请求 1. 环境2. 配置Nginx反向代理和CORS添加的响应头包括: 1. 环境 后端springboot,项目端口8080前端vue,项目端口8088 2. 配置Nginx反向代理和CORS server {listen 8088;server_name your_domain.com;location / {root /path/to/…...
英语学习5.13
take the place of 【短语】 👉 关键词:代替、取代、顶替 ✅ 释义: 代替,取代某人或某物的位置或作用 指一个人或事物代替另一个人或事物,履行相同的职责、功能或占据原有的位置。 ✅ 例句: Nothing c…...
NY182NY183美光固态颗粒NY186NY188
NY182NY183美光固态颗粒NY186NY188 在存储技术的竞技场上,美光科技(Micron)始终扮演着革新者的角色。其NY系列固态颗粒凭借前沿的3D NAND架构和精准的工艺控制,成为企业级存储和数据中心的关键支柱。本文将围绕NY182、NY183、NY1…...
数据库--处理模型(Processing Model)
本文将介绍数据库处理模型,处理模型定义了系统如何执行一个查询计划。三种处理模型:迭代器模型、物化模型、向量化模型。 向量化模型是现代OLAP系统所使用的处理模型,它结合了迭代器模型和物化模型的优点。 另外还介绍了查询执行的两种方向:自顶向下(Pull模式),自底向…...
TikTok矩阵运营干货:从0到1打造爆款矩阵
在TikTok的流量浪潮中,运营TikTok矩阵是提升影响力、扩大受众群体的有效策略。无论是品牌推广还是个人IP打造,一个成功的TikTok矩阵都能带来意想不到的收获。下面就为大家分享一些TikTok矩阵运营的实用干货。 一、为什么要做TikTok矩阵 TikTok矩阵就像是…...
如何访问云相关的api
问题 预研访问国外厂商云api相关的代码,发现请求国外厂商云获取token时,发生了下面的错误: com.google.auth.oauth2.GoogleAuthException: Error getting access token for service account: connect timed out, iss: testmanagebucketesot…...
数字IC后端实现教程 | Early Clock Flow和Useful skew完全不是一个东西
数字后端零基础入门系列 | Innovus零基础LAB学习Day10 Q: Early clock flow和useful skew都是做短某段路径,这两个有什么区别呢,既然这样还用useful skew是不是有点多余了? Useful Skew技术 在不使用useful skew技术,第一级FF到第二级FF的…...
用AI制作黑神话悟空质感教程,3D西游记裸眼效果,西游人物跳出书本
目录 一、前言二、作图步骤1.DeepSeek 生成画面场景2.AI作图3.下载高清无码图 一、前言 你是否也想打造这种立体效果?让人物仿佛从纸上跃然而出,质感逼真。这里我以西游记为例,大家完全可以根据个人喜好,尝试创作三国、水浒等题材…...
C++模板
C<模板初阶> 这一集讲一下模板, 这东西理解起来不难, 用起来也很简单, 大家顺着看就ok. void Swap(int& left, int& right)//参数是引用 {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left …...
系统平衡与企业挑战
在复杂的系统中,一切都在寻找平衡,而这个平衡从不静止。它在不断的变化与反馈中调整,以适应外界环境的变动。就像一个企业,它无法完全回避变化,但却总是在挑战中寻找新的平衡点。 最近遇到一家企业,引入了…...
【AI News | 20250513】每日AI进展
AI Repos 1、iap-diffusion-labs 从零开始带我们构建完整的扩散模型。通过三个精心设计的实验练习,循序渐进地引导我们实现流匹配和扩散模型,从基础 SDE 到条件图像生成,每一步都有详尽指导和完整代码,让复杂理论简单易懂。主要内…...
upload-labs通关笔记-第3关 文件上传之黑名单绕过
目录 一、实验准备 1.构造脚本 2.打开靶场第三关 3.源码分析 4.修改配置使支持php后缀 (1)切换php ts版本 (2)定位httpd.conf文件 (3)修改AddType application字段 (4)重启…...
【Redis】RedLock实现原理
Redis的RedLock是一种分布式锁算法,旨在通过多节点协作解决传统单节点Redis锁的容错性问题。其核心原理如下: 1. 设计目标 互斥性:同一时刻只有一个客户端持有锁。死锁避免:锁自动超时释放,防止客户端崩溃导致死锁。容…...
IPD流程实战:产品开发各阶段目标、关注点和交付
目录 简介 1、概念阶段 2、计划阶段 3、开发阶段 4、验证阶段 5、发布阶段 6、生命周期阶段 作者简介 简介 IPD的产品开发是一个多阶段协同的过程,上一个环节的输出是下一个环节的输入,每个阶段的交替都体现出了用户思维。 尽可能确保最终的输…...
植物大战僵尸杂交版v3.6最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于5月13日更新了植物大战僵尸杂交版3.6.5版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/037…...
激光打印机常见打印故障简单处理意见
一、 问题描述: 给打印机更换新的硒鼓时拉开硒鼓封条时有微量碳粉带出; 原因: 出厂打印测试时,可能会有微量碳粉在磁辊上或者磁辊仓; 解决方法: 擦干净即可正常使用; 二、 问题描述&…...
代码随想录算法训练营第60期第三十五天打卡
今天是我们贪心算法章节的最后一天,今天有三道题目需要讲解,但是最后又一道题目叫做监督二叉树的题目难度比较大,我打算二刷代码随想录的时候再来给大家讲解,因此我们今天就只讲解前两道题目,昨天的区间重叠问题是贪心…...
我的五周年创作纪念日
五年前的今天,我在CSDN发布了第一篇《基于VS2015的MFC学习笔记(常用按钮button)》,文末那句"欢迎交流"的忐忑留言,开启了这段充满惊喜的技术旅程。恍然发觉那些敲过的代码早已成长为参天大树。 收获 获得了…...
OpenCV特征处理全解析:从检测到匹配的完整指南
一、计算机视觉中的特征处理概述 在计算机视觉领域,特征处理是指从图像中提取、描述和匹配具有辨识度的局部或全局特征的过程。一个完整的特征处理流程通常包括三个关键步骤: 特征检测:在图像中寻找具有独特性质的点或区域特征描述…...
C++11 ——右值引用和移动语义
目录 一、基本概念左值 vs 右值左值引用 vs 右值引用 二、右值引用使用场景和意义左值引用的使用场景左值引用的短板右值引用和移动语义右值引用引用左值右值引用的其他使用场景右值引用总结 三、完美转发右值前置知识万能引用完美转发保持值的属性完美转发的使用场景 四、总结…...
使用交互式半自动化标注工具制作语义分割数据集
参考的初始资源: GitHub项目文档 B站视频 1.安装工具 打开Anaconda Prompt 1.创建虚拟环境 conda create -n isat_env python3.8 conda activate isat_env2.安装GPU版本pytorch 4070 Ti CUDN12.5 pip install torch torchvision torchaudio --index-url https:/…...
阿里二面:聊聊 MySQL 主从同步方案的优缺点
大家好,我是君哥。今天来聊一聊 MySQL 主从架构。 MySQL Replication 是 MySQL 官方提供的主从同步方案,用于将 MySQL 主库的数据同步到从库中,从库可以供应用程序读取数据。 1 简介 Replication 是目前 MySQL 使用最多的灾备方案…...
YOLO11解决方案之物体模糊探索
概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 物体模糊是指对图像或视频中的特定检测对象应用模糊处理,这可以利用YOLO11 模型…...
Elecron 相关介绍以及常见的面试问题
一、深入介绍 Electron Electron 是一个由 GitHub 开发和维护的免费开源软件框架,允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)构建桌面应用程序 。它将 Chromium 渲染引擎和 Node.js 运行时环境相结合,为开发者提供了一套…...
基于STM32、HAL库的ADAU1701JSTZ音频接口芯片驱动程序设计
一、简介: ADAU1701JSTZ 是 Analog Devices 公司推出的一款高性能、低功耗音频编解码器 (CODEC) 芯片。它专为便携式音频设备设计,集成了麦克风前置放大器、ADC、DAC、耳机放大器等功能模块,支持多种音频接口和采样率,非常适合与 STM32 微控制器配合使用。 主要特性: 24…...
【氮化镓】电子辐照下温度对GaN位移阈能的影响
2024年,华东师范大学的彭胜国等人基于从头算分子动力学(AIMD)方法,研究了低能电子束辐照下温度对氮化镓(GaN)位移阈能(TDE)的影响。实验结果表明,在初始动能40至80 eV的范围内,镓(Ga)和氮(N)原子作为初级击出原子(PKAs)引发的位移对温度呈现不同的敏感性:Ga 的…...
NLTK库: 数据集3-分类与标注语料(Categorized and Tagged Corpora)
NLTK库: 数据集3-分类与标注语料(Categorized and Tagged Corpora) 1.二分类语料 主要是电影语料,和情绪(积极消极、主观客观)有关,有以下2个语料: 1.1 movie_reviews: IMDb 影评 IMDb(Internet Movie …...
物理:人的记忆是由基本粒子构成的吗?
问题: 基因属于人体的一部分,记忆也是人体的一部分,那么为什么基因可以代际遗传,但是记忆却被清空重置。如果基因是由粒子构成,那么记忆是不是也应该由粒子构成?如果记忆是粒子构成的,那么能否说明记忆永恒,即使死亡了身体被分解了,那么只要保证其身体有关的所有粒子被…...
加速度策略思路
一种基于技术指标和动态止损策略的交易方法,旨在提高交易的灵活性和风险控制能力。 1 -动态止损价格计算:该函数通过计算ATR(平均真实范围)和盈利峰值价,结合加速系数,动态调整止损价格。具体来说…...
【计算机组成原理】第二部分 存储器--分类、层次结构
文章目录 分类&层次结构0x01 分类按存储介质分类按存取方式分类按在计算机中的作用分类 0x02 层次结构 分类&层次结构 0x01 分类 按存储介质分类 半导体存储器磁表面存储器磁芯存储器光盘存储器 按存取方式分类 存取时间与物理地址无关(随机访问&#…...
Spring AI 开发本地deepseek对话快速上手笔记
Spring AI Spring AI是一个旨在推进生成式人工智能应用程序发展的项目,Spring AI的核心目标是提供高度抽象化的组件,作为开发AI应用程序的基础,使得开发者能够以最少的代码改动便捷地交换和优化功能模块 在开发之前先得引入大模型…...
Python训练打卡Day23
机器学习管道 pipeline 基础概念 pipeline在机器学习领域可以翻译为“管道”,也可以翻译为“流水线”,是机器学习中一个重要的概念。 在机器学习中,通常会按照一定的顺序对数据进行预处理、特征提取、模型训练和模型评估等步骤,以…...
【每天一个知识点】Dip 检验(Dip test)
Dip 检验(Dip test)是一种用于检验一维数据分布是否为单峰(unimodal)的非参数统计方法。该检验由 Hartigan 和 Hartigan 于 1985 年提出,通常用于探索性数据分析中,以判断数据是否仅具有一个峰值结构&#…...
AbstractQueuedSynchronizer之AQS
一、前置知识 公平锁和非公平锁: 公平锁:锁被释放以后,先申请的线程先得到锁。性能较差一些,因为公平锁为了保证时间上的绝对顺序,上下文切换更频繁 非公平锁:锁被释放以后,后申…...
【Qt】pro工程文件转CMakeLists文件
1、简述 Qt6以后默认使用cmake来管理工程,之前已经一直习惯使用pro,pro的语法确实很简单、方便。 很多项目都是cmake来管理,将它们加入到Qt项目中,cmake确实是大势所趋。比如,最近将要开发的ROS项目,也是使用的cmake语法。 以前总结的一些Qt代码,已经编写成pro、pri等…...
docker-compose部署thingsboard/tb-cassandra
1、配置 阿里云服务器2H8G 最低 系统:Ubuntu20.0.4 安装 docker 和 docker-compose 环境 ====================安装docker====================== # 更新包 sudo apt update# 安装docker sudo apt install docker.io# 查看是否安装成功 docker --version==================…...
MySQL 日期计算方法 date_sub()、date_add()、datediff() 详解-文中有示例帮助理解
1、date_sub()、date_add() date_sub() 和date_add() 语法相同,只不过一个加一个减。 从日期中减去指定时间间隔 语法: DATE_SUB(start_date, INTERVAL expr unit) start_date: 起始日期(如 now() , 字段名)。 INTERVAL expr…...
GPT-4.1和GPT-4.1-mini系列模型支持微调功能,助力企业级智能应用深度契合业务需求
微软继不久前发布GPT-4.1系列模型后,Azure OpenAI服务(国际版)现已正式开放对GPT-4.1和GPT-4.1-mini的微调功能,并通过Azure AI Foundry(国际版)提供完整的部署和管理解决方案。这一重大升级标志着企业级AI…...
如何将两台虚拟机进行搭桥
虚拟机网络搭桥配置指南 要实现两台虚拟机之间的网络互通("搭桥"),需要根据您的虚拟化平台选择合适的网络模式。以下是主流虚拟化软件的配置方法: 一、VMware 虚拟机互通配置 方案 1:使用桥接模式&#x…...
无缝对接主流电商平台接口,解决货源难题
行业调查显示,大多数代购商每天要花费数小时在淘宝、1688等平台寻找合适商品。手动复制商品链接、整理信息不仅耗时耗力,还容易出错——价格标错、库存不准等问题时有发生,直接影响客户体验。更麻烦的是,不同平台的商品信息格式不…...
GZip+Base64压缩字符串在ios上解压报错问题解决(安卓、PC模拟器正常)
java这边的压缩代码 引入的是java8 jdk自带的gzip压缩( java.util.zip.GZIPOutputStream)、BASE64Encoder( sun.misc.BASE64Encoder) public static String compress(String str) {if (str ! null && str.length() ! 0) {ByteArrayOutputStream…...
Cookie、 Local Storage、 Session Storage三种客户端存储方式
存储特性对比表 特性CookieLocal StorageSession Storage生命周期可设置过期时间永久保存会话结束自动清除存储容量4KB左右5-10MB5-10MB自动发送到服务器每次HTTP请求头携带不发送不发送访问方式服务端/客户端均可读写仅客户端仅客户端 使用场景及示例 1. Cookie - 用户身份…...