自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(227)
  • 资源 (2)
  • 收藏
  • 关注

原创 MySql-高级(分库分表问题简析) 学习笔记

snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。使用一个单独的库,这个库不做分库分表,就只有它一个,此时当系统里每次得到一个 id,都是往这个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。的,也就是说主库上并行的操作,在从库上会串行执行。

2023-05-23 11:17:19 1037 1

原创 SpringCloud(28. 分布式会话与分布式事务)

比如,一般来说跟钱相关的,跟钱打交道的,支付、交易相关的场景,会用 TCC,严格保证分布式事务要么全部成功,要么全部自动回滚,严格保证资金的正确性,保证在资金上不会出现问题。这个方案说实话最大的问题就在于严重依赖于数据库的消息表来管理事务啥的,如果是高并发场景咋办呢?所以一般确实很少用。但是说实话,一般尽量别这么搞,自己手写回滚逻辑,或者是补偿逻辑,实在太恶心了,那个业务代码是很难维护的。这个方案保证了最终一致性,哪怕 B 事务失败了,但是 A 会不断重发消息,直到 B 那边成功为止。

2023-05-22 11:01:37 828 1

原创 SpringCloud(27. Redis 和 ZK 分布式锁)

要求较高,那么可以选择使用。要求较高,那么可以选择使用。如果应用场景对于分布式锁的。如果应用场景对于分布式锁的。

2023-05-18 10:29:33 616

原创 SpringCloud(26.分布式服务框架Dubbo面试题简析)

provider 启动的时候,就会加载到我们 jar 包里的my=com.bingo.MyProtocol 这行配置里,接着会根据你的配置使用你定义好的 MyProtocol 了,这个就是简单说明一下,你通过上述方式,可以替换掉大量的 dubbo 内部的组件,就是扔个你自己的 jar 包,然后配置一下即可。首先,一般来说,个人建议是,你们从业务逻辑上设计的这个系统最好是不需要这种顺序性的保证,因为一旦引入顺序性保障,比如使用分布式锁,会导致系统复杂度上升,而且会带来效率低下,热点数据压力过大等问题。

2023-05-18 09:17:22 446

原创 Redis(18. 面试题简析)学习笔记

sentinel,中文名是哨兵。集群监控:负责监控 redis master 和 slave 进程是否正常工作。消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址。哨兵用于实现 redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。

2023-05-12 11:10:25 539

原创 MQ(面试问题简析)学习笔记

通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。

2023-05-08 16:03:40 1091 2

原创 Redis-周阳(17. Redis 分布式锁)学习笔记

synchronized 锁:单机版 OK,上 nginx分布式微服务,单机锁就不 OK,分布式锁:取消单机锁,上 redis 分布式锁 SETNX如果出异常的话,可能无法释放锁, 必须要在 finally 代码块中释放锁如果宕机了,部署了微服务代码层面根本没有走到 finally 这块,也没办法保证解锁,因此需要有设置锁的过期时间除了增加过期时间之外,还必须要 SETNX 操作和设置过期时间的操作必须为原子性操作。

2023-05-04 16:47:25 782

原创 Spring(11. 循环依赖 - 周阳)学习笔记

你解释下spring中的三级缓存?三级缓存分别是什么?三个Map有什么异同?什么是循环依赖?请你谈谈?看过 Spring源码吗?一般我们说的 Spring容器是什么?如何检测是否存在循环依赖?实际开发中见过循环依赖的异常吗?多例的情况下,循环依赖问题为什么无法解决?……多个 bean 之间相互依赖,形成了一个闭环比如:A 依赖于 B、B 依赖于 C、C 依赖于 A通常来说,如果问 Spring 容器内部如何解决循环依赖, 一定是指默认的单例 Bean 中,属性互相引用的场景。

2023-04-26 21:30:56 542

原创 JUC-多线程(12. AQS-周阳)学习笔记

可重入锁,又叫递归锁同一个线程,在外层方法获取锁的时候,再进入该线程内层方法会自动获取锁(前提,锁对象必须是同一个对象),不会因为之前获取还没释放而阻塞。Java 中的 ReentrantLock 和 Synchronized 都是可重入锁可重入锁的优点就是避免死锁第一个考点:我相信你应该看过源码了,那么AQS里面有个变量叫State,它的值有几种?答:3个状态:没占用是0,占用了是1,大于1是可重入锁第二个考点:如果锁正在被占用,AB两个线程进来了以后,请问这个总共有多少个Node节点。

2023-04-22 17:56:28 852

原创 MySql-高级( 面试问题简析) 学习笔记

