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

【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解

全局优化

mysql server参数

1. max_connections(最大连接数)

  • 含义:MySQL 服务允许的最大并发连接数(包括正在使用和空闲的连接)。超过此限制时,新连接会被拒绝(报错 Too many connections)。
  • 默认值:151(MySQL 8.0 及以下);MySQL 8.0.23+ 调整为 151 + (max_connections / 50)(但实际仍以配置为准)。
  • 优化建议
    • 取值需结合服务器内存与 CPU 资源(每个连接默认占用约 200KB 内存)。
    • 公式参考:max_connections = 可用内存(GB)* 1000 / 0.2(单连接内存估算)(例如 16GB 内存服务器,建议设为 800-1000)。
    • 上限不超过操作系统 ulimit -n(文件描述符)的 80%(避免与其他进程冲突)。

2. max_user_connections(单用户最大连接数)

  • 含义:限制单个 MySQL 用户(如 root@localhost)能同时建立的连接数(防止单个用户占满连接池)。
  • 默认值:0(表示不限制)。
  • 优化建议
    • 设为 max_connections * 20%~30%(例如 max_connections=1000,则 max_user_connections=200~300)。
    • 业务中若存在多应用共享同一账号,需适当调大(如 500);若账号隔离严格,可设为更小值(如 100)。

3. back_log(半连接队列长度)

  • 含义:MySQL 接受新连接时,未完成三次握手的半连接队列的最大长度(即等待被 MySQL 处理的连接数)。若队列满,新连接会被操作系统拒绝(报 connection refused)。
  • 默认值:80(MySQL 5.7 及以下);MySQL 8.0+ 调整为 min(511, max_connections)
  • 优化建议
    • 高并发场景(如 QPS > 1000)建议调大至 max_connections * 50%(例如 max_connections=1000,则 back_log=500)。
    • 上限不超过 max_connections(避免无效队列)。

4. wait_timeout(非交互连接超时)

  • 含义非交互式连接(如通过脚本/程序建立的连接)在空闲状态下的超时时间(秒),超时后连接会被自动关闭。
  • 默认值:28800(8 小时)。
  • 优化建议
    • 过长会导致空闲连接堆积,浪费资源;过短可能增加连接重建开销。
    • 业务场景若短连接多(如 Web 应用),建议设为 360014400(14 小时);若长连接多(如批量任务),可适当延长(如 28800)。

5. interactive_timeout(交互连接超时)

  • 含义交互式连接(如通过 mysql -u root -p 命令行工具建立的连接)在空闲状态下的超时时间(秒)。
  • 默认值:与 wait_timeout 相同(28800)。
  • 优化建议
    • 通常与 wait_timeout 保持一致(避免连接行为不一致)。
    • 若需区分交互式与非交互式场景(如 DBA 操作),可单独调大(如 43200)。

6. sort_buffer_size(排序缓冲区大小)

  • 含义:MySQL 执行 ORDER BYGROUP BY 等排序操作时,单个线程使用的内存缓冲区大小(若缓冲区不足,会使用磁盘临时表排序)。
  • 默认值:256KB(MySQL 5.7 及以下);MySQL 8.0+ 调整为 32KB(更保守)。
  • 优化建议
    • 过小会导致频繁磁盘排序(慢),过大浪费内存(每个排序线程独立分配)。
    • 通用场景:1~4MB;大表排序(如 100W+ 行)可设为 8MB(不超过 16MB)。

7. join_buffer_size(JOIN 缓冲区大小)

  • 含义:MySQL 执行 JOIN 操作时,单个线程用于存储未索引表数据的内存缓冲区大小(若缓冲区不足,会分块读取表数据)。
  • 默认值:256KB(MySQL 5.7 及以下);MySQL 8.0+ 调整为 256KB(未变)。
  • 优化建议
    • 仅对 JOIN 中未使用索引的表有效(若有索引,此参数不生效)。
    • 小表 JOIN(行数 < 1W):12MB;大表 JOIN(行数 10W100W):4~8MB(不超过 16MB)。

