自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-10-18

设计模式一、策略设计模式(strategy)(1)概念:(2)案例:(3)项目中的实际应用(4)优化:二、观察者模式(Observer)(1)概念:(2)案例:(3)spring项目中的实际应用-- spring事件驱动用的就是观察者模式(4)自定义使用sping事件机制三、装饰者模式(1)概念:(2)案例:(3)项目实际应用:四、工厂模式(1)简单工厂(不是设计模式,而编程习惯)(2)工厂方法(3)抽象工厂五、单例模式(1)概念:(2)案例:六、命令模式(1)概念:(2)案例:(3)项目实例:七、适配器模

2021-10-18 07:47:43 519

原创 Spring事务最全配置

Spring 事务管理Spring Transaction Management什么是事务?事务的四大特性:事务的隔离级别:Spring 的事务管理:事务的公共配置:一、声明式事务:二、编程式事务:Spring Transaction ManagementSpring框架为事务管理提供了一致的抽象,具有跨不同事务API(例如Java事务API(JTA),JDBC,Hibernate和Java Persistence API(JPA))的一致编程模型,支持声明式事务管理,有比JTA更加简单的编程式API,

2021-04-16 13:57:09 328

原创 Spring Aop 原理 -- 简单易理解

Spring Aop 是面向切面编程,什么是面向切面编程呢?看图:好了,现在了解了什么是切面编程,那么我们接下来来看下Spring是怎么做的。@Componentpublic class Service { @Autowired private ServiceA serviceA; public void say(){ System.out.println("Service say"); }}@Configuration//开启Aop@EnableAspectJAutoPr

2021-04-15 14:46:21 202

原创 Spring Ioc 和 循环依赖

Spring Ioc 和循环依赖Spring Ioc:Spring Bean 生命周期:Spring Bean 创建流程:循环依赖:循环依赖是什么?Spring 的 三级缓存:Spring Ioc:当面试官让你讲一下Spring时,你是不是会一瞬间懵逼。缓了一会,你回答到Spring 的核心是Ioc 和Aop,Ioc是控制反转,DI注入,Aop是切面代理。然后,你就戛然而止。面试官等了一大会,看你还是没有继续回答时,又问,就这?这就是你没有深入源码,只知道表面的尴尬之处。所以,和我一起走下源码,提升下自

2021-04-15 14:00:46 148

原创 桥接模式