B-Tree结构中是将数据存储到了节点中,因此每行存的索引就变少了(规定每行存16kb)相应的深度(阶)比B+Tree深,会造成进行IO操作过多,影响性能。其次B+Tree中的叶子节点存在指针,由于指针的存在,在范围查找时,移动指针即可,而B-Tree不行。在事务B提交之前,事务A查询的结果就已经是事务B修改后的数据。事务B提交后,事务A再一次读取,读到的是更新后的数据。事务B提交后,事务A再一次读取,读到的依旧是原始数据。事务B对 ID = 1 的数据进行修改。事务B提交前,事务A读到的是原始数据。

2023-04-19 17:10:44 468

原创 JVM(面试问题简析)学习笔记

在执行年轻代GC的时候,会将没有任何引用的对象回收,一般情况下被方法的局部变量、类的静态变量引用的对象不会被回收,其他都会被回收。一般,再垃圾回收处理时,一边判断哪些没有被引用,一边进行回收是不现实的,所以有一个。的概念,也就是在垃圾回收时,会停止工作线程运行,然后再判断哪些可以回收。对于老年代而言,其中的垃圾对象不是很多,大部分都是需要长期存活的对象。老年代的垃圾回收比年轻代的速度会慢 10 倍以上。如果eden区满了,就会触发年轻代的GC。parnew + cms 的组合。年轻代垃圾回收的算法。

2023-04-19 13:37:53 206

原创 Spring(10. 面试问题简析)学习笔记

​ AOP(Aspect-Oriented Programming:面向切面编程),能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。Spring 中的 Bean 本身是线程不安全的,但是存在以下几种情况下,可以是线程安全的。Spring 容器中的 Bean 的 五种作用域,(绝大部分的时候,使用的都是单例的)底层的核心技术就是反射。利用反射直接根据你的类去构建对应的对象。

2023-04-13 16:58:41 520

原创 JUC-多线程(11.面试问题简析)学习笔记

原子性 就是当有一个线程在对内存中的某个数据进行操作的时候,必须要等这个线程完全操作结束后,其他线程才能够操作,这就是原子性。可见性 就是如果有多个线程对一个数据进行操作时,如果一个线程成功修改了数据,那么其他线程能够立即更新工作内存中的该数据,即随时保持最新数据状态。为了避免频繁的创建、销毁线程,会构建一个线程池,有一定数量的线程,线程执行完任务之后,不要销毁自己,继续等待执行下一个任务。每个线程都有属于自己的工作内存,这个一个 CUP 级别的内存,在工作内存中存储了所有使用到的变量的副本。

2023-04-11 21:40:45 418

原创 HashMap源码分析 (3. 手撕源码) 学习笔记

本章为学习笔记。

2023-04-03 17:12:41 315

原创 HashMap源码分析 (2.原理分析) 学习笔记

第一次 put 时,Key1 的 Hash 值经过扰乱后得到 hash = 1122,通过寻址公式可得 index = 2,此为 Node1第二次 put 时,Key2 的 Hash 值经过扰乱后得到 hash = 162, 通过寻址公式也可得 index = 2,此为 Node2那么此时 Node1、Node2 就发生了碰撞当发生了上述的碰撞时,就需要将 Node2 的 next 指向 Node1,并且 index = 2 的元素存为 Node2,变为一个链表。

2023-04-03 14:25:25 275

原创 HashMap源码分析 (1.基础入门) 学习笔记

本章为+ 拉钩教育HashMap 学习笔记。

2023-04-03 11:25:13 288

原创 ClickHouse-尚硅谷(15. 高级-常见问题排查)学习笔记

上一篇:(14. 高级-MaterializeMySQL 引擎)学习笔记文章目录1 分布式 DDL 某数据节点的副本不执行2 数据副本表和数据不一致3 副本节点全量恢复4 数据副本启动缺少 zk 表5 ZK table replicas 数据未删除,导致重建表报错6 Clickhouse 节点意外关闭7 其他问题参考1 分布式 DDL 某数据节点的副本不执行问题:使用分布式 ddl 执行命令 create table on cluster xxxx 某个节点上没有创建表,但是 client 返回正

2022-05-07 16:38:02 585

原创 ClickHouse-尚硅谷(14. 高级-MaterializeMySQL 引擎)学习笔记

