自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 RabbitMQ实战

解耦:在项目启动之初来预测将来会碰到什么需求是极其困难的。消息中间件在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,这允许你独立地扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束即可冗余〈存储) 有些情况下,处理数据的过程会失败。消息中间件可以把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。在把 个消息从消息中间件中删除之前,需要你的处理系统明确地指出该消息己经被处理完成,从而确保你的数据被安全地保存直到你使用完毕。...

2022-08-28 17:22:06 2110

原创 Spring启动之bean定义注册

1、前言Spring容器在本文可以简单理解为DefaultListableBeanFactory,它是BeanFactory的实现类,这个类有几个非常重要的属性:beanDefinitionMap是一个map,用来存放bean所对应的BeanDefinition;beanDefinitionNames是一个List集合,用来存放所有bean的name;singletonObjects是一个Map,用来存放所有创建好的单例Bean2、入口2.1、主方法public static void main

2022-03-02 15:52:45 1062

原创 Spring启动之初始化容器

1、前言Spring会将所有交由Spring管理的类,扫描其class文件,将其解析成BeanDefinition,在BeanDefinition中会描述类的信息,例如:这个类是否是单例的,Bean的类型,是否是懒加载,依赖哪些类,自动装配的模型。Spring创建对象时,就是根据BeanDefinition中的信息来创建BeanSpring容器在本文可以简单理解为DefaultListableBeanFactory,它是BeanFactory的实现类,这个类有几个非常重要的属性:beanDefinit

2022-02-25 11:00:56 601

原创 设计模式 - 迭代器模式

一、基本介绍英文名:Iterator概念:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节模式类型:结构型主要特点:提供了遍历容器的方便性,容器只要管理增减元素就可以了,需要遍历时交由迭代器进行二、实现1、模式Iterator抽象迭代器:负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,hasNext()是否已经访问到底部ConcreteIterator具体迭代器:具体迭代器角色要实现迭代

2021-09-18 09:56:53 131

原创 设计模式 - 策略模式

