自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(432)
  • 收藏
  • 关注

原创 Vue脚手架第一篇:使用Vue脚手架

1. Vue脚手架是Vue官方提供的标准化开发工具(开发平台)。2. 最新的版本是4.x。3. 文档: https://cli.vuejs.org/zh/。

2026-09-28 13:33:25 279

原创 Vue组件第六篇:Vue单文件组件

四:student组件和school组件。一:index.html。

2026-09-14 22:07:35 91

原创 Vue组件第五篇:一个重要的内置关系

【代码】Vue组件第五篇:一个重要的内置关系。

2026-09-14 21:16:01 83

原创 Vue组件第四篇:VueComponent

【代码】Vue组件第四篇:VueComponent。

2026-09-14 19:59:31 28

原创 Vue组件化编程第二篇:非单位件组件

非单位件组件:一个文件中有多个组件单文件组件:一个文件中只有一个组件。

2026-09-14 00:06:44 60

原创 Vue核心语法第十四篇:列表过滤

【代码】Vue核心语法第十四篇:列表过滤。

2026-08-23 23:33:20 73

原创 Vue核心语法第十四篇:key的原理

(1). 旧虚拟 DOM 中找到了与新虚拟 DOM 相同的 key: ①. 若虚拟 DOM 中内容没变,直接使用之前的真实 DOM!②. 若虚拟 DOM 中内容变了,则生成新的真实 DOM,随后替换掉页面中之前的真实 DOM。(2). 旧虚拟 DOM 中未找到与新虚拟 DOM 相同的 key 创建新的真实 DOM,随后渲染到到页面。若对数据进行:逆序添加、逆序删除等破坏顺序操作: 会产生没有必要的真实 DOM 更新 ==> 界面效果没问题,但效率低。

2026-08-23 09:22:02 216

原创 Vue核心语法第十三篇:列表渲染

【代码】Vue核心语法第十三篇:列表渲染。

2026-08-23 08:36:12 189

原创 MAT排查内存泄漏:为什么Path to GC Roots出来一大堆无关内容?HashMap堆分析终极避坑指南

1. Histogram的HashMap是全量对象聚合,直接查GC Roots会汇总所有实例路径,噪音巨大、数据重复,绝对不能用来判断泄漏;2. 排查泄漏必须过滤弱/软/虚引用,只看强引用链;3. 优先用 Dominator Tree 看全局支配关系,或单个大对象溯源,精准定位静态缓存、ThreadLocal、线程持有导致的泄漏;4. 线程栈临时对象是正常现象,只有长期持有不释放的强引用才是内存泄漏。

2026-08-21 23:25:06 47

原创 使用 Eclipse MAT 分析 OOM 实战:从快照到定位根因

线上服务抛出,拿到 hprof 堆快照文件。很多同学打开 MAT 之后,面对一堆十六进制地址、海量对象,不知道从哪里下手,分不清到底是内存泄漏,还是业务瞬时加载大量数据导致堆不够。分别代表什么?Histogram 和 DominatorTree 的区别?什么时候该用哪个?如何找到占用内存最大对象?怎么看对象被谁引用?什么是 GC Root?标记代表什么?static、ThreadLocal 泄漏是什么样子?OOM 栈停在 HashMap.resize,一定是内存泄漏吗?

2026-08-21 23:23:18 41

原创 JVM故障实战:通过Arthas+VisualVM+MAT证明「慢SQL+数据库连接不足导致系统并发过低」

本次故障是线上典型的资源瓶颈型故障。

2026-08-21 22:21:15 39

原创 十分钟学会排查线上JVM溢出

设置最大最小内存均为200mb为了快速OOM。

2026-08-20 00:50:58 60

原创 如何快速搭建线上的JVM监控

模板地址 https://grafana.com/grafana/dashboards。已经成功抓取到节点 + 点击节点 + 已经抓取到指标。

2026-08-19 23:11:25 56

原创 Vue核心语法第十二篇:条件渲染

v-if写法:v-if="表达式"v-else-if="表达式"v-else="表达式"适用于:切换频率较低的场景。特点:不展示的 DOM 元素直接被移除。注意:v‑if 可以和 v‑else‑if、v‑else 一起使用,但要求结构不能被 “打断”。v‑showv‑show="表达式"适用于:切换频率较高的场景。特点:不展示的 DOM 元素未被移除,仅仅是使用样式隐藏掉备注:使用 v‑if 的时候,元素可能无法获取到,而使用 v‑show 一定可以获取到。

2026-08-15 10:32:49 221

原创 Vue核心语法第十一篇:绑定样式

样式绑定除了class还有style,我们从两者出发去讲。

2026-08-15 00:31:44 292

原创 Vue核心语法第一篇:Vue是什么?

的JavaScript框架。专门把后台给的数据,转换成客户可以查看的页面简单应用:只需要一个轻量小巧的核心库复杂应用:可以引入各式各样的Vue插件。

2026-08-14 23:38:28 206

原创 Vue组件化编程第一篇:模块化和组件化

