自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 再谈Spring的循环引用

1. 前言我之前有一篇文章,也是谈的Spring的循环引用(文章链接)。文章中有我翻看源码的见解,其实那篇文章只是说了循环引用的一部分,并没有阐述“为什么需要三个级别的缓存才可以”,如果按照我上一个文章来看,貌似用两级缓存就足以解决了循环引用的问题。但是我上一个文章,只是说了普通的情况,也就是说,普通的循环引用的情况。普通的循环引用的话,直接使用两个级别的缓存的确可以解决。那么什么情况下,两个的缓存不能解决呢?其实这个文章好久之前都写好了。只是时间问题,没有分享出来。这里分享出来我的见解,欢迎指正。

2021-03-02 13:00:52 348

原创 如何 自定义starter?

什么是SpringBoot中的starter?如何定义自己的starter?

2020-10-26 21:25:37 4898

原创 为什么你的springboot用起来这么爽

浅谈SpringBoot 的自动装配

2020-10-26 16:58:41 963

原创 你的apparent_encoding 还准确么?

文章目录前言场景:问题描述:原因分析:解决方案:前言本人python也是业余的,所以下面的说法有不正确的地方,欢迎指正。场景:本人最近在使用python爬取某些公众号的某些文章的信息的时候,出现了一些编码上的问题。问题描述:在爬取的信息中,大多数的信息都是没有问题的,并且在之前爬取的公众号中,编码也是正常的,没有出现乱码的情况。但是这次爬取的公众号却出现了乱码的问题。其中乱码的数据如下:原因分析:经过代码的调试分析,发现其在获取返回信息的时候,编码推测是不正确的。原来的代码:def

2020-08-30 10:46:52 1630 1

原创 一个安全的传输通道是如何建立的?

关键字:对称加密,非对称加密,数字签名,数字证书,CA

2020-08-29 18:10:31 1721 2

原创 从源码的角度探究 mybatis 是如何整合到spring中的。

文章从源码的角度介绍 mybatis 是如何整合到spring 的。mybatis 是如何运用spring 的扩展点实现整合的?对这方面了解之后,如果有朝一日,你要把自己的小框架整合到spring, 也就会有思路了。

2020-08-16 15:53:14 318

原创 关于mybatis spring 整合(无mybatis 主配置文件)的问题。

spring 整合mybatis (无mybatis 配置文件)配置中的一些个人的想法。

2020-08-15 08:26:02 1058 1

原创 从源码的角度查看mybatis的执行流程。

这篇文章主要是跟踪mybatis 的执行流程,让我们更加了解mybatis。

2020-08-13 14:22:26 311

原创 从源码的角度来看spring的循环引用的问题

文章目录0. 前言0.1说明0.2 为什么要学习spring 源码?1. 一般情况1.1 图解1.2 文字2. 循环引用2.1 什么是循环引用?2.2 前置代码准备2.3 流程图解2.4 构造方法注入在循环依赖时产生的问题。2.4.1 前置代码准备2.4.2 结果2.4.3 为什么?2.5 在循环依赖状态下 使用 构造方法注入与setter(or @Autowired ) 混合的方式产生的问题2.5 循环依赖中关于aop代理对象的问题3. 总结3.1 注入方式不同对循环依赖的影响代码附录1. Defau

2020-08-08 11:16:34 258

原创 Spring AOP 之 Introductions

0. 前言首先啊,这个introductions 我个人感觉不太常用,但是我再spring文档中看到了,就想分享一下啊。我也没有正式的用过,具体的业务场景中的使用我也不知道。有再项目中用过的大佬,可以指正一下。spring 官方链接如下:点击进入1. 介绍啥意思呢?自己翻译一下,反正翻译出来的,好像也看不太懂????。不过我读了好几遍,大概是这个意思:Introductions : 使切面 能够声明 advised 对象 去实现你给定的接口,并且给这些对象提供该接口的实现。然

2020-07-11 14:05:39 266

原创 设计模式(15)- 行为型模式 - 责任链模式

文章目录1. 责任链模式介绍1.1 个人想法2. 代码2.1 场景介绍2.2 传统方式2.3 使用职责链2.4 类图2.5 如何扩展?3. 总结1. 责任链模式介绍责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。--------------- 来自百度百科1.1 个人想法这个模式理解起来还是

2020-07-09 11:25:49 118

原创 设计模式(14) -结构型模式 之 享元模式

