随笔分类 - 01-Java基础入门
摘要:1.问题描述 需要将流InputStream转换为byte[]数组,定义的方法如下: /** * 流转字节数组 * * @param in * @return * @throws IOException */ public static byte[] streamToByteArray(InputS
阅读全文
摘要:很多情况下,需要把文件转成base64字符串进行传输,原因就是直接使用流传输可能会导致流接收不完整。使用base64字符串接收然后再转码保存文件可避免这种问题。下面的方法仅供参考: 1.base64转文件 /** * base64转文件保存 * * @param base64 base64字符串 *
阅读全文
摘要:当只需要获取list集合的前几个元素或者对其进行分批操作时,可使用subList方法 List.subList(start,end); //start:起始元素的下标 //end:结束元素的下标 返回的结果包含起始索引值,不包含结束索引值 示例如下: List<Integer> list = new
阅读全文
摘要:对list数据去重的方法有如下几种,先以String类型的集合进行说明,对象的元素比较麻烦,详见对象去重: 定义的集合如下: List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); lis
阅读全文
摘要:1.现象描述 请看下面的现象: 现象1: 现象2: 有没有被惊到?现象1和现象2结果不一样,现象2使用==判断两个Long类型的值,结果竟然是false! 2.原理说明 源码中初始化时会执行valueOf方法,其方法如下: 也就是说这个值在-128到127之间会使用缓存,超过就会创建一个对象,所以上
阅读全文
摘要:当需要对字符串限定长度,而长度不够时在其前面或后面补充0。下面的代码是在前面补0,注释的哪行代码是在后面补0,根据实际情况选择: package com.zxh.util; public class StringUtil { //字符串格式化长度不足补0 public static String a
阅读全文
摘要:通常会使用fastjson将json字符串转换,可参考文章。而对于事先不确定的类型,则需要使用泛型方式进行对象的转换。 使用泛型定义json字符串转对象的方法: public static <T> T jsonParse(Object obj, Class<T> clazz) { if (null
阅读全文
摘要:1.只获取请求参数 当需要在aop中获取请求的参数而无需获取响应参数,并做拦截时,可以参考下面的方法(原理很简单,使用@Before在方法执行之前获取参数): package com.zxh.configure; import com.alibaba.fastjson.JSON; import co
阅读全文
摘要:在分布式系统中,为了保证数据的主键全局唯一且自增,可以使用Twitter的雪花算法(SnowFlake),它可按时间趋势递增. 1)算法原理 其算法生成的ID是一个64bit大小的整数,换成long类型是19位,它的结构如下图 从左向右进行说明: 1)第1位(1bit)表示符号位。由于一般id都是正
阅读全文
摘要:本文使用SpringBoot环境解析/生成固定格式的xml文件。 1.前提准备 解析xml的方式有多种,这里使用demo4j。 1.1 导入依赖 <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <ver
阅读全文
摘要:1.问题描述 对表的主键使用的是雪花策略生成的id,在java中的Long类型的,但在前端精度丢失,现象如下: { "id": 1297373218628307972 } 上面假如是后端使用jackson传递给前端的,前端接收的id的值却变成了1297373218628307000。 原因是Java
阅读全文
摘要:有时可能不能使用注解的方式获取post请求中的json数据,而又需要获取请求的参数如何处理? 所有的请求都存在于HttpServletRequest对象中,那么只需要在此对象中获取即可: @RequestMapping("/user") public class UserController { /
阅读全文
摘要:AES是一种对称的加密和解密的算法,其用法如下: package com.zys.demo.util; import lombok.extern.slf4j.Slf4j; import javax.crypto.Cipher; import javax.crypto.spec.IvParameter
阅读全文
摘要:1.概述 即在JavaBean到JavaBean之间进行递归数据复制,并且这些JavaBean可以是不同的复杂的类型。Dozer把对象中名称相同的属性进行复制,对于名称不相同或类型不一样,则可以在xml中进行定义。 其最大的优势在于对象中不同的名称之前只要配置了映射,就可以进行复制,减少大量使用ge
阅读全文
摘要:1.BeanUtils.copyProperties spring有自带的对象复制的方法,在org.springframework.beans包下。 1)创建实体类 import lombok.Data; import java.util.Date; @Data public class User
阅读全文
摘要:在java中,对于反斜杠 " \ " 有特定的含义。要想使用replaceAll把反斜杠替换成空字符串,需要使用四个反斜杠 " \\\\ "。 原因是反斜杠是转义字符,在regex中"\\"表示一个"\",在java中一个"\"也要用"\\"表示。因此,前一个"\\"代表regex中的"\",后一个
阅读全文
摘要:1.概述 泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型。也就是说在创建对象或调用方法时才知道具体的类型,而在定义类或方法时不需要明确,而是使用通用的类型代替。在使用时把类型当做参数进行传递。 设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastE
阅读全文
摘要:Java中"="等号作用是赋值,优先级很低,就是把等号右边的值赋值给左边。但你先看下面的一块代码。 基本类型使用等号 String a = "123"; String b; System.out.println((b = a) == null);//打印1 System.out.println(b)
阅读全文
摘要:使用说明 对数字进行格式化显示,需要使用的类是DecimalFormat,在创建此对象时指定要显示的格式即可。其返回值是字符串,需要时再进行类型转换。使用"#"时表示占位符 1.每三位显示一个逗号 需求:对数字1234567进行格式化显示,最终效果是1,234,567。 long l = 12345
阅读全文
摘要:1.概述 1.1定义 Struts2是Apache 公司推出的一个基于 MVC的轻量级 Web 框架。 1.2由来 Struts 框架目前有两个版本:Struts1.x 和 Struts2.x。Struts1 是最早的基于 MVC 模式的轻量级 Web 框架。Struts2 是在 Struts1 和
阅读全文