自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadLocal加切面实现线程级别的方法缓存

实现效果:当一个线程多次请求A方法时,只会触发一次A方法的实际调用,会将方法结果缓存起来,避免多次调用。

2024-04-06 17:51:47 617

原创 arthas的简单使用

arthas的简单使用,watch和trace命令使用介绍。

2023-07-16 13:55:37 131

原创 备忘录模式的学习与使用

当您需要在不破坏封装性的前提下保存和恢复对象的状态时,备忘录模式是一种有用的设计模式。备忘录模式允许您将对象的状态保存到备忘录对象中,并在需要时从备忘录中恢复状态。这种模式分离了状态的保存和恢复逻辑,使得对象的状态管理更加灵活和可扩展

2023-07-07 20:00:00 188

原创 中介者模式的学习与使用

中介者模式的核心思想是将对象之间的交互逻辑集中在中介者中,而不是让每个对象都直接与其他对象通信。当一个对象需要与其他对象进行通信时,它只需要通过中介者发送消息,而无需知道具体的目标对象。中介者负责将消息转发给合适的目标对象。

2023-07-05 20:00:00 157

原创 命令模式的学习与使用

当你想要将请求与实际执行操作的对象解耦时,可以使用命令模式。它将一个请求封装为一个对象,从而使你可以根据不同的请求将其参数化,将请求队列或日志请求,并支持可撤销的操作。

2023-07-04 20:00:00 149

原创 原型模式的学习与使用

在原型模式中,我们定义一个原型接口或抽象类,该接口或抽象类定义了克隆方法。具体的原型类实现克隆方法,并根据自身的属性创建新的对象。

2023-07-03 20:00:00 233

原创 外观模式的学习与使用

外观模式(Facade Pattern)是一种结构型设计模式,它通过提供一个统一的接口,封装了一个或多个复杂的子系统,并使其更易于使用。外观模式将系统的复杂性隐藏在一个外观类背后,客户端只需要与外观类进行交互,无需了解底层子系统的复杂实现细节。

2023-07-02 14:38:25 320

原创 桥接模式的学习与使用

桥接模式的核心思想是通过桥接接口(Bridge)将抽象部分和实现部分连接起来。抽象部分和实现部分可以独立地变化,而不会相互影响。这使得系统更加灵活,可以根据需求动态地选择和切换实现部分,同时也方便了系统的扩展和维护。

2023-06-30 18:13:53 303

原创 享元模式的学习与使用

享元模式的核心思想是将对象的状态分为内部状态和外部状态,并共享内部状态以减少对象的数量。这样可以节省内存空间,并提高系统的性能。

2023-06-24 16:34:15 198

原创 单例模式的学习与使用

当我们需要确保一个类只有一个实例并且全局可访问时,可以使用单例模式。单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点以便于其他对象可以使用该实例。选择哪种实现方式取决于具体的需求和场景。在多线程环境下,需要考虑线程安全性和性能。此外,要注意避免单例模式的滥用,因为它可能导致代码的耦合性和可测试性降低。设计一个日志管理器类,要求该类只能有一个实例,并且可以通过全局访问点获取该实例。该日志管理器可以记录系统中的日志信息。

2023-06-09 11:09:13 715

原创 状态模式的学习和使用

状态模式通过将对象的状态封装在不同的状态类中,以实现状态之间的切换和行为的变化。这样,对象可以根据当前状态来选择不同的行为,而无需使用复杂的条件语句

2023-06-08 23:17:42 77

原创 责任链模式的学习与使用

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许你将请求沿着处理链进行传递,直到有一个处理者能够处理该请求。责任链模式将请求的发送者和接收者解耦,使多个对象都有机会处理请求

2023-06-08 11:30:18 522

原创 模板方法设计模式的学习和使用

模板方法设计模式的优势在于提供了一种代码复用的方式,可以避免在每个子类中重复编写相同的代码,同时允许子类在需要的地方提供自定义的实现。这样,模板方法模式实现了算法的核心部分集中管理,同时保留了灵活性。

2023-06-07 23:09:55 605

原创 适配器模式的学习与使用

当我们需要将一个类的接口转换成另一个客户端所期望的接口时,适配器模式(Adapter Pattern)可以派上用场。它允许不兼容的接口之间能够协同工作。

2023-06-03 11:00:00 225

原创 代理模式的学习与使用

jdk动态代理JDK 动态代理基于接口实现。它使用 java.lang.reflect.Proxy 类和java.lang.reflect.InvocationHandler 接口来创建代理对象。首先,定义一个实现 InvocationHandler 接口的代理类,它负责处理代理对象的方法调用。然后,使用 Proxy.newProxyInstance(ClassLoader, Class[], InvocationHandler) 方法创建代理对象,指定类加载器、要代理的接口列表和代理类的实例。

2023-06-01 21:53:49 909

原创 建造者模式的学习与使用以及和抽象工厂模式的区别

建造者模式关心的是一个产品的属性构建过程;抽象工厂模式关心的是一组产品的生产。