文章目录1. 享元模式概述1.1 定义1.2 使用场景1.3 核心概念2. 代码2.1 场景介绍2.2 分析2.3 类图2.3.1 百度上的类图2.3.2 本例类图2.4 代码3. 优缺点与典型场景3.1 优点3.2 缺点3.3 典型应用3. 总结1. 享元模式概述文章例子来自一个b站的视频。1.1 定义享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象--------------------- 来自百度百科1.2 使用场景系统中有大量对象,这些对象消耗大量内存,

2020-07-08 08:27:03 217

原创 设计模式(12) - 结构型模式之 外观模式

文章目录1. 外观模式介绍1.1 简介1.2 解决的问题1.3 啥时候用?2. 总结1. 外观模式介绍1.1 简介外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。引用自“菜鸟教程”1.2 解决的问题也就是咋说呢?就是一段逻辑需要很多步骤,比较繁琐,你给他封装

2020-07-05 14:27:01 1961

原创 设计模式(10) - 结构型模式之 桥接模式

1. 桥接模式介绍来自百度百科1.1 介绍桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。1.2 概述在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。1.3 意图在提出桥梁模式的时候指出,桥梁模

2020-07-05 14:11:53 152

原创 分享:aop 相关术语介绍之 本人通俗易懂大白话介绍

文章目录1. 前言2. aop 相关术语介绍2.1 AOP 的理解2.2 Joinpoint(连接点)2.2.1 spring 官方文档解释2.2.2 个人理解2.3 Pointcut(切入点)2.3.1 spring 解释2.3.2 个人理解2.4 Advice(通知/增强)2.4.1 spring 官方文档解释2.4.2 个人理解2.5 Introduction2.5.1 spring 官方文档解释2.5.2 个人理解2.6 Weaving(织入)2.6.1 spring 官方文档解释2.6.2 个人理

2020-07-03 14:15:11 832

原创 设计模式(9)-结构型模式 - 组合模式

文章目录1. 组合模式介绍1.1 定义1.2 意图1.3 啥时候使用2. 代码2.1 场景介绍2.2 代码2.3 类图3. 总结1. 组合模式介绍1.1 定义组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。1.2 意图将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一

2020-07-02 15:37:21 195

原创 设计模式(8)-行为型模式之 观察者模式

1.观察者模式介绍2. 代码3.

2020-06-25 09:37:10 150

原创 设计模式(6) - 结构型模式之 适配器模式

文章目录1. 适配器模式介绍1.1 定义1.2 应用场景2. 代码演示2.1 情景介绍2.2 代码2.3 类图2.4 灵魂画手图解3. 总结1. 适配器模式介绍1.1 定义适配器模式: 是将一个类的接口转换成客户期望的另一个接口,使得原本不兼容的类可以一起工作。1.2 应用场景已经存在的类,它的方法和需求不匹配(方法结果相同或者类似) 的情况适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同的产品,不同的厂家造成功能类似而接口不同的情况下的解决方案。那么说白了就是,有

2020-06-23 11:20:21 173

原创 设计模式(5) -行为型模式之 - 策略模式

文章目录1. 策略模式介绍1.1 定义1.2 角色组成1.3 应用场景2. 代码演示2.1 场景介绍2.2 不使用策略模式2.2.1 代码2.2.2 存在的问题2.3 使用策略模式 + 工厂模式2.3.1 类图2.3.2 代码2.4 策略模式优缺点3. 总结3. 总结1. 策略模式介绍1.1 定义在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。百度上说: 指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如

2020-06-23 09:39:45 193

原创 设计模式(11) - 结构型模式 - 代理模式!!!

1. 代理模式介绍?1.1 定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。1.2 作用1.3 分类1.4 与装饰模式的区别2. 静态代理2.1 类图2.2 代码3. 动态代理3.1 代码3.2 代理类生成流程4. 总结...

2020-06-19 16:22:21 115

原创 设计模式(4) - 创建型模式 - 原型模式

文章目录1. 原型模式概述1.1 什么是原型模式1.2 原型模式使用的场景2. 什么是深克隆、浅克隆2.1 浅克隆概念2.2 深克隆概念3. 浅克隆实现3.1 克隆对象代码3.2 调用代码(解释在代码中)4. 深克隆实现4.1 克隆对象代码4.2 调用代码(解释在代码中)5. 总结1. 原型模式概述1.1 什么是原型模式原型模式是指 原型实例指定创建对象的种类,并通过拷贝这些原型创建新的原型(说白了就是将一个对象复制一份)1.2 原型模式使用的场景类的初始化的时候,消耗的资源太多new 构

