自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (1)
  • 收藏
  • 关注

原创 springboot 文件下载

【代码】springboot 文件下载。

2026-09-28 14:04:27 224

原创 java group by常见用法

上面五个全是reducing的特例。如果业务上要的不是简单加减,而是自定义合并逻辑(比如字符串拼接、复杂加权),用reducing// 找薪资最高的员工a : b));// 求和(identity 是初值,相当于 stream().mapToInt().sum())

2026-08-28 15:58:21 214

原创 maven多版本包导致java.lang.NoClassDefFoundError

发生这种说明是maven某个依赖版本有多个依赖版本,应剔除最近引入的。1.先搜索一下ZipEncodingHelper这个类位于哪个依赖包下。2.根据类找到在commons-commpress。一般情况会选择把最新引入的那个排除掉。会找到多个,如何判断取哪个。2.在idea工具里。2.具体情况具体而定。

2026-07-31 14:36:28 212

原创 idea相关设置

常用插件更改设置在安装目录下如如图:

2026-07-15 09:54:43 251

原创 讲讲 Redis 集群为什么只有 0 号数据库?

Redis Cluster 只支持,所有 key 通过 CRC16 落到槽位,而槽位分片是整个集群的数据一致性基础。,会导致相同 key 在不同 DB 中产生不同槽位,使节点无法判断 key 的真正归属。,迁移需要处理所有 DB,甚至槽位元数据会无法维护。。多数据库需求应通过来实现,不推荐使用 Redis 的 DB 概念。Redis 集群(Cluster 模式)之所以只支持 0 号数据库,根本原因在于其与存在设计上的冲突。在单机版 Redis 中,SELECT。

2026-03-01 15:48:15 567

原创 mac生效的终端查看

