6 小猴子豆芽菜

尚未进行身份认证

路漫漫其修远兮,吾将上下而求素。

等级
TA的排名 3w+

powermock常用注解介绍及区别

@Mock和@InjectMocks区别@Mock创建一个假数据;@InjectMocks主动将已存在的mock对象注入到bean中,按名称注入,但注入失败不会抛出异常;※注意:你必须使用@RunWith(MockitoJUnitRunner.class)或Mockito.initMocks(this)来初始化这些mock并注入它们。Example@RunWith(Mockit...

2019-07-28 20:45:48

java 常量池及字节码文件的9大属性

常量池的基本结构java类所对应的常量池主要由常量池数量和常量池数组两部分组成,如下图所示,常量池数量紧跟在minorversion后面,占2个字节。常量池数组则紧跟在常量池数量之后。常量池数组是一个类似数组的结构。这个数组是固化在字节码文件中的,由多个元素组成。与一般的数组概念不同,常量池数组中不同元素的类型、结构都不相同,长度也不相同。但是每一种元素的第一个数据都是一个u1类型,该字节...

2019-05-26 03:01:50

java class字节码概述

class字节码概述每一个java类被编译后都会生成一个对应的.class字节码文件,要想研究JVM加载java类的原理,实现必须掌握java类被编译成的.class文件结构。下面从几个方面来描述字节码的组成格式。1.class文件构成基础在class字节码文家中,数据都是以二进制流的形式存储。这些字节流之间都严格按照规定的顺序排列,字节之间不存在任何空隙,对于超过8位的数据,将按照Bi...

2019-05-26 01:40:10

java中的native修饰符

今天偶然看代码,发现别人有这样写的方法,并且jar里面有几个dll文件,比较奇怪,于是把代码打开,发现如下写法。publicnativeStringGSMModemSMSReadAll(Strings,inti);publicnativeStringGSMModemGetErrorMsg(Strings);publicnativebooleanGSMModemIsC...

2019-05-15 20:53:16

java反射机制详解

程序运行过程在讲解反射机制之前先简单看一下java程序的运行过程,如下图所示:java编译期将.java文件编译为.class字节码文件;ClassLoader将.class的字节码文件加载到codesegment中;运行环境找到mian方法,并开始执行程序;程序运行过程会有很多.class文件被load到代码区,这些class文件并不是一次性被load完成的,而是在运行时被动态...

2019-05-15 20:25:44

代理模式之Cglib动态代理

Cglib动态代理前两篇博文静态代理和JDK动态代理,他们各有优缺点,JDK动态代理缺点:目标类必须实现的某个接口,如果某个类没有实现接口则不能生成代理对象;只能代理接口,要代理类需要使用第三方的CLIGB等类库;Cglib动态代理则没有对被代理对象必须实现接口的要求,cglib生成的代理类会继承被代理类,并在代理类中对代理方法进行强化处理(前置处理、后置处理等)。实例演示被代理...

2019-04-07 20:14:44

代理模式之JDK动态代理

JDK动态代理上一篇博文静态代理介绍了静态代理的简单实现,以及静态代理的缺点:代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。JDK动态代理的优点代理对象不需要实现接口,这样就不会有众多的代理类;利用JDK生成代理...

2019-04-07 18:00:59

代理模式之静态代理

代理模式代理模式为某个对象提供一个代理,以控制对这个对象的访问。代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”字结构。根据代理类的生...

2019-04-07 14:57:19

Spring AOP注解和切面表达式详解

AOP设计的初衷DRY:Don’tRepeatYourself,减少重复代码;SoC:SeparationofConcerns,关注分离;水平分离:展示层-->服务层-->持久层垂直分离:模块之间分离;切面分离:功能性需求与非功能性需求分离;使用AOP的好处集中处理某一关注点/横切逻辑可以很方便的添加/删除关注点侵入性少,增强代码可读性以...

2019-04-05 23:34:28

Spring Security权限控制源码分析

流程图类和接口介绍FilterSecurityInterceptor:是整个权限判断流程的入口,包含着请求的相关信息;AccessDecisionManager:是一个接口,有一个抽象实现(AbstractAccessDecisionManager)和三个具体实现(AffirmativeBased、ConsensusBased和UnanimousBased)AbstractAcces...

2019-03-30 22:47:53

Spring Security OAuth核心源码分析

流程图※:绿色的方块代表实体类;蓝色的方块代表接口(下方括号中的名称表示实际调用的实现类);流程介绍step1:客户端发起获取令牌的请求:/oauth/token;step2:TokenEndpoint是整个流程的入口,可理解为一个controller,用来处理获取令牌的请求即:/oauth/token请求;step3:ClientDetailService用来读取请求中client...

2019-03-30 17:52:15

Effective Java第三章: 对所有对象都通用的方法

一、覆盖equals方法时遵守通用约定期望结果类的每个实例本质上都是惟一的;不关心类是否提供了“逻辑相等”的测试功能;超类已经覆盖了equals方法,从超类继承过来的行为对于子类也是合适的;类是私有的或者是包级私有的,可以确定它的equals方法永远不会被调用;覆盖equals方法时的通用约定自反性:对于任何非null的引用值x,x.equals(x)必须返回true;对称性...

2019-01-27 16:52:11

Effective Java 第2章: 创建和销毁对象

一、用静态工厂方法代替构造器静态工厂方法与构造器相比有以下几个优点:静态工厂方法有名称;不必每次调用的时候都创建新的对象;可以返回原返回类型的任何子类型的对象;在创建参数化类型实例的时候没,静态工厂方法使得代码变得更加简洁;缺点:类如果不含有公有的或者受保护的构造器,就不能被子类化;静态工厂方法与其他的静态方法实际上并没有任何区别;静态工厂方法常用的名称:valueO...

2019-01-20 19:01:49

Hadoop介绍

Hadoop概念ApacheHadoop是一款支持数据密集型分布式应用并以Apache2.0许可协议发布的开源软件框架。Hadoop是一套开源的软件平台,利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理。Hadoop框架透明地为应用提供可靠性和数据移动,还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系...

2019-01-12 19:00:39

Kubernets特性及概念介绍

Kubernets概述Kubernets是什么Kubernets是Google在2014年开源的一个容器集群管理系统,简称k8s;k8s用于容器化应用程序的部署,扩展和管理;k8s提供了容器编排、资源调度、弹性伸缩、部署管理和服务发现等一系列功能;k8s目标是让部署容器化应用简单高效;可以将k8s理解为一个容器平台、一个微服务平台、一个便携式平台;Kubernets特性自...

2019-01-05 23:27:46

@JsonProperty和@SerializedName对比

问题在日常开发中经常需要将一个json格式的字符串转换成某个java对象,当json字符串中的字段跟java对象中定义的属性名不一致时,就会出现转换错误。将一个java对象转换成json格式的字符串,并且要求转换后的字符串中字段名跟原java对象中的属性名不一致。例子:1.将json字符串转换成Java对象;2.将java对象转换成指定的json字符串json格式的字符串St...

2018-12-30 18:31:50

HttpStatus状态码详解

1xx消息这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。[4]这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。100Continue服务器已经接收到请求头,并且客户端应继续发送请求...

2018-12-28 20:50:23

RabbitMQ学习笔记

RabbitMQ介绍     RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现;AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求较高的场景,对性能和吞吐量的要求还在其次。RabbitMQ高性能的原

2018-12-19 23:24:18

RabbitMQ:死信队列DLX介绍及演示

DLX:DeadLetterExchange     利用DLX,当消息在一个队列中变成死信(deadmessage:消息在该队列中没有消费者去消费)之后,它就会被重新publish到另一个Exchange中,这个Exchange就是DLX;死信队列和普通队列并没有区别,只是相关属性进行了设置;消息变成死信的几种情况消息被拒...

2018-12-17 22:23:15

RabbitMQ:消费端限流

什么是消费端限流     当我们的RabbitMQ服务器上有大量未处理的消息时,消费端的客户端可能无法同时处理大量的消息,这时候就要对消费端进行限流,同时只接受一定数量的消息。如何限流     RabbitMQ提供了一种qos(服

2018-12-17 21:06:54

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。