
朝花夕拾篇
文章平均质量分 78
智_永无止境
来和大家一起学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
巧用ThreadLocal,避免内存泄露
在Java多线程编程中,`ThreadLocal`是一个强大却常被误解的工具。它能为每个线程创建变量的独立副本,避免线程间的数据干扰,堪称线程安全的“变量保险箱”。但若使用不当,它也可能成为内存泄露的隐形杀手。原创 2025-06-27 09:38:53 · 327 阅读 · 0 评论 -
Java父子线程:多线程中的血脉传承与避坑指南
`Spring MVC`有父子容器,`Java`的线程也有父子线程。父子线上会像父子容器一样,子容器可以使用父容器的资源么?父子线程又会上演怎样的传承关系呢?原创 2025-06-26 13:18:58 · 685 阅读 · 0 评论 -
多线程为何总翻车?这8种控制方案彻底解决并发难题
多线程可以给我们带来速度的提升,同时线程的并发执行带来了资源共享、执行顺序和状态同步等复杂问题。有效的多线程控制是构建稳定、高效并发系统的基石。原创 2025-06-26 09:13:20 · 625 阅读 · 0 评论 -
面试必问的线程池,原来藏着这些致命陷阱!
`Java`高并发的项目,少不了多线程的使用,而多线程的管理自然要使用到线程池。池化的思想是很多架构一定会考虑的要素,可以很好的控制资源的资源的使用,但是使用不好,造成的问题也不容小觑。原创 2025-06-24 14:28:26 · 976 阅读 · 0 评论 -
Java队列红绿灯法则:阻塞是秩序,非阻塞是自由
阻塞队列与非阻塞队列,恰似交通信号灯与自由通行市场的差异,它们以不同的策略管理着数据的“车流”。通过加锁的方式保证线程的安全,当队列的数据等于初始化的长度时,当前线程就是阻塞进入等待,直到被其他线程唤醒才会继续执行。阻塞队列可以精准的控制资源,通过锁的保障线程的安全,并且阻塞队列可以使用有界队列,防止内存溢出。最大程度上的保证了无锁状态下的线程安全,在保证快速的同时最大程度的保证了安全性,但是仍然对于。案例代码中定义了一个队列长度为3的阻塞队列。就会阻塞,直到有队列中有数据取出时,阻塞结束,继续添加元素。原创 2025-06-20 09:33:38 · 299 阅读 · 0 评论 -
集合的处理:JDK和Guava孰强孰弱?
在日常开发中,集合的操作是无法避开的。对于集合的操作,你是在`JDK`的流式处理还是`Guava`处理呢?原创 2025-06-19 14:11:08 · 385 阅读 · 0 评论 -
吊打面试官系列:BeanFactory和FactoryBean的区别
面试造火箭,入职拧螺丝。这是候选人的进入职场的切身感受。坦白来讲,日常业务开发中根本没有什么用。但是如果涉及架构、脚手架、开发封装或者源码理解,却是大有用处。今天,我们来看一个高频面试题:`BeanFactory`和`FactoryBean`的区别。原创 2025-06-11 09:06:25 · 833 阅读 · 0 评论 -
吊打面试官系列:Spring为什么不推荐使用字段注入?
在开发过程中,肯定会使用依赖注入。大多数情况下会通过`@Autowired`注解作用在字段上,从而将`Bean`注入进来。但是`Spring`官网并没有推荐使用这种方式。包括我们常用的开发工具Idea,也会有警告提示。这是为什么呢?原创 2025-06-09 10:26:45 · 536 阅读 · 0 评论 -
揭秘自定义注解,背后的面向切面编程(AOP)的艺术
Target(ElementType.METHOD) // 注解用在方法上@Retention(RetentionPolicy.RUNTIME) // 运行时保留/*** 操作名称**//*** 内容**//*** 备注**/用来标记切点位置。@Aspect@Component/*** @Description: 切点**/try {// 封装日志信息// 请求参数// 异常信息// 操作// 内容// 备注// 插入日志信息。原创 2025-06-05 09:15:09 · 250 阅读 · 0 评论 -
解密Spring事务底层:你的@Transactional真的安全吗?
声明式事务的使用虽然入门简单,一个简单的注解就可以开启事务。但是`@Transactional`的属性影响着事务的控制,事务的声明也是有条件的,稍不注意就可能导致事务失效。我们一起来深入了解一下吧!原创 2025-05-30 09:20:35 · 281 阅读 · 0 评论 -
你还在用JDK8么?给你一个升级JDK17的理由,赶快升级!
JDK自从被Oracle收购以后,那升级的速度和手机更新换代一样快,2025 年 3 月 18 日不是才发布了JDK24么。这速度真的是让开发者来不及追赶,上一个版本还没有完全弄明白,下一个版本就已经发布了。我们一起看看JDK17里面都有什么可用原创 2025-05-13 09:30:44 · 1115 阅读 · 0 评论 -
Spring MVC父子容器背后的顺序关系
Spring的父子容器主要出现在Spring MVC时代,随着Spring Boot这位行业颠覆者的问世,以其简单的配置,快速搭建Web项目的能力,迅速取代Spring MVC的江湖地位。原创 2025-05-12 15:57:02 · 803 阅读 · 0 评论 -
惊!未实现Serializable竟让第三方接口回调全军覆没
序列化问题看似一个小小的问题,平时可能不注意,自己开发的时候要不要实`java.io.Serializable,心里可能都没有谱。一旦发生线上故障,那就是大问题。原创 2025-04-25 13:06:45 · 434 阅读 · 0 评论 -
SSE(Server-Sent Events)替代WebSocket实现直播间实时评论功能
SSE是一种用于实现服务器向客户端实时单向推送数据的Web技术。基于HTTP协议,允许[服务器](https://so.csdn.net/so/search?q=服务器&spm=1001.2101.3001.7020)将数据以事件流(Event Stream)的形式发送给客户端。客户端通过建立持久的HTTP连接,并监听事件流,可以实时接收服务器推送的数据原创 2025-04-25 09:30:26 · 1227 阅读 · 0 评论 -
基于WebSocket模拟直播间评论的实现
之前探索了一下直播间实时评论的的背后技术,这一节,我们将选用最经典WebSocket的模拟这一功能的实现。WebSocket可以基于`Netty`实现,也可以基于Springboot实现。原创 2025-04-23 10:13:56 · 734 阅读 · 0 评论 -
短信被截断?5分钟用Java打造企业级短链服务
最近做了一个项目,用户提交资料以后,审核完成后,需要短信通知用户,引导用户点击链接查看结果。简单的以为就是放一个链接就好了,结果再设计评审的时候,有老司机提出来:链接太长会被短信分成两条发送,需要用到短链接。通过短链接技术,企业不仅能解决基础的技术限制问题,更能深度挖掘数据价值、优化用户体验,最终实现降本增效与业务增长的双重目标。哈希值的的好处就是同一个链接生成的短码是相同的,哈希存在哈希冲突,不同的链接可能会生成相同的短码。其中短码的生成,可以自定义生成,也可以通过编码算法将原始链接转化成短码。原创 2025-04-18 14:41:36 · 1100 阅读 · 0 评论 -
京东外卖,探索「距离最近」排序背后的秘密
地理位置(`Geolocation`)距离的不再是简单的距离比较,而是实时的经纬度的计算。因为你在不同的地方,商家离你的位置都是变化的原创 2025-04-18 09:54:01 · 878 阅读 · 0 评论 -
邮件通知,引发的线上的S级故障
好的架构设计,报警通知必不可少。但是报警用不好,也会造成线上的S级故障。故障的等级各公司的定义标准不一样,总之S级故障在我们公司就是最高级别的故障,需要放下手头所有的事情,全力解决问题。这类故障类似的阿里的P0级故障。原创 2025-04-16 13:56:02 · 655 阅读 · 0 评论 -
3ms找出微信「共同好友」,揭秘其背后的技术推手
在微信里,关注了某个公众号或者进了某个群,经常会显示你有几个共同的朋友。这种功能是怎样实现的呢原创 2025-04-07 15:02:45 · 651 阅读 · 0 评论 -
完蛋,被扣工资了,都是JSON惹的祸
JSON是一种轻量级的数据交换格式,基于ECMAScript的一个子集设计,采用完全独立于编程语言的文本格式来表示数据。它易于人类阅读和编写,同时也便于机器解析和生成,这使得JSON在数据交换中具有高效性。原创 2025-03-25 15:58:21 · 411 阅读 · 0 评论 -
从 「WHERE 1=1」到架构规范:SQL动态查询的陷阱、性能黑洞与实战破局
SQL动态查询的陷阱优化,看似是简化逻辑的“技巧”,实则是隐藏技术债务的冰山一角。与其争论其利弊,不如推动团队采用更优雅的解决方案,从根源上规避问题。SQL注入漏洞:若未使用预编译(PreparedStatement),直接拼接用户输入原创 2025-03-19 11:24:01 · 571 阅读 · 0 评论 -
从配置文件到高薪Offer:「配置即薪资」进阶指南
在技术这个竞技场领域中,大环境竞争日益激烈,每一行配置代码都在为你的身价加码。从Properties到云原生配置中心,每个技术层级的跨越都对应着薪资的指数级增长。原创 2025-03-19 09:38:24 · 802 阅读 · 0 评论 -
当 DeepSeek 可以写代码时,程序员的终点是「被淘汰」还是「进化」
一场「有限游戏」向「无限游戏」的跃迁DeepSeek 替代程序员的命题,本质是“工具理性”与“人类主体性”的对抗。若将编程视为“写代码的有限游戏”,人类终将败北;但若将其升维为“用技术解决复杂问题的无限游戏”,程序员将永远是不可替代的“规则制定者”。未来的赢家,不是与 AI 赛跑的人,而是骑着 AI 飞翔的人。原创 2025-03-17 17:47:57 · 842 阅读 · 0 评论 -
手握宝刀屠龙Deepseek,分析线上故障
平时遇到故障或线上问题,无法快速定位问题,一堆报错信息,百度、谷歌、Bing等一通搜索找到类似的问题,然后通过搜索的结果逐步尝试找到解决方案。这些Deepseek都可以帮我们实现原创 2025-03-17 15:25:22 · 560 阅读 · 0 评论 -
程序员如何用代码思维玩转公众号排版?
公众号依托微信的用户的体量,不少爱好写作、文字记录的用户选择了此赛道。而自己写的时候,各种困难,行间距时宽时窄,对齐混乱,将好像在和自己作对似的,一言难尽。在人人都是自媒体的时代,抖音、快手、小红书、知乎、公众号、视频号等大爆炸的平台下,自媒体人各自选择了自己的赛道或者并驾齐驱,有一些大V已经年过百万或是财务自由了。下面我们就站在巨人的肩膀人直接使用开源的代码【WeChat Markdown Editor】,订制自己的公众号模板。好好的代码块,复制到公众号里,可读性就变的好差,无疑是技术人的恶梦。原创 2025-03-13 13:14:58 · 921 阅读 · 0 评论 -
Redis7系列:Redis Search 吊打 ElasticSearch
百万数据级搜索的王炸产品原创 2025-03-12 16:20:01 · 792 阅读 · 0 评论 -
Redis7系列: 用 1% 的内存解决 99% 的难题
在数据指数级增长的今天,Bloom Filter 和 HyperLogLog 展示了 「以空间换时间,以概率换资源」的哲学。它们不是银弹,但在特定场景下能实现传统技术无法企及的数量级突破。「是否能用概率换精度?答案或许就在这两个 Redis 黑科技中。END。原创 2025-03-11 17:47:37 · 784 阅读 · 0 评论 -
Redis7系列:设置开机自启
开启自启原创 2025-03-10 18:50:51 · 510 阅读 · 0 评论 -
Redis7系列:Redis Stream 全面解析
Redis Stream 是 Redis 5.0 引入的持久化消息队列数据结构原创 2025-03-10 16:19:50 · 1069 阅读 · 0 评论 -
Docker:颠覆开发与部署的革命性容器技术
你是否还在为「环境不一致」而抓狂?是否因「依赖冲突」而深夜加班?有没有想过像发送快递一样轻松部署应用?Docker,它用「容器化」技术将代码、环境、配置一键打包,让开发、测试、生产环境实现「零差异」同步,彻底告别「在我电脑上是好的」这种魔咒!原创 2025-03-07 17:51:02 · 378 阅读 · 0 评论 -
Redis7系列:Redis GEO解锁百万级地理位置数据的超能力
空间数据洪流时代,Redis GEO就像程序世界的空间折叠器。当其他数据库还在解析复杂GIS函数时,Redis已用一行命令为你打开虫洞——这才是真正为高并发而生的位置智能!原创 2025-03-06 17:57:31 · 1069 阅读 · 0 评论 -
Redis7系列:RedisJSON使用文档
RedisJSON 是 Redis 的扩展模块,支持原生 JSON 数据格式的存储和操作,提供高效的 JSON 路径查询语法(类似JSONPath)。原创 2025-03-06 10:55:48 · 670 阅读 · 0 评论 -
Redis7系列:Redis对决RedisStack
Redis 是一个开源的内存数据库,以高性能、低延迟著称,支持基础数据结构(如字符串、哈希、列表、集合、有序集合等),常用于缓存、消息队列、实时数据处理等场景。Redis Stack 是 Redis 的扩展版本,整合了 Redis 核心数据库与多个高级功能模块(如全文搜索、JSON 文档存储、图数据库、时间序列等),提供“一站式”解决方案,简化了复杂数据场景的开发。原创 2025-03-05 19:38:17 · 1570 阅读 · 3 评论 -
像调用接口一样调用第三方API
声明式与编程式双修,让天下没有难以发送的 HTTP请求。原创 2025-03-04 10:45:04 · 961 阅读 · 0 评论 -
线上追踪神器Arthas
Arthas阿里开源的Java诊断工具,支持动态追踪、实时监控、热更新等特性。通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。原创 2025-02-27 15:12:19 · 782 阅读 · 0 评论 -
Markdown文档神器Typora配置图床
为你的Markdown文档神器Typora配置图床,实现图片的自动上传,横跨所有写作平台,从此图片不丢失。原创 2025-02-26 18:36:34 · 362 阅读 · 0 评论 -
基于Netty的websocket的简单介绍
WebSocket」是一种在单个TCP连接上进行全双工通信的协议。「WebSocket」使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在「WebSocket API」中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。TCP连接是一种可靠的、面向连接的网络通信协议。它通过三次握手建立连接,然后通过数据包的传输和确认来保证数据的可靠性和顺序性。原创 2024-05-06 16:23:13 · 1677 阅读 · 5 评论 -
Sprinboot聚合项目归荑
在创建springboot项目时,都会有一个Main方法。如果将Springboot项目设计成聚合项目时,我们是不是要把所有的子项目都按照Springboot的方式创建呢?如果是会出现什么问题,以及我们怎么解决呢?如果我们使用maven项目+Springboot项目混合使用,会有什么问题呢?这些都是今天我们要探讨的问题。原创 2023-04-19 15:52:06 · 847 阅读 · 0 评论 -
TreeMap根据value排序遇到的问题及分析
1、前言针对集合排序,我们通常都会借助具有排序功能的集合,来处理我们的数据。比如ArrayList,TreeMap等。但是使用不同的排序工具,可能会遇到不同的问题。2、案例分析2.1 需求:根据HashMap中的数据,按照value排序。例如:/*排序之前的结果: key:value = a:3 key:value = b:5 key:value = c:1 key:value = d:4 key:value = e:2要求输出结果为: key:value = c:1.原创 2021-08-18 17:21:35 · 1463 阅读 · 0 评论 -
springboot集成webSocket实现网络实时通讯
1、前言 在很多业务场景中,对实时数据要求比较高,我们就不能采用轮训拉取的方式来获取数据了。就可以采用websocket的长链接的形式,实时有服务端或者客户端推送数据,已达到数据的实时展示。2、websocket简介SpringBoot官方推荐的基于STOMP实现,STOMP:即Simple Text Orientated Messaging Protocol,它是一个简单的文本消息传输协议,属于 WebSocket 的子协议, 提供了一个可互操作的连接格式,允许STOMP客户端与任意...原创 2020-08-04 16:37:46 · 3632 阅读 · 1 评论