Ajax Zhan's Blog

Welcome!This is Ajaxzhan.
坚信:品味优先于执行,价值驱动下创造、系统工程保安全
持续跟进AI前沿研究,持续思考技术、产品与思维。

这是AI时代,也是一个酒神时代——新技术、新产品、新SOTA层出不穷,从传统大厂到创业公司到OPC到每个个体——每个人都在拼了命想赶上这波浪潮。

神奇的是,在感性和理性的拉扯中,我的理性在这一个月里面变得淡了许多,几乎没有占据过主导地位,感性倒是久不散去,给我带来了许多欢乐和痛苦。

只需要将VPN改成虚拟网卡模式,再打开Cursor的HTTP2.0模式就不会有模型被拦截的问题了,很神奇。解决了HTTP1.1网络环境太差的问题。

最近开始意识到一种很重要的能力——幽默,当然这种幽默不仅仅是对别人,更多是对自己的一种幽默。如果一个人都无法进行自嘲和对生活中的事情进行解构,那么这个人绝对会获得特别痛苦和憋屈,更不用说会产生什么有价值的思考了。所以保持一种对自己冷幽默的态度还是很重要。

兼具深度与启发性的分析,能有效帮助培养更敏锐的Research Taste:关于大海捞针是一个很好的评估长上下文的指标——https://www.zhihu.com/question/654570878/answer/1965228622118888157

AI的发展、LLM的发展太快了,落地的推进也很迅速,中国有无数能人志士正在各自岗位推动这件事情。今年看到的太多新闻都给我一种感觉:AI的浪潮不像是泡沫,未来3-5年AI的需求只会增加,不会减少。浪潮之下,要学习的东西还太多太多。

最近把MLLM当作OCR来用,大概就是识别图中的习题然后转成平台兼容的格式。这个过程中发现大模型的幻觉还挺可怕,他要是直接给你很离谱的错误也就罢了,他居然会给你修改选项中的一些细节,并且修改得很合理,让你完全看不出来。这种幻觉在很多领域我认为还是不可接受的,而且关键是怎么检测出来这种幻觉?如果还要靠人为来检测,那这种基于大模型的自动化工作流其实意义就大打折扣了。

今晚回顾了之前支教的照片,感慨颇深。想做一个好的老师,但确实做的不够好。

今天研究了Coze的Multi-Agent、豆包的语音合成大模型、开源的OpenWebUI和NewAPI,感觉都挺牛的,效果很令人振奋,可以试试组合起来做个项目。

同时我现在越来越觉得,不是为了追求技术而技术,而是要用技术做出真正的好产品,注重用户体验和实际价值。真正的好产品实在令人振奋,字节跳动公司推出的豆包语音系列效果震撼,飞书在办公方面做的绝绝子,今天实用了火山引擎的工单系统都觉得很nice。感觉字节的产品都很有灵气。

今晚看了看过去一年的日记,很有感触,记日记真的很有意思,只有通过当时的文字才能观照今日的自己是否已经成长了。我们需要隔一段时间询问一下自己:自己是否激情依旧,是否能留存有过去许下愿望那时的热情?

系统设计:如何使用AOP设计一个防重提交功能

本文介绍了防重幂等的概念及SpringBoot实现方案。防重幂等旨在防止用户重复提交相同数据导致业务异常,通过AOP+Redis实现。核心设计思路是:将用户路径、请求参数和Token生成唯一ID存入Redis,拦截重复请求。实现方案包括自定义@RepeatSubmit注解(设置间隔时间、时间单位和提示消息)和@RepeatSubmitAspect切面(前置验证、后置处理和异常处理)。切面通过MD5生成唯一标识,Redis存储限制同参数请求,业务成功则保留限制,失败则释放限制。测试验证了2秒内重复提交会触发异常,有效防止了重复提交问题。

开发札记:如何在业务中添加日志系统

本文详细介绍了SpringBoot中三类日志系统的开发实践:系统日志、登录日志和操作日志。系统日志基于Logback框架实现,配置控制台和文件输出,并集成p6spy进行SQL性能分析。登录日志采用SpringEvent事件机制,通过@Async注解实现异步监听,记录用户登录信息。操作日志通过自定义@Log注解和AspectJ切面实现,记录操作类型、请求参数等详细信息,同样使用异步处理提升性能。文章还深入讲解了线程池配置与@Async异步注解的使用,确保日志记录不影响主业务流程,实现高效可靠的日志管理。

开发札记:Validator注解配合国际化

本文详细记录了Spring Boot中国际化与Validator校验的配置及协同使用。首先通过i18n目录配置多语言资源文件(如messages.properties、messages_en_US.properties),结合Yml配置和自定义LocaleResolver实现请求头语言解析。封装MessageUtils工具类,支持异常信息与日志的国际化输出。随后集成Hibernate Validator,通过ValidatorConfig配置快速校验模式,并封装ValidatorUtils工具类。利用@Validated注解或编码方式实现实体校验,结合国际化资源文件(如@Size注解引用length.not.valid键值)实现动态错误提示。最后通过分组校验(AddGroup/UpdateGroup等)满足不同场景需求,提升开发效率与用户体验。

