自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

java小菜鸡成长之路

刚刚迈出半步,后面还有九千九百九十九步。

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

原创 MYSQL笔记总结

事务ACID原则原子性:事务必须是一个最小的工作单元,要么成功要么失败一致性:一个事务必须使数据库从一个一致性状态变换到另一个一致性状态隔离性:一个事务所做的修改在最终提交之前,是不会被其他事务感知持久性:一旦事务提交,则其修改会永远保存到数据库中存储引擎隔离级别未提交读:事务的修改即使未提交对其他的事务也是可见,会导致脏读提交读:事务的修改未提交前对其他的事务不可见可重复读:mysql默认事务隔离级别,保证同一事物多次读取同样的记录结果一致,无法解决幻读问题可串行化:强制事务串行

2023-02-06 14:20:20 124 1

转载 logback多进程写同一日志文件导致日志混乱问题

记录一次logback多进程写同一日志文件导致日志混乱问题。

2022-08-18 16:59:20 1206 1

原创 ReentrantReadWriteLock

ReentrantReadWriteLock(读写锁)什么是读写锁读写锁是一种特殊的锁,他把对资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量。读写锁特性是否互斥读写读否是写是是类结构从类图我们可以看到1、ReentrantReadWriteLo...

2020-02-05 16:30:26 212

原创 ReentrantLock

ReentrantLockReentranLock是并发包中提供的基于AQS实现的一个可重入锁,ReentranLock提供公平锁和非公平锁两种锁。ReentrantLock和Syncronized的异同?相同:都是同步锁,可重入锁。不同:1、Syncronized时JVM实现的,ReentrantLock是JDK(java类)实现的。2、ReentrantLock需要配合try/f...

2020-02-04 14:55:45 1157

原创 AQS同步器

AQS(同步器)AQS是AbstractQueuedSynchronizer的简称,是一个用来构建锁和同步器的框架。原理概述AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列...

2020-02-04 14:54:22 192

原创 Spring MVC源码详解

本文将讲解Spring MVC的工作流程,Spring MVC的入口是DispatcherServlet,下面我们来看下DispatcherServlet的继承结构。从上图我们可以看出DispatcherServlet实际上就是一个Servlet。DispatcherServlet初始化既然我们知道了DispatcherServlet是一个Servlet,那么在Spring MVC初始化的...

2019-12-23 11:51:46 375

原创 Spring IOC知识点总结

IOC容器中的核心角色BeanFactoryBeanFactory接口是Spring IOC中的一个核心接口,提供了IOC容器的基本实现,用于管理和创建Bean,即IOC容器是基于BeanFactory接口实现的。BeanFactory接口的主要功能有获取Bean、检索IOC容器中是否包含Bean、判断Bean是否是单例等。BeanFactotory主要负责Bean的加载、实例化、维护Bean...

2019-12-23 11:49:39 277

原创 装饰器模式

概念装饰者模式是在不改变源码的情况下,对一个现有对象的功能进行扩展或者覆盖,是一种结构型模式。装饰器模式和代理模式很像,他们的类图几乎一样,只是使用目的不同。优缺点优点:可以动态的扩展或重写一个类的功能;装饰类和被装饰类模块间通过抽象产生依赖,不会相互耦合;通过装饰模式替代继承来实现功能扩展,可以使得原有的功能和现有的功能互不影响。缺点:多层装饰比较复杂。装饰器模式中的角色抽象组件:定...

2019-12-06 14:21:36 142

原创 观察者模式

概念观察者模式是一对多的关系,当被观察者的状态发生变化的时候,能够自动通过和他相关的观察者。优缺点优点:观察者和被观察者之间建立一个抽象的耦合,观察者模式支持广播通讯。缺点:观察者之间有过多的细节依赖,提高时间消耗及程序复杂度,如果在观察者和观察目标之间存在循环依赖,观察目标会触发他们之间循环调用,可能会死循环。。观察者模式中的角色抽象被观察者(目标):定义了一系列公用的方法,如添加、...

2019-12-06 14:20:01 161

原创 委派模式

概念委派模式个人理解就是我有一个任务要做,我将它委派给其他人或中间人,我不管你怎么做,中间过程是怎样的,我只要这个任务的结果,其他的事你来安排。委派模式就像是静态代理模式和策略模式的特殊组合。代理模式注重的事过程,委派模式注重的是结果。策略模式注重的事可扩展(外部),委派模式注重的是内部的灵活和复用。委派模式是一种特殊的代理模式和策略模式的组合,委派模式是静态代理模式的一种特殊情况,代理人需...

2019-12-05 15:15:33 130

原创 适配器模式

概念适配模式是把一个类的接口变成客户端期待的另外一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式中的角色适配者角色:需要被适配的对象或者类型。适配器角色:通过包装一个需要适配的角色,从而将适配的角色的接口转换成目标接口。目标接口角色:客户端所期待的接口,可以是具体类、抽象类、接口。优缺点优点:可以让任何两个没有关联的类一起运行,提高了类的复用,增加了类...

2019-12-05 15:15:01 111

原创 模板模式

概念模板模式顾名思义就是通过抽象类来定义一个逻辑模板,将公共的结构化逻辑提取出来,将具体的实现延迟到子类中实现。模板模式的角色抽象模板角色:定义了一系列公共的行为,一般是一个抽象类或接口。具体模板角色:继承抽象模板角色,可以通过重写抽象模板角色中的方法实现自己的逻辑。优缺点优点:封装了不变部分,扩展可变部分,提高代码的复用性。行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个...

