随笔分类 - java
关于java语言的博客
摘要:简介 EXIF(Exchangeable Image File format)是“可交换图像文件”的缩写,当中包含了专门为数码相机的照片而定制的元数据,可以记录数码照片的拍摄参数、缩略图及其他属性信息。 EXIF 所记录的元数据信息非常丰富,主要包含了以下几种信息: 拍摄日期 拍摄器材(机身、镜头、
阅读全文
摘要:简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,J
阅读全文
摘要:简介 平时我们都是使用WinZip,2345好压等软件来操作zip文件,java也提供了ZipOutputStream,ZipEntry等API创建和解析zip文件。 压缩 import java.io.BufferedInputStream; import java.io.File; import
阅读全文
摘要:简介 java关于压缩和解压缩的核心类就是Defalter(压缩)类和Inflater(解压)类,操作GZip和Zip文件也是基于这两个类。Tomcat对响应数据的压缩就是基于GZip。 使用Deflater和Inflater解压缩 import java.io.BufferedInputStrea
阅读全文
摘要:简介 在项目中使用到Excel是很常见的,如批量导入数据,批量导出数据。这里我们使用Apache的开源项目POI来操作Excel。官网 添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifac
阅读全文
摘要:简介 IDEA是我们常用的开发工具,我们也会用到很多IDEA提供的插件,如lombok插件,checkstyle插件等,今天我们就来开发一个自己的插件。 环境准备 IDEA安装PluginDevkit插件,这是一个帮助我们开发插件的插件。 创建插件项目 创建成功之后的项目结构为 plugin.xml
阅读全文
摘要:简介 Class.getResourceAsStream()和ClassLoader.getResourceAsStream()方法都是从项目中读取文件,但很容易被搞混。 ClassLoader public class Client2 { public static void main(Strin
阅读全文
摘要:简介 在我们使用手机通讯录或各种APP的搜索功能时,既可以根据中文搜索,也可以根据拼音搜索,这种时候就使用到了中文转拼音的功能了。 实现 pinyin4j 引入maven依赖 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyi
阅读全文
摘要:简介 不了解JMX的可以看上一篇文章JMX简单入门,MBean表示被管理的资源,MXBean其实也是被管理的资源,但MBean的属性中不能包含自定义对象,而MXBean可以。 MBean 定义MBean接口,必须以MBean结尾 public interface HelloMBean { Strin
阅读全文
摘要:定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。简答来说就是我们可以通过JMX来监控或管理我们运行中的程序。 架构 可以看到主要有3层 基础层 主
阅读全文
摘要:简介 JMH(Java Microbenchmark Harness)是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。该工具是由 Oracle 内部实现 JIT 的大牛们编写的,他们应该比任何人都了解 JIT 以及 JVM 对于基准测试的影响。 添加maven依赖
阅读全文
摘要:介绍 我们都知道HashMap添加完数据,取出来的顺序是混乱的,而LinkedHashMap可以保证查询的顺序和插入顺序保持一致。 public class Client3 { public static void main(String[] args) { Map<String, String>
阅读全文
摘要:介绍 协变和逆变描述的是类型转换后的继承关系。 定义A,B两个类型,A是B的子类,f(A) 表示类型转换后的类型,如List 协变 A ⇐ B,f(A) ⇐ f(B) 成立 逆变 A ⇐ B,f(A) >= f(B) 成立 不变 A ⇐ B,都不成立 数组的协变和逆变 public class Cl
阅读全文
摘要:泛型擦除 java的泛型是一种伪泛型,编译器会去除泛型信息,字节码不会包含泛型信息。 public class Client { public static void main(String[] args) { List<String> nameList = new ArrayList<>(); L
阅读全文
摘要:介绍 java中的引用有4种类型:强引用(Strong Reference),软引用(Soft Reference),弱引用(Weak Reference),虚引用(Phantom Reference),强度依次减弱。 前置准备 配置JVM参数,-Xms10M -Xmx20M,初始内存10M,最大内
阅读全文
摘要:介绍 Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。无依赖,不需要例外额外的jar,能够直接跑在JDK上。 FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。 FastJson采用独创的算
阅读全文
摘要:介绍 发送邮件是一个很常见的需求,如用户注册,用户密码修改,密码找回等。今天我们看一下使用JavaSE和Spring实现发送邮件的功能。 邮件协议 SMTP协议是基于TCP/IP的一个应用层协议,类似于HTTP,全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议
阅读全文
摘要:介绍 验证码的目的是为了防范恶意攻击,如在发送手机短信之前校验验证码,可以防止短信接口被恶意调用导致的金钱损失。验证码有图片验证码,更智能的拖动验证码,点选验证码,今天我们看一下图片验证码的实现。 实现 添加maven依赖 <dependency> <groupId>com.github.pengg
阅读全文
摘要:介绍 JSR-303 是JAVA EE6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现,提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
阅读全文
摘要:二维码现在已经在我们的生活中大量使用,如手机支付,扫一扫登录,扫一扫加好友等。 生成二维码 添加maven依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.
阅读全文