分类目录 : Java综合

浅谈Java中的四种引用

Java从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用Strong Reference、软引用SoftReference、弱引用WeakReference和虚引用PhantomReference。可能作为服务端开发人员,如果没有深入底层研究一些常用框架的源码,估计对上面的提及的四种引用可能基本没有什么概念。但是作为Andr [...]

javap查看class类文件结构

javap是JDK提供的一个命令行工具,使用javap可以对编译后的class文件进行反编译。这种反编译方式跟我们平常使用的如JD-GUI等一些Java反编译工具有所不同,开发中我们希望使用反编译工具是为了通过class文件获取Java源代码,而使用javap会为我们生成虚拟机字节码指令集。我们可以对照Java源代码和字节码,从而了解很多编译器内部的工作,并且可以根据JVM内存区域的划分,对局部变 [...]

Java代码实现加密算法实践

在平常开发中经常需要考虑到各种安全问题,所以常常会用到各种加密算法,包括对称加密算法和非对称加密算法,如MD5、SHA256、DES、3DES以及AES等。本文并不涉及到各种加密算法的详细介绍,仅仅是介绍如何使用Java语言实现加密的逻辑。 MD5和SHA算法都是单向的不可逆哈希加密算法,意味着使用明文加密后的密文是无法解密出明文的,当然了这并不表示密文就无法破解,仍然可以借助哈希碰撞的方式破解 [...]

Java远程方法调用RMI简单介绍

RMI介绍 RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的。经过多个JDK版本迭代,目前RMI的实现方式跟最开始底层实现还是有很大差别的。远程方法调用允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。 RMI使用JRM [...]

Java浅谈克隆clone

为什么需要克隆clone 若需修改一个对象,同时不想改变调用者的对象,就要制作该对象的一个本地副本。这里我们讨论的是对象,如果是基本数据类型,就很简单了,只需要重新定义一个变量名称然后赋值即可。如果是一个对象,可能有些人说了,我直接new一个新的对象就可以了,这确实是一种解决方式,可是有一些在开发中需要使用的对象经过若干逻辑其中的属性早已经不再是初始值了。如果new不行,直接重新声明一个新名称使 [...]

Java反射进阶

上一篇文章介绍了反射的部分基础知识点,本篇文章继续进一步探讨反射,主要涉及两方面:反射操作泛型以及反射操作注解。事实上反射操作注解跟上一篇类似,只是使用了field.getAnnotation()这种方式,所以本篇文章重点还在于对泛型的处理,在此之前我们先介绍一下java.lang.reflect.Type这个类。 Type的简单介绍 一般在使用反射的时候都是直接使用Class类,后来接触Gs [...]

Java反射基础

一般在开发中很少自己刻意去使用反射,但是在某些情况下反射却显得异常有用。在Java开发中反射几乎可以称之为万能公式,因为在某些时候它确实是万能的。一些常用的开发框架如Gson以及Web开发的SSH框架底层几乎无一例外采用反射机制,再如目前比较流行的使用注解的方式底层解析也是使用反射,所以反射几乎是学习Java进阶的不二之路。 反射简介 Java反射机制是在运行状态中,对于任意一个类,都能够知道 [...]

Java“失效”的private修饰符

Java语言开发中有四种权限修饰符:public、protected、default以及private,对于private修饰符最常见的一种解释就是它修饰的方法或者属性只对本类自身可见。但是当Java引入内部类以后,好像权限修饰符与它已经没有了明显的关联,不可否定内部类的引入是一个很实用的特性,可是有些程序员认为它却违背了Java语言比C或C++更加简单的设计理念,在某些意义上来说也确实如此。本篇 [...]

Google 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学习笔记一

RxJava GitHub主页:https://github.com/ReactiveX/RxJava RxJava是什么 RxJava是Netflix推出的一个基于JVM的Microsoft Reactive Extensions 扩展,提供Java, Scala, Clojure, 和 Groovy语言实现,Netflix也是美国很牛X的一个公司,《纸牌屋》就是该公司的自制剧之一,这是题外 [...]

Java泛型使用解析

简介 Java在1.5版本中初次加入了泛型。它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。在平常开发中遇到泛型最多的应该就是在集合部分了,在没有加入泛型之前,从集合中读取每一个对象都必须进行强制转换。有时候偶尔不小心加入 [...]

Java 注解Annotation使用解析

注解简介 Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息或者任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。 注解Annotation是Java5引入的新特性。它提供了一种安全的类似注释的机制,用来将任何的信息或 [...]

Java网络编程-初识Socket

Socket套接字计算机网络通信的基本技术之一。大多数基于网络的软件,如浏览器、即时通讯工具(QQ)或者P2P下载(迅雷)都是基于Socket实现的。本文介绍了Socket的一些基础知识点,对UDP协议没有过多的涉及,简要分析了Socket和HTTP,最后有一个类似于QQ多人聊天的小示例可以下载示例源代码查看。 Socket介绍 在了解Socket之前,首先要了解什么是客户端/服务 [...]
共 1 页 1