开发札记:基于Sa-Token构建权限系统实战

本文详细介绍了如何使用Sa-Token框架整合JWT实现登录鉴权和权限授权,并采用Redis作为数据持久层。文章首先说明了必要的Maven依赖和yml配置,包括token名称、有效期、JWT密钥等关键参数。随后通过自定义SaTokenConfig类实现拦截器功能,注入JWT模式、权限接口和Redis自定义DAO层。重点分析了登录验证流程,包括密码校验、token生成与Redis存储机制,以及基于注解和API的权限功能实现。文章还深入探讨了Sa-Token的源码架构,包括多级缓存策略、上下文持有类和拦截器原理,为开发者提供了完整的实战指南。

JVM基础:内存结构与垃圾回收

本文详细介绍了JVM内存结构与垃圾回收机制。内存结构分为线程共享(堆区、方法区)和线程私有(程序计数器、JVM栈、本地方法栈)区域,其中堆存储对象,方法区存放类元信息(JDK8后移至元空间),直接内存用于NIO优化。垃圾回收基于可达性算法,通过GC Root(如线程对象、类加载器等)判断对象存活,并支持强、软、弱、虚、终结器五种引用类型。回收算法包括标记清除(存在碎片)、复制(高效但空间利用率低)、标记整理(无碎片但效率低)及分代GC(年轻代复制算法+老年代标记整理),主流垃圾回收器有Serial(单线程)、CMS(低延迟)、Parallel(高吞吐)和G1(平衡延迟与吞吐)。

JVM基础:字节码文件与类加载器

JVM是Java虚拟机的核心,负责解释执行字节码、管理内存(含自动GC)和通过JIT编译优化热点代码。其规范支持多种语言运行,常见实现包括HotSpot、GraalVM等。JVM由类加载器、运行时数据区、执行引擎和本地接口组成。字节码文件包含魔数、版本号、常量池等结构,可通过jclasslib、javap或Arthas工具查看。类生命周期包括加载、连接(验证、准备、解析)、初始化等阶段,类加载器采用双亲委派机制保证安全,也可通过自定义类加载器、线程上下文类加载器等方式打破。

单元测试实践札记:JUnit

单元测试通过隔离依赖、拆分组件降低耦合,提升代码质量并减少bug,同时为重构提供保障。测试驱动开发(TDD)采用“先写测试再写功能”模式,能理清需求、设计接口,虽门槛高且需投入大量精力,但熟练后可提高效率。JUnit提供@BeforeAll、@Test等生命周期注解及断言方法,支持SpringBoot环境测试,并通过@ParameterizedTest实现带参测试。Maven的surefire-plugin可通过@Tag标签控制测试执行,如按环境分组或排除特定测试,确保打包前关键测试通过。

读书札记:重读罗洛.梅——解构焦虑和寻求慰藉

罗洛·梅《人的自我寻求》聚焦现代人泛化的失望与无意义问题,剖析空洞、孤独、焦虑的本质:空洞者缺乏自我感知,孤独源于对独立存在的恐惧,焦虑是心理冲突的信号。书中强调,人性如树需内在力量成长,理论的意义在于提供体系化思考,助我们建立自我体验(I-ness)、承担责任、创造性生活。通过增强自我意识、拥抱自由与责任、以勇气打破顺从、在爱中实现自我升华,我们能在不确定中找到方向,对抗焦虑与麻木,完成内修与自我整合,活出真实的生命体验。

Docker实践:部署前后端分离项目

本文记录了基于Docker的SpringBoot+Vue3项目部署全流程。首先在Ubuntu22服务器安装Docker及Docker Compose(国内环境采用apt安装解决网络问题);接着配置SpringBoot后端Dockerfile(基于openjdk:8-jdk-alpine)并打包Jar包,同时使用Vite构建前端项目并配置Nginx代理;通过docker-compose.yml编排MySQL5.7、Redis、Nginx及Java应用容器,实现数据卷挂载与端口映射;部署后重点解决常见问题:Maven打包需配置spring-boot-maven-plugin避免主类缺失,MySQL密码重置需修改my.cnf跳过权限校验,以及数据源问题需检查yml配置并注释多余依赖。最终通过`docker compose up -d`一键启动,实现前后端分离项目的容器化部署。

高人对话:个人学习金字塔构建思考

本文记录了作者对“学习金字塔模型”的学习感悟,该模型将学习分为六个阶段:不求甚解(概念理解)、找寻主干(原理拆解)、达成最小目标(demo实证)、构建知识树(全局整合)、迭代计划(问题驱动)、关键点突破(内化与顿悟)。文章强调实践是养成思考习惯的核心,迭代优于增量堆砌,需通过demo验证理论、复盘总结,再以问题驱动知识树演进。作者作为大二学生,正以此模型构建思维体系,平衡写作、管理等能力,探索IT行业成长路径,力求通过渐修实现顿悟。