上一篇:(13. 高级-物化视图)学习笔记文章目录1 概述1.1 特点1.2 使用细则2 案例实操2.1 MySQL 开启 binlog 和 GTID 模式2.2 准备 MySQL 表和数据2.3 开启 ClickHouse 物化引擎2.4 创建复制管道2.5 修改数据2.6 删除数据2.7 删除表1 概述  MySQL 的用户群体很大,为了能够增强数据的实时性,很多解决方案会利用 binlog 将数据写入到 ClickHouse。为了能够监听 binlog 事件,我们需要用到类似 canal 这样的

2022-05-07 16:36:37 724

原创 ClickHouse-尚硅谷(13. 高级-物化视图)学习笔记

上一篇:(12. 高级-数据一致性)学习笔记文章目录1 概述1.1 物化视图与普通视图的区别1.2 优缺点1.3 基本语法2 案例实操2.1 准备测试用表和数据2.2 创建物化视图2.3 导入增量数据2.4 导入历史数据1 概述  ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select,就是 create 一个 table as sele

2022-05-06 17:23:02 542

原创 ClickHouse-尚硅谷(12. 高级-数据一致性*)学习笔记

下一篇:(11. 高级-查询优化)学习笔记文章目录1 准备测试表和数据2 手动 OPTIMIZE(不推荐)3 通过 Group by 去重4 通过 FINAL 查询4.1 老版本测试4.2 新版本测试  查询 CK 手册发现,即便对数据一致性支持最好的 Mergetree,也只是保证最终一致性:  我们在使用 ReplacingMergeTree、SummingMergeTree 这类表引擎的时候,会出现短暂数据不一致的情况。  在某些对一致性非常敏感的场景,通常有以下几种解决方案。1 准备测试

2022-05-06 16:45:17 395

原创 ClickHouse-尚硅谷(11. 高级-查询优化)学习笔记

上一篇:(10. 高级-语法优化规则)学习笔记文章目录1 单表查询1.1 Prewhere 替代 where1.2 数据采样1.3 列裁剪与分区裁剪1.4 orderby 结合 where、limit1.5 避免构建虚拟列1.6 uniqCombined 替代 distinct1.7 使用物化视图1.8 其他注意事项2 多表关联2.1 准备表和数据2.2 用 IN 代替 JOIN2.3 大小表 JOIN2.4 注意谓词下推(版本差异)2.5 分布式表使用 GLOBAL2.6 使用字典表2.7 多表查询小结

2022-05-06 15:49:31 642

原创 ClickHouse-尚硅谷(10. 高级-语法优化规则)学习笔记

上一篇:(9. 高级-建表优化)学习笔记文章目录1 准备测试用表2 COUNT 优化3 消除子查询重复字段4 谓词下推5 聚合计算外推6 聚合函数消除7 删除重复的 order by key8 删除重复的 limit by key9 删除重复的 USING Key10 标量替换11 三元运算优化  ClickHouse 的 SQL 优化规则是基于 RBO(Rule Based Optimization),下面是一些优化规则1 准备测试用表上传官方的数据集将 visits_v1.tar 和 hi

2022-05-05 17:36:04 376

原创 ClickHouse-尚硅谷(9. 高级-建表优化)学习笔记

上一篇:(8. 高级-Explain 查看执行计划)学习笔记文章目录1 数据类型1.1 时间字段的类型1.2 空值存储类型2 分区和索引3 表参数4 写入和删除优化5 常见配置5.1 CPU 资源5.2 内存资源5.3 存储1 数据类型1.1 时间字段的类型  建表时能用数值型或日期时间型表示的字段就不要用字符串,全 String 类型在以 Hive为中心的数仓建设中常见,但 ClickHouse 环境不应受此影响。  虽然 ClickHouse 底层将 DateTime 存储为时间戳 Long

2022-05-05 15:38:45 565 2

原创 ClickHouse-尚硅谷(8. 高级-Explain 查看执行计划)学习笔记

上一篇:(7. 入门-分片集群)文章目录1 基本语法2 案例实操2.1 查看 PLAIN2.2 AST 语法树2.3 SYNTAX 语法优化2.4 查看 PIPELINE  在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成为正式版本的功能。  本文档基于目前较新稳定版 21.7.3.14。  目前官网最新的在线测试

2022-05-05 14:56:58 464

原创 ClickHouse-尚硅谷(7. 入门-分片集群)学习笔记

上一篇:(6. 入门-副本)学习笔记文章目录1 概述2 集群写入流程(3 分片 2 副本共 6 个节点)3 集群读取流程(3 分片 2 副本共 6 个节点)4 3分片2副本共6个节点集群配置(供参考)5 配置三节点版本集群及副本5.1 集群及副本规划(2 个分片,只有第一个分片有副本)5.2 配置步骤6 项目为了节省资源,就使用单节点,不用集群1 概述  副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。  要解决数据水平切分的问题,需要引入

