自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式——代理模式

代理模式,是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间祈祷中介的作用,代理模式属于结构型设计模式。使用代理模式主要有两个目的:一是保护对象,二是增强目标对象1.静态代理首先先举一个简单的例子创建顶层接口Person:public interface Person { public void findLove();}创建son类public c...

2019-10-11 21:11:13 105

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

.观察者模式模式简介定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。观察者模式结构图在观察者模式中有如下角色:Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集...

2019-10-11 21:06:43 113

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

装饰者模式是指在不改变原有的对象的基础上,将功能附加到对象上,提供了比继承更有弹性的解决方案,属于结构模型装饰者模式适用于以下场景1.扩展一个类的功能或给一个类添加附加职责2.动态的给对象添加功能,这些功能可以动态的撤销下面进行举例创建基础类public class Member { private String username; private String passw...

2019-10-11 21:04:53 110

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

适配器模式是指将一个类的接口转换为用户期望的另一个接口,使原本接口不兼容的类可以一起工作,属于结构型设计模式。适配器模式适用于以下几种业务场景:1.已经存在的类的方法和需求不匹配(方法相同或相似)的情况2.适配器模式不是软件初始阶段考虑的设计模式,是随着软件的发展,由于不同产品,不同厂家造成功能类似而接口不同的问题的解决方案,有点亡羊补牢的感觉、下面结合登录逻辑进行示例首先创建工具类Me...

2019-10-11 21:03:46 167

原创 并发编程基础

1.并发的发展历史真空管和穿孔打卡操作员在机房里来回调度资源,以及计算机同一时刻只能运行一个程序,在程序输入的过程中计算机处于空闲状态。而当时计算机是非常昂贵的,人们为了减少这种资源浪费。就采用了批处理系统来解决晶体管和批处理系统批处理操作系统虽然能够解决计算机空闲问题,但是当某一个作业因为等待磁盘或者其他I/O操作暂停时,那CPU就只能阻塞直到该I/O的完成,对于CPU操作密集型的程序,...

2019-10-11 11:50:09 151

原创 设计模式——模板模式

模板模式又叫模板方法模式,是指定义一个算法骨架,并允许子类向一个或多个步骤提供实现。模板使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤,属于行为设计模式。模板模式适用于以下场景1.一次性实现一个算法不变的部分,并将可变的行为留给子类来实现2.各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复下面举个例子创建ORM约束逻辑接口public interfac...

2019-09-08 22:44:43 141

原创 设计模式——策略模式

策略模式是定义了算法家族并分别封装起来,让它们之间可以相互替换,此模式是的算法的变化不会影响使用算法的用户1.策略模式的应用场景1.系统中有很多类他们的区别仅仅在于行为的不同2.一个系统需要动态的在集中算法中选择一种2.策略模式业务场景首先创建支付状态包装类public class PayState { private int code; private Object da...

2019-09-08 22:42:06 102

原创 设计模式——委派模式

委派模式不属于Gof23种设计模式。委派模式的基本作用就是负责任务的调度和分配,跟代理模式很像,可以看作是一种特殊情况下的静态的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在Spring中应用非常多,大家常用的DispatcherServlet就用到了委派模式下面进行举例创建员工接口public interface IEmployee { public void doi...

2019-09-08 22:40:21 60

原创 设计模式——原型模式

原型模式是指原型实例指定创建对象的种类,并且通过复制这些原型对象创建新的对象原型模式主要适用于以下场景1.类初始化消耗资源比较多2.使用new生成一个对象是一个比较繁琐的过程(数据准备,访问权限)3.构造函数比较复杂4.在循环体中产生大量对象1.浅克隆首先创建原型Prototype接口public interface Prototype { Prototype clone()...

2019-09-08 22:38:59 69

原创 设计模式——单例模式

单例模式,是指确保一个类在任何情况下都只有一个实例,并提供一个全局访问点。单例模式就是创建型模式、1.饿汉式单例模式饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象。他绝对线程安全,在线程还没有出现的时候就已经初始化了,不可能存在任何访问安全问题优点:没有加任何锁,执行效率比较高,用户体验比懒汉式单例要好缺点:类加载的时候就初始化,不管用不用都占者空间,浪费内存示例如下:pu...

2019-09-07 11:19:20 71

原创 设计模式——工厂模式

1.简单工厂模式简单工厂模式是指由一个工厂对象决定创建哪一种产品的实例,但他不属于Gof的23种设计模式。简单工厂模式适用于工厂类负责创建对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象不需要关心以下为实例创建课程接口ICourse:public interface ICourse { //定义方法 public void record();}定义ICourse...

2019-09-07 11:16:41 63

原创 软件架构设计的七大原则

1.开闭原则开闭原则是指一个软件实体如类,模块和函数应该对扩展开放,对修改关闭,所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调 的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开 闭原则,是面向对象设计中最基础的设计原则。实现开闭原则的核心思想就是面向抽象编程,接下来我们来看一段代码: 以学校的课程体系为例,首先创建一个课程接口ICourse: publi...

2019-09-03 17:24:11 108

原创 (三) 常见Java集合实现细节

三.常见Java集合的实现细节3.1Set和MapSet代表一种集合元素无序,集合元素不可重复的集合,Map则代表一种由多个key-value对组成的集合,Map集合类似于传统的关联数组。表面上看他们之间相似性很少,但实际上Map和Set之间有莫大的关联,可以说Map集合是Set集合的扩展3.1.1Set和Map的关系Set<->MapEnumSet<->Enum...

2019-09-03 17:16:26 151

原创 (二)对象与内存控制

二.对象与内存控制Java内存管理分为两个方面:内存分配和内存回收。这里的内存分配特指创建Java对象是JVM为该对象在堆内存中所分配的内存空间。内存的回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存。由于JVM的垃圾回收机制由一条后台线程完成,本身也是非常消耗性能的,因此如果肆无忌惮的创建对象,让系统分配内存,那这些分配的内存都将由...

2019-09-03 17:13:03 120

原创 (一)数组与内存控制

一.数组与内存控制1.1数组初始化1.1.1Java数组是静态的数组初始化有两种方式:1.静态初始化初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度2.动态初始化初始化时程序员指定数组长度,由系统为数组元素分配初始值Java数组是静态的,一旦为数组初始化完成,数组元素内存空间分配立即结束,程序只能改变数组元素的值,而无法改变数组长度Java的数组变量是一种引用类型...

2019-09-03 17:10:49 113

原创 HashMap问题汇总

1.HashMap实现原理HashMap基于hashing原理,我们通过put()和get()方法存储和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在...

2019-09-03 17:05:52 290

原创 关于String“==”与“equls”的区别与比较

一般来说==比较地址equls比较HashCode码值(即比较两者是否为同一对象)但在String中重写了equls方法和hashCode方法变为只比较内容的一致性在以new的形式生成String对象时首先会在堆中开辟空间存储内容同时检查常量池中有无该内容没有的话在常量池中创建一份相同的注:String常量池:为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字...

2019-09-03 17:03:56 260

空空如也

空空如也

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

TA关注的人

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