自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(174)
  • 收藏
  • 关注

原创 【spring】spring常用接口分析,看完等效提升几年工作经验

我们知道spring有很多对外提供的接口,在使用时会不会分不清呢?什么时候该用什么接口,什么接口是干嘛用的,如果缺乏相关知识的整理或思考,很多时候我们的技术都是止步不前的。本文博主盘点一些spring中的常用接口:

2024-02-26 15:11:06 1971 3

原创 【java】 java开发中 常遇到的各种难点 思路方案

作为一个开发人员 总会遇到各种难题 本文列举博主 遇见/想到 的例子 ,也希望同学们可以在评论区举例交流 共同进步~

2023-03-10 11:54:48 26692 7

原创 【linux】记一次linux(centos)被暴力破解事件,从修改linux默认登录端口为普通账号授权到linux基础操作命令

/var/log/btmp 记录登录失败信息/var/log/secure 一般用来记录安全相关的,授权或登录信息。如果上述两个文件很大,或者大小一直在增长,说明有人在 爆力破解密码。基本命令及教程:# 查看阶段------------------------------------------------------------------------------------# 列出登入系统失败的用户相关信息lastb # 查找恶意登录的前十个IPsudo lastb | awk '

2021-09-07 10:58:13 2703 5

原创 【spring】Spring事务失效分析,事务回滚失败原因,事务的传播机制

