自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(165)
  • 收藏
  • 关注

原创 设计模式篇---观察者模式

观察者模式的优点:1、表示层和数据逻辑层分离,并抽象了更新的接口,便于不同的表示层充当观察者角色。2、在观察目标和观察者之间建立了一个抽象的耦合。观察者目标只需要维护一个抽象的观察者集合即可,无需了解具体观察者。3、简化了一对多系统的难度,支持广播通信。4、符合开闭原则,增加新的观察者无需修改原代码。观察者模式的缺点:1、观察者太多的话,有性能问题。2、如果观察者和观察目标之间存在循环依赖,可能导致系统崩溃。

2024-02-24 18:41:26 1206

原创 《如何成为不完美主义者》总结

比如完美的社交主义者,他们的社交标准就是每次交流都能流畅无比(具体期待),长期以往就会形成一个恶性循环,每次与人交流时,他们的内心期待都会瞬间崩塌,一张嘴,要么内容欠缺,要么表达有误,要么话题无聊,要么紧张慌乱,这就是太高的具体期待,这样收获会更少,因为他们在期待与一个不完美的人打交道的不完美的世界里做到完美。关注过程,看淡结果。获得认同的主要原因有两个:1、他们缺乏自尊和自信,需要用自己的行为来获得他人的认可,比起自己的想法,他们更在意别人的意见,然而,从他人获得的信心与自己的信心是两码事。

2024-02-17 14:22:41 734

原创 设计模式篇---备忘录模式

【原发器】就是我们要进行备份的东西,【备忘录】和【原发器】基本是一样的,只不过可以把它理解为【原发器】的备份,【负责人】就是客户端的入口,通过它来进行备份和保存,但是它关联的是【备忘录】,并不是【原发器】。当我们保存一个对象在某一时刻的全部状态或部分状态,需要以后它能够恢复到先前的状态时,可以考虑备忘录模式。

2024-01-30 13:29:31 797

原创 设计模式篇---中介者模式

中介者模式将一个网状的系统结构变成了一个以中介者对象为中心的星型结构,也是一个“迪米特法则”应用的标准模式,各个对象之间不需要耦合,它们之间的沟通仅需要中介者即可。但因为中介者本身需要关联大量的对象,导致后续的维护比较困难。因此也可以做一个小个改善,将变的地方放到配置中进行维护。//放到配置中心@Override});

2024-01-21 18:02:32 766

原创 设计模式篇---命令模式(结合spring+动态代理实现开闭)

命令模式可以降低系统的耦合度,让请求者和接收者完全解耦,并且如果有新的命令加进来,也不用修改之前的代码,符合开闭原则。命令模式和外观模式有些类似,都是通过中间一个对象进行解耦。命令模式更适合操作的切换,比如开关用来开灯,也可以用来开电视,开关作为调用者,可以调用开灯的命令,也可以调用开电视的命令,让调用者和接收者解耦。外观模式更类似一组操作的集合,比如到家后,先换拖鞋,再开电视,最后坐在沙发上,这一系列的操作,可以放在外观层实现,让调用者和具体的子系统解耦。

2024-01-05 13:22:16 881

原创 设计模式篇---职责链模式

职责链模式通过建立一条链来组织请求的处理者,请求将沿着链进行传递。请求发送者无需知道请求被谁处理,实现了请求发送者和处理者之间的解耦。使用场景:1、当多个对象可以处理同一个请求,但每个对象处理的方式、时机不同,可以考虑使用职责链。2、在不明确指定接受者的情况下向多个对象中的一个提交一个请求。3、可动态指定一组对象处理请求,客户端动态的创建职责链来处理请求,还可以改变链中处理者之间的先后顺序。

2023-12-23 17:27:25 587

原创 设计模式篇---代理模式

静态代理比较好理解,代理类里面实现了代理的方法。而动态代理的代理对象是通过Proxy创建的,代理的方法是在InvocationHandler里的invoke方法里,和静态代理对比的话,代理类和代理方法是分离开的。

2023-12-10 19:30:52 1421

原创 设计模式篇---享元模式

当需要创建大量重复对象的时候,可以考虑使用享元模式。java中的String类,也是用了享元模式。当我们创建一个字符串,如果这个字符串对象第一次创建的话,就会放到享元池中,下次再创建内容相同的字符串对象,新创建的对象就会将它的引用指向第一次创建的对象,不会分配新的内存,以此来实现字符串的共享。打印结果:第三个为false,是因为一开始str4是一个对象,和str1的初始值不同,所以这两个的地址是不一样的。