执行确认是zsh。打开或创建 ~/.zshrc文件。在里面写入你的 Maven 配置(例如和执行使其立即生效。

2026-02-25 16:20:03 412

原创 spring事务控制

【代码】spring事务控制。

2026-02-12 09:29:47 139

原创 Java方法返回多个值

Triplet (三个元素)Quartet (四个元素)Quintet (五个元素)Sextet (六个元素)Septet (七个元素)Ennead (九个元素)Decade (是个元素)Octet (八个元素)Unit (一个元素)Pair (两个元素)

2025-12-30 09:42:36 186

原创 mybatis ognl表达式在3.5.6版本以上移除?

【代码】mybatis ognl表达式在3.5.6版本以上移除?

2025-12-29 10:50:00 156

原创 java 分割字符串

【代码】java 分割字符串。

2025-12-11 10:31:42 133

原创 flowable sql打印

【代码】flowable sql打印。

2025-11-21 09:40:05 447

原创 mybatis mapper内部类的使用

mybatis是支持内部类。

2025-11-03 16:09:43 128

原创 springMvc

处理器适配器是适配controller和servlet的关联,然后controller(handler)又是各种不同的请求,但是servlet底层都是固定的request和response处理。MVC容器初始化时,处理器映射器mapping注册是通过后置处理器来完成的,实现了InitializingBean接口。MVC 进行进行容器初始化,并且将IOC阶段的web容器作为当前容器的父容器,因为MVC实例。先处理拦截器中的前置处理操作,如果前置处理返回false,那么直接调用拦截器的最终通知。

2025-10-26 13:18:44 429 1

原创 Kafka的概念

2、消费的原理:segment(topic+分区) + index(offset)+二分查找+顺序查找。基于时间:默认是保存7天 ----》----log.retention.hours=168。kafka元数据是保存在zookeeper服务器节点上的(znode),包括topic,分区属性。生产者Producer,消费者(组),kafka节点(集群),zookeeper节点(集群)Partition:topic分区,比如订单分为已支付,未支付,已发货,待发货。

2025-10-26 13:17:58 393

原创 maven mvn 安装自定义 jar 包

sqljdbc4-3.0.jar 是连接 Microsoft SQL Server 数据库比较旧版本的一个 jar 包,线上的 maven 仓库都没有收录,因此,下载到这个 jar 包后,只能手动通过 mvn install 命令安装。格式:mvn install:install-file -Dfile=.jar -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar。-Dfile=.jar 文件绝对路径。

2025-10-09 11:12:00 542

原创 java 读文件(分离字符串成sql)

【代码】java 读文件(分离字符串成sql)

2025-09-03 14:25:40 122

原创 Apache Commons ConvertUtils

对于框架不支持的特殊类型(如枚举、自定义日期格式),需注册自定义转换器:// 注册枚举转换器(字符串转枚举)

2025-09-01 15:29:21 550

原创 easyexcel流式导出

EasyExcel 支持流式导出,这是它的一个重要特性。流式导出可以有效解决大数据量导出时的内存溢出问题。

2025-07-24 14:41:46 1067 2

原创 何实现在上亿条的用户搜索日志中找到Top100的关键词

(2)创建一个长度为n(如2048)的哈希表数组,用来统计每个小文件中关键词出现的频率。服务端开启多线程并行遍历大文件切割出来的小文件,然后对每个用户搜索的关键词进行哈希取模运算,通过计算的结果将关键词统计到哈希表数组中。(1)将用户搜索的日志文件(一个大文件)切割成若干个小文件(如设置每个小文件大小为512KB)(3)使用小顶堆(小顶堆适用于解决统计频率最高的TopN的问题)统计前x位的关键词。(1)使用“分而治之”的思想,将大文件分割为小文件(可以使用哈希取模法切割文件)。

2025-07-24 09:52:56 254

原创 ​​Mermaid和常用语法

流程图

2025-07-24 09:14:14 1635

原创 敏感数据加密后如何实现模糊查询

内存解密方案的优点是简单方便,缺点是每次将加密后的数据整表加载到内存中然后解密再匹配,随着业务的发展,业务数据量会越来越大,那么很容易造成OOM。如果在数据库里面的数据已经加密了,此时我们将这些数据查询到内存中,然后进行解密操作,最后在解密后的数据中进行模糊查询来筛选出符合条件的数据。如果要查询186手机号开头的用户信息,首先通过186手机号在明文表中查询对应的用户id,然后通过用户id去用户表中查询对应的用户数据。(2)如果支持敏感字段的模糊检索,那么加密的密文随原文长度增长而增加。

2025-07-22 09:45:08 1113

原创 Cookie、Session、Local Storage和Session Storage区别

(5)Session保存在服务端,常用于用户认证(存储用户的登录状态,判断用户是否已经登录)、购物车功能(存储用户在购物车中的商品信息)、记录用户偏好设置(存储用户的个性化设置,如语言、时区等)、保存游戏状态(在游戏中存储用户的进度和状态)等场景,但是使用 Session时需要考虑安全性问题(如XSS攻击、CSRF攻击),确保用户数据的安全。Session由服务端生成,它代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的,Session对象用来存储特定用户会话所需的信息。

2025-07-21 15:58:16 943

原创 flowable表结构

此表和ACT_RE_DEPLOYMENT是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_REPROCDEF表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY表内的一个资源文件和PNG图片文件。1.全局参数, 默认三个参数next.dbid, IdGenerator区间, schema.history, 自动执行sql历史, schema.version, 当。记录机制基于Activiti引擎的事件机制的一般用途,并默认禁用。

2025-07-16 15:33:39 748

原创 smart-doc的接入

这个文档工具在目前我所经手的项目中广泛之使用,如图,需要的功能基本都有了🥰。

2025-07-15 14:09:00 897

原创 springboot 多数据源启动报错

报错内容如下:解决方式如下:})...

2025-07-11 10:41:05 310

原创 SpringBoot中如何引入第三方的SDK

在项目中经常会遇到使用第三方SDK情况,即就是第三方生产的jar包,但是这个不能上传到maven仓库中,由于我们的项目需要依赖到这个SDK,那么我们可以通过以下的几步就可以轻松的引入SDK到我们项目中。(1)三方的jar包放到项目的src/main/resources目录下。(2)添加maven依赖。

2025-07-09 17:43:30 521

原创 git 报错fatal: refusing to merge unrelated histories

等等,就是这样完美的解决咯!

2025-07-09 14:42:43 252

原创 Spring 为何需要三级缓存解决循环依赖,而不是二级缓存

循环依赖处理示例分析(AService ↔ BService):1、AService实例化,其ObjectFactory被存入三级缓存2、 AService开始属性填充,发现需要BService3、 触发BService加载流程:3.1、 BService实例化,其ObjectFactory存入三级缓存3.2、 BService开始属性填充,发现需要AService。

2025-07-03 11:18:33 1331

原创 idea多线程编译设置

设置下线程数。

2025-07-03 09:28:31 326

原创 JVM的场景优化

这么做的结果就是,过了一段时间后,OOM依然会出现。死锁并没有第一种场景那么明显,web应用肯定是多线程的程序,它服务于多个请求,程序发生死锁后,死锁的线程处于等待状态(WAITING或TIMED_WAITING),等待状态的线程不占用cpu,消耗的内存也很有限,而表现上可能是请求没法进行,最后超时了。混合回收的基于复制算法的,所以大对象的复制会比较耗时,如果某个老年代的Region超过85%的对象是存活的,那他不会被回收,通过 -XX:G1MixedGCLiveThresholdPercent 设置。

