自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

原创 MySQL深度理解-MySQL事务优化

事务就是进行多个操作,要么同时执行成功,要么同时执行失败。

2025-07-25 00:00:03 929

原创 MySQL深度理解-MySQL索引优化

对于in来说,在数据量大的时候,in是会走索引的,在数据量小的时候,是不会走索引的,但是在生产环境下,数据量一般都是比较大的,所以in一般都会走索引的,出于索引设计原因,当性别不进行筛选时,采用这种方案可以使得联合索引可以被完全利用。因此要查询一张大表比较靠后的数据,执行效率是非常低的。age这种数据是经常要进行范围查询的,所以这种数据一般是直接放在最后的,索引也会建立到最后,因为如果将age索引建立到=值前面,在age符合的范围中,后面的=值数据可能不是顺序性的,就无法完全利用建立的联合索引。

2025-07-24 20:41:23 605

原创 MySQL深度理解-详解Explain和索引最佳实践

为什么会出现这种情况呢?用一句话解释什么是索引下推,索引下推就是原本二级联合索引在使用最左字段筛选出二级索引树种的数据之后,直接回表查询数据,然后最终再根据其他字段条件进行筛选,但是经过索引下推优化后,在回表前阶段就进行筛选了,减少了回表操作。即查询的时候走了索引,且索引是唯一的。如果name设置了索引,就不会走filesort,会使用Using index,性能会比较高,因为使用的是索引,索引本身就是一种按顺序组织好顺序的B+Tree结构,所以使用索引树查询的效率非常高。

2025-07-24 12:45:00 1485

原创 MySQL深度理解-深入理解MySQL索引底层数据结构与算法

是树的高度,树越高需要进行的磁盘IO的次数就越多,2000万级别的数据表的索引使用B+Tree进行构建出来的树的高度仅有3,但是如果使用的是B-Tree,由于B-Tree的特性,构建起来整个树的高度绝对是大于3的,而且也不能做内存常驻等优化手段。在MYI索引文件中,存储的其实就是数据表构建的这一棵B+树,叶节点中的data数据是磁盘数据的地址,即当数据表采用的是MyISAM存储引擎的时候,通过索引去查询数据的时候,会根据B+Tree查询到数据的地址,然后再去MYD文件中查询真正的数据。

2025-07-23 23:16:34 1075 1

原创 设计模式-命令模式

但是如果新建一个空命令类,在Invoker进行创建的时候,内置的command集合中的Command都初始化为空命令,并实现Command,提供抽象方法的空实现,这样就无需判空了,如果调用到还没有初始化的Command,就是调用空命令中的空实现方法,不会执行任何逻辑。抽象命令接口实现类进行实现了Command接口,使用构造方法的形式进行聚合具体的执行者Receiver,实现Command接口中定义的抽象方法,调用聚合到命令实现类中的Receiver进行执命令。

2025-07-23 16:33:04 1000

原创 设计模式-代理模式

先创建目标对象,然后调用newProxyInstance()方法,传入目标对象的Class对象,再传入生成的代理对象需要实现的接口(TargetObject定义的类也需要实现相关接口),最终传入一个-InvocationHandler接口实现类,实现invoke方法,invoke方法会传入method参数和args参数(method参数就是劫持的调用方法对象,args参数就是劫持函数对象接收的参数列表),在invoke方法中进行实现代理类的逻辑。

2025-07-23 16:00:21 800

原创 适配者模式

1.Java是单继承机制,所以类适配模式需要继承src类(提供者类),这是一个很大的缺点,一方面要求了抽象适配者必须是一个接口(不能是抽象类之类的),另一方面由于单继承的缘故,适配者的能力调配是依赖于继承获得的,这样就限制了适配者的能力,只能单适配,不能同时做到获取多个能力实现多适配。其别名为包装器(Wrapper)VoltageAdapter适配者,进行实现了适配者接口(对外开放接口能力),继承了提供者(方便调用提供者的能力),在内部进行转化,方便调用者(Phone)进行调用使用。

2025-07-22 22:36:22 686

