自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP相关整理

HTTP协议各个版本相关概念及涉及到的其他知识点整理

2020-07-22 23:06:51 302

原创 从字节码看JVM处理异常及finally模块

JVM异常在java中,异常分为显示异常和隐式异常两种。显示异常指java应用抛出的异常,程序遇到了无法执行的逻辑,通过throw抛出异常;隐式异常指虚拟机在执行过程中,碰到错误无法执行下去,不得不停止执行,自动抛出异常,比如对象执行方法,结果该对象为Null,那么会出现NPE。关于异常的内容异常篇为什么不能通过异常来处理业务逻辑异常实例的构建过程十分复杂。在某个方法中生成了异常,一般我们会得到这个异常的栈轨迹,这个内容就是由JVM来生成的。JVM会从当前出现异常的方法开始,逐一向下访问所在线程的

2020-07-09 22:49:12 226

原创 简单读HashMap源码笔记

package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import j...

2020-02-04 22:17:26 145

原创 软件设计师考试重点整理

一个半月完成了软件设计师考前学习,59+65,xmind分享出来,基本一边做笔记,一般把重点弄透很容易过。有需要的或者要试题的可留邮箱。现在有19年上半年之前的试题。https://www.processon.com/view/link/5e216dcee4b006a43adef7c0...

2020-01-17 16:19:24 348 7

原创 设计模式学习-访问者模式

访问者模式在处理某些容器类对象结构的时候,对象结构中存储了多种不同的对象信息,并且针对元素的处理方式并不唯一,可能需要提供多种不同的处理方式,也有可能增加新的处理方式。对于这种情景,可以考虑使用访问者模式。访问者是一种比较复杂的行为型设计模式,它包含了访问者和被访问元素部分。在使用访问者模式的时候,被访问元素通常不是单独存在的,他们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对...

2019-07-26 03:58:22 84

原创 设计模式学习-模板方法模式

模板方法模式在我们的功能设计中,通常一些功能是由一系列步骤来完成的,这些步骤的次序基本一致,但是它们的实现可能完全不同。比如我们打算买一部手机,那么流程基本为浏览、下单、支付、收货四个步骤,浏览下单可以线上下下,支付可以现金、转账,收货可以立刻取货、邮寄等。可以看出,步骤是固定的,但是实现方法多样。那么为了提高代码的复用性和灵活性,我们可以使用模板方式来设计此类功能。模板方法模式是结构最简单的...

2019-07-26 01:06:06 99

原创 设计模式学习-策略模式

策略模式策略模式一般用项目中算法功能的切换。对于解决某一个问题,假设存在一个算法族,如果希望某些时刻从其中选择一个合适的算法来实现功能,那么可以选择使用策略模式。策略模式将算法的表示功能和使用功能相分离,可以很方便的更换算法或者增加新的算法,符合开闭原则在实际应用中也比较常见。策略模式的UML类图和状态模式比较相似,但两者在使用上存在根本的区别。状态模式是根据传入的参数,被动的选择合适的算法执...

2019-07-26 00:14:23 100

原创 设计模式学习-状态模式

状态模式在某些情况下,一些对象存在着比较多的状态,在不同的状态下,执行不同的方法,通常的解决办法就是为每个状态编写一个if…条件进行判断。当状态比较多,并且行为复杂的时候,会导致代码的可维护性、灵活性、扩展性降低,并且在增加新的状态的时候,代码也要随之修改,违背了开闭原则。状态模式被设计来解决系统中复杂对象的状态变化以及不同状态下行为的封装问题。当系统中的某个对象存在多种状态,并且这些状态之间...

2019-07-23 21:44:09 81

原创 设计模式学习-观察者模式

观察者模式在软件系统中,各个对象并不是孤立存在的,经常会出现一个对象的状态发生了变化,会导致其他一个或者多个存在依赖关系的对象跟随变化的场景。观察者模式用来描述对象之间的依赖关系,为实现多个对象之间的联动提供了一种解决方案。定义观察者模式定义了一种一对多的依赖关系,每当一个对象的状态发生变化的时候,其他依赖对象都会得到通知并发生相应变化。结构观察者模式通常包含观察者和观察目标两个部分。...

2019-07-21 14:35:24 97

原创 IDEA快捷键整理

ctrl + ↑ 向上滚动一行ctrl + ↓ 向下滚动一行ctrl + ← 跳转单词左侧ctrl + → 跳转单词右侧ctrl + - 收缩代码ctrl + = 展开代码ctrl + [ 跳转代码块起始ctrl + ] 跳转代码块结束ctrl + delete 删除光标至单词结尾内容ctrl + end 跳转到文件尾ctrn + h...

2019-07-11 14:37:59 83

原创 Java8-Stream