2022-05-05 11:01:59 1655

原创 ClickHouse-尚硅谷(6. 入门-副本)学习笔记

上一篇:(5. 入门-SQL 操作)学习笔记文章目录1 副本写入流程2 配置步骤1 副本写入流程2 配置步骤启动 zookeeper 集群在 hadoop102 的/etc/clickhouse-server/config.d 目录下创建一个名为 metrika.xml 的配置文件,内容如下:注:也可以不创建外部文件,直接在 config.xml 中指定<?xml version="1.0"?><yandex> <zookeeper-servers&

2022-05-05 10:27:30 328

原创 ClickHouse-尚硅谷(5. 入门-SQL 操作)学习笔记

上一篇:(4. 入门-表引擎)学习笔记文章目录1 Insert2 Update 和 Delete3 查询操作4 alter 操作5 导出数据1 Insert基本与标准 SQL(MySQL)基本一致标准insert into [table_name] values(…),(….) 从表到表的插入insert into [table_name] select a,b,c from [table_name_2]2 Update 和 Delete   ClickHouse 提供了

2022-04-29 16:39:24 393

原创 ClickHouse-尚硅谷(4. 入门-表引擎)学习笔记

上一篇:(3. 入门-数据类型)学习笔记下一篇:(5. 入门-SQL 操作)学习笔记文章目录1 表引擎的使用2 TinyLog3 Memory4 MergeTree *4.1 partition by 分区(可选)4.2 primary key 主键(可选)4.3 order by(必选)4.4 二级索引(跳数索引)4.5 数据 TTL(数据存活时间)5 ReplacingMergeTree6 SummingMergeTree1 表引擎的使用  表引擎是 ClickHouse 的一大特色。可以说,表

2022-04-29 14:54:17 741

原创 ClickHouse-尚硅谷(3. 入门-数据类型)学习笔记

上一篇:(2. 入门-安装)学习笔记下一篇:(4. 入门-表引擎)学习笔记文章目录1. 整型2. 浮点型3. 布尔型4. Decimal 型5. 字符串6. 枚举类型7. 时间类型8. 数组9. 其他1. 整型  固定长度的整型,包括 有符号整型(有正有负) 或 无符号整型。类比 Java 类型:CH类型Java类型整型范围(-2n-1~2n-1-1):Int8 - [-128 : 127]ByteInt16 - [-32768 : 32767]Short

2022-04-28 15:08:17 327

原创 ClickHouse-尚硅谷(2. 入门-安装)学习笔记

上一篇:(1. 入门-概述)学习笔记文章目录1. 准备工作1.1 确定防火墙处于关闭状态1.2 CentOS 取消打开文件数限制1.3 安装依赖1.4 CentOS 取消 SELINUX2. 单机安装2.1 在/opt/software 下创建 clickhouse 目录2.2 将/2.资 料/ClickHouse 下 4 个文件上传到 software/clickhouse 目录下2.3 将安装文件同步到 hadoop103、hadoop104 上2.4 分别在三台机子上安装这 4 个 rpm 文件2.

2022-04-27 17:08:20 573

原创 ClickHouse-尚硅谷(1. 入门-概述)学习笔记

下一篇:(1. 入门-概述)学习笔记文章目录1. ClickHouse 概述2. ClickHouse 的特点2.1 列式存储2.2 DBMS 的功能2.3 多样化引擎2.4 高吞吐写入能力2.5 数据分区与线程级并行2.6 性能对比1. ClickHouse 概述  ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C++ 语言编写,主要用于 在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。OLAP: 在线分析处

2022-04-27 16:11:38 584 1

转载 良好的编码方式(转载)

转载自 :写出的代码复杂度太高?看下专家怎么说(元闰子)良好的编码方式1. 前言2. 导致软件复杂的原因3. 如何降低软件的复杂性3.1 对 “战术编程” Say No!3.2 让模块更“深”一点!3.3 进行分层设计!3.4 学会写代码注释!4. 总结【摘要】 软件的复杂性是我们程序员在日常开发中所必须面对的东西,学会如何 “弄清楚什么是软件复杂性,找到导致软件复杂的原因,并利用各种手法去战胜软件的复杂性” 是一门必备的能力。1. 前言在进行软件开发时,我们常常会追求软件的高可维护性,高可维护

2021-06-11 17:20:57 274 1

原创 Elasticsearch-尚硅谷(9. 面试题)学习笔记