2023-12-10 16:53:54 1159 1

原创 设计模式篇---外观模式

优点:1、它对客户端屏蔽了子系统,减少了客户端所需处理的对象数目,客户端代码变得很简单。2、它实现了子系统和客户端的松耦合关系,使得子系统的变化不会影响到客户端,只需要更改外观类即可。缺点:1、违背开闭原则,有新的子系统加入需要修改外观类。外观模式和建造者模式的思路很相似。外观模式是将复杂的子系统操作给外观类,客户端直接调用外观类即可;建造者模式是将复杂的操作给指挥者,指挥者内部指挥建造者创建,客户端直接关联指挥者即可。

2023-11-22 13:17:30 544 1

原创 设计模式篇---装饰模式

装饰模式的链路主要是通过继承方式实现的,主要思路是在装饰者类里面包了一层被装饰者,然后客户端调用装饰者的方法时,先实现装饰者自己的装饰方法,然后再实现被装饰者的方法。装饰者模式和代理模式很相似,装饰者是装饰类和被装饰类实现了相同的接口,代理是代理类和被代理类实现了相同的接口,都是增强了能力,但前者是增强了自己,让自己有更多的自定义能力,后者是让别人去处理自己的事情。一个是让自己能力变强,一个是让别人替自己办事。

2023-11-17 13:23:26 221

原创 设计模式篇---组合模式

组合模式很适用于处理树形结构的业务场景,主要组件为容器组件和叶子组件,从容器组件开始遍历,一层一层的处理当前组件的业务场景。如果想要扩展新的组件,也无需修改代码,符合开闭原则。当树形结构或者具有整体和部分的层次结构时,希望忽略整体和部分的差异,被客户端一致的对待,可以考虑使用组合模式。

2023-10-21 18:11:00 817

原创 @Cleanup() 使用注意事项

前端时间用lombok 的@Cleanup() 想实现线程池的自动关闭,因为使用不当,查bug查了好久,因此写篇博客纪念下,同时也希望读者可以跳过这个坑。@Cleanup修饰的对象,可以在对象资源使用结束后,自动关闭。

2023-10-21 16:04:59 331

原创 《自控力》读后感

最近读完了《自控力》这本书,读之前,我抱的期望并不太高,本以为是碗鸡汤,没啥本质的效果,并且外国的书读起来很费劲,啰里八嗦的。当我读了一部分后,思想开始发生了改变,这本书很少有观点,更多的是数据的论证,很客观,感觉还是有必要总结下的。外国人的思维和中国人思维确实有很大的不同,外国的大部分书籍中传达的更多的是让我们接纳自己,做自己就好,不需要得到别人的认可,就像《被讨厌的勇气》这本书一样,并不要总从自己身上找原因,自己已经很棒了。中国的书更看重的是教我们方法,教我们如何成为优秀的人。

2023-10-21 15:47:41 188 1

原创 设计模式篇---桥接模式

在使用桥接模式时应该识别出一个类具有两个独立的变化维度,就比如毛笔本身具有一个维度,需要画出颜色就需要另外一个维度–颜色,颜色本身并不属于毛笔中的属性,它和毛笔本身是一个“设置”关系,所以它也可以作为一个抽象类,和毛笔进行桥接。桥接模式使用的场景:1、如果一个系统需要在抽象化和具体化之间增加更多的灵活性,可以考虑通过桥接模式使它们建立一个抽象的管理关系。2、抽象部分和被“设置”部分可以通过继承的方式独立扩展而不相互影响。3、一个类存在多个独立的变化维度,而这些维度需要独立的进行扩展。

2023-09-24 16:09:58 313 1

原创 设计模式篇---抽象工厂(包含优化)

优化抽象工厂

2023-08-19 19:55:38 1167 5

原创 正则表达式必知必会

常用的正则表达式

2023-08-06 19:58:05 247

原创 设计模式篇---工厂方法(包含优化)

里氏替换:子类型必须能够替换掉他们的基类型。依赖倒置:高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象工厂方法比简单工厂更符合开闭原则,当有新的需求时,不用修改之前代码。客户端关注的是抽象的产品,具体工厂里返回的是具体的产品,这就必须让子产品永远可以替代父产品,我们维护每一个工厂类都是在管理具体的子产品。具体工厂对应抽象工厂也是同理。这就是里氏替换的应用。

2023-07-22 18:33:14 242 1

原创 设计模式篇---建造者模式

