- 博客(35)
- 收藏
- 关注
原创 Java线程池:ThreadPoolExecutor原理解析
本文介绍了线程池的基本概念、主要参数、工作流程,以及 execute() 方法的源码分析,此外,还讨论了在实际应用中可能遇到的陷阱和问题。
2024-11-15 17:21:28
1029
原创 log4j日志打印导致OOM问题
某天压测,QPS压到一定值后机器就开始重启,出现OOM,好在线上机器配置了启动参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/**/**heapdump.hprof。将dump文件下载到本地,打开Java sdk bin目录下的jvisualvm工具,导入dump文件,发现有非常多的char[]对象,于是开始分析原因。
2024-06-10 19:10:37
1667
4
原创 数据迁移的一般流程与实战
在面对数据整合、升级系统、数据优化等需求时,我们往往需要进行数据迁移。在此过程中,我们要确保数据的精确迁移,就要对数据的完整性、一致性和有效性进行全面考虑,以确保数据的准确和可信。因此,建立一套规范的数据迁移流程就显得尤为重要,这不仅有助于保障数据的质量和安全,也有助于提升项目的整体效率和质量。
2024-01-12 16:16:38
3991
原创 设计模式——观察者模式
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2022-11-01 09:18:19
133
原创 访问Api报404——@SpringBootApplication和@ComponentScan
访问Api报404——@SpringBootApplication和@ComponentScan
2022-08-09 20:09:38
480
原创 Mybatis-Plus分页查询total始终为0
SpringBoot + Mybatis-Plus,使用分页查询,records有记录,total却始终为0。
2022-08-09 19:59:40
9020
4
原创 Mybatis-Plus报错Not Found TableInfoCache
SpringBoot + MyBatis-Plus,报错Not Found TableInfoCache。
2022-07-02 12:41:29
2485
原创 ArrayList非线程安全记录
一、问题描述线上一个查询服务,偶尔会报一次查询出来的结果集合包含null。二、问题排查在多线程查询过程中,使用了ArrayList,多线程查询出来后执行ArrayList.add()。然而ArrayList并不是线程安全的集合,会导致null值出现。三、问题复现import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.concurrent.Completab
2022-04-14 10:00:24
301
原创 Caffeine缓存不刷新问题
一、先看代码缓存管理器配置:import java.util.concurrent.TimeUnit;import org.springframework.cache.CacheManager;import org.springframework.cache.caffeine.CaffeineCacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.ann
2022-04-14 09:48:58
3457
原创 JSONObject出现重复引用$ref
现象保存的时候红框里内容是一样的,结果JSON.toJSONString的时候第二个就变成了$ref原因JSONObject 默认开启引用检测,重复引用对象时会被$ref代替,返回的json对象出现$ref{对象,地址值,}。解决办法String json = JSON.toJSONString(data,SerializerFeature.DisableCircularReferenceDetect);...
2022-03-29 17:29:13
1757
原创 Java学习资料
Javadoop:https://javadoop.com/公众号【Java学习录】:https://mp.weixin.qq.com/s/xqDPttr53rxLBi8t8kIQDgbugstack 虫洞栈:https://bugstack.cn/
2022-03-08 22:25:59
168
原创 SpringBoot+MyBatis-Plus启动报错MybatisPlusProperties
SpringBoot+MyBatis-Plus启动报错如下***************************APPLICATION FAILED TO START***************************Description:Parameter 1 of constructor in com.baomidou.mybatisplus.autoconfigure.IdentifierGeneratorAutoConfiguration$InetUtilsAutoConfig r
2022-02-22 19:39:16
6074
原创 MultipartFile文件上传报错
MultipartFile文件上传报错Postman上传文件访问接口,直接报错了。报错如下:Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
2021-12-02 14:49:28
1163
2
原创 【问题记录】MyCAT坑——非空字段插入null却不报错
MyCAT非空字段插入null却不报错【问题】:MySQL字段定义为 not null default ‘’; 在项目中执行插入,插入的字段是null,线下却没报错,线上报错。【解决】:可能线下线上分库分表插件MyCAT配置不同,导致SQL执行有差异。在线下通过ShardingSphere+MySQL实现分库替换掉MyCAT,就正常抛出了异常。【另外】sql_mode不同,也可能导致不同环境相同SQL执行有差异。sql_mode文档:Server SQL Modes,MySQL 5.7 模式(SQL
2021-11-24 19:57:38
1370
原创 ShardingSphere+MySQL实现分库
ShardingSphere + MySQL实现分库一、ShardingSphere简介ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。sharding-jdbc 定位为轻量级Java框架,在Java的JDBC层提供的额
2021-11-22 23:13:18
1660
原创 Es 查询结果_score调整
一、问题背景:背景:语文老师反馈试题查询的结果不理想。原因:正常应该靠前的题目,搜索得分比较靠后,没有在前几页显示出来。一、Es默认的记分方式使用Es时,查询出来的文档排序依据是_score,这个_score是如何计算的可以通过添加 “explain”: true 条件来查看。它的计算原理是基于词频/逆向文档频率(TF/IDF),详情参考官方文档:相关度评分背后的理论二、此种方式的弊端Es默认的词频/逆向文档频率(TF/IDF)评分方式,对于出现次数较少的重要关键字提取效果不佳,可能会导致一些
2021-08-26 19:11:26
4433
原创 MySQL学习笔记
MySQL学习笔记1、索引包含的内容:2、/索引和实际的数据都是存储在磁盘的,只不过在进行数据读取的时候会优先把索引加载到内存中。/(存储引擎是MEMORY的时候是这样处理)3、存储引擎:不同的数据文件在磁盘的不同组织形式。4、操作系统与MySQL5、MySQL使用B+树的原因:5.1、不使用Hash表的原因:需要比较好的Hash算法,如果算法啊不好的话,会导致Hash碰撞,Hash冲突,导致数据三裂不均匀。当需要进行范围查找的时候需要挨个遍历,效率比较低。MEMORY存储引擎支持的是H
2021-07-05 10:05:47
174
原创 Java后端返回Long类型数据与前端展示不一致(精度丢失)
问题描述接口查询数据返回,有一个Long类型字段,postman返回与数据库一致(= 63354019632316416),swagger返回不一致(= 63354019632316420),chrome查看返回数据也不一致(= 63354019632316420)。原因Java中Long类型可以表示的最大值是2 ^63-1,而JS的基础类型Number可以表示的最大值是 2 ^53。所以后端返回的数据大于Number能表示的最大值时无法正确解析,出现精度丢失的问题。解决方案1、将返回给前端的Lo
2021-06-28 15:57:04
6228
1
原创 场景题之最快返回结果
场景题之最快返回结果问题描述输入中文,最快从百度翻译、谷歌翻译、有道翻译获取结果返回。代码实现思路:采用CompletableFuture实现,多个CompletableFuture可以串行执行,也可以并行执行。其中anyOf()方法只要任意一个返回结果,就完成操作。import java.util.concurrent.CompletableFuture;import java.util.concurrent.LinkedBlockingDeque;import java.util.conc
2021-06-16 19:00:50
167
原创 Arrays.asList()记录
https://blog.youkuaiyun.com/kzadmxz/article/details/80394351
2021-05-19 22:07:23
64
原创 SimpleDateFormat线程不安全
SimpleDateFormat线程不安全示例SimpleDateFormat在多线程执行中,会出现执行结果和预期结果不相符的情况。看如下示例:import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class SimpleDateFormatExample {
2021-05-19 21:45:44
104
原创 两个数字m、n,输出[1,m]范围内所有和为n的组合
题目输入两个数 m、n,输出 [1, m] 范围内所有和为 n 的组合。样例输入:5, 3样例输出:[[1, 1, 1], [1, 2], [3]]说明:如果要求组合内数字不重复,可以用 getResult(i+1, end, target-i, temp);代码import java.util.ArrayList;public class Solution{ private static ArrayList<ArrayList<Integer&.
2021-05-13 12:11:12
639
原创 场景题——订阅商品
一道面试题,欢迎大家指正题目同时有N个商品(用long类型的商品id表示),每个商品都可以被任何一个用户(long类型的用户id)订阅,每被订阅一次,该商品的订阅数加1,同一个用户对同一个商品只能订阅一次 编辑写一个类,用3个方法提供以下功能(这3个方法都是在单机多线程环境下调用):1)为指定的用户id订阅指定的商品id2)返回所有商品的订阅总数3)根据商品ID返回这个商品的订阅数代码import java.util.Optional;import java.util.concurr
2021-05-13 09:56:37
463
3
原创 数据权限——Mybatis拦截器实现
一、需求背景介绍1、需求介绍需要实现数据权限管理,包含角色:普通用户、组长、管理员。其中普通用户只能看到自己创建的项目,组长能看到自己所管理的普通用户创建的项目,管理员能看到所有项目。相关表为:项目表(包含责任人owner字段,owner所属组group字段)、用户表(包含组id)、组长信息表、管理员表。2、方案设计采用Mybatis拦截器,在请求查询sql后拼条件。(1)如果当前用户为普通用户,查询项目时拼上条件owner=user;(2)如果当前用户为组长,查找当前user所管理的组list
2021-05-08 23:00:18
1007
原创 Java遍历二叉树(前中后序递归、非递归遍历,层序遍历)
/*二叉树遍历递归、非递归*/import java.util.Stack;public class TreeTraversal { public static void main(String[] args) { TreeNode node = new TreeNode(0); TreeNode node1 = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNo
2021-05-06 22:07:59
121
原创 Java面试题整理
Java面试基础整理转自简书作者——我没有三颗心脏Java 面试知识点解析(一)——基础知识篇Java 面试知识点解析(二)——高并发编程篇Java 面试知识点解析(三)——JVM篇Java 面试知识点解析(四)——版本特性篇Java 面试知识点解析(五)——网络协议篇Java 面试知识点解析(六)——数据库篇Java 面试知识点解析(七)——Web篇...
2021-04-15 10:43:57
222
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人