double使用浮点数导致的精度显示问题 1、业务描述最近有个业务需求,需要给门店做个大屏展示业务功能,推广业务使用。其中有个字段是返回一个2位小数的比例。例如使用率 use=2.2%2、问题描述有一天大屏显示突然出现了2.
idea package打包执行@Test代码问题 1、问题描述今天执行idea打包,程序一直报错,查看错误,是因为@Test中有一下测试的insert用例,其中有些是mysql添加不可重复的限制的,打包时发现执行了@Test代码,导致程序出错。2、问题解决定位到问题就好解决了,直接打包时不执行test代码就行,下面是查询到的一位博主的解决思路,使用第二中方案,已经打包成功。https://blog.csdn.net/qq_38122518/article/details/106283548...
解决tomcat启动失败问题排查 一、问题介绍springmvc项目本地junit没有问题,但是本地Tomcat启动报错,查询全是servlet的原因,但是检查后,发现web.xml中配置的servlet配置没有问题。05-Feb-2021 13:45:30.828 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apac
mysql 水平分表,建表 原先mysql 水平分表是dba创建的,自己没有负责过,现在要将遇到一个需要创建分表的需求,创建分表时遇到了一些问题,例如将表名为 table_A的表分表256张分表,如何快速创建?一、创建table_A的表CREATE TABLE `table_A` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`)...
mybatis代码生成 项目中使用mybatis代码生成工具生成mapper和entity;记录下步骤:1、配置jdk环境自行百度2、MyBatis Generator数据库文件 config配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://myb
谷歌Guava Cache的使用 最近在项目中看到同事使用了Guava Cache;对这个不是特别了解,记录学习。1、依赖<!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version&
java8新特性-Stream java8有两大新特性,一个是lambda,一个是Steam,记录一下Stream表达式的学习。1、Sream简单介绍Srream用来处理集合或者数组的流,可以进行查找、删选、映射等操作,可以替换for循环。2、注意点①Stream 自己不会存储元素。②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行,也被称为惰性求值。3、Sream使用Stream使用分为3步骤。①、创建Sr
Lombok @Builder,如何使用泛型 最近需要项目中使用@Builder,创建对象就不能直接new了,使用泛型时遇到问题。@Data@Builderpublic class Page<T> { /** * 总数 */ @Builder.Default private Integer total = 0; /** * 详细行数据 */ private List<T> rows;}创建Page对象时编译报错,那如何使用
Java8新特性-lambda表达式 现在学习Java8新特性,总结一下lambda表达式。1.函数式接口只包含一个抽象方法的接口,称为函数式接口。Java8内置函数式接口:java.util.function包下的接口。2.新运算符 -> @Test public void test2(){ Consumer<String> consumer = x ->System.out.println(String.format("有参数,无返回 ..
java线程池拒绝策略详解 java线程池共有四种拒绝策略。public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<
JVM导出dump文件 1.jvm启动时增加的参数#出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError#生成堆文件地址:-XX:HeapDumpPath=/home/liuke/jvmlogs/2.查看内存状态 jmap -heap 进程ID3.查看JVM堆中对象详情占用情况 jmap -histo 进程ID4.导出整个JVM 中内存信息,可以利用其它工具打开dump文件分析,例如jdk自带的visualvm工具 jmap -dump:f...
HashMap为什么线程不安全 学习java集合时,老师都会说下hashMap是线程不安全的;现在就详细说下为什么不安全?1.put操作造成线程不安全这个问题比较好想象,比如有两个线程A和B,首先A希望插入一个key-value对到HashMap中,首先计算记录所要落到的桶的索引坐标,然后获取到该桶里面的链表头结点,此时线程A的时间片用完了,而此时线程B被调度得以执行,和线程A一样执行,只不过线程B成功将记录插到了桶里面,假设线程A插入的记录计算出来的桶索引和线程B要插入的记录计算出来的桶索引是一样的,那么当线程B成功插入之后,线
CAS原理 最近有次面试,问到CAS的底层实现原理,原先看博客和知乎上都是说使用硬件来实现比较和替换的原子性;被毒打了;现在记录一下。1.CAS操作是通过sun包下Unsafe类2.CAS的原理Unsafe中对CAS的实现是C++。CAS的实现和操作系统、CPU都有关系Linux的X86下主要是通过cmpxchgl这个指令在CPU级完成CAS操作的,但在多处理器情况下必须使用lock指令加锁来完成。从这个例子就可以比较清晰的了解CAS的底层实现了。...
JVM参数总结 1、堆栈配置相关-Xmx3550m: 最大堆大小为3550m。-Xms3550m: 设置初始堆大小为3550m。-Xmn2g: 设置年轻代大小为2g。-Xss128k: 每个线程的堆栈大小为128k。-XX:MaxPermSize: 设置持久代大小为16m-XX:NewRatio=4: 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。-XX:SurvivorRatio=4: 设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Su
解决Linxu cpu和内存高的过程 同事新开发了一个程序,原先在华为云上运行的时候占得CPU和内存比较高,经理让我定位下问题。经检查是线程池任务中阻塞队列中任务占用太多的原因。1.top查看程序的PID、内存和CPU的使用情况。 查看top后,PID=55582.将5558转为16进制。利用window自带的计算器,将5558转为16进制后为15B63.利用jvm自带的jstack导出堆栈信息。 jstack -l 5558 > jstack.log5.分析jstack文件,发现好多线程处于wa...
分布式垃圾收集DGC 1、DGC采用引用计数法判断对象已死。2、当使用RMI远程调用时;只有当远程对象的本地引用和远程引用同时失效;才会进行垃圾回收。当客户端获得远程对象的存根时;会定期向服务器发租约通知;告诉服务器自己持有远程对象的引用了。 因为租约通知有时效的;所以需要客户端定时发出新的租约通知。如果客户端不在发送租约通知;导致过期;服务器就会认为远程客户端不在持有该对象。...
mysql函数和知识点收集 1、mysql函数https://blog.csdn.net/sinat_38899493/article/details/787104822、mysql知识点https://www.cnblogs.com/hsmwlyl/p/10719152.html