Java注解进阶三 2020-12-20 店长 Java综合 收藏 评论 本文继续介绍编译时注解,不同于前面两篇偏向理论,本文通过仿写一个ButterKnife示例,辅助我们理解编译时注解是如何通过生成模板代码,达到简化代码,提升开发效率的目的。 除了编译时注解,还有一种注解方式-运行时注解,其实运行时注解也可以帮助我们简化代码提升开发效率,那么ButterKnife与其它框架相比优势在哪呢?我们希望通过注解的三篇进阶文章解决一下几个疑问。 我们经常谈论编译时注解, [...] 阅读更多 »
Java注解进阶二 2020-11-22 店长 Java综合 收藏 评论 本文继续介绍Java编译时注解的相关内容,仍然都是一些偏理论的梳理知识点。主要涉及到几个类,它们都是在处理自定义注解时会常到的,分别是RoundEnvironment、ProcessingEnvironment、Filer、ElementType、ElementKind、TypeKind、TypeMirror。 虽然说是编译时注解,不过在上面几个类的使用上面并不会涉及到编译时什么特殊格式要求,仍 [...] 阅读更多 »
Java注解进阶一 2020-11-15 店长 Java综合 收藏 评论 引言 在ServiceLoader一文中,可以了解到ServiceLoader解耦了服务的具体实现和使用,使得程序的扩展性大大增强,甚至可插拔。但是,在项目中如果每次使用SPI接口都需要手动在相对应的文件中注册一下,是不是有点违背程序员的宗旨,能代码实现的功能尽量不手动去实现。相信许多熟悉J2EE的开发人员,应该都在XML文件中配置过IOC或者AOP相关类,而目前的常规开发中一般使用注解代替了X [...] 阅读更多 »
浅谈ServiceLoader 2020-07-31 店长 Java综合 收藏 评论 本文主要介绍ServiceLoader类,首先介绍ServiceLoader的简单使用,以及它可以达到什么样的效果,然后介绍了ServiceLoader的实现原理,最后通过对ServiceLoader源码的理解,自定义实现一个简单的类似ServiceLoader的功能。 引言 ServiceLoader是JDK1.6基于SPI(Service Provider Interfaces)思想新引入 [...] 阅读更多 »
浅谈Java中的四种引用 2019-03-10 店长 Java综合 收藏 评论(1) Java从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用Strong Reference、软引用SoftReference、弱引用WeakReference和虚引用PhantomReference。可能作为服务端开发人员,如果没有深入底层研究一些常用框架的源码,估计对上面的提及的四种引用可能基本没有什么概念。但是作为Andr [...] 阅读更多 »
javap查看class类文件结构 2019-03-03 店长 Java综合 收藏 评论 javap是JDK提供的一个命令行工具,使用javap可以对编译后的class文件进行反编译。这种反编译方式跟我们平常使用的如JD-GUI等一些Java反编译工具有所不同,开发中我们希望使用反编译工具是为了通过class文件获取Java源代码,而使用javap会为我们生成虚拟机字节码指令集。我们可以对照Java源代码和字节码,从而了解很多编译器内部的工作,并且可以根据JVM内存区域的划分,对局部变 [...] 阅读更多 »
Java代码实现加密算法实践 2019-02-06 店长 Java综合 收藏 评论 在平常开发中经常需要考虑到各种安全问题,所以常常会用到各种加密算法,包括对称加密算法和非对称加密算法,如MD5、SHA256、DES、3DES以及AES等。本文并不涉及到各种加密算法的详细介绍,仅仅是介绍如何使用Java语言实现加密的逻辑。 MD5和SHA算法都是单向的不可逆哈希加密算法,意味着使用明文加密后的密文是无法解密出明文的,当然了这并不表示密文就无法破解,仍然可以借助哈希碰撞的方式破解 [...] 阅读更多 »
Java远程方法调用RMI简单介绍 2018-08-05 店长 Java综合 收藏 评论 RMI介绍 RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的。经过多个JDK版本迭代,目前RMI的实现方式跟最开始底层实现还是有很大差别的。远程方法调用允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。 RMI使用JRM [...] 阅读更多 »
Java浅谈克隆clone 2017-08-06 店长 Java综合 收藏 评论 为什么需要克隆clone 若需修改一个对象,同时不想改变调用者的对象,就要制作该对象的一个本地副本。这里我们讨论的是对象,如果是基本数据类型,就很简单了,只需要重新定义一个变量名称然后赋值即可。如果是一个对象,可能有些人说了,我直接new一个新的对象就可以了,这确实是一种解决方式,可是有一些在开发中需要使用的对象经过若干逻辑其中的属性早已经不再是初始值了。如果new不行,直接重新声明一个新名称使 [...] 阅读更多 »
Java反射进阶 2017-07-23 店长 Java综合 收藏 评论 上一篇文章介绍了反射的部分基础知识点,本篇文章继续进一步探讨反射,主要涉及两方面:反射操作泛型以及反射操作注解。事实上反射操作注解跟上一篇类似,只是使用了field.getAnnotation()这种方式,所以本篇文章重点还在于对泛型的处理,在此之前我们先介绍一下java.lang.reflect.Type这个类。 Type的简单介绍 一般在使用反射的时候都是直接使用Class类,后来接触Gs [...] 阅读更多 »
Java反射基础 2017-07-16 店长 Java综合 收藏 评论 一般在开发中很少自己刻意去使用反射,但是在某些情况下反射却显得异常有用。在Java开发中反射几乎可以称之为万能公式,因为在某些时候它确实是万能的。一些常用的开发框架如Gson以及Web开发的SSH框架底层几乎无一例外采用反射机制,再如目前比较流行的使用注解的方式底层解析也是使用反射,所以反射几乎是学习Java进阶的不二之路。 反射简介 Java反射机制是在运行状态中,对于任意一个类,都能够知道 [...] 阅读更多 »
Java“失效”的private修饰符 2017-05-31 店长 Java综合 收藏 评论 Java语言开发中有四种权限修饰符:public、protected、default以及private,对于private修饰符最常见的一种解释就是它修饰的方法或者属性只对本类自身可见。但是当Java引入内部类以后,好像权限修饰符与它已经没有了明显的关联,不可否定内部类的引入是一个很实用的特性,可是有些程序员认为它却违背了Java语言比C或C++更加简单的设计理念,在某些意义上来说也确实如此。本篇 [...] 阅读更多 »
Google Java编程规范指南 2016-07-18 店长 Java综合 收藏 评论 ■ Google代码编码规范下载:https://github.com/google/styleguide 1 前言 1.1 术语说明 1.2 指南说明 2 源文件基础 2.1 文件名 2.2 文件编码:UTF-8 2.3 特殊字符 3 源文件结构 3.1 许可证或版权信息 3.2 package语句 3.3 import语句 3.4 类声明 [...] 阅读更多 »
RxJava学习笔记一 2016-07-10 店长 Java综合 收藏 评论 RxJava GitHub主页:https://github.com/ReactiveX/RxJava RxJava是什么 RxJava是Netflix推出的一个基于JVM的Microsoft Reactive Extensions 扩展,提供Java, Scala, Clojure, 和 Groovy语言实现,Netflix也是美国很牛X的一个公司,《纸牌屋》就是该公司的自制剧之一,这是题外 [...] 阅读更多 »
Java泛型使用解析 2016-04-30 店长 Java综合 收藏 评论 简介 Java在1.5版本中初次加入了泛型。它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。在平常开发中遇到泛型最多的应该就是在集合部分了,在没有加入泛型之前,从集合中读取每一个对象都必须进行强制转换。有时候偶尔不小心加入 [...] 阅读更多 »