一、基本介绍英文名:Strategy Pattern概念:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换模式类型:结构型设计原则:主要特点二、实现1、模式Context聚合StrategyConcreteStrategy实现StrategyⅠ、代码抽象的策略角色public interface Strategy { //策略模式的运算法则 void doSomething();}具体策略1public class ConcreteStra

2021-08-31 10:03:20 83

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

一、基本介绍英文名:Decorator概念:动态的将新功能附加到对象上。模式类型:结构型设计原则:开闭原则(OCP)主要特点:在对象功能扩展方面,它比继承更有弹性二、实现需求: 下午茶:咖啡 + 调味剂,价格结算咖啡种类多,调味剂种类也多可单点咖啡,也可两者都点。且两者随意可组合(咖啡 + 多调味剂)1、一般实现方案一:该方案类会非常多,每增加一种咖啡或一种调味剂都需要创建很多类抽象咖啡类,所有咖啡类都实现该抽象类抽象调味剂,所有调味剂都实现该抽象类

2021-08-30 16:44:30 163

原创 设计模式 - 责任链模式

一、基本介绍概念:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止模式类型:结构型设计原则:开闭原则二、实现需求:父系社会,女人逛街在不同阶段需向不同的男人申请1、一般实现Ⅰ、代码// 女人接口public interface IWomen { // 获取个人情况 int getType(); // 获取需要请求的事情,逛街、约会? Strin

2021-08-30 14:46:45 98

原创 Mybatis深入浅出

一、Hibernate基本介绍1、产生原因JDBC使用大致步骤连接数据库,注册驱动和数据库信息操作Connection,打开Statement对象通过Statement执行SQL,返回结果到ResultSet对象使用ResultSet读取数据,然后通过代码转化为具体的POJO对象关闭数据库相关资源由于JDBC操作过于复杂繁琐,于是就产生了对象关系映射(Objec Relational Mapping,简称ORM,OR mapping)2、作用ORM模型就是数据库的表和简

2021-08-24 17:39:29 385

原创 设计模式 - 命令模式

一、基本介绍英文名:Command概念:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能模式类型:结构型设计原则:主要特点:二、实现需求: 开发项目的需求变更需要修改需求文档、调整页面、更改代码等1、一般实现Ⅰ、代码public interface Group { //甲乙双方分开办公,如果你要和某个组讨论,你首先要找到这个组 void find(); //被要求增加功能

2021-08-19 09:00:34 94

原创 设计模式 - 中介者模式

一、基本介绍英文名:Mediator概念:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互模式类型:结构型设计原则:主要特点:一个类只负责处理自己的活动(行为),与自己无关的活动就丢给中介者处理二、实现需求:模拟进销存三个模块的交互1、一般实现每个类都与其他两个类产生了关联关系Ⅰ、代码采购管理public class Purchase { //采购IBM电脑 public voi

2021-08-19 08:59:09 101

原创 设计模式 - 建造者模式

一、基本介绍建造者模式又叫生成器模式,是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象1、四个角色Product(产品):一个具体的产品对象Builder(抽象建造者):创建一个具体产品对象的各个部件指定的接口/抽象类ConcreteBuilder(具体建造者):实现抽象建造者接口/抽象类,构建和装配各个部件Director(指挥者):构建一个使用Builder接口的对象,它主要是用于创建一个复杂的对象。隔离了客户和对象的生

2021-08-16 17:59:58 88

原创 设计模式 - 模板方法模式

一、基本介绍英文名:Template Method Pattern概念:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤模式类型:结构型设计原则:开闭原则主要特点:可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度, 完成固定的逻辑二、实现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5gc9UBOy-1629104130138)(C:\Users\wl\Deskto

2021-08-16 16:55:45 83

原创 设计模式 - 简单工厂模式

一、介绍简单工厂模式属于创建型模式,是工厂模式的一种,是工厂模式中最简单实用的模式定义了一个创建对象的类,由这个类来封装实例化对象的行为简单工厂也叫静态工厂模式,是工厂方法模式的简化二、实现1、简单工厂实现Ⅰ、代码// 抽象产品public abstract class Product { //产品类的公共方法 public void method1(){ //业务逻辑处理 } //抽象方法 public abstract void method2

2021-08-16 16:54:40 83

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

一、介绍定义一个用于创建对象的 接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类工厂方法模式属于创建型模式,是工厂模式的一种工厂方法模式是对简单工厂模式的抽象升级,将工厂这个概念抽象出来成为接口或抽象类,然后针对每种目标实现类创建一个工厂实现,一对一来实现,当新增了目标实现,只要同时新增一个工厂实现即可。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmQxfBV5-1629103854992)(C:\Users\wl\Deskto

2021-08-16 16:51:17 88

原创 设计模式 - 桥接模式

一、基本介绍英文名:Bridge概念:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变模式类型:结构型设计模式设计原则:基于类的最小设计原则。通过使用封装、聚合及继承等行为让不同的类承担不同的职责。主要特点:将抽象与行为实现分离开,从而可以保持各部门的独立性以及应对功能的扩展二、实现需求: 设计手机品牌、样式的关系手机存在多种品牌,和多种样式#mermaid-svg-YP1KK6PGVpg3YTZS .label{font-family:'trebuc

2021-07-28 11:16:05 89

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

一、基本介绍适配器模式(Adapter pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的时兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构性模式主要分类:类适配器模式:在Adapter中,继承被适配的类对象适配器模式:在Adapter中,持有被适配的对象接口适配器模式:在Adapter中,实现被适配的接口二、实现需求:手机充电需要将220V电压适配为输出5V的电压1、类适配器模式Ada

2021-07-27 13:52:31 75

原创 设计模式 - 七大原则

2、接口隔离客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上案例Ⅰ违反接口隔离原则类A通过接口Inteface1依赖(使用)C类,但只用到1,2,3方法类B通过接口Inteface1依赖(使用)D类,但只用到1,4,5方法public class Segregation { public static void main(String[] args) { A a = new A(); a.depend1(new C())

2021-07-20 14:04:16 135 2

原创 Class和ClassLoader加载资源的区别

1. 案例public static void main(String[] args) { System.out.println(TestController.class.getResource("")); System.out.println(TestController.class.getResource("/")); System.out.println(); System.out.println(TestController.class.getClassLoader

2021-07-01 22:46:51 243 2

原创 IO流基础

1. 基本概念1. IO模型设计Java的IO模型设计非常优秀,它使用Decorator(装饰者)模式,按功能划分Stream,可以动态装配这些Stream,以便获得需要的功能。1. 例如,需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。2. IO流的分类1. 按数据流的方向分为:输入流、输出流(此输入、输出是相对于我们写的代码程序而言) 输入流:从别的地方(本地文件,网络上的资源等)获取资源 输入到 我们的程序(内存)中。

2021-07-01 22:43:36 132

原创 JAVA泛型详解

1. 泛型基本应用作用:解决数据类型的安全性问题,在代码编译期就可避免类转换异常的发生。主要原理:在类声明时通过一个标识标识类中某个属性的类型或者某个方法的返回值及参数类型注意事项:泛型的指定中是无法指定基本数据类型的,必须设置为一个类。泛型为包装类时,参数传递的是基本数据类型会进行自动装箱为包装类。1. 泛型类定义[访问权限] class 类名<泛型类型标识1,泛型类型标识2,.....,泛型类型标识n> { [访问权限] 泛型类型标识 变量名称; [访问权限] 泛

2021-07-01 22:42:59 206

原创 Java线程的6种状态

Java中线程的状态一共分为6种图解1. 初始态:NEW创建(new)一个Thread对象,但还未调用start()启动线程时,线程处于初始态。2. 运行态:RUNNABLE在Java中,运行态包括就绪态和 运行态。就绪态该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行。所有就绪态的线程存放在就绪队列中。运行态获得CPU执行权,正在执行的线程。由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程。

2021-06-16 19:11:54 1461 5

原创 ThreadLocal

1. 作用传递数据:保存每个线程绑定的数据,在需要的地方可以直接获取,避免参数直接传递带来的代码耦合线程隔离:各线程间的数据相互隔离却又具备并发性,避免同步方法带来的性能损失2. 内存泄漏1. ThreadLocal造成内存泄露的前提没有手动删除当前线程中ThreadLocalMap里的具体entry当前线程依然在运行综上:由于ThreadLocalMap是Thread的一个属性,所以ThreadLocal的生命周期和Thread是一样长的,如果没有手动删除不再使用的ThreadLoc

2021-06-11 17:15:09 65

原创 TimeUnit

1. TimeUnit枚举java.utils.concurrent.TimeUnit 是Java枚举应用场景中最好的例子之一枚举指定DAYS、HOURS、MINUTES,SECONDS、MILLISECONDS(毫秒)、NANOSECONDS(纳妙)2. 可读性使用TimeUnit代替传统Thread.sleep()将当前线程暂停// 睡眠毫秒数,可读性非常差,不知道方法单位的情况下无法分辨Thread.sleep(2400000);// 使用TimeUnit的枚举非常容易

2021-06-11 11:07:56 235 1

原创 MYSQL日期处理

1. 年月日1. 当前年月日三种方式都可直接进行四则运算(如:CURRENT_DATE + 1),运算后返回数据格式为yyyyMMdd未经运算返回的数据格式为yyyy-MM-dd1. CURDATE()2. CURRENT_DATE3. CURRENT_DATE()2. 提取年月日函数中传入time类型数据,提取的年月日为:0000-00-00函数后可直接进行四则运算(如:DATE(2021-05-14 11:22:52) + 1),运算后返回数据格式为yyyyMMdd

2021-05-17 14:45:21 796 1

原创 权限修饰protected关键字

1. 父类、子类、使用者同包// 父类package com.example.ioc.aop0;public class Animal { protected void run() { System.out.println("Animal"); }}// 子类1package com.example.ioc.aop0;public class Cat extends Animal {}// 父类本身、子类继承自父类的protected的方法,在使用者

2021-04-14 11:45:10 111

原创 IOC容器启动流程

1. this()初始化容器2. register()注册组件3. refresh()刷新容器/** * 实现类:org.springframework.context.support.AbstractApplicationContext * 刷新容器方法 * 方法正常运行总共12步,异常2步,finally共1步 */@Overridepublic void refresh() throws BeansException, IllegalStateException { sync

2021-04-12 18:49:04 262

原创 spring注解详解

1. spring容器注册Bean的方式1. @Bean注解,注册第三方组件2. @ComponentScan扫描组件,扫描2中所描述的组件3. @Import4. FactoryBean(工厂bean)5. xml配置2. 组件的标注1. @Component 泛指各种组件,就是说当我们的类不属于各种归类的时候2. @Controller 用于标注控制层,相当于struts中的action层3. @Service 用于标注服务层,主要用来进行业务的逻辑处理4. @Repo

2021-04-06 18:28:21 325

原创 内部类详解

1. 作用1. 采用内部类这种方式,可以隐藏细节和内部结构,封装性更好,让程序的结构更加合理。 例如:封装的XML的所有类太多,全部类分开写也可以,但是相互调用组装太麻烦。就可使用内部类的方式解决2. 分类非静态内部类类中方法体中的内部类静态内部类3. 非静态内部类/** * 非静态内部类详解 */public class InnerClass { private String name; private void method() {

2021-04-06 00:19:55 73

原创 XXl-Job定时任务

1. 概念XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用2. 优缺点优点: * 支持集群部署; * 提供运维界面维护成本小; * 自带错误预警; * 相对elastic-job来说不需要额外的组件(zookeeper); * 支持调度策略; * 支持分片; * 文档齐全缺点:相对Quartz来说需要多部署调度中心总结:针对目前项目情况,利大于弊3. 特性执行失败可

2021-03-18 17:44:09 786

原创 Webservice应用

1. 概念1. Webservice是什么​ webservice即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。2. Java中Webservice的三种规范JAX-WS(JAX-RPC)全称:Java API For Xml-WebService客户端和服务端通信协议:soap传输数据:xml使用场景:客户端借助SDK生成XMLJAXM&SAAJ编码麻烦暴漏SOAP更多细节,可以控制SOAP的更多细节JAX-RS客

2021-02-03 23:43:36 282

原创 lambda表达式

stream方法APIlist转maplist泛型对象的任意一属性进行分组,构成Map<属性,Object>Map<String,List<User>> map= userList.stream().collect(Collectors.groupingBy(User::getName));list泛型对象的任意两个属性构成Map<属性1, 属性2>public Map<Long, String> getIdNameMap(Li

2021-02-02 12:42:11 199

原创 Spring事务

1. 什么是事务?保证业务操作完整性的一种数据库机制事务的4个特点: A C I D1. A 原子性2. C 一致性3. I 隔离性4. D 持久性2. 如何控制事务JDBC: Connection.setAutoCommit(false); Connection.commit(); Connection.rollback();Mybatis: Mybatis自动开启事务 sqlSession.commit(); sqlSession.rollback();sqlSers

2021-01-21 23:43:10 84

原创 代理模式

1 代理模式的产生额外功能1. 软件设计者的角度Service层不需要额外功能2. Service层的调用者则需要额外功能示例:1. 房东(软件设计者)出租房子,只想实现核心功能而不去实现额外功能 核心功能: 1.出租房屋 2.收钱 额外功能: 1.打广告 2.带客户看方2. 房客(软件调用者)则需要这些额外功能。此时房东和房客就会产生矛盾,应景而生中介(proxy)。房东不想实现的额外功能中介来实现2 设计模式2.1 概念通过代理类,为原始类(目标类)增

2021-01-21 23:14:19 208 3

原创 SpringMVC请求参数

区别注解支持请求体类型支持请求方法类型支持的Content-Type请求示例@PathVariableurl请求头GET\POSTALLurl/{}/{},可同时注解多个参数接收@RequestParamurl请求头GETALLurl?x=x&x=x@RequestParamBadyPOSTfrom-data,x-www.from-urlencoded@RequestBodyBadyPOSTjsonGET请求.

2021-01-19 15:39:51 115

原创 Mybatis常用标签详解

trim<trim prefix="" suffix="" prefixOverrides="" suffixOverrides=""></trim>属性: prefix:给sql语句拼接前缀 suffix:给sql语句拼接后缀 prefixOverrides:去除sql语句前由prefixOverrides指定的的关键字或者字符 suffixOverrides:去除sql语句后由suffixOverrides指定的的关键字或者字符示例1: 当第一个条件不生效时..

2021-01-19 15:36:52 315

原创 IDEA为EasyCode宏定义实体类模板

##引入宏定义$!define##使用宏定义设置回调(保存位置与文件后缀)!callback.setFileName(!callback.setFileName(!callback.setFileName(tool.append($!{tableInfo.name}, “.java”))!callback.setSavePath(!callback.setSavePath(!callback.setSavePath(tool.append(KaTeX parse error: Expected 'E

2021-01-15 17:18:30 695

原创 Aware接口实现策略模式

Aware接口实现策略模式实现方式:choose()方法获得的抽象类具体实现,根据不同实现的方法获取不同配置、属性或某一类东西// 注入@Autowiredprivate TypeChooser typeChooser;public void test() { // 获取不同的实现 TypeHandler typeHandler = typeChooser.choose("1"); // 获取实现类的属性 typeHandler.getFileName

2021-01-15 14:01:54 328

原创 RabittMQ消息中间件的使用

基本概念Broker: 接收和分发消息的应用,RabbitMQ Server就是Message Broker。Virtual host: 出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。Connection: publisher/consumer和broker之间的TCP连接。断开

2021-01-10 22:45:46 372

原创 Maven本质及使用

是什么1. maven是一款服务于java平台的自动化构建工具 Maek -> Ant -> Maven -> Gradle2. 构建 编译 -> 部署 -> 搭建 Ⅰ. 一个BS项目最终运行的并不是动态Web工程本身,而是该工程'编译的结果'。 所以,开发过程中,所有的路径或配置文件中配置的类路径(classes)都是以编译结果的目录结构为标准。 Ⅱ. 构建过程 Ⅰ.清理:删除上次编译后的就class字节码文件 Ⅱ.编译:将java源代码转为cl

2021-01-10 22:34:48 186

原创 分布式事务解决方案之可靠消息最终一致性

可靠消息最终一致性事务​ 可靠消息:消息从事务的发起方发送到事务的参与方​ 最终一致:消息发起方必须保证消息发送成功,消息的参与方则保证消息的接受成功#mermaid-svg-mG8qFOCQWTBYAKkG .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mG8qFOCQWTBYAKkG .label t

2021-01-08 15:34:48 114

jasypt-spring-boot-starter-1.14.jar

springboot整合jasypt所需要全部jar包: jasypt-1.9.2.jar、jasypt-spring-boot-starter-1.14.jar。

2020-06-05

jasypt-1.9.2.jar

springboot整合jasypt所需要全部jar包: jasypt-1.9.2.jar、jasypt-spring-boot-starter-1.14.jar。

2020-06-05

空空如也

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

TA关注的人

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