
程序员
文章平均质量分 92
迢迢向北
这个作者很懒,什么都没留下…
展开
-
设计模式之模板方法设计模式
什么是模版方法1.定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术,没有关联关系。 因此,在模板方法模式的类结构图中,只有继承关系。核心设计要点:AbstractClass: 抽象类,定义并实现一个模板方法...原创 2019-05-14 15:06:59 · 217 阅读 · 0 评论 -
设计模式之代理设计模式
1.什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问。2.为什么使用代理模式 中介隔离:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。开闭原则,增加功能代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展...原创 2019-05-20 11:51:47 · 229 阅读 · 0 评论 -
JDK动态代理实现原理及手写JDK动态代理
1.JDK动态代理原理分析在使用jdk动态代理的时候,必须要实现InvocationHandler接口,invoke方法Invoke 方法中该三个参数分别表示为:代理对象、被代理执行的方法、参数 使用jdk动态代理获取代理类对象(JDK自动生成代理类)$Proxy0.class 将生成代理类加载至内存,让该类变成可执行类 2.源码分析这里查看JDK1.8.0_191...原创 2019-05-20 15:49:54 · 386 阅读 · 0 评论 -
设计模式之责任链设计模式
什么是责任链模式 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责链。使编程更有灵活性。 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。其过程实际上是...原创 2019-05-10 15:13:41 · 299 阅读 · 0 评论 -
设计模式之装饰者设计模式
1.什么是装饰者模式在不改变原有对象的基础上附加功能,相比生成子类更灵活。2.装饰者模式应用场景动态的给一个对象添加或者撤销功能。3.装饰者模式优缺点优点:可以不改变原有对象的情况下动态扩展功能,可以使扩展的多个功能按想要的顺序执行,以实现不同效果。缺点:更多的类,使程序复杂4.装饰者模式类图5.装饰者模式定义(1)抽象组件:定义一个抽象接口,来规范准备附加...原创 2019-05-16 15:20:59 · 267 阅读 · 0 评论 -
设计模式之观察者模式
1.什么是观察者模式在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息1.1观察者模式应用场景Zookeeper事件通知节点、消息订阅通知、安卓开发事件注册、分布式配置中心1.2观察者模式原理类图抽象被观察者角色:也就是一个抽象主题,它...原创 2019-06-10 21:23:22 · 106 阅读 · 0 评论 -
Mybatis深入源码分析之SqlSessionFactoryBuilder
Mybatis是支持定制化SQL、存储过程和高级映射的持久层框架。主要完成两件事:封装JDBC的操作 利用反射完成Java类和SQL之间的转换mybatis的主要目的就是管理执行SQL是参数的输入和输出,编写SQL和结果集的映射是mybatis的主要优点1.Mybatis大体架构流程分析读取配置文件并返回Reader对象 使用SqlSessionFactoryBuilder获取S...原创 2019-06-05 17:29:47 · 1045 阅读 · 0 评论 -
Mybatis深入源码分析之MapperProxy
通过Mybatis深入源码分析之SqlSessionFactoryBuilder分析我们了解了SqlSessionFactoryBuilder内部源码实现以及每个类的作用,此博客将会对MapperProxy源码揭秘。 try { // 1.mybatis配置文件 String resources = "mybatis.xml"...原创 2019-06-12 16:24:21 · 366 阅读 · 0 评论 -
设计模式之单例设计模式
1.概述 单例模式可以说是最常使用的设计模式了,它的作用是确保某个类只有一个实例,自行实例化并向整个系统提供这个实例。在实际应用中,线程池、缓存、日志对象、对话框对象常被设计成单例,总之,选择单例模式就是为了避免不一致状态,实际上就是保证在JVM中只有一个实例。2.单例七种写法 分别是「饿汉」、「懒汉(非线程安全)」、「懒汉(线程安全)」、「双重校验锁」、「静态...原创 2019-06-10 16:20:17 · 272 阅读 · 0 评论 -
深入理解java枚举
枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。1.定义枚举及应用场景 例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的实例对象只能是春(SPRING)、夏(SUMMER)、秋...原创 2019-06-27 14:44:00 · 209 阅读 · 0 评论 -
Mybatis深入源码分析之一级缓存与二级缓存
1.一级缓存 Mybatis的一级缓存是SqlSession级别的缓存,在操作数据库的时候需要先创建SqlSession会话对象,在对象中有一个HashMap用于存储缓存数据,此HashMap是当前会话对象私有的,别的SqlSession会话对象无法访问。Mybatis中是默认开启一级缓存的,并且无法关闭。具体流程:1.第一次执行select完毕会将查到的数据写入SqlSe...原创 2019-06-27 14:33:06 · 202 阅读 · 0 评论 -
Mybatis源码常用的设计模式
Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;单例模式,例如ErrorContext和LogFactory;代...原创 2019-06-27 14:41:28 · 151 阅读 · 0 评论 -
Spring5.0+常用注释
1.Spring框架概念 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。理念:每个bean与bean之间的关系统一交给SpringIOC容器管理2.Spring体系结构1...原创 2019-07-24 12:01:56 · 247 阅读 · 0 评论 -
设计模式之策略模式
1.概述 设计模式的好处:使用设计模式可以重构整体架构代码、提交代码复用性、扩展性、减少代码冗余问题。2.设计模式六大原则 2.1开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级...原创 2019-05-08 15:31:48 · 164 阅读 · 0 评论 -
解析java.lang.UnsupportedOperationException异常
springData中Page是我们常用的分页,包括spring整合Elasticsearch分页同样采用Page,当你要对content内容进行排序时会发生java.lang.UnsupportedOperationException异常;代码如下:执行发生如下异常 :java.lang.UnsupportedOperationException: null ...原创 2019-04-16 10:02:51 · 1880 阅读 · 0 评论 -
jvm虚拟机-8 运行时数据区
运行时数据区由方法区、虚拟机栈、本地方法栈、堆、程序计数器。其中方法区、堆是由所有线程共享区域,虚拟机栈、本地方法栈、程序计数器为线程隔离的数据区域。1.程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条执行字节码指令,分支、循环、跳转、异...原创 2019-04-12 14:58:31 · 235 阅读 · 1 评论 -
Elasticsearch6.4.2(高效检索引擎) linux+windows安装说明
一、安装环境说明1.Jdk环境1.8(包含1.8)以上二、windows环境elasticsearch安装步骤1.从官方下载中心ElasticSearch Download下载ElasticSearch安装包选择合适的版本进行下载并解压,此版本为6.4.22.开启ElasticSearch 服务将下载的zip包进行解压,cd到该目录bin文件夹下输入e...原创 2018-10-29 15:26:11 · 1404 阅读 · 3 评论 -
CAS服务安装
项目工具说明: springboot+cas+shiro+pac4j下载地址: https://github.com/apereo/cas-overlay-template 1. 基础配置 1.1下载并编译下载zip包并解压,进入到包目录执行mvn clean package结束之后会出现 target 文件夹,里面有war包,把war包解压。 1.2本地配置tom...翻译 2018-10-29 15:40:28 · 253 阅读 · 0 评论 -
RabbitMQ安装
1. 安装erlang 1.1安装依赖文件yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget 1.2下载安装:安装erlang 语言环境:wget http://www.erlang.org/download/otp_src_20.0.tar.gz //下载er...原创 2018-10-29 16:57:55 · 96 阅读 · 0 评论 -
jvm虚拟机-2 class文件解析
1.对class文件解析1.1解析过程 新建类TestClass.java 通过javap -v 指令查看class文件结构如下图:查看常量池结构表对如下进行分析:如图第一步:invokespecial 对应常量池#1;第二步:在常量池中找到#1常量 #1 = Methodref #4.#22 // j...原创 2019-01-10 17:26:12 · 175 阅读 · 0 评论 -
jvm虚拟机-1 class文件解析
1.概述 不论什么Class文件都相对应唯一一个类或接口的定义信息,但不是全部的类或接口都得定义在文件里(它们也能够通过类载入器直接生成)。Class文件是一组以8位字节为基础单位的二进制流。各个数据项严格按顺序排列。Class文件格式采用一种类似于C语言结构体的伪结构来存储数据。这样的伪结构仅仅有两种数据类型:无符号数和表。2. 基本结构2.1 class文件组...原创 2019-01-03 17:01:40 · 438 阅读 · 4 评论 -
java设计模式
1 设计模式分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态 模式、访问者模式、中介...原创 2019-01-21 14:39:40 · 197 阅读 · 2 评论 -
java设计模式-单例模式
1.概述 保证一个类只有一个实例,并且提供一个访问该全局访问类.2.单例应用场景 1. Windows的Task Manager(任务管理器)就是很典型的单例模式(这个很熟悉吧),想想看,是不是呢,你能打开两个windows task manager吗? 不信你自己试试看哦~ 2. windows的Recycle Bin(回收站)也是典型的单例应用。在整个系...原创 2019-01-21 15:13:28 · 113 阅读 · 0 评论 -
java设计模式-工厂设计模式
1.概述 工厂模式分为简单工厂、工厂方法、抽象工厂模式 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。2.简单工厂模式 简单工厂模式相当于是一个工厂中有各种产品,创建在一个...原创 2019-02-28 16:59:45 · 434 阅读 · 0 评论 -
jvm虚拟机-3 class文件字段表集合分析
1.字段表集合 class文件顺序是:魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合,字段表集合。 紧接着接口索引集合的就是字段表的集合了. 字段表(field_info)用于描述接口或者类中声明的变量.字段包括类级变量以及实例级变量,但是不包括在方法内部声明的局部变量. 字段包括类级变量以及实例级变量。可以包括...原创 2019-03-12 15:45:07 · 199 阅读 · 0 评论 -
jvm虚拟机-4 class文件方法表集合
1.方法表集合 class文件顺序是:魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引和接口索引集合,字段表集合,本章节为方法表集合。 方法表的构造如同字段表一样,依次包括了访问标志(access_flags),名称索引(name_index),描述符索引(descriptor_index),属性表集合(attributes)几项. 方法表结构...原创 2019-03-18 14:34:06 · 167 阅读 · 0 评论 -
jvm虚拟机-5 class文件属性表集合
1.属性表集合 在前面魔数,次版本号,主板本号,常量池入口,常量池,访问标志,类索引,父类索引,接口索引集合,字段表集合,方法表集 合,那么接下来就是属性表集合了.在class文件,字段表,方法表都可以携带自己的属性表集合(像前面方法表的时候就用到"code"这个属性表)以用于描述某些场景专有的信息. 虚拟机中预定义的属性:属性名称 使用位置 含义 C...原创 2019-03-18 14:37:23 · 157 阅读 · 0 评论 -
Docker 搭建及部署微服务项目
1.概述 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设...原创 2019-08-15 09:36:34 · 1848 阅读 · 0 评论