自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Bistoury】Bistoury功能分析-在线debug

去哪儿开源的应用诊断工具去哪儿一站式 Java 应用诊断解决方案 - Bistoury。

2024-10-12 20:17:18 1200 2

原创 【原理】【Java并发】【synchronized】适合中学者体质的synchronized原理

【Java并发】【synchronized】适合初学者体质入门的synchronized一定很想了解synchronized更多更多吧!没问题,主播来咯!3、2、1,上文章📖Monitor(监视器)并不是直接存储在对象头()中,但对象头中的信息会指向 Monitor。具体来说,当对象被用作锁时,JVM 会根据锁状态(无锁、偏向锁、轻量级锁、重量级锁)在对象头中存储不同的信息。只有在重量级锁状态下,对象头中的指针才会指向一个独立的 Monitor 对象(位于堆内存中)。// 核心字段。

2025-03-13 21:03:56 1256

原创 【Java并发】【synchronized】适合初学者体质入门的synchronized

这一篇同样是sychronzied的入门篇,不会涉及底层原理和实现,很适合初学者的学习。好了, 不废话了,让我们马上开始吧🤗是 Java 中的关键字,用于实现线程同步,确保多个线程在访问共享资源时不会发生冲突。它可以修饰方法或代码块,保证同一时间只有一个线程执行被修饰的代码,从而避免数据不一致问题。简单易用只需在方法或代码块上添加关键字即可实现线程同步,无需手动管理锁的获取和释放。自动释放锁当同步代码块执行完毕或发生异常时,锁会自动释放,避免死锁风险。内置锁优化JVM 对。

2025-03-10 22:00:08 585

原创 【原理】【Java并发】【volatile】适合初学者体质的volatile原理

在上一篇中,【Java并发】【volatile】适合初学者体质的volatile我们知道了volatile的特性,而这一篇,我们将更进一步,我们这次要明白这些特性是怎么实现的👆点上关注不迷路,让我们速速开始,探索这volatile的原理吧!因为我们这篇说的是volatile关键字,尽量说和volatile不相关的定义内容。

2025-03-06 07:39:11 804

原创 【Java并发】【volatile】适合初学者体质的volatile

不太想上来就直说JMM啥的,我们为什么不从最简单的使用开始说起呢?这一期主播会把你当成新手教学。我当年初学volatile的时候上来就是库库一顿原理分析,给幼小的我造成了不小的伤害,初学不需要 懂那么多🤭具体的实现原理,我们放到下一期讲。期待的uu们,现在可以关注主播,跟上主播的节奏!!!当你阅读dalao的框架源码的时候,你是否会见到这样一个关键字 - - -volatie,诶,你是否会好奇,为什么要加它?加了它有什么作用?

2025-03-04 07:24:59 770

原创 【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码

当我们创建一个的时候,你是否会好奇🤔,它到底发生了什么?我传的拒绝策略、线程工厂是啥时候被使用的?核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?主播马上从源码的角度带你们探索神秘线程池的世界。public ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量int maximumPoolSize,//线程池的最大线程数。

2025-03-01 23:10:06 886

原创 【Java并发】【线程池】带你从0-1入门线程池

线程池(Thread Pool)是一种复用线程资源的机制,通过预先创建一定数量的线程,并管理它们的生命周期,避免频繁创建/销毁线程带来的性能开销。线程池的核心思想是任务提交与执行解耦:你只管提交任务,线程池负责调度和执行。通过实现接口,可以定制符合业务需求的策略,例如记录日志、持久化存储或异步重试。@Override// 记录任务信息logger.warn("任务被拒绝: {}", task);// 异步重试(例如提交到另一个线程池或延迟队列)if (!

2025-02-25 22:13:46 842

原创 【设计模式】【创建型模式】单例模式(Singleton)

单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。它常用于需要全局唯一对象的场景,如配置管理、连接池等。全局唯一访问点单例模式确保一个类只有一个实例,并提供一个全局访问点,方便其他模块或组件共享该实例。示例:配置管理器、日志记录器等。节省资源对于创建成本高的对象(如数据库连接池、线程池),单例模式可以避免重复创建和销毁,节省系统资源。示例:数据库连接池通常只需要一个实例来管理所有连接。保持一致性单例模式确保全局状态的一致性,避免多个实例导致状态冲突。

