自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决idea的控制台输出Tomcat日志乱码问题

解决idea的控制台输出Tomcat日志乱码问题乱码原因由于window下的idea默认编码集都默认是GBK,而Tomcat目前版本是UTF-8,所以会出现乱码。第一种解决方案:将Tomcat输出日志的编码改为GBK在Tomcat的config目录下有一个logging.properties文件,文件中可以在五个地方设置编码,分别对应红色圆圈内五个日志输出文档(默认只选中了两个),将UTF-8的地方全改成GBK1catalina.org.apache.juli.FileHandler.l

2020-10-30 00:03:31 1049

原创 java多线程(六)可重入锁与CAS

可重入锁可重入锁就是,如果某一个线程试图获取一个已经由它自己持有的锁时,那么这个锁就会立刻成功,并且会将这个锁的计数值加1,而当线程退出同步块时,计数器会减1,当计数值等于0时,锁释放。假设没有可重入锁,在第二次企图获得已持有的锁时就会进入死锁状态。下面简单写一个不可重入锁和可重入锁,加深理解代码不可重入锁,会一直死锁,程序运行后不会停止public class LockTes...

2020-04-10 18:42:14 406

原创 java多线程 (五)ThreadLocal

介绍在多线程的环境下,每个线程都有自己的数据,一个线程使用自己的局部变量比使用全局变量更方便更安全,这样不会影响其他线程。ThreadLocal就可以为每个线程创建和管理它们各自的数据ThreadLocal常用方法ThreadLocal的常用方法set(),get(),remove()。Modifier and TypeMethod and Description...

2020-04-10 13:52:54 129

原创 设计模式(二十二)策略模式

文章目录模式动机模式定义模式结构模式分析模式实例模式优缺点模式适用环境和应用策略模式与状态模式的区别模式动机为了完成某一项任务,往往有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件系统中,有许多算法可以实现某一功能,如查找,排序等,一种常用的方法是硬编码,就是在一个类中提供多个方法,每一个方法对应一个具体的查找算法,也可以将这些查...

2020-04-09 14:39:52 92

原创 设计模式(二十一)状态模式

文章目录模式动机模式定义模式结构模式分析模式实例模式优缺点模式应用模式动机在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象,这样的对象状态是从实现定义好的一系列值中取出的,当一个这样的对象与外部实际产生互动时,其内部状态就会发生改变,从而行为也随之改变。模式定义状态模式(State Pattern):允许一个对象在其内部状态改...

2020-04-09 14:38:04 103

原创 设计模式(二十)观察者模式

文章目录模式动机模式定义模式结构模式分析代码模式优缺点适用环境模式动机建立一种对象与对象之间的依赖关系,一个对象发生改变时自动通知其他对象,其他对象相应做出反应。发生改变的对象称为观察目标,被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使系统更易于扩展。模式定义观察者模式(Observer Pattern):定义...

2020-04-09 14:36:24 77

原创 java多线程(四)指令重排和volatile

指令重排指令重排是指执行代码的顺序和编写代码不一致,即虚拟机优化代码顺序,编译或运行时环境为了优化程序性能而采取的对指令进行重写排序执行的一种手段。如果两个操作访问一个变量,而且这两个操作中有一个为写操作,此时这两个操作之间存在数据依赖(简单说就是这两个操作若互换顺序了,就会带来不同的结果)。编译器和处理器重排指令顺序时候,会遵守数据依赖,编译器和处理器不会改变存在数据依赖关系的两个操作的执...

2020-04-08 19:01:47 389

原创 java任务定时调度