2020-06-17 13:20:13 122

原创 单例模式的 破坏、预防 and 建议

文章目录1. 前言2. 反射破坏情况2.1 原始代码2.2 破坏代码2.3 解决办法3. 序列化破环情况3.2 破环代码3.3 解决办法3.4 jdk源码分析4. 个人建议4.1 为何要使用枚举实现单例?5. 总结1. 前言单例模式我们大家都知道,但是,单例模式也是可以被破坏的。下面介绍单例的破坏与预防。单例的破坏我所了解的主要有两种情况:主要是利用反射来调用你私有化的构造方法来创建对象利用序列化来破坏2. 反射破坏情况反射破坏主要是调用你私有化的构造方法来创建对象。2.1

2020-06-15 17:06:30 185

原创 设计模式(13) - 行为型模式之 - 模板模式

1. 什么是模板模式?1.1 什么是模板?模板,就是方案的固定格式,一般都要遵循这么个步骤去干。比如你请假,你需要 填写请假条,领导1签字、领导2签字,这么三个步骤。这个就叫模板,就是这么一个固定的流程。具体你请假条写的啥,这个不关心。1.2 什么是模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。(这句话来自菜鸟教程)说白了:我感觉,

2020-06-08 10:16:40 95

原创 设计模式(7) - 装饰模式 - 运用体验例子(装饰Reader 扩展其 readLine 方法)

1. 装饰设计模式回顾什么是装饰设计模式?我在我的上一篇文章提过了装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。下面就自己来体验一下其奥妙2. 目的我的目的是 体验一下 装饰设计模式的精妙。 这边通过装饰java I/O 流中的 Reader 来扩展 出来一个 readLine 方法(虽然jkd已经帮我们实现了一个BufferedReader)。++++++++++++++++++++++++++++++++++++++++++

2020-06-06 11:15:03 171

原创 设计模式(7) - 结构型模式之 - 装饰模式

1. 介绍1.1 装饰器模式的介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。创建了一个装饰类 去包装原有的类 在不改变 要扩展的类的前提下 提供额外功能。1.2 适用的场景比如有些场景,我们使用 继承的方式实现扩展,会出现...

2020-06-03 13:29:23 108

原创 关于分页查询数据重复的问题 (分页查看时数据库插入导致) 的一个解决办法

0. 前言我相信,但凡是搜到这个的,这个问题描述,就不用我介绍了。就跟题目一样。 我还是来描述一下把1. 问题的描述2. 解决思路既然是在我分页的过程中,插入了一条记录,导致我再查询下一页的时候,查出来上一页的记录,那么,我思考,我可不可以不去查询他新增的这一条记录。那么这样,就查询不到别人新增的这条记录了。那么需要的条件就出来了: 数据库表要有创建时间的这么一个字段那么解决思路就出来了,首先是要前端进行配合。那么其解决思路为:网页端(前端分页要使用异步加载):在页面初始化的时候

2020-06-02 08:31:05 1961 2

原创 关于springMvc Fastjson 接收 or 返回日期格式的问题

1.前言我们知道日期的格式比较多,什么年-月-日年/月/日年/月/日 时/分…那么前端传过来的格式,或许是某种格式,那么我们如何定义然后接收呢?其实只是一个注解2. 解决2.1 问题比如前端要发送的格式如下:2.2 方法我们只需要在相应接收的实体类中,加一个JSONField注解定义一下格式即可,如图:3. 总结总之你前端传的格式是什么, 你JSONField里面就写相应的格式即可。返回的话,也是返回相应的格式的。是一样的。...

2020-06-02 08:00:59 382

原创 同一宿主机上 两个docker 容器 连通 方法分享

0. 目录1. 前言2. 前置环境介绍2.1 微服务镜像准备2.2 mysql准备3. 连接方法1. 前言前几个月,白嫖了阿里云6个月的Linux服务器。正好,也拿来玩一玩。最近正好有需求,需要部署一个小小的接口。那么肯定是准备一个 Mysql 的docker容器。然后把自己的开发的微服务模块打包成docker镜像,部署到docker 上,那么我就一个机器。肯定我的微服务模块容器,需要连接mysql的容器。那么怎么做呢?2. 前置环境介绍2.1 微服务镜像准备拿lfnu_community_

2020-05-18 15:55:51 2892

原创 设计模式(3) - 创建型模式 - 建造者模式 (& 链式编程)

1. 传统建造者模式功能1.1介绍下面的这句话 是我抄的,忘了哪里的了。最主要的还是灵活运用,毕竟规则是死的,人是活的。分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。1.2 什么时候使用?