总结:优化原则

  • 连接类参数(前 5 个)需平衡并发能力与资源消耗,避免连接数过高导致内存溢出或 CPU 上下文切换开销过大。
  • 内存类参数(后 2 个)需结合具体查询场景,优先通过索引优化减少对缓冲区的依赖(如 ORDER BY 加索引、JOIN 字段加索引),再调整缓冲区大小。
  • 验证方法:通过 SHOW GLOBAL STATUS 查看 Threads_connected(当前连接数)、Sort_merge_passes(磁盘排序次数)、Created_tmp_tables(临时表数量)等指标,动态调整参数。

innodb参数

以下是 InnoDB 核心参数的含义、作用及推荐配置(结合 OLTP 与 OLAP 场景差异,实际需根据业务负载调整):

1. innodb_thread_concurrency(线程并发数限制)

  • 含义:控制 InnoDB 存储引擎同时处理的线程数上限(包括用户查询线程、后台 IO 线程等)。超过此限制时,新线程会进入等待队列,避免 CPU 因线程过多导致上下文切换开销激增。
  • 默认值:0(表示不限制,由 InnoDB 自动调整)。
  • 作用
    • 防止高并发场景下线程数超过 CPU 核心数,导致资源争用(如锁竞争、缓存失效)。
    • 优化 CPU 利用率,避免“线程饥饿”(部分线程因资源不足无法执行)。
  • 推荐值
    • 通用场景:设为 CPU 核心数 × 2(例如 8 核 CPU 设为 16)。
    • OLTP 高并发:若 CPU 利用率长期 >80%,可适当调小(如 CPU 核心数 × 1.5);若 CPU 空闲,可适当调大(不超过 CPU 核心数 × 3)。
    • OLAP 大查询:因单查询占用资源多,建议设为 CPU 核心数 × 1(避免多查询抢占资源)。

2. innodb_buffer_pool_size(缓冲池大小)

  • 含义:InnoDB 用于缓存数据页、索引页、锁信息的内存区域大小。缓冲池是 InnoDB 性能的核心,直接决定了“内存中读取数据”的比例(减少磁盘 IO)。
  • 默认值:MySQL 5.7 及以下默认 128MB;MySQL 8.0+ 默认动态调整(但建议手动配置)。
  • 作用
    • 提升读性能:命中缓冲池的查询无需访问磁盘。
    • 优化写性能:修改操作先写入缓冲池(脏页),再异步刷新到磁盘(通过 innodb_flush_method 控制)。
  • 推荐值
    • 物理内存分配:建议分配 服务器总内存的 50%~70%(需预留 20%~30% 给操作系统、其他进程及 MySQL 其他组件)。
    • 示例
      • 16GB 内存服务器:设为 8~12GB(SET GLOBAL innodb_buffer_pool_size=10737418240 表示 10GB)。
      • 64GB 内存服务器:设为 32~48GB。
    • 注意:缓冲池过大可能导致系统内存不足(如 OOM 杀进程),需结合 free -h 监控剩余内存。

3. innodb_lock_wait_timeout(锁等待超时时间)

  • 含义:事务因等待行锁(如 SELECT ... FOR UPDATE 或 UPDATE 冲突)而阻塞的最大等待时间(单位:秒)。超时后事务会自动回滚并报错(Lock wait timeout exceeded)。
  • 默认值:50 秒。
  • 作用
    • 避免长事务因锁等待导致阻塞链过长(如 A 锁行 → B 等待 A → C 等待 B,最终拖慢整个系统)。
    • 保护业务连续性:快速终止无法继续的事务,避免资源长期被占用。
  • 推荐值
    • OLTP 在线交易(如电商下单):设为 5~10 秒(业务容忍短时间重试)。
    • OLAP 批量任务(如数据统计):设为 60~120 秒(允许较长时间处理大表)。
    • 强一致性场景(如金融转账):可适当调小(3~5 秒),强制暴露锁冲突问题(避免隐藏的慢查询)。

