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

MySQL基础原理

目录

一、MySQL架构

1、四层架构

2、MySQL运行机制

二、MySQL存储引擎

1、不同存储引擎对比

2、InnoDB存储结构

2.1 内存结构

2.2 磁盘结构

3、日志先行策略

3.1 核心思想

3.2 关键组件与流程

3.3 数据安全保证

3.3.1 崩溃恢复

3.3.2 持久性保障


一、MySQL架构

1、四层架构

1> 连接层

  • 客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术。

2> 服务层

  • 连接池(Connection Pool管理客户端连接、认证及线程处理。
  • 系统管理和控制工具( Management Services & Utilities :例如备份恢复、安全管理、集群管理等。
  • SQL 接口( SQL Interface 收客户端请求并返回结果,支持DML、DDL、存储过程 、视图、触发器等操作。
  • 解析器( Parser :负责将请求的 SQL 解析生成一个 " 解析树 " 。然后根据一些 MySQL 规则进一步检查解析树是否合法。
  • 查询优化器( Optimizer :当 解析树 通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。
  • 查询缓存( Query Cache,8.0+已移除):缓存SELECT语句及其结果集,以Key-Value形式存储。
3> 存储引擎层
插件式设计,负责数据存储与检索。

核心引擎

  • InnoDB:默认引擎,支持事务(ACID)、行锁、MVCC、外键,采用聚簇索引。

  • MyISAM:表锁、全文索引,适合读密集型场景(如*.MYD/*.MYI文件)。

  • Memory:数据存于内存,适用于临时表。

4> 系统文件层

数据最终以文件形式存储在磁盘。主要包含日志文件,数据文件,配置文件,pid 文件,socket 文件等。

日志文件

  • 错误日志(Error log

show variables like '%log_error%'    //默认开启
  • 通用查询日志(General query log):记录一般查询语句
show variables like '%general%';
  • 二进制日志(binary log
记录了对 MySQL 数据库执行的更改操作,并且记录了语句的发生时间、执行时长;但是它不记录select show 等不修改数据库的 SQL 。主要用于数据库恢复和主从复制。
show variables like '%log_bin%'; //是否开启
show variables like '%binlog%'; //参数查看
show binary logs;//查看日志文件
  • 慢查询日志(Slow query log):记录所有执行时间超时的查询SQL,默认是10秒。
show variables like '%slow_query%'; //是否开启
show variables like '%long_query_time%'; //时长

数据文件

  • db.opt 文件:记录这个库的默认使用的字符集和校验规则。
  • frm 文件:存储与表相关的元数据(meta)信息,包括表结构的定义信息等,每一张表都会有一个frm 文件。
  • MYD 文件:MyISAM 存储引擎专用,存放 MyISAM 表的数据(data),每一张表都会有一个.MYD 文件。
  • MYI 文件: MyISAM 存储引擎专用,存放 MyISAM 表的索引相关信息,每一张 MyISAM 表对 应一个 .MYI 文件。
  • ibd 文件和 IBDATA 文件:存放 InnoDB 的数据文件(包括索引)。 InnoDB 存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空间使用 .ibd 文件来存放数据,且每一张InnoDB 表对应一个 .ibd 文件。共享表空间使用 .ibdata 文件,所有表共同使用一个(或多个,自行配置).ibdata 文件。
  • ibdata1 文件:系统表空间数据文件,存储表元数据、 Undo 日志等 。
  • ib_logfile0 ib_logfile1 文件: Redo log 日志文件。

配置文件用于存放MySQL所有的配置信息文件,比如my.cnfmy.ini等。

pid 文件:pid 文件是 mysqld 应用程序在 Unix/Linux 环境下的一个进程文件,和许多其他 Unix/Linux 服务端程序一样,它存放着自己的进程 id

socket 文件:socket 文件也是在 Unix/Linux 环境下才有的,用户在 Unix/Linux 环境下客户端连接可以不通过 TCP/IP 网络而直接使用 Unix Socket 来连接 MySQL

2、MySQL运行机制

一条SQL语句的执行过程:
  1. 连接建立:客户端通过 TCP/IP 或 Socket 连接 MySQL 服务。

  2. 查询缓存:缓存命中直接返回,否则继续。

  3. 查询解析:解析 SQL 生成语法树,检查权限。

  4. 优化器决策:选择索引、JOIN 顺序,生成执行计划。

  5. 执行引擎调用:通过存储引擎读取数据(如全表扫描或索引查找)。

  6. 结果返回:将数据返回客户端,可能缓存结果(Query Cache)。

二、MySQL存储引擎

1、不同存储引擎对比

特性InnoDBMyISAMMemory
事务支持✔️
锁粒度行级锁表级锁表级锁
外键✔️
崩溃恢复✔️❌(需手动修复)❌(数据丢失)
存储介质磁盘磁盘内存
索引类型聚集索引(B+Tree)非聚集索引(B+Tree)哈希索引(默认)
适用场景高并发事务、OLTP读密集型、OLAP临时数据、缓存

2、InnoDB存储结构

InnoDB架构分为内存结构磁盘结构两部分,通过日志先行(Write-Ahead Logging, WAL)策略保证事务的持久性:

  • 内存结构:包括缓冲池(Buffer Pool)、重做日志缓冲(Log Buffer)、变更缓冲(Change Buffer)、自适应哈希索引(Adaptive Hash Index)等,用于加速数据读写并减少磁盘IO138。

  • 磁盘结构:包含表空间(Tablespace)、重做日志文件(Redo Log)、撤销日志(Undo Log)等,数据以页(16KB)为单位组织,并通过B+树索引管理

2.1 内存结构

1> 缓冲池(Buffer Pool)

核心作用:缓存数据页(Data Page)、索引页(Index Page)等,采用链表数据结构管理,减少磁盘IO。通常分配物理内存的60%-80%,

LRU优化:采用改进的LRU算法,将缓冲池分为New Sublist(5/8)和Old Sublist(3/8)加入元素时并不是从表头插入,而是从中间midpoint位置插入,如果数据很快被访问,那么page就会向new列表头部移动,如果数据没有被访问,会逐步向old尾部移动,等待淘汰。

配置参数

show variables like '%innodb_page_size%'; //查看page页大小
show variables like '%innodb_old%'; //查看lru list中old列表参数
show variables like '%innodb_buffer%'; //查看buffer pool参数
//建议:将innodb_buffer_pool_size设置为总内存大小的60%-80%,
//innodb_buffer_pool_instances可以设置为多个,这样可以避免缓存争夺

2> 变更缓冲(Change Buffer)

功能:针对非唯一辅助索引的插入、删除操作进行缓冲,合并多次修改为单次磁盘IO,减少随机写

限制:唯一索引无法使用,因需立即检查唯一性

ChangeBuffer 占用 BufferPool 空间,默认占 25% ,最大允许占 50% ,可以根据读写业务量来
进行调整。参数 innodb_change_buffer_max_size;

3> 自适应哈希索引(AHI)

动态优化:用于优化对Buffer Pool数据查询,自动为高频访问的B+树索引页建立哈希索引,将查询复杂度从O(log n)降至O(1)

分区设计:默认分为8个分区,减少锁争用,提升并发

4> 重做日志缓冲(Log Buffer)

事务持久性:事务提交前先写Redo Log到Log Buffer,再根据innodb_flush_log_at_trx_commit配置刷盘。

innodb_flush_log_at_trx_commit

  • =1(默认):事务提交时立即刷盘 Redo Log,保证持久性,但性能较低。

  • =0:每秒刷盘,可能丢失 1 秒内的提交数据。

  • =2:写入 OS 缓存,不强制刷盘,依赖操作系统刷盘策略(仍可能丢失数据)。

2.2 磁盘结构

1> 表空间(Tablespace)

  • 系统表空间:存储元数据、Undo Log、Doublewrite Buffer等。

  • 独立表空间(.ibd文件):每张表单独存储数据和索引,支持更灵活的备份与管理。

2>  数据页与B+树索引

  • 页结构:每页16KB,包含文件头、页头、用户记录、空闲空间等,通过双向链表连接相邻页。

  • B+树索引

    • 聚集索引:数据按主键排序存储,叶子节点直接包含行数据。

    • 辅助索引:叶子节点存储主键值,需回表查询

3> 日志与恢复

  • Redo Log:记录物理修改,用于崩溃恢复。采用循环写入模式,配合检查点(Checkpoint)机制减少恢复时间。

innodb_log_file_size 和 innodb_log_files_in_group
控制 Redo Log 文件的大小和数量,需平衡写入性能与恢复时间。

  • Undo Log:记录事务前的数据版本,支持回滚与MVCC(多版本并发控制)。Undo Log 的修改也会被 Redo Log 记录,确保崩溃时能恢复 Undo Log。

  • Doublewrite Buffer:解决因部分页写入(Partial Page Write)导致的数据页损坏(如写入 16KB 页时崩溃,只写入了一半)。

工作原理

  1. 脏页刷盘前,先写入双写缓冲区的连续磁盘区域。

  2. 再从双写缓冲区复制到数据文件的实际位置。

  3. 崩溃恢复时,若数据页损坏,可从双写缓冲区恢复完整页。

3、日志先行策略

InnoDB 的 Write-Ahead Logging (WAL,日志先行) 策略是其保证数据持久性和崩溃恢复能力的核心机制。通过 WAL,InnoDB 在数据修改写入磁盘之前,先记录相关操作的日志,确保即使在系统崩溃时,也能通过日志恢复数据的一致性。

3.1 核心思想

“先写日志,后写数据”

在修改数据页(如插入、更新、删除)时,InnoDB 不会立即将修改后的数据页写入磁盘,而是先将这些操作以日志的形式记录到 Redo Log(重做日志) 中。只有在 Redo Log 持久化到磁盘后,事务才被视为提交成功。

3.2 关键组件与流程

(1) Redo Log(重做日志)

  • 物理日志:记录的是对数据页的物理修改(如“将表空间 X 的页 Y 偏移 Z 处的值从 A 改为 B”),而不是逻辑操作(如 SQL 语句)。

  • 循环写入:Redo Log 由多个固定大小的文件组成(默认 ib_logfile0 和 ib_logfile1),以循环方式覆盖写入。

  • 持久化保证:事务提交时,必须确保其对应的 Redo Log 写入磁盘(通过 fsync 系统调用强制刷盘),之后事务才能返回成功。

(2) 数据页的写入

  • 脏页(Dirty Page):被修改但尚未写入磁盘的数据页称为脏页。

  • 异步刷盘:InnoDB 的后台线程(如 Page Cleaner)会定期将脏页刷新到磁盘,与事务提交解耦,避免频繁的随机 I/O。

(3) Checkpoint(检查点)

  • 标记已持久化的位置:Checkpoint 记录了当前哪些 Redo Log 对应的修改已经刷入磁盘数据页。

  • 减少恢复时间:崩溃恢复时,只需从 Checkpoint 对应的 Redo Log 位置开始重放,无需处理全部日志。

3.3 数据安全保证

3.3.1 崩溃恢复
  • 场景:若事务提交后系统崩溃,但脏页尚未刷盘,此时磁盘上的数据可能不完整。

  • 恢复过程

    1. 重启时,InnoDB 通过 Redo Log 重放最后一次 Checkpoint 之后的所有日志。

    2. 将未刷盘的脏页修改重新应用到数据页,确保数据的一致性。

    3. 最后通过 Undo Log 回滚未提交的事务。

3.3.2 持久性保障
  • 事务提交的原子性:事务提交时,Redo Log 必须落盘,确保即使后续脏页刷盘失败,仍能通过日志恢复数据。

  • 避免部分写(Partial Write):数据页写入可能因崩溃中断,但 Redo Log 记录了完整操作,可修复损坏的页。

相关文章:

MySQL基础原理

目录 一、MySQL架构 1、四层架构 2、MySQL运行机制 二、MySQL存储引擎 1、不同存储引擎对比 2、InnoDB存储结构 2.1 内存结构 2.2 磁盘结构 3、日志先行策略 3.1 核心思想 3.2 关键组件与流程 3.3 数据安全保证 3.3.1 崩溃恢复 3.3.2 持久性保障 一、MySQL架构 …...

Python刷题练习

文章目录 1.寻找相同字串2.密钥格式化3.五键键盘的输出4.单词重量5.输出指定字母在字符串的中的索引6.污染水域7.九宫格按键输入8.任务最优调度9.高效的任务规划 1.寻找相同字串 题目描述: 给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输…...

基于GPUGEEK 平台进行深度学习

一、平台简介 GPUGEEK 是一个专注于提供 GPU 算力租赁服务的平台,在人工智能与深度学习领域为用户搭建起便捷的算力桥梁。它整合了丰富多样的 GPU 资源,涵盖 RTX - 4090、RTX - 3090、A100 - PCIE 等多种型号,满足不同用户在模型训练、数据处…...

基于Matlab的非线性Newmark法用于计算结构动力响应

基于Matlab的非线性Newmark法用于计算结构动力响应,主要针对材料非线性或几何非线性问题。 ​1. Newmark法基本原理​ Newmark法是一种隐式时间积分方法,通过预估-校正步骤更新位移、速度和加速度: ​预测步​: un1​un​Δtvn​…...

Oracle — PL-SQL

介绍 Oracle PL/SQL是专为Oracle数据库设计的过程化编程语言,深度融合SQL语句与结构化编程逻辑,旨在高效处理复杂数据操作与业务规则。其核心特征为“块结构”,程序由声明、执行、异常处理三部分组成,支持模块化开发,显…...

第七节第二部分:接口的综合案例

案例分析 代码: Student类 package com.Interface_Demo;public class Student {private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name name;this.sex sex;this.scor…...

【AI古风美学渲染】:淡雅光影中的细腻呈现

“顶作AI”作为国内首个深度融合中文语义的生成式AI平台,以近百亿级参数的Lens跨模态模型为核心,开创了“自然语言即生产力”的创作模式。该平台突破传统工具对专业术语的依赖,用户仅需输入如“水墨风格的山间庭院,晨雾中若隐若现…...

JVM学习专题(二)内存模型深度剖析

目录 1.JVM结构体系 ​编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧: 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器: 3.方法区 ​4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…...

Prometheus 的介绍与部署(入门)

一、什么是Prometheus; 1.介绍 Prometheus 是一个功能强大的监控工具,适用于各种环境。通过简单的安装和配置,可以快速实现对系统和服务的监控。无论是单机环境、容器化环境还是 Kubernetes 集群,Prometheus 都能提供灵活…...

JavaSwing之-JDialog

JavaSwing之-JDialog JDialog 是 Java Swing 中用于创建对话框窗口的容器类,继承自 Dialog 类(AWT),常用于显示临时信息、获取用户输入或执行模态操作。它是 javax.swing.JDialog 包中的类。 与 JFrame 不同的是,JDia…...

配置Nginx解决http host头攻击漏洞【详细步骤】

前言 大概内容: 安全系统渗透测试出host头攻击漏洞,下面是解决步骤,本人已测过无问题。 server_name aaabbb.com; if ($http_Host !~* ^127.0.0.1|aaabbb.com|localhost$){return 403;}...

如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?

一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...

LeetCode 热题 100 35.搜索插入位置

目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: Java代码: 题目: 题目描述: 题目链接: 35. 搜索插入位置 - 力扣&…...

电流检测放大器的优质选择XBLW-INA180/INA181

前言: 在当前复杂的国际贸易环境下,关税的增加使得电子元器件的采购成本不断攀升,电子制造企业面临着巨大的成本压力。为了有效应对这一挑战,实现国产化替代已成为众多企业降低生产成本、保障供应链稳定的关键战略。对此芯伯乐推出…...

序列化和反序列化:从理论到实践的全方位指南

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

Leetcode (力扣)做题记录 hot100(62,64,287,108)

力扣第62题&#xff1a;不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int uniquePaths(int m, int n) {int[][] array new int[m][n];for(int i 0;i<n;i){array[0][i] 1;}for(int i 0;i<m;i){array[i][0] 1;}for(int i …...

【Linux】shell内置命令fg,bg和jobs

​Shell 内置命令​​ fg&#xff08;foreground 的缩写&#xff09;。它用于将​​后台挂起的任务恢复到前台运行​​。 例如&#xff1a; 假设你运行了一个耗时的 SVN 操作&#xff08;如 svn update 或 svn checkout&#xff09;。按下 CtrlZ 将该进程挂起到后台。输入 fg…...

鸿蒙OSUniApp 制作动态加载的瀑布流布局#三方框架 #Uniapp

使用 UniApp 制作动态加载的瀑布流布局 前言 最近在开发一个小程序项目时&#xff0c;遇到了需要实现瀑布流布局的需求。众所周知&#xff0c;瀑布流布局在展示不规则尺寸内容&#xff08;如图片、商品卡片等&#xff09;时非常美观和实用。但在实际开发过程中&#xff0c;我…...

通用软件项目技术报告 - 导读II

现在,我们正式进入报告的第三个主要领域:3. 领域三:核心业务逻辑与算法实现。 连接: 我们已经讨论了如何存储数据(领域一)和如何设计 API 让外部或内部服务可以访问这些数据或触发操作(领域二)。现在,我们将深入应用程序的“心脏”——实际执行业务规则、进行计算和(…...

新能源汽车三电质量护盾:蓝光三维扫描技术显身手

在绿色低碳的潮流下&#xff0c;新能源汽车行业快速发展&#xff0c;车企们纷纷加速电气化转型。由于电动汽车动力系统构造与内燃机车辆的构造有很大不同&#xff0c;制造商及其供应商必须加快工程研发设计及生产&#xff0c;而这对质量保证过程提出了新的挑战。 对于新能源汽…...

针对已训练好的YOLOv8模型的优化策略

以下是针对已训练好的YOLOv8模型的优化策略&#xff0c;结合模型微调、结构改进、训练策略调整等方法&#xff0c;可进一步提升检测性能或适应特定场景需求&#xff1a; 一、超参数调优 学习率动态调整 初始学习率&#xff08;lr0&#xff09;&#xff1a;若模型收敛后仍有优化…...

AI 产业化浪潮:从生成智能到星载计算,中国如何重塑全球竞争格局

2025 年的科技版图上&#xff0c;人工智能正经历着从技术奇点到产业爆点的历史性跨越。当生成式 AI 突破实验室围墙走进千行百业&#xff0c;当智能体开始在数字世界自主决策&#xff0c;当卫星搭载的大模型在太空展开计算&#xff0c;一场由技术创新驱动的产业革命正在重塑全球…...

Python如何解决中文乱码

Python文件头部声明 # -*- coding: utf-8 -*- # 必须放在文件第一行或第二行中文字符串定义方式 # Python 3 chinese_str "中文" # 默认就是Unicode# Python 2 chinese_str u"中文" # 必须加u前缀字符串编码转换黄金法则 # 解码&#xff1a;字节串 …...

android studio导入项目

如果 gradle-8.0-bin.zip 没有下载成功 可以点击进入这个网站&#xff1a;https://services.gradle.org/distributions/ 找到和自己本版相同的gradle-8.0-bin.zip文件找到自己版本进行下载; 如果下载依赖失败, 可以手动下载依赖编译过程中的jar https://repo.maven.apache.org/…...

Android Studio Meerkat与Gradle构建工具升级实战指南

简介 Android Studio Meerkat和Gradle构建工具的升级将带来显著的性能提升和开发体验优化。在Android生态快速演进的2025年,开发者亟需掌握这些新特性以提升工作效率。本指南将从零开始,详细讲解如何升级Android Studio和Gradle构建工具,配置新特性,并提供实际应用场景的代…...

TCP/IP参考模型详解:从理论架构到实战应用

一、参考模型基础概念与分类 计算机网络参考模型是为解决网络通信标准化问题而设计的逻辑框架。在众多模型中&#xff0c;TCP/IP参考模型以其高实用性和广泛应用&#xff0c;成为现代网络架构的基石。该模型采用分层设计思想&#xff0c;将复杂的网络通信功能划分为多个层次&am…...

【Linux网络】网络层

网络层 在复杂的网络环境中确定一个合适的路径 IP 协议 IPV4 点分十进制[0,255].[0,255].[0,255].[0,255]IPV6 IP地址目标网格目标主机 基本概念 主机:配有IP地址,但是不进行路由控制的设备;路由器:即配有IP地址,又能进行路由控制;节点:主机和路由器的统称。 两个问题 路…...

FastAPI + OpenAI 模型 的 GitHub 项目结构模板

FastAPI OpenAI 模型 的 GitHub 项目结构模板&#xff0c;适合用作大模型&#xff08;如 GPT-4&#xff09; API 服务的基础框架。该模板包括了基本的项目结构、配置、文档以及与 OpenAI API 的交互方式。 项目结构 fastapi-openai-api/ ├── app/ │ ├── __init__.p…...

基于EFISH-SCB-RK3576/SAIL-RK3576的无人快递柜控制器技术方案

国产化替代J1900的智能化升级方案 一、硬件架构设计‌ ‌多模态感知模块‌ ‌智能识别单元‌&#xff1a; ‌双MIPI-CSI接口‌接入4K摄像头&#xff0c;NPU加速包裹条码识别&#xff08;速度>5件/秒&#xff0c;准确率>99.99%&#xff09;&#xff0c;支持破损检测&…...

Centos 上安装Klish(clish)的编译和测试总结

1&#xff0c;介绍 clish是一个类思科命令行补全与执行程序&#xff0c;它可以帮助程序员在nix操作系统上实现功能导引、命令补全、命令执行的程序。支持&#xff1f;&#xff0c;help, Tab按键。本文基于klish-2.2.0介绍编译和测试。 2&#xff0c;klish的编译 需要安装的库&…...

Android学习总结之Glide自定义三级缓存(面试篇)

一、三级缓存核心原理与设计 问题 1&#xff1a;为什么需要三级缓存&#xff1f;各层缓存的核心作用是什么&#xff1f; 回答核心 内存缓存&#xff1a;毫秒级快速响应&#xff0c;存储近期浏览的图片&#xff08;如滑动列表来回切换的图片&#xff09;&#xff0c;通过 LRU…...

管理Oracle Data Guard的最佳实践

Oracle Data Guard的中文名字叫数据卫士&#xff0c;顾名思义&#xff0c;它是生产库的一道保障。所以管理Data Guard是DBA的一项重要工作之一&#xff0c;管理Data Guard时主要有以下几个注意点需要引起重视。 备份库的归档日志积压 一般情况下&#xff0c;生产库的归档日志是…...

iOS WebView和WKWebView怎么调试?

iOS WebView调试 本教程将指导您如何使用WebDebugX调试iOS应用中的WebView内容&#xff0c;包括WKWebView和UIWebView。通过本教程&#xff0c;您将学习如何检查WebView中的HTML、CSS和JavaScript&#xff0c;以及如何解决常见的WebView调试问题。 准备工作 在开始调试iOS W…...

笔记本电脑打开网页很慢,一查ip地址网段不对怎么处理

我有一个笔记本&#xff0c;在家里连WIFI后获取到的ip地址网段不对&#xff0c;那么常规做法是手动去配置个静态IP和DNS&#xff0c;要知道笔记本IP地址默认采用的是DHCP&#xff0c;也就是动态获取ip地址。如果手动设置静态IP&#xff0c;也就是固定IP的话&#xff0c;你换个场…...

【更新】全国省市县-公开手机基站数据集(2006-2025.3)

手机基站是现代通信网络中的重要组成部分&#xff0c;它们为广泛的通信服务提供基础设施。随着数字化进程的不断推进&#xff0c;手机基站的建设与布局对优化网络质量和提升通信服务水平起着至关重要的作用&#xff0c;本分享数据可帮助分析移动通信网络的发展和优化。本次数据…...

iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)

iOS视频编码详细步骤流程 1. 视频采集阶段 视频采集所使用的代码和之前的相同&#xff0c;所以不再过多进行赘述 初始化配置&#xff1a; 通过VideoCaptureConfig设置分辨率1920x1080、帧率30fps、像素格式kCVPixelFormatType_420YpCbCr8BiPlanarFullRange设置摄像头位置&am…...

行项目违反范围截止值

把允许负值打钩就可以&#xff0c;如果没有此字段&#xff0c;按照下面截图把屏幕格式放字段出来&#xff1b;字段放出来以后如果是灰色的话&#xff0c;就用SE16N调试模式修改字段值&#xff1b;...

Linux wlan 单频段 dual wifi创建

环境基础 TP LINK WN722N V1网卡linux 主机 查看设备是否支持双ap managed&#xff1a;客户端模式&#xff08;连接路由器/AP&#xff09;AP&#xff1a;接入点模式&#xff08;创建热点&#xff09;AP/VLAN&#xff1a;支持带VLAN标签的虚拟AP{ AP, mesh point, P2P-GO } &l…...

STC32G12K12实战:串口通信

STC32G12K128芯片写一个按键通过串口1发送字符串的程序。首先&#xff0c;确认芯片的串口1配置。STC32G系列通常使用UART1&#xff0c;相关的寄存器是P_SW1来选择引脚。默认情况下&#xff0c;UART1的TX是P3.1。 接下来是设置定时器作为波特率发生器。通常用定时器2&#xff0c…...

unity 鼠标更换指定图标

1.准备两张图 要求图片导入设置如下 将 Texture Type 改为 Cursor 确保 Read/Write Enabled 已勾选 取消勾选 Generate Mip Maps 将 Filter Mode 设为 Point (保持清晰边缘) 将 Compression 设为 None (无压缩) 2.创建脚本&#xff0c;把脚本挂到场景中 &#xff0c;该…...

会话管理中的cookie,以及浏览器操作cookie,在express中设置,删除,和获取cookie

会话管理中的 Cookie以及在浏览器和 Express 中操作 Cookie&#xff1a; &#x1f36a; 一、Cookie 在会话管理中的作用 ✅ Cookie 的定义&#xff1a; Cookie 是服务器发送到浏览器并保存在本地的小段文本数据&#xff0c;浏览器会在之后的请求中将这些数据回传给服务器。 …...

Mac的web服务器

最近用了个人觉得比较好用的集成环境。Flyenv - FlyEnv | 一体化全栈环境管理工具. 支持macOS / Windows / Linux 链接放在这了。 mac上安装&#xff1a; brew install flyenv 等着安装成功就好了 给个图。ollama也有...

数据可视化大屏——南方草牧商品交易所

代码综述 整体结构与用途 这是一段用于构建网页的 HTML 代码&#xff0c;结合引入的 JavaScript 和 CSS 文件&#xff0c;初步推测该网页是南方草牧商品交易所的相关页面&#xff0c;主要展示了与草牧商品交易相关的各类数据&#xff0c;包括产品挂牌数、成交量、会员信息等&…...

AIGC与数字媒体实验室解决方案分享

第1部分 概述 1.1 建设目标 1.深度融合AIGC技术&#xff0c;培养能够驾驭新质生产力的数字媒体人才 通过引入前沿的AIGC技术&#xff0c;确保学生能够接触到最先进的人工智能应用。教学内容理论和实践结合&#xff0c;让学生在实际操作中熟练掌握AIGC工具&#xff0c;生成高…...

Qwen3模型架构、训练方法梳理

qwen3炼丹真是全是技巧&#xff0c;下面来看看&#xff0c;仅供参考。 https://huggingface.co/Qwen https://modelscope.cn/organization/qwen https://github.com/QwenLM/Qwen3 模型架构 Dense 模型结构改进&#xff1a; GQA、SwiGLU、RoPE、RMSNorm with pre-normalization…...

MySQL 学习(九)bin log 与 redo log 的区别有哪些,为什么快速恢复使用 redo log 而不用 bin log?

目录 一、bin log 与 redo log 的区别1&#xff09;实现方式不同&#xff1a;2&#xff09;日志内容不同&#xff1a;3&#xff09;记录方式不同&#xff1a;4&#xff09;使用场合不同&#xff1a; 二、为什么快速恢复使用 redo log 而不用 bin log&#xff1f; 面试题&#x…...

【消息队列】RabbitMQ基本认识

目录 一、基本概念 1. 生产者&#xff08;Producer&#xff09; 2. 消费者&#xff08;Consumer&#xff09; 3. 队列&#xff08;Queue&#xff09; 4. 交换器&#xff08;Exchange&#xff09; 5. 绑定&#xff08;Binding&#xff09; 6. 路由键&#xff08;Routing …...

RabbitMQ 快速上手:安装配置与 HelloWorld 实践(二)

四、RabbitMQ 配置 4.1 用户及权限管理 在 RabbitMQ 中&#xff0c;用户管理是保障系统安全和正常运行的重要环节。通过合理的用户及权限设置&#xff0c;可以确保不同的应用或服务在使用 RabbitMQ 时&#xff0c;只能访问其被授权的资源&#xff0c;避免非法操作和数据泄露。…...

蓝桥杯 17. 修改数组

修改数组 原题目链接 题目描述 给定一个长度为 N 的数组 A [A1, A2, …, AN]&#xff0c;数组中可能包含重复的整数。 现在小明要按以下方法将其修改为没有重复整数的数组&#xff1a; 小明会依次修改 A2, A3, …, AN。 当修改 Ai 时&#xff0c;小明会检查 Ai 是否在 A…...

Redis内存淘汰策略和过期键删除策略有哪些?

Redis 提供 8 种内存淘汰策略&#xff0c;以下是详细解析及场景建议&#xff1a; 一、核心策略解析 noeviction (默认策略) 机制&#xff1a;内存满时拒绝新写入操作&#xff0c;返回错误优势&#xff1a;绝对数据安全场景&#xff1a;金融交易系统、医疗数据存储 allkeys-lr…...