自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 程序员的大数据修炼之道01:建立你的大数据知识体系

2025年,我们迎来了AI应用的爆发期。但有个扎心的真相:再强大的AI模型,没有高质量的数据支撑,也只能输出"正确的废话"。因此,垂直场景AI应用的成败,往往取决于背后的数据体系是否完善。数据的质量、规模和时效性,直接决定了AI能否真正解决业务问题。正因如此,掌握大数据技术不再是"锦上添花",而是AI时代程序员的必备技能。这个系列将带各位读者从零开始,一步步构建真正的企业级大数据平台。

2025-08-16 20:53:23 557

原创 Spring AI 进阶之路02:集成SSE实现AI对话的流式响应

上一篇文章中,我们虽然用三步快速实现了 集成 ,但这种同步响应的方式会让用户体验大打折扣。尤其当问题过于复杂时,大模型需要更多的时间来处理,这会导致用户不得不长时间面对空白屏幕,这种体验显然无法与逐字浮现的“打字机效果”相媲美。这种实时反馈的交互体验,正是流式响应的独特魅力,也已成为AI应用的标配。在本篇文章中,我们将对项目进行升级改造,通过使用 的流式API与 技术,让 AI 响应如“打字机”般自然呈现。在动手编码之前,我们有必要先花点时间了解一下本次实现的关键技术——SSE,全称 Server-S

2025-08-16 20:47:29 847

原创 Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot

当LLM的浪潮以不可阻挡之势席卷全球,从改变用户交互到重塑商业模式,我们每一位开发者都身处这场技术变革的中心。作为庞大的Java生态中的一员,你是否也曾思考:当Python似乎成为 AI 的“官方语言”时,我们这些深耕Spring全家桶的开发者,该如何快速拥抱这个新时代?如今,Spring团队亲自出手,为数百万Java开发者带来了官方答案——。它将 AI 开发的复杂性进行封装,让集成 AI 能力变得像添加一个普通的Starter一样简单。本文是系列的第一篇,我们将从最基础的整合开始。你将看到,在。

2025-08-16 20:43:51 1220

原创 跟着大厂学架构01:如何利用开源方案,复刻B站那套“永不崩溃”的评论系统?

本文将基于哔哩哔哩技术团队分享的**《B 站评论系统的多级存储架构》**,这篇文章为我们揭示了,在亿级流量冲击下,一个顶流社区的核心互动功能是如何通过精妙设计保持高可用的。考虑到其架构中的核心组件“泰山 KV 存储”为 B 站自研,我们无法直接获取。因此,本文的核心目标,便是。我们将以原文为蓝本,聚焦于如何利用我们更熟悉的MySQLRedis及Java技术栈,完整复刻其多级存储、数据同步与对冲降级等关键设计。希望这篇文章能成为你探索大厂架构的起点。

2025-07-21 11:31:00 976

原创 【分布式锁通关指南 11】源码剖析redisson之读写锁的实现

在分布式的场景下,有些数据是“读远多于写”的。比如一些基础配置、商品信息等,这类场景往往更适合使用读写锁——对于读操作只要不涉及数据修改,就可以同时进行;一旦需要写操作,就要独占保持一致性。Redisson 在此基础之上封装了分布式的读写锁 API,使得我们可以把单机环境下的读写锁模式,透明地延伸到集群。分布式缓存的配置数据:读操作要并发读,而更新操作需要阻塞所有读操作。某些共享资源的高并发访问场景:比如日志、统计信息等,与写操作互斥而与读操作并行。接下来让我们一窥源码,看看。

2025-07-18 11:53:11 585

原创 后端开发必看:零代码实现存量服务改造成MCP服务

MCP自发布以来,在互联网上的讨论热度始终居高不下,是因为它为AI调用外部工具提供了标准化协议,大大简化了集成过程。Spring 社区也迅速响应,推出了相关依赖包,让开发者能够将 Spring Boot 项目中的接口改造为 MCP 服务可调用的工具。然而,改造**"存量服务"“没有什么问题是增加一层解决不了的”**。今天,我将向大家展示如何利用和实现这一目标,真正做到零代码改造存量服务。

2025-07-16 10:41:24 1020

原创 写给尊贵的 Tare Pro 用户的喂饭级 IOS APP 开发指南

网络上关于 AI 编程工具的讨论热度居高不下,Cursor和Trae这两款 IDE 也经常被放在一起比较。很多声音认为 Cursor 的体验更胜一筹,那么我为什么最终选择了 Trae Pro 的付费版呢?,只需要3刀就可以不排队地使用业界顶尖的Claude 4和。笔者个人认为AI IDE 的能力很大程度上取决于底层的模型,所以目前的Trae对我来说是一个很难拒绝的选择。本篇文章,我将带各位读者走一遍完整的流程,看看如何利用Trae,将一个想法真正变成一个可以运行的IOS APP。

