自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mybatis源码剖析

MyBatis源码分析系列博客,作者红薯:https://www.cnblogs.com/yiwangzhibujian/p/6111446.html。MyBatis源码分析系列博客,作者风雪之隅:http://www.cnblogs.com/davidwang456/p/3871245.html。《MyBatis技术内幕》一书,作者Simon Says:https://book.douban.com/subject/27604960/

2023-04-05 23:36:54 119

原创 设计模式之装饰器模式

这段代码你是否熟悉,相信学习java开发到字节流、字符流、文件流的内容时都见到了这样的代码,一层嵌套一层,一层嵌套一层,字节流转字符流等等,而这样方式的使用就是装饰器模式的一种体现。,可能有的小伙伴会想到继承、AOP切面,当然这些方式都可以实现,但是使用装饰器模式会是另外一种思路更为灵活,可以避免继承导致的子类过多,也可以避免AOP带来的复杂性。在preHandle的实现中可以看到,这里只关心扩展部分的功能,同时不会影响原有类的核心服务,也不会因为使用继承方式而导致的多余子类,增加了整体的灵活性。

2023-03-20 14:08:42 164

原创 设计模式之工厂方法模式

但这样也会带来一些问题,比如有非常多的奖品类型,那么实现的子类会极速扩张。由于营销场景的复杂、多变、临时的特性,它所需要的设计需要更加深入,否则会经常面临各种紧急CRUD操作,从而让代码结构混乱不堪,难以维护。这种设计模式也是 Java 开发中最常见的一种模式,它的主要意图是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。从上面可以看到每一种奖品的实现都包括在自己的类中,新增、修改或者删除都不会影响其他奖品功能的测试,降低回归测试的可能。

2023-03-20 11:38:27 178

原创 设计模式之组合模式

在这里提供了调用的通过组织模式创建出来的流程决策树,调用的时候传入了决策树的ID,那么如果是业务开发中就可以方便的解耦决策树与业务的绑定关系,按需传入决策树ID即可。从以上的决策树场景来看,组合模式的主要解决的是一系列简单逻辑节点或者扩展的复杂逻辑节点在不同结构的组织下,对于外部的调用是仍然可以非常简单的。「重要」,这一部分是组合模式非常重要的使用,在我们已经建造好的决策树关系下,可以创建出树的各个节点,以及对节点间使用链路进行串联。1、2、3、4、5,等于、小于、大于、小于等于、大于等于的判断逻辑。

2023-03-20 11:25:31 147

原创 设计模式之适配器模式

那么这个时候做这样一个系统就会接收各种各样的MQ消息或者接口,如果一个个的去开发,就会耗费很大的成本,同时对于后期的拓展也有一定的难度。使得用户方便使用,就像我们提到的万能充、数据线、MAC笔记本的转换头、出国旅游买个插座等等,他们都是为了适配各种不同的口,做的兼容。从测试结果上来看,此时已经的接口已经做了统一的包装,外部使用时候就不需要关心内部的具体逻辑了。尤其是我们对MQ这样的多种消息体中不同属性同类的值,进行适配再加上代理类,就可以使用简单的配置方式接入对方提供的MQ消息,而不需要大量重复的开发。

2023-03-20 10:17:16 186

原创 设计模式之桥接模式

设计模式之工厂模式点击浏览其他设计模式一、工厂方法模式介绍工厂模式又称工厂方法模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。这种设计模式也是 Java 开发中最常见的一种模式,它的主要意图是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。简单说就是为了提供代码结构的扩展性,屏蔽每一个功能类中的具体实现逻辑。让外部可以更加简单的只是知道调用即可,同时,这也是去掉众多ifeslse的方式。当然这可能也有一些

2023-03-19 16:54:16 142

原创 idea如何安装Github Copilot 及安装时问题回顾

安装Github Copilot及解决安装时问题

2022-12-23 15:31:37 7357 1

原创 设计模式之观察者模式

设计模式之观察者模式

2022-10-26 11:55:12 113

原创 设计模式之模板模式

设计模式之模板模式

2022-10-26 11:25:27 94

原创 设计模式之策略模式

策略模式实战

2022-10-26 10:58:46 97

原创 java设计模式汇总

本文章将java设计模式整合起来,做检索页,定期更新具体设计模式的实战

2022-10-26 10:13:08 168

原创 Spring框架源码阅读读后感

Spring框架源码阅读读后感spring的bean生命周期,从上到下依次完成,本人在阅读源码时总结得出此步骤,当然,spring是一个强大的框架,其对bean的生命周期管理只是其中的一部分,本人也会在之后继续更新新的感想,希望与读有共勉。...

2022-05-04 23:07:07 569

原创 java多线程与并发(下集)

java多线程与并发(下集)一 synchronized关键字1.实现synchronized的底层实现原理1)java对象头2)Monitor:每个java对象天生自带了一把看不见的锁2.为什么有些人会对synchronized嗤之以鼻?1)早期版本中,synchronized属于重量级锁,依赖于Mutex Lock实现2)线程之间的切换需要从用户态转换到和心态,开销较大java6以后,性能得到了很大的提升;1)Adaptive Spining 自适应自旋锁自适应自旋锁的由来,由于

2022-04-13 22:19:05 57