理解:一个html分为个局部,每个局部是功能效果的代码集合 (html/css/js/image……)为什么:一个界面的功能很复杂作用:复用编码,简化项目编码,提高运行效率组件话的代码都可以进行复用。定义:实现应用中局部功能代码和资源的集合。使用:做引入即可。

2026-08-14 23:37:31 205

原创 面试全系列之【Kafka】之【经典版】系列

重复原因:网络抖动、消费者挂掉、offset 未及时提交。Redis记录ID,先查在处理。1. 重试:保证消息。使用消息ID进行去重。

2026-04-18 09:57:48 411

原创 面试全系列之【Java基础】之【JVM】

直接内存不归 JVM 管,是通过 Unsafe 或者 NIO 的 DirectByteBuffer 分配的堆外内存。好处是 IO 的时候不用在堆内存和内核缓冲区之间来回拷贝,配合 FileChannel.transferTo () 可以实现零拷贝。直接内存不走 GC,得手动释放或者等 Cleaner 机制触发。

2026-04-16 15:18:36 204

原创 面试全系列之【Java基础】之【反射】

在动态获取类的完整信息(包名、类名、父类、接口、字段、方法、构造器),并能的机制。不知道具体类名,也能拿到结构。不用new,通过/ 构造器创建实例。包括 private 方法。包括 private 成员变量。不硬编码类名、方法名,提高扩展性。

2026-04-09 15:32:02 149

原创 面试全系列之【微服务】之Nacos

服务注册发现:客户端注册 + 心跳保活 + 服务端健康检查 + 推送 / 本地缓存 + Distro 最终一致。配置管理:集中存储 + 三级缓存 + 长连接实时推送 + Raft 强一致。高可用:集群部署 + 混合一致性协议 + 客户端本地缓存容灾。

2026-04-08 15:06:27 200

原创 面试全系列之【中间件】之 Redis

集群模式下,自写的分布式锁,只锁一个Master的一个Slot,主从切换的锁可能会丢。Redisson封装好的Redlock和MultiLock是怎么回事?向多个Master节点同时加锁。过半机制确认。统一解锁、统一续期、重试容错等。

2026-04-04 20:38:57 181

原创 面试全系列之【SpringBoot】之【补充篇】

SpringBoot autoConfigura模块中有两个配置:最大TCP连接数是8192,线程都忙时会有100个连接等待线程。同时Tomcat线程池中默认200个线程处理任务。所以,默认情况下同时处理的请求数是200+100=300。如果调大线程数,可以接入更多的并发,但是对于系统资源占用也会飙升。

2026-04-04 00:39:18 162

原创 面试全系列之【Java基础】之【多线程】

不管多少个线程执行共享资源,结果总是对的。实现线程安全的四种思路1:加锁,互斥2:使用原子类3:线程隔离,使用变量副本。4:使用不可变对象,参考String只能读不能改。协程是用户态轻量级线程,又叫虚拟线程,不由内核态进行调度,有JVM自己进行管理。创建和切换成本很低。一个JVM轻易创建百万级虚拟线程。创建线程是有代价的,代价还不小。先放到队列当中就是为了让他削峰填谷。如果流量真的特别大,那么很快队列也会满,这个时候就会去创建线程,这个时候也说明应该去创建新线程。java提供的定时任务调度工具。

2026-04-03 07:41:59 139

原创 Doris从入门到上天系列第六篇:Doris中修改表的操作

使用 ALTER TABLE 命令可以对表进行修改,包括 partition 、rollup、schemachange、rename 和 index 五种。alter_clause 分为 partition 、rollup、schema change、rename 和 index 五种。

2026-03-27 14:35:29 388

原创 AI超级智能开发系列从入门到上天第十一篇:RAG最佳实践和调优

是文档质量的首要条件。知识库缺失相关内容,大模型将无法准确回答问题。需通过收集用户反馈或统计知识库检索命中率,不断完善和优化知识库内容。

2026-03-27 13:34:30 650

原创 kubenetes从入门到上天系列第二十六篇:Kubernetes的Istio服务网格实战