2025-02-21 08:14:51 1392

原创 【设计模式】【创建型模式】工厂方法模式(Factory Methods)

工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟到子类。简单工厂方法就是所有的产品都交给一个工厂来处理,而工厂方法是交给多个工厂。解耦工厂方法模式将对象的创建与使用分离,客户端代码只需要依赖抽象的工厂接口和产品接口,而不需要关心具体的实现类。例如,在 Spring 框架中,客户端通过获取 Bean 对象,而不需要知道具体的 Bean 实现类。符合开闭原则。

2025-02-20 21:41:46 728

原创 【设计模式】【创建型模式】抽象工厂模式(Abstract Factory)

抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不需要指定具体的类。简单来说,抽象工厂模式是工厂方法模式的升级版,它能够创建一组相关的对象,而工厂方法模式只能创建一种对象。保证产品家族的一致性抽象工厂模式确保创建的对象是同一家族的,比如现代风格的沙发、茶几、电视柜,避免了风格不一致的问题。解耦客户端代码客户端代码只依赖于抽象工厂和抽象产品接口,不依赖于具体的实现类,符合依赖倒置原则。符合开闭原则。

2025-02-20 08:22:48 774

原创 【设计模式】【创建型模式】原型模式(Prototype)

原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。原型模式的核心是克隆(Clone),即通过复制现有对象来创建新对象。Java 提供了 Cloneable 接口和 clone() 方法来实现对象的浅拷贝。高效创建对象通过复制现有对象来创建新对象,避免了重复的初始化过程,特别适用于创建成本较高的对象(如数据库连接、复杂计算对象)。

2025-02-19 21:42:12 1340

原创 【设计模式】【创建型模式】建造者模式(Builder)