1、客户端不需要关注具体创建的细节,只需要指定创建者即可。2、相同的创建可以创建不同的产品对象。3、每个建造者不相互影响,符合开闭原则,便于扩展。4、可以控制创建对象的顺序。1、当各个产品之间的差异很大时,不适合使用建造者模式,因此其使用范围受到了一定的限制。2、当具体建造者过多时,如果父类扩展新的抽象方法,则维护起来比较困难。

2023-07-01 18:22:50 813

原创 设计模式篇---单例模式

当线程A走到上面代码的步骤二时,仅仅是完成了上面实例化对象三步中的第一步,但线程B这时候走到了上面代码的步骤一,判断不为null,则直接返回,此时对象还未实例化完成,这就发生了错误,所以需要使用volatile来进行修饰。单例类拥有一个私有的构造方法,保证外部无法通过new关键字来进行实例化,此外,它还包含一个静态私有成员变量和静态公有的工厂方法,该工厂负责检验实例的存在性并实例化自己,然后存储在成员变量中。故名思义,比较懒,用的时候在实例化,也叫做延迟加载。1、某个类只能有一个实例。

2023-06-17 17:45:43 1879

原创 设计模式篇---原型模式

使用原型实例指定待创建对象的类型,并通过复制这个原型来创建新的对象。

2023-06-10 18:31:05 1152

原创 volatile的实现简单概述

voaltile实现简单概述

2023-05-13 15:46:07 585

原创 锁消除、锁粗化、偏向锁、适应性锁

锁消除、锁粗化、偏向锁、适应性锁

2023-03-19 22:21:35 625

原创 【进阶篇】线程的硬件基础

线程实现缓存冲刷和刷新的硬件原理

2023-02-19 19:17:07 542

原创 线程的高效利用——线程池

线程池基础。

2023-01-02 21:31:40 395 1

原创 线程死锁、锁死、饥饿、活锁讲解

死锁的产生原因以及规避方法等。

2022-12-10 22:41:11 1410 1

原创 java中“冷门”工具类的总结

一些不常用的工具类总结。

2022-11-27 22:15:59 702

原创 《认知觉醒》读后感

认知觉醒,成为自己的主人。

2022-11-13 13:15:58 1243 3

原创 ThreadLocal原理讲解

ThreadLocal的原理、使用、注意事项。

2022-11-05 18:49:05 642 3

原创 多线程之生产者消费者模式

线程之间的协作,生产者和消费者线程模式的介绍。

2022-10-22 20:23:32 2153 2

原创 Caffeine缓存的使用

jvm缓存之Caffeine的使用。

2022-10-15 20:16:47 4861 1

原创 CountDownLatch和CyclicBarrier的使用

countDownLatch 和CyclicBarrier实现多线程操作。

2022-09-18 19:36:20 428

原创 一篇文章带你彻底搞懂wait/notify

wait、notify以及条件变量的深入学习。

2022-08-27 23:50:33 1438 1

原创 java中集合遍历方法的选择

for循环和for i 的选择

2022-08-11 13:27:57 280 1

原创 idea中设置文件不进行 git commit

idea设置文件不进行commit的方法

2022-08-11 09:57:20 7524 1

原创 java中的线程同步机制讲解

Java中的锁、volatile、屏障原理。

2022-07-24 20:58:46 368

原创 Arrays.asList和java.util.Collections的“坑”

Arrays.asList不要踩坑

2022-07-21 13:42:15 375

原创 volatile保证原子性、可见性、有序性的验证

volatile保证原子性、可见性、有序性的原理。

2022-06-05 21:40:14 1559

原创 Thread与Runnable的选择

Thread() 和Thread(Runnable target) 方法的选择

2022-05-22 15:30:17 432 1

原创 快速排序的实现(单边循环、双边循环、非递归的实现)

快排的三种实现方式,灵魂在于递归。

2022-05-15 23:05:29 1755 3

原创 冒泡排序的优化

文章目录前言原版第一版第二版第三版总结前言学过的内容还是需要总结的,这里就亡羊补牢了。冒泡排序作为初级算法中最常见的算法,我们在熟悉不过了,它有很多的演变形式,不要只盯着最初版本的双层for循环了。原版我们现在要对一个无序数组进行从小到大的排序,写一个冒泡排序的话,最常见的代码如下: public static void test1(int[] arrays) { int size = arrays.length; //最外层for循环控制次数,2个数需要比较1次

2022-05-04 16:06:48 1318

空空如也

空空如也

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

TA关注的人

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