4. innodb_flush_log_at_trx_commit(日志刷盘策略)

  • 含义:控制事务提交时,InnoDB 如何将 redo log 从内存写入磁盘(直接影响事务的持久性和性能)。
  • 可选值
    • 0:每秒将 redo log 缓冲区写入磁盘并刷新(不保证事务提交时刷盘)。
    • 1(默认):事务提交时立即将 redo log 写入磁盘并刷新(强持久化)。
    • 2:事务提交时将 redo log 写入磁盘(但不立即刷新,由操作系统异步刷新)。
  • 作用
    • 持久性1 是最安全的策略(崩溃不丢数据);0 和 2 可能丢失 1 秒内的事务。
    • 性能0 和 2 减少磁盘 IO 次数(提升写性能),但牺牲部分持久性。
  • 推荐值
    • 金融/支付等高一致性场景:必须用 1(确保事务提交后数据不丢失)。
    • 日志/监控等允许少量数据丢失的场景:用 2(写性能提升 20%~50%,但需接受机器宕机可能丢失 1 秒数据)。
    • 测试/开发环境:可用 0(进一步提升性能,适合非关键数据)。

总结:配置原则

  • innodb_buffer_pool_size 是性能优化的核心,优先调大(但不超过内存 70%)。
  • innodb_thread_concurrency 需结合 CPU 核心数和负载动态调整,避免线程过多导致资源竞争。
  • innodb_lock_wait_timeout 需根据业务容忍度平衡“快速回滚”与“避免重试”。
  • innodb_flush_log_at_trx_commit 需在“性能”与“持久性”间权衡(生产环境强一致性场景必选 1)。

验证方法:通过 SHOW ENGINE INNODB STATUS 查看缓冲池命中率(Buffer pool hit rate 应 >99%)、锁等待次数(Lock waits 应接近 0),结合 iostat 监控磁盘 IO 压力,动态调整参数。

binlog参数

sync_binlog 是 MySQL 中控制二进制日志(binlog)写入磁盘频率的核心参数,直接影响数据一致性、主从复制可靠性和系统性能。以下从作用、取值含义、影响及推荐配置详细说明:

1. 参数含义

sync_binlog 定义了 MySQL 在提交事务时,将 binlog 从内存缓冲区强制刷新到磁盘的频率(即调用 fsync() 系统调用的时机)。其本质是平衡数据安全性写性能的关键配置。

2. 取值与行为

sync_binlog 支持三种取值(N ≥ 0),不同值的行为差异如下:

取值

行为说明

数据安全风险

sync_binlog=0

MySQL 不主动控制 binlog 刷盘,由操作系统决定(通常每 30 秒~数分钟刷盘一次)。

若 MySQL 或服务器崩溃,可能丢失所有未刷盘的 binlog 记录(可能影响主从复制和 PITR 恢复)。

sync_binlog=1

每次事务提交时,强制将 binlog 缓冲区内容写入磁盘(fsync())。

最安全模式,崩溃时最多丢失当前未提交的事务(符合 ACID 持久性)。

sync_binlog=N(N>1)

每提交 N 次事务后,统一将 binlog 缓冲区内容写入磁盘。

若崩溃,可能丢失最近 N 次事务的 binlog 记录(风险随 N 增大而增加)。

3. 核心影响

(1)数据一致性与主从复制
  • 主从复制:从库通过主库的 binlog 同步数据。若 sync_binlog=N(N>1),主库崩溃时可能丢失部分 binlog,导致从库数据不一致。
  • PITR 恢复:基于 binlog 的时间点恢复(Point-in-Time Recovery)依赖完整的 binlog 记录。sync_binlog=0 或 N>1 可能导致恢复时丢失部分操作。
