Java
文章平均质量分 64
Hello_xzy_Word
学如逆水行舟,不进则退
展开
-
RestTemplate使用:如何更优雅的接收泛型数据?
本文简单记录了 RestTemplate 接收泛型数据的方式原创 2022-03-30 10:49:36 · 2127 阅读 · 0 评论 -
RestTemplate 使用:设置请求头、请求体
本文简单介绍了如何在使用 RestTemplate 时设置请求头以及请求体,并提供了 Demo。原创 2022-03-29 21:04:57 · 30619 阅读 · 0 评论 -
Nacos 高可用环境搭建(基于Docker)
在 Win10 + Docker 环境下搭建 Nacos 高可用环境原创 2022-01-28 01:48:07 · 2908 阅读 · 0 评论 -
Docker 环境下的 Nacos 持久化
在 Win10 + Docker 环境下实现 Nacos 持久化原创 2022-01-27 13:03:38 · 2381 阅读 · 0 评论 -
Spring依赖注入之@Lookup注解
当一个单例Bean需要依赖一个原型Bean...原创 2021-12-25 23:38:24 · 812 阅读 · 0 评论 -
随机生成华人姓名的Java工具类:权重 + 随机
package com.zhengyuxiao.toolbox.random;import java.util.*;/** * @author xzy * @date 2020-12-24 11:55 * 说明:随机工具 */public class RandomUtils { private RandomUtils() { } /** * 带权重的随机决策——基于线性扫描 * 注意: * 1. 时间复杂度O(n),n = priz原创 2021-10-22 11:12:54 · 433 阅读 · 0 评论 -
foreach + remove = ConcurrentModificationException
foreach + remove = ConcurrentModificationException问题:List<String> list = new ArrayList<>();list.add("0");list.add("1");list.add("2");list.add("3");for (String s : list) { if (条件语句) { list.remove(s); }}在上述代码的 if 语句中依次使原创 2021-01-05 22:34:31 · 153 阅读 · 2 评论 -
Calendar 类 set()方法使用要点
相关源码:/* * ...... * <h3>Getting and Setting Calendar Field Values</h3> * * <p>The calendar field values can be set by calling the <code>set</code> * methods. Any field values set in a <code>Calendar</code> wi原创 2020-12-23 12:17:18 · 1647 阅读 · 0 评论 -
Java 日期处理工具类
package com.zhengyuxiao.toolbox.date;import java.util.Calendar;import java.util.Date;/** * @author xzy * @date 2020-09-14 14:05 * 说明:日期处理 */public class CalendarUtils { /** * Get a instance of Calendar by given Date instance. *原创 2020-12-17 09:46:10 · 159 阅读 · 0 评论 -
Spring MVC Unauthorized问题
Spring MVC Unauthorized问题接口源码:@RestController@RequestMapping("user/")@Api(tags = "用户管理")public class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userSer原创 2020-12-15 09:44:58 · 742 阅读 · 2 评论 -
ArrayList不同遍历方式的效率比较
遍历ArrayList的效率问题“如果需要遍历List集合元素,对于 ArrayList、Vector 集合,则应该使用随机访问方法(get)来遍历集合元素,这样性能更好。对于 LinkedList 集合,则应该采用迭代器(Iterator)来遍历集合元素”——《疯狂Java讲义》验证package com.learn.java;import java.util.ArrayList;import java.util.List;/** * @author xzy * @date 2020原创 2020-12-06 22:16:48 · 395 阅读 · 0 评论 -
Spring Data JPA 控制台打印格式化SQL语句
Spring Data JPA 控制台打印格式化SQL# 开启控制台SQL打印spring.jpa.show_sql = true# 开启SQL格式化spring.jpa.properties.hibernate.format_sql = true使用效果:Hibernate: select studentent0_.id as id1_2_, studentent0_.age as age2_2_, studentent0_.cre原创 2020-11-30 10:57:14 · 4077 阅读 · 0 评论 -
while 与分号(;)
while 与分号(;)代码1:public class Main2 { public static void main(String[] args) { int i = 5; while (i-- > 0) System.out.print(i); }}控制台打印:43210代码2:public class Main2 { public static void main(String[] args) {原创 2020-11-17 08:42:14 · 627 阅读 · 1 评论 -
方法重写(Override)
方法重写(Override)“两同两小一大”规则方法的重写需要遵循“两同两小一大”规则:“两同”:方法名相同,参数列表相同“两小”:子类方法返回值类型应该比父类方法返回值类型更小或相等;子类方法声明抛出的异常应该比父类方法声明抛出的异常更小或相等。“一大”:子类方法的访问权限应该比父类方法更大或相等。里氏替换原则里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高原创 2020-11-17 08:36:59 · 211 阅读 · 0 评论 -
Java:整数常量 与 表达式类型提升
Java整数常量1. Java 整数类型byteshortintlong2. Java 整数常量int 是最常用的整数类型,因此,大多数情况下,Java 中整数常量默认就是int类型。如果将一个较小的整数常量(数值在byte或short的表数范围之内)赋给一个byte或short变量,系统会把这个整数常量当作byte或short类型来处理。如果将一个较大的整数常量(数值在int的表数范围之外)赋值给一个long变量,系统不会把这个整数常量当作long类型来处理,系统把这个整数常量当原创 2020-11-01 13:03:03 · 650 阅读 · 0 评论 -
使用 Java Stream 实现集合排序
排序集合中的对象1.源码介绍1.1 Stream sorted()源码查看:/** * Returns a stream consisting of the elements of this stream, sorted * according to natural order. If the elements of this stream are not * {@code Comparable}, a {@code java.lang.ClassCastException} may be原创 2020-09-11 13:04:55 · 693 阅读 · 0 评论 -
BigDecimal 类的 compareTo() 和 equals()方法
BigDecimal 类的 compareTo() 和 equals()方法1. compareTo()源码 /** * Compares this BigDecimal with the specified BigDecimal. * Two BigDecimal objects that are equal in value but have * a different scale (like 2.0 and 2.00) are considered equal原创 2020-09-08 15:59:23 · 1021 阅读 · 0 评论 -
使用 Calendar 计算时间
使用 Calendar 计算时间一. 类型转换1.1 Date → Calendarpublic Calendar date2Calendar(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar;}1.2 Calendar → Datepublic Date calendar2Date(Calendar calendar){原创 2020-08-27 20:05:04 · 2164 阅读 · 0 评论 -
Java Calendar 时间“误差”问题
使用Calendar计算日期需要注意的问题1. Calendar.getInstance()方法相关源码:Gets a calendar using the default time zone and locale. The Calendar returned is based on the current time in the default time zone with the default FORMAT locale.Returns: a Calendar.public static原创 2020-08-27 18:30:50 · 1280 阅读 · 0 评论 -
获取系统当前日期
获取系统当前日期有些时候,我们只需要获取当前的年月日信息,在一些老的系统中,可能使用如下语句:public class Main { public static void main(String[] args) { Date today = new Date(); today.setHours(0); today.setMinutes(0); today.setSeconds(0); }原创 2020-08-25 15:21:38 · 1438 阅读 · 0 评论 -
Java异常处理机制中的 finally 与 return
finally 与 return代码1public class Main2 { public static void main(String[] args) { System.out.println("方法返值为:" + Main2.test()); } public static int test() { int number = 1; System.out.println("number被赋值为:" + number);原创 2020-08-06 11:11:18 · 254 阅读 · 0 评论 -
EasyP0i 一对多数据导入 null值问题
EasyP0i 一对多数据导入 null值问题导入Excel格式后端代码准备接收数据的实体类@Data@NoArgsConstructor@AllArgsConstructor@ExcelTarget(value = "question")public class QuestionExcelDTO implements Serializable { private static final long serialVersionUID = -54863084011552860原创 2020-07-27 16:19:53 · 673 阅读 · 2 评论 -
由对象集合创建各种映射_流
由对象集合创建各种映射@Data@NoArgsConstructor@AllArgsConstructorpublic static class UserIdAndDepartId { /** * 用户ID */ private String userId; /** * 部门ID */ private String departId;}实例1 Map<String,List>public static原创 2020-07-16 08:22:26 · 152 阅读 · 0 评论 -
静态类型与函数重载
静态类型与函数重载有以下代码:public class Main { public static class Human {} public static class Man extends Human {} public static class Woman extends Human {} public static void sayHello(Human human) { System.out.println("human"); } public原创 2020-07-10 12:26:04 · 268 阅读 · 0 评论 -
使用“流”抽取对象数据
抽取对象数据_流@Data@NoArgsConstructor@AllArgsConstructorpublic class Student{ private String studentId; private String studentName;}实例1:抽取学生IDList<Student> studentList = studentRepository.findAll();Set<String> studentIdSet = student原创 2020-07-06 18:40:48 · 208 阅读 · 0 评论 -
局部变量与类变量的赋值与使用
局部变量与类变量的赋值与使用现象public class Main { // 类变量 public static int classVariable; public static void main(String[] args) { // 局部变量 int localVariables; System.out.println(Main.classVariable);//此处正常编译 System.out.pri原创 2020-07-01 08:38:39 · 962 阅读 · 0 评论 -
整理树形结构数据
整理树形结构数据树形结构是一种常见的数据组织结构:今天恰好需要完成一个接口,将数据组织长树形结构,下面是简化的代码:import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.util.List;@Data@NoArgsConstructor@AllArgsConstructorpublic class Node { /** *原创 2020-06-30 19:22:36 · 1650 阅读 · 0 评论 -
类加载的时机
类加载时机说明类的生命周期类从被加载到虚拟机内存开始,到卸载出内存位置,它的整个生命周期包含7个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)。其中,验证、准备、解析3个阶段统称为连接。加载、验证、准备、初始化、卸载这5个阶段的顺序时确定的,在类的加载过程中,这5个阶段必须按照顺序开始,而解析阶段则不一定,在某些情况下,解析阶段可以在原创 2020-06-23 20:32:10 · 310 阅读 · 0 评论 -
Integer对象两种创建方式的比较
Integer对象两种创建方式的比较先看一段代码:public class Main { public static void main(String[] args) { Integer i1 = 6; Integer i2 = 6; Integer i3 = new Integer(6); Integer i4 = new Integer(6); System.out.println(i1 == i2);//t原创 2020-06-12 09:08:35 · 273 阅读 · 0 评论 -
避免使用finalize方法
避免使用finalize方法1. Java对象回收与finalize方法Java虚拟机使用*可达性分析算法(Reachability Analysis)*判断对象是否可回收。事实上,即使对象被判定为不可达,最终也不一定会被回收。对象被判定为不可达后,Java虚拟机将检查是否有必要执行对象的finalize方法。有必要执行finalize方法:对象覆盖了finalize方法,且对象的finalize方法还没有被调用过。如果有必要执行finalize方法,对象会被压入一个名为F-Queue的队列原创 2020-05-18 22:05:07 · 246 阅读 · 0 评论 -
Iterator接口实现类
Iterator接口实现类1.AbstractList类内部类private class Itr implements Iterator<E> {Index of element to be returned by subsequent call to next.int cursor = 0;Index of element returned by most recent call to next or previous. Reset to -1 if this ele原创 2020-05-11 20:32:56 · 654 阅读 · 0 评论 -
Iterator接口源码阅读
Iterator接口源码阅读源码查看package java.util;import java.util.function.Consumer;An iterator over a collection. Iterator takes the place of Enumeration in the Java Collections Framework. Iterators differ from enumerations in two ways:Iterators allow the ca原创 2020-05-11 20:31:57 · 164 阅读 · 0 评论 -
Enumeration接口源码阅读
Enumeration接口源码阅读package java.util;An object that implements the Enumeration interface generates a series of elements, one at a time. Successive calls to the nextElement method return successive elements of the series. For example, to print all原创 2020-05-11 20:29:27 · 188 阅读 · 0 评论 -
构造方法引用
构造方法引用构造方法引用与一般方法引用类似,只不过方法名为new。例如,Person::new是Persion构造方法的一个引用。若Person类存在多个构造方法该如何选择呢?着取决于上下文。可以用数组类型创建构造器引用。public class Main { public static void main(String[] args) { Integer[] integers = new Integer[]{1, 2, 3, 4, 5, 6}; //1.原创 2020-05-10 00:44:42 · 444 阅读 · 0 评论 -
普通方法引用
普通方法引用public class Main { public static void main(String[] args) { //匿名内部类 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("hello world!"); }原创 2020-05-10 00:44:14 · 191 阅读 · 0 评论 -
函数式接口
函数式接口什么是函数式接口?只有一个抽象方法的接口即为函数式接口,举个例子,Runnable就是一个函数式接口:package java.lang;@FunctionalInterfacepublic interface Runnable { public abstract void run();} 为什么要强调只有一个抽象方法?接口中的所有方法不都是抽象的吗?接口可能声明Object类的方法,如toString或clone,这写声明有可能让方法不再是抽象的。(Java AP原创 2020-05-10 00:43:41 · 134 阅读 · 0 评论 -
lambda表达式
lambda表达式为什么引入lambda表达式lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。在解释java为什么引入lambda表示式之前,不妨先回想一下,之前我们是怎么实现代码块的传递的?案例1 实现定时指定任务package learnspring.learnspring;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;impor原创 2020-05-10 00:43:09 · 147 阅读 · 0 评论 -
序列化与serialVersionUID
序列化与serialVersionUID存储一个对象时,对象所属类的描述信息也必须存储。类的描述信息包括:类名序列化版本ID(serialVersionUID)描述序列化方法的标志集对数据域的描述serialVersionUID相当于类的“指纹”。serialVersionUID是通过对类、超类、接口、域类型和方法签名按照规范方式排序,然后将安全散列算法(SHA)应用于这些数据而...原创 2020-05-08 03:06:38 · 653 阅读 · 0 评论 -
为什么Java浮点类型无法精确表示0.1
为什么Java浮点类型无法精确表示0.1我们知道,十进制小数转二进制的方法为“乘2取整,顺序排列”,下面看两个实例:计算0.625的二进制表示0.625 × 2 = 1.25 ...... 10.25 × 2 = 0.50 ...... 00.50 × 2 = 1.00 ...... 10.000.625 = (101) B计算0.1的二进制表示0.1 × 2 =...原创 2020-05-07 18:58:51 · 685 阅读 · 0 评论 -
Java浮点类型精度问题
Java浮点类型精度问题public static void main(String[] args) throws Exception { float a = 1.0f - 0.9f; float b = 0.9f - 0.8f; System.out.println(a == b);//false Float c = a; Float d = b;...翻译 2020-05-07 17:42:45 · 210 阅读 · 0 评论