原创 java多线程与并发(上集)

java多线程与并发一、Thread中的start和run方法的区别1)调用start()方法会创建一个新的子线程并启动2)run()方法只是Thread的一个普通方法的调用二、Thread和Runnable是什么关系1)Thread是实现了Runnable接口的类,使得run支持多线程2)因类的单一继承原则,推荐多使用Runnable接口三、如何给run()方法传参1)构造函数传参2)成员变量传参3)回调函数传参四、如何实现处理线程的返回值1)主线程等待法2) 使用Thread

2022-04-11 22:27:05 377

原创 谈谈对java的理解

谈谈对java的理解每当遇到这个问题时,对于我们学java的小伙伴来讲,是一件非常头疼的事,这是因为阐述这件事太宽泛了,可说的点很多,于是就无从下手。因此,本人汇总了如下几点,可以供小伙伴参考:一.平台无关性:一次编译,到处运行;1.那为什么JVM不直接将源码解析成机器码去执行呢?是因为如果这么做了,会出现以下情况1)准备工作:每次执行都需要各种检查2)兼容性:也可以将别的语言解析成字节码2.那JVM如何加载.class文件呢?1)谈谈ClassLoader:ClassLoader在jav

2022-04-05 15:50:10 1662

原创 linux系统中操作语句精进

linux系统中操作语句精进一、linux系统中如何查找特定的文件1.find ~ -name “find.java” :精确查找文件2.find ~ -name “find*” :模糊查找文件3.find ~ -iname “target*”:不区分文件名大小写去查找文件4.man find:更多关于find指令的使用说明二、linux系统中如何检索文件内容1.一般使用grep,语法为 grep [options] pattern file1)全称:Global Regular Expre

2022-03-28 23:13:44 837

原创 Redis如何做持久化

Redis如何做持久化一、RDBRDB(快照)持久化:保存某个时间点的全量数据快照手动触发:1.save:阻塞Redis的服务器进程,直到RDB文件被创建完毕2.bgsave:Fork出一个子进程来创建RDB文件,不阻塞服务器进程自动触发:(1.根据redis.conf配置里的save m n定时触发(用的是bgsave)(2.主从复制时,主节点自动触发(3.执行debug reload(4.执行shutdown且没有开启AOF持久化对于bgsave,其原理是(copy-on-writ

2022-03-27 23:26:20 700

原创 Redis解决分布式锁

如何通过Redis实现分布式锁一、分布式锁需要解决的问题1.互斥性——任意时刻,只能有一个客户端获取锁2.安全性——锁只能被占用的客户端删除,不能被其他客户端操作3.死锁——获取到锁的客户端由于宕机不能释放锁,导致其他客户端不能够获取到锁,此时需要机制避免这个问题的发生4.容错——让部分节点宕机的时候,客户端仍然可以获取锁和释放锁二、解决此问题的方案1.setnx key value:如果key不存在,则创建并赋值。2.expire key seconds:设定过期时间3.如果执行red

2022-03-27 18:20:11 1127

原创 Redis从海量Key里查询某一个固定前缀的Key

从海量数据里查询符合搜索的数据

2022-03-27 17:28:48 3016

原创 【多线程】Java线程池七个参数详解

【多线程】Java线程池七个参数详解 /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThrea

2021-09-15 00:18:42 185

原创 设计模式之单例模式

设计模式之单例模式单例模式是java中最简单的设计模式之一,这种类型的设计模式数据创建型模式,它提供了一种创建对象的最佳方式 * 其中有几个点需要注意: * 1.单例类只能有一个实例 * 2.但李磊必须自己创建自己唯一实例 * 3.单例类必须给所有其他对象提供这一实例单例模式的实际应用场景有哪些呢?其一般发现在以下条件下:第一:资源共享的情况下,避免由于操作时导致性能损耗等,如日志文件,应用配置等;第二:控制资源的情况下,方便资源之间的互相通信,如线程池等。符合上述描述的场景的具体应用有:

2021-04-04 18:42:47 89

原创 来一场Shiro的动感之旅

1 Shiro安全框架简介1.1Shiro概述shiro是apache旗下一个开源安全框架,它主要是实现了用户的身份认证和授权

2020-06-30 21:29:36 70

原创 Redis总结

当前很多企业中,为实现查询效率高且快的目的,都在用redis作为自己的缓存核心件,因此,本文想从这点出发,来简单阐述一下为何redis这么抢手?一.什么是redis首先,我们要了解什么是redis?它有什么特点?为何要用它呢?请看下图。![redis概念](https://img-blog.csdnimg.cn/20200618171735430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR

2020-06-18 17:19:23 315

原创 Spring框架管理Bean对象有什么优势吗

Spring框架管理Bean对象有什么优势吗首先,Spring是一个资源整合式框架,使软件的开发具有结构性,通过它自身的优势,可将自身产生的对象与第三方提供对象整合在一起,对外提供服务。其次,Spring框架可以为其管理的Bean对象提供如图方法:1)Lazy延迟加载方法(懒加载):对象用时调用,不用时无需加载和实例化;2)Lifecycle method生命周期方法:更好实现对象的初始...

2020-04-15 21:22:04 2183 1

空空如也

空空如也

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

TA关注的人

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