自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萌新Java工程师

记录我的入门路线、实习经历、踩过的坑

  • 博客(128)
  • 收藏
  • 关注

原创 实习踩坑之路:一个ElasticSearchJava客户端的批量处理操作bulkIndexAsync引发的内存泄漏的血案

没错这又是一次血案,不过是在测试环境发现的,还好不是上次线上导致的CPU300%,这次及时发现,避免了线上血案,不过我还是要复盘一下的,下面就看看我的分析,看看有没有什么错误的地方

2022-03-27 15:48:48 5492 4

原创 实习成长之路:关于ElasticSearch深度分页带来的思考,如何解决深度分页和跳页

ElasticSearch的深度分页带来的问题,一些思考,

2022-03-18 11:30:35 3063

原创 实习踩坑之路:parallelStream并发流+快速失败导致线上CPU300%的血泪史

一个小错误导致线上CPU300%,就差一点提交离职单了

2022-03-07 16:45:07 1674 1

原创 实习踩坑之路:ElasticSearch双写数据不同步?不实时?怎么优化?

问题复现咳咳,说实话,这个挺尴尬的,那时前两天刚写的接口,我还特意写过一篇关于它的坑,没想到还是有隐藏的bug,废话不多说上图这是上次的那个接口功能,就是查询未读会话有几个,不为0的话,会显示小红点听起来很简单,但是今天就遇到了bug问题是这样的,我们操作的时候,快速把所有会话点了一遍,然后给某个会话设置为了未读状态,发现就对不上了,显示还都是0,理应有未读数1的,因为我刚把这个(某个)会话设置为了未读状态,推了一条系统消息的(xxx设置了未读),但是从ES查询的结果却是没有未读会话,这个第一时间

2021-12-15 15:48:53 2448 1

原创 实习踩坑之路:ElasticSearch搜索出来了不是自己的数据?Elastic会像MyBatisPlus一样会帮我们做判断null的操作么?分片精确度如何控制?

ES有延迟怎么优化?ES查询到别的数据怎么排查错误?ES聚合查询精确度又是如何控制的?

2021-12-11 17:56:30 2106

原创 实习踩坑之路:一个诡异的SQL?PageHelper莫名多了一个Limit子句,导致SQL执行错误?

问题复现昨天晚上上线,业务上回归测试都很正常,但是就在那时,突然爆了一个SQL执行异常,告警群中看到这个SQL是这样的这怎么有两个Limit拼在一起了?是我SQL写错了么?然后我第一反应就是这个SQL写错了,但是我定位了这个Mapper文件,发现并没有这一条SQL是拼了两个limit语句的,然后在师兄提醒的情况下,认为是上个线程的(分页插件拼接的)ThreadLocal变量没有被清除,也就是说,有可能是分页插件要拼这个limit,但是还没执行到Mysql查询,报错了,这个现场的limit 1000就

2021-12-10 10:33:36 2752 1

原创 ElasticSearch解决中文搜索只能搜索单个字符的问题