桥接模式当系统有多个维度的独立变化的业务时,可以使用桥接模式将抽象和实现分离开,这样抽象和实现各自扩展不会有耦合。应用场景(1)java 实现虚拟机和平台无关性。将java和操作系统桥接起来。(2)JDBC实现任意连接各种数据库。不使用桥接时,是这样的:使用了桥接是这样的:public interface ComputerBrand { void brand();}public abstract class ComputerType { private Compute

2021-04-08 13:50:26 103

原创 简单却强大的适配器模式

适配器模式适配器模式(相当于转接头),需要两个已有的接口。将一个类的接口转为客服希望的接口,将由于接口不兼容而不能一起工作的两个类可以协同一起工作。转接匹配,功能复用。适用场景:1 系统需要使用现有的类,而这些类的接口不符合系统的需要。2 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。3 需要一个统一的输出接口,而输入端的类型不可预知。public interface ServiceA { void request();}

2021-04-07 17:40:39 90

原创 增强版的策略模式

策略模式就是一个类的方法可以在运行时修改。降维到代码层面,就是运行的时候我给你这个类的方法传不同的 “key”,你这个方法就会执行不同的业务逻辑,这不就是if/else做的事。也就是运行时改变业务逻辑行为。//抽象策略接口public interface AbstractStrategy { void executeDiscount();}//策略实现类public class CommonManStrategy implements AbstractStrategy { @

2021-04-07 14:28:25 190

原创 GOF四人帮的23种设计模式 --- 单例

程序员的充电三连击设计模式设计模式是GOF四人帮经过整理和收集,集合各面向对象大佬的经验总结出的经典设计传奇。它能很好的帮我们解决一些特定场景的问题,是我们的系统结构更加清晰,代码更加简洁,性能更加棒,扩展性高。数据结构和算法数据结构和算法可以开发我们的思维,优化代码,提高性能。系统和中间件了解系统的运作和中间件的实现,可以帮助我们开发更加优质的项目。...

2021-04-07 10:52:43 524 1

原创 OOP面向对象的七大设计原则(完整版)

废话不多说,直接上菜。(1)开闭原则:对扩展开发,对修改关闭。(限制在源代码上进行修改,但支持新增共能)。(2)里氏替换原则:继承必须确保超类的性质在子类也能成立。(不希望重写父类的方法去完成新功能,这样会破坏整个继承体系的复用性。毕竟长方形不是正方形,子类不能是父类,但是父类可以为子类)。(3)依赖倒置原则:面向接口编程。(高级模块不应该依赖低级模块,应该进行抽象,抽象不依赖细节,细节依赖抽象,降低耦合)。(4)单一职责原则:控制类的细粒度大小,将对象解耦,提高其内聚性。(一个接口或者类,只代表

2021-04-07 09:38:23 336

原创 大专生的学历进击

2020年4月11日下午时分峰子在我们大龙岗 ‘嘿嘿嘿’ 的聊骚群中发起了提升学历的话题,还发进去一个学历提升培训机构报名的活动。瞬间平静的群就像沸腾的热水一般,瞬间就炸开了锅。我点开群聊,马上噼里啪啦就是一顿猛操作,啥?问我发的什么对,你没猜错,就是这个。下面高能,请擦亮眼睛。哈哈,没错,就是这个味。这就是十几年的发小友好表达的方式,你品,你细品。麻蛋,这发小还能要吗?? 嘻嘻。好的,言归正传。近些年来,大学生喷薄式的并发,让现在大社会的市场对求职的要求越来越高。打开boss,拉钩这些求

2021-04-06 20:54:44 136

原创 大专生也是有梦想的

2021 年 4月4日梦醒早晨从梦中惊醒,摸着额头,常常的吁了一口气。唉,幸好,这只是一个梦呀!脑子唯一的念头就是幸好还没发生,但梦中的场景还是给了我当头一棒。不过,现在一切还来的及…梦中梦中的自己在三四年后被公司告知被辞退,回去的路上满脸疲惫的瘫坐在公园门口的大理石台阶上。脑中想着家里老婆正在准备温馨的晚餐,想着活力满满的小baby在房中活跃的嬉戏,嘴角不由的上翘,但是几秒后又缓缓的变化成苦涩。自己在梦中失去了工作,家里的经济来源就被切断了。孩子的奶粉钱,营养费,生活成本如海浪一般一浪更比一

2021-04-04 11:54:43 347 2

原创 spring 源码解读

springSpring 简介:要整咋就整大的,Spring Ioc 整体实现走一走:从创建容器走起:Spring 简介:Spring 是一个轻量级的容器框架,它帮助我门去管理对象的生命周期。For example:spring就是一个托管中心,bean就是小baby,早上我们把小baby送到托管中心,晚上就接回来。中间吃饭,睡觉,上课,我们都不用操心。在spring中也是如此,我们只需要把bean在配置文件定义好,spring就会帮我们创建好对象,管理对象的生命周期,而我们只需要摸摸蹭亮蹭亮的脑阔直

2021-04-01 17:02:17 265

原创 spring mvc -- 执行流程源码跟踪

spring mvc 源码跟踪spring mvc简介:spring mvc请求执行流程图:spring mvc 源码执行流程:spring mvc简介:spring mvc就是把servlet的基础上进行了改造,将请求解耦成了三部分,m是model,数据模型,用来存放各种数据。v是view,用来展示界面。c是controller,用来接收请求,并处理映射请求路径。spring mvc请求执行流程图:spring mvc 源码执行流程:public class DispatcherServlet

2021-03-31 17:23:50 104

原创 同步和协作工具类

同步和协作工作类简介:ReentrantReadWriteLock -- 读写锁:Semaphore -- 信号量:Semaphore 常用方法:CountDownLatch -- 门栓:CountDownLatch 常用方法:CyclicBarrier --同步栅栏:CyclicBarrier 常用方法:ThreadLocal --线程本地变量:ThreadLocal 常用方法:总结:简介:之前章节我们学习的线程之间的协作是靠wait和notify,或者使用显示条件Condition 的await和s

2021-03-22 11:31:00 126

原创 定时任务

定时任务简介:TimerTask和Timer:Timer常用的方法:简介:日常生活中有多定时任务的应用场景,比如闹钟每天指定时间叫你起床,比如监控系统,隔断时间采集数据,对异常报警。TimerTask和Timer:TimerTask表示的时一个定时任务类,它是一个抽象类,实现了runnable接口,具体的定时任务类需要继承该类,实现run方法。Timer:具体执行类,负责定时任务的调度和执行。Timer内部是有一任务队列和Timer线程组成。任务队列是一个基于堆实现的优先级队列,按照下次执行时间排

2021-03-19 10:56:08 191

原创 线程池

线程池简介:线程池理解:核心线程的特殊配置:工厂类Executors:使用场景:线程池的死锁:总结:简介:线程池是并发程序中的一个非常重要的技术和概念。线程池就是一个线程的池子,里面有若干线程,它们的目的是执行提交给线程池的任务,执行完一个任务后不会退出,而是继续等待或执行新任务。线程池是有两个概念组成,一个是任务队列,一个是工作者线程。工作者线程主题是一个循环,循环冲任务队列中接受任务并执行,任务队列保存待执行的任务。线程池理解:线程池的优点:(1)它可以重用线程,减少创建线程的开销。(2)任

2021-03-18 17:43:35 97

原创 异步任务执行服务--ExecutorSerivce

异步任务执行服务异步任务执行服务的基础接口:简介:一、Runnable和Callable:二、Executor和ExecutorService:三、Future:基本实现原理:总结:异步任务执行服务的基础接口:简介:之前的介绍中,线程Thread即表示要执行的任务,又表示执行的机制。Java并发包提供了一套框架,大大简化了执行异步任务所需要的开发。框架引入了"执行服务"的概念。它将’任务提交’和’任务的执行’相分离,'执行服务’封装了所有执行的细节,对于任务提交者而言,它可以关注于任务本身,如提交任务

2021-03-18 16:00:48 627

原创 并发容器

并发容器简介:实现同步的另外一种思维方式--写时复制:写时复制实现的List --CopyOnWriteArrayList:CopyOnWriteArrayList实现机制:写时复制Set --Copy0nWriteArraySet:写时复制总结:并发容器--ConcurrentHashMap:复合操作方法:ConcurrentHashMap高并发的基本机制:并发队列:无锁非阻塞式队列--ConcurrentLinkedQueue与ConcurrentLinkedDeque:普通阻塞队列--ArrayBlo

2021-03-17 17:43:51 102

原创 并发包的基石

并发包的基石简介:原子变量和CAS:原子变量是什么呢?原子变量:原子变量基石方法:简单的使用AtomicInteger 原子变量实现的程序计数器:AtomicInteger 原子变量的一些基础方法:CAS方式实现悲观阻塞式锁:使用CAS方式更新产生的ABA问题:显示锁:显示锁基本方法:显示锁解决死锁例子:显示条件:显示条件的基础方法:显示条件例子:总结:简介:上一章节学习的是synchronzied关键字来解决了并发过程的内存可见性和竟态条件的问题。但是synchronzied关键字本身也遗留了一部分局

2021-03-15 14:26:41 84

原创 并发基础

并发基础并发简介:线程的基本概念:线程基本属性和方法:(1)属性:(2)优先级:(3)状态:(4)daemon线程:(5)sleep 方法:(6)yield 方法:(7) join 方法:并发线程共享内存出现的问题:竞态条件:内存可见性:synchronized关键字:synchronized的特征:(1)可重入性:(2)内存可见性:(3) 死锁:同步容器及注意事项:并发简介:一台电脑的性能优异基本都是看cpu,而cpu调用的最小单元是线程。当电脑只有一个cpu处理器时,单线程程序能够百分百利用cpu

2021-03-10 10:25:37 112

原创 Java--泛型

泛型简介:泛型类基本原理:泛型最常用的应用:容器泛型方法:泛型接口:类型的参数限定:extends泛型的细节和局限性:总结:简介:泛型是将接口的概念进一步延伸,"泛型"的字面意思是广泛的类型。类、接口、和方法代码可以应用于非常广泛的类型。代码和他们能操作的数据类型不在绑定在一起了,同一套代码可以用于多种数据类型,这样不仅可以复用代码,降低耦合,而且可以提高代码的可读性和安全性。泛型类** * GenericClass 后面的T表示类型参数,泛型就是类型参数。 * 处理的数据类型不

2021-03-04 15:46:43 197 3

原创 类加载器---ClassLoader

java 动态特性 -- ClassLoader 类加载器简介:简介:类加载器就是加载其他类的类,它负责将字节码文件加载到内存,创建class 对象。在大部分应用编程中,我们需要自己实现ClassLoader.不过ClassLoader 一般是系统提供的,不需要自己实现。不过,通过创建自定义的ClassLoader,可以实现一些强大灵活的功能。比如:(1) 热部署。在不重启Java程序的情况下,动态替换类的实现,比如java Web开发的jsp技术就利用自定义的ClassLoader 实现修改jsp代

2021-03-03 14:45:36 159

原创 Java 动态代理

动态特性 ---动态代理 动态代理简介:静态代理:java sdk动态代理:通用的动态代理类示例:CGLIB 动态代理:总结:动态代理简介:动态代理是一种强大的功能,它可以在运行时动态创建一个类,实现一个或者多个接口,可以在不修改原来的类的基础上动态的添加方法,修改行为。静态代理:代理是java 设计模式中的一种,基础概念和日常生活中的概念类似。代理背后一般至少有一个实际对象,代理的外部功能和实际对象一般是一样的,用户和代理打交道,不直接接触实际对象,虽然外部公共和实际对象一样,但代理有它存在的价值

2021-03-02 17:47:42 127

原创 java 自定义注解

注解:提示:本文属于基础语法和例子,个人复习整理,用于备忘,谢谢!!!!简介:注解就是给程序添加一个字符@开头的标记,可以标记接口,类,方法、字段,方法参数,构造方法等。注解可以被编译器、程序运行时和其它工具使用,用于增加或修改程序行为等。元注解:###(1)@Target:注解的目标属性(枚举类 )说明ElementType.TYPE表示类、接口(包括注解),或者枚举说明ElementType.FIELD字段,包括枚举常量ElementType.METH

2021-03-02 17:04:45 145

原创 Java动态特性--反射

动态特性 ---反射、注解、动态代理、类加载器动态特性简介:反射:(1) Class 类:(2) 名称信息:(3) 字段信息:(4) 方法信息:(5) 类型检查和转换:总结:提示:本文属于基础语法和例子,个人复习整理,用于备忘,谢谢!!!!动态特性简介:Java中有一些动态特性,用来协助开发者在运行时编写出动态的代码,实现更优质的功能。比如反射、注解、动态代理、类加载器。利用这些特性,可以优雅地实现一些通过的功能,它们经常用于各种框架、库和系统程序中。比如:(1) Springmvc、Jersey

2021-03-01 17:14:08 349

原创 Lambda表达式详细讲解---满满的干货哦

Lambda 表达式详解Lambda 表达式lamdba 简介:函数式接口:Lambda表达式需注意的点:Lambda 表达式语法示例:Java 预定义函数式接口:函数式数据处理:lambda表达式和预定义函数式接口的应用。总结:Lambda 表达式lamdba 简介:lambda 是Java 8 推出的,它是函数式接口,并不是增强‘语法糖’的匿名类。什么是函数式接口呢?这就得先说一下面向接口编程。在日常开发中面向接口编程不仅降低了耦合,还增加了代码的灵活性和复用性。在传统的面向接口编码时,大多功能方

2021-02-27 16:22:39 568 3

原创 手写Aop

手写简单Aop,展示aop设计思路和基础原理提示:本文章适合有一定java反射基础的程序员,博主还是个新手新手超新手,欢迎指正!!!本文是参考Java 编程逻辑一书…文章目录手写简单Aop,展示aop设计思路和基础原理Aop 简介:一、Aop 的基础原理是动态代理,动态代理又有哪些呢?二、手写Aop实例1.创建自定义注解2.创建切面类Aop 简介:简介百度一大堆,这里简单说下博主自己的理解,Aop其实就是用来解决成品系统中添加辅助功能的一种方式。当你的系统所有功能都完成了,你调试 的时候发现没有

2021-02-25 09:53:16 921 2

空空如也

空空如也

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

TA关注的人

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