2020-05-11 10:12:57 539

原创 泛型反射 -- T.class 的获取

1. 需求在开发过程中,封装的过程中,避免不了要获得 泛型的class, 那么如何获取呢。注意: 具体的解释在代码中注意: 具体的解释在代码中注意: 具体的解释在代码中2. 名词的解释在这之前呢,我们应该知道一些名词List<E> :E称为类型参数变量List<Integer> : Integer称为实际类型参数List<Integer...

2020-05-02 10:05:08 1202

原创 设计模式(2) - 创建型模式 -工厂模式

一切设计模式的目标,就是让我们的程序更容易的进行一个扩展 扩展 1. 工厂模式的核心本质工厂模式是创建型模式,所以他是用来创建对象用的用工厂类来帮助我们创建将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。1.1 适合的场景创建的对象过于复杂。2. 简单工厂模式2.1 场景模拟:现在有这么一个场景:我是一个普通的人。我想要一台电脑,具体要怎...

2020-04-30 10:01:21 213

原创 设计模式(1) - 创建型模式 - 单例模式

1. 单例模式的介绍所谓类 的单例设计模式,就是采取一定方法保证在整个软件系统中对某只能存在一个对象实例

2020-04-21 18:01:26 139

原创 java基础--getParentFile().mkdirs()的作用

关于 getParentFile().mkdirs() 的作用0. 前言我看到网上其他的人,解释的有点太那啥,我在这里提供一下自己的见解。虽然这个是一个比较基础的问题。1. getParentFile().mkdirs(); 的作用个人认为:为了防止 你在创建文件的时候,避免其文件所在的 文件夹 不存在至于为什么这么说呢,下面来证实一下2. getParentFile(...

2020-03-30 10:22:36 13198 6

原创 分享 Hibernate / SpringDataJpa 延迟加载的解决。(Spring/SpringBoot 项目中)

Hibernate / SpringDataJpa 延迟加载的解决方案本文分享了,关于hibernate 的延迟加载问题。分别在:springDataJpa + SpringBoot + SpringMvchibernate + spring + struts2hibernate + spring + springmvcspringDataJpa + spirng + springm...

2020-02-22 16:51:01 755

原创 Activiti7 + SpringBoot 2.0 - 新特性 的 基本使用 (整合开发)

0. 官网activiti7 新特性文档因为activiti7 中文文档现在比较少,所以可以考虑去看英文文档。里面也有实例,比较详细。GitHub文档 点击进入本次文章分享 全程使用activiti7 新api 进行基本操作1. 测试工程搭建1.1 pom文件这里是只作测试使用的坐标<parent> <groupId>org.sprin...

2020-02-05 18:07:47 8049 5

原创 InputStream (输入流) 与 OutputStream (输出流) 转换

1. InputStream 转 OutputStream我所了解的InputStream 转 OutputStream 有两种:使用原生代码的方式* 网上一查一大把,我这里就不介绍了使用 commons-io 工具包* 介绍这种方法* 使用commons-io 中的:* IOUtils.copy(InputStream input, OutputStream output)...

2020-02-01 17:06:30 14995

原创 浅谈 Activiti7 --- 各阶段 -- 数据库表 中内容 的 变化

1. activiti7的介绍Activiti是一个工作流引擎。1.1 什么是工作流呢?我个人的意见,我认为这个工作流就是工作的流程。举个例子:比如有一个公司需要采购一批货物。那么流程需要这么几步:1. 采购申请2. 采购审核3. 采购入库每一步都需要某个职位的人审核。我认为这个样子的就叫做工作流。1.2 如何实现?第一种方式,是采用编码的方式,再表内弄一个sta...

2020-01-25 15:50:11 1958 3

原创 Dockerfile构建简单的微服务镜像

Dockerfile构建简单的微服务镜像在日常,我们写好了一个微服务,如何把他做成一个镜像呢?由两种选择:第一种选择: 直接使用DockerMaven插件,这样做的优点呢,个人感觉肯定是快速又方便,但是感觉出错了又不好排查。第二种选择: 使用Dockerfile,这种虽然比上面的复杂了一些,但是出错可以排查,可以先测试jar包是否可用,在打成镜像,这样一般是可以直接用。不怎么会出错的。...

2019-12-28 18:07:02 1355

原创 浅谈vue项目的main.js

浅谈vue项目启动的加载顺序

2019-12-01 20:47:17 1833 1

空空如也

空空如也

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

TA关注的人

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