2025-07-15 15:00:08 706

原创 还在配置规则文件和智能体?Roo Commander:预置90+领域专家,开箱即用的AI编程新体验

尽管AI编程助手层出不穷,但在实际项目中,我们依然需要花费大量精力去“手动指挥”它们?反复调整提示、拆解任务、解释上下文……AI似乎总差那么一点“默契”和“主动性”,尤其是在面对庞大且错综复杂的项目时,这种“指挥”的疲惫感愈发明显。那么有没有一种可能,让AI真正成为一个能够自主规划、协同作战的“专家团队”?Roo指挥官就是解决这个问题而出现,它可以智能调度一个由组成的强大团队——无论是前端、后端、运维、DBA,还是项目经理、产品经理、UI设计师,Roo指挥官都能找到最合适的"专家"来高效执行。

2025-07-15 14:42:26 657

原创 ⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现

在前面的文章中,我们基于 Netty 构建了一套单体架构的即时通讯服务。虽然单体架构在开发初期简单高效,但随着用户量的增长和业务规模的扩大,其局限性逐渐显现。当面对高并发场景时,单体 Netty 服务很容易触及性能天花板,导致消息推送延迟、连接频繁断开等问题。然而,如果只是简单地复制多个 Netty 实例进行水平扩展:这种方案会带来新的问题:客户端连接分散在不同服务器上,消息无法跨服务器传递。比如用户 A 和用户 B 连接到不同的 Netty 实例,他们之间的消息将无法送达。

2025-07-15 14:22:45 382

原创 AI帮我写代码,谁来帮我看代码?

AI工具的浪潮,正在重塑我们每个人的工作方式。以Trae为代表的AI原生IDE,为我们提供了前所未有的"脑力"杠杆。但要真正撬动起更高的生产力,我们必须确保自己的"眼力"和"精力"能够跟上。选择明基RD280U,对我而言,不仅是换了一台显示器。它更像是一次工作流的整体升级,它用独一无二的3:2比例和贴心的护眼科技,为我的AI编程找到了那个最默契的"硬件Copilot"。当软件和硬件不再是孤立的工具,而是作为一个协同进化的生态整体时,我们才能真正驾驭AI的力量。

2025-07-03 01:00:54 610

原创 Spring Boot 3 整合 MQ 构建聊天消息存储系统

在构建实时聊天服务时,我们既要保证消息的即时传递,又需要对消息进行持久化存储以便查询历史记录。然而,直接同步写入数据库在高并发场景下容易成为性能瓶颈,影响消息的实时性。秉承"没有什么问题是加一层解决不了的"理念,引入消息队列(MQ)进行异步存储是一个优雅的解决方案。消息先快速写入MQ确保即时送达,随后由专门的消费者服务从队列取出,平稳写入数据库。在本文中,我们将详细探讨如何利用Spring Boot 3 结合消息队列技术,构建一个高效可靠的聊天消息存储系统。

2025-05-30 15:07:07 1339

原创 SpringBoot整合Flowable【08】- 前后端如何交互

BpmnModel是Flowable提供的一个核心类,它允许开发者以编程方式构建完整的BPMN 2.0流程模型。与通过 Flowable-UI 设计流程并导出XML文件的方式不同,BpmnModel让我们可以直接在代码中定义流程的各个元素。所以,我们可以通过BpmnModel对象来动态创建流程定义,前端只需通过接口传递必要的流程参数即可,无需传递完整的 XML 文件。这里需要明确区分两个概念:一是后端如何接收参数并构建流程模型,二是前端如何提供流程设计的交互界面。

2025-05-30 15:01:57 941

原创 AI赋能开源:如何借助MCP快速解锁开源项目并提交你的首个PR

很多同学都梦想为开源项目贡献力量,然而现实往往是——面对庞大复杂的项目,从入门到提交第一个有实质性代码的PR,时间跨度可能长达数年。传统路径通常是先从文档贡献开始,逐步深入理解项目架构,最终才能进行代码层面的参与。大模型时代的到来促进了一些AI IDE的兴起,比如cursor、Trae等,它们能够完成部分编码工作,大幅缩短了参与门槛。然而,编码前的项目理解环节仍是开发者必须自行跨越的障碍。那么,我们能否让AI不仅辅助编码,更能帮助我们理解项目结构呢?答案是肯定的。

