自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java exception分类

java exception分类1、Throwable 结构图2、可检查与非检查异常:1、可检查异常(checked exceptions)是程序运行过程中很容易出现的的异常情况,编译器要求必须捕获处理。这种错误在一定程度上是可以预见的,如IOException,FileNotFoundException等。2、不可检查异常(unchecked exceptions)是编译器不强制要求处理的异常,主要包括运行时异常(RuntimeException与其子类)和错误(Error)。3、运行与非

2021-12-20 17:23:24 1713

原创 java exception之ConcurrentModificationException

java Exception之ConcurrentModificationException原因 List<String> arrayList = new ArrayList<>(); arrayList.add("jack2"); arrayList.add("jack3"); arrayList.add("jack4"); arrayList.add("jack5"); arrayL

2021-12-20 17:03:40 479

原创 java Thread详解

Thread详解什么是线程进程中负责程序执行的执行单元依靠程序执行的顺序控制流,只能使用程序的资源和环境,共享进程的全部资源有自己的堆栈和局部变量,没有单独的地址空间CPU调度和分派的基本单位,持有程序计数器,寄存器,堆栈生命周期五种状态1、新建状态(New)当线程对象创建后,即进入新建状态;如:Thread t = new MyThread();2、就绪状态(Runnable)当调用线程对象的start()方法时,线程即进入就绪状态。处于就绪状态的线程只是说明此线程已经做好准

2021-12-17 15:30:12 1086

原创 java 锁之 ReentrantLock