原创 建造者设计模式

StringBuilder就十分有意思了,它是一个产品,同时也是一个指挥者,进行通过实现AbstractStringBuilder类,调用AbstrtactStringBuilder中的方法(建造者中的方法),进行实现建造对象返回生产对象的功能,生产出的对象就是自己,自己既担任了指挥层,也担任了产品层。其实就是充当一个建造者的上层实现者。2.房子的样式有很多种:如普通防痱子,高楼,别墅,各种房子的建造过程虽然一样,但是要求不一样(也就是建造的大步骤都是一致的,但是建造出来的模样是不同的,即要求都是不同的)

2025-07-22 21:32:58 996

原创 原型设计模式

深拷贝会为所有引用数据类型的成员变量进行申请存储空间,并进行复制每个引用数据类型成员变 量锁引用的对象,知道该对象可达的所有对象(对于嵌入的对象处理方式是不一样,进行克隆对象中的对象字段的数据的时候,是根据克隆的对象字段的数据进行选择使用深拷贝还是浅拷贝)浅拷贝是纯的变量拷贝,基本数据类型和引用数据类型进行拷贝都是进行值拷贝,也就是说引用数据类型进行拷贝的时候也仅仅是将变量进行拷贝过去而已,拷贝之后两个对象的引用字段进行指向的都是同一个引用变量,这就是最大的问题。但是深拷贝对对象的处理方式是不一样的。

2025-07-21 23:57:41 696

原创 三大工厂设计模式

缺点就是违反了OCP原则(开闭原则),对扩展(提供者)开放,对修改(使用者)关闭,从UML图中就可以进行分析出来,提供者就是Pizza类的派生类,对扩展开放的意思其实就是Pizza的派生类可以无限进行扩展,代码底层可以进行更改(只要外部调用的时候表现出来的特征一样就没问题),对修改关闭的意思就是,当Pizza进行扩展出新的派生类的时候,十一用者可以进行完美的无缝兼容,调用的方法无需进行改变,这就是OCP原则 => 至少要进行保证尽量少的进行修改代码。这样单个工厂类就变为了工厂簇,更利于代码的维护和扩展。

2025-07-21 23:55:28 894

原创 单例设计模式

但是要注意这段代码是线程不安全的设计,如果在单例对象还没有初始化的时候,也就是instance为null的时候,多个线程如果一起调用getInstance这个方法就会出现明显的问题,如果A线程进入if代码块后,还没有执行完new的指令,B线程也进来了,A线程执行完后进行返回出去了A线程new的单例对象,B线程执行完后进行返回出去了B线程new的单例对象,就会导致两个工作线程使用的不是一个单例对象,导致出现相应的问题。这种写法比较简单,就是在类初始化的时候完成实例化,将实例化的单例对象赋值给静态变量。

2025-07-17 23:08:56 671

原创 设计模式是什么呢?

1.设计模式是程序员面对软件工程设计问题时所总结出来的有用的经验,不是代码,是一种思想,一种针对问题的解决方案,设计模式代表了解决这类问题的最佳实践。3.现在常见的23种设计模式是四人组GOF进行提出来的,不能说明设计模式就完全只有这23种,很多设计模式会有很多不同的变种等,但是掌握这23种就足够了。4.设计模式并不会局限于语言,每种语言都会有自己的设计模式,设计模式是思想,并不是某个语言独有的特性或者一种技术。第三层:学习过设计模式,发现自己已经在使用了,并且发现了一些新的设计模式挺好用的。

2025-07-17 22:21:24 184

原创 UML类图怎么画

在这里面进行设计的就是,IDCard对于Person是一个可组装也可以不组装的类,所以相互之间属于一个聚合的关系(Aggregation),但是Head类的对象在Person对象创建的时候,也会进行创建,生死与共,所以Head类与Person类属于是组合的关系(Composition)聚合关系(Aggregation)表示的是整体和部分之间的关系,聚合关系最大的特征就是描述的整体和部分的关系,是可以分开的,并不是锁定强聚合的关系。

2025-07-17 22:20:58 757