2019-12-05 15:14:37 120

原创 策略模式

概念策略模式是将一组算法封装到具有共同接口的独立类中,从而使他们可以相互替换。策略模式最大的特点是可以在不影响客户端的情况下,动态的改变策略从而实现不同的功能。**优点:**可以动态的改变对象的行为。通过面向接口编程,使得策略类和客户端独立开来,策略类的变化不会影响到客户端(低耦合),符合开闭原则。**缺点:**客户端必须知道所有的策略类,自行选择需要的策略类。策略模式将产生很多的策略类。...

2019-12-04 21:23:32 193

原创 ConcurrentHashMap

ConcurrentHashMapjdk8 ConcurrentHashMap结构1、Node节点一共有5种类型1、Node节点,是所有节点的父类,可以单独放入桶内,也可以作为链表的头放入桶内。2、TreeNode节点,继承自Node,是红黑树的节点,此节点不能直接放入桶内,只能是作为红黑树的节点。3、TreeBin节点,TreeNode的代理节点,可以放入桶内,这个节点下面可以连接红...

2019-12-04 17:46:00 346

原创 HashMap

HashMapUML图继承:AbstractMap实现:Map、Cloneable、Serializable总结HashMap是数组+链表+红黑树实现的,当链表个数大于8个的时候转换成红黑树,当链表个数少于6个的时候从红黑树转换成链表。HashMap默认初始容量为16,加载因子默认为0.75。允许一条记录的key为null,运行多条记录的value为null。线程不安全的。无...

2019-12-04 17:44:22 216

原创 LinkedList

LinkedListUML图继承AbstractSequentialList实现List, Deque, Cloneable, java.io.Serializable总结1、LinkedList底层是一个双链表。是一个直线型的链表结构。2、LinkedList是线程不安全的。3、遍历速度相对ArrayList要慢。在遍历LinkedList的时候,官方更推荐使用顺序访问,也就...

2019-12-04 17:42:25 244

原创 ArrayList

我们常说的三种集合其实是三个接口,List和Set集合共同继承Collection这个父接口,Map集合是单独的一个接口,他们一共有六个实现类,List的实现类是LinkedList和ArrayList,Set的实现类有HashSet和TreeSet,Map的实现类有HashMap和TreeMapArrayListUML图继承:AbstractList实现:List, RandomAc...

2019-12-04 17:35:24 186

原创 Redis学习笔记

redis中所有单个命令的执行都是原子性的,但是不保证多个命令间的原子性。Redis的多数据库在redis中一个redis实例提供了多个用来存储数据的字典(又称数据库),客户端可以指定将数据存储在哪个字典中。redis默认支持16个数据库,数据库命名从0开始递增。Redis基本命令介绍基本命令之前我们先来看下redis中常用的通配符。KEYS命令查询符合匹配规则的键,但是keys命令...

2019-12-04 17:29:15 150

原创 代理模式

概念代理模式主要为其它对象(目标类)提供一种代理以控制这个对象的访问。作用:通过代理模式,我们可以在不修改目标类源码的情况,实现对目标对象功能的扩展。同时实现了客户端和目标类之间的解耦。运用实例:spring aop,调用具体类之前需要日志打印,可以再代理类中添加日志打印的功能。代理模式中的角色**抽象角色:**为目标类和代理类提供一个共同的接口,一般是接口或抽象类。**代理角色:**...

2019-12-04 17:19:00 109

原创 原型模式

概念原型模式就是以一个已创建实例为原型,通过复制该原型对象来创建一个和原型相同或者相似的新对象。优点:在需要大量创建相似对象的场景下可以提高性能,因为不需要new对象,消耗的资源少。缺点:通过克隆方式实现复制时,要注意是否有引用对象。在java中通常都是通过克隆或者序列化来实现原型模式。克隆浅克隆首先我们创建User和Work两个类,作为克隆的实例。public class Use...

2019-12-04 17:18:43 85

原创 单例模式

什么是单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局入口。饿汉式在类加载的时候就立即初始化并且创建单例对象。public class HungrySingle { // final对象创建后就不可变 private static final HungrySingle single = new HungrySingle(); // 构造器私有,防止外...

2019-12-04 17:17:59 100

原创 java三种工厂模式

java三种工厂模式简单工厂模式举个车工厂的例子:首先我们创建一个汽车的接口,因为不管是奔驰、宝马还是奥迪,这些不同牌子的车本质上都是车。给该接口定义一个统一的获取汽车的方法。public interface Car { /** * 获取汽车 * @return */ String getCar();}接下来分别创建宝马类和奔驰类实现该...

2019-12-04 17:16:16 150

原创 java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

一、简单工厂模式概述  简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。工厂模式结构图简单工厂模式角色  在简单工厂模式结构图中包含如下几个角色:Factory(工厂角色):工厂角色即工厂类,它是简单...

2019-06-04 10:51:15 13319 2

原创 设计模式概述与面向对象设计原则详解

一、设计模式概述  设计模式的一般定义如下:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过 分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。二、设计模式的作用设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作。设计模式有助于我们提...

2019-06-03 16:13:08 253

空空如也

空空如也

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

TA关注的人

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