2025-07-02 15:26:07 749

原创 flowable工作流的学习demo

需要注意的是,Authentication.setAuthenticatedUserId(currentUserId) 方法设置的当前用户ID在任务完成时对历史表产生影响是在任务监听器中触发的,例如在 “complete” 事件的任务监听器中执行了设置当前用户ID的操作。通常在开启一个新的流程实例、完成任务或者进行其他涉及用户身份的操作时,我们可以通过 Authentication.setAuthenticatedUserId() 方法设置当前用户的身份信息,以保留用户与相应操作的关联。

2025-06-14 22:58:51 840

原创 idea配置迁移

注意:最重要一点,如果安装idea时经过设置的,最好把原先\Roaming\JetBrains\IntelliJIdea2022.3.2复制到D:/software/IntelliJ IDEA 2022.3.2/config、\Local\JetBrains\IntelliJIdea2022.3.2复制到D:/software/IntelliJ IDEA 2022.3.2/system里面的数据原封不动的复制一份到目标目录,然后重启idea就可以了。更改IDEA的默认设置目录。

2025-06-14 20:09:51 549

原创 Java并发容器框架

/ node数组最大容量:2^30=1073741824// 默认初始值,必须是2的幕数//数组可能最大值,需要与toArray()相关方法关联//并发级别,遗留下来的,为兼容以前的版本// 负载因子// 链表转红黑树阀值,> 8 链表转换为红黑树//树转链表阀值,小于等于6(tranfer时,lc、hc=0两个计数器分别++记录原bin、新binTreeNode数量,<=UNTREEIFY_THRESHOLD 则untreeify(lo))

2025-06-10 14:09:42 1088

原创 高并发下的计数器,为什么阿里不推荐使用 AtomicLong

LongAdder 是 JDK1.8 由 Doug Lea 大神新增的原子操作类,位于 java.util.concurrent.atomic 包下,LongAdder 在高并发的场景下会比 AtomicLong 具有更好的性能,代价是消耗更多的内存空间。LongAdder 是 Google 开源的一个高性能计数器实现。它采用了一种分段锁的策略,将一个 long 型的变量分割成多个 16 字节的段,每个段都使用一个独立的 AtomicLong 进行更新。

2025-06-04 14:14:38 1009

原创 常用工具网站

https://github.com/dail8859/NotepadNext/releases

2025-06-04 13:33:48 149

原创 synchronized实现原理

synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法进入临界区,同时还可以保证共享变量的内存可见性。

2025-05-30 13:45:18 720

原创 springboot文件上传下载

SpringBoot中,类型可以精确控制HTTP响应,为文件下载提供完善的HTTP头信息。• 完全控制HTTP响应和头信息• 适合各种资源类型的下载• 支持动态生成的文件下载• 需要精确控制HTTP响应的场景• 动态生成的文件下载• 自定义缓存策略的文件服务。

2025-05-30 11:17:41 785

原创 多线程的一些概念

两个或两个以上的线程持有不同系统资源的锁,线程彼此都等待获取对方的锁来完成自己的任务,但是没有让出自己持有的锁,线程就会无休止等待下去。线程竞争的资源可以是:锁、网络连接、通知事件,磁盘、带宽,以及一切可以被称作“资源”的东西。如上图所示,Thread-1持有资源Object1但是需要资源Object2完成自身任务,同样的,Thread-2持有资源Object2但需要Object1,双方都在等待对方手中的资源但都不释放自己手中的资源,从而进入死锁。

2025-05-29 11:29:18 748

原创 ReentrantReadWriteLock读写锁

读取锁和写入锁都支持锁获取期间的中断;Condition支持。仅写入锁提供了一个 Conditon 实现;读取锁不支持 Conditon ,readLock().newCondition() 会抛出 UnsupportedOperationException。

2025-05-28 14:12:54 394

原创 volatile底层原理详解

Java语言规范对于volatile定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致性地更新,线程应该确保通过排它锁单独获得这个变量。首先我们从定义开始入手,官方定义比较拗口。通俗来说就是但是它并不能保证多线程的原子操作。这就是所谓的线程可见性。。

2025-05-28 13:50:12 784

redis复习资源.讲解redis

redis复习资源.讲解redis

2025-06-01

算法与数据结构java版本

java版本的算法与数据结构leetcode习题

2025-05-23

2024Leetcode最新解题笔记

2024Leetcode最新解题笔记

2024-04-18

阿里巴巴java性能调优实战手册

阿里巴巴java性能调优实战手册

2022-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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