原创 设计模式—初识设计模式

1.一个对象应该对其它对象保持最少的了解其实就是设计类的时候,将字段都设置为private私有的,如果想要外部对象进行访问/更改自己内部的状态,使用getter/setter函数即可。2.类与类关系越密切,耦合度越大假设有两个类,类A和类B,如果类A中的字段/方法,依赖于类B中的static字段/实例化对象中的实例字段,就称为类A和类B中有关系,如果这种关系越密切(字段使用越多),则代表类A和类B和耦合度大。3.迪米特法则 => 最少知道原则一个类对依赖自己的类知道的越少越好。

2025-07-16 18:33:28 655

原创 梳理Bean的创建流程

UserServiceProxy代理类会继承UserService类,来保证类型一致性,代理类会有一个字段target,类型就是原始类UserService,而且也会生成和原始类一样的方法,方法中会调用target字段中原始类对象的方法即可。其实是不是的,因为如果是这样的,那为什么在基类方法调用中是有值的,派生类中方法调用时是没有值的呢?生成的代理类继承的原始类中的字段是不会进行赋值的,所以在进行查看代理类中字段的时候,里面原始类拥有的字段是空的,但是在调用原始类的方法时,里面的字段就不是空了。

2025-07-15 23:52:14 968

原创 一致性Hash算法

假设现在将Hash函数的Hash值定为0-2^64-1,将这个些Hash值收尾相接,想象为一个圆环:Hash函数能输出的所有Hash值都分布在这个圆环上:假设现在根据三台机器的IP,计算出Hash值,分布在圆环上对应的位置上:数据应该存储到哪一台机器上呢?

2024-11-24 19:00:12 1057 1

原创 SpringBoot入门基础-重新相识吧-配置类(一)

在SpringBoot应用中,会默认将application.yml/application.properties加载到Spring上下文环境中,使用@ConfugurationProperties注解去加载已经被Spring加载到上下文中的配置信息(可以使用value/prefix指定属性配置的前缀),该注解可以自动将配置文件中的属性和JavaBean中的字段做映射。1.支持属性名前缀绑定,将属性名前缀相同的属性绑定到JaveBean中。

2024-11-23 16:22:42 1143

原创 史上最全-SpringBoot基础入门-重学SpringBoot吧!!!

当我们使用Maven构建项目的时候,会经历编译,测试,打包的过程,但是Maven传统打包速度太慢了,一个多模块项目打包需要很长很长的时间,所以Maven就开启了一个新的项目:Maven-mvnd项目,这个项目借助的是Gradle和Takari中的技术,以加速Maven的构建速度。maven-mvnd不能独立使用,必须依赖于Maven,可以将maven-mvnd看作是Maven的插件,辅助Maven的构建流程,使得构建流程可以更快更高效。

2024-11-20 15:52:41 1252

原创 AC自动机探究(一)

AC自动机是由字典树发展而来的,是字典树的加强版本,AC自动机就是由字典树发展而来的。字典树是可以使用树的方式,用最少的存储空间和较为低廉的时间成本存储/获取/删除字符串的集合结构。我们总要花点时间去做自己的事情,人生只有一次,勇敢一点,再差又能如何呢?又怎能甘愿措施机会呢?作者没更新完原理篇纯粹是因为,作者陷入了一个需要花费精力解决的事情,作者不要错失,因为作者渴望一个结果。

2024-11-15 19:05:00 1107

原创 Redis大解密之你真的懂String对象吗?

String看起来简单,但实际上有三种编码方式:INT编码:可以用long表示的整数都会使用这个编码,存储整数。EMBSTR:如果字符串小于等于阈值字节大小,就会使用EMBSTR编码。RAW:如果字符串大于阈值字节大小,就会使用RAW编码。EMBSTR和RAW的阈值大小限定和Redis的版本有关系,Redis3.2之前是39个字节,Redis3.2开始是44个字节(在Redis3.2的时候Redis中的字符串结构发生了一些变化)

2024-11-10 14:31:10 1197

原创 1.集合体系补充(1)