ReentrantLockjava.util.concurrent.locks.ReentrantLock;可重入锁:指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码支持公平锁和非公平锁,默认非公平锁案例public class ReentrantLockDemo3 { public static void main(String[] args) { final ShareData shareData = new ShareData();

2021-12-16 18:00:02 374

原创 java 锁之synchronized

synchronized互斥 可重入案例 /** * 修饰非静态方式 */ public synchronized void synchronizedMethod(){ System.out.println("synchronized 非静态方法锁"); } /** * 对应指令码 */ public synchronized void synchronizedMethod(); descript

2021-12-15 15:39:56 307

原创 23种设计模式之解释器模式

23种设计模式之解释器模式模式结构抽象表达式(Abstract Expression)角色:定义解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。终结符表达式(Terminal Expression)角色:是抽象表达式的子类,用来实现文法中与终结符相关的操作,文法中的每一个终结符都有一个具体终结表达式与之相对应。非终结符表达式(Nonterminal Expression)角色:也是抽象表达式的子类,用来实现文法中与非终结符相关的操作,文法中的每条规则都对应于一个非终结

2021-12-15 13:29:23 52

原创 23种设计模式之中介者模式

23种设计模式之中介者模式模式结构抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者(Concrete Mediator)角色:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色。抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能。具体同事类(Concrete Colleague)角色:是抽象同事类

2021-12-15 13:22:00 58

原创 23种设计模式之访问者模式

23种设计模式之访问者模式模式结构抽象访问者(Visitor)角色:定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 visit() ,该操作中的参数类型标识了被访问的具体元素。具体访问者(ConcreteVisitor)角色:实现抽象访问者角色中声明的各个访问操作,确定访问者访问一个元素时该做什么。抽象元素(Element)角色:声明一个包含接受操作 accept() 的接口,被接受的访问者对象作为 accept() 方法的参数。具体元素(ConcreteElement)角色:实现

2021-12-15 12:00:45 62

原创 23种设计模式之状态模式

23种设计模式之状态模式模式结构环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责具体状态的切换。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为,可以有一个或多个行为。具体状态(Concrete State)角色:实现抽象状态所对应的行为,并且在需要的情况下进行状态切换。案例/** * 环境类 */public class Context { private State state; /*定义环

2021-12-15 11:52:52 81

原创 java 集合之Queue

Queue继承关系1、ArrayBlockingQueue方法对比方法名作用效果add增加一个元素如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove移除并返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常element返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常offerpollpeekput

2021-12-15 11:38:53 175

原创 java 集合之List

List继承关系1、ArrayList结构图1、特点public class ArrayListDemo { public static void main(String[] args) { /** * 1、有序、可重复 * 2、默认初始化10个元素 * 3、扩容方式 当前元素个数 + 当前元素个数/2 * 4、查询效率高 */ List<String>

2021-12-14 13:39:08 202

原创 23种设计模式之备忘录模式

23种设计模式之备忘录模式模式结构发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。管理者(Caretaker)角色:对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改。案例/** * 发起人 */public class Originator { pr

2021-12-14 10:42:45 57

原创 23种设计模式之命令模式

23种设计模式之命令模式模式结构抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。具体命令类(Concrete Command)角色:是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。实现者/接收者(Receiver)角色:执行命令功能的相关操作,是具体命令对象业务的真正实现者。调用者/请求者(Invoker)角色:是请求的发送者,它通常拥有很多的命令对象,并通过访问命令对象来执行相关请求,它不直接访问接收者

2021-12-14 10:34:25 71

原创 23种设计模式之责任链模式

23种设计模式之责任链模式模式结构抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。案例/** * 抽象处理角色 */public abstract class Handler {

2021-12-14 10:28:29 120

原创 23种设计模式之迭代器模式

23种设计模式之迭代器模式模式结构抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、first()、next() 等方法。具体迭代器(Concretelterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。案例/**

2021-12-14 10:21:55 64

原创 23种设计模式之观察者模式

23种设计模式之观察者模式模式结构抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。具体主题(Concrete Subject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察者对象。抽象观察者(Observer)角色:它是一个抽象类或接口,它包含了一个更新自己的抽象方法,当接到具体主题的更改通知时被调用。具体观察者(Concrete Observ

2021-12-14 10:15:48 60

原创 23种设计模式之模板方法模式

23种设计模式之模板方法模式模式结构抽象模板具体实现案例/** * 模板方法 */public abstract class StudyAbroad { public void TemplateMethod() //模板方法 { LookingForSchool(); //索取学校资料 ApplyForEnrol(); //入学申请 ApplyForPassport(); //办理因私出国护照、出境卡和公证

2021-12-14 10:09:40 240

原创 23种设计模式之策略模式

23种设计模式之策略模式模式结构抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现。环境(Context)类:持有一个策略类的引用,最终给客户端调用。案例/** * 抽象策略 */public interface Strategy { public void strategyMeth

2021-12-14 10:01:22 106

原创 23种设计模式之享元模式

23种设计模式之享元模式模式结构抽象享元角色(Flyweight):是所有的具体享元类的基类,为具体享元规范需要实现的公共接口,非享元的外部状态以参数的形式通过方法传入。具体享元(Concrete Flyweight)角色:实现抽象享元角色中所规定的接口。享元工厂(Flyweight Factory)角色:负责创建和管理享元角色。当客户对象请求一个享元对象时,享元工厂检査系统中是否存在符合要求的享元对象,如果存在则提供给客户;如果不存在的话,则创建一个新的享元对象。案例/** * 抽象享元

2021-12-13 13:47:51 57

原创 23种设计模式之组合模式

23种设计模式之组合模式模式结构抽象构件(Component)角色:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象构件还声明访问和管理子类的接口;在安全式的组合模式中不声明访问和管理子类的接口,管理工作由树枝构件完成。(总的抽象类或接口,定义一些通用的方法,比如新增、删除)树叶构件(Leaf)角色:是组合中的叶节点对象,它没有子节点,用于继承或实现抽象构件。树枝构件(Composite)角色 / 中间构件:是组合中的分支节点对象,它有子节点,用于继承

2021-12-13 13:37:43 67

原创 23种设计模式之桥接模式

23种设计模式之桥接模式模式结构抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。案例/** * 实现化角色 */public interfac

2021-12-13 13:29:22 89

原创 23种设计模式之外观模式

23种设计模式之外观模式模式结构外观(Facade)角色:为多个子系统对外提供一个共同的接口。子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。客户(Client)角色:通过一个外观角色访问各个子系统的功能。案例/** * 子系统角色 */public class SubSystemA { public void methodA(){ System.out.println("methodA"); }}/** *

2021-12-13 13:19:53 47

原创 23种设计模式之代理模式

23种设计模式之代理模式模式结构抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。代理(Proxy)类:提供了与真实主题相同的接口,其内部含有对真实主题的引用,它可以访问、控制或扩展真实主题的功能。案例1、静态代理/** * 抽象主题 */public interface Person { public void say();}

2021-12-13 11:55:25 50

原创 23种设计模式之装饰器模式

23种设计模式之装饰器模式模式结构抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。案例/** * 抽象构件 */public interface

2021-12-13 10:56:08 241

原创 23种设计模式之适配器模式

23种设计模式之适配器模式模式结构目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。案例1、对象适配器/** * 目标接口 */public interface Target5V { int chong5V();}/** * 适配者类 */

2021-12-13 10:42:55 43

原创 23种设计模式之原型模式

23种设计模式之原型模式案例public class PrototypeDemo implements Cloneable{ private String name; public PrototypeDemo(){} public PrototypeDemo(String name){ this.name = name; } public String getName() { return name; } pu

2021-12-09 11:20:00 268

原创 23种设计模式之建造者模式

23种设计模式之建造者模式模式结构产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。案

2021-12-09 11:11:34 257

原创 23种设计模式之抽象工厂模式

23种设计模式之抽象工厂模式模式结构抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。案例/** * 抽象产品

2021-12-09 11:01:37 59

原创 23种设计模式之工厂方法模式

23种设计模式之工厂方法模式模式结构抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。案例/** * 抽象产品

2021-12-09 10:42:08 249

原创 七大设计原则之合成复用

七大设计原则之合成复用介绍尽量使用合成/聚合的关系,而非继承(泛化),在A类中set方法设置引用属性: 聚合在A类中new一个引用属性: 组合在A类中的方法传参引用: 依赖

2021-12-09 10:26:55 135

原创 七大设计原则之迪米特原则

七大设计原则之迪米特原则介绍最小知道法则,一个类对依赖的类知道的越少越好,降低类之间的耦合如果B类是A类的成员变量,方法参数,方法返回值,都可以称为朋友,避免非朋友的关系存在案例/** * 迪米特原则 * 最小知道原则 */public class LawOfDemeterPrincipleDemo1 { public static void main(String[] args) { CollegeManager collegeManager = new C

2021-12-09 10:24:39 291

原创 七大设计原则之开闭原则

七大设计原则之开闭原则介绍对扩展(开发者)开放,对修改(使用者)关闭,用抽象构建框架,用实现扩展细节案例/** * 开闭原则 * */public class OpenClosePrincipleDemo1 { public static void main(String[] args) { Shape rectangle = new Rectangle(); System.out.println(rectangle.m_type);

2021-12-08 11:00:30 49

原创 七大设计原则之里氏替换原则

七大设计原则之里氏替换原则介绍依赖于抽象而非具体;子类只能去扩展基类,而不是隐藏或者覆盖基类减少重写父类方法,可以通过聚合,依赖,组合来实现引用案例/** * 里氏替换原则 */public class LiskovSubstitionPrincipleDemo1 { public static void main(String[] args) { A a = new A(); System.out.println(a.fun1(11, 8));

2021-12-08 10:56:55 49

原创 七大设计原则之依赖倒转原则

七大设计原则之依赖倒转原则介绍依赖于抽象,不能依赖于具体实现, 细节依赖抽象案例第一种方式:/** * 依赖倒转原则 * 细节依赖抽象 * 传递抽象参数 */public class DependencyInversionPrincipleDemo1 { public static void main(String[] args) { Parent parent = new Parent(); Information email = new E

2021-12-08 10:54:16 45

原创 七大设计原则之接口隔离原则

七大设计原则之接口隔离原则介绍类之间的依赖关系应该建立在最小的接口上案例/** * 接口隔离原则案例 * 分拆接口 * 不实现过多的接口 */public class InterfaceSegregationPrincipleDemo1 { public static void main(String[] args) { Interface1 dependB1 = new B(); Interface2 depend2 = new B();

2021-12-08 10:50:40 42

原创 七大设计原则之单一职责原则

七大设计原则之单一职责原则介绍一个类只负责一项职责比如 dao 层案例1、类的级别上实现单一职责/** * 单一职责原则 * 严格意义的单一职责原则 */public class SingleResponsibilityPrincipleDemo { public static void main(String[] args) { UserDao userDao = new UserDao(); userDao.getUserInfo();

2021-12-08 10:43:55 147

原创 23种设计模式之简单工厂模式

23种设计模式之简单工厂模式模式结构简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。具体产品(ConcreteProduct):是简单工厂模式的创建目标。案例/** * 简单工厂 */public class SimpleFactory { public static Tele

2021-12-08 10:31:34 100

原创 java 日志框架详解

java 日志框架详解框架图1、日志框架类型Log4j,Log4j2,Commons Logging,Slf4j,Logback,Jul1.1、Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一1.2、Log4j2 Apache Log4j2是apache开发的一款Log4j的升级产品。1.3、Commons Logging Apache基金会所属的项目,是一套

2021-12-07 16:27:29 221

原创 log4j日志配置详解

log4j.properties 配置详解1、日志级别Log4j日志级别,分OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL2、配置文件log4j.properties//ERROR:日志级别//debug,error,Console:日志输出类型log4j.rootLogger=ERROR,debug,error,Console,File//打印日志log4j.appender.Console = org.apache.log4j.ConsoleAppenderl

2021-12-07 14:52:46 2135

原创 23种设计模式之单例模式

单例模式详解1、推荐方式/** * 双重校验+volatile * 线程安全 */public class Singleton { private static volatile Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance == null){ synchronized (

2021-12-07 11:51:32 239

空空如也

空空如也

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

TA关注的人

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