![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 93
ageofnodoubt
这个作者很懒,什么都没留下…
展开
-
Java安全发布对象(单例)的几种方式
基础知识类的初始化JVM在类被加载后,并且被线程使用之前,会进行类的初始化。在初始化期间,JVM将会获取一个锁,以同步多个线程对类的初始化。根据Java语言规范,在首次发生下列任意一种情况时,一个类或接口类型T将被立即初始化:T是一个类,而且一个T类型的实例被创建。T是一个类,且T中声明的一个静态方法被调用。T中声明的一个静态字段被赋值。T中声明的一个静态字段被使用,而且这个字段不是一个常量字段。T是一个顶级类(Top Level Class,见Java语言规范的§7.6),而且一个断言原创 2020-10-14 07:33:57 · 182 阅读 · 0 评论 -
Fastjson基于BeanToArray模式实现JavaBean与JSON数组的映射
(本文是《轻松学习Fastjson》教程的第5篇文章)在默认情况下,Fastjson实现了JavaBean和JSON对象之间的映射。此外,Fastjson还支持一种更精简的映射,可以实现JavaBean与JSON数组之间的映射。优点是序列化之后的JSON字符串更小,缺点是降低了可读性。本篇内容基于Fastjson 1.2.62版本,马上开始学习吧。默认的序列化方式默认情况下,使用JSON.toJSONString序列化对象,转化为JSON对象字符串。public class Animal {原创 2020-10-10 22:05:09 · 1212 阅读 · 0 评论 -
这个国庆几乎无假期,写了9篇Jackson和4篇Fastjson基础教程
这个国庆八天长假,有人回家有人去旅游。而我,每天买菜做饭洗碗陪小孩玩,在附近园区玩了一趟,看了部姜子牙。剩下的时间就是写文章,每天都写,虽然比较简单,但写9篇Fastjson和4篇Jackson教程也不容易。下面把所有文章整理一下。Jackson教程Jackson是一个基于Java的高性能JSON处理器,其核心功能是实现数据与Java对象之间的序列化/反序列化。Jackson最初只是实现JSON数据的绑定,但是发展至今,它也支持其他格式的数据,只要有对应的解析器和生成器就可以了。Jackson原创 2020-10-08 20:29:36 · 143 阅读 · 0 评论 -
Jackson全局配置和JsonFormat注解设置日期格式
>>《轻松学习Jackson》教程 在日常开发中,日期是很常见的一种数据类型,特别是在与数据库打交道的场景。为了提升日期的可读性,通常会将日期进行格式化之后再输出,用于前端展示和日志打印等场景。Jackson在对日期进行序列化时,也支持按指定的格式进行序列化。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。默认日期格式创建一个代表产品的类Product,其中发布时间publishDate为Date类型。public class Product { private.原创 2020-10-07 16:49:49 · 11021 阅读 · 0 评论 -
Jackson使用JsonFilter注解过滤字段
通过《Jackson忽略字段不序列化字段的3种方法》一讲我们知道,JsonIgnore和JsonIgnoreProperties都可以用来忽略掉指定的字段。这两个注解有个共同点,就是都在添加注解后就指明了需要过滤的字段。如果想要在序列化的时候,才指定需要过滤的字段,那么可以使用JsonFilter注解来实现。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。过滤类的字段为需要过滤字段的类添加JsonFilter注解。@JsonFilter("myFilter")public clas原创 2020-10-06 12:01:22 · 5962 阅读 · 0 评论 -
Jackson忽略字段不序列化字段的3种方法
在上一篇中,我们学习了如何忽略值为null的字段《Jackson忽略null字段的3种方法》。相对于忽略null字段,在实际应用中,忽略某些字段的序列化可能更为常见。Jackson对于如何序列化字段、过滤字段的方法多种多样,非常丰富,这一节先来了解一下3种简单的方法。本篇内容基于Jackson 2.11.2版本,马上开始学习吧。使用JsonIgnore注解忽略单个字段为字段添加@JsonIgnore注解,可以忽略该字段的序列化和反序列化。public class ArticleIgnore {原创 2020-10-06 11:58:48 · 18180 阅读 · 0 评论 -
Google Guava之RateLimiter核心源码解读(中)
RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。在上一篇中,我们先简单解读了Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。传送门:《Google Guava之RateLimiter核心源码解读(上)》这一篇,我们将要解读的是创建RateLimiter实例和获取许可的核心原创 2020-10-05 00:05:35 · 521 阅读 · 0 评论 -
Jackson修改字段名和自定义命名策略
>>Jackson系列教程 Jackson支持在处理数据的时候,使用不同于对象字段名的JSON名称(Jackson内部使用),来代替原来的字段名进行序列化和反序列化。主要有几种实现方式:使用@JsonProperty指定固定的名称进行名称映射;使用预定义的命名策略PropertyNamingStrategy,设置全局或单个类的命名策略;扩展PropertyNamingStrategy,实现自定义命名策略,读和写支持使用不同的命名策略。本篇内容基于Jackson 2.11.2版本.原创 2020-10-03 22:23:46 · 12947 阅读 · 0 评论 -
Google Guava之RateLimiter核心源码解读(上)
RateLimiter是Google Guava框架的一个限速器,通常用于控制对某个资源的访问速率。限速常见的有两种实现方式,一种是令牌桶,另一种是漏桶。RateLimiter选择了令牌桶作为其底层实现,按照固定速率投放令牌,同时支持突发流量。本篇先来解读一下Ticker和Stopwatch,它们是RateLimiter底层时间计算的基础。代码基于Guava 23.0版本。TickerTicker的意思钟表,里面只有一个read()方法,用来获取当前时间。核心代码解读:public abst原创 2020-09-26 00:26:45 · 895 阅读 · 0 评论 -
全面总结Fastjson过滤字段、排除字段的5种方法(含示例)
1.通过注解指定不需要序列化的字段在不需要序列化的字段,添加@JSONField(serialize = false)注解可进行排除。public class DontSerializeAnnotation { @JSONField(serialize = false) private Long id; private String name; public Long getId() { return id; } public void s原创 2020-09-26 00:20:54 · 18598 阅读 · 0 评论 -
Java JUC工具包之CyclicBarrier与CountDownLatch
假设有5个人约好一起去旅行,那么一般来说有2种组织出行方式,一种是自己组织自由行,另一种是跟团旅行。在Java的JUC工具包中,有两个工具类可以类比这两种旅行方式,分别是CyclicBarrier和CountDownLatch。两种旅行模式1.自由旅行模式(CyclicBarrier)旅行出发当天,5个人(按照约好的时间和地点)相互等待。先到的人,等待未到的人,一旦人齐了,集体成员就同时出发。对应到CyclicBarrier类,就是:有多个工作者线程,其中先准备好的线程,阻塞等待(await()原创 2020-09-26 00:11:58 · 146 阅读 · 0 评论 -
JVM指令分析实例五(操作数栈)
本篇为《JVM指令分析实例》的第五篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)JVM指令分析实例四(数组、switch)预备知识局部变量表的变量槽(Variable Sl...2018-10-14 23:29:05 · 893 阅读 · 0 评论 -
JVM指令分析实例四(数组、switch)
本篇为《JVM指令分析实例》的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。前几篇传送门:JVM指令分析实例一(常量、局部变量、for循环)JVM指令分析实例二(算术运算、常量池、控制结构)JVM指令分析实例三(方法调用、类实例)数组一维原始类型数组void createBuffer() { int buffe...2018-10-07 23:33:15 · 176 阅读 · 0 评论 -
JVM指令分析实例二(算术运算、常量池、控制结构)
相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单。算术运算Java虚拟机通常基于操作数栈进行算术运算。只有iinc指令例外,它直接对局部变量进行自增操作。实例代码int align2agrain(int i, int grain) { return ((i + grain - 1) & ~(grain - 1));}字节码指令...2018-09-23 17:19:34 · 460 阅读 · 0 评论 -
Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass { private int m; ...原创 2018-09-07 22:56:15 · 259 阅读 · 0 评论 -
Java Class文件结构实例分析(下)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...原创 2018-09-07 22:59:16 · 228 阅读 · 0 评论 -
几年前写的一个任务调度模块
大概是在09年下半年,参与了一个项目,当时项目有一些需要定期执行的任务,并且考虑到后续会有更多的任务需要调度,所以项目负责人决定做一个调度模块。而且,有了调度模块之后,其他项目可以重复利用,从而实现“一次编写处处可用”。这样,在有新的调度任务时,只要按照规则做一些简单的配置就可以了。最终,这个光荣的工作任务就落到了我手上。 接下来说说调度模块的设计与实现思路。 ...2013-05-16 00:30:56 · 448 阅读 · 0 评论 -
axis 1.4调用cxf 2.x服务接口,自定义对象数组参数丢失问题
最近在做一个项目,遇到了一个奇怪的问题:webservice接口能够正常调用,但却出现了部分参数传递正确,个别参数的值丢失(null)的情况。由于以前未曾遇过,为了这个问题还折腾了几天,那个苦呀。 简单描述一下需求:项目中有一个现网的webservice接口,原来是A厂家提供服务端,B厂家提供客户端进行调用。现在A厂家不做了,需要由我们来实现服务端。 好,开始干吧...,嗯....2013-12-10 22:13:38 · 875 阅读 · 0 评论 -
通过行为参数化传递代码(Java)
行为参数化就是可以帮你处理频繁变更的需求的一种软件开发模式。接下来,让我们来看看如何应对不断变化的需求。 1.初试牛刀:筛选绿苹果一种常见的实现方式可能是这样:public static List<Apple> filterGreenApples(List<Apple> inventory) { List<Apple> result =...2018-07-07 18:07:02 · 272 阅读 · 0 评论 -
为什么Java String哈希乘数为31?
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:为什么Java String哈希乘数为31? 前面简单介绍了[ 经典的Times 33 哈希算法 ],这篇我们通过分析Java 1.8 String类的哈希算法,继续聊聊对乘数的选择。String类的hashCode()源码/** Cache the hash code for the strin...原创 2018-07-15 16:55:41 · 2429 阅读 · 2 评论 -
Javassist实现JDK动态代理
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyT...原创 2018-08-12 19:04:15 · 284 阅读 · 0 评论 -
Java Class文件结构实例分析(上)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(上) 本文假定读者对Java Class文件格式有一些基本的了解,建议结合相关书籍进行对照阅读。Class文件格式信息实例代码package chapter6;public class TestClass { private int m; ...2018-09-07 22:39:35 · 172 阅读 · 0 评论 -
Java Class文件结构实例分析(下)
发表文章之后,发现很多图片显示不了,请阅读我的公众号文章,以获得本文最佳体验:Java Class文件结构实例分析(下) 本篇我们继续分析Class文件结构的方法及属性部分内容,上节内容回顾请查看:Java Class文件结构实例分析(上)Class文件格式信息继续上节实例代码package chapter6;public class TestClass { ...2018-09-07 22:50:47 · 205 阅读 · 0 评论 -
JVM指令分析实例一(常量、局部变量、for循环)
Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需参数的操作数所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。Java虚拟机限制操作码的长度为1个字节,因此最多只能有256个指令。指令格式以下指令格式,是基于Oracle JDK编译后,通过javap工具生成的指令描述格式。<index> <opco...2018-09-16 01:02:42 · 569 阅读 · 0 评论 -
Javassist实现JDK动态代理
提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模拟实现。JDK动态代理示例以下是一个基于JDK动态代理的hello world示例,在很多地方都可以看到类似的版本。public class DynamicProxyTe...原创 2018-08-12 19:07:52 · 3320 阅读 · 0 评论