ListIterator是更为强大的迭代器,他扩展了Iterator接口,提供了更加强大的功能。ListIterator的定义如下:继承了Iterator并在接口内部定义了一些方法E next();java.util包下的集合体系是不支持多线程操作的,仅仅支持单线程使用,在多线程下没有同步机制,很有可能因为集合体系结构的改变,导致原本应该正常执行的代码在运行中出现异常,Java类库设计者为了避免这种情况的发生,推出了Fail-Fast快速失败机制,尽可能的抛出错误,避免更大的问题出现。

2024-11-09 13:31:13 988

原创 数据结构-IndexTree结构解析(一)

2024-11-07 09:45:25 1102

原创 万字解析-JAVA泛型编程高级(一)

Java泛型机制提供了使用extends来限定类型参数的上限类型。当我们想要进行限定Java的泛型类型为某一个类型的子类型的时候,就可以使用extends进行限定。类型擦除机制就是,Java中定义一个泛型类型的时候,无论什么时候,都会有一个与其对应的原始类型,这个原始类型就是去掉类型参数后的类型名称。即假设现在有一个类型是Comparable的对象被定义了,这个类型会有一个为Comparable的原始类型对应。

2024-10-30 13:34:02 1063 1

原创 UML类图全解析

画UML图的目的其实就是为了将自己的思想描述给别人,既可以对自己的抽象思路进行完整的实际复现,也可以将自己的思路呈现给别人去理解想法(软件是如何设计的),UML图在软件工程中很重要。只要在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译也无法通过。泛化关系其实就是继承关系,它是依赖关系的特例。实现关系就是A类实现了B接口,是依赖关系的特例。关联关系其实就是类与类之间的联系,是依赖关系的特例。关联关系具有导航性:即双向关系或者单向关系。关系具有多重性:1."1":标识有且仅有一个。

2024-10-05 19:48:22 1684

原创 深入分析几个难以理解的Comparator源码

泛型参数定义的是:T类型 => 对象的类型,U类型 => T类型对象中的比较字段的类型。返回值:关于T类型对象的Comparator,泛型是T类型。函数参数:使用Function这个函数式接口进行声明生成比较器的对象,以及比较逻辑。return id;传入一个Student类型的对象,返回一个Integer类型的数据。进行增加了一个card字段。return id;费时很久,赶出来的一篇文章,希望大家JAVA进步!!!爱意随风其,风止意难平。

2024-09-20 20:57:07 1245 1

原创 这次我终于懂JAVA集合框架啦 - 详解List接口(一)

List就是有序队列。List是一个接口,继承自Collection。其中主要进行实现基本的List接口功能的有AbstractList抽象类,AbstractSequentialList。其中AbstractList抽象类继承了AbstractionCollection并进行实现了List接口,AbstractList实现了List接口中除了size(),get(int location)之外的函数。

2024-07-28 13:40:30 1080

原创 不能放弃任务,线程池的任务拒绝策略应该如何设定?

将初始化的拒绝策略传到ThreadPoolExecutor中,就可以配置自定义策略。/*** 自定义线程池拒绝策略*/@OverrideSystem.out.println("失败啦");

2024-07-18 22:14:09 2520 2

原创 深入理解String类 --- 这次终于有人把String将明白啦!

如果我们使用StringAPI/+创建的字符串,无论是进行操作的是变量存储的字符串,还是进行操作的是字面量,得到的新字符串是不会子字符串常量池中进行创建一个新对象的,但是会在堆内存中进行创建一个字符串对象。编译器进行优化的时候,仅仅会优化 "a" + "b"这种情况下得到的字符串存储在字符串常量池中,其他情况下进行使用StringAPI无论是不是两个字符串字面量进行操作还是变量进行操作,存储的位置都是在堆内存中。

2024-07-16 21:12:00 972

原创 深入理解Session和Cookie(全网最全)

