Java手札
总结分享Java中的点点滴滴,中高级知识点,完善形成系统化的知识体系
小小工匠
show me the code ,change the world
展开
-
Java-Java5.0注解解读
概述元注解Meta-annotationTargetRetentionDocumentedInherited自定义注解定义注解格式注解参数的可支持数据类型实例编写注解类使用注解访问注解概述Java5.0注解可以看做Javadoc和Xdoclet标签的延伸和发展,在Java5.0中可以自定义这些标签,并通过Java语言的反射机制获取类中标注的注解,完成特定的功能。 注解是代码的原创 2017-08-22 11:27:51 · 15221 阅读 · 0 评论 -
Java-Java5.0泛型解读
概述泛型类泛型方法边界符通配符PECS原则类型擦除概述Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型类我们先看一个简单的类的定义package com.xgj.master.java.generics;public c原创 2017-09-01 03:25:51 · 13704 阅读 · 0 评论 -
Java-Java I/O流解读之基于字节的I / O和字节流
概述File and DirectoryClass javaioFile Pre-JDK 7Verifying Properties of a FileDirectoryList DirectoryList Directory with FilterClass javaniofilePath JDK 7Stream IO in Standard IO javaio Package 标准翻译 2017-09-06 11:23:24 · 6199 阅读 · 0 评论 -
Java-Java I/O流解读之基于字符的I / O和字符流
概述Java内部将字符(字符类型)存储在16位UCS-2字符集中。 但外部数据源/接收器可以将字符存储在其他字符集(例如US-ASCII,ISO-8859-x,UTF-8,UTF-16等等)中,固定长度为8位或16位, 位或以1到4字节的可变长度。 [读取“字符集和编码方案”]。因此,Java必须区分用于处理8位原始字节的基于字节的I / O和用于处理文本的基于字符的I / O。字符流需要在外部I翻译 2017-09-07 14:20:15 · 5995 阅读 · 0 评论 -
Java-Java I/O流解读之java.io.PrintStream & java.io.PrintWriter
概述示例代码概述JavaI/O流分为两类,字节流和字符流。 字节流是指InputStream/OutputStream及其子类, 字符流是指Reader/Writer及其子类。这两类I/O流的class hierarchy基本上是对等的,InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之间的翻译 2017-09-08 02:34:04 · 6178 阅读 · 0 评论 -
Java-Java I/O流解读之Object Serialization and Object Streams
概述方法概述哪些类型的对象有资格进行序列化ObjectInputStream ObjectOutputStreamjavaioSerializable Externalizable InterfacesjavaioExternalizable Interface代码概述数据流(DataInputStream和DataOutputStream)允许我们读取和写入原始数据(如int,do翻译 2017-09-08 05:02:57 · 5962 阅读 · 0 评论 -
Java-Java I/O 字节流之BufferedReader/BufferedWriter
概述Reader InputStreamReader FileReader and BufferedReaderWriter OutputStreamWriter FileWriter and BufferedWriterCharacter Encoding and Charset概述本篇博文主要介绍 如何使用java.io包中提供的类读取和写入文本(或字符)文件Reader, InputSt原创 2017-09-09 08:52:18 · 15961 阅读 · 0 评论 -
Java-Java反射
Java反射概述Java语言允许通过程序化的方式间接对Class进行操作。Class文件由类装载器装载后,在JVM中形成一份描述Class结构的元信息对象,通过该元对象可以获知Class的结构信息,如构造函数、属性和方法等。Java允许用户借由这个与Class相关的元信息对象间接调用Class对象的功能, 这就为使用程序化方式操作Class对象开辟了途径。 使用反射不同于常规的Java编程,其中它与原创 2017-07-03 12:41:31 · 12883 阅读 · 0 评论 -
Java-查看JVM从哪个JAR包中加载指定类
背景有的时候,我们经常会碰到java.lang.NoSuchMethodError的错误信息。 究其根源,是由于JVM的 全盘负责委托机制导致的。 关于 全盘负责委托机制 ,请查看另一篇博文 全盘负责委托机制特别是对于一些web项目,jar包很多,如何精确的查找呢?方式一将下面的JSP文件,放到web容器的根路径下,启动web容器,通过 http://ip:port/projectname/原创 2017-07-06 12:05:21 · 20128 阅读 · 0 评论 -
Java-利用Spring提供的Resource/ResourceLoader接口操作资源文件
背景JDK提供的访问资源的类(如java.net.URL、File等)并不能很好地满足各种底层资源的访问需求,比如缺少从类路径或者Web容器上下文中获取资源的操作类。Spring提供了Resource接口,为应用提供了更强的底层资源访问能力,该接口拥有对应不同资源类型的实现类。 资源访问接口主要方法boolean exists() 资源是否存在boolean isOpen() 资源是否打开UR原创 2017-07-08 05:50:38 · 18931 阅读 · 0 评论 -
Log4j2-Log4j 2介绍及使用
Log4j 2 官网https://logging.apache.org/log4j/2.x/Log4j 2简介Log4j的1.x版本已经被广泛使用于很多应用程序中。然而,它这些年的发展已经放缓。它变得越来越难以维护,因为它需要严格遵循很老的Java版本,并在2015年8月寿终正寝。它的替代品,SLF4J和Logback对框架做了很多必要的改进。那么为什么还要费心去做Log4j 2呢?几个原因如下:原创 2017-07-15 11:08:39 · 38062 阅读 · 6 评论 -
Java-JDK动态代理
问题概述改造其他相关接口类问题另一篇博文中的问题性能监视横切逻辑代码概述Java1.3以后,JAVA提供了动态代理技术,允许开发者在运行期创建接口的代理实例。 JDK的动态代理主要涉及java.lang.reflect包中的两个类:Proxy和InvocationHandler.InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑并通过反射机制调用目标类的代码,动态的将原创 2017-08-13 10:48:10 · 14024 阅读 · 0 评论 -
Java-CGLib动态代理
导读问题CGLib动态代理和JDK动态代理的区别CGLib概述改造导读Spring-AOP基础知识Java-JDK动态代理Java-CGLib动态代理问题另一篇博文中的问题性能监视横切逻辑代码CGLib动态代理和JDK动态代理的区别我们知道使用JDK创建代理时只能为接口创建代理实例。我们从Proxy的newProxyInstance方法中可以看出 @CallerSensitive原创 2017-08-13 13:45:57 · 14170 阅读 · 5 评论 -
Java-并发入门
概述线程的生命周期线程优先级创建线程的两种方式通过实现Runnable接口创建一个线程通过扩展Thread类创建一个线程线程的主要操作Threadstop废弃原因Threadsuspendresume废弃原因线程间通信主要方法实例并发同步并发死锁概述多线程程序包含两个或多个可同时运行的部分,每个部分可以同时处理不同的任务,从而能更好地利用可用资源,特别是当计算机有多个CPU原创 2016-04-13 21:06:32 · 10770 阅读 · 0 评论 -
23种设计模式
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。原创 2015-12-06 23:03:36 · 10548 阅读 · 0 评论 -
观察者模式
概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。问题的提出在生活当中,经常会遇到多种数据关注一个对象数据变化的情况。举个例子:生活中有温度记录仪,当温度发生变化时,需要完成一下功能:记录温度日志,显示温度变化曲线,当温度越界是触发扬声器发出声音等等。。。伪代码大原创 2015-12-26 19:58:51 · 11697 阅读 · 1 评论 -
Java多线程:Semaphore
自从5.0开始,jdk在java.util.concurrent包里提供了Semaphore 的官方实现。 Java 5.0里新加了4个协调线程间进程的同步装置,它们分别是: Semaphore, CountDownLatch, CyclicBarrier和Exchanger. Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类。Semaphore当前在多线程环境下被扩放使用原创 2015-12-19 21:35:38 · 10806 阅读 · 0 评论 -
基础一:一切都是对象
概述OOP-面向对象编程(Object Oriented Programming),在Java中(几乎)一切都是对象。用引用操作对象在Java中一切都是被看作为对象,因此可以采用单一固定的语法。尽管一切都看做对象,但操作的标示符实际上仅仅是对象的一个“引用”(reference)。如果想操作一个字符串,则可以创建一个String 引用:String s ;但是这里创建的仅仅是引用,而不是对象。因此如原创 2016-05-07 22:25:29 · 10729 阅读 · 0 评论 -
基础二:操作符
使用Java操作符操作符接受一个或者多个参数,并生成一个新值。操作符用于操作数,生成一个新值。 另外有些操作符可能会改变操作数自身的值,这被称为“副作用”。这些能改变操作数的操作符最普遍的作用就是产生副作用。几乎所有的操作符都只能操作“基本类型”。 例外的操作符是 = == 和 != 。这些操作符能操作所有的对象。 除此之外,String类支持 + 和 +=.优先级当一个表达式中存在多个操作符时,原创 2016-05-09 00:04:20 · 12599 阅读 · 0 评论 -
基础三:控制执行流程
概述在Java中,涉及的关键字包括:if-else , while , do-while, for, return, break和switch.Java并不支持goto语句。true和false所有条件语句都利用条件表达式的真或假来决定执行的路径。Java不允许我们将一个数字作为布尔值使用,虽然在C和C++中是允许的。 比如if(a)中,那么首先必须用一个条件表达式将其转换成布尔值,例如if(a原创 2016-05-09 23:07:15 · 10985 阅读 · 0 评论