任务定时调度就是在以后某个时间或一次或多次执行事先定好的任务。java中使用任务调度的类是Timer类,先看看Timer的方法返回值类型方法和描述voidcancel() 终止此计时器,丢弃任何当前计划的任务voidschedule(TimerTask task, Date time) 在指定的时间安排指定的任务执行。voidschedule(Tim...

2020-04-08 17:43:57 158

原创 java多线程(三)并发与死锁

学过操作系统或数据库的小伙伴都知道,当有多个线程同时对一个资源操作时,若没有保护措施就会不安全。例如数据库中有一个值,现在有两个线程,一个读取,一个修改,若读取在前,修改在后,则读取到的是一个旧的值。文章目录并发同步与线程的安全性Synchronized保证java线程安全性死锁的产生与解决并发同步与线程的安全性并发是指多个线程同时操作同一个资源,若控制不当我们就称为线程不安全。下...

2020-04-06 13:53:25 108

原创 设计模式(十九)备忘录模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实列五 . 模式分析六 . 模式优缺点七 . 适用环境和应用一 . 模式动机让软件系统可以回到误操作以前,就相当于撤销上一步。备忘录模式就是为了实现这个功能的模式。因此我们需要记录一个对象的内部状态,在具体实现过程中,需要实现备份点和撤销机制,必须事先将状态保存起来。二 . 模式定义备忘录模式(Memento Pa...

2020-04-05 02:25:53 109

原创 java多线程(二)线程状态与操作线程的常用方法

文章目录一 . 线程的基本状态二 . 线程状态图三 . 在Java代码中的线程状态四 . 操作线程的常用方法五 . 常用方法的使用一 . 线程的基本状态新生状态:线程开启就绪状态:具有了除CPU以外的所有资源运行状态:CPU调度,开始真正执行阻塞状态:因为某些原因放弃CPU,等待再次调度死亡状态:正常结束或者被强制结束二 . 线程状态图[外链图片转存失败,源站可能有防盗链机制...

2020-04-04 22:40:07 87

原创 lambda表达式

lambda表达式就是JDK1.8以后,的一种简化匿名内部类的方式。简单易学,老少皆宜。注意lambda表达式只能在接口中只有一种方法的前提下使用。interface A{ void out(int a);}public class testLambda { public static void main(String[] args) { //局部内部类...

2020-04-04 20:03:04 91

原创 java多线程(一)创建线程的三种方法及比较

文章目录Java创建线程有三种方法一 . 继承Thead类二 . 实现Runnable接口三 . 实现Callable接口四 . 三种方的法比较Java创建线程有三种方法继承Thread类实现Runnable接口实现Callable接口一 . 继承Thead类继承Thea的类后我们要重写一个run()方法,这个run()方法里面的内容就是开辟新线程要执行的内容。注意,虽然新...

2020-04-04 18:09:33 90

原创 设计模式(十八)中介者模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实列五 . 模式分析六 . 模式优缺点七 . 适用场景和应用八 . 模式扩展一 . 模式动机中介者模式是为了解决系统结构复杂(对象之间存在大量的相互关联和调用),对象可重用性差,系统扩展性低。二 . 模式定义用一个中介对想来封装一系列对象交互,中介者适用各对象不需要显示的相互引用,从而使其松耦合,并且可以独立的改变他...

2020-04-03 21:24:17 119

原创 设计模式(十七)迭代器模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 实例代码五 . 模式分析六 . 模式优缺点七 . 应用一 . 模式动机集合有存储数据和遍历数据的职责,但这没有遵循单一职责原则,因此我们可以把遍历单独拿出来封装,做到单一职责原则。二 . 模式定义提供一中种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标。迭代器是一种对象型模式。三 . 模式结构I...

2020-04-03 21:21:34 106

原创 设计模式(十六)解释器模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式优缺点七 . 适用场景和应用一 . 模式动机如果系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构件一个解释器,该解释器通过解释这些句子来解决这些问题。二 . 模式定义解释器模式(Interpreter Pattern):定义语言的文法,并且建立一个...

2020-04-03 13:57:04 105

原创 设计模式(十五)命令模式

文章目录一 . 模式动机二 . 模式定义三四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 使用环境和应用八 . 模式扩展一 . 模式动机使得请求发送者和接收者解耦,他们两个没有直接引用关系,发送请求的对象只需直到如何发送请求,不必知道如何完成请求。二 . 模式定义命令模式(Command Pattern):将一个请求分装为一个对象,从而使我们可用不同的请求对客户进行参数化;...

2020-04-02 16:07:15 120

原创 设计模式(十四)职责链模式

文章目录一 . 模式动机二 . 定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 职责链模式优缺点七 . 适用环境和应用八 . 模式扩展一 . 模式动机假设你要去请假,先交给老师,但请假时间太久,老师无法处理,需要院长批准,你又去找院长,院长也无法处理,要校长批准,你又去找校长。这样就变得非常麻烦因为每一级都需要你去,所以我们请假通常就是交给老师,老师不能批准的假条由老师交给院长,...

2020-04-02 16:04:00 91

原创 设计模式(十三)代理模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式实例五 . 模式优缺点六 . 模式使用环境七 . 模式应用一 . 模式动机在某些情况下,客户不想或不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用,代理对象可以在客户端和目标之间起到中介作为,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。二 . 模式定义代理模式...

2020-03-28 16:34:12 60

原创 设计模式(十二)享元模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 使用环境八 . 模式扩展一 . 模式动机面向对象技术可以很好的解决一个写灵活性或者扩展性问题,单在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代缴过高,带来性能下降。享元模式通过共享技术实现相同或相似对象的重用。享元模式中可以共享的相同内容成为内部状...

2020-03-28 16:31:49 102

原创 设计模式(十一)外观模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构三 . 模式分析四 . 模式实例五 . 模式优缺点六 . 适用场景七 . 模式应用八 . 模式扩展一 . 模式动机在系统比较复杂时,用户与系统之间的关系也会变得复杂,这时候我们可以适用一个外观角色,作为用户和子系统之间的一个角色,用户只需要与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现。二 . 模式定义外观模式(Fa...

2020-03-28 16:28:48 131 1

原创 设计模式(十)装饰器模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 适用场景八 . 模式应用一 . 模式动机一般有两种方式可以给一个类或对象增加行为:继承:是给现有类增加功能的一种有效途径,这是静态的,因为用户不能控制增加行为的方式和时机。关联(组合):即将一个类嵌入另一个对象中,由另一个对象决定是否调用嵌入对象的行为以便扩展自己的行为,...

2020-03-25 21:16:09 69

原创 设计模式(九)组合模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 模式使用环境八 . 模式应用九 . 模式扩展一 . 模式动机对于树形结构的,客户端中必须区别对待容器(这里容器指树形结构中不是端点的节点)和叶子对象,而实际上大多数情况下客户端希望一致处理他们。二 . 模式定义组合模式(Composite Pattern):组合多个对象形...

2020-03-25 21:06:13 98

原创 设计模式(八)桥接模式

文章目录一 . 模式动机二 . 模式定义三 . 模式结构四 . 模式分析五 . 模式实例六 . 模式优缺点七 . 模式适用环境八 . 模式应用八 . 模式应用一 . 模式动机如果想要画带颜色的形状,比如想要绘制圆形,矩形,椭圆,正方状类,但绘制图性有红,绿,蓝等颜色现在有两种方式。第一种:全关联模式,就是全连接为每种不同颜色不同形状的图型创建对象。四种图像三种颜色,全关联要12种类第二...

2020-03-23 13:34:44 103

原创 设计模式(七)适配器模式

一 . 模式动机我们台式电脑的鼠标和键盘的接口并不是USB,但现在我们有一个USB接口的键盘,我们想在台上电脑上适用这个USB接口的键盘,就必须用到一个接口转换器,一边插USB键盘一边插电脑接口适配器模式就是为了应对这种情况,使那些不兼容的类可以一起工作二 . 定义适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起...

2020-03-22 18:08:46 78

原创 设计模式(六)单例模式

一 . 模式动机在某些情况下,我们只需要一个对象实列,例如,window系统的任务管理器,你不论打开多少次,它都是同一个管理器对象,还有时间,系统系需要一个时间对象就够用。因此,我们就可以用单例模式来,设计一个类只能创建一个实例,无论你怎么搞,都只会是那一个实例。二 . 模式定义单例模式(Singleton Pattern):单例模式确保一个类只有一个实例,并且自行实例化并向整个系统...

2020-03-22 16:15:42 79

原创 设计模式(五)原型模式

一 . 模式动机在软件系统中,有些对象的创建过程比较复杂,而且需要频繁创建,消耗资源多,原型模式就是通过给出一个原型对象来指明要创建对象的类型,然后复制这个原型对象,创建更多这个类型的对象,就相当于给一个原物品,然后复制很多此物品,这样来降低创建多个同种复杂对象的资源。二 . 定义原型模式(Prototype Pattern):是一种对象型创建模式,用原型实列指定要克隆的对象的类型,通...

2020-03-20 17:38:29 146

原创 设计模式(四)建造者模式

一 . 模式动机汽车厂造汽车不会直接造一个完整的汽车,而是建造汽车零件,然后再将汽车零件组装起来,而用户直接看到的就是一个完整的汽车,由于组合过程很复杂,所以将组合这一个过程放到一个建造者对象中,建造者给用户的就是一个完整的组合好的对象,用户不需要知道怎么组合的。二 . 定义建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不...

2020-03-19 16:00:23 144

原创 设计模式(三)抽象工厂模式

文章目录定义UML图和结构应用实例实列代码模式优缺点适用环境前言:上一篇工厂方法模式解决了简单工厂模式的开闭原则,这里的抽象工厂模式其实是基于工厂方法模式的,但是他的抽象产品与工厂方法模式不同,具体工厂创建对象也。我们往下看吧。定义抽象工厂模式,即Abstract Factory Pattern,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类;具体的工厂负责实现具体的...

2020-03-15 20:25:04 107

原创 设计模式原则与分类

设计模式原则与分类文章目录设计模式原则与分类设计模式七大原则设计模式的分类设计模式七大原则开闭原则(OCP:Open Close Principle):(百度百科)在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环...

2020-03-15 19:06:44 115

原创 设计模式(二)工厂方法模式

设计模式(二)工厂方法模式前言工厂方法模式是在简单工厂模式的基础上,为了弥补简单工厂扩展性差的一种方法,即就是对于工厂也分为抽象工厂和具体工厂,具体工厂继承抽象工厂,并与一个具体产品相互对应,就是为每个具体产品写一个具体工厂。这样在扩展产品时候无需修改之前的代码,只需要写一个具体产品和一个具体工厂,满足了可扩展性的要求一 . 定义工厂方法模式(Factory Method Patte...

2020-03-15 14:56:09 205

原创 设计模式(一)简单工厂

设计模式(一)简单工厂模式一 . 定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二 . UML图和模式结构F...

2020-03-14 23:09:38 130

空空如也

空空如也

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

TA关注的人

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