Stream流Stream流是Java API的新成员,它允许声明性方式处理数据集合,可以把它们看成遍历数据集的高级迭代器。通常在集合的相关操作中,一般有存储、迭代、计算三个方面的功能,在Java8之前一般是用集合进行存储,用迭代器进行外部迭代和计算,而Stream的引入,是将计算的功能拆分出来。集合和流的区别粗略地说,集合与流之间的差异就在于什么时候进行计算。集合使用的时候所有元素都在内...

2019-07-09 14:05:06 148

原创 java8-方法引用

方法引用方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。方法引用可以被看作特定Lambda表达式的一种简单写法。它的基本思想是,如果一个Lambda表达式的内容是调用一个方法,那么可以直接通过“类名+方法名”的方式来使用。当你需要使用方法引用时,目标引用放在分隔符::前,方法的名称放在后面,不需要括号。方法引用的分类方法引用主要有三类。指向静态方法的方法引用 In...

2019-07-09 14:03:57 189

原创 Java8-新增特性整理

lambda表达式Lambda表达式::方法引用方法引用Stream新增Stream流迭代功能及相关接口新的日期和时间API支持LocalDate 日期LocalTime 时间LocalDateTime 整合Instant 时间戳Duration 区间Periond 区间TemporalAdjuster 操作日期、时间函数接口新增Optional类Optional...

2019-07-09 14:01:46 101

原创 设计模式学习-备忘录模式

备忘录模式备忘录模式是为了实现系统中的撤销操作而设计的,当用户操作失误需要撤销操作返回到某个历史状态时可以去除实现保存的历史状态来覆盖当前状态。备忘录模式本身比较简单,在java网络应用中用的也比较少,因此加单介绍一下,并写了一个最简单的实例。定义在不破坏封装的前提下捕获一个对象的内部状态,并且在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。结构Originato...

2019-06-27 01:39:23 128

原创 设计模式学习-中介者模式

中介者模式对于存在着多对多的复杂调用关系的系统,中介者模式提供了一种解决这种复杂关系的处理方案。假设一个系统中有4个对象相互作用,其中一个对象发生了变化,其他3个对象都要执行某个方法:如果每个对象都关联3个对象,那么关联关系将比较复杂,并且难以维护。我们可以设置一个中介者类,关联所有对象,当一个对象发生变化时,由它对其他3个对象进行通知,化繁为简。通过中介者类的中转作用,各个同事对象之间不...

2019-06-27 00:10:15 98

原创 设计模式学习-迭代器模式

迭代器模式迭代器模式一般设计用来对一个容器对象进行遍历,通过引入一个迭代器,将容器的存储功能和遍历功能进行分离,容器只有存储功能,遍历功能由迭代器来完成,进行了职责的分离,更加符合单一职责原则。在使用迭代器模式的过程中,除了功能的分离,还有另一个好处:当一个容器接口有不同的实现的时候,为每一个实现提供了一个统一的遍历接口,这样一方面具体实现不需要对外暴露它的内部结构,另一方面调用方也不用关系实...

2019-06-22 16:58:58 114

原创 java-内部类

内部类内部类是定义在另一个类内部的类。分类普通内部类:在一个类中定一个类,属于外部类的成员。// 代码基于java 1.8// 内部类对象引用外部类对象 Outer.this// 创建内部类对象 outerObject.new InnerClass{construction parameters)public class Outer { private String name ...

2019-06-06 14:31:48 57

原创 Lambda表达式的序列化

JDK中函数接口(未继承Serializable接口)的序列化Comparator中代码...public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) { Objects.requireNonNull(keyExtractor); ...

2019-05-30 16:33:56 896

原创 Java-Lambda表达式

介绍在Lambda出现之前的函数编程中,通过单个接口表示类型,实例作为函数对象,表示函数或者要采取的动作。而使用函数对象的方式往往是通过声明匿名类,示例如下Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("匿名类"); }});上面的代码中,...

2019-05-30 16:33:23 148

原创 Spring中动态选择实现类

