- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 java中lambda表达式到底是个啥?
所以, 总结下来, Lambda表达式在大多数情况下, 是会被编译成静态方法, 当程序运行时, 根据生成的字节码, 通过invokeDynamic调用生成的这个静态方法。
2025-03-31 22:39:10
1573
原创 多线程入门到精通系列05: 全面解析Executor, ExecutorService, Executors
为什么这里返回的executor不能调用shutdown()方法?这正是因为没理清Executor和Executors的关系。本文将从核心接口关系讲起,结合实战案例,让你既懂原理又会落地。
2025-09-26 09:47:37
666
原创 多线程入门到精通系列04: 异步编程Future/CompletableFuture 全场景实战- JAVA8最新写法
本文旨在帮你在 10 分钟内掌握 CompletableFuture 的核心用法。通过四个高频实战场景,你将学习如何用它实现并行聚合、竞速择优、流程编排和超时降级。每个案例都遵循 "需求分析 → 设计思路 → 代码实现" 的结构,让你不仅会用,更理解为何这么用。核心用法速查表场景核心方法关键代码示例1. 发起异步任务runAsyncexecutor2. 任务依赖thenApply3. 多任务并行allOf4. 多任务竞争anyOff1, f2)5. 异常处理handle).handle(
2025-09-26 09:47:18
1128
原创 多线程入门到精通系列03: synchronized 到 JUC 锁 底层原理+代码实战
从到 JUC 锁,Java 并发工具的设计始终围绕“平衡安全性与性能”优点:语法简洁、自动释放锁、JVM 优化(锁升级);缺点:功能单一(无法中断、超时)、重量级锁性能开销大;适用:简单同步场景,或作为基础理解锁的原理。Volatile优点:轻量级,保证可见性和有序性;缺点:无法保证原子性;适用:状态标记、单例模式、避免 CPU 缓存假死等场景。JUC 锁(等)优点:功能丰富(可中断、超时、公平锁、读写分离)、性能更优(读多写少场景);缺点:需手动释放锁(易引发死锁)、语法相对复杂。
2025-09-10 07:32:41
1102
原创 Spring AI 企业级应用开发:从 0 到 1 实现智能客服系统(含全栈代码)
我们要开发的智能客服系统具备以下核心功能:产品咨询:解答用户关于产品的价格、功能、使用方法等问题订单处理:查询订单状态、修改收货地址、申请退款等故障排查:通过对话引导用户定位和解决产品使用问题工单创建:当 AI 无法解决时,自动创建人工服务工单系统架构采用经典的三层结构:前端(React)→ 后端(Spring Boot + Spring AI)→ 数据层(MySQL + Redis)提示词工程:为不同场景设计专用提示词模板,明确任务边界和输出要求上下文工程。
2025-09-08 13:08:06
1090
原创 多线程入门到精通系列02: JDK源码理解3种方式与核心API
实现方式优点缺点适用场景继承 Thread实现简单,直接操作线程单继承限制,任务与线程耦合简单任务,无继承需求实现 Runnable避免单继承,任务可共享无返回值,无法抛受检异常多线程执行相同任务实现 Callable+Future有返回值,可处理异常需配合线程池,稍复杂需要获取任务结果的场景高手建议:优先选择 Runnable 或 Callable,因为它们更符合面向对象设计原则,且能更好地与线程池配合(线程池只接受 Runnable/Callable 任务)。
2025-09-08 13:07:41
884
原创 多线程入门到精通系列01: 从操作系统到 Java 线程模型
本文从操作系统底层到 Java 线程模型,讲解了线程的本质:线程是 CPU 调度的基本单位,比进程更轻量Java 采用 1:1 线程模型,线程状态与操作系统状态有映射关系线程不是越多越好,上下文切换有性能代价理解这些基础,是掌握多线程编程的前提。下一篇《多线程入门到精通系列: JDK源码理解3种方式与核心API》,我们将详细讲解 Java 创建线程的 3 种方式,以及start()join()sleep()等核心方法的正确用法,敬请期待。
2025-09-04 16:25:08
728
原创 ThreadLocal 详解:从原理到实践
ThreadLocal 通过为每个线程提供独立的变量副本,巧妙地解决了多线程环境下的变量共享问题。它的核心价值在于:提供了一种便捷的线程内数据共享方式避免了复杂的参数传递在特定场景下简化了线程安全的实现。
2025-09-04 16:24:42
861
原创 Agent-MCP-Workflow的关系 JAVA+SpringBoot代码实战
3.1 任务上下文(TaskContext.java)@Data// 任务唯一ID(自动生成)// 周报时间范围(如“2024-08-19至2024-08-25”)// 额外参数(如“是否包含图表”“重点分析维度”)3.2 MCP 统一返回格式(McpResult.java)@Data// 状态:success/failed// 任务ID(关联上下文)// 数据(成功时返回结果)// 错误信息(失败时返回)// 时间戳。
2025-08-25 13:32:18
1133
原创 原创手撕-设计模式之观察者模式
观察者模式是一种非常实用的设计模式,它通过建立对象之间的一对多依赖关系,实现了对象之间的解耦,使得系统更加灵活和可扩展。在实际开发中,当遇到需要一个对象的状态变化通知其他多个对象,而又不想让它们之间形成紧耦合时,观察者模式是一个很好的选择。通过观察者模式,我们可以将系统中的事件发布和事件处理解耦,使得系统各组件之间的依赖关系更加清晰,提高了系统的可扩展性和可维护性。这种设计方式在事件驱动、消息通知、状态监控等场景中尤为适用,能够很好地应对需求的变化和系统的扩展。
2025-06-16 19:43:40
689
原创 原创手撕-设计模式之责任链模式
责任链模式是一种非常实用的设计模式,它通过将请求的发送者和接收者解耦,使得系统更加灵活和可扩展。在实际开发中,当遇到需要多个对象处理同一个请求,并且不希望请求的发送者知道具体由哪个对象处理时,责任链模式是一个很好的选择。通过责任链模式,我们可以将复杂的处理流程分解为多个简单的处理器,每个处理器只负责自己的逻辑,然后通过责任链将它们连接起来,形成一个完整的处理流程。这种设计方式不仅提高了代码的可读性和可维护性,还使得系统更加灵活,能够轻松应对需求的变化。
2025-06-16 18:43:02
755
原创 原创手撕-设计模式之策略模式
策略模式是一种行为型设计模式,其核心思想是:将算法家族封装成独立的策略类,使它们可以相互替换,从而让算法的变化独立于使用算法的客户端。通俗来说, 就是把一堆if else的逻辑代码块, 封装到不同的实现类里面。策略接口(Strategy):定义所有策略的公共接口具体策略类(Concrete Strategy):实现具体算法上下文类(Context):持有策略接口引用,负责调用策略实战重构:用策略模式改造促销系统// 促销策略接口。
2025-06-07 16:06:29
529
原创 原创手撕-设计模式之访问者模式
访问者模式是一种行为型设计模式,其核心思想是将数据结构(如对象集合)与作用于该结构上的操作(算法)分离。通过定义一个独立的 “访问者” 类,封装对不同类型对象的操作,使得新增操作时无需修改原有数据结构的类,只需新增访问者子类即可,符合 “开闭原则”❓❓看不懂没关系!!!记住下面就够了1底层实现:通过方法重写(Override)和重载(Overload)实现双分派机制。2适用场景数据结构稳定(如固定的股票类型、商品类别),但操作频繁变化(如不同节日的促销规则)。典型场景。
2025-05-26 19:06:25
750
原创 内力提升 之 理解分派 - 访问者模式的精髓
Java 方法调用的 “反直觉” 表现源于分派机制时机维度按时机来说, 分派有静态分派(编译时) , 动态分派(运行时).静态分派-重载动态分派-重写按维度来说, 有单分派, 双分派单分派:仅一维类型判断(声明或实际类型)。双分派:需二维类型协作(如元素类型 + 操作类型),Java 需通过访问者模式实现,通过两次动态调用解耦多维度逻辑。核心结论:分派维度决定代码灵活性,双分派是复杂场景下的解耦关键,访问者模式是 Java 的标准解法。
2025-05-23 18:41:53
761
原创 《AI小白到大黑:一文讲明白机器学习中的矩阵操作, 非常重要, 理解Transformer前提》
最近疯狂学习机器学习的过程中,我发现矩阵计算无处不在,尽管代码里一个函数调用就能完成矩阵操作,但只有真正理解其背后的含义,才算真正踏入机器学习的大门。今天,我就用最通俗易懂的语言,带大家认识矩阵的操作,保证让你轻松明白!
2025-05-10 19:52:57
1668
原创 Java 21 sealed + permits 实际应用场景
Java 21 前,类和接口可被任意继承 / 实现,可能引发代码安全与维护问题。若开发的框架被引用且不希望接口被外部实现,缺少sealed和permits会导致实现不便。sealed:用于修饰类或接口,表示该类或接口只能被特定的类继承或实现。permits:用于指定哪些类可以继承或实现被sealed修饰的类或接口。首先,我们定义一个被sealed修饰的接口,并使用permits指定哪些类可以实现它。// 定义一个密封接口,只允许指定的类实现// 处理请求的方法在这个例子中,Handler。
2025-04-23 14:17:49
705
原创 《AI小白到大黑:SpringAI 集成 OpenAI, Chat》
找到 来快速生成项目骨架。注意Initializr界面选择version Spring Boot >= 3.4.0 and < 3.5.0-M1,这里我选择 3.4.5。中添加 OpenAI API Key以及baseUrl,如果用雷丰阳分享的apiKey,用。点击Generate, 然后解压,用IDEA打开解压后的项目,如下。,否则用openAi的官网url。根目录的pom.xml。
2025-04-23 13:47:31
509
原创 《AI小白到大黑:神经网络,绝对能看懂 03》
然后, 用计算出来这个权重-误差负责 的向量矩阵(output_gradient),乘以input的随机权重,就能得到每个权重在这一轮应该更新多少,即每个权重在这个梯度上的调整体现为多少。所以,这里我们用误差,乘以激活函数的导数,能得出来这一轮每个权重在激活函数的运算下对于这个误差要调整多少,即梯度。然后,我们随机一个权重来触发这个学习, 反正后续反向传播会调整这个权重, 所以这里随机权重不影响。小李的结果用来验证output是否正确,然后反向传播来调整参数,所以小李的结果是目标输出。
2025-04-22 10:40:05
666
原创 《AI小白到大黑:神经网络,绝对能看懂 02》
在上一章中, 我们了解了全连接神经网络的作用: 通过输入,算出输出,输出可以是概率,也可以是分布,输出形式取决于具体任务 ——,以及。
2025-04-22 10:39:26
257
原创 《AI小白到大黑:神经网络,绝对能看懂 01》
在机器学习以及大模型的架构中, 神经网络都是非常重要的概念, 弄懂了神经网络的原理, 对于后面的学习会加速, 本文会介绍神经网络的基本概念, 然后手搓一个神经网络, 看完本文绝对能懂注: 本文所有内容都通过AI来验证过, 所以小白们放心去看, 通俗易懂。
2025-04-22 10:38:39
413
原创 效率篇 - MacOS下 IDEA显示类文件字节码
在研究JVM的时候, 需要结合类的字节码来看, IDEA可以通过添加external tools 来快速的查看类文件的字节码。本文的环境是MacOS。
2025-03-29 17:42:32
246
jsp与flex的整合直接拷贝就可以用
2013-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