自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解密设计模式:别再被内存问题困扰了!聊聊你可能忽略的“享元模式”

设计模式中的享元模式是一种优化内存使用的精妙方案,它通过分离对象的内在状态(共享部分)和外在状态(独有部分)来大幅减少内存消耗。文章通过游戏开发和Java字符串常量池两个实例,生动展示了享元模式的实际价值,并提供了完整的Java代码实现,包括享元接口、享元类、享元工厂和客户端调用。同时,文章还澄清了享元模式与单例模式的区别,前者关注共享相似对象的内存,后者保证全局唯一性。享元模式的核心思想是"分治",将复杂问题分解为可共享和不可共享的部分,从而实现高效复用。

2025-09-04 23:30:00 617

原创 揭秘设计模式:优雅地为复杂对象结构增添新功能-访问者模式

访问者模式是一种行为型设计模式,它允许在不修改对象结构的前提下为其添加新的操作。通过将数据结构与操作逻辑分离,访问者模式完美解决了传统方法中因类型判断导致的代码臃肿问题。该模式利用双分派机制,在元素类中定义accept方法接收访问者对象,再由访问者实现针对不同元素的具体操作。当需要新增功能时,只需创建新的访问者类即可,无需修改现有元素类,符合开闭原则。典型的应用场景包括文档处理、编译器设计等需要处理复杂对象结构的系统。

2025-09-03 21:45:00 752

原创 揭密设计模式:像搭乐高一样构建功能的装饰器模式

装饰器模式是一种动态扩展对象功能的设计模式,通过组合而非继承的方式为对象添加新职责。核心思想是定义一个统一接口,基础对象和装饰器都实现该接口,装饰器持有基础对象的引用并增强其功能。以咖啡店为例,基础黑咖啡可被牛奶、糖等装饰器动态组合,灵活添加新功能而不修改原有代码。该模式符合开闭原则,避免子类爆炸,广泛应用于Java I/O流、Spring AOP等场景。关键优势在于运行时动态组合功能,增强代码可维护性和扩展性。

2025-09-02 22:00:00 710

原创 揭秘设计模式:从UI按钮到Spring事件的观察者模式

观察者模式是一种行为型设计模式,它定义对象间的一对多依赖关系,当被观察者状态改变时,所有依赖它的观察者会自动收到通知并更新。该模式包含三个核心角色:观察者接口(定义更新方法)、被观察者(管理观察者列表和通知机制)和具体实现类。通过Java代码示例展示了如何实现UI按钮点击事件的解耦,使业务逻辑与UI逻辑分离。观察者模式广泛应用于事件处理系统,如Spring事件机制,能有效降低组件间的耦合度,提升系统灵活性和可扩展性。典型应用场景包括UI事件监听、消息通知系统等需要松耦合通信的场景。

2025-09-01 20:15:00 574

原创 XXL-JOB 失败任务处理:深度解析其工作机制与源码实现

XXL-JOB失败任务处理机制解析:通过执行器检测异常、显式结果码、超时及宕机等失败情况,并将失败信息上报调度中心。调度中心通过AdminBizImpl.callback处理回调,更新日志状态并触发重试或告警。核心组件JobFailMonitorHelper管理重试队列,JobThread监控任务超时,ExecutorRegistryThread通过心跳机制检测执行器状态。该机制确保任务失败后能自动重试或告警,保障系统稳定性。

2025-09-01 20:00:00 786

原创 深入理解解释器模式:构建可扩展的语言解释器

讨了解释器模式(Interpreter Pattern),一种行为型设计模式。文章首先通过一个简单的数学表达式求值示例,阐述了其核心思想:将语言的文法规则定义为一系列类,并构建一棵语法树来解释和执行表达式。文章详细解析了该模式的四大核心角色:抽象表达式、终结符表达式、非终结符表达式和上下文。接着,通过对比组合模式和责任链模式,文章清晰地辨析了解释器模式在结构和行为上的独特之处,强调了其**“自由组装”和递归处理**的特性。

2025-08-29 09:20:55 624

原创 SQLi-Labs 1-10道题思路整理

本文总结了SQLi-Labs第1-10题的解题思路。前四题主要考察不同类型注入:Less-1单引号字符串注入(需闭合引号+union查询);Less-2整数型注入(无需引号);Less-3/4分别引入括号+单引号/双引号变体(需额外处理闭合符号)。从Less-5开始难度升级,引入双注入概念,成功时无直接输出(需盲注技巧),Less-6延续双引号注入但使用双引号变体。每道题都通过分析源码漏洞点(如未过滤的SQL拼接),给出具体测试和注入方法(如order by确定列数、union select获取信息)。随着

2025-08-14 18:31:44 895

原创 k8s搭建的一些问题记录

k8s 搭建 问题记录