(2)性能与磁盘 IO
  • sync_binlog=1 每次提交都触发磁盘写,会增加磁盘 IO 压力(尤其在高并发写入场景),可能降低 TPS(事务吞吐量)。
  • sync_binlog=N(N>1)通过批量刷盘减少 IO 次数,提升写性能(例如 N=100 可降低 99% 的 fsync() 调用)。

4. 推荐配置

配置 sync_binlog 需结合业务对数据一致性性能的需求:

场景

推荐值

说明

金融/支付等高一致性场景

1

必须保证 binlog 完整(如转账、订单),避免主从数据不一致或恢复时数据丢失。

日志/监控等允许少量丢失场景

100~1000

业务可容忍几秒内的数据丢失(如用户行为日志),通过调大 N 减少磁盘 IO,提升写入性能。

测试/开发环境

0 或 1000

非关键数据场景,优先性能;0 由操作系统自动刷盘(需注意崩溃时可能丢失大量 binlog)。

MySQL 8.0+ 生产环境

默认 1

MySQL 8.0 起默认值调整为 1,强调数据安全;若需优化性能,可结合 innodb_flush_log_at_trx_commit=2平衡(但需评估风险)。

5. 注意事项

  • 与 innodb_flush_log_at_trx_commit 的联动

innodb_flush_log_at_trx_commit 控制 redo log 的刷盘策略(影响 InnoDB 数据持久性),而 sync_binlog 控制 binlog 的刷盘策略(影响主从复制和恢复)。两者需配合使用:

    • 若 innodb_flush_log_at_trx_commit=1(InnoDB 事务提交时 redo log 必刷盘),但 sync_binlog=0,仍可能因 binlog 丢失导致主从数据不一致。
    • 强一致性场景需同时设置 innodb_flush_log_at_trx_commit=1 和 sync_binlog=1
  • 磁盘性能依赖

sync_binlog=1 对磁盘写入延迟敏感(尤其是机械硬盘)。若磁盘 IO 性能差(如 fsync() 耗时高),建议使用 SSD 或调整 N 值(如 N=100)。

  • 监控指标

通过 SHOW GLOBAL STATUS LIKE 'Binlog_cache_disk_use' 观察 binlog 缓存是否频繁落盘(值高可能需调大 binlog_cache_size);通过 iostat 监控磁盘 %util(IO 利用率),评估 sync_binlog 对磁盘的压力。

总结

sync_binlog 是平衡数据安全与性能的关键参数:

  • 强一致性场景(如金融交易)必须设为 1
  • 性能敏感且允许少量数据丢失的场景(如日志采集)可设为 100~1000
  • 需结合 innodb_flush_log_at_trx_commit 等参数,共同保障事务的持久性和主从复制的可靠性。

Mysql 8.0新特性详解

MySQL 8.0 是一个重大版本升级,带来了许多性能优化、新功能和安全性增强。以下是其最具特色的亮点功能详解:

1. 窗口函数(Window Functions)

  • 功能:支持标准 SQL 的窗口函数(如 ROW_NUMBER()RANK()DENSE_RANK()SUM() OVER()等),用于在查询结果的分组内进行排序、计算排名或聚合统计。
  • 场景:报表统计、排名分析、滚动计算(如近 7 天销售额)等,简化复杂子查询逻辑。
  • 示例
SELECT order_date, amount,ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) AS rn
FROM orders;

2. CTE 公用表表达式(Common Table Expressions)

  • 功能:支持递归和非递归的 CTE(WITH 语句),定义临时结果集供后续查询复用,提升查询可读性。
  • 场景:层级数据查询(如部门架构、目录树)、递归统计(如累计值计算)。
  • 示例(递归 CTE)