Istio 是运行于分布式应用程序之上的非侵入式(无代码入侵)服务网格系统,它的主要目的是为了更好更轻松的解决服务治理问题(Istio 的实现原理是,为每个微服务部署一个 Sidecar(边车),代理微服务之间的所有网络通信。Istio 是一个与 Kubernetes 紧密结合的适用于云原生场景的 Service Mesh 形态的用于服务治理的开放平台。这里的关键字 “治理” 不限于 “微服务治理” 的范畴,任何服务只要服务间有访问,如果需要对服务间的访问做管理,就可以使用 Istio。

2026-03-27 09:59:05 418

原创 kubenetes从入门到上天系列第二十五篇:Kubernetes企业如何实现蓝绿部署

当 kubernetes 集群中的某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动并提供服务。如果业务集群规模较大时,这个工作就变成了一个挑战,而且先全部停止,再逐步升级的方式会导致服务较长时间不可用。这个过程面临一个问题,就是在某段时间内,服务是不可用的,对于用户来说是非常不友好的。kubernetes 提供了滚动更新(rolling-update)的方式来解决上述问题。简单来说,滚动更新就是针对多实例服务的一种不中断服务的更新升级方式。

2026-03-27 09:06:53 716

原创 Doris从入门到上天系列第五篇:Doris中的物化视图

物化视图就是包含了,可能是对远程数据的本地 copy,也可能是一个表或多表 join 后结果的行或列的子集,也可能是聚合后的结果。说白了,就是预先存储查询结果的一种数据库对象。在 Doris 中的物化视图,就是查询结果预先存储起来的特殊的表。物化视图的出现主要是为了满足用户,既能对原始明细数据的任意维度分析,也能快速的对固定维度进行分析查询。

2026-03-26 14:55:06 647

原创 kubenetes从入门到上天系列第二十四篇:Kubernetes Pod的自动扩缩容

弹性伸缩是根据用户的业务需求和策略,自动 “调整” 其 “弹性资源” 的管理服务。通过弹性伸缩功能,用户可设置定时、周期或监控策略,恰到好处地增加或减少 “弹性资源”,并完成实例配置,保证业务平稳健康运行。在实际工作中,我们常常需要做一些扩容缩容操作,如:电商平台在 618 和双十一搞秒杀活动。由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作。在 k8s 中扩缩容分为两种: 阿里的ack可以实现Node方面的扩容,但是得买人家的云服务,加购一个扩缩容服务。底层用的是OpenStac

2026-03-26 10:56:35 891

原创 Doris从入门到上天系列第六篇:Doris中的Rollup

ROLLUP 在多维分析中是 “上卷” 的意思,即将数据按某种指定的粒度进行进一步聚合。

2026-03-24 14:29:55 393

原创 AI超级智能开发系列从入门到上天第十篇:SpringAI+云知识库服务

final String KNOWLEDGE_INDEX = "恋爱大师";.build());.build();

2026-03-24 13:15:31 376

原创 AI超级智能开发系列从入门到上天第九篇:SpringAI搭建本地知识库

实际开发过程中,这种方式极少使用,额外占用很多的JVM内存,接下来,我们要采用云知识库进行存储。

2026-03-24 12:02:13 1062 1

原创 AI超级智能开发系列从入门到上天第八篇:RAG知识库基础

是一种结合信息检索技术和 AI 内容生成的混合架构,可以解决大模型的知识时效性限制和幻觉问题。简单来说,RAG 就像给 AI 配了一个 “小抄本”,让 AI 回答问题前先查一查特定的知识库来获取知识,确保回答是基于真实资料而不是凭空想象。

2026-03-24 10:03:57 499

原创 Doris从入门到上天系列第五篇:Doris中的动态分区

动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。目前实现了的功能。动态分区只支持 Range 分区。

2026-03-23 21:20:47 354

原创 AI超级智能开发系列从入门到上天第七篇:PromptTemplate模板

是 Spring AI 中。

2026-03-23 13:56:17 414

原创 AI超级智能开发系列从入门到上天第六篇:自定义AI记忆持久化

Spring AI 的对话记忆实现解耦了「存储」和「记忆算法」可以独立修改ChatMemory的存储层(比如从内存换成数据库 / Redis)无需改动上层保存对话记忆的业务流程官方文档未提供自定义ChatMemory示例,但可以参考默认实现类的源码进行仿写。

2026-03-23 13:36:03 359

原创 AI超级智能开发系列从入门到上天第五篇:自定义格式化输出

结构化输出转换器是 Spring AI 提供的实用机制,作用是将大语言模型返回的文本输出转换为结构化数据格式(如 JSON、XML 或 Java 类),这对需要可靠解析 AI 输出值的下游应用程序至关重要。举例:在智能 BI 项目中,需要让 AI 生成前端可视化图表的 JSON 格式代码,过去需手动编写 Prompt 实现,而 Spring AI 已内置该能力,可直接使用。结构化输出转换器工作流程提取结构化输出转换器在大模型调用前后均发挥作用:结构化输出转换器使用注意事项提取在调用大模型前, 会生成格式指令

2026-03-23 13:11:00 455

原创 AI大模型面试题

MessageWindowChatMemory将上下文件记忆到内存中:ChatMemoryRepository这个是真实用于存储的。这类 Advisor 是日常开发中使用频率最高的,用于自动维护多轮对话上下文,无需手动拼接消息。ChatModel和大模型进行通讯的基础工具。定位与层级(最核心区别)

2026-03-23 11:25:55 130

原创 AI超级智能开发系列从入门到上天第四篇:自定义Advisor

1:实现接口:CallAroundAdvisor && StreamAroundAdvisor2:重写aroundCall方法 && StreamAroundAdvisor的方法。3:设定执行顺序可以通过getOrder方法指定advisor在链中执行顺序,值越小优先级越高,越先执行。4:提供个唯一名称。1. 非流式处理(实现接口)@Override// 1. 处理请求(前置处理)// 2. 调用链中的下一个 Advisor// 3. 处理响应(后置处理)2. 流式处理(实现接口)

2026-03-23 11:24:43 426

开悟篇Docker从零到实战一篇文章搞定

开悟篇Docker从零到实战一篇文章搞定

2025-08-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除