- 博客(228)
- 收藏
- 关注
原创 订阅飞书审批事件
本文介绍了飞书审批事件回调的配置流程:1)在开放平台创建企业自建应用;2)配置事件回调地址并订阅审批事件;3)发布应用版本(需管理员审批);4)与业务沟通获取审批定义code;5)开发回调接口处理事件。关键点包括订阅事件需要API权限审批、版本发布后才能生效,以及接口需返回challenge参数完成验证。文章配有详细的配置截图和示例代码,指导开发者完成飞书审批回调功能实现。
2025-10-30 11:40:29
316
原创 Spring AI 搭建 RAG 个人知识库
本文介绍了RAG(检索增强生成)技术如何解决AI大模型的三大痛点:幻觉率高、数据延迟和缺乏内部数据。RAG通过外挂向量库知识库,先检索相关文档再生成回答,提高准确性。实战部分演示了使用SpringAI配置向量模型和创建简易向量库的步骤,包括初始化知识库、整合到ChatClient和实际应用。文章最后指出RAG技术的核心在于向量化存储和检索机制,为后续深入学习向量数据库原理奠定了基础。(149字)
2025-10-30 09:31:57
1232
原创 springAI实现ai大模型+传统应用双剑合璧- Function Calling
摘要: Spring AI 提供了一种将大模型与本地项目结合的方案,通过定义工具类(Tool)并利用 Function Calling 机制实现。开发者只需继承 FunctionTool,使用 @Tool 和 @ToolParam 注解标记方法与参数,并通过 ChatClient 将会话请求传递给大模型。示例展示了如何调用本地工具(如查询食物、音乐等),并整合大模型的推理能力优化输出。注意:阿里云百炼大模型暂不支持流式输出,需适配返回字符串格式。
2025-10-27 21:53:19
364
1
原创 springAI +openAI 接入阿里云百炼大模型-通义千问
摘要:本文介绍了如何通过Spring AI快速接入阿里百炼大模型平台。相比本地部署模型响应慢的问题,使用阿里云大模型服务能获得更流畅的体验。主要内容包括:1)申请API Key;2)添加OpenAI规范的Spring Boot Starter依赖;3)配置YAML文件(需替换API Key并指定模型为qwen-max-latest);4)创建ChatClient调用模型。通过简单的配置修改即可实现从本地模型到云服务的切换,且无需改动Controller代码即可获得更优质的对话体验。文中还预告了后续将介绍如何
2025-10-27 21:00:55
480
3
原创 SpringAI + DeepSeek本地大模型应用开发-聊天机器人
摘要 本文介绍了使用Spring AI与本地部署的DeepSeek R1模型构建AI对话系统的实践方法。通过三步实现:1) 引入Spring AI相关依赖;2) 配置Ollama连接参数;3) 开发应用接口。文章详细说明了Java 17环境配置、模型参数设置、流式输出接口开发,并提供了模仿DeepSeek界面的HTML聊天窗口源码。最终实现了本地运行的AI对话功能,模型响应效果截图展示了实际运行效果。
2025-10-24 18:55:19
477
1
原创 DeepSeek-R1 本地部署 - 十分钟搞定
摘要: 本地部署DeepSeek-R1大模型只需3步: 安装Ollama:从官网下载工具,支持自定义安装路径(需通过命令行参数指定)。 下载DeepSeek-R1模型:在Ollama的Models页面选择1.5b版本,通过命令行ollama run deepseek-r1:1.5b下载。 配置ChatBox:安装图形界面工具,关联Ollama后即可调用模型对话。 贴士:通过环境变量OLLAMA_MODELS可修改模型存储路径,避免占用C盘空间。整个过程简单高效,适合本地体验大模型。(字数:149)
2025-09-13 20:22:35
813
原创 Postman - 设置变量
场景:比如你接口都有权限,访问需要每调一个接口都手动放token的值,这个时候就可以搞个全局的变量,只设置一次就可以了。
2024-04-25 16:06:37
643
原创 Postman - Error: Invalid character in header content [“gwm-ctx-user-ext“] 解决
Error: Invalid character in header content ["gwm-ctx-user-ext"]
2024-04-25 15:57:29
2512
原创 Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?
高水位可以理解为一个`横切面`,存储的也是`Offset`(位移)值,木水桶原理
2023-08-16 22:46:05
2455
1
原创 Kafka 入门到起飞 - Kafka是怎么保证消息可靠性的呢
在这里插入图片描述我们已经了解到,复习一下创建topic时,可以指定副本因子轮询Leader 副本只有一个,负责读写,其他节点都是Follower副本,Producer 只把消息发送到Leader分区,Follower副本负责从Leader同步数据ISR 同步副本列表 (包含Leader)当前时间为了保证可靠性,可以设置确认机制ack= all。
2023-08-15 22:15:54
530
原创 Kafka 入门到起飞系列 - 怎么从ISR中选出的Leader呢? Leader选举机制
上文我们讲了分区分成Leader 和 Follower两种角色,当Leader宕机后,会从ISR同步副本中选出一个分区作为leader分区继续工作,那么leader是怎么选出来的呢?
2023-07-27 18:59:04
496
2
原创 Kafka入门到起飞系列 - 副本机制,什么是副本因子呢?
我们一直在讲一个主题会有多个分区,这多个分区可以分布在一台服务器上,也可以分布在多台服务器上,还可以增加分区(Kafka目前只支持分区),这是Kafka提供的一种横向扩展的手段比如我们创建了一个主题,给主题分配50个分区(这个数不大,_consumer_offset主题默认就50个分区),每个分区放在不同的broker上,那么我们要保证这50台服务器都不能宕机,一旦服务器宕机,分区数据就丢失了,保障服务不宕机这是很难的,所以Kafka给我们提供了副本机制。
2023-07-27 18:23:29
1463
原创 Kafka 入门到起飞系列 - 到底什么是再平衡?谁来执行再平衡呢?什么是组协调器呢?
每个消费组分配一个组协调器,用于组管理和位移管理消费组的第一个消费者启动后,会和Kafka broker确认,谁是组协调器(是一个broker)之后启动的所有消费者需要和该组协调器保持通信,发送心跳由组协调器来检测消费者的增加和减少,确认何时出发再平衡。
2023-07-27 15:42:11
337
原创 Kafka 入门到起飞系列
Kafka 入门到起飞系列[Kakfa 为什么牛? 为什么这么火?有什么优势呢?](https://blog.youkuaiyun.com/FightingITPanda/article/details/131941293)[工欲善其事,必先利其器 - 核心概念(术语解释)](https://blog.youkuaiyun.com/FightingITPanda/article/details/131710912)Kakfa 为什么牛? 为什么这么火?有什么优势呢?工欲善其事,必先利其器 - 核心概念(术语解释)
2023-07-26 20:07:17
1205
原创 Kakfa 入门到起飞 - 什么是再平衡?什么时候会触发再平衡呢?Kafka为什么遭大家诟病了呢?
那么为什么大家会诟病再平衡这个事呢,因为在再平衡过程中,消费者组下的所有消费者需要暂停,无法从Kafka消费消息,这样Kafka的消费能力突然就下来了,如果Kafka集群比较大,几百个节点,那么再平衡会消耗非常多的时间,几分钟到几小时都有可能,这个时间内Kafka基本处于不可用状态。消费主题数变更的情况就是,当消费者组订阅主题通过正则或者通配符的方式,比如topic.*这样,当新增一个主题topic.A,那么相当于这个新增主题下的消息自动被当前消费者组订阅了,需要将分区进行分配,那么就会触发一次再平衡。
2023-07-26 19:50:43
526
原创 Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?
如果上面结构还不够,两个消费者消费速度依然跟不上,那么我们还可以继续添加消费者,添加到4个消费者,此时主题分区与消费者的关系再次发生变化,需要再平衡,此时一个消费者消费一个分区消息,达到并行消费的效果。如上图,当前只有一个消费者组订阅这个Topic,消费者组里只有一个消费者,那么当前Topic中所有分区的消息都由这个消费者消费。消费者也不是越多越好,消费者数受限于分区数, 过多消费者会导致有的消费者没有分配分区导致空闲,如下图。如上图,消费者组扩展一个消费者后,消费者1、2分别消费两个分区的消息。
2023-07-26 17:52:14
2602
原创 Kafka 入门到起飞 - 生产者参数详解 ,什么是生产者确认机制? 什么是ISR? 什么是 OSR?
我们在生产者发送消息时可以指定acks参数值,来决定收到消息发送后什么样的确认即可继续发送后面的消息acks : 生产者发送消息确认机制acks = 0: 生产者不等broker确认,不断发送消息,发送消息快,允许丢消息,只要将消息放到了socket的缓冲区,就认为消息已发送成功acks = 1:默认值,允许少量消息丢失,broker上leader分区写入消息即返回生产者消息确认,不等待follower副本分区的确认,这种情况下,存在消息丢失的风险acks = all。
2023-07-26 17:03:31
966
原创 Kafka 入门到起飞系列 - Kafka 为什么牛? 为什么这么火?有什么优势呢?
在zk上记录这个数据就很不合适,zk每个节点能放的数据最大也就1M,zk主要是用来做服务注册与发现的一个协调服务,对高并发的一个偏移量的读写就不是它的强项, 所以后面的高版本里不在zk保存消息的偏移量了,直接在客户端保存 ,我们通常使用的DB都是关系型数据库,都是将数据持久化到磁盘中,数据的访问在对磁盘进行读写,我们都知道对磁盘进行IO比较慢,那么如何让读写速度加快呢,就产生了redis等产品,redis访问数据快是因为将数据都存储到内存去了;,来保证零数据丢失,除非连副本机器也偷走了,那没办法了哈哈,
2023-07-26 16:09:32
247
原创 Kafka 入门到起飞系列 - 磁盘存储 -零拷贝
Redis 是 在内存存储数据的,数据读取时不要经过磁盘的IO,只需要内存的操作,这也是redis访问速度快的原因Kafka背道而驰,,发送过来的数据交给Kafka后会落盘,消费者读取数据时,也是通过磁盘读取,发送给消费者减少不必要的拷贝次数。
2023-07-17 00:08:57
756
原创 Kafka 入门到起飞系列 - 生产者发送消息流程解析
批次的概念很好理解,缓冲区就像一辆公交车,有两种发车方式,一是人满了就发车,一是等5分钟就发车,不管是人满了还是到5分钟了,发车,go~Producer 创建时,会创建一个Sender线程设置为守护线程。Producer 生产消息,内部是一个异步流程。Producer 创建时,会创建缓冲区。
2023-07-16 17:29:31
2323
2
原创 Kafka 入门到起飞 - 核心概念(术语解释)
通常一个topic下的分区分散在kafka集群的不同实例(broker)上,producer向一个topic发送消息会发送给不同分区中,这样消息就可以实现并行发送与处理,增加吞吐量。当一台机器能力不足时,可以通过添加机器横向扩展broker,在新的机器上创建分区,这样就可以实现无限水平扩展。压缩带来的磁盘空间和带宽的节省,远大于CPU开销的代价,这样的压缩是值得的。消息顺序写入分区,每个分区时一个有序队列,kafka不保证跨分区消息有序。批次越大,单位时间内处理的消息越多,单个消息传输时间越长。
2023-07-14 15:57:52
1911
原创 idea一顿切换分之后编译项目提示找不到其他分支类的解决办法~
idea 一顿切换分支,编译项目失败,,提示找不到其他分支的类,提示找不到本分支不存在得类,,,
2022-09-24 13:12:56
2517
3
原创 spring boot 整合 swagger自动生成接口文档,搬砖都快乐了~
spring boot 整合 swagger 自动生成接口文档,搬砖都快乐了~
2022-08-12 14:01:34
1388
1
原创 Eureka 流程 +原理
Register 服务注册Renew 服务续约Cancel 服务注销/下线Fetch Registries 获取注册列表信息Eviction 服务剔除⚠️开启自我保护时,client请求数15分钟内低于85%,Serber不会将剔除任何实例eureka 仪表盘中:renew threshold :为eureka server计算的60s应该收到心跳请求数量renew(last min): 为eureka server 上一分钟收到的心跳请求数量当 renew(last min)/ renew thre
2022-06-12 23:36:01
725
原创 panda白话 - Spring AOP 入门+实战
Spring 两大🐮特性:IOC 、AOP面试必问😄基本上大家都是对IOC理解比较深刻,Spring通过IOC容器帮我们管理bean嘛AOP其实使用也很广泛,只是你没咋关注过因为基本属于框架级的,基本配置一次就不用管了,那起码要看懂呀,let`s go~~AOP定义: Oriented Object Progamming (面向切面编程)概念:连接点 - joint point切入点 - point cut通知 - advice织入 - weaving切面.
2022-05-21 00:45:45
252
原创 Panda白话 - 再认识JAVA反射
最近学习路线:AOP原理 -> JDK 动态代理 -> java 反射真是人生无常,大肠包小肠呀~~反射定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。这个定义看了n遍,每次都是???(小朋友你是否有很多问号?)最近又看了书、文章、视频,有了新的理解,码下来。。万一对你有用知识储备(面试高频):类加载机制j.
2022-05-19 00:29:26
325
原创 Panda 白话 - MySQL 事务 - ACID、隔离级别、MVCC
先奉上大佬的肩膀:MySQL专题: 脏读、不可重复读、幻读区别MySQL事务隔离级别和实现原理轻松理解MYSQL MVCC 实现机制看一遍: 哦! -> 看两遍:嗯~ -> 看三遍:哦~~ -> 写一遍 :just so soACID - 衡量事务的4个特性A - Automacity : 原子性 - 事务不可分割,要么全部提交成功,要么全部失败回滚C - Consistency - 一致性 - 事务开始前和结束后,数据库完整性约束没有被破坏I - Isol
2021-12-30 17:31:29
776
原创 Mybatis代码自动生成 - generatorConfig.xml -so so so so ..easy
二话不说,开炸~准备工作数据库,表新建个spring boot项目pom.xml 中引入 mybatis-generator 插件准备生成器配置文件 generatorConfig.xml昨天下班突然。。。今天继续。。。以上准备够用,开始吧 1、准备库-panda_local、表-panda ,介么简单,不说了~ 新建个spring boot项目 pom.xml 中引入 mybatis-generator 插件 准备生成器配置文件 generatorConfig.xml.
2021-12-30 10:18:10
616
原创 panda 白话 - 磁盘结构
磁盘结构硬盘大小 = 磁头数 × 柱面数 × 扇区数 × 每个扇区大小磁头数 - Heads - 硬盘的盘面数 × 2 (正反面)柱面数 - Cylinders - 硬盘的每个盘面有几个磁道扇区数 - Sectors - 每个磁道上面有几个扇区扇区大小 - 一般512byte盘片盘片是一个扁平的圆盘,类似于唱片,每个盘片有两个面,正面为 0面,反面为 1面盘面上有很多圆圈,称为 磁道数据记录在磁道上磁道:每个盘片上一圈一圈的同心圆- 就是 磁道最外圈磁道是0
2021-12-28 13:50:00
896
原创 panda白话 - G1垃圾收集器 - Mixed GC - 并发标记阶段 - 源码分析
G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up并发标记阶段 - Concurrent Mark特性:与Mutator并发进行以初始标记的根出发进行深度扫描根分区扫描步骤:scanRootRegions扫描所有survivor分区scanRootRegion 逐个region进行扫描处理[bootom, top]区间内所有的对象gra.
2021-12-15 15:15:29
1299
原创 Python - 读Excel数据落库 - 手把手教学
背景:有一批数据业务只能线excel的方式给excel与数据表结构不一致当然可以直接通过navicat导入excel数据,but、、python也得用起来呀let us go ~准备:编辑器 - 写代码得有开发工具啊,pyCharm也行、本文idea 2020.3python 解释器 - 直接通过idea插件方式安装即可导包 - 需要啥导啥步骤:1 idea 安装python 插件File -> Settings -> plugins -> Market
2021-12-15 10:46:38
3183
原创 panda白话 - G1垃圾收集器 - Mixed GC - 初始标记(根分区扫描)源码分析
G1垃圾收集 - Mixed GC:初始标记阶段 - Initial Mark并发标记阶段 - Concurrent Mark最终标记阶段 - Remark清理阶段 - Clean Up初始标记阶段 - Initial Mark - 根标记特性:STW以Young GC后的survivor分区作为根进行扫描扫描的是survivor 分区到老年代Region对象的引用所以Mixed GC 一定发生在Young GC 之后根分区扫描步骤:scanRootRegions扫描所.
2021-12-10 17:36:23
1335
原创 Panda白话 - G1垃圾收集器 - SATB、写屏障
Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB上文讲到G1在并发标记过程中,通过三色标记法来标记存活对象, 三色标记法存在漏标问题,会影响程序正确性, G1采用SATB方案解决漏标问题,本文我们就来重点分析一下SATBSATB - Snapshot At The Beginning 初始快照由Taiichi Yuasa开发的一个算法 - 首先它是一种思想主要用于GC的并发标记阶段记录并发标记是mutator修改的引用记录,remark阶段(STW)无需全量重新扫.
2021-12-10 15:10:43
2435
原创 Panda白话 - G1垃圾收集器 - 三色标记法、漏标、增量更新、SATB
三色标记法:GC HandBook把对象分成三种颜色:黑色(Black) - 根对象,自身及可达对象都已经被标记灰色 (Grey) - 自身已经被标记,可达对象还未被标记白色 (White) - 还未被标记、垃圾对象举个栗子吧:A.b = new B();B.c = new C();C.d = new D();如上图、有这么个引用关系:A对象有个field(成员变量)b,引用了B对象(存储B对象的物理地址),field c没有引用B对象有个field(成员变量)c,引用了C
2021-12-09 17:42:26
1710
原创 Panda白话 - G1垃圾收集器 之 Refine线程
Refine线程:G1引入的并发线程池线程数 = G1ConcRefinementThreads+1 (默认)Refine线程的功能:处理新生代分区的抽样 - 更新YHR(Young Heap Region)的数目管理RSet处理新生代分区的抽样:功能: 设置YHR - 新生代分区的个数,使G1满足GC的预测停顿时间-XX:MaxGCPauseMillis抽样方法 - 关键源码:concurrentG1RefineThread.cppvoid ConcurrentG1Refi.
2021-11-23 18:58:34
1459
1
原创 Panda 白话 - G1垃圾收集器 之 RSet(Remembed Set)源码解读
G1的知识点越看越多,这个RSet和卡表老也整不明白,单拎出来白话一下吧~我们已经知道G1将堆内存划分为2048个(默认、可调整)大小相等的Region,新创建的对象都是放在新生代Eden区。Region分为5中类型:YHR - Yound Heap Reagion :年轻代分区ERH - Eden Heap Region : eden区,伊甸园,放新创建对象SRH - Survivor Heap Region : Survivor 区,存货去,放每次GC后存活对象OHR - Old.
2021-11-19 18:12:30
2575
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