WITH RECURSIVE emp_hierarchy AS (SELECT id, manager_id, name FROM employees WHERE id = 1  -- 根节点UNION ALLSELECT e.id, e.manager_id, e.name FROM employees eJOIN emp_hierarchy eh ON e.manager_id = eh.id
)
SELECT * FROM emp_hierarchy;

3. JSON 增强(JSON_TABLE 等)

  • 功能
    • JSON_TABLE:将 JSON 数据转换为关系型表结构,支持行列展开(类似 LATERAL VIEW)。
    • 新增 JSON_ARRAYAGG()JSON_OBJECTAGG() 等聚合函数,优化 JSON 数据的查询和分析。
  • 场景:半结构化数据存储(如日志、用户自定义字段),简化 JSON 与 SQL 的交互。
  • 示例
SELECT *
FROM JSON_TABLE('[{"name":"Alice","age":30},{"name":"Bob","age":25}]','$[*]' COLUMNS(name VARCHAR(50) PATH '$.name',age INT PATH '$.age')
) AS jt;

4. 隐藏索引(Invisible Indexes)

  • 功能:允许将索引标记为 INVISIBLE,使其在查询优化时被忽略,但仍可用于 DDL 操作(如 RENAMEDROP)。
  • 场景:测试新索引对性能的影响,无需删除原有索引,降低变更风险。
  • 用法
ALTER TABLE users ALTER INDEX idx_email INVISIBLE;  -- 隐藏索引
ALTER TABLE users ALTER INDEX idx_email VISIBLE;    -- 恢复可见

5. 降序索引(Descending Indexes)

  • 功能:支持直接创建降序索引(DESC),优化 ORDER BY ... DESC 查询,避免额外排序操作。
  • 对比:MySQL 5.7 及之前版本需通过升序索引实现降序排序,8.0 原生支持更高效。
  • 示例
CREATE INDEX idx_desc ON orders (price DESC, order_date DESC);

6. 默认字符集改为 utf8mb4

  • 变更:MySQL 8.0 默认为 utf8mb4 字符集(支持 emoji、复杂文字),校对规则为 utf8mb4_0900_ai_ci(更高效的排序规则)。
  • 影响:新建表自动使用 utf8mb4,避免历史版本中 utf8(仅 3 字节)导致的 emoji 存储问题。

7. 原子 DDL(Atomic DDL)

  • 功能:表结构变更(DDL)操作支持原子性,失败时自动回滚,避免因崩溃导致的表元数据损坏(如 .frm 文件残留)。
  • 实现:通过 InnoDB 事务机制保障 DDL 原子性,减少运维风险。

8. 性能优化:自增主键与锁

  • 自增主键优化:引入 ALGORITHM=INSTANT(瞬间操作),支持无锁修改自增主键值,提升在线变更效率。
  • 锁优化:减少 INSERT 语句的锁竞争(如 AUTO-INC Lock 优化),高并发插入场景性能提升显著。

9. 安全增强:默认身份验证插件

  • 变更:默认身份验证插件从 mysql_native_password 改为 caching_sha2_password,提供更强的密码加密和缓存机制。
  • 注意:需确保客户端(如 MySQL Connector/J 8.0+)支持 caching_sha2_password,否则需手动切换为旧插件。

10. 角色管理(Role-Based Access Control)

  • 功能:支持创建角色(CREATE ROLE)并分配权限,再将角色授予用户,简化权限管理(如批量授权、权限回收)。
  • 示例
CREATE ROLE 'report_role';
GRANT SELECT ON sales.* TO 'report_role';
GRANT 'report_role' TO 'user1'@'localhost';

总结:升级价值

MySQL 8.0 的核心提升体现在:

  • 开发体验:窗口函数、CTE、JSON 增强降低复杂查询开发成本;
  • 性能与稳定性:原子 DDL、索引优化、锁机制提升系统可靠性;
  • 安全性:默认加密插件、角色管理强化权限体系;
  • 兼容性:utf8mb4 默认化解决字符集历史问题。

