所有文章
Docker 入门指南
Docker是一种轻量级容器技术,利用Linux命名空间和控制组实现资源隔离,解决了环境依赖和部署效率问题。它将应用及其依赖打包为可移植的镜像,支持"一次构建,到处运行"。核心组件包括镜像、容器、Dockerfile和仓库,通过标准化流程简化开发部署。相比虚拟机更轻量高效,适用于微服务、CI/CD等场景。最佳实践包括多阶段构建、避免root运行等。Docker已成为现代云原生开发的重要基石。

Spring Security实战-构建安全的Web应用
本文深入解析了Spring Security框架的核心机制,涵盖其基于Servlet过滤器的架构、关键组件(如UserDetails、UserDetailsService、Authentication等)及完整认证流程。详细介绍了如何通过配置HttpSecurity实现URL授权、登录/登出管理、"记住我"功能及CSRF防护,并阐述了Thymeleaf与安全上下文的集成方式。文章特别强调了统一用户信息展示的解决方案,确保表单登录、OAuth2和"记住我"等多种认证方式下都能正确获取用户数据。

一个草稿箱功能的实现
本文详细介绍了如何从零实现一个“自动保存草稿”功能,分为三个阶段:首先通过手动保存建立基础,随后利用防抖技术和状态管理实现无感自动保存,最后总结了排错经验(如浏览器缓存和代码结构问题)。整个过程强调了用户体验优先、清晰的状态管理及规范的代码结构,最终打造出可靠的草稿自动保存系统。

Spring Boot 多数据源配置指南:从自动配置到手动掌控
本文介绍了如何在Spring Boot中配置多数据源。首先解析了默认的`DataSourceAutoConfiguration`机制及其单数据源限制,然后通过禁用自动配置并手动创建多个`DataSource` Bean实现多数据源管理。详细步骤包括:在YML中定义独立配置、使用`@Primary`和`@Bean`注解注册Bean,以及通过`@Qualifier`解决依赖注入歧义。最终实现MySQL和PostgreSQL双数据源的精准控制,帮助开发者从自动配置进阶到手动掌控。

对象创建的艺术:建造者模式
建造者模式优雅解决复杂对象创建问题。通过链式调用逐步设置参数,避免构造函数参数爆炸,提升代码可读性和灵活性。以咖啡点单系统为例,建造者模式支持按需配置各种可选属性(如糖浆、牛奶类型),并通过`build()`方法统一校验,确保对象合法性。适用于参数多、可选参数多、需创建不可变对象的场景。

Spring AI 指南:如何自主构造 ChatMemory
本文介绍了如何在Spring AI框架中自定义`ChatMemory`接口以管理对话上下文,重点解析了其核心方法(添加、获取、清空消息),并通过实战演示了基于文件存储的`FileBasedChatMemory`实现,使用Kryo序列化持久化对话历史。同时对比了`ChatMemory`与更底层的`MessageStore`接口的适用场景,建议根据需求选择直接实现`ChatMemory`或通过`MessageStore`简化存储方案。

Comparator 与 Lambda 表达式结合使用
摘要:Comparator作为函数式接口,与Lambda表达式结合可简化排序代码。传统匿名内部类冗长,Lambda只需核心比较逻辑,如`students.sort((s1, s2) -> s2.getAge() - s1.getAge())`。Java 8的`Comparator.comparing()`支持方法引用、链式排序(`.thenComparing()`)、降序(`.reversed()`)及null值处理(`nullsFirst/Last`),使代码更简洁安全。

Comparator 与 Comparable 的比较
`Comparable`是内部比较器,定义类的自然排序,需实现`compareTo`方法;`Comparator`是外部比较器,提供灵活的自定义排序,通过`compare`方法实现。前者侵入性强但单一,后者无需修改类且支持多规则排序。