上一篇:(8. 优化)学习笔记文章目录1 为什么要使用 Elasticsearch?2 Elasticsearch 的 master 选举流程?3 Elasticsearch 集群脑裂问题?4 Elasticsearch 索引文档的流程?5 Elasticsearch 更新和删除文档的流程?6 Elasticsearch 搜索的流程?7 Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?8 GC 方面,在使用 Elasticsearch 时要注意什么?9 Elasticsearc

2021-05-27 14:01:47 327

原创 Elasticsearch-尚硅谷(8. 优化)学习笔记

上一篇:(7. 进阶-下)学习笔记文章目录1. 硬件选择2. 分片策略2.1 合理设置分片数2.2 推迟分片分配3 路由选择4 写入速度优化4.1 批量数据提交4.2 优化存储设备4.3 合理使用合并4.4 减少 Refresh 的次数4.5 加大 Flush 设置1. 硬件选择Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件…/config/elasticsearch.yml 中配置,如下:#------------

2021-05-27 13:43:34 614

原创 Elasticsearch-尚硅谷(7. 进阶-下)学习笔记

上一篇:(6. Elasticsearch 环境-上)学习笔记文章目录9. Kibana9. KibanaKibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,并让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如何流经你的整个应用,都能轻松完成。下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-windows-x86_64.zip

2021-05-26 11:21:58 638

原创 Elasticsearch - 尚硅谷(6. Elasticsearch 进阶-上)学习笔记

上一篇:(5. Elasticsearch 环境)学习笔记文章目录1. 核心概念1.1 索引(Index)1.2 类型(Type)1.3 文档(Document)1.4 字段(Field)1.5 映射(Mapping)1.6 分片(Shards)1.7 副本(Replicas)1.8 分配(Allocation)2 系统架构3 分布式集群3.1 单节点集群3.2 故障转移3.3 水平扩容3.4 应对故障4 路由计算1. 核心概念1.1 索引(Index)一个索引就是一个拥有几分相似特征的文档的集合

2021-05-07 20:28:44 1023 2

原创 Elasticsearch - 尚硅谷(5. Elasticsearch 环境)学习笔记

上一篇:(4. Elasticsearch 基本操作_下)学习笔记文章目录1. 相关概念1.1 Windows 集群1.1.1 部署集群1.1.2 启动集群1.1.3 测试集群1. 相关概念1.1 Windows 集群1.1.1 部署集群创建 elasticsearch-cluster 文件夹,在内部复制三个 elasticsearch 服务修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件node-1001 节点#节点 1 的配置信息:#集

2021-05-07 19:22:19 838

原创 Elasticsearch - 尚硅谷(4. Elasticsearch 基本操作_下)学习笔记

上一篇:(3. Elasticsearch 基本操作_上)学习笔记文章目录3.5 Java API 操作3.5.1 搭建环境3.5.2 创建客户端对象3.5.3 索引操作3.5.4 文档操作3.5.5 高级查询3.5 Java API 操作Elasticsearch 软件是由 Java 语言开发的,所以也可以通过 Java API 的方式对 Elasticsearch服务进行访问3.5.1 搭建环境在 IDEA 中创建一个 Maven 依赖修改 Pom.xml<depend

2021-05-06 19:08:37 876 1

原创 Elasticsearch - 尚硅谷(3. Elasticsearch 基本操作_上)学习笔记

上一篇:(2. Elasticsearch 安装)学习笔记文章目录1.1.

2021-05-06 17:00:10 2119 10

原创 Elasticsearch - 尚硅谷(2. Elasticsearch 安装)学习笔记

上一篇:(1. 概述)学习笔记文章目录1. 下载软件2. 安装软件3. 问题解决1. 下载软件Elasticsearch 的官方地址:https://www.elastic.co/cn/Elasticsearch 最新的版本是 7.12.2(截止 2021.5.1),我这里选择的是 7.8.0 版本下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearchElasticsearch 分为 Linux

2021-05-01 17:06:22 715 1

反射工具类 + 自定义的用于标注字段含义的注解.zip

ReflectionUtils :反射工具类,包括 --- 通过反射获取实体类中的字段及其中文注释 --- 通过字段名称获得对象中对应的值 --- 驼峰格式字符串转换为下划线格式字符串 ColumnExplain: 使用在实体类字段上,用于标注字段含义,且可以通过反射获取含义

2021-05-31

MySql高级-思维导图(脑图)(mmap+HTML)

该文件是 我收集整理的最新的 尚硅谷-MySql高级 课程中对应使用的思维导图,并且已经导出为 HTML 格式,更加便于查看。

2020-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除