建议根据业务场景评估升级,尤其是涉及数据分析、JSON 数据或高并发写入的场景,新特性可显著提升开发效率和系统性能。

相关文章:

【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解

全局优化 mysql server参数 1. max_connections&#xff08;最大连接数&#xff09; 含义&#xff1a;MySQL 服务允许的最大并发连接数&#xff08;包括正在使用和空闲的连接&#xff09;。超过此限制时&#xff0c;新连接会被拒绝&#xff08;报错 Too many connections&am…...

CSS相关知识

1.清除浮动的方法 2.定位 静态定位相当于标准流 相对定位不脱离文档流&#xff0c;仍然占据原来的位置&#xff08;最频繁的作用是给绝对定位当爹&#xff09; 绝对定位脱离文档标准流&#xff0c;不再占有原来位置 3.BFC 1. 解决浮动元素导致的父容器高度塌陷 2. 阻止相邻元…...

AI扫描王APP:高效便捷的手机扫描工具,让生活更智能

AI扫描王APP是一款功能强大的手机扫描软件&#xff0c;专为追求高效、便捷的用户设计。它不仅支持文字提取和扫描翻译&#xff0c;还能进行测量&#xff0c;满足用户在不同场景下的需求。无论是办公、学习还是日常使用&#xff0c;AI扫描王都能帮助你快速完成任务&#xff0c;节…...

《仿盒马》app开发技术分享-- 原生地图展示(端云一体)

开发准备 上一节我们实现了获取当前用户的位置&#xff0c;并且成功的拿到了经纬度&#xff0c;这一节我们就要根据拿到的经纬度&#xff0c;结合我们其他的知识点来实现地图的展示。 功能分析 地图的展示&#xff0c;我们需要在管理中心先给我们对应的应用开启地图api功能&…...

Linux 操作文本文件列数据的常用命令

文章目录 Linux 操作文本文件列数据的常用命令基本列处理命令高级列处理列数据转换和排序列数据统计和分析 Linux 操作文本文件列数据的常用命令 Linux 提供了多种强大的命令来处理文本文件中的列数据&#xff0c;以下是一些最常用的命令和工具&#xff1a; 基本列处理命令 c…...

IP、子网掩码、默认网关、DNS

IP、子网掩码、默认网关、DNS 1. 概述1.1 windows配置处 2.IP 地址&#xff08;Internet Protocol Address&#xff09;2.1 公网ip2.2 内网ip2.3 &#x1f310; 公网 IP 与内网 IP 的关系&#xff08;NAT&#xff09; 3. 子网掩码&#xff08;Subnet Mask&#xff09;4. 默认网…...

华为OD机试真题——字符串加密 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

角度回归——八参数检测四边形Gliding Vertex

文章目录 一、介绍&#xff08;一&#xff09;五参数检测方法&#xff08; 基于角度&#xff09;&#xff08;二&#xff09;八参数检测方法&#xff08;point-based&#xff09;的边界 二、方案分析&#xff08;一&#xff09;问题定义&#xff08;二&#xff09;方案&#xf…...

JVM 高质量面试题

&#x1f4cc; 文章目录 一、JVM 内存结构与运行时模型1. JVM 内存结构分区及作用2. 栈帧结构及方法调用链维护3. 逃逸分析及其对对象分配策略的影响4. TLAB 的作用及提升对象创建效率的机制 二、垃圾回收器与 GC 调优1. CMS 与 G1 垃圾收集器的设计区别及适用场景2. Full GC 频…...

AI助力,制作视频裁剪软件

1. 视频裁剪软件套路多 最近再做一些测试&#xff0c;经常需要录屏什么的&#xff0c;有时候录制的时长视频&#xff0c;需要裁剪&#xff0c;比如去掉开头一些帧或者结尾的一些帧&#xff0c;就想保留关键点。但是网上下的一些软件&#xff0c;打开一用都是要付费的。所以想着…...

