自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 读写锁探究

读写锁探究介绍读写锁ReadWriteLock 管理两种锁,包括只读的锁和写锁读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占锁所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。读写锁的特性是:写独占,读共享,读写锁是独占锁和共享锁的结合体ReadWriteLock介绍ReadWriteLock是一个接口public interface ReadWriteLock { Lock readLock

2020-12-23 16:59:33 146

原创 Java锁

Java中的锁Lock接口有关锁锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源有些锁是允许多个线程同时访问共享资源的,比如读写锁Lock接口提供了和synchronized关键字类似的同步功能,但是在使用的时候需要显式的获取和释放锁虽然Lock接口缺少了隐式获取释放锁的便捷性,但是却可以实现锁获取与释放的可操作性,可中断的获取锁以及超时获取锁等,这些特性是synchronized所不具备的使用实例代码public class TestLoc

2020-12-18 14:10:49 186

原创 Java 并发编程基础

什么是线程线程是系统调度的最小单元,操作系统在运行一个程序时,会为其创建一个进程,在这个进程中可以创建多个线程,每个线程都拥有各自的计数器,堆栈和局部变量等属性,并且能够访问共享的内存变量。java程序天生就是多线程程序线程优先级操作系统基本采用时分的形式调度运行的线程,操作系统会分出一个个的时间片,线程会分配到若干时间片,当线程的时间片用完了就会发生线程调用,并等待着下次分配,线程分配到的时间片多少决定了线程使用处理器资源的多少,而线程优先 级就是决定线程需要多或者少分配一些处理器资源的线程属性。

2020-12-04 17:07:50 169

原创 volatile探究

一,内存模型什么是内存模型?简单是说内存模型是一个规范,规定了再多核多线程情况下,各种不同的CPU是如何以一种统一的方式与内存来交互的。包括针对内存读写操作的重排序规则,可见性规则。顺序一致性内存模型顺序一致性内存模型是一个理论参考模型,为程序员提供了极强的内存可见性保证特点一个程序中的所有操作必须按照程序的顺序来执行所有线程都只能看到一个单一的操作执行顺序,在顺序一致性内存模型中,每个操作都必须原子执行且立刻对所有线程可见顺序一致性模型有一个单一的全局内存,这个内存可以通过自动或被

2020-11-27 17:48:56 221

原创 设计模式之职责链模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式学校OA系统的采购审批项目采购员采购教学器材如果金额小于等于5000,由教学主任审批(0<=x<=5000)如果金额小于等于10000,由院长审批(5000<x<=10000)如果金额小于等于30000,由副校长审批(10000<x<=30000)如果金额超过30000以上,有校长审批(x>30000)传统方案分析传统方式是:接收到一个采购请求后,根据采购金额来调用对应的Approver

2020-06-01 23:25:40 310

原创 设计模式之策略模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式一个鸭子项目有各种鸭子(比如野鸭,北京鸭,水鸭等,鸭子有各种行为,比如叫,飞行等)显示鸭子的信息传统继承方式的问题其它鸭子,都继承了Duck类,所以fly让所有子类都会飞了,这是不正确的上面说的1的问题,其实是继承带来的问题:对类的局部改动,尤其超类的局部改动,会影响其他部分。会有溢出效应为了改进1的问题,我们可以通过覆盖fly方法来解决=>覆盖解决问题又来了,如果我们有一个玩具鸭子ToyDuck,这样就需要ToyDuck

2020-06-01 18:44:38 205

原创 设计模式之状态模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式APP抽奖活动案例假如每参加一次这个活动要扣除用户50积分,中奖概率是10%奖品数量固定,抽完就不能抽奖活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完基本介绍状态模式(State Pattern) :它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类角色Context类为环境角色,用

2020-06-01 16:14:05 153

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式四则运算问题通过解释器模式来实现四则远算,如计算a+b+c的值,具体要求先输入表达式的形式,比如a+b+c-d+e, 要求表达式的字母不能重复再分别输入a ,b, c,d,e的值最后求出结果基本介绍在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成- 颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式(Interpreter Pattern)

2020-06-01 12:17:48 233

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式游戏角色状态回复问题游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态基本介绍备忘录模式(Memento Pattern) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防

2020-05-31 21:57:55 110

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式智能家庭项目智能家庭包括各种设备,闹钟,咖啡机,电视机,窗帘等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放传统的方式的问题分析当各电器对象有名种状态改变时,相互之间的调用关系会比较复杂各个电器对象彼此联系,你中有我,我中有你,不利于松耦合.各个电器对象之间所传递的消息(参数),容易混乱当系统增加一个新的电器对象时,或者

2020-05-31 17:49:11 97

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式项目需求气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。需要设计开放型API,便于其他第三方也能接入气象站获取数据。提供温度、气压和湿度的接口测量数据更新时,要能实时的通知给第三方传统方式问题分析其他第三方接入气象站获取数据的问题无法在运行时动态的添加第三方原理观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer, S

2020-05-31 15:22:29 89

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式一个需求编写一个展示学校院系结构:需求是这样的,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系如:计算机学院Java工程师大数据工程师前端工程师信息安全信息工程学院网络信息安全电子技术传统方式问题分析将学院看做是学校的子类,系是学院的子类。这样实际上是站在组织大小来进行分层次的实际上我们的要求是:在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系,因此这种方案,

2020-05-31 15:19:08 117

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式测评系统将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(有不同的种类,比如成功,失败等)传统方式的问题如果系统比较小,还是OK的,但是考虑系统增加越来越多的新功能时,对代码改动较大,违反了ocp原则扩展性不好,比如增加了新的人员类型,或者管理方法,都不好做基本介绍访问者模式(VisitorPattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下是义作

2020-05-31 15:06:58 165

原创 设计模式之命令模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式基本介绍命令模式(Command Pattem) :在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命名模式中,会将一个请求封装为一个对象,以便使用不同参数来表示不同的请求(即命名),同时命令模式也支持可撤销的操作通

2020-05-31 15:02:29 98

原创 设计模式之模板模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式案例介绍制作豆浆的流程选材–添加配料–浸泡-放到豆浆机打碎通过添加不同的配料,可以制作出不向门味的豆浆选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的请使用模板方法模式完成(说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用,不再使用传统的方案来引出模板方法模式) .基本介绍模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern), 在

2020-05-31 14:59:25 87

原创 设计模式之代理模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式说明代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种静态代理、动态代理(JDK代理、接口代理)和Cglib代理(可以在内存中动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)。(1),静态代理基本介绍静态代

2020-05-31 14:55:22 107

原创 设计模式之享元模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式一个项目需求小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布有客户人要求以博客的形式发布有客户希望以微信公众号的形式发布。基本介绍享元模式(FIyweight Pattern)也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要

2020-05-31 14:32:44 213

原创 设计模式之外观模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式传统方法的问题在ClientTest的main方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会适成调用过程混乱,没有清晰的过程不利于在ClientTest中,去维护对子系统的操作解决思路:定义一个高层接口,给子系统中的一组接口提供一个一致的界面(比如在高层接口提供四个方法ready, play, pause, end),用来访问子系统中的一群接口也就是说就是通过定义一个-致的接口(界面类),用以屏蔽内部子系统的细节,使得调

2020-05-31 14:18:58 146

原创 设计模式之组合模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式看一个学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系。如:清华大学计算机学院计算机科学与技术软件工程网络工程信息工程学院通信工程信息工程基本介绍组合模式(Composite Pattern) ,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象

2020-05-31 14:02:43 111

原创 设计模式之装饰者模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式星巴克咖啡订单项目咖啡种类/单品咖啡: Espresso(意大利浓咖啡)、 ShortBlack、 LongBlack(美式咖啡)、Decaf(无因咖啡)调料: Milk、 Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用〇〇的来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以单品咖啡+调料组合。解决星巴克咖啡订单问题Drink是一个抽象类,表示饮料des就是对咖啡的描述

2020-05-31 13:57:04 105

原创 设计模式之桥接模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式基本介绍桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。是一种结构型设计模式Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展角色Client类:桥接模式的调用者抽象类(Abstraction):维

2020-05-31 13:45:01 145

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类: 类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的用户调用适配器转化出来的目标接

2020-05-31 13:40:26 100

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

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式(1),传统方式:AbstractHouse.javapublic abstract class AbstractHouse { //打地基 public abstract void buildBaisc(); //砌墙 public abstract void buildWalls(); //封顶 public abstract void roofed(); //把上边三个放在一起 p

2020-05-31 13:33:53 169

原创 设计模式之原型模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式(1),普通方式(缺一个new一个)Sheep.javapublic class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { this.name = name; this.age = age;

2020-05-31 13:24:45 85

原创 设计模式之工厂模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式工厂模式包括两个设计模式:工厂方法模式抽象工厂模式这里将这两个设计模式放在了一起(1),一个具体的需求看一个披萨项目,要便于种类的扩展,要便于维护披萨的种类有很多(比如 GreekPizz,CheesePizza)披萨的制作有 prepare,bake,cut,box。完成披萨店订购功能普通方式Pizza//将Pizza类做成抽象的public abstract class Pizza { protected

2020-05-31 13:23:13 123

原创 设计模式之单例模式

本文根据尚硅谷韩顺平老师的设计模式课程编写设计模式介绍所谓类的单例模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象的实例,并且该类只提供一个取得其对象实例的方法举例比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象,SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时就会使用到单例模式。代码(1),饿汉式(静态变量)//饿汉式(静态变量)c

2020-05-31 13:11:52 77

空空如也

空空如也

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

TA关注的人

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