自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

OceanSky的专栏

好记性不如烂笔头,内存虽快,但不持久

  • 博客(26)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java反射调用私有域和方法(AccessibleObject可访问性控制)

1.AccessibleObjectMethod、Field和Constructor类都继承了AccessibleObject类,它提供了标记反射对象的能力,以抑制在使用时使用默认Java语言访问控制检查,从而能够任意调用被私有化保护的方法、域和构造函数;/** *AccessibleObject是Method、Field、Constructor类的基类,它提供了将反射的对象标记为在...

2018-07-28 14:39:41 4949

原创 Git忽略已经track过的本地文件并删除线上已经提交的文件

git忽略并删除已经提交到git上的文件删除本地仓库中的文件git rm -r --cached 文件名将删除的文件添加到本地暂存区git add .将本地变更信息提交到本地仓库git commit -am '变更信息'推送到远程仓库git push orgin 分支名git rm的帮助文档$ git rm -husage: git...

2018-07-28 08:43:56 1843

原创 Java源码解析Type和TypeVariable接口

Type接口没有任何方法,只有一个接口声明//Type接口是java编程语言中所有类型的公共高级接口,它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。public interface Type所有已知的实现类有GenericArrayType, ParameterizedType, TypeVariable, WildcardType;TypeVariable 是各...

2018-07-28 07:37:39 5502

原创 Java源码GenericDeclaration详解

反射包中有一个java.lang.reflect.GenericDeclaration接口,所有已知的实现类有Class、Constructor、Method://声明类型变量的所有实体的公共接口public interface GenericDeclaration该接口中只有一个方法getTypeParameters:/***返回声明顺序的TypeVariable对象的数...

2018-07-27 22:38:12 1178

原创 Java比较两个对象的Class实例对象是否相等

通常我们会比较基本类型、引用类型、数组等是否相等,很少会 比较对象的Class实例对象是否相等,那么class实例对象如何比较相等呢?可以使用“==”比较是否相等obj.getClass() == ClassEqualTest.class可以使用equals比较是否相等obj.getClass().equals(ClassEqualTest.class)同一个cl...

2018-07-27 21:33:50 38755

原创 Java反射Reflect中java.lang.Class类源码阅读讲解

Class类的实例对象代表的是正在运行的类或者接口的class对象;enum枚举是一种类class,注解是一种接口;每个数组也属于一个类class对象,该对象是通过反射Reflect生成的对象,该对象由具有相同元素类型和维数的所有数组共享;原生的Java类型boolean、byte、char、short、int、long、float、double和关键字void也可以表示为Class实例对象。...

2018-07-21 18:05:37 1535

原创 Java反射Reflect Modifier修饰符工具类

在查看Java中的Class、Field、Constructor等类的时候,都可以看到这样一个方法getModifiers,返回类、接口、变量、方法等以整数编码的Java语言修饰符;如果要了解这些编码代表什么意思就要使用java.lang.reflect.Modifier类的静态方法和常量对这些编码进行解析。 People people = new Student(); ...

2018-07-21 07:06:52 1706 1

原创 Java中for循环每次都通过list.size、str.length、length()获取数组或者字符串的长度是否消耗资源

最近看到有同事在使用for循环的时候首先会将数组或者字符串的长度赋值给一个变量;在网上查了一下说是这样可以节约资源的消耗,真实的情况又是如何?让我们看下他们的源码来分析。1.将数组的长度赋值给变量len List<Integer> list = new ArrayList<Integer>();

2018-07-21 06:14:37 8874 10

原创 Java动态代理的作用及好处

Java动态代理的优势是实现无侵入式的代码扩展;也就是方法的增强,让你可以在不用修改源码的情况下,增强一些方法;在方法的前后你可以做你任何想做的事情(甚至不去执行这个方法就可以)。1.动态代理是设计模式中的代理模式:定义:为其它对象提供一种代理以控制对这个对象的访问控制;在某些情况下,客户不想或者不能直接引用另一个对象,这时候代理对象可以在客户端和目标对象之间起到中介的作用。2.静态代...

2018-07-15 17:49:02 21489 5

原创 guava中com.google.common.reflect.Reflection类创建代理对象

Java动态代理的使用方法及示例我已经在前几篇文章中详细讲解过了,接下来讲解com.google.common.reflect.Reflection工具类创建代理类的使用方法,其中会用到接口、接口实现类、代理类的调用处理程序,这些类都可以在:Java中InvocationHandler接口中第一个参数proxy详解中找到,我就不再重复了。Reflection类中有多个方法newProxy、ge...

2018-07-14 11:27:47 1792

原创 Java动态代理类抛出java.lang.ClassCastException异常

Java中自带的动态代理InvocationHandler接口、Proxy类只能针对接口进行动态代理,如果要对类进行代理可以使用第三方的类库像CGLIG等相关对字节码操作实现的类库;下面我们可以看一下使用Java动态代理代理类会发生什么异常:创建一个接口类ProxyPeoplepackage com.test.Application;public class ProxyPe...

2018-07-14 10:46:04 8298 4

原创 Java动态代理中报java.lang.IllegalArgumentException非法参数异常

今天在学习动态代理,在调试的过程中出现了非法参数异常的问题,先看下异常:Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(...

2018-07-14 10:18:52 8021

原创 Java中InvocationHandler接口中第一个参数proxy详解

这两天在学习Java动态代理,上一篇文章我们详细的讲解了创建代理类的调用处理程序(实现InvocationHandler接口的类),获得代理对象的Proxy类,但是就发现InvocationHandler中的invoke方法中的第一个参数proxy好像从来没有用过,所以就开始在网上查询proxy的用途,最后在国外的网站上找到了不错的讲解stackoverflow.com,下面就根据自己的学习心得,...

2018-07-14 10:04:08 29447 19

原创 Play框架文件上传Upload、FileUpload类使用详解

最近做一个前后台分离的项目,要用到前端页面传递文件对象给后端,就研究了一下框架中自带的类Upload接口、FileUpload类。1. 后端的控制器能够接收到play.mvc.Http.Request对象,这个对象中有一个args参数,args参数内还内嵌一个__UPLOADS属性,我们可以通过这样的关系获取文件对象 private static Map<String, F...

2018-07-13 23:22:11 1723

原创 Java动态代理InvocationHandler和Proxy学习笔记

1.InvocationHandler接口是proxy代理实例的调用处理程序实现的一个接口,每一个proxy代理实例都有一个关联的调用处理程序;在代理实例调用方法时,方法调用被编码分派到调用处理程序的invoke方法。看下官方文档对InvocationHandler接口的描述: {@code InvocationHandler} is the interface implement...

2018-07-13 23:21:36 130110 36

原创 guava中Multiset、HashMultiset使用分析

guava包中提供了Multiset接口,这个接口没有实现java.util.Set接口,Set接口规定里面是不能够放入重复的元素,如果放入重复元素会被覆盖掉的;然而Multiset接口却是可以放入重复元素的,Set接口中的元素是[1,2,3],Multiset中确可以[1✖️2,2✖️3,3✖️3]来表示多个相同的元素。创建Multiset对象Multiset<Intege...

2018-07-08 00:10:25 2698 1

原创 guava中Multimap、HashMultimap使用详解

在介绍Multimap之前我们先说一下Map,Map是一个key、value类型的键值对集合,集合中key不可以重复,但value可以重复,如果我们想在Map集合中存入一个相同的key,不同的value值得时候就必须使用Map<Integer,List<Object>>Map<In

2018-07-07 23:33:39 23817 1

原创 mac版eclipse快捷键总结

mac版的eclipse中的快捷键跟windows中的不太一样,平时都是用公司的电脑写代码很少用家里的电脑,今天遇到了就随手记录下来,方便以后忘记了查阅,好记性,不如烂笔头。command+shift+o重新引入包(去除掉类中无用的包),光标一定要选中项目才会起作用。command+← 将光标移动到行首command+→ 将光标移动到行位command+d 删除光标所在的行comma...

2018-07-07 22:17:30 1019

原创 guava中Table、HashBasedTable、TreeBasedTable详解

Table 当我们需要多个索引的数据结构时,大多数时候我们会选择Map<String,Map<String,Object>>Map<String,Map<String,Object>>Map这种Map套M

2018-07-07 10:58:52 18368 1

原创 guava中ImmutableTable使用详解

ImmutableTable是一个不可变的、线程安全的、两个元素作为key且key不可以重复的二维矩阵类型集合,它跟其它的元素一样会复制加入元素的一个副本而不会改变原来的对象; 示例代码如下: ImmutableTable<Integer, Integer, Integer> table = ImmutableTable.<Integer, Integ

2018-07-07 10:58:32 3378

原创 git remote prune origin删除本地分支存但是远程分支已经不存在的分支(必须之前存在追踪关系)

删除本地分支:git branch -D br删除远程分支git push origin :br删除本地分支存在但是远程分支已经不存在的分支 在公司团队比较大的时候一个项目会见很多的分支,时间短还好,但是时间久了本地就会发现有很多的远程分支都是别人的,看着很不爽;实际上是有很多在远程分支已经不存在了,只是在本地有缓存信息,线上线下不同步的原因。 同步远程和本地的命令如...

2018-07-05 22:49:01 5285

原创 guava中ImmutableList使用示例详解

ImmutableList是一个不可变、线程安全的列表集合,它只会获取传入对象的一个副本,而不会影响到原来的变量或者对象; 验证上面的说法代码: int a = 23; ImmutableList<Integer> list = ImmutableList.of(a, 12); System.out.println(list);...

2018-07-03 22:47:54 24823 4

原创 guava中ImmutableSet不可变不可重复对象示例详解

ImmutableSet是一个不可变的集合、线程安全、元素不可重复,它只会获取传入对象的一个副本,而不会改变原来的对象,示例代码如下: Integer a = 3; ImmutableSet<Integer> set5 = ImmutableSet .<Integer>of(a, 2); System.out.print...

2018-07-03 22:47:37 5370

原创 guava中ImmutableMap使用示例及好处

ImmutableMap是不可变的,线程安全的;它可以创建一些常量的映射键值对;他提供了很多的组合键值对的方法,源码中使用了一个静态内部类final类型的来组装Map。之前我们判断取值结果可以使用if else形式: int a = 1; if(a == 1) { System.out.println(a); } els...

2018-07-03 22:47:10 9627

原创 Class的isAssignableFrom方法详解

类的Class实例中有一个isAssignableFrom方法,这个方法是用来判断两个类的之间的关联关系,源码如下: /** * Determines if the class or interface represented by this * {@code Class} object is either the same as, or is a superclass...

2018-07-01 18:10:42 13576 1

原创 org.apache.commons.lang3.Validate数据校验工具类

Java后端开发的过程中我们经常会遇到判断数据范围、判断返回的结果是否为true、某一个对象是否是指定的实例对象等等;遇到这样的情况我们不得不写很多的代码来实现;common-lang包中有现成的工具类Validate,没必要重复的造轮子,看下下面的示例程序:判断结果是否为true,否则将抛出IllegalArgumentException异常 try { ...

2018-07-01 17:57:23 6029 2

eclipse-class-decompiler-update_v2.10.0.zip

该反编译工具支持spring tool suite 在mac上反编译class文件,

2017-09-30

struts2.3.4

标准的struts2.3.4APIchm文档,该文档是中文版

2013-06-21

JDK_API_1.6英文版

全面的java开发必备的英文版API文档

2013-03-07

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

TA关注的人

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