2022-10-03 01:27:41 9107

原创 一次springboot日志不生效问题深入分析

记录一次springboot项目排查log4j2日志不生效的问题分析。

2022-09-23 10:16:53 1467

原创 spring-session的一次问题排查

spring-session 一次问题排查

2021-12-14 20:07:25 703

原创 dubbo SPI梳理

SPI梳理0.测试代码1.getExtensionLoader(Protocol.class)public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { if (type == null) { throw new IllegalArgumentE...

2019-08-21 17:26:05 190

原创 mybatis 动态sql 源码解析

mybatis 动态sql测试例子java程序xml文件调试直接进入到解析select语句的地方进入解析xml进入buildStatementFromContext,依然是交给XMLStatementBuilder解析核心部分创建SqlSource交给XMLLanguageDriver后再转到XMLScriptBuilder先读取xm...

2019-04-29 17:12:00 1205

原创 mybatis XMLScriptBuilder

解析XMLScriptBuilderXMLScriptBuilder解析sql语句里面的标签XMLScriptBuilder内部逻辑主入口,最终返回对MixedSqlNode的封装,根据isDynamic决定具体SqlSource的实现类。MixedSqlNode的生成逻辑我去,node.newXNode()里面还有解析逻辑,调试才看出来,怎么多了一次${}解析...

2019-04-23 13:44:25 593

原创 java - List深入

什么是ListList接口中常用的三种linkedList,ArraylList,Vector。list接口定义了,我们开发需要的容器操作,是一个有序,值可重复的容器。ArrayListArrayList本质上是一种数组,它不仅仅是数组,还是一个Resizable-array的数组 上面截图也描述的非常清楚,它是线程不安全的。 Vector则是线程安全的,线程安全所带来的弊端则...

2018-04-13 16:03:39 369

原创 xml解析---java的DOM,SAX,JDOM,DOM4J

xml是一种常见的文本格式,可以为我们提供各系统件信息传输的标准,以及信息持久化存储的模式。通常在接口设计上,报文格式往往就是json和xml两种。json来说更轻量一点,解析也相对容易。然而现在是xml的时间。。。java中解析xml方式常见有4种 官方提供的两种 1. DOM 2. SAX 扩展方式2种 1. JDOM 2. DOM4JDOM是 W3C 组织推荐的处理 ...

2018-02-19 22:50:51 355

原创 反射

java中提供了一种叫做反射的方式,这个东西能够帮助我们架构更加的优美。之前在项目中,遇到一个问题:对外提供接口,需要根据前端请求的url来进入不同的逻辑执行方法中。如果简单粗暴的通过添加多个if来控制进入不同的方法,就显得不专业了。 新增功能需要添加if判断,完全远离了设计本质。这篇文章并不是深入其原理,仅在使用层面上花费口舌。(哎,能力有限啊,后续慢慢深入学习)java为我们提供了...

2018-02-18 16:16:42 256

原创 代理模式

代理模式以下是个人知识储备有限,理解有限,大牛勿喷。 代理模式就我们生活中的代理服务,火车票代售处一样,能够提供原本服务器或火车站原本的功能,同时提供一些额外的服务。下面举出一个场景,虽然场景不是很好,用 车和售票处这些会比较好理解。 但是学习其中的本质就好了。脱离场景学习本质,能够不用根据场景去思考代码的存在意义,而不是机械的照搬,这才是学会了。同时一个设计模式的来源又...

2018-02-17 16:06:28 1171

原创 jdbc记录

jdbc为java开发者提供了操作数据库标准的一系列API越来越多的orm框架让我们逐渐忘记基本的jdbc操作,java没有帮助我们把一些基本步骤封装进去,需要我们自己去写一些步骤过程或者orm帮我们封装好。1.jdbc基本步骤加载对应数据库的jdbc驱动连接对应的数据库获取对应数据库的连接创建statment对象拼装需要执行的sql语句执行sql处理sql执行的结果关...

2018-02-16 17:17:56 185

原创 mybatis-generator相关配置

mybatis-generator相关配置详解留给自己平时查看记录。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd

2018-02-15 18:58:17 263

原创 git 平时积累

git取消未commit的缓冲文件 git reset --mixed git 取消已经commit的缓冲文件 git rm --cached 文件名

2018-02-15 00:16:07 283

原创 ORA-01950:对表空间 'xxx' 无权限

项目中遇到 登陆时 出现ORA-01950:对表空间 'xxx' 无权限,执行 ALTER USER   用户名 QUOTA UNLIMITED ON表空间;   赋予用户对某个表空间的访问权限ALTER USER 用户名QUOTA 1K ON 表空间; //可以在表空间system中使用1K的空间....

2017-02-04 16:06:03 85665 3

空空如也

空空如也

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

TA关注的人

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