2023-06-01 11:47:10 528

原创 观察者模式的学习与使用

观察者模式的核心思想是:松耦合,将观察者与被观察者解耦,使得它们之间的关系不再是紧密耦合的。这样一来,当被观察者的状态发生变化时,不需要直接调用观察者的方法,而只需要通知(间接调用)观察者即可。:Subject 维护一个观察者列表,并提供注册和删除观察者的方法。Subject 还提供了一个通知方法,当它的状态发生变化时,会通知所有的观察者。使用观察者模式实现这样的功能:假设有一个气象站,每隔一段时间会更新一次气象数据,现在需要实现一个程序,能够实时地获取气象数据并进行显示。

2023-05-30 21:39:58 82

原创 装饰者模式学习与使用以及优缺点

*** @Description: 具体装饰者// 这里可以对初始的颜值sign进行处理 return " 颜值是:" + sign;} }/*** @Description: 具体装饰者// 这里可以对初始的sign进行处理 return " 身高为" + sign;} }/**3. @Description: 具体装饰者// 这里可以对初始的体重sign进行处理 return " 体重为" + sign;} }

2023-05-14 13:14:50 78

原创 策略模式的学习和使用以及和简单工厂模式的区别

**3. @Description: 客户端// 生产女人 PersonContext personWomanContext = new PersonContext(new PersonWomanStrategy());// 生产男人 PersonContext personManContext = new PersonContext(new PersonManStrategy());} }

2023-05-14 10:39:31 69

原创 关于BeanPostProcessor的postProcessBeforeInitialization和InitializingBean的afterPropertiesSet执行顺序的问题和解释

【代码】关于BeanPostProcessor的postProcessBeforeInitialization和InitializingBean的afterPropertiesSet执行顺序的问题和解释。

2023-05-05 09:56:25 992

原创 一文搞懂PostConstruct和ApplicationContext(ApplicationContextAware)的加载顺序

*说白了就是spring是初始化完一个bean再去初始化另一个bean;所以下面扩展一下这些bean得BeanPostProcessor接口里的方法的执行顺序是怎么样的呢?

2023-04-25 22:48:51 1738

原创 解释一下ThreadLocalMap的value为什么不是弱引用

引用指向值A,那么当Athreadlocal还存在其它强引用的时候,Athreadlocal不会被回收;而值A没有其它强引用,此时值A会被回收掉,当我们再通过Athreadlocal的get方法从ThreadLocalMap中获取值得时候就获取不到了,导致了值A丢失。,那么在当前线程的ThreadLocalMap中就会有一个entry键值对,entry的key是弱引用指向Athreadlocal,entry的value是强引用指向值A。比如现在我们把值A通过set方法放到了Athreadlocal里即。

2023-04-14 14:46:57 522

原创 盛世芳华游戏与微信公众号结合的DDD项目,已接入chatgpt。附源码。

盛世芳华游戏与微信公众号结合的DDD项目,已接入chatgpt。附源码。

2023-03-23 18:11:13 191

原创 java设计模式之抽象工厂模式

&nbsp&nbsp&nbsp&nbsp***设计模式系列***抽象工厂模式&nbsp&nbsp&nbsp&nbsp提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。抽象工厂方法模式的四个角色1、抽象工厂:它声明了一组用于创建一族产品的方法,每一个方法对一个一种产品。2、具体工厂:它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。3、抽象产品:

2020-12-27 16:31:45 135

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

     设计模式系列工厂方法模式     工厂方法模式提供一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。     工厂方法模式的四个角色     1、抽象产品角色:它是定义产品的接口,是工厂方法模式所创建的对象的超类型,也就是产品对象的公共父类。 &

2020-11-29 19:00:03 246

原创 问题记录系列之读取指定配置文件得值时会被application得值(若存在)覆盖掉

     问题说明:我想读取a配置文件的里的b的值 但如果application文件里也有b,这时就算我们指定了读取a配置文件最后取到的值还是application里的b的值。     代码举例说明:上面是两个配置文件 接下来我们指定读取onelog这个配置文件接下来是取到的结果可以看到 虽然我们指定了读取onelog配置文件的test的值 但最后的值还是application里的test的

2020-11-23 12:06:46 220

原创 java设计模式之简单工厂模式

设计模式系列简单工厂模式解释:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的类的实例通常都具有共同的父类。简单工厂模式一般都含有以下三个角色:1.Factory(工厂角色):该模式的核心,负责实现创建所有产品实例的内部逻辑。2.Product(抽象产品角色):它是工厂类创建的所有产品对象的父类。3.ConcreteProduct(具体产品角色):它是简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实例。下面我将以一个例子来说明一下:使用简单工厂模式来模拟女

2020-11-22 17:36:31 228

原创 解决拦截器无法注入bean的问题和springboot读取配置文件map数据

