- 博客(411)
- 收藏
- 关注
原创 面试全系列之【Redis】之【补充篇】
集群模式下,自写的分布式锁,只锁一个Master的一个Slot,主从切换的锁可能会丢。Redisson封装好的Redlock和MultiLock是怎么回事?向多个Master节点同时加锁。过半机制确认。统一解锁、统一续期、重试容错等。
2026-04-04 20:38:57
50
原创 面试全系列之【SpringBoot】之【补充篇】
SpringBoot autoConfigura模块中有两个配置:最大TCP连接数是8192,线程都忙时会有100个连接等待线程。同时Tomcat线程池中默认200个线程处理任务。所以,默认情况下同时处理的请求数是200+100=300。如果调大线程数,可以接入更多的并发,但是对于系统资源占用也会飙升。
2026-04-04 00:39:18
43
原创 面试全系列之【Java基础】之【多线程】
不管多少个线程执行共享资源,结果总是对的。实现线程安全的四种思路1:加锁,互斥2:使用原子类3:线程隔离,使用变量副本。4:使用不可变对象,参考String只能读不能改。协程是用户态轻量级线程,又叫虚拟线程,不由内核态进行调度,有JVM自己进行管理。创建和切换成本很低。一个JVM轻易创建百万级虚拟线程。创建线程是有代价的,代价还不小。先放到队列当中就是为了让他削峰填谷。如果流量真的特别大,那么很快队列也会满,这个时候就会去创建线程,这个时候也说明应该去创建新线程。java提供的定时任务调度工具。
2026-04-03 07:41:59
30
原创 Doris从入门到上天系列第六篇:Doris中修改表的操作
使用 ALTER TABLE 命令可以对表进行修改,包括 partition 、rollup、schemachange、rename 和 index 五种。alter_clause 分为 partition 、rollup、schema change、rename 和 index 五种。
2026-03-27 14:35:29
167
原创 AI超级智能开发系列从入门到上天第十一篇:RAG最佳实践和调优
是文档质量的首要条件。知识库缺失相关内容,大模型将无法准确回答问题。需通过收集用户反馈或统计知识库检索命中率,不断完善和优化知识库内容。
2026-03-27 13:34:30
496
原创 kubenetes从入门到上天系列第二十六篇:Kubernetes的Istio服务网格实战
Istio 是运行于分布式应用程序之上的非侵入式(无代码入侵)服务网格系统,它的主要目的是为了更好更轻松的解决服务治理问题(Istio 的实现原理是,为每个微服务部署一个 Sidecar(边车),代理微服务之间的所有网络通信。Istio 是一个与 Kubernetes 紧密结合的适用于云原生场景的 Service Mesh 形态的用于服务治理的开放平台。这里的关键字 “治理” 不限于 “微服务治理” 的范畴,任何服务只要服务间有访问,如果需要对服务间的访问做管理,就可以使用 Istio。
2026-03-27 09:59:05
266
原创 kubenetes从入门到上天系列第二十五篇:Kubernetes企业如何实现蓝绿部署
当 kubernetes 集群中的某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动并提供服务。如果业务集群规模较大时,这个工作就变成了一个挑战,而且先全部停止,再逐步升级的方式会导致服务较长时间不可用。这个过程面临一个问题,就是在某段时间内,服务是不可用的,对于用户来说是非常不友好的。kubernetes 提供了滚动更新(rolling-update)的方式来解决上述问题。简单来说,滚动更新就是针对多实例服务的一种不中断服务的更新升级方式。
2026-03-27 09:06:53
576
原创 Doris从入门到上天系列第五篇:Doris中的物化视图
物化视图就是包含了,可能是对远程数据的本地 copy,也可能是一个表或多表 join 后结果的行或列的子集,也可能是聚合后的结果。说白了,就是预先存储查询结果的一种数据库对象。在 Doris 中的物化视图,就是查询结果预先存储起来的特殊的表。物化视图的出现主要是为了满足用户,既能对原始明细数据的任意维度分析,也能快速的对固定维度进行分析查询。
2026-03-26 14:55:06
405
原创 kubenetes从入门到上天系列第二十四篇:Kubernetes Pod的自动扩缩容
弹性伸缩是根据用户的业务需求和策略,自动 “调整” 其 “弹性资源” 的管理服务。通过弹性伸缩功能,用户可设置定时、周期或监控策略,恰到好处地增加或减少 “弹性资源”,并完成实例配置,保证业务平稳健康运行。在实际工作中,我们常常需要做一些扩容缩容操作,如:电商平台在 618 和双十一搞秒杀活动。由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作。在 k8s 中扩缩容分为两种: 阿里的ack可以实现Node方面的扩容,但是得买人家的云服务,加购一个扩缩容服务。底层用的是OpenStac
2026-03-26 10:56:35
716
原创 Doris从入门到上天系列第六篇:Doris中的Rollup
ROLLUP 在多维分析中是 “上卷” 的意思,即将数据按某种指定的粒度进行进一步聚合。
2026-03-24 14:29:55
262
原创 AI超级智能开发系列从入门到上天第十篇:SpringAI+云知识库服务
final String KNOWLEDGE_INDEX = "恋爱大师";.build());.build();
2026-03-24 13:15:31
231
原创 AI超级智能开发系列从入门到上天第九篇:SpringAI搭建本地知识库
实际开发过程中,这种方式极少使用,额外占用很多的JVM内存,接下来,我们要采用云知识库进行存储。
2026-03-24 12:02:13
392
原创 AI超级智能开发系列从入门到上天第八篇:RAG知识库基础
是一种结合信息检索技术和 AI 内容生成的混合架构,可以解决大模型的知识时效性限制和幻觉问题。简单来说,RAG 就像给 AI 配了一个 “小抄本”,让 AI 回答问题前先查一查特定的知识库来获取知识,确保回答是基于真实资料而不是凭空想象。
2026-03-24 10:03:57
358
原创 Doris从入门到上天系列第五篇:Doris中的动态分区
动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。目前实现了的功能。动态分区只支持 Range 分区。
2026-03-23 21:20:47
118
原创 AI超级智能开发系列从入门到上天第六篇:自定义AI记忆持久化
Spring AI 的对话记忆实现解耦了「存储」和「记忆算法」可以独立修改ChatMemory的存储层(比如从内存换成数据库 / Redis)无需改动上层保存对话记忆的业务流程官方文档未提供自定义ChatMemory示例,但可以参考默认实现类的源码进行仿写。
2026-03-23 13:36:03
236
原创 AI超级智能开发系列从入门到上天第五篇:自定义格式化输出
结构化输出转换器是 Spring AI 提供的实用机制,作用是将大语言模型返回的文本输出转换为结构化数据格式(如 JSON、XML 或 Java 类),这对需要可靠解析 AI 输出值的下游应用程序至关重要。举例:在智能 BI 项目中,需要让 AI 生成前端可视化图表的 JSON 格式代码,过去需手动编写 Prompt 实现,而 Spring AI 已内置该能力,可直接使用。结构化输出转换器工作流程提取结构化输出转换器在大模型调用前后均发挥作用:结构化输出转换器使用注意事项提取在调用大模型前, 会生成格式指令
2026-03-23 13:11:00
354
原创 AI大模型面试题
MessageWindowChatMemory将上下文件记忆到内存中:ChatMemoryRepository这个是真实用于存储的。这类 Advisor 是日常开发中使用频率最高的,用于自动维护多轮对话上下文,无需手动拼接消息。ChatModel和大模型进行通讯的基础工具。定位与层级(最核心区别)
2026-03-23 11:25:55
49
原创 AI超级智能开发系列从入门到上天第四篇:自定义Advisor
1:实现接口:CallAroundAdvisor && StreamAroundAdvisor2:重写aroundCall方法 && StreamAroundAdvisor的方法。3:设定执行顺序可以通过getOrder方法指定advisor在链中执行顺序,值越小优先级越高,越先执行。4:提供个唯一名称。1. 非流式处理(实现接口)@Override// 1. 处理请求(前置处理)// 2. 调用链中的下一个 Advisor// 3. 处理响应(后置处理)2. 流式处理(实现接口)
2026-03-23 11:24:43
270
原创 AI超级智能开发系列从入门到上天第四篇:AI应用方案设计
搞系统提示词可以让豆包写。 然后可以到阿里云百炼的文本调试里面去做,内容调试功能比直接调用ChatModel功能更丰富。Chat Client需要用到Chet Model对象。指定大模型+指定系统预设+指定配置参数,右边的聊天框就是一个chat client。2:Chat Client多种响应格式返回整个文本,返回Java实体,返回List集合,流式返回返回实体的这种形式被称为结构化输出。3:ChatClient设置默认参数支持指定的对话选项、默认拦截器、默认函数调用
2026-03-23 10:12:42
365
原创 kubenetes从入门到上天系列第二十三篇:Kubernetes灰度发布
灰度发布,也叫金丝雀发布。必须设置该 Annotation 值为true,否则其它规则将不会生效。设置为true表示启用 canary 功能。设置为false表示不启用 canary 功能。表示基于请求头的名称进行灰度发布。alwaysnever表示基于请求头的值进行灰度发布。需要与头配合使用。表示基于权重进行灰度发布。取值范围:0~ 权重总值。若未设定总值,默认总值为 100。表示设定的权重总值。若未设定总值,默认总值为 100。
2026-03-20 18:29:46
299
原创 kubenetes从入门到上天系列第二十二篇:Kubernetes代理Https
创建 Secret 资源,Secret 资源中必须包含 tls.crt 和 tls.key 字段。
2026-03-20 17:04:41
78
原创 Flink从入门到上天系列第二十六篇:Flink和Kafka连接时的精准一次性
在流处理的应用中,最佳的数据源当然就是可重置偏移量的消息队列了;它不仅可以提供数据重放的功能,而且天生就是以流的方式存储和处理数据的。所以作为大数据工具中消息队列的代表,Kafka可以说与Flink是天作之合,实际项目中也经常会看到以Kafka作为数据源和写入的外部系统的应用。在本小节中,我们就来具体讨论一下Flink和Kafka连接时,怎样保证端到端的exactly-once状态一致性。
2026-03-20 15:15:01
310
原创 Flink从入门到上天系列第二十五篇:Flink中的一致性级别
在Flink流处理的结果写入外部系统时,如果能够构建一个事务,让写入操作可以随着检查点来提交和回滚,那么自然就可以解决重复写入的问题了。如果中间过程出现故障,状态会回退到上一个检查点,而当前事务没有正常关闭(因为当前检查点没有保存完),所以也会回滚,写入到外部的数据就被撤销了。但对于外部系统来说,已经写入的结果就是泼出去的水,已经无法收回了,再次执行写入就会把同一个数据写入两次。如果有一个外部应用读取写入的数据,可能会看到奇怪的现象:短时间内,结果会突然“跳回”到之前的某个值,然后“重播”一段之前的数据。
2026-03-20 11:14:29
333
原创 kubenetes从入门到上天系列第二十一篇:Kubernetes安装Ingress实战
metadata:spec:rules:http:paths:- path: /backend:service:port:https://xxx.clound.com/yonxxp.scm.scct等URL域名经由外网解析之后,路由到真实企业的Nginx。
2026-03-19 17:22:11
375
原创 Flink从入门到上天系列第二十四篇:Flink中的保存点
除了检查点外,Flink还提供了另一个非常独特的镜像保存功能——保存点(savepoint)。从名称就可以看出,这也是一个存盘的备份,它的原理和算法与检查点完全相同,只是多了一些额外的元数据。
2026-03-19 10:44:24
812
2
原创 Doris面试题
写入时自动按Key 列聚合,无需手动group by。列分为Key(维度列)和Value(指标列)。Key 相同的行会合并,Value 按指定方式聚合。
2026-03-18 16:26:35
57
原创 Doris从入门到上天系列第四篇:Doris中的数据模型
Doris 的数据模型主要分为 3 类:Aggregate、Uniq、Duplicate。
2026-03-18 16:22:52
362
原创 Flink从入门到上天系列第二十三篇:Flink中增量检查点和最终检查点
在 1.15 之前,只有RocksDB 支持增量快照。不同于产生一个包含所有数据的全量备份,增量快照中只包含自上一次快照完成之后被修改的记录,因此可以显著减少快照完成的耗时。从 1.15 开始,不管hashmap还是rocksdb 状态后端都可以通过开启changelog实现通用的增量checkpoint。
2026-03-18 13:49:15
114
原创 Flink从入门到上天系列第二十篇:Flink当中的Barrier算法
备份的时候,为什么必须要Barrier,保障每个算子状态是将一条数据完整处理完毕的。在Flink中,采用了基于Chandy-Lamport算法的分布式快照,可以在不暂停整体流处理的前提下,将状态备份保存到检查点。
2026-03-18 09:33:22
375
原创 Dubbo面试题
Dubbo 的 Filter 机制类似 AOP(面向切面编程),可在服务提供或消费的执行前后进行自定义操作,无需修改业务代码即可增强 / 修改框架行为,典型场景包括日志记录、权限校验、性能监控等。工作原理Filter 是 Dubbo 提供的接口,应用于服务提供者和消费者。每次请求都会经过 Filter 处理链,链中每个 Filter 可处理请求,并决定是否继续传递给下一个 Filter 或终止处理。过滤器链Dubbo 的过滤器链是链式调用系统,由多个 Filter 依次处理请求。
2026-03-17 18:34:44
64
原创 kubenetes从入门到上天系列第二十篇:Kubernetes安装Nginx ingress controller
是 Ingress 资源中非常重要的路径匹配类型概念,每个路径都必须明确设置该类型,否则无法通过合法性检查。当前支持三种路径类型:Prefix(前缀匹配)当请求路径以 定义的值开头时,就会匹配。例: → 、 都会匹配。Exact(完全匹配)只有当请求路径与 定义的值完全一致时,才会匹配。例: → 只有 会匹配。ImplementationSpecific(实现特定匹配)匹配逻辑由具体的 决定,不同 Ingress 控制器(如 Nginx、Traefik)可能有不同实现;可以作为独立类型处理,也可与
2026-03-17 15:46:02
345
原创 Flink从入门到上天系列第十九篇:Flink当中的容错机制
在流处理中,我们可以用存档读档的思路,就是将之前某个时间点所有的状态保存下来,这份 “存档” 就是我们所谓的遇到故障重启的时候,我们可以,这样就可以回到当时保存的一刻接着处理数据了。这里所谓的 “检查”,其实是针对故障恢复的结果而言的:故障恢复之后继续处理的结果,应该与发生故障前完全一致,我们需要 “检查” 结果的正确性。所以,有时又会把 checkpoint 叫做 “一致性检查点”。
2026-03-17 14:42:38
444
原创 Flink从入门到上天系列第二十七篇:Flink当中的FlinkSQL
需要说明的是,Table API和SQL最初并不完善,在Flink 1.9版本合并阿里巴巴内部版本Blink之后发生了非常大的改变,此后也一直处在快速开发和完善的过程中,直到Flink 1.12版本才基本上做到了功能上的完善。而即使是在目前最新的1.17版本中,Table API和SQL也依然不算稳定,接口用法还在不停调整和更新。Table API和SQL是最上层的API,在Flink中这两种API被集成在一起,SQL执行的对象也是Flink中的表(Table),所以我们一般会认为它们是一体的。
2026-03-17 12:11:06
112
原创 Flink从入门到上天系列第十八篇:Flink当中的状态后端
在Flink中,状态的存储、访问以及维护,都是由一个可插拔的组件决定的,这个组件就叫作状态后端(state backend)。状态后端主要负责管理本地状态、检查点的存储方式和位置。
2026-03-17 10:36:09
311
原创 Doris从入门到上天系列第三篇:Doris数据表的创建
以 AGGREGATE KEY 数据模型为例进行说明。更多数据模型参阅 Doris 数据模型。列的基本类型,可以通过在 mysql-client 中执行 HELP CREATE TABLE;查看AGGREGATE KEY 数据模型中,所有没有指定聚合方式(SUM、REPLACE、MAX、MIN)的列视为 Key 列。而其余则为 Value 列。定义列时,可参照如下建议:➢ Key 列必须在所有 Value 列之前。➢ 尽量选择整型类型。因为整型类型的计算和查找比较效率远高于字符串。
2026-03-17 08:55:03
381
原创 kubenetes从入门到上天系列第十九篇:Kubernetes安装Nginx ingress controller
安装复合当前k8s版本的ingress controller,实现ingress的高可用架构、ingress controller的的pod应该部署在专用服务器上,所以一般都使用节点硬亲和性。我们使用1.9.5好了。
2026-03-16 16:41:00
843
原创 Flink从入门到上天系列第十七篇:Flink当中的算子状态
托管状态:描述: 由Flink框架管理状态的存储、序列化以及容错恢复等算子状态:作用范围: 算子的每一个并行子任务上(分区、并行度、slot)类型:- BroadcastState(重点)使用步骤:- 类必须实现CheckpointedFunction接口- 接口方法:initializeState: 初始化状态snapshotState: 对状态进行备份特点:- 声明位置: 与普通成员变量声明位置相同- 作用范围: 与普通成员变量作用范围相同- 持久化: 可被持久化。
2026-03-16 14:01:25
392
MySQL查询顺序问题
2023-02-17
HotSpot虚拟机当中的元空间到底是包含了原有的方法区中的哪些数据呢?
2023-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