2025-05-30 14:56:44 1493

原创 Java 工程师进阶必备:Spring Boot 3 + Netty 构建高并发即时通讯服务

作为异步事件驱动的网络框架,凭借出色的性能和设计,已成为高并发通信领域的标杆。它不仅简化了编程的复杂性,还能轻松支持数万并发连接,被等众多知名项目采用。本文将探索如何结合与,打造高性能即时通讯系统。

2025-05-30 14:51:16 927

原创 redis分布式锁在高并发场景下的方案设计与性能提升

在上文的结尾中我提到了redis分布式锁在“主从架构”下失效的情况:比如当redis执行相应命令时,主节点挂掉了,从节点被选为新的主节点,但命令还没来得及同步到从节点,因此高并发场景下,新的请求又会拿到锁,但前一个锁并没有手动释放掉,到过期时间后,就把新请求的锁给释放掉了,那么就又出现并发问题了,本篇文章就将以解决这个问题作为开端来展开。

2025-05-27 11:11:13 971

原创 从扣减库存场景来讲讲redis分布式锁中的那些“坑”

代码的逻辑很简单,就是从redis里拿到一个key为的键值对,然后判断其值在大于0的情况下进行减一操作,之后再将这个键值对重新存储,这里模拟的是下单减商品库存这么一个场景。

2025-05-27 10:44:04 673

原创 年终盘点AIGC:生成式AI一路生花,互联网开始步入大模型时代

截止这篇文章发布,此时距离chatGPT发布已经过去了383天。在这383天里,我们在不断接收着生成式AI技术带给我们的冲击,AI、大模型等字眼也越来越频繁地出现在大众的视野里,正在阅读这篇文章的你可能也已经在工作和学习中使用AI提升效率,但也给我们带来了两个问题:它,给我们带来了什么变化?结合AI怎么去做好应用?

2025-05-23 14:36:10 751

原创 【分布式锁通关指南 10】源码剖析redisson之MultiLock的实现

在分布式环境中,如果我们将数据拆分到不同的 Redis 实例、集群或是不同的 key 上,有时会遇到需要“一次性对 N 个资源都上锁,才算占用资源”的场景。使用 Redisson 的MultiLock可以极大地简化这类需求的实现。它提供了一个整合多个RLock的抽象,对外暴露成单一的锁接口,使用起来就像在操作一把锁,而内部却是对多把锁的组合操作。同时锁定多个不同 Redis key,保证“要么全加锁成功,要么全部不加锁”。

2025-05-16 09:55:59 641

原创 【内含邀请码】扣子空间体验:Manus类型产品的新选择

近日,Coze重磅推出,让类型的AI应用再添一员强将。它的定位和类似,都是旨在让用户与高效协作,完成复杂任务。- 智能系统可自主规划并执行多步骤流程,大幅提升工作效率- 汇聚各领域 AI 助手,为不同场景提供精准专业支持- 灵活对接多种系统与服务,实现功能无限扩展那么它的实际表现究竟如何?让我们今天一探究竟。

2025-04-23 09:35:50 771 1

原创 【分布式锁通关指南 09】源码剖析redisson之公平锁的实现

在本篇中,我们继续探索redisson中相关锁的实现,本期将围绕公平锁进行讲解。在正式开始前,我们回顾下公平锁的概念-。这就意味着A、B、C 三个线程都想获得同一把锁,那么最先请求的线程会被优先给予资源。如果此时锁被某个线程占用,其余线程会根据各自的排队顺序来抢占锁,谁排在前面,谁就先获得锁。在 Redisson 中,对分布式 Redis 锁的公平性,就是说锁的获取需要按照先来后到排队,避免后来的请求“插队”。

2025-04-23 09:28:09 372

原创 对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手

随着人工智能的飞速发展,大语言模型(LLM)正在革命性地重塑用户与软件的交互范式。想象一下这样的场景:用户无需钻研复杂的API文档或者在繁琐的表单间来回切换,只需通过自然语言直接与系统对话——“帮我查找所有2023年出版的图书”、“创建一个新用户叫张三,邮箱是zhangsan@example.com”。这种直观、流畅的交互方式不仅能显著降低新用户的学习曲线,更能大幅削减B端系统的培训成本和实施周期,让企业应用变得更为简单和高效。这正是协议在应用层面所带来的价值体现。

2025-03-20 12:50:08 4427 30

原创 【分布式锁通关指南 08】源码剖析redisson可重入锁之释放及阻塞与非阻塞获取

