java
文章平均质量分 60
ZhaoYingChao88
学而不思则罔,思而不学则殆!
展开
-
apache poi-检测到Zip Bomb解决方案
异常信息:Caused by: com.alibaba.excel.exception.ExcelAnalysisException: java.io.IOException: Zip bomb detected! The file would exceed the max. ratio of compressed file size to the size of the expanded data.This may indicate that the file is used to inflate原创 2021-04-13 11:18:14 · 8827 阅读 · 8 评论 -
对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)
大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier。https://github.com/cglib/cglibhttps://github.com/cglib/cglib/blob/master/cglib/src/main/java/net/sf/cglib/beans/BeanCopier.java首先梳理出来现在有哪些对象拷贝的方式:Apache的BeanUtils:BeanUtils是Apach.原创 2020-11-13 20:25:58 · 8760 阅读 · 0 评论 -
Mapstruct 集合映射 从相同的源类映射扩展类异常问题—— Ambiguous mapping methods found for mapping collection element
问题1:票证实体public class Ticket { private long id; private String title; private Set<Comment> comments; // Getters and setters}票证DTO(父类)public class TicketDTO { private long id; private String title; // Getters and setters}.原创 2020-08-28 21:04:55 · 9352 阅读 · 3 评论 -
JSON常见几种压缩方式
无论使用何种编程语言,json格式的数据已被广泛应用,不论是数据的传输还是存储,在很多应用场景下,你可能想进一步地压缩JSON字符串的长度,以提升传输效率,如果你使用的是nosql数据库,你可能想进一步的压缩json字符串的长度来节省你的存储空间,接下来,我将介绍一下目前最常用的json数据压缩技术(CJSON和HPack)的实现。一、CJSONCJSON 的压缩算法, 主要是将资料抽离成...转载 2020-03-06 15:40:29 · 32313 阅读 · 12 评论 -
整理最新java面试宝典2019
java面试宝典2019参照:http://www.wityx.com/3.html1、meta标签的作用是什么2、ReenTrantLock可重入锁(和synchronized的区别)总结3、Spring中的自动装配有哪些限制?4、什么是可变参数?5、什么是领域模型(domain model)?贫血模型(anaemic domain model)和充血模型(rich...原创 2020-02-06 12:14:57 · 3149 阅读 · 0 评论 -
Google Guava EventBus 消息发布-订阅异步调用使用
EventBus 是Google.Guava提供的消息发布-订阅类库,它实现了观察者设计模式,消息通知负责人通过EventBus去注册/注销观察者,最后由消息通知负责人给观察者发布消息。前提:在pom.xml中引入guava包<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> ...原创 2020-02-06 12:05:14 · 3963 阅读 · 1 评论 -
java lamda表达式 超详细常见使用技巧
Java8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Framework)中新加入方法的使用.定义对象:public class Apple { private I...原创 2020-01-10 13:39:11 · 1536 阅读 · 0 评论 -
优秀java程序员常用注释标记--如何写好Java代码注释。
1. IDEA 自动生成对于类中的注释,我们可以通过IDEA自动生成。如IDEA 可以通过:File->Settings->Editor->File and Code Templates->Includes->File Header来设置模板,这样新建文件时,IDEA会按照设置的模板,会自动生成一个注释。其中标签有:${USER} : 当前用户。...原创 2019-11-20 21:42:06 · 4615 阅读 · 4 评论 -
JDK11变化详解&JDK8升级JDK11详细指南
原文链接:https://yq.aliyun.com/articles/659407官方英文原版:https://docs.oracle.com/en/java/javase/11/migrate/index.html#JSMIG-GUID-C25E2B1D-6C24-4403-8540-CFEA875B994AJava平台,标准版Oracle JDK迁移指南第11版E...转载 2019-11-07 10:18:11 · 8449 阅读 · 1 评论 -
java基础对象浅复制和深复制(基础知识)
1、创建对象的5种方式 ①、通过 new 关键字 这是最常用的一种方式,通过 new 关键字调用类的有参或无参构造方法来创建对象。比如 Object obj = new Object(); ②、通过 Class 类的 newInstance() 方法 这种默认是调用类的无参构造方法创建对象。比如Person p2 = (Person) Class.forName("com...原创 2019-10-30 09:47:49 · 640 阅读 · 1 评论 -
fastjson SerializerFeature详细使用教程(特别注意:重复引用和循环引用问题)
Fastjson介绍https://github.com/alibaba/fastjsonFastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。1、遵循http://json.org标准,为其官方网站收录的参考实现之一。2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。3、无依赖,不...原创 2019-10-14 15:35:53 · 8453 阅读 · 3 评论 -
Java JNI调用本地动态库使用详解
java native方法与JNI实现native方法定义: 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调...原创 2018-09-30 14:35:51 · 5957 阅读 · 1 评论 -
apache tika判断文件类型
判断文件类型一般可采用两种方式后缀名判断 简单易操作,但无法准确判断类型 文件头信息判断 通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一样的,无法判断)使用apache.tika可轻松解决以上两种方式存在的问题 使用apache.tika判断文件类型1. maven依赖<!-- https://mvnreposit...原创 2019-02-13 16:17:45 · 3957 阅读 · 1 评论 -
Java处理Excel文件工具包-easyexcel使用详解
https://github.com/alibaba/easyexcel由于项目需要对大量Excel数据进行输入输出处理,在使用JXL,POI后发现很容易出现OOM,最后在网上找到阿里的开源项目EasyExcel能很快速的读取写入超大Excel文件。经过大量的调试优化,现通过JAVA生成104万行20列的数据并写入到Excel文件的Sheet中只需要70秒的时间。以下为本工程代码:如果...原创 2019-02-27 20:49:59 · 7466 阅读 · 1 评论 -
Java注解处理器使用详解
ava中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的。一直想详细了解一下其中的原理。很有幸阅读到一篇详细解释编写注解处理器的文章。本文的原文是ANNOTATION PROCESSING 101,作者是Hannes Dorfmann。这是一篇好文,忍不住翻译学习一下。以下是翻译。(注:本文的翻译已经获得了作者 Hannes 的授权。)...原创 2019-01-29 11:16:34 · 705 阅读 · 0 评论 -
JDK8函数式接口@FunctionalInterface的使用详解
我们常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解。通过JDK8源码javadoc,可以知道这个注解有以下特点:1、该注解只能标记在”有且仅有一个抽象方法”的接口上。2、JDK8接口中的静态方法和默认方法,都不算是抽象方法。3、接口默认继承Java.lang.Object,所以如果接口显示...原创 2019-01-25 17:51:10 · 3988 阅读 · 0 评论 -
JVM内存结构、Java内存模型以及Java对象模型之间的区别
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和Java对象模型这三者的概念及其间的区别。甚至我见过有些面试官自己也搞...原创 2018-11-05 20:40:47 · 2167 阅读 · 0 评论 -
Java的自动拆装箱
基本数据类型基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型。它们是我们编程中使用最频繁的类型。Java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。Java基本类型共有八种,基本类型可以分为三类:字符类型char布尔类型boolean数值类型byte、short、int、long、float、double。...原创 2018-11-05 20:16:27 · 281 阅读 · 0 评论 -
Java常用类库
以下列表是通过分析50K的开源项目得出来的。1. org.apache.commons.io.IOUtilscloseQuietly ( ) toString ( ) copy ( ) toByteArray ( ) write ( ) toInputStream ( ) readLines ( ) copyLarge ( ) lineIterator ( ) readF...原创 2018-10-29 15:28:00 · 276 阅读 · 0 评论 -
Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO之dozer mapper使用
PO(persistant object) 持久对象在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。DO(Domain Obj...原创 2018-10-29 14:25:14 · 1718 阅读 · 0 评论 -
Java HashMap, Hashtable, TreeMap, WeakHashMap总结
概要学完了Map的全部内容,我们再回头开开Map的框架图。 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同第1部分 Map概括(01) Map 是“键值对”映射的抽象接口。(02) AbstractMap 实现了Map中的绝大部分函数接口。它减少了“Map的实现类”的重复编码。(03...转载 2018-10-09 20:21:26 · 302 阅读 · 0 评论 -
Java 多线程并发编程详解及CompletionService、Future使用技巧
知识体系图:1、线程是什么?线程是进程中独立运行的子任务。2、创建线程的方式方式一:将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法方式二:声明实现 Runnable 接口的类。该类然后实现 run 方法推荐方式二,因为接口方式比继承方式更灵活,也减少程序间的耦合。3、获取当前线程信息?Thread.currentThread()...原创 2019-02-19 14:12:51 · 864 阅读 · 0 评论 -
推荐100个高质量开发者博客
Google排名靠前的博客并没有出现在下面的列表里。推荐高质量的博客站点。 名称(站点名或人名) 国家 备注 1 Adam Bien 德国 Java EE相关 2 Antonio Goncalves 法国 Java EE相关(《Java EE 5》和《Java EE 7》的作者) 3 Henrik Warne 瑞典...原创 2019-02-20 10:09:30 · 1185 阅读 · 1 评论 -
mina使用详解
mina框架详解Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。Mina ...原创 2018-04-23 16:00:01 · 6168 阅读 · 0 评论 -
fastJson JSON.parseObject()丢失字符串原本顺序
public static void main(String[] args) { String jsonStr = "{\"size\":\"7.5\",\"width\":\"M (B)\"}"; System.out.println("无序遍历结果:"); JSONObject jsonObj = JSON.parseObject(jsonS...原创 2019-09-04 21:22:25 · 4050 阅读 · 0 评论 -
精准身份证号验证的具体实现方法 校验码计算逻辑
身份证号分为两种,旧的为15位,新的为18位。身份证15位编码规则:dddddd yymmdd xx p其中 dddddd:地区码 yymmdd: 出生年月日 xx: 顺序类编码,无法确定 p: 性别,奇数为男,偶数为女;身份证18位编码规则:dddddd yyyymmdd xxx y其中 dddddd:地区码 yyyymmdd: 出生年月日...原创 2019-08-22 22:30:22 · 2152 阅读 · 0 评论 -
java jdk基础包说明
Java、javax、org、sun包都是jdk提供的类包,且都是在rt.jar中。rt.jar是JAVA基础类库(java核心框架中很重要的包),包含lang在内的大部分功能,而且rt.jar默认就在根classloader的加载路径里面,所以放在classpath是多此一举 。他们之间的区别具体如下:1. java.*JavaSE的标准库,是java标准的一部分,是对外承诺的java...原创 2019-05-15 22:22:01 · 2181 阅读 · 1 评论 -
java 基础单例模式实现的几种方式对比
单例模式的五种实现方式1、饿汉式(线程安全,调用效率高,但是不能延时加载):publicclassImageLoader{privatestaticImageLoader instance =newImageLoader;privateImageLoader(){}publicstaticImageLoader getIn...原创 2019-05-10 16:45:17 · 262 阅读 · 0 评论 -
java8 stream flatMap流的扁平化操作
概念:Steam 是Java8 提出的一个新概念,不是输入输出的 Stream 流,而是一种用函数式编程方式在集合类上进行复杂操作的工具。简而言之,是以内部迭代的方式处理集合数据的操作,内部迭代可以将更多的控制权交给集合类。Stream和 Iterator 的功能类似,只是Iterator 是以外部迭代的形式处理集合数据的操作。在Java8以前,对集合的操作需要写出处理的过程,如在集合中筛...原创 2019-05-20 16:14:01 · 16350 阅读 · 3 评论 -
TestNG 使用入门教程
参照:https://testng.org/doc/documentation-main.html阅读目录TestNG介绍 在Eclipse中在线安装TestNG 在Eclipse中离线安装Testng TestNG最简单的测试 TestNG的基本注解 TestNG中如何执行测试 使用testtng.xml 文件执行 case TestNG按顺序执行Case TestNG...原创 2019-03-27 11:55:43 · 565 阅读 · 0 评论 -
jsr基本使用@valid和@validation
SpringMvc中的校验框架@valid和@validation的概念及相关使用1.比较@Valid是使用hibernatevalidation的时候使用@Validated是只用springValidator校验机制使用\2.实现其中,@valid,java的jsr303声明了这类接口,hibernate-validator对其进行了实现3.依赖...原创 2019-04-04 18:11:20 · 620 阅读 · 0 评论 -
单元测试Junit使用详解
1、Junit 是什么? JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 注意:Junit 测试也是程序员测试,即所谓的白盒测试,它需要程序员知道被测试的代码...原创 2019-03-22 16:47:22 · 1498 阅读 · 0 评论 -
Mockito & PowerMock详解
为什么要mockMock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。如下使用范畴真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报) 真实...原创 2019-03-21 21:18:01 · 3724 阅读 · 1 评论 -
java开发调试定位分析工具大全
Java是一种非常强大的编程语言,自问世以来就广受欢迎。作为现今十分流行的移动平台——Android的核心语言,它大大促进了移动通信行业的发展。因此可以肯定,随着Android平台的不断扩张,Java开发人员的需求量也会不断增加。这篇文章为大家介绍了多款有用的调试工具,以供参考。不过,在此之前,先来看看有哪些不同类型的调试器。调试器的类型CLI调试器(命令行调试器):GDB、JBD,等...原创 2018-09-30 09:36:19 · 4963 阅读 · 0 评论 -
并发工具类使用详解及区别(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
本文转载自:码农历险记 CountDownLatchCountDownLatch介绍CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch 是通过一个计数器来实现的,计数器的初始化值为线程的数量。每当一个线程完成了自己的任务后...原创 2018-09-27 16:26:21 · 964 阅读 · 0 评论 -
JDK1.8新特性Lambda表达式入门
摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等。本文系 OneAPM 工程师编译整理。Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。从 Swing ...原创 2018-09-11 10:40:02 · 13630 阅读 · 5 评论 -
Protocol 3.0基本使用
简介proto3语法定义一个 Message定义多个 message 类型定义变量类型分配Tag指定变量规则注释保留变量不被使用默认值定义枚举 Enumerations如何引用其他 proto 文件升级 proto 文件正确的姿势Any 的使用Oneof 的使用Maps 的使用Packages 的使用Options定义 Services简单RPC服务器端流式 RPC客户端流式 RPC双向流式 RP...原创 2018-05-09 10:10:43 · 1783 阅读 · 0 评论 -
正则表达式整理
正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式。下面整理一些常用的正则表达式。字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 ...原创 2018-04-20 09:55:17 · 372 阅读 · 0 评论 -
OSGi模块化框架详解
OSGi模块化框架是很早就出来的一个插件化框架,最早Eclipse用它而出名,但这些年也没有大热虽然OSGi已经发布了版本1到版本5。现在用的最多的,也是本文讲述基于的是Equinox的OSGi实现,同时也是Eclipse核心,Spring Dynamic Module也是基于Equinox。OSGi框架为java系统提供了一个通用的容器,该系统中的 bundle,无需停止系统,即可实现 bund...原创 2018-04-20 09:54:23 · 18045 阅读 · 0 评论 -
@Contended padding 伪共享
@Contended和伪共享原文: http://robsjava.blogspot.com/2014/03/what-is-false-sharing.htmlJava8引入了@Contented这个新的注解来减少伪共享(False Sharing)的发生。本文介绍了@Contented注解并解释了为什么False Sharing是如何影响性能的。缓存行CPU读取内存数据时并非一次只读一个字节,...原创 2018-04-19 16:01:20 · 648 阅读 · 0 评论