自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 《刻意练习:如何从新手到大师》——读书笔记

《刻意练习:如何从新手到大师》——读书笔记

2023-05-20 23:29:38 382

原创 《华为项目管理法》——读书笔记

《华为项目管理法》——读书笔记

2023-05-02 14:10:17 1053

原创 设计模式——享元模式

享元模式:运用共享技术有效地支持大量细粒度的对象。

2022-11-24 20:54:36 171

原创 设计模式——观察者模式

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

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

原创 MySQL事务简介

MySQL事务简介

2022-06-01 23:32:10 207

原创 inner join执行计划变了

同一个连接查询inner join,由于某一个条件in里多了几个值,执行计划变了

2022-06-01 23:10:07 349

原创 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

原创 《MySQL是怎样运行的》——读书笔记

《MySQL是怎样运行的》——读书笔记

2022-02-17 20:08:38 384

原创 Java虚拟机资料整理【更新中】

Java虚拟机资料整理

2021-12-10 12:57:16 316

原创 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

原创 《代码整洁之道》——读书笔记

《代码整洁之道》——读书笔记

2021-11-10 10:14:09 130

原创 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

原创 Java线程池

Java线程池参考资料:[1] Java并发编程:线程池的使用[2] 十问十答:你真的了解线程池吗?

2021-06-14 18:13:00 1139 1

原创 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关注的人

提示
确定要删除当前文章?
取消 删除