每日学习Java之一万个为什么?[MySQL面试篇]
分析SQL语句执行流程中遇到的问题
- 前言
- 1 MySQL是怎么在一台服务器上启动的
- 2 MySQL主库和从库是同时启动保持Alive的吗?
- 3 如果不是主从怎么在启动的时候保证数据一致性
- 4 ACID原则在MySQL上的体现
- 5 数据在MySQL是通过什么DTO实现的
- 6 客户端怎么与MySQL Server建立连接,有哪些建立连接的方式,默认是什么,可以选什么,有哪些应用场景
- 7.SQL组件接受的SQL是什么形式?为什么单一一条SQL不做任何处理就被MySQL认为是一个事务?
- 8.查询后的结果是由哪个组件以什么形式返回?
- 9.解析器是怎么解析的,解析器会调用API吗?
- 10.优化器是怎么优化的?会调用API吗?
- 11.SQL报错机制会在哪些区域出现?以什么形式发给客户端?以什么形式写到哪个日志中?
- 12.执行器本质上是什么?
- 13 MySQL内部有哪些线程?怎么分类?
- 14 MySQL进程包含哪些内容
- 15 执行器会将sql提交给引擎还是调用引擎,又是怎么调用的
- 16 buffer pool区域中的数据页有多少,以什么结构存储,脏页呢?
- 17 buffer pool 中的数据页怎么更新的,淘汰后的数据页由谁清理
- 18 后台线程对脏页刷盘是怎么实现的
- 19 sql语句中加锁在哪个部分实现的
- 20 事务在engine中怎么实现
- 21 MVCC怎么实现
- 22 redolog分为哪几块内容?有什么作用
- 23 binlog呢
- 24 undolog 呢
- 25 数据写磁盘怎么实现的,怎么传输的,怎么保证一致性的
- 26 主从数据一致性会保证内存数据一致吗?
- 27 MySQL断开连接可以从线程和客户端区分吗
- 28 MySQL进程结束会执行哪些持久化操作
前言
面试想要过关斩将,你就必须扪心自问,问得越多问的越细,才能披荆斩棘。盔甲若是漏洞百出,不被戳死才怪。
下列问题为作者提出,回答搜集而来。
由于作者并没有系统化从零开始学习MySQL,所以可能某些非常基础的问题并不了解。
欢迎读者留言比较重要的基础,wink👍
1 MySQL是怎么在一台服务器上启动的
- MySQL通过配置文件:my.cnf my.ini 来指定各种参数,如端口号、数据目录等。
- 初始化数据库:首次启动的时候,MySQL需要初始化系统表(这里指定的是系统表空间吗)
- 启动系统,生成日志
2 MySQL主库和从库是同时启动保持Alive的吗?
为了实现数据同步,通过binlog+并行复制维持数据一致性,主库应该首先启动并正常运行,然后从库再启动并连接到主库。
3 如果不是主从怎么在启动的时候保证数据一致性
- 如果不是主从库,没法保证,可以自己设置一些通信维护。
如果没有同时启动,其实无所谓。 - 保证数据一致性,主从之间首先需要通信,分为三类异步、同步、半同步。由于是主库写日志,等待从库响应。所以主库到底等不等从库是一个影响性能的问题。异步-半同步-同步,一致性会越来越高,期望响应时间越来越长。(那么这里的sql写日志都是事务写进去的吗)
- 一句话概括:主库提交会写binlog,会由一个dump线程监听binlog文件的变更,如果有更新会推送更新时间到从库,从库接收到事件后会拉取数据,有一个IO线程将binlog传过来的数据写到自己的relaylog中,慢慢消化。所以,我们先更新的是事务语句,至于执行则是慢慢来。
- 5.6库级别并行复制:
- 5.7 Group Commit 级别 并行复制
- logical_clock 逻辑时钟复制
- Write Set复制
4 ACID原则在MySQL上的体现
- A:MySQL使用BEGIN /COMMIT /ROLLBACK 来管理事务
- C:通过约束和触发器确保数据库的状态始终符合预期
- I:支持四种隔离级别,读未提交,读已提交,可重复读,串行化,通过锁定机制和MVCC实现
- D:一旦事务提交,数据就会永久保存,即使发生系统崩溃也不会丢失。MySQL使用重做日志 和 双写缓冲区来实现持久性
5 数据在MySQL是通过什么DTO实现的
6 客户端怎么与MySQL Server建立连接,有哪些建立连接的方式,默认是什么,可以选什么,有哪些应用场景
- TCP IP 通过网络地址和端口连接到MySQL服务器,适用于远程连接
- Unix Socket连接:在本地Linux/Unix系统上,可以通过Unix域套接字连接到MySQL服务器。这种方式比TCP IP更快,因为它避免了网络层的开销
jdbc:mysql://database_name?socket=/temp/mysql.sck
-
命名管道:仅适用于win 本地连接
-
共享内存:另一种win特有的连接方法
-
默认使用TCP IP
7.SQL组件接受的SQL是什么形式?为什么单一一条SQL不做任何处理就被MySQL认为是一个事务?
MySQL接收到的SQL是标准的SQL语句,通常以文本的形式发给服务层
在MySQL中,默认情况下,每条单独提交的SQL语句都被视为一个独立的事务。这是因为autocommit模式下,每条语句执行完毕后会自动提交事务。如果autocommit被关闭,需要显式的 使用 BEGIN 和 COMMIT 提交事务
8.查询后的结果是由哪个组件以什么形式返回?
执行器也就是sql线程生成结果集,通过网络协议返回给客户端
- 执行器:执行查询并生成结果集 MYSQL_RES结构
- 网络层:将结果集打包成适当的格式(如二进制或文本),并通过连接通道返回给客户端。
typedef struct st_mysql_res
{
my_ulonglong row_count;
unsigned int field_count,current_field;
MYSQL_FIELD *fields;
MYSQL_DATA *data;
MYSQL_ROWS *data_cursor;
MEM_ROOT field_alloc;
MYSQL_ROW row;
MYSQL_ROW current_row;
unsigned long *lengths;
MYSQL *handle;
my_bool eof;
}MYSQL_REStypedef struct st_mysql_rows
{struct st_mysql_rows *next; //列表的行MYSQL_ROW data;
} MYSQL_ROWS; //mysql的数据的链表节点。可见mysql的结果集是链表结构typedef struct st_mysql_data
{my_ulonglong rows;unsigned int fields;MYSQL_ROWS *data;MEM_ROOT alloc;
} MYSQL_DATA; // 数据集的结构typedef struct st_mysql_field
{char *name; // 列名称 char *table; //如果列是字段,列表char *def; //默认值(由mysql_list_fields设置)enum enum_field_types type; //类型的字段。Se mysql_com。h的类型unsigned int length; //列的宽度unsigned int max_length; //选择集的最大宽度unsigned int flags; //Div标记集unsigned int decimals; //字段中的小数位数
} MYSQL_FIELD; //列信息的结构typedef struct st_used_mem //结构为once_alloc
{ struct st_used_mem *next; //下一个块使用unsigned int left; //记忆留在块unsigned int size; //块的大小
} USED_MEM; //内存结构typedef struct st_mem_root
{USED_MEM *free;USED_MEM *used;USED_MEM *pre_alloc;unsigned int min_malloc;unsigned int block_size;void (*error_handler)(void);
} MEM_ROOT; //内存结构
可以看到MySQL是用C++/C 开发的
9.解析器是怎么解析的,解析器会调用API吗?
-
词法分析:将SQL语句分解为一个个token
-
语法分析:tokens转换语法树
-
语义分析
-
解析器本身并不调用外部API,但他可能会调用内部函数或者模块来完成某些任务,例如:
-
元数据访问:访问系统表或缓存中的元数据,以验证表和列的存在性。
-
权限检查:调用权限管理模块,确保用户有足够的权限执行该操作
10.优化器是怎么优化的?会调用API吗?
- 查询重写:对查询初步重写,以简化查询结构
- 统计信息收集:收集表的统计信息(例如行数、索引选择性等),用于生成最优执行计划。
- 生成候选计划:基于不同的访问路径(如全表扫描、索引扫描),生成多个候选执行计划(生成策略?)
- 选择最佳计划:评估每个候选计划的成本(评估算法?),选择成本最低的计划作为最终执行计划
- 优化器内部统计信息模块:获取表的统计信息(包含什么?)
- 代价模型:计算成本 (理论支持?)
- 访问路径模块:确定可用的访问路径(索引、表扫描等)
11.SQL报错机制会在哪些区域出现?以什么形式发给客户端?以什么形式写到哪个日志中?
报错机制出现的区域:
- 解析阶段:SQL语法错误或未知表/列名
- 优化阶段:无法生成有效的执行计划
- 执行阶段:运行时错误,如违反约束、超时等
- 网络传输阶段:连接断开或其他通信错误
发给客户端的形式:
- 错误代码:一个唯一的数字标识。
- 错误消息:详细的描述信息,帮助理解错误原因。
{"code":1054,"message":"Unknown column 'nonexistent_column'in 'field list'"
}
写入日志的形式:
- 错误日志:记录所有严重的错误和警告,默认位于/var/log/mysql/error.log 或安装目录下的data文件夹中。
- 慢查询日志:记录执行时间超过阈值的查询,默认位于/var/log/mysql/slow-query.log
2025-02-27T11:41:23.123456Z 0 [ERROR] [MY-01054] Unknown column 'nonexistent_column' in 'field list'
12.执行器本质上是什么?
执行器是MySQL查询处理过程中实际执行查询计划的部分。它根据优化器生成的执行计划,调用存储引擎接口来访问和修改数据。
执行器的主要职责:
1.物理操作执行:根据执行计划中的物理操作(如表扫描、索引查找等)执行相应的数据库操作。
2.数据获取与处理:从存储引擎中获取数据,并进行必要的过滤、排序、聚合等操作。
3.结果集生成:将处理后的数据组织成结果集,准备返回给客户端。
执行器的工作流程:
1.初始化执行计划:加载执行计划并准备执行环境。
2.执行物理操作:按顺序执行各个物理操作步骤。
3.返回结果
13 MySQL内部有哪些线程?怎么分类?
1.主线程(Main Thread)
- 职责:负责启动和管理其他的线程
- 实例:mysql进程的主线程
2.连接处理线程(Connection Threads)
- 职责:处理客户端连接请求,每个客户端连接对应一个独立的线程
- 实例:thd线程对象,用于处理每个客户端连接
3.后台线程(Background Threads)
- 职责:执行各种后台任务,如日志刷新、数据页刷盘等。
- 示例:InnoDB缓冲池线程:负责缓冲池管理和脏页刷盘。Binlog Dump线程:监听binlog 发送给从库。Purge线程:负责清理不再需要的undo日志
4.IO线程(I/O Threads)
- 职责:处理与存储设备的IO操作
- 示例:Redo Log线程:负责写入重做日志。 Binlog线程:负责写入二进制日志。
5.事务处理线程(Transaction Handing Threads)
- 职责:管理事务的开始、提交和回滚操作。
- 示例:事务管理线程,负责协调事务的状态。
14 MySQL进程包含哪些内容
MySQL进程(mysqld)包含多个组件和模块,主要分为以下几个部分:
-
1.服务器核心 Server Core
-
- 存储引擎 Strorage Engines
-
3.缓存和缓冲区(Caches and Buffers)
- Buffer Pool:用于缓存数据和索引数据。
- Query Cache:缓存查询结果以提高查询效率(读缓存已被移除)
-
日志系统 (Logging System)
- Binlog:用于主从复制和数据备份,记录所有更改操作。
- Undo Log:用于事务回滚,记录事务的反向操作
- Redo Log:用于崩溃恢复,记录所有未提交的事务
-
网络层(Network Layer)
- 处理客户端连接、数据传输和协议解析。
-
安全管理(Security Management)
- 执行各种后台任务,如日志刷新、数据页刷盘等。
15 执行器会将sql提交给引擎还是调用引擎,又是怎么调用的
执行器会通过调用存储引擎的接口来执行具体的数据库操作
调用方式:
- 接口调用:执行器通过调用存储引擎提供的接口(如InnoDB的API)来执行具体的操作。
- 物理操作执行:根据优化器生成的执行计划,执行器调用相应的存储引擎接口来访问和修改数据。
16 buffer pool区域中的数据页有多少,以什么结构存储,脏页呢?
数据页数量:
- 大小可配置:Buffer Pool的大小可以通过配置文件中的innodb_buffer_pool_size参数设置,默认值通常为系统内存的70%-80%。
- 每页大小:默认情况下,每页大小为16KB。
存储结构:
- LRU链表:Buffer Pool 使用LRU(Least Recently Used)链表来管理数据也。最近使用的页面位于链表前端,较少使用的页面位于链表末端。
- Flush链表:脏页(已修改但尚未写入磁盘的页面)会被放入Flush链表中,等待刷盘
脏页:
- 定义:脏页是指已经被修改但还写回到磁盘的数据页。
- 存储位置:脏页同样存储在Buffer Pool中,并被标记为脏页。
- 管理:脏页通过Flush链表管理,定期或在特定条件下(如内存不足或打到一定阈值)被刷回磁盘。
17 buffer pool 中的数据页怎么更新的,淘汰后的数据页由谁清理
数据页更新:
- 读取当前数据页:当需要访问某个数据页时,如果该页不在Buffer Pool中,则从磁盘加载到Buffer Pool。
- 修改数据页:对数据页进行修改后,将其标记为脏页。
- 写回磁盘:脏页会在适当的时候(如内存不足或达到一定的阈值)通过后台线程写回到磁盘。
淘汰后的数据页清理:
-
LRU链表:当Buffer Pool 满时,使用LRU算法淘汰最近最少使用的页面
-
清理过程:
- 如果被淘汰的页面是干净的(未修改),可以直接丢弃。
- 如果被淘汰的页面是脏页,则必须先将其写回磁盘(通过Flush链表管理)。
18 后台线程对脏页刷盘是怎么实现的
后台线程通过以下几种机制实现脏页的刷盘:
1.定时刷盘:
- InnoDB自动刷新:InnoDB会定期检查脏页的比例,如果超过设定的阈值(如innodb_max_dirty_pages_pct),则触发自动刷新操作。
2.后台线程:
- Page Cleaner线程:负责将脏页写回到磁盘。它会定期检查Flush链表中的脏页,并将这些脏页回到磁盘。
3.事务提交:
- 同步刷盘:在某些情况下(如事务提交),为了保证数据一致性,需要立即刷盘。此时会调用fsync()函数确保数据已经写入磁盘。
4.内存压力:
- 当Buffer Pool内存不足时,会优先淘汰脏页,并将其写回磁盘。
19 sql语句中加锁在哪个部分实现的
SQL语句的加锁操作主要在执行器和存储引擎中实现:
1.解析阶段:
- 解析器解析SQL语句,识别出需要加锁的对象(如表、行等)
2.执行器:
- 执行器根据解析结果,在执行过程中调用存储引擎的加锁接口,对相关对象加锁。
3.存储引擎:
- 存储引擎实现具体的加锁机制。例如,InnoDB支持行级锁(共享锁,排他锁)和表级锁。
SELECT * FROM users WHERE id = 1 FOR UPDATE;
执行器在执行这条查询时,会调用InnoDB的加锁接口,对users表中id=1的行加排它锁
20 事务在engine中怎么实现
事务在存储引擎中的实现主要包括以下几个方面:
1.事务管理器:
- 负责事务的生命周期,包括开始、提交、回滚。
2.日志系统:
- Redo Log:记录所有未提交的事务操作,用于崩溃恢复。
- Undo Log:记录事务的反向操作
3.并发控制:
- MVCC(多版本并发控制):支持高并发下的读写操作,避免锁冲突
- 锁机制:提供行级锁和表级锁,确保事务的隔离性。
4.持久化:
- 双写缓冲区(Doublewrite Buffer):确保数据页在写入磁盘时的一致性。
- 刷盘操作:通过后台线程定期将脏页协会到磁盘里。
21 MVCC怎么实现
22 redolog分为哪几块内容?有什么作用
23 binlog呢
24 undolog 呢
25 数据写磁盘怎么实现的,怎么传输的,怎么保证一致性的
26 主从数据一致性会保证内存数据一致吗?
27 MySQL断开连接可以从线程和客户端区分吗
28 MySQL进程结束会执行哪些持久化操作
相关文章:
每日学习Java之一万个为什么?[MySQL面试篇]
分析SQL语句执行流程中遇到的问题 前言1 MySQL是怎么在一台服务器上启动的2 MySQL主库和从库是同时启动保持Alive的吗?3 如果不是主从怎么在启动的时候保证数据一致性4 ACID原则在MySQL上的体现5 数据在MySQL是通过什么DTO实现的6 客户端怎么与MySQL Server建立连接…...
常用空间数据结构对比
空间数据结构是用来组织和查询多维空间数据的算法结构。它们在地理信息系统 (GIS)、计算机图形学、机器人导航、机器学习等领域非常重要。以下是几种常见空间数据结构的对比: 1. 四叉树(Quadtree) 适用场景:二维空间数据&#x…...

