MySQL原理:逻辑架构
目的:了解 SQL执行流程 以及 MySQL 内部架构,每个零件具体负责做什么
- 理解整体架构
- 分别有什么模块
- 每个模块具体做什么
目录
1 服务器处理客户端请求
1.1 MySQL 服务器端逻辑架构说明
2 Connectors
3 第一层:连接层
3.1 数据库连接池(Connection Pool)
4 第二层:服务层
5 第三层:存储引擎层
6 存储层 — 文件系统(不属于 MySQL 架构)
6.1 日志模块
6.2 数据模块(数据的文件存储格式)
1.7 架构总结
巩固知识
1 服务器处理客户端请求
1.1 MySQL 服务器端逻辑架构说明
2 Connectors
Connectors,指的是不同语言中与SQL的交互。MySQL首先是一个网络程序,在TCP之上定义了自己的应用层协议。所以要使用MYSQL,我们可以编写代码,跟MySQLServer建立TCP连接,之后按照其定义好的协议进行交互或者比较方便的办法是调用SDK,比如NativeCAP1JDBC、PHP等各语言MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。
MySQL Server结构可以分为如下的三层:连接层/服务层/引擎层
不包括物理磁盘上文件/也不包括文件系统
3 第一层:连接层
功能:建立 TCP 连接
经过三次握手建立连接成功后,MySQL服务器对TCP 传输过来的账号密码做身份认证&权限获取。
- 用户名或密码不对,会收到一个Access denied for user错误,客户端程序结束执行
- 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖于此时读到的权限
3.1 数据库连接池(Connection Pool)
一个系统只会和MySQL服务器建立一个连接吗?只能有一个系统和MySQL服务器建立连接吗?
当然不是,多个系统都可以和MySQL服务器建立连接,每个系统建立的连接肯定不止一个。
为了解决TCP无限创建与TCP频繁创建销毁带来的资源耗尽、性能下降问题。MySQL服务器里有专门的TCP连接池 限制连接数。采用 长连接模式 复用TCP连接,来解决上述问题。
TCP 连接收到请求后,必须要分配给一个线程专门与这个客户端的交互。所以还会有个线程池,去走后面的流程,每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。
连接池的最大线程数可以通过参数max-connections
来控制,如果到来的客户端连接超出该值时,新到来的连接都会被拒绝,关于最大连接数的一些命令主要有两条:
show variables like '%max_connections%'
;:查询目前DB的最大连接数。set GLOBAL max_connections = 200;
:修改数据库的最大连接数为指定值。
对于不同的机器配置,可以适当的调整连接池的最大连接数大小,以此可以在一定程度上提升数据库的性能。除了可以查询最大连接数外,MySQL本身还会对客户端的连接数进行统计,对于这点可以通过命令show status like "Threads%";
查询:
所以连接管理的职责是负责认证、管理连接、获取权限信息。
4 第二层:服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成 缓存的查询 ,SQL的 分析和优化 及部分 内置函数的执行 。所有 跨存储引擎的功能 也在这一层实现,如过程、函数等。
在该层,服务器会 解析查询 并创建相应的内部 解析树 ,并对其完成相应的 优化 :如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作。
如果是SELECT语句,服务器还会 查询内部的缓存 。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。
- SQL Interface:SQL 接口
-
- 接收用户的SQL命令,并且返回用户需要查询的结果。比如SELECT.FROM就是调用SQLInterface。
- MySQL支持DML(数据操作语言)、DDL(数据定义语言)、存储过程、视图、触发器、自定义函数等多种SQL语言接口
- Parser:解析器
-
- 在解析器中对 SQL 语句进行语法分析、语义分析。将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的,如果在分解构成中遇到错误,那么就说明这个SQL语句是不合理的。
- 在SQL命令传递到解析器的时候会被解析器验证和解析,并为其创建 语法树 ,并根据数据字典丰富查询语法树,会验证该客户是否具有执行该查询的权限,创建好语法树后,MySQL还会对SQI查询进行语法上的优化,进行查询重写。
- Optimizer: 查询优化器
-
- SQL语句在语法解析之后、查询之前会使用查询优化器确定 SQL语句的执行路径,生成一个 执行计划 。
- 这个执行计划表明应该 使用哪些索引 进行查询(全表检索还是使用索引检索),表之间的连接顺序如何最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。
- 它使用“选取-投影-连接”策略进行查询。例如:
SELECT id,name FROM student WHERE gender ='女';
这个SELECT查询先根据WHERE语句进行 选取 ,而不是将表全部查询出来以后再进行gender 过滤。
这个SELECT查询先根据id和name进行属性 投影 ,而不是将属性全部取出以后再进行过滤,将这两个查询条件 连接 起来生成最终查询结果。
- Caches& Buffers: 查询缓存组件
-
- MySQL内部维持着一些cache和Bufer,比如Query cache用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行査询解析、优化和执行的整个过程了,直接将结果反馈给客户端。
- 这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。
- 这个查询缓存可以在 不同客户端之间共享 。
- 从MySQL5.7.20开始,不推荐使用查询缓存,并在 MySQL8.0 中删除 (命中率很低)。
5 第三层:存储引擎层
存储引擎也可以理解成MySQL
最重要的一层,在前面的服务层中,聚集了MySQL
所有的核心逻辑操作,而引擎层则负责具体的数据操作以及执行工作。
存储引擎是MySQL
数据库中与磁盘文件打交道的子系统,不同的引擎底层访问文件的机制也存在些许细微差异,引擎也不仅仅只负责数据的管理,也会负责库表管理、索引管理等,MySQL
中所有与磁盘打交道的工作,最终都会交给存储引擎来完成。
MySQL
目前有非常多的存储引擎可选择,其中最为常用的则是InnoDB
与MyISAM
引擎,可以通过show variables like '%storage_engine%';
命令来查看当前所使用的引擎。其他引擎如下:
Oracle、SQLServer
等数据库的实现只有一个存储引擎,因为它们是闭源的,所以仅有官方自己提供的一种引擎。
和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用,主要体现在存储引擎的架构上,插件式的存储引擎 架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的无求和实际需要选择合适的存储引擎。 同时开源的 MySQL 还允许 开发人员设置自己的存储引擎。
这种高效的模块化架构为那些希望专门针对特定应用程序需求(例如数据仓库、事务处理或高可用性情况)的人提供了巨大的好处,同时享受使用一组独立于任何接口和服务的优势存储引擎。
插件式存储引擎层(storage Engines),真正的负责了MySQL中数据的存储和提取,对物理服务器级别维护的底层数据执行操作,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。
6 存储层 — 文件系统(不属于 MySQL 架构)
这一层则是MySQL数据库的基础,本质上就是基于机器物理磁盘的一个文件系统,其中包含了配置文件、库表结构文件、数据文件、索引文件、日志文件等各类MySQL运行时所需的文件,这一层的功能比较简单,也就是与上层的存储引擎做交互,负责数据的最终存储与持久化工作。
主要可分为两个模块:1. 日志模块 2. 数据模块
所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统 上,以 文件 的方式存在的,并完成与存储引擎的交豆。当然有些存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备,但现代文件系统的实现使得这样做没有必要了。在文件系统之下,可以使用本地磁盘,可以使用DAS、NAS、SAN等各种存储系统。
6.1 日志模块
在MySQL
中主要存在七种常用的日志类型,如下:
- ①
binlog
二进制日志,主要记录MySQL
数据库的所有写操作(增删改)。 - ②
redo-log
重做/重写日志,MySQL
崩溃时,对于未落盘的操作会记录在这里面,用于重启时重新落盘(InnoDB
专有的)。 - ③
undo-logs
撤销/回滚日志:记录事务开始前[修改数据]的备份,用于回滚事务。 - ④
error-log
:错误日志:记录MySQL
启动、运行、停止时的错误信息。 - ⑤
general-log
常规日志,主要记录MySQL
收到的每一个查询或SQL
命令。 - ⑥
slow-log
:慢查询日志,主要记录执行时间较长的SQL
。 - ⑦
relay-log
:中继日志,主要用于主从复制做数据拷贝。
上述列出了MySQL
中较为常见的七种日志,但实际上还存在很多其他类型的日志,不过一般对调优、排查问题、数据恢复/迁移没太大帮助,用的较少,因此不再列出。
6.2 数据模块(数据的文件存储格式)
MySQL
的所有数据最终都会落盘(写入到磁盘),而不同的数据在磁盘空间中,存储的格式也并不相同,因此再列举出一些MySQL
中常见的数据文件类型:
db.opt
文件:主要记录当前数据库使用的字符集和验证规则等信息。.frm
文件:存储表结构的元数据信息文件,每张表都会有一个这样的文件。.MYD
文件:用于存储表中所有数据的文件(MyISAM
引擎独有的)。.MYI
文件:用于存储表中索引信息的文件(MyISAM
引擎独有的)。.ibd
文件:用于存储表数据和索引信息的文件(InnoDB
引擎独有的)。.ibdata
文件:用于存储共享表空间的数据和索引的文件(InnoDB
引擎独有)。.ibdata1
文件:这个主要是用于存储MySQL
系统(自带)表数据及结构的文件。.ib_logfile0/.ib_logfile1
文件:用于故障数据恢复时的日志文件。.cnf/.ini
:MySQL
的配置文件,Windows
下是.ini
,其他系统大多为.cnf
。
1.7 架构总结
- 连接层: 客户端和服务器端建立连接,客户端发送 SQL至服务器端;
- SQL层(服务层): 对SQL语句进行查询处理;与数据库文件的存储方式无关;
- 存储引擎层: 与数据库文件打交道,负责数据的存储和读取。
巩固知识
- 画出整体架构,分别有什么模块
- 每个模块具体做什么
- SQL 指令执行流程
相关文章:
MySQL原理:逻辑架构
目的:了解 SQL执行流程 以及 MySQL 内部架构,每个零件具体负责做什么 理解整体架构分别有什么模块每个模块具体做什么 目录 1 服务器处理客户端请求 1.1 MySQL 服务器端逻辑架构说明 2 Connectors 3 第一层:连接层 3.1 数据库连接池(Conn…...
提升模型性能:数据增强与调优实战
一、为什么需要数据增强? 数据增强通过对训练图像进行随机变换,能够有效: 增加数据多样性,防止过拟合提升模型对不同视角、光照条件的鲁棒性在数据量不足时显著提升模型性能 二、MNIST手写数字识别实战 1. 加载数据…...
Emacs 折腾日记(十八)——改变Emacs的样貌
截止到上一篇文章为止,之前教程 的内容都看完了,虽然它的后记部分提供了一些后续进阶的内容需要我们自己读手册。但是我不太想继续在elisp上死磕了。看着自己学了那么久的elisp,但是自己的emacs仍然没有半点改变,这个时候各位读者…...
VNA操作使用学习-14 再测晶振特性
再测一下4Mhz晶振,看看特性曲线,熟悉一下vna使用。 s11模式,找遍了各种format都无法显示,只有这一种(s11,Resistance)稍微显示出一个谐振,但是只有一个点。 s21模式 这是201p&#…...
CentOS7 离线下载安装 GitLab CE
依赖下载 https://vault.centos.org/7.9.2009/os/x86_64/Packages/policycoreutils-python-2.5-34.el7.x86_64.rpm 依赖安装 rpm -ivh policycoreutils-python-2.5-34.el7.x86_64.rpm 查看是否安装依赖 rpm -qa | grep policycoreutils-pythongitlab下载 https://packag…...
LeetCode 热题 100_跳跃游戏 II(79_45_中等_C++)(贪心算法)
LeetCode 热题 100_跳跃游戏 II(79_45) 题目描述:输入输出样例:题解:解题思路:思路一(贪心选择): 代码实现代码实现(思路一(贪心算法)…...
《Linux系统编程篇》Linux Socket 网络编程01 API介绍(Linux 进程间通信(IPC))——基础篇
文章目录 引言1. **创建Socket**2. **绑定Socket**3. **监听Socket**4. **接受客户端连接**5. **连接服务器**6. **发送数据**7. **接收数据**8. **发送数据(UDP)**9. **接收数据(UDP)**10. **关闭Socket**11. **设置/获取Socket选…...
系统思考—啤酒游戏经营决策沙盘模拟
再次感谢文华学院的邀请,为经纬集团管理层带来 《啤酒游戏经营决策沙盘》! 很多朋友问:“最近是不是啤酒游戏上的少了?” 其实,真正的关键不是游戏本身,而是——如何让大家真正看见复杂系统中的隐性结构。 …...
利用设计模式构建事件处理系统
在现代软件开发中,设计模式提供了一种可重用的解决方案来解决常见的设计问题。在这篇博客中,我们将探讨如何利用模板方法模式、责任链模式、建造者模式以及线程安全设计来构建一个灵活且可扩展的事件处理系统。 设计模式及其应用 1. 模板方法模式 应用…...
ThreadLocal 的详细使用指南
一、ThreadLocal 核心原理 ThreadLocal 是 Java 提供的线程绑定机制,为每个线程维护变量的独立副本。其内部通过 ThreadLocalMap 实现,每个线程的 Thread 对象都有一个独立的 ThreadLocalMap,存储以 ThreadLocal 对象为键、线程局部变量为值…...
全员DeepSeek时代,前端能做些什么?
全员DeepSeek时代,前端能做些什么? 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc #mermaid-svg-VNyL95jkz9jEXgUq {font-family:&…...
阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024
阿里云AI搜索产品荣获Elastic Innovation Award 2024,该奖项于近日在新加坡ElasticON 2025的Elastic合作伙伴峰会上颁发,旨在表彰基于Elastic平台开发企业级生成式人工智能(GenAI)应用的顶尖合作伙伴,这些应用有效帮助…...
html5制作2048游戏开发心得与技术分享
2048游戏开发心得与技术分享 这里写目录标题 2048游戏开发心得与技术分享项目概述技术架构1. 核心技术栈2. 项目结构 核心功能实现1. 数据结构设计2. 移动逻辑实现3. 触摸支持 性能优化1. DOM操作优化2. 事件处理优化 开发心得1. 代码组织2. 调试技巧3. 用户体验优化 项目亮点技…...
AI日报 - 2025年3月21日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI成立安全委员会,加速AGI治理框架构建 ▎💼 商业动向 | 微软发布医疗大模型DAX Copilot 3.0,覆盖全球临床场景 ▎📜 政策追踪 | 中国发布…...
MyBatis-Plus:告别手写 SQL 的高效之道
目录 1. MyBatis-plus 简介 2. MyBatis-Plus 快速上手 2.1 项目准备 2.2 导入 MyBatis-Plus 依赖 2.3 配置数据库连接 2.4 配置 MyBatis-Plus 日志打印 3. 使用 MyBatis-Plus 3.1 创建 model 类 3.2 创建 mapper 接口 3.3 MyBatis-Plus 映射机制 3.3.1 TableName &a…...
【AI News | 20250320】每日AI进展
AI Repos 1、servers 该仓库提供详细入门指南,用户可通过简单步骤连接Claude客户端,快速使用所有服务器功能。此项目由Anthropic管理,展示MCP的多样性与扩展性,助力开发者为大语言模型提供安全、可控的工具与数据访问。 2、awe…...
让“树和二叉树”埋在记忆土壤中--性质和概念
Nice to meet your! 目录 树的介绍: 树的创建: 二叉树的概念和结构: 二叉树的存储结构: 树的介绍: 概念和结构: 不知你们是否在现实中看见过分为两个叉的枯树,大概长这样: 那…...
210、【图论】课程表(Python)
题目 思路 这道题本质上是一个拓扑排序。每次先统计每个点的入度个数、然后再统计点与点之间的邻接关系,找到入度为0的点作为起始遍历点。之后每遍历到这个点之后,就把这个点后续的邻接关系边的点入度减去一。当某个点入度为0时,继续被加入其…...
【Linux篇】进程控制
📌 个人主页: 孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 1. 进程创建 1.1 fork函数 在linux中fork函数是非常重要的函数,它从已存在进程中创建一个…...
freeswitch(在呼叫失败的情况下如何播放语⾳提⽰)
亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch⼀般我们在打电话时会听到『您拨的电话正在通话中,请稍后再 拨.』,或『电话⽆应答』之类的提⽰,我们在 FreeSWITCH ⾥也可以这样做。 …...
软考系统架构设计师之计算机组成与体系结构笔记
一、计算机硬件组成 1. 冯诺依曼结构与哈佛结构 冯诺依曼结构:以存储器为中心,指令和数据统一存储,通过总线连接运算器、控制器、输入输出设备。其核心思想是“存储程序控制”,但存在存储器访问瓶颈问题。哈佛结构:指…...
gonet开源游戏服务器环境配置
1.mysql搭建 搜索mysql-server apt安装包名 sudo apt search mysql-server 安装mysql-server sudo apt-get install mysql-server 安装完成后会,启动mysql服务及创建系统服务 查看服务状态 systemctl status mysql.service 使用超级权限登陆mysql sudo mysql 授…...
软件工程之软件验证计划Software Verification Plan
个人主页:云纳星辰怀自在 座右铭:“所谓坚持,就是觉得还有希望!” 本文为基于ISO26262软件验证计划模板,仅供参考。 软件验证计划,包括: 1. 软件需求验证计划 2. 软件架构设计验证计划 3. 软件单…...
大模型详细配置
Transformer结构 目前主力大模型都是基于Transformer的,以下是Transformer的具体架构 它由编码器(Encoder)以及解码器(Decoder)组成,前者主要负责对输入数据进行理解,将每个输入 词元都编码成一个上下文语义相关的表示向量;后者…...
Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取
Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取 一、FireCrawl 项目简介二、主要功能三、FireCrawl应用场景1. 大语言模型训练2. 检索增强生成(RAG):3. 数据驱动的开发项目4. SEO 与内容优化5. 在线服务与工具集成 四、安装…...
产业观察:ASML2025.3.21
一.发展历程 1.1 创业背景 在半导体行业的快速发展背景下,ASML的创业故事拉开了帷幕。1983年, 飞利浦S&I技术总监Georg de Kruyff 与 ASM创始人Arthur del Prado 重启合作讨论,为ASML的创立奠定了基础。双方迅速达成协议,计…...
go语言学习教程推荐,零基础到做项目
一、基础入门阶段 官方教程(免费) • A Tour of Go:交互式入门教程,边学边练 • Go by Example:通过300代码片段学习语法 入门书籍 • 📘《Go语言圣经》中文版(免费在线阅读)&#…...
设计模式 二、创建型设计模式
GoF是 “Gang of Four”(四人帮)的简称,它们是指4位著名的计算机科学家:Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他们合作编写了一本非常著名的关于设计模式的书籍《Design Patterns: Elements of Reusable…...
51c大模型~合集73
我自己的原文哦~ https://blog.51cto.com/whaosoft/12318419 #Emu3 视频、图像、文本,只需基于下一个Token预测:智源Emu3发布,验证多模态模型新范式 OpenAI 前首席科学家、联合创始人 Ilya Sutskever 曾在多个场合表达观点࿱…...
【el-upload】el-upload组件 - list-type=“picture“ 时,文件预览展示优化
目录 问题图el-upload预览组件 PicturePreview效果展示 问题图 el-upload <el-uploadref"upload"multipledragaction"#":auto-upload"false":file-list"fileList"name"files":accept".png,.jpg,.jpeg,.JGP,.JPEG,.…...
STM32F103系列配置中断向量表偏移(Keil/STM32CubeIDE)
需要在flash中添加bootloader的话,需要对flash进行分区,即bootloader区和app区(程序运行区),主要记录在 Keil 平台和 STM32CubeIDE平台 上的中断向量表偏移配置,以偏移 0x2800 为例,即预留10k大小的空间给bootloader …...
Redis常用数据类型和使用常见以及基本操作举例(适合初学者,以医药连锁管理系统为背景)
Redis的常见数据类型,包括String、Hash、List、Set、Zset等,这些数据类型都有各自的特点和适用场景。接下来,将这些数据类型与医药连锁管理系统的业务场景进行匹配。 String类型,适合存储单个值。在医药连锁管理系统中࿰…...
ASL扩展坞方案|Type-c转换器方案|ASL原厂代理商
安格瑞科技代理的ASL主板组件系列包括CS5211、CS5311、CS5232、CS5263、CS621x、CS5523、CS5518等产品; CS5228ANDP to HDMI(4K60HZ)CS5262ANDP (4lanes) to HDMI2.0 4k60Hz VGACS5263ANDP(4lanes) to HDMI2.0 4k60HzCS5363ANDP (4lanes) to HDMI2.0 4k60Hz CS521…...
论文略读(2025.3.18-更新中)
关于可控视频生成 I2V3D: Controllable image-to-video generation with 3D guidance Image to Video工作,能够实现给一张图,输出一个视频,且可以控制相机。动态信息来自于用户手工设计(相机移动,人体骨骼驱动&#x…...
基于SpringBoot的“校园招聘网站”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“校园招聘网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 局部E-R图 系统首页界面 系统注册…...
【Linux进程七】程序地址空间
【Linux进程七】程序地址空间 1.进程的地址空间分布2.类型的本质是偏移量3.什么是进程地址空间4.页表的映射和访问权限字段5.地址空间的作用 1.进程的地址空间分布 堆是向上扩展的,栈是向下扩展的 因为字符常量区和代码区相邻,受到同样的保护,…...
Linux C/C++编程——线程
线程是允许应用程序并发执行多个任务的一种机制,线程参与系统调度。 系统调度的最小单元是线程、而并非进程。 线程包含在进程之中,是进程中的实际运行单位。一个线程指的是进程中一个单一顺序的控制流(或者说是执行路线、执行流)…...
【Spring Boot 中 `@Value` 注解的使用】
文章目录 一、前言二、Value 注解简介三、Value 注解的常见用法1. 读取 application.properties 或 application.yml 配置值(1)配置文件示例(2)Java 代码示例(3)测试输出 2. 使用 Value 设置默认值3. 读取系…...
【CAD二次开发】调试无法进入断点提示无可用源问题(非空心断点)
问题截图:显示无可用源,关闭后F5走完后,启动的调试就中断了 操作是:打开Cad,打开dwg后,执行命令,就出现以上截图问题。 问题来源:通常是由于 AutoCAD 的 纤程模式(Fiber&…...
Ubuntu下Docker部署Misskey:打造你的去中心化社交平台
引言 在信息爆炸的时代,人们对于社交平台的需求日益增长,同时也更加注重数据的隐私和自由。Misskey作为一个开源的去中心化社交平台,为用户提供了一个全新的选择。本文将详细介绍如何在Ubuntu Linux环境下,利用Docker快速部署Mis…...
【Vue3】01-vue3的基础 + ref reactive
首先确保已经有了ES6的基础 本文介绍 vue 的基础使用以及 两种响应数据的方式。 目录 1. 创建一个vue应用程序 2. Vue模块化开发 3. ref 和 reactive 的区别 1. 创建一个vue应用程序 所需的两个文件: https://unpkg.com/vue3/dist/vue.global.js https://un…...
C++实现rabbitmq生产者消费者
RabbitMQ是一个开源的消息队列系统,它实现了高级消息队列协议(AMQP), 特点 可靠性:通过持久化、镜像队列等机制保证消息不丢失,确保消息可靠传递。灵活的路由:提供多种路由方式,如…...
Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成
文件路径models/view_transformers 父类 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函数解析 函数bev_coord_to_feature_coord的功能 将鸟瞰图3D坐标通过多相机(针孔/鱼眼)内外参投影到图像特征平面࿰…...
Rust嵌入式开发环境搭建指南(基于Stm32+Vscode)
Rust嵌入式开发环境搭建指南(基于Stm32+Vscode) 部分目录如下所示: 目录 简介Rust开发环境安装STM32开发工具链安装VSCode环境配置VSCode插件安装调试器配置项目创建与配置常见问题与解决方案简介 本文档旨在指导开发者如何搭建基于Rust语言的STM32嵌入式开发环境。相比传…...
springboot操作redis集群,注意事项
整合redis可查看博文 springboot 整合redis_springboot整合redis csdn-CSDN博客 集群中操作注意事项 1 多键操作失败: 当使用multiGet等需要同时访问多个键的方法时,如果没有使用Hash Tags,这些键可能会被分配到不同的槽中。如果这些槽位于…...
计算机技术系列博客——目录页(持续更新)
1.1 博客目录专栏 1.1.1 博客文章导航 计算机技术系列博客——目录页 1.1.2 网页资源整理 2.1 计算机科学理论 2.2 软件工程技术 2.2.1.1 编程语言 Java Java语言基础 (1) Java基础知识总结01——Java基础篇 (2) Java基础知识总结02——集合框架篇 (3) Java基础知识总结03—…...
@maptalks/gl-layers中的VectorTileLayer的setStyle属性的全部line配置
maptalks/gl-layers中的VectorTileLayer的setStyle属性的全部line配置 关于 maptalks/gl-layers 中 VectorTileLayer 的 setStyle 方法 在 maptalks/gl-layers 库中,VectorTileLayer 提供了一个灵活的方式来设置矢量瓦片图层的样式。通过调用 setStyle 方法…...
sql小记,20250319
ps:基于sqlserver 一、绩效管理系统表设计 1.表设计 Users用户表:包含id,用户名,密码。 AppraisalBases评价(职位基数)表:包含职位id,职位年终奖基数 AppraisalCoeffcients评价系数表:包含类别id, 类别&…...
【亚马逊云科技】大模型选型实战(挑选和测评对比最适合业务的大模型)
文章目录 前言1、实验内容2、手册内容 一、环境准备二、Prompt 实战与模型配置2.1 基于 Amazon Bedrock 对比测试不同模型的逻辑推理效果2.2 基于 Amazon Bedrock 对比测试不同模型知识问答能力2.3 Prompt 实战结果分析 三、基于 Amazon Bedrock Evaluations 进行模型评测与自动…...
Linux 用户与组管理实战:经验分享与最佳实践
在 Linux 系统管理中,用户和组的管理是保障系统安全和资源分配的重要环节。本文将深入介绍如何创建和管理用户与组,包括 UID、GID 的设置,主组与附加组的分配,以及常见问题的排查和解决。本文还结合实际操作经验,总结了…...