说明:这两个放一起是因为同一个需求里的 ,最近要做一个下载excel的日志记录任务,因为下载Excel是早就做好了的 所以要求对原有方法尽量少的改动。我就想着用拦截器去实现在目标方法执行完之后区进行日志的记录。需要记录下载的文件名 我是把需要拦截的url和文件名放到了配置文件的map里key是url,value是文件名。所以第一个问题就是拦截器无法注入bean@Configurationpublic class AllInterceptor implements WebMvcConfigurer

2020-11-22 14:38:12 386

原创 get方式传递多个参数给实体类或单个参数的写法

1.代码@Datapublic class Stu { private Integer num; private String name;}@SpringBootApplication@RestController@RequestMapping("/CaiNiaoController")public class CaiNiaoController { /** * success * @param num * @return

2020-11-16 12:02:32 6119

原创 Guava的一些基本用法 (持续更新)

20201110内容:首先引入pom文件 com.google.guava guava 11.0.2 代码: public static void main(String[] args) { List<String> list=Lists.newArrayList(); list.add("xiaomi"); list.add("huaw

2020-11-10 11:43:32 334 2

原创 java8的Stream流的一些简单常用方法实例:limit,map,filter和foreach

public class Test { public static void main(String[] args) { //定义一个手机list List<String> phones=new ArrayList<>(); phones.add("小米");phones.add("华为");phones.add("苹果");phones.add("三星");phones.add("魅族"); System.o

2020-11-07 15:00:53 367

原创 Java利用反射将list里的值赋到vo实体类里

**首先贴上代码** private static GxbVO PushVo(List<String> listnr){ GxbVO vo=new GxbVO(); Field[] declaredFields = GxbVO.class.getDeclaredFields(); for(int a=0;a<listnr.size();a++...

2020-04-21 10:06:25 3416 5

原创 日期类型转字符串 oracle和java的区别

## 一、首先看一下在oracle里日期类型转字符串select sysdate,to_char(sysdate, ‘yyyy-mm-dd hh-mm-ss’) “yyyy-mm-dd hh-mm-ss”,to_char(sysdate, ‘yyyy-mm-dd hh-mi-ss’) “yyyy-mm-dd hh-mi-ss”,to_char(sysdate, ‘yyyy-mm-dd h...

2020-01-20 14:50:04 244

原创 使用webmagic模拟post表单提交爬取易查分成绩

使用webmagic模拟post表单提交爬取易查分成绩#不废话直接上图简单来说就是在一图输入学生姓名 点击查询就会跳转到二图,当然这里二图我把班级姓名信息以及去掉了;下面就是分析通过上图我们可以看到点击查询后实际上是发送了一个post表单提交;根据返回回来的结果再跳转到分数结果的地址;所以这里我们就直接使用webmaigc来模仿psot表单提交 把学生姓名提交过去;这是一个请求...

2019-12-14 10:43:13 2359 2

原创 史上最靠谱的阿里EasyExcel使用入门(附源码)

先附上官方的的github地址 :[https://github.com/alibaba/easyexcel]斜体样式(https://github.com/alibaba/easyexcel)2.环境搭建:需要引入的依赖:<groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId&...

2019-10-05 16:50:45 3743 8

原创 centos7.2 安装和启动docker

第一步通过 uname -r 命令查看你当前的内核版本 因为Docker 要求 CentOS 系统的内核版本不低于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker第二步直接执行yum -y install docker 进行安装docker;因为Docker 软件包和依赖包已经包含在默认的 CentOS-Extras 软件源里第三步...

2019-09-12 10:08:30 143

原创 echarts使用datazoom属性对图形坐标轴进行缩放

首先贴上效果图再附上上图的访问链接:http://m520c.com/cat/sjtj.do贴上使用方法在setoption里加上这个属性这里的datazoom里写了俩个 其中type=‘slide’ 是实现滚动条就是以滚动条的方式滑动而type=‘inside’ 是实现了用鼠标滑轮进行图形的缩放 这里不是图形大小的缩放而是数据展示的缩放;展示更少或更多的数据而start和end...

2019-09-09 23:16:39 8319 2

原创 Oracle数据库如何DMP文件?

功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接(通过net8 assistant中本地–>服务命名 添加正确的服务命名其实你可以想成是客户端与服务器端修了条路,然后数据就可以被拉过...

2019-08-26 10:08:37 287

原创 力扣练手53 最大子序和 Java版

题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题目代码:public class problem53 { /** * 给定一个整数数组 nums ,找到一个具有最大和...

2019-08-14 16:37:28 211

原创 ORACLE合计函数cube() 和偏移分析函数lag()用法1209新增列转行listagg()函数用法

cube可以用来求一列的合计lag可以用来求一列某一行的值 select sum(ywzl) ywzl, to_char(rq, 'yyyy-mm-dd') from YB_JZ_SDTJ group by to_char(rq, 'yyyy-mm-dd') order by to_char(rq, 'yyyy-mm-dd')使用cube和lag后 --合计和上个月份功能--...

2019-08-13 13:08:28 518

空空如也

空空如也

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

TA关注的人

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