- 博客(220)
- 资源 (24)
- 收藏
- 关注
原创 面试官问我SpringAI+RAG,我当场汗流浃背:Java程序员如何应对AI融合面试?
Java程序员在AI时代需要"两条腿走路",既要夯实Java技术栈基础,又要积极拥抱AI新技术。Spring AI降低了AI应用开发门槛,但核心的架构设计能力、问题解决能力仍然是面试考察的重点。
2026-04-13 19:01:15
381
原创 面试官问我SpringAI+RAG,我当场汗流浃背:Java程序员如何应对AI融合面试?
Java程序员面对AI融合面试,需要建立"传统技术栈+AI技术栈"的双重能力体系。不仅要掌握Java生态的深度,更要理解AI技术的应用边界和落地场景。从RAG到Agent,从向量数据库到MCP协议,每一个技术点都需要结合具体业务场景来理解和应用。
2026-04-07 19:00:58
322
原创 面试官问我SpringAI+RAG,我当场汗流浃背!Java程序员转型AI的血泪史
Java程序员转型AI需要补足:1)深度学习基础 2)大模型原理 3)向量检索技术 4)Agent架构设计。建议从Spring AI入手,逐步深入RAG和Agent开发。
2026-04-03 17:06:39
315
原创 面试官问我SpringAI+RAG,我当场汗流浃背:Java程序员如何应对AI融合面试?
面试官:叶小白,先来个简单的。JDK8到JDK17,你觉得最大的性能提升是什么?叶小白:这个我知道!JDK17的ZGC垃圾回收器延迟更低,还有Records语法糖,写代码更爽!面试官:不错,基础还算扎实。那在电商高并发场景下,你如何用JVM参数优化Spring Boot应用?叶小白:呃...设置-Xmx和-Xms,然后...用G1GC?面试官:继续。Redis缓存穿透怎么解决?叶小白:布隆过滤器!还有缓存空对象!面试官:MySQL分库分表,跨分片查询怎么优化?叶小白:这个...用全局索引?或者...业务上避
2026-04-03 15:30:39
333
原创 面试官:说说SpringAI+RAG架构?我:这个嘛...我们项目用的是ChatGPT Plus会员
作者:技术面试专栏时间:2024:P8技术专家,精通Java全栈+AI架构:叶小白,3年经验Java开发。
2026-04-03 14:02:34
370
原创 面试官问我SpringAI+RAG实现智能客服,我直接汗流浃背了!
本次面试覆盖了从Java基础到AI前沿的完整技术栈,体现了当前大厂对"Java + AI"复合型人才的需求。候选人需要在传统后端功底扎实的基础上,快速掌握AI工程化能力。核心考察点基础深度:不只是会用,更要懂原理架构思维:从单点到系统,从技术到业务AI工程:RAG、Agent等前沿技术落地能力问题解决:系统性思考,多维度分析给面试者的建议建立知识体系:Java → 架构 → AI的渐进路径项目实战:至少完成一个Spring AI + RAG的完整项目。
2026-04-03 13:02:39
308
原创 面试官问我SpringAI+RAG,我当场汗流浃背!Java八股背熟了,结果死在AI面试题上
Java+AI融合已成为大厂面试新趋势,单纯背八股已不够用。需要深入理解AI技术原理,并能结合具体业务场景落地。建议开发者:夯实Java基础 → 掌握微服务架构 → 深入学习AI工程化 → 实战项目经验积累。
2026-04-03 10:23:42
277
原创 Java与AI融合:AIGC企业知识库的搞笑面试实战
这篇文章通过轻松幽默的面试对话形式,意在揭示Java与AI相结合的热门技术及其在真实世界中的应用。希望能为读者在面试准备及技术学习上提供帮助!
2026-04-02 17:50:19
171
原创 互联网大厂Java求职面试:谢飞机的求职之旅
当然知道,线程池就像一个游泳池,里面有很多个线程……其实我不太清楚!呵呵,也对!那你是否了解HashMap的底层实现原理?HashMap,呃,就是把东西放进去,然后根据哈希值拉出来,是吧?有点意思!你能描述一下ArrayList的扩容机制吗?我知道扩容要……要复制啊!但是具体的我记不太清了!Spring Boot就是更简单的Spring,学习更加轻松吧!ACID就是四个东西……哦,不好意思,记不太清楚了!面试官耐心地听着,每一次谢飞机的回答都充满了搞笑的元素。
2026-04-02 15:23:00
369
原创 Docker 缓存 / 资源彻底清理指南:从基础到进阶,一文搞定空间释放
本文详细介绍了Docker资源清理的全流程方案。首先通过docker system df查看资源占用情况,然后提供两种清理方式:安全清理(docker system prune)仅删除无用资源,彻底清理(docker system prune -a)删除所有未使用资源但需谨慎。针对不同场景还给出了构建缓存、数据卷等专项清理方法,特别提醒数据卷清理存在风险需先备份。Windows系统需额外处理WSL 2缓存。最后总结了常用命令速查表,建议定期执行安全清理以维护Docker环境稳定。
2026-04-02 14:54:39
604
原创 使用LangChain4j打造你的第一个AI应用
LangChain4j是一个简化Java应用集成大型语言模型(LLM)的开发框架。它提供统一API接入多家AI服务商,内置提示词模板、聊天记忆等功能模块,类似Spring对Java开发的简化。与Python/JS的LangChain不同,它是专为Java生态设计的框架。通过Spring Boot集成示例展示了快速构建AI应用的过程:添加依赖、配置模型参数、创建Controller调用ChatModel。测试表明只需几行代码即可实现AI对话功能,如发送"你好,你是谁?"获取模型响应。该框架
2026-04-02 10:13:31
415
原创 绿联DX4600 AList部署及挂载阿里云盘
因为云盘总是封禁已经转存的文件(珍惜影片),实在受不了了,就像购买个NAS构建私人云存储,正好趁着双11购入了绿联的DX4600,本来想购入群晖或者威联通等专业NAS,因为不想折腾,最终在极空间和绿联中选择了绿联DX4600,安装啥的按照绿联文档或者视频很容易,之后就是使用Docker部署AList之后将阿里云盘和百度网盘的内容同步到本地NAS中(提醒自己购买NAS部署私人云存储一点不便宜,慎重!!!
2023-11-09 18:01:52
9617
原创 Spring boot MongoDB实现自增序列
操作指令,经过测试100个并发下没有发现重复id的产生,但是还是建议使用MongoDB自己的Id生成策略,毕竟MongoDB作为非关系型数据库,如果维护一个自增序列,性能上肯定没有ObjectId好,而且分片情况下需要自己校验自增序列的唯一性,当然在某些特殊的业务场景下必须要使用自增序列的,也属于正常,如果大家有更好的方案,欢迎讨论。在某些特定的业务场景下,会需要使用自增的序列来维护数据,目前项目中因为使用MongoDB,顾记录一下如何使用MongoDB实现自增序列。的值作用本次序列,实现自增序列。
2023-07-04 11:19:13
2043
原创 Spring boot MongoDB 实现自定义审计字段
是Spring Data提供的一个接口,用于提供当前执行数据库操作的"审计员"的信息。"审计员"可以是当前操作的用户、系统的默认用户或其他相关信息,用于记录和跟踪数据的变更历史。,只要在保存文档之前将数据拦截处理就可以实现字段填充。除了上面这种方式,还可以通过实现。的作用是为实体类中标记了。
2023-07-03 18:22:43
1644
1
原创 Spring Data MongoDB实现@DBRef级联存储
使用@DBRef进行级联存储的方式就是通过继承`AbstractMongoEventListener`并重写`onBeforeConvert`方法在保存文档之前先保存子对象,就可以实现级联存储,需要注意,使用当前配置会全局生效,如果想要自定义级联存储可以使用自定义注解实现,扫描指定注解后进行级联存储。
2023-07-03 16:44:16
1606
原创 Springboot MongoDB封装通用Servcie
封装的通用Service,也可以使用之前文章自定义Repository来实现,如果同学们有更好的方案欢迎讨论。构建通用Service的实现,此处基于。实现,当然也可以使用之前文档自定义通过。构建通用Service,
2023-07-03 15:51:13
1273
原创 Springboot MongoTemplate封装通用Repository
虽然Spring boot也提供了Mongodb JPA的操作类MongoRepository,但面对复杂操作时,没有MongoTemplate操作灵活,两个可以配合使用,取长补短。
2023-07-03 15:24:22
869
原创 MongoDB使用ObjectId作为主键时id序列化问题
默认主键生成策略,是 MongoDB 提供的默认生成方式,使用 12 字节的 BSON 类型存储主键,包含了时间戳、机器标识、进程标识和随机数)的字段作为主键,也可以使用注解@Id指定主键,可以作用于字符串、数字、对象等,除了使用@Id指定主键还可以自定义主键,例如自增序列等,但是建议使用默认生成策略。MongoDB主键,由时间戳(四个字节)、机器ID(三个字节)、进程ID(两个字节)、计数器(三个字节)四部分构成。以上就是使用ObjectId作为主键时序列化解决方案,如果有更好的解决方案欢迎探讨。
2023-07-03 15:19:17
1320
原创 工欲善其事必先利其器(Windows)
此命令只是临时生效,关闭窗口后重置,使用以下命令永久配置,回车后如提示没有文件,按照提示创建文件。将单引号中的内容替换为想要的主题名称或Github地址,保存退出即可,例如想要切换为。可以像使用Linux终端一样爽,可以记录命令历史、命令提示、Table补全等等。在PowerShell中执行以下命令,安装Scoop。默认的主题其实已经足够了,但是如果想要切换主题,在。中列出主题名称及样式,选择喜欢的主题进行切换。,然后执行以下命令,查看Clink安装目录。,并将以下内容复制到文件,保存后重启。
2022-10-19 16:21:44
1166
原创 nvm安装及使用
如不卸载原有版本,会造成冲突,安装完nvm发现不了已安装的nodejs版本,建议卸载之前的版本。下载完解压,选择没有特殊字符及中文的目录(否则会提示找不到命令或目录)后一直下一步安装即可。能够发现,此时已被使用的版本前面有了星号,且提示当前版本被使用,此时再次使用命令。发现提示没有命令,不要慌,不是没有安装成功,而是没有使用。如不配置,安装nodejs贼慢,建议配置。npm配置淘宝镜像,如不配置,安装包特别慢。查看已经安装的nodejs版本列表。使用指定版本的nodejs,以。注意安装成功,此时使用。
2022-10-14 23:05:02
1794
原创 设计模式之组合模式
组合模式(Composite Pattern)是一种结构型设计模式, 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式用于将多个对象组合成树形结构以表示“整体-部分”的结构层次,组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。简单来说,需要实现树状结构(整体-部分),适合使用组合模式,反之不适合(不代表不能用,需要特殊适配,得不偿失)。
2022-09-29 16:44:42
770
原创 设计模式之桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式, 通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合, 从而能在开发时分别使用。举个例子,例如某个手机厂商生产三个品牌的手机:小米、华为、苹果,每个品牌又分为64G、128G、256G,那么,将会有13个类:桥接模式用聚合的方式代替继承,降低抽象与具体的耦合,重点在于“解耦”,一句话总结:双重维度扩展。桥接模式和组合模式的区别:组合模式侧重于整体与部分,桥接模式侧重于同级别类。
2022-09-27 11:24:11
827
原创 设计模式之适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作,即定义一个包装类,用于包装不兼容接口的对象。适配器模式是指定义一个适配器类,将一个已经存在的类,转换成目标接口所期望的行为形式,总而言之建议尽量使用对象的适配器模式,多用合成/聚合、少用继承。
2022-09-25 21:46:31
386
原创 设计模式之原型模式
原型模式是一种创建型设计模式,是指创建新对象的时候,根据现有的一个原型来创建。简单来说就是就是对象的克隆()。原型模式分为浅拷贝和深拷贝:(浅复制)只是拷贝了基本类型的数据,而引用类型数据,只是拷贝了一份引用地址。(深复制)在计算机中开辟了一块新的内存地址用于存放复制的对象。如果你有一个对象, 并希望生成与其完全相同的一个复制品,那么你可以用原型模式。
2022-09-24 22:13:14
378
原创 设计模式之创建者模式
Builder构建器模式也被称为生成器模式,是一种创建型设计模式, 分离复杂对象的创建和表示。简单理解就是内部有许多“小工厂”创建对象,最终来组建一个完全体。创建者模式让我想起来很早之前的一部动画片《战神金刚》,组成脚和腿,组成躯干,我来组成头部。创建者模式和模板方法模式极其相似,创建者模式强调的是对象的创建,模板方法模式强调的是方法的执行。创建者模式和工厂模式的区别,创建者模式侧重于产品的类型和创建顺序,工厂模式侧重于创建产品。
2022-09-24 12:10:51
297
原创 设计模式之工厂模式
工厂模式是一种创建型设计模式, 在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型(继承、多态)。工厂模式划分为三类:简单工厂(静态工厂)模式、工厂方法模式、抽象工厂模式,在GoF的《设计模式: 可复用面向对象软件的基础》将简单工厂模式划分为工厂方法模式。一句话表示:任何可以产生对象的方法或类,都可以称之为工厂。
2022-09-22 18:29:02
382
原创 设计模式之单例模式
单例模式是一种创建设计模式,确保类只有一个实例,同时为此实例提供全局访问点,换句话说就是在JVM中,某个类只允许被创建一次(唯一实例),之后所有的操作都是基于同一个实例。单例模式同时解决了两个问题(保证类只有一个实例、提供全局访问点),所以违反了单一职责原则。以上几种单例模式实现方式中,除了枚举方式外,其他几种方式都可以通过序列化和反序列化绕过类的private构造方法从而创建出多个实例(实际开发中也不会有人去这么做,费力不讨好)。
2022-09-21 17:29:52
955
原创 系统设计原则及技术指标
不要为了用某项技术而使用,某项技术的使用是为了应对业务增长带来的系统瓶颈问题,例如一个简单的OA系统,你非要使用微服务、分布式架构、亿级流量缓存,除了增加了开发、运维成本,还要应对开发过程中的种种问题,“不是贵的才是最好的,适合自己才是最重要的。系统的初期,以核心业务为主,快速上线,占取市场份额,等待用户及市场反馈,及时调整需求进行项目迭代,不要一开始就想开发一个淘宝或者京东,也许你可以开发出来,但是市场份额已满,到头来一场空。当部分代码在多个地方出现,或者你有想要拷贝的欲望时,证明需要重构次部分代码了。
2022-09-20 17:28:34
2479
原创 23种设计模式总结
设计模式(Design Patterns):是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案设计模式概念首次出现在编程领域是在1994年,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四人(简称GoF)合著出版了一本名为设计模式: 可复用面向对象软件的基础的书,该书中讲述了使用23种设计模式解决了面向对象的各种问题。• OCP: 总纲,对扩展开放,对修改关闭• SRP: 类的职责要单一。
2022-09-20 17:16:05
346
原创 No qualifying bean of type问题解决
No qualifying bean of type问题解决前言No qualifying bean of type ‘xxx.xxx.xxx’ available: expected single matching bean but found 2:xxx.xxx.xxx对于一个java开发新手来说, 应该经常会遇到这个问题,而且还不好意思询问周围同事,不要怕,今天就让我们解决掉它。问题及解决方案问题1包扫描不正确或未扫描默认情况下,如果使用了springboot,他会默认扫描启动类(
2022-05-06 16:58:21
68482
原创 Springboot集成Swagger2
Springboot集成Swagger2前言 多年以前写过一篇 springMVC整合swagger(亲自试验完全可用),但随着springboot的流行,今天记录一下springboot集成swagger2的使用过程,swagger3的集成类似只不过依赖调整了一下,后面会提到。集成添加maven依赖<properties> <swagger.version>2.9.2</swagger.version></properties><!
2022-05-06 15:47:28
809
原创 HTML中给div加超链接
HTML中给div加超链接前言 最近开发一个静态公司官网,其中有四个推荐位,推荐位由图片,标题,简介组成,要求点击推荐位的任意位置皆可跳转到指定页面。解决方式方式一使用 window.location.href 跳转,如下代码所示:<div class="recommend" onclick="window.location.href='https://first.com';return false"> <img class="recommend_img" src=
2022-04-25 15:56:22
7072
原创 Git分支合并(merge)时忽略某个文件或者目录
Git分支合并(merge)时忽略某个文件或者目录前言 最近使用VUE开发构建了项目,因为打包发布引发了一场小意外,就是不同分支的dist文件夹合并时发生冲突,而且有时先打包后合并的分支,导致两个分支实际发布的是同一套代码,导致乌龙事件的发生,虽然很快找到了问题,但是还是有些尴尬,本文主要记录如何在合并分支时忽略某些文件或者目录。操作步骤1. 定义虚拟的合并策略git config --global merge.ours.driver true其他配置可参考 Git配置2. 编辑规
2022-04-21 10:50:29
6783
原创 区块链开发之Metamask使用调研
区块链开发之Metamask使用调研支持的浏览器 链接Metamask自动链接Metamask钱包。代码示例const Web3 = require("web3");const ethEnabled = async () => { if (window.ethereum) { //获取账户地址 const account = await window.ethereum.request({method: 'eth_requestAccounts'}); c
2022-02-23 16:27:56
16481
原创 常用软件推荐 - Java开发
常用软件推荐 - Java开发前言 本人Java开发者一个,本文章主要记录自己使用的一些软件,如果喜欢可以下载安装体验一番,这里我今介绍我使用过的或者目前正在使用的软件,毕竟有了靠谱的工具会大大增加我的的工作效率及生产力。开发工具IntelliJ IDEA这个没什么可以说的,毕竟Java开发神器,没有不使用的吧,如果有请保持沉默。Navicat Premium虽然IDEA中内置了数据库工具,但是相比较而言,Navicat使用更加丝滑,支持提示、补全等功能。当然还有jetbrains家
2022-02-23 15:57:15
217
原创 Windows 命令执行时间统计方式
Windows 命令执行时间统计方式前言 日常开发过程中经常会遇见需要统计命令执行时间的需求,所以本片文章主要记录一下本人经常使用的几种方式。常用方式Measure-Command介绍在内部执行脚本并计算操作的执行时间。使用方式Measure-Command{你的命令}例如:Measure-Command{echo hello}Measure-Command{echo hello}----------------------------------------------Day
2021-12-28 15:24:08
7454
mybatis逆向工程生成项目
2016-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