- 博客(20)
- 收藏
- 关注
原创 从“手搓工具”到“MCP”:AI Agent 调用工具的演进之路
今天想跟大家聊一个刚入门的朋友觉得有点玄乎的概念——MCP(模型上下文协议)。别被这名字吓到。如果你已经了解或者接触过AI Agent开发,八成自己动手写过“工具调用”。我们顺着这条路走走看,你就能明白MCP到底解决了什么问题。
2026-07-13 11:03:14
169
原创 从 BeanUtils 到 MapStruct:一个关于“偷懒”的技术演进故事
本文介绍了Java对象属性拷贝的两种方案:BeanUtils和MapStruct。文章首先展示了新手常用的BeanUtils.copyProperties方法,指出其在项目初期简洁高效,但在高并发场景下因反射机制导致性能瓶颈(可能占用30% CPU时间),并存在浅拷贝问题。随后重点解析MapStruct的优势:编译期生成代码(无反射开销)、支持深拷贝、类型安全,并通过案例对比两者性能差异(MapStruct接近原生get/set速度,比BeanUtils快4-10倍)等等....
2026-07-12 15:16:37
353
原创 搞定 Jackson:SpringBoot默认的Json工具
本文介绍了Java中处理JSON的演进过程,从早期手动拼接字符串到使用专业工具库。重点讲解了Jackson的核心用法,包括: 基础使用:通过ObjectMapper实现对象与JSON互转 常用注解:@JsonProperty、@JsonIgnore、@JsonFormat等字段控制技巧 高级功能: 泛型反序列化使用TypeReference 多态类型处理通过@JsonTypeInfo 自定义序列化器实现数据脱敏和Long精度保护 @JsonAnySetter处理动态属性
2026-07-10 10:00:42
332
原创 Lombok 透明小助手
摘要: Java开发者常因繁琐的模板代码(如getter/setter、toString等)困扰,Lombok通过编译期自动生成代码解决了这一问题。文章详解Lombok的核心功能。
2026-07-10 09:16:29
351
原创 CAS 机制
CAS(Compare-And-Swap)是一种乐观锁机制,通过硬件级原子操作实现线程安全。相比synchronized阻塞式锁,CAS采用"尝试-失败重试"策略:读取当前值,计算新值,当且仅当原值未被修改时才更新。这避免了线程阻塞但可能导致ABA问题(通过版本号解决)、CPU空转(使用LongAdder分流)和单变量限制(组合操作用AtomicReference)。
2026-07-09 10:29:14
360
原创 共享模型之管程:synchronized
本文探讨了Java多线程编程中的管程(Monitor)概念及其实现方式synchronized。通过一个计数器的例子,展示了多线程环境下因指令交错导致的竞态条件问题,并解释了临界区和原子操作的重要性。文章详细介绍了如何通过synchronized关键字实现对临界区的互斥访问,包括对象锁、方法锁和静态方法锁的区别,并通过"八锁"案例分析了不同锁对象的互斥关系。此外,还讨论了变量线程安全性的判断规则、线程安全类的使用注意事项,以及不可变类的天然线程安全特性。最后,文章以银行柜台为比喻形象解释
2026-07-09 09:02:39
860
原创 聊聊Java线程:从“一个人干所有活”到“团队协作”
本文深入讲解了Java线程的核心概念与应用,重点包括: 线程创建方式:继承Thread类、实现Runnable接口、Callable+FutureTask组合,分析各自适用场景和返回值处理差异。 线程协作机制: join()实现主线程等待、sleep()定时暂停但保持锁、yield()礼貌让出CPU、wait()/notify()基于条件等待的线程通信、线程中断原理: interrupt()作为信号机制的本质、处理sleep中断时标记被清除的陷阱、两阶段终止模式的实现关键、线程状态转换、守护线程特性
2026-07-08 15:35:16
550
原创 JUC并发基本概念
这篇文章介绍了Java并发编程的基础知识,主要包括: 线程安全问题的产生原因:通过计数器示例展示多线程下count++操作的非原子性导致的结果不一致问题。 解决方案对比: synchronized同步方法(悲观锁) AtomicInteger原子类(基于CAS的乐观锁) 进程与线程的核心概念、并发与并行的区别
2026-07-08 10:42:59
219
原创 CodeGraph:为 AI Agent 打造的“代码地图”
CodeGraph是一款本地优先的代码智能工具,通过解析代码AST构建知识图谱,提升AI编程助手(如ClaudeCode)的代码检索效率。核心功能包括:查询函数调用链、分析修改影响范围、生成任务上下文等。优势在于可减少71%工具调用次数、降低57%Token消耗,且完全本地运行保障数据隐私。支持Node.js安装,通过简单命令即可初始化项目索引,与主流AI编程工具无缝集成。特别建议全栈项目在前后端子目录分别初始化,避免索引混乱。典型应用场景包括代码搜索、依赖分析、架构概览等,大幅提升开发效率。
2026-07-07 10:48:34
824
1
原创 模型参数设置
摘要:大模型通过参数(Temperature、Top_p、Top_k)控制文本生成。Temperature调节概率分布的陡峭程度,低温输出保守,高温增加随机性;Top_p(核采样)动态筛选高概率词集,避免低质量输出;Top_k固定候选词数量,但灵活性不如Top_p。其他参数如重复惩罚可优化结果。不同场景需调整参数组合,例如代码生成宜用低温(0~0.2),创意写作可调高温(1.2+)配合Top_p=0.9~1.0。
2026-07-06 17:17:35
383
原创 Java 集合精讲:理解原理
本文深入解析Java集合框架的核心原理,重点涵盖底层数据结构和扩容机制,不涉及并发安全集合。主要内容包括: 集合框架体系:分为Collection(List、Set、Queue)和Map两大体系
2026-07-02 13:29:18
359
原创 Java四大内部类用法精讲
本文系统介绍了Java内部类的概念、分类及使用场景。内部类分为局部内部类(含匿名内部类)和成员内部类(含静态内部类),具有访问外部类私有成员、隐藏实现细节等优势。局部内部类定义在方法/代码块中,不能添加访问修饰符;匿名内部类适合一次性使用场景;成员内部类依附外部类实例;静态内部类独立于外部类实例,常用于Builder模式等场景。文章详细分析了各类内部类的语法特性、访问规则及典型应用,并指出潜在的内存泄漏风险和JDK8后的Lambda优化方案,为开发者提供了全面的内部类使用指南。
2026-06-24 17:59:06
177
原创 Java 接口精讲:基于 JDK 版本演进的完整指南
本文系统梳理了Java接口的演进历程和核心特性。从JDK7仅支持抽象方法和常量,到JDK8引入默认方法、静态方法和函数式接口(配合Lambda表达式),再到JDK9支持私有方法,接口功能不断增强。文章通过代码示例演示了各版本特性,并对比了接口与抽象类的适用场景:优先使用接口实现多态和行为规范,仅在需要维护对象状态或更细粒度访问控制时选择抽象类。最后通过支付系统案例展示了接口的实际应用,帮助读者深入理解接口在Java编程中的核心地位。
2026-06-12 11:22:42
474
原创 Java抽象类详解
本文深入讲解了Java抽象类的核心概念与设计思想。通过代码示例详细介绍了抽象类的语法特性:1)使用abstract关键字定义,可包含成员变量、构造器、抽象方法(无实现)和普通方法;2)不能被实例化,子类必须实现所有抽象方法(除非子类也是抽象类);3)构造器用于子类初始化。文章通过动物叫声和饮料制作两个案例,展示了抽象类在代码复用、约束子类行为以及模板方法模式中的应用价值,特别是如何通过抽象方法强制子类实现特定功能,同时保留通用的方法流程。
2026-06-12 10:06:41
256
原创 Java多态的转型
Java中的向上转型和向下转型是多态性的重要实现方式。向上转型是子类对象隐式转为父类引用,自动完成且安全,但只能访问父类成员(重写方法除外);向下转型是父类引用显式转为子类类型,需强制转换且存在风险,必须用instanceof检查。向上转型实现代码通用性(如支付系统处理多种支付方式),向下转型用于调用子类特有方法(如图形系统调用圆形填充功能)。关键区别在于:向上转型是安全的隐式转换,向下转型是可能不安全的显式操作。使用时需注意成员变量无多态性、静态方法不受影响等特性,向下转型前务必进行类型检查。
2026-06-11 17:45:28
465
原创 Java 浅拷贝与深拷贝详解
摘要: 浅拷贝仅复制对象的第一层字段(基本类型复制值,引用类型复制地址),导致原对象和拷贝对象共享内部引用对象,修改会相互影响;深拷贝则递归复制所有引用对象,生成完全独立的新对象。代码演示中,浅拷贝通过Object.clone()实现,而深拷贝可通过重写clone()方法、使用拷贝构造器或序列化实现。深拷贝安全性高但性能较低,适合需要对象隔离的场景;浅拷贝高效但需注意共享引用风险。扩展内容涵盖不可变类的特殊行为、序列化原理及transient关键字的作用。
2026-06-11 10:52:20
366
原创 Java的值传递与“引用传递”
Java参数传递机制详解:只有值传递,没有引用传递。对于基本类型,传递的是数值拷贝;对于引用类型,传递的是对象地址值的拷贝。通过代码验证发现:1)修改对象属性会影响原对象;2)改变形参引用指向不会影响实参。关键区别在于:值传递传递的是拷贝值(包括地址值),而非原始变量本身。因此Java本质是值传递机制,引用类型传递的是地址值的副本。
2026-06-09 16:42:40
537
原创 Flyway-数据库的“版本控制系统”
本文介绍了Flyway数据库迁移工具的基本原理及SpringBoot集成实践。Flyway通过版本化SQL脚本实现数据库变更管理,自动维护flyway_schema_history表记录执行状态,确保多环境数据库结构一致。
2026-06-09 13:50:07
713
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