问题描述我写了一个搜索的小项目,想利用es来实现高亮搜索,但是突然发现,我的搜索功能,只能搜出来英文譬如java,dior,vue等等,但是像医学,高等数学就搜不出来了!解决思路一开始,我以为是我的请求发送过去导致了中文乱码 new Vue({ el:'#app', data:{ keyword:'' ,//搜索的关键字 results:[] //搜索的结果 }, methods

2020-12-26 13:30:44 5184 5

原创 阿里巴巴飞猪春季2024届实习生招聘正式启动啦

招人啦飞猪春季2024届实习生招聘正式启动啦!找一份好工作的最佳时机是现在、此时此刻,这一瞬间前程和情怀,诗和远方飞猪都给你加入飞猪 玩得酷 靠得住!!!...

2023-03-08 17:34:32 172

原创 实习成长之路:面试官说的MySQL高可用-------主备一致到底是什么?

参考极客时间MySQL实战四十五讲,本文为学习笔记主备一致想了解主备一致,我们先来了解一些基本知识MySQL主备一致的基本原理先思考下,我们生产实践中为什么要把备库设置为只读状态?有时候一些运营类的查询语句会被放到备库上去查,设置为只读可以防止误操作;防止切换逻辑有bug,比如切换过程中出现双写,造成主备不一致;可以用readonly状态,来判断节点的角色。把备库设置成只读了,还怎么跟主库保持同步更新呢?因为readonly设置对超级(super)权限用户是无效的,而用于同步.

2022-04-29 15:29:10 370

原创 实习踩坑之路:实习以来获得的踩坑经验、一些提升开发效率的方法或者常用技巧

大三下学期跟同学一起跑出来,到现在也1年多了,期间遇到了很多事,不顺心的顺心点都有,但是作为一个技术人,我觉得我学到了东西,不管高级不高级我都觉得有所收获,马上就要毕业了 现在这庆祝一下🥳引入相信大家刚从学校出去进入项目组,或多或

2022-04-25 17:26:06 493 2

原创 开源项目:浏览器前进后退发现请求了接口,也有数据返回,但是前端并没有渲染数据是什么问题?

新栏目:开源项目的经历希望大家看完觉得不错的话给个三连,给点动力我参与的一个开源项目最近被使用者提交了一个bug,bug是这样的我来描述下,这位兄弟遇到的情况是这样的:场景描述正常场景喜爱,我们这是有渲染出来数据的,但是根据这位老哥的反馈,我复现了一下这个bug,而且复现的概率还是挺高的我这后退到上一个其他的页面,然后在前进跳转回来,就会很大概率复现这个bug,看到了么,前进后退是请求了接口的呀,而且接口也返回数据了,但是为啥前端没有渲染出来呢?问题排查一开始觉得这个get请..

2022-04-25 11:18:05 3175

原创 实习踩坑之路:LocalDateTime计算间隔天数,compareTo/Period的beetween方法导致的bug

比较两个日志相隔天数之差的坑,你踩了么?

2021-12-23 14:49:15 1779

原创 实习成长之路:下层应用调不到上层方法怎么办?GoogleGuava事件上报来打配合

问题描述我有一个智能回答自动回复的业务实现,因为项目用到了DDD开发模式,我为这个自动回复做了一个单独的领域,包是在xxx-xxx-xxx-domain包下,也就是领域层,问题是我自动回复领域处理完之后,要代理发送微信消息,发送消息MQ,还有更多的比如:推送WS,商机处理等等,最关键的是这个自动回复有特殊的规则,比如延时发送。发送消息的统一入口sendMsg恰好是在会话service接口中定义的,也就是xxx-xxx-xxx-application层,我这调不到,所以最后采用事件上报,我这里画图给你描述下

2021-12-22 11:47:21 391 1

原创 实习成长之路:Redis为什么快?为什么Redis同样也是String字符串,但是要比Java性能好?SDS数据结构是什么?什么是紧凑型编程技巧?

极客时间Redis源码学习笔记Redis为什么快?相信大家学Redis的时候,第一句话就是Redis是直接操作内存的,所以比操作磁盘IO的数据库要快。但是只有这一点原因么?答案肯定不是的,下面就是我在学习极客时间Redis源码时候的一些笔记和感想Redis 是如何优化内存使用的呢?实际上,Redis 是从三个方面来优化内存使用的,分别是内存分配、内存回收,以及数据替换。首先,在内存分配方面,Redis 支持使用不同的内存分配器,包括 glibc 库提供的默认分配器 tcmalloc、第三方库提

2021-12-11 11:58:53 496 5

原创 实习踩坑之路:集群场景下,我的redis锁为什么不生效啊?别的机器上的线程给解锁了?

今天在小组codereview的时候,被大佬们揪出来我的程序写的拉的一点,分享出来,部分代码涉及内部机密,我用注释尽量描述清楚场景我是一个对话场景,需要对群会话加锁,然后去自动回复的,也就是说,我需要在消息进来的时候,不能让同一个群的所有人触发我这个自动回复的规则,只有在拿到锁的执行完自动回复解锁之后,在进行加锁/解锁代码 //判断需要加锁 boolean lockFlag = judgeLock(chatMsgDO.getChatType(),autoReplyRu

2021-12-07 16:46:26 974

原创 实习成长之路:操作系统——CPU有哪些工作模式呢?

本博客极客时间-操作系统实战45讲笔记感兴趣移步引入硬件中最重要的就是 CPU,它就是执行程序的核心部件。而我们常用的电脑就是 x86 平台,所以我们要对 x86 CPU 有一些基本的了解按照 CPU 功能升级迭代的顺序,CPU 的工作模式有实模式、保护模式、长模式,这几种工作模式下 CPU 执行程序的方式截然不同,下面我们一起来探讨这几种工作模式。从一段死循环的代码说起int main(){ int* addr = (int*)0; cli(); //关中断 whil

2021-10-27 20:16:33 810

原创 实习踩坑之路:Git无法拉取最新分支代码?怎么解决?

Git无法拉取最新分支的解决办法

2021-10-25 11:44:35 1168

原创 实习成长之路——设计原则三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

极客时间:王争:设计模式课程专栏,如有侵权,联系立即删除如何理解“里式替换原则”?里式替换原则的英文翻译是:Liskov Substitution Principle,缩写为 LSP。英语我就不贴了,讲人话:子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。来个例子好理解如下代码中,父类 Tr

2021-09-23 16:23:57 337

原创 实习成长之路——设计模式四:如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?

个人觉得,开闭原则是 SOLID 中最难理解、最难掌握,同时也是最有用的一条原则。之所以说这条原则难理解,那是因为,“怎样的代码改动才被定义为‘扩展’?怎样的代码改动才被定义为‘修改’?怎么才算满足或违反‘开闭原则’?修改代码就一定意味着违反‘开闭原则’吗?”等等这些问题,都比较难理解。之所以说这条原则难掌握,那是因为,“如何做到‘对扩展开放、修改关闭’?如何在项目中灵活地应用‘开闭原则’,以避免在追求扩展性的同时影响到代码的可读性?”等等这些问题,都比较难掌握。之所以说这条原则最有用,那是因为,扩.

2021-09-22 22:55:55 298

原创 实习成长之路——领域驱动设计DDD实战一:微服务设计为什么要选择DDD?

本套资料是极客时间欧创新老师的DDD实战课,感兴趣的可以移步https://time.geekbang.org/column/article/149943我们知道,微服务设计过程中往往会面临边界如何划定的问题,我经常看到项目团队为微服务到底应该拆多小而争得面红耳赤。不同的人会根据自己对微服务的理解而拆分出不同的微服务,于是大家各执一词,谁也说服不了谁,都觉得自己很有道理。那在实际落地过程中,我也确实见过不少项目在面临这种微服务设计困惑时,是靠拍脑袋硬完成的,上线后运维的压力就可想而知了。那是否有合适的

2021-09-22 19:43:06 549

原创 实习成长之路——设计模式四:什么是单一职责原则,如何判定某个类的职责是否够“单一”?

从今天起,我们开始学习一些经典的设计原则,其中包括,SOLID、KISS、YAGNI、DRY、LOD 等。如何理解单一职责原则(SRP)?文章的开头我们提到了 SOLID 原则,实际上,SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则,依次对应 SOLID 中的 S、O、L、I、D 这 5 个英文字母。我们今天要学习的是 SOLID 原则中的第一个原则:单一职责原则。单一职责原则的英文是 Single .

2021-09-22 14:04:47 386

原创 实习踩坑之路:使用@Value注解导致Parse attempt failed for value [08:00],时间转换出错?

错误大致详情Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2021-09-22 11:05:20.645 [] [] [main] ERROR o.s.b.SpringApplication - Application run failedorg.springframework.beans.factory.BeanCreat

2021-09-22 11:21:10 3403 1

原创 实现成长之路——SpringBean三:实例化Bean的姿势都有哪些?

实力化bean的姿势常规方式• 通过构造器(配置元信息:XML、Java 注解和 Java API )• 通过静态工厂方法(配置元信息:XML 和 Java API )• 通过 Bean 工厂方法(配置元信息:XML和 Java API )• 通过 FactoryBean(配置元信息:XML、Java 注解和 Java API )特殊方式• 通过 ServiceLoaderFactoryBean(配置元信息:XML、Java 注解和 Java API )• 通过 AutowireCa

2021-09-21 18:48:35 107

原创 实习成长之路——Spring Bean 二:如何注册BeanDefinition?

注册Spring BeanBeanDefinition 注册XML 配置元信息<bean name=”…” … />Java 注解配置元信息@Bean@Component@ImportJava API 配置元信息命名方式:BeanDefinitionRegistry#registerBeanDefinition(String,BeanDefinition)非命名方式:BeanDefinitionReaderUtils#registerWithGenerated

2021-09-21 18:11:56 182

原创 实习成长之路——SpringBean一:BeanDefinition元信息有什么?除了Bean名称和类型,还有那些Bean的元信息值得关注?

BeanDefinition元信息有哪些信息?这里放小马老师的一张图在我刚开始学习Spring的时候,还是XML方式来配置的,所以大概都知道什么意思,一般我们都BeanDefinition一般通过XML方式配置的比较多一点下面看看BeanDefinition的构建BeanDefinition的构建通过BeanDefinitionBuilder通过AbstractBeanDefinition以及派生类/** * @ClassName BeanDefinitionCreationDemo

2021-09-21 17:25:51 175

原创 实习成长之路——设计模式实战二:如何使用面向对象的思想设计一个功能需求?接口鉴权怎么用面向对象分析实现?

面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),是面向对象开发的三个主要环节,不过,光知道“是什么”是不够的,我们更重要的还是要知道“如何做”,也就是,如何进行面向对象分析、设计与编程。对于“如何做需求分析,如何做职责划分?需要定义哪些类?每个类应该具有哪些属性、方法?类与类之间该如何交互?如何组装类成一个可执行的程序?”等等诸多问题,都没有清晰的思路,更别提利用成熟的设计原则、思想或者设计模式,开发出具有高内聚低耦合、易扩展、易读等优秀特性的代码了。案例介绍和难点剖析假设,.

2021-09-21 15:56:44 304

原创 实习成长之路——设计模式实战一:充血模型DDD与贫血模型MVC的区别?如何利用DDD开发一个虚拟钱包系统?

大部分工程师都是做业务开发的,所以,今天我们讲的这个实战项目也是一个典型的业务系统开发案例。我们都知道,很多业务系统都是基于 MVC 三层架构来开发的。实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式。虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种彻彻底底的面向过程的编程风格,因此而被有些人称为反模式(anti-pattern)。特别是领域驱动设计(Domain Driven Design,简称 DDD)盛行之后,这种基于贫血模型的传统的.

2021-09-21 15:21:26 1350 5

原创 实习成长之路——设计模式三:组合与继承有啥关系?为什么说多用组合少用继承?如何选择使用哪种方式?

在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。为什么不推荐使用继承?组合相比继承有哪些优势?如何判断该用组合还是继承?今天,我们就围绕着这三个问题,来详细讲解一下这条设计原则。为什么不推荐使用继承?继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性。所以,对于是否应该在项目中使用继承,网上有很多争议。很多人觉得继承是一种反模式,应该尽量少用,甚至不用。为什么会.

2021-09-20 22:52:55 214

原创 实习成长之路——设计模式二:为什么项目都是基于接口而非实现编程?有必要为每个类都定义接口吗?

今天,我们继续讲一个跟“接口”相关的知识点:基于接口而非实现编程。这个原则非常重要,是一种非常有效的提高代码质量的手段,在平时的开发中特别经常被用到。为了让你理解透彻,并真正掌握这条原则如何应用,今天,我会结合一个有关图片存储的实战案例来讲解。除此之外,这条原则还很容易被过度应用,比如为每一个实现类都定义对应的接口。针对这类问题,在今天的讲解中,我也会告诉你如何来做权衡,怎样恰到好处地应用这条原则。如何解读原则中的“接口”二字?“基于接口而非实现编程”这条原则的英文描述是:“Program to a.

2021-09-20 22:35:50 186

原创 实习成长之路:设计模式二:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?

极客时间:设计模式之美笔记在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等等。不过,并不是所有的面向对象编程语言都支持这两个语法概念,比如,C++ 这种编程语言只支持抽象类,不支持接口;而像 Python 这样的动态编程语言,既不支持抽象类,也不支持接口。尽管有些编程语言没有提供现成的语

2021-09-20 22:18:26 119

原创 实习成长之路:设计模式一:为什么你明明使用面向对象设计语言总写面向过程的程序?

在实际的开发工作中,很多同学对面向对象编程都有误解,总以为把所有代码都塞到类里,自然就是在进行面向对象编程了。实际上,这样的认识是不正确的。有时候,从表面上看似是面向对象编程风格的代码,从本质上看却是面向过程编程风格的。哪些代码设计看似是面向对象,实际是面向过程的?1. 滥用 getter、setter 方法参与的项目开发中,我经常看到,有同事定义完类的属性之后,就顺手把这些属性的 getter、setter 方法都定义上。有些同事更加省事,直接用 IDE 或者 Lombok 插件(如果是 Java.

2021-09-20 21:56:22 404 3

原创 实习成长之路:MySQL十二:为什么我删除了表的不少数据,但是大小没变呢?

上期参考答案以及补充如果一个高配的机器,redo log 设置太小,会发生什么情况。每次事务提交都要写 redo log,如果设置太小,很快就会被写满,也就是下面这个图的状态,这个“环”将很快被写满,write pos 一直追着 CP。这时候系统不得不停止所有更新,去推进 checkpoint。这时,你看到的现象就是磁盘压力很小,但是数据库出现间歇性的性能下跌。在这种情况下,连 change buffer 的优化也失效了。因为 checkpoint 一直要往前推,这个操作就会触发 merge .

2021-09-17 20:39:36 558

原创 实习成长之路:MySQL十一:为什么我的MySQL会“抖”一下?

上期参考答案以及思考引言平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。今天,我们就一起来看一看这是什么原因。你的 SQL 语句为什么变“慢”了InnoDB 在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志叫作 redo log(重做日志),也就是《孔乙己》里咸亨酒店掌柜用来记账的粉板,在更新内存写完 redo .

2021-09-17 09:56:56 133

原创 实习成长之路:MySQL十:怎么给字符串字段加索引?

林晓斌 上期参考答案以及补充问题留的问题是,为什么经过这个操作序列,explain 的结果就不对了?这里,我来为你分析一下原因。delete 语句删掉了所有的数据,然后再通过 call idata() 插入了 10 万行数据,看上去是覆盖了原来的 10 万行。但是,session A 开启了事务并没有提交,所以之前插入的 10 万行数据是不能删除的。这样,之前的数据每一行数据都有两个版本,旧版本是 delete 之前的数据,新版本是标记为 deleted 的数据。这样,索引 a 上的数据其实就有两

2021-09-15 20:48:30 142

原创 实习成长之路:MySQL九:为什么MySQL有时候会选错索引呢?

上期思考题以及补充问题是,如果某次写入使用了 change buffer 机制,之后主机异常重启,是否会丢失 change buffer 和数据。这个问题的答案是不会丢失。虽然是只更新内存,但是在事务提交的时候,我们把 change buffer 的操作也记录到 redo log 里了,所以崩溃恢复的时候,change buffer 也能找回来。merge 的过程是否会把数据直接写回磁盘,这是个好问题。这里,我再为你分析一下。merge 的执行流程是这样的:从磁盘读入数据页到内存(老版本的数据.

2021-09-15 20:23:13 119

原创 实习成长之路:MySQL八:普通索引和唯一索引,应该怎么选择?

上期思考题参考答案以及补充补充当开启事务时,需要保存活跃事务的数组(A),然后获取高水位(B)。我的疑问就是,在这两个动作之间(A和B之间)会不会产生新的事务?如果产生了新的事务,那么这个新的事务相对于当前事务就是可见的,不管有没有提交。解答 : 代码实现上,获取视图数组和高水位是在事务系统的锁保护下做的,可以认为是原子操作,期间不能创建事务。对于上篇中的例子假设transaction id为98的事务在事务A执行select(Q2)之前更新了字段,那么事务A发现这个字段的row trx_

2021-09-13 21:14:21 195

原创 实习成长之路:MySQL七:事务到底是隔离的还是不隔离的?

上期参考答案以及补充第二种方式是相对较好的。第一种方式(即:直接执行 delete from T limit 10000)里面,单个语句占用时间长,锁的时间也比较长;而且大事务还会导致主从延迟。第三种方式(即:在 20 个连接中同时执行 delete from T limit 500),会人为造成锁冲突。引入如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样。也就是说,一个在可.

2021-09-13 20:48:15 119

原创 实习成长之路:MySQL六:行锁的功与过:怎么减少行锁对性能的影响?

上期参考答案以及补充当备库用–single-transaction 做逻辑备份的时候,如果从主库的 binlog 传来一个 DDL 语句会怎么样?假设这个 DDL 是针对表 t1 的, 这里我把备份过程中几个关键的语句列出来:Q1:SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;Q2:START TRANSACTION WITH CONSISTENT SNAPSHOT;/* other tables */Q3:SAVEPOI.

2021-09-13 19:15:00 146

原创 实习成长之路:后端开发实践系列——领域驱动设计(DDD)编码实践一

DDD总览DDD分为战略设计和战术设计。在战略设计中,我们讲求的是子域和限界上下文(Bounded Context,BC)的划分,以及各个限界上下文之间的上下游关系。当前如此火热的“在微服务中使用DDD”这个命题,究其最初的逻辑无外乎是“DDD中的限界上下文可以用于指导微服务中的服务划分”。事实上,限界上下文依然是软件模块化的一种体现,与我们一直以来追求的模块化原则的驱动力是相同的,即通过一定的手段使软件系统在人的大脑中更加有条理地呈现,让作为“目的”的人能够更简单地了解进而掌控软件系统。如果说战略设计

2021-09-13 15:17:08 303

原创 实习成长之路:MySQL五:全局锁和表锁 :给表加个字段怎么有这么多阻碍?

思考题参考答案以及一些优质问题表的逻辑结构 ,表 —> 段 —> 段中存在数据段(leaf node segment) ,索引段( Non-leaf node segment),请问数据段就是主键索引的数据, 索引段就是二级索引的数据么建立的每个索引都有要维护一个数据段么 ?? 那么新插入一行值 , 岂不是每个索引段都会维护这个值索引的n阶表示n个数据页么。那是不是插入第一行数据树高1 ,就是一个数据页, 插入二三行,树高是二,那就是两个数据页,而且B+树只有leaf node存数据,所

2021-09-12 17:04:26 439 4

空空如也

空空如也

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

TA关注的人

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