SQL注入基础

普通sql注入:后台能提供有价值的错误信息&#xff0c;显示在页面 手动注入 1. 寻找sql注入点 get注入 ?idxx url后加测试是否存在注入漏洞&#xff0c;报错则存在 post注入 把参数封装…...

使用 A2A Python SDK 实现 CurrencyAgent

谷歌官方的a2a-python SDK最近频繁的更新,我们的教程也需要跟着更新,这篇文章,我们通过 a2a-python sdk的 0.2.3 版本,实现一个简单的CurrencyAgent。 https://a2aprotocol.ai/blog/a2a-sdk-currency-agent-tutorial-zh 目录 源码准备详细过程 创建项目创建虚拟环境添加依…...

qt浏览文件支持惯性

#include <QApplication> #include <QListWidget> #include <QScroller> #include <QScrollerProperties>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建列表控件并添加示例项QListWidget listWidget;for (int i 0; i <…...

Python类的力量:第六篇:设计模式——Python面向对象编程的“架构蓝图”

文章目录 前言&#xff1a;从“代码堆砌”到“模式复用”的思维跃迁 一、创建型模式&#xff1a;对象创建的“智能工厂”1. 单例模式&#xff08;Singleton&#xff09;&#xff1a;全局唯一的“资源管家”2. 工厂模式&#xff08;Factory&#xff09;&#xff1a;对象创建的“…...

[实战]用户系统-2-完善登录和校验以及VIP

这里写目录标题 完善登录和校验新建lib-auth创建配置引入配置和JWT完善登录基本登录单点登录多点登录校验和拦截编写守卫编写装饰器使用完善VIP修改mysql模型编写vip守卫代码进度完善登录和校验 之前我们模拟过用户的登录,本节将实现token的生成,校验,redis做黑名单。我们需…...

负载均衡笔记

并发数—同时服务的调用方的数量 吞吐量—单位时间内&#xff0c;能接受和返回的数据请求量 TPS。 Transaction事务 QPS。Query 请求/查询 优化点&#xff1a; 减少并发数—防止并非过高 低级—限流—可用的用户少了&#xff1f;&#xff01; 多开几个口—分流 DNS 解析域…...

印度语言指令驱动的无人机导航!UAV-VLN:端到端视觉语言导航助力无人机自主飞行

作者&#xff1a;Pranav Saxena, Nishant Raghuvanshi and Neena Goveas单位&#xff1a;比尔拉理工学院&#xff08;戈瓦校区&#xff09;论文标题&#xff1a;UAV-VLN: End-to-End Vision Language guided Navigation for UAVs论文链接&#xff1a;https://arxiv.org/pdf/250…...

mysql都有哪些锁?

MySQL中的锁机制是确保数据库并发操作正确性和一致性的重要组成部分&#xff0c;根据锁的粒度、用途和特性&#xff0c;可以分为多种类型。以下是MySQL中常见的锁及其详细说明&#xff1a; 一、按锁的粒度划分 行级锁&#xff08;Row-level Locks&#xff09; 描述&#xff1a;…...

解锁未来AI:使用DACA模式和Agentic技术提高开发效率

学习Agentic AI:Dapr Agentic Cloud Ascent (DACA)设计模式的应用与演进 背景介绍 近年来,Agentic AI(代理型人工智能)的概念在学术界和产业界掀起了一阵热潮。Agentic AI指的是能够自主感知、决策和行动的智能体系统,它们不仅改变了我们与技术互动的方式,也为行业发展…...

HarmonyOS NEXT 使用 relationalStore 实现数据库操作

大家好&#xff0c;我是V哥。在 HarmonyOS NEXT 开发中&#xff0c;如何操作数据库&#xff0c;V 哥在测试中总结了以下学习代码&#xff0c;分享给你&#xff0c;如何想要系统学习鸿蒙开发&#xff0c;可以了解一下 V 哥最近刚刚上架出版的 《HarmonyOS 鸿蒙开发之路 卷2 从入…...