有加锁自然就有解锁,本篇则将围绕锁的释放锁Lua脚本进行深入剖析,另外,还将对阻塞和非阻塞两张方式分别如何获取锁进行比较。

2025-03-17 16:08:35 525

原创 【分布式锁通关指南 07】源码剖析redisson利用看门狗机制异步维持客户端锁

在上篇中,我们梳理了redisson的可重入锁的加锁流程,而加锁必然就会有锁续期的问题,那么看门狗机制是维持锁续期的关键。因此,在本篇中我们将剖析redisson中的看门狗机制究竟是如何实现的。

2025-03-13 18:24:30 313

原创 Manus值得追捧吗?通过开源方案实测引发的思考

继DeepSeek在春节期间引爆大模型领域后,近期Manus又以"AI打工人"之称成功"破圈"。在中文互联网上,随处可见关于它的话题,从某鱼上卖到上万元的邀请码,到科技圈内外的热烈讨论。技术爱好者、内容创作者乃至普通用户都在争相体验这款号称能自动完成知识工作的AI助手。然而热潮之下,其真实能力与技术壁垒几何?作为技术从业者,我决定绕过高昂门槛,通过开源方案验证Manus的实际表现,希望提供一个基于实践的理性参考。

2025-03-11 15:39:50 849

原创 Spring Boot 3 整合 MinIO 实现分布式文件存储

文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。

2025-03-05 09:50:19 1557

原创 【分布式锁通关指南 06】源码剖析redisson可重入锁之加锁

在上篇中,我们基于spring boot整合redisson实现了分布式锁,接下来我会带领大家花一些时间来学习redisson如何实现各种锁,所以我们需要先从github上下载它的源码,本篇则先从可重入锁的相关实现开始来为大家做讲解。

2025-03-04 11:25:57 399

原创 【分布式锁通关指南 05】通过redisson实现分布式锁

一句话总结-redis的高性能客户端,我们选择它是因为它内部已经封装好了很多锁的实现,详细介绍可以通过redisson的Github主页来查看。

2025-02-28 16:18:41 617

原创 【分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理

在03篇中我们讲解了lua脚本的使用(Ps:如果你没跳过的话),目前我们通过api也好,lua脚本也好,已经基于redis实现了分布式锁,但看似完美的它其实还存在一些细节问题,本章节将会带领大家去探索这些细节并完善我们的分布式锁,并且在本章中还会为大家讲解一下“红锁”的算法原理。那么话不多说,开始我们今天的学习。

2025-02-27 10:34:15 1090

原创 Spring Boot 3 整合 Spring Cloud Gateway 工程实践

当前微服务架构已成为中大型系统的标配,但在享受拆分带来的敏捷性时,的复杂度也呈指数级上升。因此,我们需要构建来为系统“保驾护航”。本文将会通过一个项目(核心模块包含共 3 个微服务),采用注册中心与配置中心),分享如何构建一个微服务网关。

2025-02-24 15:50:15 1655

原创 DeepSeek全链路开发指南:从零搭建智能问答系统到API无缝对接【内含知识库实战】

DeepSeek凭借其强大的推理能力形成了破圈效应。当其他大模型还在知识库问答的泥潭里挣扎时,DeepSeek-R1通过,将复杂问题的解决准确率提升了37.6%。这直接导致了一个有趣现象:原本属于NLP工程师专属玩具的大模型,开始频繁出现在运维告警系统、电商客服工单甚至医院电子病历处理流程中。如果你也想接入DeepSeek开发企业级AI应用,那么——别划走!这篇可能是全网最干的DeepSeek实操指南👇✔️ 被知识库折腾到秃头的程序员✔️ 急需交付AI应用证明价值的团队。

2025-02-22 21:46:13 795

原创 【分布式锁通关指南 03】通过Lua脚本保证redis操作的原子性

官方介绍它是一种轻量小巧的脚本语言,设计的目的是为了嵌入应用程序,从而为应用程序提供灵活的扩展性和定制功能。redis支持嵌入Lua脚本,因此可以很方便地使用。安装过程很简单,本文不做赘述,直接移步官网下载即可,如遇到问题,善用一下你的搜索引擎即可。

2025-02-20 10:30:57 1366

原创 【分布式锁通关指南 02】基于Redis实现的分布式锁

在01篇文章中,我们深入探讨了单机锁的多种实现方式,并相信各位读者已经对它们有了较为全面的了解。然而,随着我们对单机锁的深入了解,不难发现它们所固有的一些局限性。因此,从本篇开始,我们将开始探讨分布式锁的相关内容。

2025-02-19 09:59:59 1021