当用户进行登录的适合,服务端会将登录态信息(文本信息,一般是个json数据)返回给客户端,客户端进行存储这些登录态信息,当下次进行请求服务端接口的时候,会进行携带这些登录态信息。Cookie会被存储到请求标头中,是一个键值对信息文本,多个键值对使用;进行区分。Session时服务端的一种存储机制,用来进行跟踪用户的状态,Session在用户与服务器简历连接后创建,并在用户退出或者Session超时后销毁,并且Session默认是依赖于Cookie的(Session可以不依赖于Cookie)。

2024-07-15 19:51:19 2646

原创 登录注册和登录状态维护场景总结(一)

又听了一天白羊....今天分析了一些登录的场景和应用,下一期我会在更新更多的登录和保持登录态的技术实现,也会横向对比一些登录的优缺点,近期准备更新session的原理,加密技术,ThreadLocal深入理解等。

2024-07-14 21:50:40 1514

原创 四种限流算法以及限流实践

没想到自己居然听了一天白羊,麻了....

2024-07-13 17:23:56 1314

原创 百万数据量下如何对接口数据进行缓存预热(一)

这是作者进行记录自己学习redis缓存技术的记录贴,作者会持续更新下去的。

2024-07-06 09:40:18 846

原创 JAVA对象拷贝之Apache BeanUtils, Spring的BeanUtils的区别和源码分析(浅拷贝)

Spring的BeanUtils优于Apache的BeanUtils.都很安全。

2024-06-04 19:27:14 411

原创 The value of the ‘Access-Control-Allow-Origin‘ header in the response 关于后端配置允许跨域后前端请求依然失败得不到响应的问题

作者在进行联系session分布式登录的时候,遇到了一个问题,就是明明我的后端进行配置了允许跨域,但是前端依然请求失败,无法收到请求,并报出如下错误。

2024-06-02 22:07:35 1800

原创 由VUE3动画引发的对浏览器性能的思考

作者最近在研究vue3的动画应用的时候,突然看到了vue文档中的对于浏览器动画性能优化的部分,作者打算结合以前进行学习的浏览器高级的知识,进行细说一下动画的性能影响问题。

2024-05-25 20:59:01 1350 1

原创 使用TS封装axios(一)

自此,我们成功将请求类给配置好了,但是这个配置类仍然有大量的问题,比如全局响应失败拦截器进行执行后,后面的实例定义的响应失败拦截器和单独的函数接口定义的响应失败拦截器就不能进行捕获错误进行执行了,那这个该怎么解决呢?欢迎大家评论区进行讨论,我们在下一期将会讨论这个问题。

2024-03-04 10:38:33 768 1

原创 CSR模式前端单机部署流程(前后端分离)

本文章展示的是以阿里云服务器做出展示,系统版本是阿里云Alibaba Cloud Linux 3.2104 LTS 64位。

2024-02-29 14:59:07 623

原创 React-redux再见

经过这么多的铺垫我们终于把react-redux基础功能拿下了,时光荏苒,是说再见的时候了,最新的管理工具redux-toolkit登场了,虽有多年奉献,但新技术的发展必将干掉老技术,新人干掉旧人,长江后浪推前浪,不过,不要悲伤,hooks的登场也会把redux-toolkit干掉,历史的车轮滚滚转动,公平的只有时人利益。1.进行分块管理,如果我们将大量的reducer,初识数据,constants常量数据,action对象数据,写在区区几个文件中,那这简直太可怕了,难以维护,所以需要进行分包处理。

2023-12-05 20:26:36 516

原创 JS高级进阶之this究竟如何理解?

如果在定时器中进行调用函数的时候,即使你使用的是对象进行调用的函数,函数中的this也会直接去指向window,因为定时器函数是属于全局的函数,本身进行调用定时器的时候是window.setTimeout() 所以在定时器中进行调用函数的时候,函数中的对象又会指向window,但是如果你开启严格模式,又会指向undefined. 从这个角度也可以观察出函数中This的指向和方法也有紧密的影响。如下图中,show函数被绑定在arr对象的原型上,进行调用的时候,show函数中的this指向arr对象。

2023-11-26 16:49:36 662 2

空空如也

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

TA关注的人

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