R语言学习--Day04--数据分析技巧

在清洗完数据&#xff0c;在对数据分析前&#xff0c;我们要懂得先梳理一下我们的逻辑&#xff0c;即数据是什么形式的&#xff0c;要进行哪种分析&#xff0c;有可能呈现什么特点&#xff0c;进而再想怎么处理数据去画图可以最大程度地凸显我们要的特点。 一般来讲&#xff0…...

SRS流媒体服务器之RTC播放环境搭建

环境概述 srs版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. rtc.conf # WebRTC streaming config for SRS. # see full.…...

Android 性能优化入门(三)—— ANR 问题分析

需要清楚 ANR 的概念、类型、如何产生以及如何定位分析。 1、概述 1.1 ANR 的概念 ANR&#xff08;Application Not Responding&#xff09;应用程序无响应。如果你应用程序在主线程被阻塞太长时间&#xff0c;就会出现 ANR&#xff0c;通常出现 ANR&#xff0c;系统会弹出一…...

用HTML5实现实时ASCII艺术摄像头

用HTML5实现实时ASCII艺术摄像头 项目简介 这是一个将摄像头画面实时转换为ASCII字符艺术的Web应用&#xff0c;基于HTML5和原生JavaScript实现。通过本项目可以学习到&#xff1a; 浏览器摄像头API的使用Canvas图像处理技术实时视频流处理复杂DOM操作性能优化技巧 功能亮点…...

鸿蒙Flutter实战:22-混合开发详解-2-Har包模式引入

以 Har 包的方式加载到 HarmonyOS 工程 创建工作 创建一个根目录 mkdir ohos_flutter_module_demo这个目录用于存放 flutter 项目和鸿蒙项目。 创建 Flutter 模块 首先创建一个 Flutter 模块&#xff0c;我们选择与 ohos_app 项目同级目录 flutter create --templatemodu…...

游戏引擎学习第302天:使用精灵边界进行排序

在 game_render_group.cpp 中&#xff1a;正确计算 GetBoundFor() 里的 SpriteBound 值 我们正在进行游戏的排序问题调试。虽然这是一个二维游戏&#xff0c;但包含一些三维元素&#xff0c;因此排序变得比较复杂和棘手。混合二维和三维元素时&#xff0c;需要依赖一些比较主观…...

SpringBoot+MyBatis

切换数据库连接词 引入数据库连接词的依赖&#xff0c;配置数据库连接池的类型&#xff1b; 编写测试类&#xff1a; package org.example.threelayerdecouplingdomeapplication2;import org.example.threelayerdecouplingdomeapplication2.mapper.UserMapper; import org.ex…...

wireshark: Display Filter Reference

https://www.wireshark.org/docs/dfref/// 这个里面的扩展功能还是很强大&#xff0c;可以帮着问题分析。支持大量的自定义化的字段读取功能&#xff0c;支持很多的协议。 https://www.wireshark.org/docs/dfref///f/frame.html frame.time_delta Time delta from previous ca…...

Java基础 Day19

一、泛型&#xff08;JDK5引入&#xff09; 1、基本概念 在编译阶段约束操作的数据类型&#xff0c;并进行检查 好处&#xff1a;统一数据类型&#xff0c;将运行期的错误提升到了编译期 泛型的默认类型是 Object 2、泛型类 在创建类的时候写上泛型 在创建具体对象的时候…...

VMware+Windows 11 跳过安装阶段微软账号登录

OOBE 阶段 来到这里 断开网络适配器 VMware右下角&#xff0c;点击网络适配器&#xff0c;断开连接 同时按下 Shift 和 F10 &#xff0c;打开命令提示符(cmd.exe) 输入 oobe\BypassNRO.cmd 并回车 接下来正常进行即可...