原创 ✨️ 2024年终总结 - 23岁正是折腾的年纪 从开发到产品 | 日本旅行 | 捣鼓项目 | 技术写作与分享 | 五月天

相比于技术类分享,我其实不太擅长写年终总结,比如这篇写到这里的第一反应是:哥的模块化结构处理的真好啊,哈哈。但我又觉得这类型的文章还是有写写的必要,就像这次写的时候回看23年写的总结,有一种在看过去的自己感觉。最后引用一下坂本龙一的一句话送给大家:真实地活下去,不要忘记每天看月亮。

2025-01-17 18:20:42 926

原创 2023年终总结-一名23届毕业生的风雨秋招路

在我敲下最后一行的文字,是2023年的最后一天,不管这一年大家过的怎么样,新的一年都已经要到来了,就预祝各位掘友在新的一年都能实现自己的目标和愿望!

2025-01-16 11:11:25 721

原创 【分布式锁通关指南 01】从解决库存超卖开始加锁的初体验

在电商业务中,库存超卖问题就如同一颗定时炸弹,随时可能在高并发的环境下引爆。对于后端工程师来说,就需要为这颗炸弹加上防止爆炸的保险,从而避免因为超卖导致的资损问题。本系列文章就将从这个场景入手,一步步地为各位读者引入分布式锁的各种实现,从而让大家可以掌握分布式锁在常见场景的使用。

2025-01-15 09:29:31 1224

原创 SpringBoot整合Flowable【07】- 驳回节点任务

在06篇中我以查询历史绩效结果这个业务场景,来帮助大家熟悉和掌握相关API的使用,通过查询历史流程和变量来实现这个目的。回到我们本篇的博客,我们依然从业务场景出发,还是这个绩效流程,如果你的上级对你的自评结果不满意,他想要驳回让你重评;或者你自评后发现有遗漏填写数据需要补充,也需要上级给你驳回重填。通过以上的业务场景,我们可以发现其实驳回功能在实际业务中是一个很普遍且有用的功能。因此,在本篇中我们将学习如何对任务进行驳回。

2025-01-14 18:52:34 2230 1

原创 SpringBoot整合Flowable【06】- 查询历史数据

在05篇中我们学习了如何使用流程变量,如果业务需求为,其实流程变量就可以当“表单”使用的,K-V的结构几乎天然支持了这部分。但是,如果你的业务需求需要用户灵活定制流程变量,这里用文字说明可能有的同学不太理解,具体案例大家可以去参考,用户可以在每个节点自己定义和管理变量,这种场景流程变量就无法很好地支持了,就需要用到Flowable提供的来操作了。上述的内容其实是对流程变量的一个小结,可以让大家对有更好的理解,也是我们后续内容的一个预告。说回正题,前面我们多次提到了。

2025-01-14 18:52:25 1454

原创 SpringBoot整合Flowable【05】- 使用流程变量传递业务数据

首先,我们来看下流程变量的官方定义:在Flowable中,流程变量是在流程实例按步骤执行时需要保存并使用的数据,这些数据被称为变量(variable)。流程实例可以持有变量,这些变量被称为流程变量。我们目前只需要知道变量可以在Java服务任务中用于调用外部服务(例如为服务调用提供输入或结果存储),参考上面绩效分数的例子。我们在实际业务中执行任何流程都可能涉及到有数据流转,流程变量负责的就是在流程流转的过程中传递业务参数。

2025-01-14 18:52:16 935 1

原创 SpringBoot整合Flowable【04】- 通过代码控制流程流转

本次我们演示使用的模型就是上篇中在Flowable-UI中建立的绩效模型,因此我们需要把模型文件导出。在模型管理界面,我们绘制的模型在详情页都有导出选项。将导出的模型文件放到项目里,位置没有硬性要求,但建议放在resource目录下。虽然Flowable也可以在非Spring环境下使用,但我相信应该没人会拒绝SpringBoot,毕竟精力扑到业务和开发上,比折腾配置可有趣多了。我们需要在02篇配置的基础上添加Flowable相关的配置。2.部署流程完成了相关的配置后,我们来定义一个流程控制器并注入

2025-01-14 18:52:05 1501 1

原创 SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程

对于第一次使用Flowable,我们先采用官方提供的flowable-ui进行模型的绘制,让各位读者可以感受到整个流程的运行变化,从而在后期的编码中不会感到迷惑,这也是我本次选择使用7.0版本以下的flowable的原因(前文提过:官方将7.0以上的版本已经移除flowable-ui)。

2025-01-14 18:51:55 2013

空空如也

空空如也

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

TA关注的人

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