在spring中当一个接口有多个实现类的时候,通过创建简单工厂类,根据传入的不同的参数获取不同的接口实现类。public interface ExecuteService { ExecuteEnum getCode(); // 业务方法 void execute();}@Servicepublic class FirstExecuteServiceImpl imp...

2019-05-22 10:50:08 2139 4

原创 MYSQL与MYSQL事务

MySql的逻辑架构mysql的逻辑架构分为3层第一层架构功能比较常见,负责授权认证、连接处理、安全等功能第二层架构是mysql的核心功能区。查询、分析、优化、缓存以及所有的内置函数都在这一层,所有跨存储引擎的功能也在这一层第三层架构为存储引擎层,负责mysql中数据的存储和提取。相关知识点MYSQL的独特的存储引擎架构将查询处理和其他系统任务与数据的存储、提取相分离,这种处理...

2019-05-21 13:25:11 100

原创 java-序列化中的自定义方法

java序列化中的自定义方法在Java中通过默认序列化写和读的方法是有比较大的风险的,Java允许我们通过编写writeObject、readObject、writeReplace、readresolve、readObjectNoData等方法,来实现Java的自定义序列化。在java进行序列化和反序列化的时候,它会通过反射调用被序列化类中的上述方法。默认的序列化和反序列化下面的例子,是默认...

2019-05-15 14:46:43 789

原创 java-序列化知识点整理

学习《Effective Java》和相关知识点,加入自己的理解整理。序列化对象被序列化后,成为字节流,可以在网络中传递或者存储在磁盘中,等待进行反序列化的读取,将字节流组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量,因为static修饰的是类变量,它存在于对象实例化之前,另外由transient关键字修饰的变量也不会被...

2019-05-15 14:45:34 267

原创 Java-异常相关知识点

Exception程序运行期间出现的非法运行状况,通过抛出一个异常,来终止任务或者对调用方进行提示。Exception是一个对象,包含了异常的String信息和一些处理方法,如果是自定义异常,那么可以有自定义方法。Exception继承体系根据Java中常见的异常和error做了一个继承体系图如下。在Exception体系中包含受检结构和非受检结构。受检结构即为受检异常,非受检结构包含非受检...

2019-05-08 15:06:07 434

原创 设计模式学习-解释器模式

解释器模式解释器模式用于对某种特定的语句进行分析和执行,当我们需要使用一些简单的语句来实现特定的操作的时候,只需要输入按照语言规则编写的语句,那么通过解释器模式可以按照预先定义的规则进行解析和执行。定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解析语句中的句子。结构AbstractExpression抽象表达式。终结符表达式和非终结符表达式的父类,定...

2019-05-03 13:43:54 94

原创 设计模式学习-命令模式

命令模式命令模式是常用的行为型设计模式之一,它在请求的发送者和接收者之间引入了新的命令对象,将请求的发送者和请求的接收者进行解耦,请求发送者通过命令对象简介引用请求接收者,使得系统具有更好的灵活性,可以在不修改现有系统源代码的情况下让相同的发送者对应不同的接收者。命令模式的本质时对命令进行封装,一个请求对应一个命令,将发出命令的责任和执行命令的责任进行分离,请求放发送者只要求执行发送操作,请求...

2019-04-25 21:34:12 100

原创 设计模式学习-职责链模式

职责链模式职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链传递请求。链上的每一个对象,都可以处理某种状态下的相同业务,客户端不用关心具体的处理内容,只要把被处理对象传递给链的第一个对象即可。定义避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求。将接受请求的对象连接成一个链,并且沿着这条链船队请求,直到有一个对象能够处理它为止。结构...

2019-04-16 22:09:17 93

原创 设计模式学习-动态代理

代理模式定义给某一个对象提供一个代理,并由代理对象来控制对原对象的访问。结构Subject抽象主题角色。声明了真实主题和代理主题的共同接口,这样可以将代理主题取代真实主题,达到取代和控制的目的。Proxy代理主题角色。包含了对真实主题的引用,同时控制这着对真实主题的访问,具有附加操作、控制访问的功能。RealSubject真实主题。实现了抽象主题角色的接口,具有真正的业务功能。...

2019-04-14 18:52:56 128

原创 设计模式学习-享元模式

享元模式享元模式通过共享技术实现了对相同或者相似对象的重用,它通过提供一个享元池,为客户端的每次调用提供一个享元对象使用,在逻辑上的每一次调用都会有一个对象与之对应,然而在物理上它们却享有同一个地址值。享元对象能够做到共享的关键是区分了内部状态和外部状态。内部状态:存储在享元对象内部并且不会随着环境改变而改变的状态,内部状态始终可以共享。外部状态:随着环境改变而改变,不可以共享的状态。外部...

2019-04-14 11:27:45 138

原创 设计模式学习-外观模式

外观模式外观模式是一种比较常见的设计模式,它通过引入外观类来对子系统的业务方法进行整合,减少了子系统与客户端的代码耦合。在完成一个完整业务功能需要多个业务类协调的情况下,如果没有外观类,那么每个调用这个功能的地方都要关联相关的业务类,关系过于复杂,并且不利于修改业务功能。引入了外观类之后,调用完整业务功能只需要与外观类打交道,降低了耦合度。定义为子系统中的一组接口提供一个统一的入口。外观模...

2019-04-10 22:23:28 95

原创 设计模式学习-装饰模式

装饰模式概述装饰模式是一种用来代替继承的技术,通过无需定义子类的方式给对象动态的添加职责,使对象之间的关联关系取代类之间的继承关系。装饰模式降低了代码中的耦合度,我们可以动态的增加或删除对象的职责,使得本质功能和装饰功能都可以独立变化,符合开闭原则。构成Component抽象构件。它是具体构件和装饰构件的共同父类,声明了客户端中使用及子类需要实现的方法。ConcreteComponen...

2019-04-07 15:18:05 164

原创 设计模式学习-组合模式

组合模式系统中通常有很多比较复杂的数据结构,如常见的目录、导航、菜单等结构,如果为每一个目录和标签写单独的方法,那么会非常麻烦,假设我们要删除一个文件夹,如果要人工的打开文件夹,判断里面的每个内容是文件夹或者文件,如果文件夹继续打开判断,如果是文件就删除。。。而实际中,我们只要右键-删除-确定就可以了,这个就是由组合模式来实现的。组合模式通过树形结构,将复杂的对象表示成容器和叶子,它模糊了简单...

2019-03-31 12:28:53 125

原创 简单理解OAuth2.0协议

OAuth2.0协议OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。举个例子,用户在A网站存放了个人信息,当访问B网站的时候,B网站需要用户的某些信息,那么就可以从A网站进行获取。B访问A网站的时候不可能通过用户的账号密码进行访问,因为这样就相当于把用户的所有信息都暴露给了B网...

2019-03-31 10:48:06 203

原创 设计模式学习-桥接模式

桥接模式桥接模式是一种比较常见的结构型设计模式,如果系统中的某个类存在两个独立变化的维度,通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展。桥接模式是一个非常实用的设计模式,它体现了很多面向对象设计原则的思想,单一职责原则、接口隔离原则、合成复用原则、开闭原则、依赖倒转原则、里氏替换原则等。定义桥接模式将抽象部分与它的实现部分解耦,使两者都能够独立变化。它用抽象关联取代了传统的多层...

2019-03-31 10:30:30 217

原创 java泛型的整理与使用

泛型泛型概述从Java 5开始,泛型出现在了Java中。在泛型出现之前,我们可能并不能完全的知道一些方法接收什么类型的参数、以及每个集合存储什么样的类型等等,那么就会经常在运行的时候,出现ClassCastException。有了泛型之后,编译器就得到了每个泛型对象会接收哪些类型的信息,当在编译的时候,自动为我们的插入进行转换,如果插入了错误的类型,那么就会报错,相当于将错误从运行提前到了编译...

2019-03-26 20:49:52 175

原创 设计模式学习-适配器模式

适配器模式属于结构型模式的一种,其作用在于将两个接口不同的类进行适配,使目标类可以完整地调用被适配类的期望方法,属于设计模式种比较简单的一种。适配器模式:结构型模式关注如何将现有类或对象组织在一起形成更加强大的结构。其分类为类结构型模式和对象结构型模式,构成为Target(目标抽象类)、Adapter(适配器类)、Adaptee(适配者类),具体类图和典型代码如下:类结构型模式p...

2019-03-18 22:30:30 128

原创 WebService概括与实战

最近项目工作内容需要与其他公司进行对接,对方公司采用了WebService,对这方面不太熟悉,因此快速学习了下,笔记及实战内容如下。简介 WebService是一种跨编程语言和操作系统的远程调用技术,它是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。SOA 面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布...

2019-03-10 14:34:52 147

原创 UML类图

UML(Unified Modeling Language),统一建模语言,是当前面向对象软件系统建模的标准语言,它融合了众多软件建模技术的优点,通过一系列标准的图形符号来描述系统。UML是一个通用的可视化建模语言,不同于编程语言,它通过一些标准的图形符号和文字对系统进行建模,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应...

2019-03-07 22:01:48 156

原创 设计模式学习-创建型模式总结

前面几天的学习中,学习了常见设计模式中的创建型模式,分为简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式、单例模式等。它们具有的共同优点是:创建型模式对于类的实例化过程进行了抽象,将对象的生成过程和对象的实现过程进行了分离,保证了的单一职责原则,调用方调用的时候,只需要知道获得对象的接口,并不要了解复杂的生成过程;同时由于只暴露了对外的接口,内部的实现细节修改起来也比较方便,符合开闭...

2019-03-02 13:30:39 368

原创 设计模式学习-建造者模式

建造者模式:对象创建型模式,将一个复杂对象的构建与它的表示分离,使同样的构建过程可以有不同的表示。每个具体的建造者之间相互独立,添加和删除建造者不会对其他产生影响。建造者模式的结构分为:抽象建造者、具体建造者、产品、指挥者。使用建造者模式,调用复杂对象的时候不用关心它的生成过程。具体代码内容如下:package builder;public class Product { pri...

2019-02-24 21:58:04 119

空空如也

空空如也

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

TA关注的人

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