1.第一种情况 :调用方加上@Transactional 注解,被调用方未加上注解 (同一个service类)Exp:@Transactionalvoid methodA(){// insert table1methodB(Object obj);}void methodB(){// insert table2}结论:methodB()出现异常,抛给methodA,A中捕获到异常,进行回滚处理,table1,table2都未插入2.第二种情况:调用方未加上注解,被调用方加上注解(同

2021-01-07 15:41:30 5720 6

原创 【stream流】jdk8特性 list stream流操作合集,optional操作合集

jdk抢先版都出到23了 , jdk8的stream流用法 熟悉了嘛?

2021-01-04 14:30:05 3210 1

原创 【idea】idea教程 小技巧总结 idea有哪些强大的功能 总有一个你能用上

注意: 不同idea版本 菜单、目录可能有细微差别,自己稍加分析都能找到1.查看代码历史版本鼠标在需要查看的java类 右键 找到Local History >> Show History 点开即可看到历史版本,常用于自己忘记代码改了哪些内容 或需要恢复至某个版本2. 调整idea的虚拟内存:尽管本质都是去改变 .vmoptions配置文件,但推荐使用Change Memory Settings去调整,选择Edit Custom VM Options 或者在本地磁盘目录更改,很可能造成

2020-10-22 11:00:02 12331 8

原创 【安卓】开发一个读取文件信息的简易apk

场景介绍:最近博主更新博客频率变少了 因为周末都在沉迷风光摄影,随着照片拍的越来越多 诞生了写一个简易安卓应用的想法。摄影和移动端应用是如何发生碰撞的呢?因为拍的照片多,照片后期+拍摄技巧 感觉到了一定的瓶颈 再往上可能就要换镜头了,所以博主想知道自己使用什么焦段频率最多 根据自己的拍摄习惯再决定要不要换其它焦段的镜头。

2026-01-22 15:53:52 795

原创 【java】1900-01-01 00:00 时间偏移了05分43秒 变成1899-12-31 23:54:17

问题描述:在spring boot jpa 2.0.x 版本中(2.0.3 、2.0.8等版本均存在此问题),发现插入Localdatetime字段 值为1900-01-01 00:00的数据,入库后产生了偏移,【mysql datetime格式】 时间是1899-12-31 23:54:17。在jdk8的一些版本中 可在%java_home%/jre/lib 目录下看到tzdb.bat。下载数据查看发现 在早期 上海并不是使用的标准+8时区 ,而是 +8:05:43。debug日志输出并无异常。

2025-10-23 10:19:48 268

原创 【mysql】数据误删了? 关键时刻可以通过binlog挽救

tips: 删除数据之前一定要备份好 养成好的习惯 数据库定期备份数据 远比学会使用binlog恢复数据更重要,binlog是最后一道防线 且非常非常麻烦。数据备份习惯:1.delete数据前 备份insert语句(只要不是老项目 基本都有逻辑删除字段),update数据前 备份回滚的update语句2. 批量改生产数据时,可以备份整个表的结构和数据 结构包括索引等3. 定期备份:可以通过定时mysqldump备份 + 备份binlog文件的形式有经验的同学可以评论区补充更多方便的方式。

2025-09-26 17:29:43 617

原创 【java】记一次优化代码效率实战复盘,接口如何从30min响应 降低至16s

背景介绍: 线上有一个excel导入功能 导入几万条数据 ,经过一系列的校验,校验通过后入库;【优化前】 耗时:半小时,堆内存占用(仅观察导入时期引起的堆内存峰值)1.5-1.7G;【优化后】耗时:16s, 堆内存占用 1.1-1.2G。

2025-07-07 18:22:27 454

原创 【spring】spring中的retry重试机制; resilience4j熔断限流教程;springboot整合retry+resilience4j教程

在调用三方接口时,我们一般要考虑接口调用失败的处理,可以通过spring提供的retry来实现;如果重试几次都失败了,可能就要考虑降级补偿了;有时我们也可能要考虑熔断,在微服务中可能会使用sentinel来做熔断;在单体服务中,可以使用轻量化的resilience4j来做限流或熔断。

2025-05-28 16:32:34 1262

原创 【mysql】mysql的高级函数、高级用法

mysql是最常用的数据库之一,常见的函数用法大家应该都很熟悉,本文主要例举一些相对出现频率比较少的高级用法(注:需注意mysql版本,大部分高级特性都是mysql8才有的)

2025-05-23 14:02:01 599

原创 【java】lambda表达式 呕心沥血讲解 由浅入深详细教程

本文全面介绍Java Lambda表达式的基础与高级用法。从基础语法开始,讲解无返回值、有返回值、有参与无参的Lambda写法,并演示如何简化代码。重点解析四大常用函数式接口的典型应用场景。随后结合集合操作展示Stream API与Lambda的配合使用,包括过滤、映射等常见操作。最后深入讲解CompletableFuture异步任务编排中的Lambda应用,分类说明不同任务处理方式。通过代码示例帮助读者理解Lambda在各种场景下的灵活运用,适合从新手到资深的Java开发者学习参考

2025-05-21 15:21:58 1010

原创 【idea】调试篇 idea调试技巧合集

之前博主写过一篇idea技巧合集的文章,由于技巧过于多了,文章很庞大,所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的,用好调试可以事半功倍。

2025-05-14 15:58:31 1434

原创 【线程池】线程池什么情况下会阻塞 复盘一次线程池任务不执行问题

tips: 生产事故难排查的原因 主要原因就是代码链路长,我们很多时候无法第一时间知道具体点在哪 每行代码都可能产生bug 需要有精准的排除不相关问题, 比如我们最开始怀疑就是事务问题,因为事务造成死锁 尤其在多线程环境中 是非常常见的,但是查询数据库状态并没有发现死锁,且mysql死锁一般日志也会有deadlock提示, 所以排除了是数据库的问题,才将思路转回线程池本身。此外,线程池没有执行任务,说明线程出了问题没有释放,比如数据库死锁了 事务一直没提交,比如连接池耗尽;

2025-04-28 11:32:23 766

原创 【mysql】mysql疑难问题:用例子解释什么是排它锁 当前读 快照读

A1:id是唯一的(唯一索引同理),当A线程插入id=1 的数据后,mysql会为它加上一把排它锁,当B线程企图insert的时候 会一直等待锁释放,假设线程A执行时间是6s 在6s后才将事务提交, 那么线程B在6秒后才会进入到catch模块 而不是立即抛出异常。spring中事务是和线程绑定的,假设有A线程和B线程 同时执行insert 方法,实际只会有一个插入成功,我们假设A执行成功了,B执行失败,B线程会进入catch模块 并查找数据库已有的数据。catch模块 事务B能获取到事务A提交的结果吗?

2025-04-18 15:53:33 473

原创 【redisson】redisson分布式锁原理分析

为什么要有分布式锁 分布式锁是基于什么延伸出来的?这个可以在博主首页搜索:超卖, 里面通过超卖例子说明分布式锁和传统锁的区别,本文重点阐述的是redisson的api使用及其源码分析。

2025-01-03 11:43:25 1340

原创 【git】git常用技巧教程 这可能是你见过最易懂的教程; 从入门到进阶 该掌握的不只有pull add commit push merge

git是许多开发同学天天都在用的工具,可能99%的时候 我们都只是在pull add commit push, 或许再加上checkout和merge;如果要自己承认不会用git,那可能会觉得十分羞耻,然而事实上,git有非常多的功能,不一定每个操作我们都能够记住和掌握的,没有什么丢人的,愿意不断拓展自己就是最好的,本文会举一些常见的场景进行讨论。

2024-12-06 18:21:22 952

原创 【spring】spring单例模式与锁对象作用域的分析

spring默认是单例模式,这句话大家应该都不陌生;因为绝大多数都是使用单例模式,避免了某些问题,可能导致对某些场景缺乏思考。本文通过结合lock锁将单例模式、静态变量、锁对象等知识点串联起来。

2024-11-21 17:26:42 791 1

原创 【excel】easy excel如何导出动态列

动态也有多重含义:例如表头第一列固定为动物,必定有第二列,且第二列可能为猫 也可能为狗;这是列数固定,列名不固定的场景;更复杂的场景则为 第二列可能为猫 可能为狗,第三列可能为熊,也可能没有第三列,这是列数、列名都不固定的场景;

2024-11-12 16:22:34 3899 7

原创 【spring】从spring是如何避免并发下获取不完整的bean引发的思考 什么是双重检查锁 什么是java内存模型

本文将通过简述spring是如何避免并发下获取不完整的bean,延伸出双重检查锁、volatile、JMM的概念,将这些知识点都串联起来;若发现错误,非常欢迎在评论区指出;csdn博主:孟秋与你。

2024-10-25 16:15:59 988

原创 【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU

本文简要浅析淘汰策略与工作中结合使用、选取,并非针对算法本身如何实现的。

2024-09-27 11:55:26 1112

原创 【线程安全】如何区分线程安全还是线程不安全? 一文解释清楚线程安全问题,解释什么是锁重用、锁竞争、分段锁

线程安全问题 是一个重难点,编程就是这样,有的时候自己无论如何苦思冥想也弄不明白,但如果有人指点一二就能豁然开朗,希望本文可以给各位同学带来帮助

2024-09-23 13:54:03 1348 1

原创 【script】java武魂技展示:在java中使用不同的脚本语言 一文体现java生态的强大

我们经常听到java强大在于它的生态,对于生态的理解我们一般可能想到的是spring家族、微服务那一套中间件;其实java生态的强大也体现在它能使用各种脚本语言,博主最近在项目中考虑使用脚本语言以达到动态效果,因此顺带例举了常用的脚本语言方式。

2024-09-20 10:35:43 1448

原创 【mysql】mysql查询机制 调优不止是索引调优

说到mysql调优 我们第一反应都是想到索引调优 应该这是最基本的 也是至关重要的;一般工作个两年 索引调优都可以掌握的八九不离十,相关数据结构特点也都能说个一二出来,所以本文重点是讲述其它机制。

2024-09-02 14:32:12 1487

原创 【springboot】springboot接口参数全局加解密,解决request内容修改后如何重新设置回去的问题

这个时候就需要打个断点调试了,博主经过调试后发现 最后是动态代理传的参改变了,servlet到controller层的过程中 虽然一开始确实是传的reqeust 但在某一步时 它去获取了parameterValues!我们先把锁打开后,往map里面修改了内容,还需要把锁关上, 我们看ParameterMap类的源码也能看到 它有很多地方是通过判断是否锁了 我们不能改变原来的逻辑。所以我们在过滤器中进行解密,并将request的值修改后传递,这样可以保证每个过滤器拿到的都是解密后的值。

2024-08-19 18:45:17 1934 3

原创 【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景

redis stream是redis5引入的特性,一定程度上借鉴了kafka等MQ的设计,部署的redis版本必须 >= 5本文主要讲的是思路,结合简单的源码分析(放心,无需深入大量源码);讲述在redis stream文档缺乏,网上资料欠缺,gpt回答不上来的情况下,博主是如何用两三天的时间 从没接触过redis stream 到分析完成了redis stream mq功能。博主始终认为 有明确的思路 才能知道什么代码是正确的 能复制拿来用,什么代码只是单纯跑起来demo的 绝对达不到生产级别。

2024-08-06 18:25:25 2936 7

原创 【redis】redis高可用 哨兵模式 一主二从三哨兵部署教程

哨兵模式:自动主从同步、自动选举主节点;基本可以满足大部分业务场景;在针对大规模数据和高并发请求的场景、数据不能丢失,才需要用到集群模式。本文教程基于redis3 , centos 8 stream操作系统,理论上来说 redis3也好 redis6也罢 都通用。

2024-07-31 18:23:59 1597

原创 【jdk】jdk11 jdk17 jdk21 springboot3 的新特性 虚拟线程创建方式

一般来说 除了jdk8时代 说jdk8的新特性是特指jdk8这一个版本的特性,之后例如jdk11 jdk17新特性 都是泛特性什么意思呢?比如jdk11新特性,一般是指jdk9——jdk11 这一个泛版本的所有新特性,就jdk9引入的 List.of Map.of等api 我们也统称是jdk11的新特性为什么我们很少听到jdk9,jdk10…等其它版本呢。

2024-06-21 17:16:27 2645

原创 【minio】linux集群部署minio,springboot整合教程,解决Response code: 502, Content-Type: null, body:问题

linux部署minio,java sdk调用操作minio教程

2024-05-22 10:52:18 1537

原创 【idea】idea插件 通过文档注释生成swagger,easyexcel注解

​实际场景:vo返回类或者excel导入导出实体类的代码 很多时候都是复制dto/do类进行修改的,而dto/do类基本都通过别的工具生成的 已经带好了文档注释 ,通过插件可以一键生成注解 注解value即为文档注释内容。当然,授人以鱼不如授人以渔 有需要的同学 可以在github搜索博主的项目 自行拓展其它注解(例如xmlelment等), 按照已有代码规范继承拓展 难度不大。实体类中 属性已有了文档注释,安装插件后 我们可以按alt+ins 选择生成swagger注解(或easy excel注解)

2024-05-15 14:04:48 1392 2

原创 【java】java中常用的代码技巧 教你如何编写优雅代码

博主之前写了一篇博客 :【java】 java开发中 常遇到的各种难点 思路方案上述博客主要描述的是该如何解决疑难场景,接下来博主带来姊妹篇,将针对用常规方式写出来的代码不太好看、效率不太高的场景 阐述该如何编写一些更加优雅的代码。

2024-03-21 16:20:44 1123

原创 【安卓】Android开发入门 你的第一个apk应用

一个入门的安卓应用,应用功能:打开百度首页。在实际应用中,我们可以将网址替换成我们自己的网页ip地址、域名等;这样就可以在手机端 无需手动输入网址, 直接打开网站

2024-03-13 17:03:14 7360

原创 【springblade】springblade(bladeX) 数据权限失效原因分析

最近博主在按照bladeX官方文档 配置数据权限 结果发现失效了,网上搜了一下没找到合适的答案,本着求人不如求己的精神,自己调试了一下发现了问题所在,也大致看了一下bladeX的权限逻辑。

2024-02-22 17:53:13 2849 1

原创 【spring】 ApplicationListener的使用及原理简析

ApplicationListener 是spring提供的一个监听器,它可以实现一个简单的发布-订阅功能,用有点外行但最简单通俗的话来解释:监听到主业务在执行到了某个节点之后,在监听器里面做出相应的其它业务变更。下面我们具体看段代码,则能很快的理解

2024-02-22 16:51:47 8021 4

原创 【idea】idea插件编写教程,博主原创idea插件已上架idea插件市场 欢迎下载

经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参, 例如日常开发中 我们使用Objects.equals去比较 status(入参),statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() ,再比如 我们比较一个订单code时 orderCode(入参),orderDTO(其它业务对象) 很容易忘记orderDTO.getCode()

2024-01-09 15:55:21 1747 2

原创 【fiddler】fiddler抓包工具的使用

以上是针对http操作,如果是加密的https 需要进行以下操作(https博主未实测)前言:我们可以通过fiddler软件,捕获到http请求,并修改请求参数 修改返回内容。启动fiddler软件,点击file 选择 Capture Traffic。此时会出现一个向上的箭头,点击后出现右侧面板,2红框可以自由编辑参数。(注:在Inspectors选项卡下)(我们以谷歌浏览器发起请求为例)fiddler下载,官网如下图。

2024-01-05 18:07:11 717

原创 【python】python基础教程 java转python快速入门

很多同学估计和博主一样,照葫芦画瓢 写点python是没问题的,理论上只要懂一门语言 学其它语言的基本语法都是很容易的,难点在于针对什么场景 用什么框架, 如何针对并发做设计等。虽说我们画瓢都能画,但是基础的入门语法 还是要熟练的,博主是java开发 ,所以本文有时会以java的语言来阐述。

2023-12-25 17:32:47 2556

原创 【seata】 seata整合nacos+springcloud alibaba+openfeign+fallbackFactory保姆级教程 解决openfeign降级 seata失效问题及各种坑点

本文环境采用的是2021.x中最新的版本,也是springboot 2中 最新的版本对应关系,亲测可行,阅读教程前请先核对自己的版本。(2022.x与springboot3对应,而springboot3又和高版本jdk关联,博主暂没研究)nacos版本:2.2.0seata版本:1.6.1springboot: 2.6.13spring-cloud: 2021.0.5spring-cloud-alibaba: 2021.0.5.0其它:mybatis plus: 3.5.1openfeig

2023-12-15 14:48:43 4205 5

原创 【lombok】从easyExcel read不到值到cglib @Accessors(chain = true)隐藏的大坑

easyExcel读不到值?原来是开启了chain=true , 这只是easyExcel才有的问题吗 ? 这背后竟然隐藏着一个惊天秘密...

2023-12-12 18:25:50 2284

空空如也

空空如也

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

TA关注的人

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