- 博客(1781)
- 资源 (3)
- 收藏
- 关注
原创 Spring核心容器揭秘:为什么Spring Context是大厂面试必问?
为什么用?因为纯注解更简洁。ApplicationContext和BeanFactory的区别,从功能性和实际应用入手,给出有理有据的回答。说到Context就离不开依赖注入、生命周期管理和事件传播,这些面试官都喜欢听。
2025-05-20 09:56:45
133
原创 小米带你玩转LangChain4j:向量化存储与智能查询实战分享
在自然语言处理(NLP)领域,向量化的概念并不新鲜。说白了,就是把文本转换成机器能理解的“数字串”。这背后的黑科技就是Embedding模型。1、工作原理大家有没有想过,我们平时说的话、写的字,对于计算机来说,根本就是一串乱码。为了让机器理解我们的语言,Embedding模型就出场了。“把离散的文本数据映射到连续的向量空间中。举个栗子吧:假设我们有两个词——“苹果”和“香蕉”。苹果:[0.1, 0.8, 0.3, 0.5]香蕉:[0.2, 0.7, 0.4, 0.5]看出什么了吗?
2025-05-19 09:39:17
432
原创 春招季面试,Spring 的设计模式考点来了!
哈喽大家好,我是小米,一个在互联网行业摸爬滚打多年的程序员,虽然已经 31 岁了,但依然热爱技术分享,尤其是和小伙伴们一起学习进步!最近春招如火如荼,后台有不少小伙伴私信我:“小米,我去面试 Spring 开发岗位,我支支吾吾说了一些,感觉不够全面,怎么办?没错,这类问题真的太常见了,尤其是社招面试中,面试官总喜欢考一些既基础又深入的知识点,来判断你对框架的理解深度。
2025-05-17 10:30:28
481
原创 Spring3模块化架构:7大核心模块全解,拿下面试不犯愁!
Spring3作为经典的Java企业级开发框架,凭借灵活的模块化设计,在项目开发中大显身手。了解这些模块,不仅能助你面试加分,还能让你写代码更高效、更优雅。
2025-05-16 09:36:38
661
原创 为什么大厂都在用Spring?5分钟带你看透它的设计精髓!
Spring是社招面试中的常客,掌握它就是Java程序员的必备技能。Spring是什么?怎么用?优缺点?啥场景?只要把这些知识点搞透,面试时淡定自如不慌张!希望今天的分享能帮到大家,祝愿正在准备面试的小伙伴都能一举拿下心仪Offer!
2025-05-15 09:48:54
587
原创 SpringMVC 面试高频!WebApplicationContext 原理与实战解析
走出面试室,我心里感觉轻松不少。回顾这次面试,WebApplicationContext 真是个面试常客!它是 ApplicationContext 的扩展,专为 Web 场景设计。与 DispatcherServlet 紧密关联,加载和初始化时息息相关。多 DispatcherServlet 独立运行,容器间不会互相干扰。在接下来的面试复习中,我决定多花时间在一些“常考却容易疏忽”的知识点上,比如 SpringMVC 的底层原理和容器机制。希望大家也能从这篇文章中学到一些干货,面试时不再慌!
2025-05-14 09:53:21
671
原创 让你的对话系统飞起来!LangChain4j + GraalVM动态调用指南
LangChain4j虽强,但在函数调用上略显笨重。今天,小米带你用GraalVM打破限制,实现动态函数调用,不改代码就能灵活扩展功能,让你的对话系统飞起来!
2025-05-12 10:05:55
593
原创 告别“傻乎乎”模型,LangChain4j 函数调用带你飞!
函数调用是 LangChain4j 赋能 LLM 的关键利器,不仅让模型具备实时数据查询、自动化办公,还能灵活应对复杂业务场景,解锁 AI 新技能!
2025-05-11 12:38:05
540
原创 面试官灵魂拷问:Spring MVC拦截器到底怎么写?
Spring MVC拦截器是Java社招面试中的“灵魂拷问”之一,不仅考察基础,还涉及实际项目中的应用。今天小米就带你深入了解拦截器的生命周期、配置方法,以及常见的“踩坑”场景,助你轻松拿下面试官的刁难!
2025-05-10 13:34:34
936
原创 Maven不用install也能跑Spring Boot?你知道为什么吗?
话说,今天在公司,刚入职的小明跑过来,眼神中带着一种莫名的敬佩:“小米哥,我遇到个事,怎么都想不通!新拉的Spring Boot项目,Maven居然不用install,直接运行mvn spring-boot:run就可以启动服务,这是为啥呀?我听完,笑了笑:“这事儿啊,别急,来,咱们坐下,给你慢慢讲讲。
2025-05-09 09:36:07
618
原创 10分钟掌握Spring MVC高频注解,用这个套路稳过社招面试!
大家好呀,我是小米,一枚31岁的程序员,已经混迹Java江湖十来年,经历过大小公司、裁员风波,也熬过年会自费、凌晨部署上线的深夜时光。结果面试官一句话接着一句,追问得我节节败退。也正是这次经历,让我真正系统梳理了Spring MVC的核心注解。现在我也来“还原现场”,一边讲故事,一边分享,保你面试不慌!
2025-05-08 09:35:27
421
原创 别背八股了,用这个故事让你彻底理解Spring MVC核心机制!
一图胜千言,文字版总结如下:是不是一整个前后端协同、模块解耦、职责清晰的系统设计呢?这就是 Spring MVC 牛的地方!DispatcherServlet 是 Spring MVC 的核心调度器,负责请求的分发与响应的输出;MVC 的每一步(Mapping、Adapter、View、Render)都解耦且可扩展;理解架构设计思路,比背套路题更重要!
2025-05-07 10:24:49
480
原创 “返回个啥玩意儿?”用LangChain4j优雅格式化LLM结果!
终于来到最强的部分!你可以让 LangChain4j 把模型返回的结构化数据,自动映射到你定义的 Java 类上。比如我们定义一个 POJO:然后定义服务接口:LangChain4j 会使用 Jackson 或者 Gson(具体视你依赖而定)来解析 JSON,并自动转为 Java 对象!只要模型能返回类似这样的结构化数据:你就能直接拿到一个 Java 对象,无需手动解析。是不是香爆了?万一 LLM 返回的格式不是 JSON,而是:那该怎么办?
2025-05-06 09:39:45
564
原创 还在担心上下文丢失?LangChain4j 聊天记忆解决方案来了!
InMemoryChatMemoryStore 是默认的内存实现,但生产环境可不能靠内存撑着。我们可以实现 ChatMemoryStore 接口,来自定义存储策略。比如写个 Redis 持久化方案:写入 MySQL;序列化成 JSON 文件;存 MongoDB等等。只要你愿意折腾,LangChain4j 都支持你!如果你也在构建基于 LangChain4j 的智能对话系统,不妨深入研究一下 ChatMemory 机制,它真的是提升用户体验的“隐藏王牌”。
2025-05-05 13:31:45
957
原创 “看图说话”的AI来了!用LangChain4j+DashScope搞定视觉理解!
以前我们总说“大模型只能聊天”,现在它已经能看图说话、理解流程、分析视觉内容,这让我们离“AI 理解世界”更进一步。对我们 Java 开发者来说,LangChain4j + DashScope 多模态,是真正意义上——从‘能对话’走向‘能观察’!我真心希望这篇文章能帮到你,也欢迎把它转发给所有正在研究多模态 AI 的小伙伴们。
2025-05-03 21:36:39
555
原创 Java 玩转 AI 聊天?LangChain4J 三种流式响应方式全解析!
在讲代码前,我想先和大家讲个故事。我们做的这个 Chat 项目,是一个面向用户的“智能客服小助手”。一开始我们返回的就是普通的完整文本响应,但有个用户反馈说:“你这个AI聊天有点冷冰冰的,一下子说一大段话,看起来不太真实。我就想到 ChatGPT 的流式输出,那个一字一句逐渐滚出来的感觉真的非常棒,不仅增强了“智能感”,还能提升响应体验,尤其是大模型响应时间长时,用户不会觉得卡住了。于是我就开始研究 LangChain4J 的流式能力——果然,它是支持的!而且支持得很优雅!
2025-05-02 13:54:50
692
原创 99%的人都答错了!Spring MVC 控制器到底是不是单例?怎么破局?
最后,总结一下,社招面试我怎么答的:面试官问:“Spring MVC 控制器是单例的吗?如果是,有什么问题?怎么解决?我答:Spring MVC 的控制器默认是单例的,由 Spring 容器管理。单例本身没问题,但如果 Controller 里存在可变的成员变量,在多线程并发请求下会引发线程安全问题。最推荐:保持 Controller 无状态,只通过方法参数传递数据;必要时可以将 Controller 设为请求作用域(@Scope("request"));
2025-05-01 13:57:08
861
原创 硬核干货 | Phaser:比CyclicBarrier更灵活的多阶段同步神器!
因为我机智地回答了 Phaser 的定义、用法、优缺点、场景,还顺便补充了 CountDownLatch 和 CyclicBarrier 的对比,面试官连连点头!然后...我就收到了Offer!!(而且薪资比原本预期多了0.5K呢,嘿嘿嘿)Phaser 是一个支持动态注册、动态注销、多阶段推进的高级同步器,适合线程数量动态变化、多阶段同步的场景,比 CountDownLatch 和 CyclicBarrier 更加强大灵活!记住这句话,面试必杀技!
2025-04-29 09:33:25
535
原创 Exchanger 到底能干嘛?99% 的程序员都没用过的 Java API!
我知道很多人在刷题时更偏爱热门的 ReentrantLock、ThreadPoolExecutor、Semaphore,但其实像 Exchanger 这种“冷门 API”也是 Java 并发世界中不可忽视的宝藏。会用工具,是初级程序员;知道什么时候该用什么工具,是中高级程序员;懂得底层原理,能优化使用场景,是架构师。所以,别看 Exchanger 平常用得少,但它在对的地方能发挥出 100% 的威力。
2025-04-27 09:38:25
811
原创 传统线程已死,虚拟线程当立!Java并发进入新纪元
好啦,这就是我答应华哥的一篇虚拟线程科普文。你如果也在搞后端开发,或者对 Java 未来路线感兴趣,一定要留意 Project Loom 的进展。,我会持续输出类似的干货。我是小米,一个爱讲技术故事的程序员,我们下次见!我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
2025-04-25 09:25:20
621
原创 看完这篇,面试官问 Semaphore,我能吹半小时!
嗨!大家好,我是你们熟悉的 31 岁程序员小米,一个喜欢写代码、讲故事、做饭、撸猫、写公众号的人。今天这篇文章,咱们继续讲点面试中高频但是常被忽视的 Java 多线程知识点。最近我一个老同事去面试,HR 问了个看似简单但实际很多人讲不清楚的问题:老同事回来跟我吐槽:“小米啊,我平时用 synchronized、ReentrantLock 用得顺溜,轮到 Semaphore 就懵圈,面试时候只说出是‘限流’用的,面试官明显不满意。”好家伙,咱这不行啊。既然如此,今天我就跟大家唠个透彻,顺便给正在准备社招的小伙
2025-04-24 09:48:50
274
原创 这俩工具太像了!到底啥时候用 CountDownLatch,啥时候用 CyclicBarrier?
我事后也问了那个面试官,他说:“小米,其实你们日常用的少,但这种题就是看你理解同步机制、场景选择能力。项目中用不对,比不会更严重。听完我心里一紧——确实啊!好在这次补了个扎实,未来再遇到多线程场景,也能更合理选型啦!写到这,突然有点感慨。31岁,依然能在面试上学到新东西,说明技术这碗饭,真是吃一辈子学一辈子啊!多线程是Java工程师的必备技能,不管是不是“用得少”,理解同步机制、选型得当,才是成熟开发者该有的样子。如果这篇文章对你有帮助,点个【在看】或者【转发】支持一下小米叭!
2025-04-23 09:37:55
690
原创 面试官问我 Java 原子操作,我一句话差点让他闭麦!
咱先来搞清楚原子操作到底是个啥玩意。原子操作(Atomic Operation),简单来说就是不可再分割的最小操作单元,要么不做,要么做完,中间不可能被打断。在并发编程里,多个线程可能同时操作同一个变量,假如一个操作不是原子的,线程切换到一半就可能会发生数据不一致的问题。比如:你以为这是个简单的 +1?读取变量 i 的值将值加 1写回变量 i如果多个线程同时执行这个操作,就可能发生线程安全问题。而原子操作的好处是,无论有多少线程,只要这个操作是原子的,就不会出现乱套的情况。
2025-04-22 10:00:49
527
原创 大模型时代,Java开发者别落伍!LangChain4j让你轻松追上
LangChain4j 是LangChain在 Java 世界的实现。它让 Java 开发者也能像 Python 开发者一样,轻松接入 OpenAI、Gemini、Claude、Mistral 等主流 LLM,同时还封装了一整套链式调用、工具集成、Memory管理等功能。一句话总结:LangChain4j = Java + LLM 最佳拍档。其实做大模型应用,最难的不是调模型,而是——怎么在现有系统中用好它。
2025-04-21 09:37:27
877
原创 社招必问!FutureTask 底层原理+应用场景,带你一次学会
咱们先来捋清楚概念。1、Future 是个接口,定义了异步任务的结果get():阻塞等待异步任务结果返回cancel():取消任务isDone():判断任务是否完成:判断是否被取消注意,Future 本身不能执行任务,只是用来保存任务结果。2、FutureTask 是个实现类,既能执行又能保存结果简单理解,FutureTask 既是Runnable又是Future,可以被线程池或线程执行。其中 RunnableFuture 是个接口,长这样:也就是说,
2025-04-20 10:42:27
502
原创 【面试+实战】ScheduledThreadPoolExecutor 全解析,收藏即用!
说到这,咱们得先正经介绍一下这位“罪魁祸首”:ScheduledThreadPoolExecutor 是 JDK 自带的一个定时任务线程池,继承自 ThreadPoolExecutor,主要用来执行定时任务,或者周期性重复执行的任务。它是 ScheduledExecutorService 接口的一个具体实现类,比起早期的 Timer,它更加稳定、灵活、线程安全。常见的创建方法:这里的 5 是线程池的核心线程数量。核心方法。
2025-04-19 11:31:04
867
原创 商城积分调用链路优化:一次价值百万的争论!
1、统一 ≠ 一刀切很多时候我们听到“统一”,就觉得要把所有调用方式、链路设计弄得一模一样。其实不是,统一的是规范、接口设计、校验机制,而不是调用链路。2、内部业务场景和外部业务场景,本质不同商城是公司自己产品,走内网,权限、调用频率都可控,和第三方渠道完全是两种情况,设计方案一定要因地制宜。3、代码易维护 ≠ 系统高性能有时候为了省事写代码,统一走一个路径,表面上看好维护,但链路复杂,系统性能差、故障率高,维护起来才是真麻烦。4、技术人要敢说,敢争论。
2025-04-18 11:34:30
792
原创 这项目太上头!典型分布式事务场景,做完我悟了
啊这,普通事务搞不定啊!多个不同的服务、系统(门户、多个渠道)多个独立数据库/服务接口(不同渠道积分存储在不同系统)非同库、非同源,没法搞本地事务。所以,我们需要一个「跨服务的事务一致性机制」,也就是分布式事务。电商秒杀金融转账积分兑换复杂结算我们这个项目,正好符合“积分兑换+结算”的经典分布式事务模式。
2025-04-17 10:27:55
532
原创 面试官狂喜!我用这 5 分钟讲清了 ThreadPoolExecutor 饱和策略,逆袭上岸
写入日志记录被拒绝的任务;把任务持久化到消息队列;甚至可以报警提示线程池处理能力不足。你只需要把这个 handler 配到 ThreadPoolExecutor 构造函数里即可。线程池很强大,但你得知道它的极限在哪里。当线程池处理不过来了,任务还在飞快地来,这时候它会“饱和”——你要知道它会怎么“拒绝”。这就是 RejectedExecutionHandler 的职责!你可以选择抛异常、丢任务、让自己执行、甚至把最老的赶走,也可以……自定义规则。别等出问题时才想起它——像我一样就晚了。
2025-04-16 09:50:11
518
原创 面试官:ThreadPoolExecutor 构造参数你懂吗?我:全会!
各参数的定义和作用。核心线程和最大线程的扩容规则。队列的选择对线程池行为的影响。线程工厂和拒绝策略的实战意义。根据业务特性,合理配置线程池参数。一份常规线程池配置示例我画了个图,非常直观:有了这张图,流程一目了然。
2025-04-15 10:00:15
455
原创 被问“怎么做出好产品”,我靠这五字诀赢了面试官!
好产品不是拍脑袋拍出来的,是用户用着舒服、用着爽、愿意留、愿意转的产品。写到这里,我仿佛又回到了当年那个加班调试“暗恋墙”的自己。也许你也有过类似经历。别怕失败,怕的是不总结、不成长、不反思。产品经理最宝贵的能力,就是踩坑不怕,复盘要快,方法要好。
2025-04-14 00:19:28
540
原创 一位大厂面试官的灵魂发问:Executor 和 Executors 有什么区别?
就在上周,我又去面了一家大厂。“你说说 Executors 和 ThreadPoolExecutor 的区别。我一笑,娓娓道来,从源码到风险,再到推荐方案,说得对方频频点头。“你这回答比我们内部文档都清楚。被一道题打败,不是终点;弄懂它,讲出来,就是你进阶的开始。
2025-04-13 08:46:20
759
原创 Java 面试高频冷门题:ThreadGroup 是什么?还能用吗?
在 Java 中,每个线程都属于一个线程组(ThreadGroup)。默认情况下,线程会加入到其“父线程”所在的线程组中。方便统一管理一批线程,比如设置优先级、统一中断、批量操作等。分组管理线程:可以通过 ThreadGroup.activeCount() 获取当前组内线程数量;统一中断线程:可以使用 ThreadGroup.interrupt() 一次性中断该组下的所有线程;嵌套 ThreadGroup:支持父子 ThreadGroup 层级关系;设置统一优先级(虽然几乎没人用)。
2025-04-12 14:24:01
825
原创 别再说“一个有返回值一个没有”了!你真的懂 submit 和 execute 的区别吗?
submit() 的异常处理千万别忘了!一定要 future.get()。说区别时,不要只说“一个有返回值一个没有”,那太基础。最好结合业务场景说“什么时候选哪个”,让面试官觉得你是能落地的人。源码分析一定加分,不要怕说错,大胆讲逻辑。
2025-04-11 12:19:57
522
原创 一位大厂面试官的灵魂发问:Executor 和 Executors 有什么区别?
那次面试,我虽然在“Executor vs Executors”这一题没拿满分,但却在复盘中成长巨大。很多时候,不是我们不会,而是没“透过源码看本质”。“Executors 让你写得快,ThreadPoolExecutor 让你跑得稳。别再让“无界队列”、“线程爆炸”、“OOM”等等这些坑在生产中炸锅。写代码,不只是能跑,而是能跑得久、跑得稳。
2025-04-10 10:02:04
761
原创 Java里的时间精度陷阱:那一次被毫秒“坑惨”的经历
Java 里的时间 API 越来越强大,但越强大,就越要注意它的“细节陷阱”。就像这次的毫秒问题,它看似微不足道,却可能让你的定时任务不执行、缓存提前失效,甚至造成前后端对时间的理解出现差异。最后送你一句我最喜欢的话:程序员的世界,从不怕复杂,怕的是不明白的复杂。希望这篇文章能帮你彻底搞清楚 LocalDateTime 的精度问题,下次再遇到奇怪的时间行为时,第一时间就知道往哪里查!
2025-04-09 10:03:18
438
原创 一口气讲清楚 Executor 框架,建议收藏!
Executor 框架是 Java 提供的一套用于并发任务管理的线程池框架。它的核心理念是任务提交与任务执行的解耦。你去打印店打印文件,把文件交给店员(Executor),店员把它安排给打印机(线程)处理,你不需要知道哪个打印机在打、什么时候打完,你只要管交活就行了。而不是你自己上去操作打印机,那多乱。用线程池来管理任务的执行,让线程的使用更可控、更高效、更优雅!
2025-04-08 11:47:14
456
原创 Java 也能玩转大模型!LangChain4j 真香警告
还记得我第一次用 OpenAI 的 ChatGPT,是在一个下雨的夜晚。但转念一想,也许不是“取代”,而是“协作”。这也是我今天写这篇文章的原因——我想和你聊聊,大语言模型(LLM)如何优雅地集成进 Java 世界,而主角就是最近我在玩的。如果你是一个 Java 工程师、架构师,或者对 AI 技术感兴趣的程序员,那么这篇文章,就是写给你的。
2025-04-07 11:19:01
669
原创 还在纠结线程池怎么用?这篇文章教你一招制胜!
在正式聊线程池之前,我们先来看看下面这个场景。假设你是一家餐厅的老板,生意火爆,每天都有大量顾客上门点餐。如果你让每位顾客进店时都临时招聘一个厨师来做饭,那不仅招聘成本高,厨师培训慢,顾客等得也烦。有没有更好的办法呢?当然有!你可以雇佣一支固定的厨师团队,来回轮流做饭。这样不仅节省了招聘时间,还能让厨师们各司其职,提高效率。在 Java 里,线程池(ThreadPool)就类似于这个厨师团队的概念。预先创建一批线程,并复用它们来执行任务,避免频繁创建和销毁线程带来的开销。
2025-04-05 10:57:58
461
Solr技术培训资料(基础知识+高级应用)。
2017-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人