AnythingLLM+LM Studio本地知识库构建
前置操作: 已经安装以下软件,并配置后: DeepSeek-R1-Distill-Llama-8B-Q4_K_M.ggufLM-Studio-0.3.10-6-x64 软件准备: 下载AnythingLLM:AnythingLLM | The all-in-one AI application for everyone 点击"Dow…...
使用 Java 更新 Word 文档中的图表数据-超详细
使用 Java 更新 Word 文档中的图表数据 在日常的工作中,尤其是在数据分析和报告自动化的场景中,可能会遇到需要定期更新 Word 文档中的图表数据的需求。比如,生成数据报告时,我们需要在图表中更新一些动态的数据值。今天…...

Qt常用控件之下拉框QComboBox
下拉框QComboBox QComboBox 是一个下拉框控件。 1. QComboBox属性 属性说明currentText当前选中的文本。currentIndex当前选中的条目下标(从 0 开始,如果没有条目被选中则该值为 -1)。editable是否允许被修改。为 true 时,QCom…...
Qt 中集成mqtt协议
一,引入qmqtt 库 我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台时 方便,直接编译就行了。 原始仓库路径:https://github.com/emqx/qmqtt/tree/master 二,使用 声明一个单例类,将订阅到…...
2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析
文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…...
AI大模型-提示工程学习笔记19-自我反思
目录 1. 自我反思的核心思想 (1) LLM 的局限性 (2) Reflexion 的解决方案 2. Reflexion 的工作流程 (1) 任务输入 (2) 初始生成 (3) 反思 (Reflection) (4) 调整与改进 (5) 迭代 (6) 结果输出 3. Reflexion 的关键组件 (1) 大语言模型 (LLM) (2) 反思者 (Reflector…...
GaussDB 学习实战指南:从部署到高并发优化的全流程解析
引言 GaussDB 作为华为推出的高性能分布式数据库,凭借其 分布式架构、高可用性、云原生支持 等特性,成为企业级应用的核心选择。本文将以 实战操作为核心,覆盖 集群部署、数据分片、性能调优、容灾备份、云上迁移 五大场景,通过真实案例与代码示例,助你快速掌握 GaussDB …...
vue3 Props的使用
Props是什么? 官方地址:Props | Vue.js 在 Vue 中,props 是父组件向子组件传递数据的一种机制。 props 是子组件中定义的自定义属性,父组件通过这些属性向子组件传递数据。 它们是单向数据流的一部分,意味着数据只能…...

Ecode前后端传值
说明 在泛微 E9 系统开发过程中,使用 Ecode 调用后端接口并进行传值是极为常见且关键的操作。在上一篇文章中,我们探讨了 Ecode 调用后端代码的相关内容,本文将深入剖析在 Ecode 中如何向后端传值,以及后端又该如何处理接收这些值…...

【Linux】进程状态(二)
目录 前言: 一、进程状态: 1.运行状态(时间片) 2.阻塞状态 3.阻塞挂起状态 二、Linux进程状态: 1.运行状态(R)和阻塞状态(S) 2.深度睡眠状态(D) 3.停止状态(T) 3.1使进程在后台运行 4.追踪暂停状态(t) 5.死亡状态(X)和僵尸状态…...

domain 网络安全 网络安全域
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网…...
链表和STL —— list 【复习笔记】
1. 链表 1.1 链表的定义和类型 和顺序表一样,链表也是一种线性表,线性表存储结构为链式存储就是链表 链式存储不仅要保存数据元素,还要保存数据元素间的关系,这两个部分信息形成了结点。结点有两个域:数据域&#x…...
Java Map实现类面试题
Java Map实现类面试题 HashMap Q1: HashMap的实现原理是什么? HashMap基于哈希表实现,使用数组链表红黑树(Java 8)的数据结构。 public class HashMapPrincipleExample {// 模拟HashMap的基本结构public class SimpleHashMap&…...
技术架构和工程架构区别
技术架构 技术架构是对某一技术问题解决方案的结构化描述,包括组件结构及其交互关系。它涵盖部署方案、存储方案、缓存方案、日志方案等多个方面,旨在通过组织人员和技术,以最低的成本满足需求和应对变化,保障软件的稳定高效运…...

简单介绍JVM
1.什么是JVM? JVM就是Java虚拟机【Java Virtual Machine】,简称JVM。主要部分包括类加载子系统,运行时数据区,执行引擎,本地方法库等,接下来我们一一介绍 2.类加载子系统 JVM中运行的就是我们日常写的JA…...

纷析云:赋能企业财务数字化转型的开源解决方案
在企业数字化转型的浪潮中,财务管理的高效与安全成为关键。纷析云凭借其开源、安全、灵活的财务软件解决方案,为企业提供了一条理想的转型路径。 一、开源的力量:自主、安全、高效 纷析云的核心优势在于其100%开源的财务软件源码。这意味着…...
DeepSeek开源周第二弹:DeepEP如何用RDMA+FP8让MoE模型飞起来?
一、引言:MoE模型的通信瓶颈与DeepEP的诞生 在混合专家(MoE)模型训练中,专家间的全对全(All-to-All)通信成为性能瓶颈。传统方案在跨节点传输时带宽利用率不足50%,延迟高达300μs以上。DeepSee…...

NLP学习记录十:多头注意力
一、单头注意力 单头注意力的大致流程如下: ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层(Wq、Wk、Wv)后得到查询Q、键K和值V; ② 查询Q和键K经过注意力评分函数(如:缩放点积运算&am…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...