- 博客(169)
- 问答 (1)
- 收藏
- 关注
原创 巧用ThreadLocal,避免内存泄露
在Java多线程编程中,`ThreadLocal`是一个强大却常被误解的工具。它能为每个线程创建变量的独立副本,避免线程间的数据干扰,堪称线程安全的“变量保险箱”。但若使用不当,它也可能成为内存泄露的隐形杀手。
2025-06-27 09:38:53
329
原创 Java父子线程:多线程中的血脉传承与避坑指南
`Spring MVC`有父子容器,`Java`的线程也有父子线程。父子线上会像父子容器一样,子容器可以使用父容器的资源么?父子线程又会上演怎样的传承关系呢?
2025-06-26 13:18:58
686
原创 多线程为何总翻车?这8种控制方案彻底解决并发难题
多线程可以给我们带来速度的提升,同时线程的并发执行带来了资源共享、执行顺序和状态同步等复杂问题。有效的多线程控制是构建稳定、高效并发系统的基石。
2025-06-26 09:13:20
626
原创 面试必问的线程池,原来藏着这些致命陷阱!
`Java`高并发的项目,少不了多线程的使用,而多线程的管理自然要使用到线程池。池化的思想是很多架构一定会考虑的要素,可以很好的控制资源的资源的使用,但是使用不好,造成的问题也不容小觑。
2025-06-24 14:28:26
976
原创 小红书“开盒”事件:一次点击暴露3亿用户平台的“家底”
就我们公司来说,只要对主营业务的主流程没有造成中断、延迟等影响,就不是最高等级的故障,更何况这个是隐藏的路径。即便的隐藏的路径被发现,暴露的后门,不会影响到数据的修改,业务数据被篡改等,同样不会被定为最高等级的故障。而大厂则考虑的更加安全的机制,灰度测试配置等,加强开发者测试的安全。很多开发者也会在自己的业务系统重使用,浏览其他产品的使用,一时技痒难耐,戳戳点点,而小红书的口令。随着互联网技术的日益发展,技术栈迭代频繁,市场环境竞争激烈,程序员的新老接替,各种生产故障纷纷频出。级的事故呢,显然不是的。
2025-06-24 10:02:35
567
原创 Java队列红绿灯法则:阻塞是秩序,非阻塞是自由
阻塞队列与非阻塞队列,恰似交通信号灯与自由通行市场的差异,它们以不同的策略管理着数据的“车流”。通过加锁的方式保证线程的安全,当队列的数据等于初始化的长度时,当前线程就是阻塞进入等待,直到被其他线程唤醒才会继续执行。阻塞队列可以精准的控制资源,通过锁的保障线程的安全,并且阻塞队列可以使用有界队列,防止内存溢出。最大程度上的保证了无锁状态下的线程安全,在保证快速的同时最大程度的保证了安全性,但是仍然对于。案例代码中定义了一个队列长度为3的阻塞队列。就会阻塞,直到有队列中有数据取出时,阻塞结束,继续添加元素。
2025-06-20 09:33:38
299
原创 集合的处理:JDK和Guava孰强孰弱?
在日常开发中,集合的操作是无法避开的。对于集合的操作,你是在`JDK`的流式处理还是`Guava`处理呢?
2025-06-19 14:11:08
386
原创 延迟消息的软肋,竟被定时任务完美弥补
关于这个问题,我们做了技术讨论,主要放在定时任务和延迟消息上,因为延迟消息和定时任务都是用来处理“未来某个时间点需要执行的操作”的技术方案。定时任务适用于数据的清理、报表的生成、缓存的刷新、状态机的维护、数据同步等,以及特定的活动的开关,在合同到期日当天零点发送合同续签提醒邮件(如果系统能精确知道所有合同的到期日并提前配置好任务)就不支持自定义的延迟消息,只支持18个等级的延迟消息,最长的也就2的小时。的延迟消息应用相比其他的延迟消息应用更广,因为消息一般都会搭建高可用,消息的持久化又避免了消息的丢失。
2025-06-18 10:09:47
616
原创 吊打面试官系列:Spring如何使用三级缓存解决循环依赖
`Spring`的面试中,绕不开的话题是循环依赖以及解决方案,而`Spring`的三级缓存机制正是解决单例 Bean 的循环依赖问题。其核心思想是 提前暴露未初始化的 Bean 实例,结合 `ObjectFactory` 延迟处理代理对象。今天我们将一探究竟!
2025-06-13 09:36:06
412
原创 吊打面试官系列:BeanFactory和FactoryBean的区别
面试造火箭,入职拧螺丝。这是候选人的进入职场的切身感受。坦白来讲,日常业务开发中根本没有什么用。但是如果涉及架构、脚手架、开发封装或者源码理解,却是大有用处。今天,我们来看一个高频面试题:`BeanFactory`和`FactoryBean`的区别。
2025-06-11 09:06:25
833
原创 吊打面试官系列:Spring为什么不推荐使用字段注入?
在开发过程中,肯定会使用依赖注入。大多数情况下会通过`@Autowired`注解作用在字段上,从而将`Bean`注入进来。但是`Spring`官网并没有推荐使用这种方式。包括我们常用的开发工具Idea,也会有警告提示。这是为什么呢?
2025-06-09 10:26:45
536
原创 吊打面试官系列:深入理解Spring的IOC容器
管理的对象,使用的越多,创建的对象就越多,因此占用的资源也就会越多,如果循环创建对象,可能造成内存溢出。生态的时候,我们自己需要控制对象的创建和管理。容器统一管理,使用的时候通过注入的方式直接获取就好了。的思想很简单,但是里面的处理逻辑非常复杂,以兼容各种情况,这就是框架的魅力。管理的对象,使用更加灵活,不受框架的限制,可以用在任何地方。时代的到来,代替了我们对对象的管理。的对象太多了,导致现实的反噬,没有女朋友。对比非空参构造的对象,如果发生参数的修改,对于非。管理的对象,只需要修改实例化的地方即可。
2025-06-06 09:07:55
565
原创 揭秘自定义注解,背后的面向切面编程(AOP)的艺术
Target(ElementType.METHOD) // 注解用在方法上@Retention(RetentionPolicy.RUNTIME) // 运行时保留/*** 操作名称**//*** 内容**//*** 备注**/用来标记切点位置。@Aspect@Component/*** @Description: 切点**/try {// 封装日志信息// 请求参数// 异常信息// 操作// 内容// 备注// 插入日志信息。
2025-06-05 09:15:09
250
原创 5分钟了解,Mysql事务事务隔离级别
之前介绍了声明式事务,其中的一个属性就是事务的隔离级别`isolation`。今天我们以Mysql为例,深入介绍一下事务的隔离隔离级别
2025-06-04 13:19:03
869
原创 面试实习生后,理解了王树国校长三问中国教育的演讲
如果梁文峰继续读博士,还有今天的DeepSeek吗?如果王兴兴继续读博士,还有今天的宇树科技吗?如果汪滔继续读博士,还有今天的大疆吗?
2025-06-04 09:26:49
310
原创 解密Spring事务底层:你的@Transactional真的安全吗?
声明式事务的使用虽然入门简单,一个简单的注解就可以开启事务。但是`@Transactional`的属性影响着事务的控制,事务的声明也是有条件的,稍不注意就可能导致事务失效。我们一起来深入了解一下吧!
2025-05-30 09:20:35
281
原创 事务颗粒度的控制:声明式事务 VS 编程式事务
`Spring`事务是什么?Spring事务是一个并发控制的单位,开启事务之后,在同一个事务里的一系列操作要么全成功、要么全失败。简单来讲就是一损俱损,一荣俱荣。
2025-05-29 09:28:28
666
原创 浅谈技术专利,3分钟揭开神秘面纱
初次接触`专利`这个名词,那是在大学时代,何其高大上。宿舍舍友因为参加学校的发明比赛中获奖,并申请了国家专利,也曾风光无线。感觉自己和`专利`之间遥不可及。
2025-05-27 11:34:19
657
原创 谁说程序员不懂浪漫:Spring AI 1.0 GA告白520
2025年5月20日`Spring AI 1.0 GA`正式发布,标志着`Spring AI`的稳定版正式落地。随着大模型AI的广泛应用,`Spring`作为程序员背后的一站式生态圈,`Spring AI`在520这个浪漫的日子,正式告白所有程序员,仿佛在说,有我在,你们放心使用吧!
2025-05-26 13:26:44
748
原创 版本管理工具:Git VS SVN,你会怎么选?
前一段时间分享了关于`Git`工具的使用。因为笔者一直用的是`SVN`,所以本章对比一下`Git`和`SVN`都有哪些异同点。选择的版本管理工具的时候应该怎么选?
2025-05-23 16:16:10
969
原创 Git实战演练,模拟日常使用,快速掌握命令
上一期借助`Idea`,完成了`Git`仓库的建立、配置、代码提交等操作,初步入门了`Git`的使用。然而日常开发中经常面临各种各样的问题,入门级的命令远远不够使用。这一期,我们将展开介绍`Git`的日常处理命令,解决日常问题,熟悉`Git`操作。
2025-05-22 15:25:40
931
原创 借助IEDA ,Git版本管理工具快速入门
直使用`SVN`作为版本管理工具,直到公司新来的一批同事,看到我们使用的`SVN`都纷纷吐槽,什么年代了,还使用`SVN`。聊下来,才知道人家公司早早就将`SVN`切成了`Git`工具,并吐槽`SVN`的各种弊端
2025-05-21 16:31:09
1142
原创 程序员注意!这些代码可能会让你“吃牢饭”!
不知道你有没有听过面向监狱编程,可能你好好的码着代码,就就被帽子叔叔带走了。程序员早已不是免责职业,你的键盘可能正在敲响监狱的大门!
2025-05-21 10:51:53
841
原创 XPath爬虫实战:5分钟轻松实现当当网图书列表内容抓取
我们已经分了两节介绍了`XPath`的基础用法、进阶技巧以及特殊神技,但都是基于浏览器的测试的,并没有实际运用的场景。本节我们将通过实际的案例应用`Xpath`技术。
2025-05-20 13:59:48
1207
原创 XPath高阶玩法:灵活使用Axes技巧+函数,爬虫效率翻倍!
上一期主要介绍了`XPath`的基本语法,以及常用的技巧,用于快速入门。但是使用的技巧中引入了轴(Axes)以及函数的概念,为了能够更加游刃有余的使用进阶技巧,我们完整的介绍一下`XPath` 的高阶玩法。
2025-05-19 10:53:35
923
原创 从零到高手:掌握XPath的5个神技,让你数据抓取快人10倍
同事每天准点下班,而我还在加班写爬虫?项目Deadline逼近,数据却卡在网页结构里抽不出来?答案可能藏在`XPath`里。无论是爬虫、还是现在流行的大模型的`Agent`工作流,解析网页数据的工具都可能用到`Xpath`。`Xpath`到底是什么呢?
2025-05-16 13:25:14
983
原创 开源了,优雅的Controller,应该这样写!
控制层的优雅写法,技术文章中多次被各个大佬讲过,但是都只是教你如何处理,却没有现成的工具封装。为了能够更好的使用优雅的写法,我自己从总结了常用的类型、以及以及处理方案并开源,欢迎大家使用
2025-05-16 09:25:19
262
原创 爽呀,JDK17里面可以使用的神仙语法(一)
从JDK8升级到JDK17,里面新增了有很多神仙级的语法,用起来非常丝滑,看起来也更加清爽。下来我们详细了解一下
2025-05-13 14:00:56
391
原创 你还在用JDK8么?给你一个升级JDK17的理由,赶快升级!
JDK自从被Oracle收购以后,那升级的速度和手机更新换代一样快,2025 年 3 月 18 日不是才发布了JDK24么。这速度真的是让开发者来不及追赶,上一个版本还没有完全弄明白,下一个版本就已经发布了。我们一起看看JDK17里面都有什么可用
2025-05-13 09:30:44
1121
原创 Spring MVC父子容器背后的顺序关系
Spring的父子容器主要出现在Spring MVC时代,随着Spring Boot这位行业颠覆者的问世,以其简单的配置,快速搭建Web项目的能力,迅速取代Spring MVC的江湖地位。
2025-05-12 15:57:02
803
原创 登录双Token设计机制,背后的安全策略
登录功能是我们常见的功能,无论是Web应用还是移动设备,用户的认证和授权是确保应用安全性的重要环节。单`token`机制但从应用的角度已经完全可以满足功能的完成,但是从安全性角度考虑的话,还是有安全隐患的。今天介绍一下双token机制
2025-05-12 09:28:28
1164
原创 Redis 8.0携新功能,重新开源
Redis 8.0 弃用了以前的 Redis 和 Redis Stack 版本,不再需要独立的 RediSearch、RedisJSON、RedisTimeSeries 和 RedisBloom,因为它们现在是 Redis 的一部分。Redis Query Engine 除了键查找外,还能实现快速数据访问,可创建哈希和 JSON 数据结构的二级索引,支持向量搜索、精确匹配和语义搜索等,并具备词干提取、同义词扩展和模糊匹配等功能。
2025-05-09 16:45:26
1253
原创 程序员图片处理利器:分享两款图片处理工具,让图片处理后顾无忧
在日常开发中,尤其在电商领域,图片的处理犹如家常便饭。前端有自己的一套框架处理,如`canvas`等工具。只要前端能做就交给前端团队处理了。我们后端应该怎么处理呢
2025-05-07 16:40:17
836
原创 Cherry Studio搭载自定义MCP服务,精准引导大模型
上一节介绍了手搓MCP服务和客户端,并且采用了服务器发送事件(SSE)的形式调用,完成了基本调用。当然客户端也可以使用`Cherry Studio` 客户端直接调用,输入服务端的IP和端口即可。
2025-05-07 09:27:57
914
原创 基于Spring AI 搭建MCP服务,保姆级教程来了!
之前分享过一篇《CherryStudio+百度地图MCP为大模型赋能实时位置》的文章,讲解了CherryStudio搭载百度地图MCP服务实时获取位置,使用了第三方的MCP服务。大家有没有发现一个问题:搭建的客户端,调用了MCP服务以后,除了MCP服务相关的问题他可能给出回答,其他的他就不能回答了,这个是什么原因呢?是 Spring AI MCP 框架中用于快速暴露业务能力为 AI 工具的核心注解,该注解实现 Java 方法与 MCP 协议工具的自动映射,并且可以通过注解的属性。今天我们一起来探秘!
2025-05-06 13:29:47
8818
18
原创 Qwen3来了,看看有哪些特性
Qwen3是Qwen大语言模型系列的新一代产品,在自然语言处理和多模态能力上取得显著进展。它基于前代成功经验,通过更大数据集、强化架构和优化微调,处理复杂推理、语言理解与生成任务。
2025-05-06 09:33:41
432
原创 行为验证码简化用户操作,取代传统图片验证
天爱验证码可能是java界最好的开源行为验证码,包括了 滑块验证码、点选验证码、行为验证码、旋转验证码, 滑动验证码等。
2025-04-28 10:39:53
603
原创 白嫖!开源Java验证码框架加固业务安全
基于Java的图片验证码功能通过动态生成包含随机字符的干扰图像,可有效防御恶意爬虫、暴力破解等自动化攻击。其实现通常结合图像处理技术与随机算法,通过扭曲变形、噪点干扰及复杂背景设计提升破解难度。然而,验证码设计需兼顾安全性与用户体验,避免过度复杂化导致用户识别困难.
2025-04-27 10:43:32
1452
空空如也
idea2020.1新版本pom文件不能拖动?
2020-05-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人