分离构建与表示将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。客户端不需要知道对象的具体构建细节。灵活性和可扩展性可以逐步构建对象,支持动态配置。新增构建步骤或修改构建顺序非常方便。代码可读性和可维护性链式调用()使代码更加简洁和直观。将复杂的构建逻辑封装在建造者类中,客户端代码更清晰。避免构造方法参数过多通过逐步设置属性,避免了构造方法参数过长的问题(保证对象的一致性对象在完全构建之前不会被使用,确保对象的一致性和完整性。

2025-02-19 08:22:52 1325

原创 【设计模式】【结构型模式】代理模式(Proxy)

代理模式(Proxy Pattern)是一种结构型设计模式,允许你提供一个代理对象来控制对另一个对象的访问。代理对象在客户端和目标对象之间起到中介作用,可以在不改变目标对象的情况下增加额外的功能或控制访问。职责清晰代理对象负责处理与核心业务无关的逻辑(如权限检查、日志记录、延迟加载等),而真实对象只需关注核心业务逻辑。符合单一职责原则。增强功能在不修改真实对象的情况下,通过代理对象增强功能(如事务管理、缓存、延迟加载等)。解耦。

2025-02-18 21:56:25 989

原创 【设计模式】【结构型模式】享元模式(Flyweight)

享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享对象来减少内存使用,特别适用于存在大量相似对象的情况。它的核心思想是将对象的内在状态(不变的部分)与外在状态(变化的部分)分离,从而减少对象的数量。减少内存占用通过共享内在状态,减少系统中对象的数量,从而降低内存使用。特别适用于存在大量相似对象的场景。提高性能减少对象的创建和销毁次数,降低内存分配和垃圾回收的开销。在需要频繁创建和销毁对象的场景中,性能提升尤为明显。优化资源管理。

2025-02-18 08:23:39 955

原创 【设计模式】【结构型模式】组合模式(Composite)

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构来表示“部分-整体”的层次关系。组合模式使得客户端可以统一处理单个对象和组合对象,而无需关心它们的具体类型。将对象组织成树形结构,使得对单个对象和组合对象的操作具有一致性。统一处理单个对象和组合对象核心优势:客户端无需区分处理的是叶子节点(单个对象)还是复合节点(组合对象)。案例:在文件系统中,无论是文件(叶子节点)还是文件夹(复合节点),都可以统一调用display()方法展示信息。简化客户端代码。

2025-02-17 21:48:42 1246

原创 【设计模式】【结构型模式】外观模式(Facde)

一种结构型设计模式,通过为子系统中的一组接口提供一个统一的高层接口(称为外观),来简化客户端与复杂子系统的交互过程。其本质是建立抽象层来隔离复杂度。简化客户端调用外观模式通过封装复杂的子系统调用,提供一个简单的高层接口。客户端不再需要了解子系统的内部细节,只需调用外观类的方法即可完成复杂操作。例如,Spring的封装了JDBC的繁琐操作,开发者只需调用query()或update()方法,而无需关心连接管理、异常处理等细节。降低耦合度客户端只依赖外观类,而不直接依赖子系统。

2025-02-17 08:03:27 1005

原创 【设计模式】【结构型模式】桥接模式(Bridge)

桥接模式(Bridge Pattern)是一种结构型设计模式,核心思想是**将抽象与实现分离,让它们可以独立变化。**简单来说,它像一座“桥”连接了两个维度的变化,避免用继承导致代码臃肿。解耦抽象与实现抽象层和实现层可以独立变化,互不影响。例如,JDBC中Connection接口(抽象层)和Driver实现(实现层)可以分别扩展。提高扩展性新增抽象类或实现类时,无需修改现有代码,符合开闭原则。例如,新增数据库驱动只需实现Driver接口,无需修改JDBC核心代码。减少类爆炸。

2025-02-16 21:04:20 836

原创 【设计模式】【结构型模式】装饰者模式(Decorator)

装饰者模式(Decorator Pattern)是 Java 中常用的结构型设计模式,它能在不修改原有对象结构的前提下,动态地为对象添加额外的职责。动态扩展功能无需修改原有代码,运行时动态添加功能案例Java I/O流中,动态为添加缓冲功能避免类爆炸相比继承,装饰者模式通过组合实现功能扩展,避免子类数量指数级增长案例:电商订单系统中,3种附加服务只需3个装饰类,而不是7个子类符合开闭原则对扩展开放:新增装饰器不影响现有代码对修改封闭:无需修改组件接口和具体组件案例。

2025-02-16 11:28:03 747

原创 【设计模式】【结构型模式】适配器模式(Adpter)

适配器模式是Java中常用的结构型设计模式,它的核心作用就像现实中的电源转换器一样——让原本不兼容的两个接口能够协同工作。解耦性将客户端与具体实现分离,客户端只依赖目标接口,无需关心底层实现。例如:Spring MVC 的只依赖接口,不关心具体Controller的实现。复用性可以复用现有的类或第三方库,而无需修改其源码。例如:通过复用的功能。扩展性新增适配器即可支持新的实现,符合开闭原则。例如:Spring MVC 新增一种Controller类型时,只需添加对应的。透明性。

2025-02-15 20:56:01 747

原创 【设计模式】【行为型模式】解释器模式(Interpreter)

解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义语言的语法表示,并提供一个解释器来处理该语法。它通常用于需要解释和执行特定语言或表达式的场景。易于扩展语法规则通过添加新的表达式类,可以轻松扩展语法规则,符合 开闭原则(对扩展开放,对修改封闭)。实现简单语法解析对于简单的语法规则,解释器模式提供了一种直观的实现方式,将语法规则分解为多个表达式类。解耦语法解析与执行将语法解析逻辑封装在表达式类中,与业务逻辑解耦,使代码更清晰、更易维护。适合领域特定语言(DSL)

2025-02-15 13:40:22 986

原创 【设计模式】【行为型模式】备忘录模式(Memento)

备忘录模式(Memento Pattern)是一种行为设计模式,用于在不破坏封装性的前提下,捕获并外部化一个对象的内部状态,以便在需要时恢复该状态。它通常用于实现撤销操作或保存对象的历史状态。封装性好备忘录模式将对象的状态保存在一个独立的Memento对象中,避免了直接暴露对象的内部状态,保持了对象的封装性。简化状态管理通过将状态管理的逻辑集中到Caretaker中,避免了状态管理代码分散在业务逻辑中,使代码更清晰、更易维护。支持撤销/重做功能。

2025-02-14 22:08:10 1205

原创 【设计模式】【行为型模式】访问者模式(Visitor)

访问者模式(Visitor Pattern)是一种行为设计模式,允许你将算法与对象结构分离。通过这种方式,可以在不改变对象结构的情况下,向对象结构中的元素添加新的操作。开闭原则优点:新增操作时只需添加新的访问者类,无需修改现有的对象结构。示例:如果需要为类结构添加新的操作(如导出为XML),只需实现一个新的访问者类。单一职责原则优点:将相关操作集中在一个访问者类中,便于维护和扩展。示例:将“计算面积”和“导出为JSON”的逻辑分别放在不同的访问者类中。灵活性。

2025-02-14 08:23:19 1203

原创 【设计模式】【行为型模式】迭代器模式(Iterator)

迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种顺序访问聚合对象中元素的方法,而不需要暴露其底层表示。迭代器模式将遍历逻辑从聚合对象中分离出来,使得聚合对象可以专注于数据存储,而迭代器负责遍历。解耦遍历逻辑与聚合对象将遍历逻辑从聚合对象中分离出来,聚合对象可以专注于数据存储,而迭代器负责遍历。符合单一职责原则。统一遍历接口提供了一种统一的方式来遍历不同类型的聚合对象(如数组、链表、树等)。客户端代码无需关心聚合对象的内部结构。支持多种遍历方式。

2025-02-13 22:24:32 993

原创 【设计模式】【行为型模式】中介者模式(Mediator)

中介者模式(Mediator Pattern)是一种行为设计模式,旨在减少对象之间的直接依赖,通过引入一个中介者对象来协调多个对象之间的交互。这种模式特别适用于对象间存在复杂交互的场景,能够简化系统结构并降低耦合。中介者模式的核心是封装对象间的交互,避免对象直接相互调用,而是通过中介者进行通信。这样,对象只需与中介者交互,而不需要知道其他对象的存在。降低耦合度对象之间不再直接依赖,而是通过中介者进行通信。每个对象只需知道中介者,而不需要知道其他对象的存在。集中管理交互逻辑。

2025-02-13 07:42:37 850

原创 【设计模式】【行为型模式】观察者模式(Observer)

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。解耦:主题(Subject)和观察者(Observer)之间是松耦合的(主题不需要知道观察者的具体实现,只需要知道观察者接口,观察者也不需要知道主题的具体实现,只需要实现观察者接口)动态管理依赖:观察者可以动态注册和注销,而不需要修改主题的代码。支持运行时动态添加或移除观察者,灵活性高。符合开闭原则。

2025-02-12 21:23:10 1198

原创 【设计模式】【行为型模式】状态模式(State)

状态模式(State Pattern)是一种行为设计模式,允许对象在其内部状态改变时改变其行为,使其看起来像是改变了类。状态模式的核心思想是将对象的状态封装成独立的类,并将行为委托给代表当前状态的对象。消除复杂的条件语句:状态模式将状态相关的行为分散到各个状态类中,避免了大量的if-else或语句,使代码更加清晰。符合开闭原则:新增状态时,只需添加新的状态类,而无需修改现有代码。修改某个状态的行为时,只需修改对应的状态类,不会影响其他状态。提高代码的可读性和可维护性。

2025-02-12 07:48:16 1068

原创 【设计模式】【行为型模式】命令模式(Command)

命令模式是一种行为设计模式,它将请求或操作封装为对象,从而使你可以用不同的请求对客户进行参数化,并支持请求的排队、记录、撤销等操作。命令模式的核心是将“请求”封装为独立的对象,包含执行操作所需的所有信息。这样,你可以将请求与执行者解耦,并通过参数化、队列或日志等方式管理请求。解耦调用者和接收者:调用者(Invoker)不需要知道具体的接收者(Receiver)是谁,只需要调用命令对象的 execute() 方法。降低了系统的耦合度,使得调用者和接收者可以独立变化。

2025-02-11 21:37:36 1164 1

原创 【设计模式】【行为型模式】职责链模式(Chain of Responsibility)

职责链模式是一种行为设计模式,它允许你将请求沿着一条链传递,直到有对象处理它为止。每个对象都有机会处理请求,或者将其传递给链中的下一个对象。职责链模式:把多个处理对象连成一条链,请求按顺序传递,谁适合处理就处理,处理不了就传给下一个。优点解耦:发请求的不用关心谁来处理,处理者之间也不互相依赖。灵活:能动态调整链条顺序,或增删处理步骤。单一职责:每个处理者只做自己该做的事。缺点可能没人处理:链条没配好时,请求可能“走完全场”也没结果。性能问题:链条太长时,传递过程拖慢速度。调试麻烦。

2025-02-10 22:46:08 1263

原创 【设计模式】【行为型模式】策略模式(Strategy)

策略模式是一种行为设计模式,允许在运行时选择算法或行为。它将算法封装在独立的类中,使得它们可以互换,而不影响客户端代码。策略模式通过将算法或行为封装到独立的类中,提供了一种灵活、可扩展的方式来管理代码中的变化部分。它的核心优势是解耦和动态切换,但也会带来类的数量增加和客户端使用成本的问题。适用于需要动态切换行为、避免重复代码或隔离算法实现细节的场景。优点●灵活性:允许在运行时动态切换算法或行为,无需修改客户端代码。●可扩展性:新增策略时只需添加新的策略类,符合开闭原则(对扩展开放,对修改关闭)。

2025-02-09 20:57:14 1177 2

原创 【设计模式】【行为型模式】模板方法模式(Template Method)

模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个算法的框架,并允许子类在不改变算法结构的情况下重新定义算法的某些步骤。模板模式通过将算法的通用部分放在父类中,而将可变部分留给子类来实现。● 抽象类(Abstract Class):定义一个算法的框架,包含一个模板方法和一些基本操作(可以是抽象的或已经实现的)。

2025-02-08 23:08:03 1043 4

原创 【IDEA&Maven】【其他核心概念】【学习笔记】Maven基础后续

对上一个笔记的开摆后续罢了

2022-04-09 16:04:50 219 2

原创 【Maven】【学习笔记】关于我把war包打成pom包导致报错,我直接过来嗯学,发现maven有点东西这件事

包含基本操作命令行,如何生成maven工程,如何生成web工程,依赖,继承....等概念

2022-04-08 08:31:25 1103 5

原创 【MyBatis】【动态SQL】【缓存】【逆向工程】【分页插件】【学习笔记】MyBatis开学很好学3.0

3.0毕业,3.0毕业,3.0毕业,3.0毕业,3.0毕业,3.0毕业...

2022-04-05 12:36:59 2183 2

原创 【MyBatis】【获取参数】【各种查询功能】【特殊SQL】【ResultMap】【学习笔记】MyBatis开学很好学2.0

3.0就毕业了,给我嗯充

2022-04-05 00:19:22 313 2

原创 【Git】【IDEA集成Git】【学习笔记】关于昨晚我被问会不会Git,我不会,所以我赶快学习,发现我是个铸币这件事

关于我被问会不会Git,所以我赶快去学习...

2022-04-02 23:54:17 1097 1

原创 【MyBatis】【搭建】【基础CRUD】【核心配置文件】【学习笔记】MyBatis开学很好学1.0

搭建MyBatis,MyBatis的CRUD,MyBaits的核心配置文件...

2022-03-29 08:23:31 2336 2

原创 【SpringMVC】【HttpMessageConverter】【文件的上传和下载】【拦截器】【异常处理】【学习笔记】Spring开学很好学1.5

HttpMessageConverter、文件的上传和下载、拦截器、# 异常处理

2022-03-26 10:55:01 623 3

原创 【SpringMVC】【域对象共享数据】【SpringMVC的视图】【RESTful】【学习笔记】Spring开学很好学1.4

域对象存取数据,SpringMVC的视图,还有RESTful的由....

2022-03-21 21:53:17 538 1

原创 【SpringMVC】【@RequestMapping注解】【获取请求参数】【学习笔记】Spring开学很好学1.3

@RequestMapping从value属性、method属性、params属性、headers属性、进行学习,获取请求参数从...

2022-03-19 12:16:54 497 1

原创 【Spring】【JdbcTemplate】【事务处理】【学习笔记】Spring开学很好学1.2

对数据库的CRUD,和如何对数据库,优雅的CRUD罢了

2022-03-16 19:58:32 546 4

空空如也

空空如也

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

TA关注的人

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