- 博客(105)
- 收藏
- 关注
原创 简单解析数据库中间件 MyCat
MyCat是一个开源的分布式数据库中间件(基于 Java 开发)。简单来说,它就像是应用系统与底层数据库之间的“大管家”或“翻译官”。在应用端看来,MyCat 就是一个真正的 MySQL 数据库,你可以直接用标准的 MySQL 驱动或 Client 去连接它;但在 MyCat 后台,它却管理着成百上千个真实的 MySQL 物理实例。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库。
2026-08-14 16:11:35
167
原创 Super Mamba feature enhancement framework for small object detection
今天学习读了一篇CV圈里出了个挺好玩的成果,咱们今天坐下来聊聊这篇论文到底把什么世纪难题给“暴力破解”了。你先想象一个挺极客的画面:大黑天的,你操控着一架低空无人机在天上飞,指望用红外相机把地面上偷跑的汽车、黑飞的无人机、甚至是落水等待救援的人员给揪出来。听起来挺科幻吧?但实际落地的时候,算法工程师能被气得当场吐血。为什么?因为红外图像里的背景实在太操蛋了。地面的大楼、天上的云层,在红外镜头里全是密密麻麻的噪点和干扰。最致命的是,你要抓的那个目标,通常小到连个像素都不到。
2026-07-27 11:38:49
206
原创 揭开 Java 容器的面纱:双雄并立与包装类的秘密
如果说Collection是让元素孤零零地排排坐,那么Map接口就是纯粹的“连线大师”。它的核心职责是保存Key-Value的映射关系。键(Key)是绝对唯一的,不能重复;而每个键最多只能映射到一个值(Value)。这就像每个人的身份证号(Key)在系统里只能绑定一个特定的名字(Value),如果你强行用相同的 Key 再存一次新数据,旧的数据就会啪的一下被新内容无情覆盖。面对这种成对出现的数据,我们该怎么去访问它呢?Map 接口非常贴心地提供了三种 Collection 视图。
2026-07-18 15:39:13
203
原创 Agent Skill
很多人一听到 Skill,第一反应就是:“噢,不就是换个地方存 Prompt 嘛。格局小了。Anthropic 在 2025 年 10 月推出了 Agent Skills 概念,并在同年 12 月将其作为开放标准发布。这一举动的核心目的,就是为了让所有 Agent 平台都能兼容同一套生态。在官方定义里,Skill 是一种把「指令、脚本、模板」一体化打包的可复用能力包机制。简单来说,Agent Skill 是给 AI 准备的一份「操作手册 + 数字化工具箱」。
2026-05-27 22:03:45
438
原创 Claude Code源码解析学习
Agent 的核心骨架(如所示)极其简单,可以概括为一个公式:Agent =while循环 + 工具调用 +状态检查,历史记录只增不减,导致模型注意力稀释,质量下降。会话结束即失忆,无法跨任务或跨时间延续。仅靠简单的字符串黑名单(如rm -rf)拦截风险,极易被绕过。每一轮都发送全量历史,Token 消耗呈线性甚至指数级增长为了解决上述问题,Claude Code 引入了Harness Engineering(装甲工程)A. 约束工作台(上下文管理)通过四层压缩防御机制。
2026-04-27 15:11:36
809
原创 Claude Code使用
claude官方文档:Claude Code 概述 - Claude Code Docs该笔记是基于对应的视频教学整理的,对应的视频为:Claude Code 从 0 到 1 全攻略:MCP / SubAgent / Agent Skill / Hook / 图片 / 上下文处理/ 后台任务_哔哩哔哩_bilibili。
2026-04-13 23:22:48
1158
原创 Kafka高性能
Kafka本质是数组,数组的优势在于存储连续,方便索引,如果顺序写入性能会高。但如果光是一个数组,随着数据越积越多,单一磁盘存放越来越吃力,造成I/O压力过大。所以kafka不仅仅是一个数组,实际上,Kafka充分利用分治的思想,将这个抽象的大数组,划分为很多个小数组。
2026-04-06 12:50:14
430
原创 消息队列发送消息场景分析
由于开启了幂等生产,在同一分区中,同一生产者消息的编号需要是连续的,也就意味着中间不能丢消息,所以通常情况下,开启幂等性也会启用 acks=all和retries 设置,来尽可能确保消息是可以连续的,不然如果中间出现空洞,整个流程就会卡住,需要有专门的程序或者人工介入。这种方式有一个缺点,增减节点会对原有的路由分布会造成冲击,比如原来9个分区,用户id是10,那算出来就是10%9=1号分区,假设增加一个分区,该用户就路由到10%10=0号分区,也就是说,当节点增加或减少,原来的路由基本上是全乱了。
2026-04-03 14:36:17
373
原创 springai Alibaba(下)
那么我们可以通过一个案例来告诉大家什么是RAG。假设我们现在有一个需求,就是AI智能运维助手,通过提供的错误编码,给出异常解释来辅助运维人员更好的定位问题和维护系统。比如我们现在提供的错误代码中,00000代表success,A0001代表网络故障,A0002代表系统限流。但是传统的LLM是有缺陷的,比如LLM的知识不是实时的,不具备知识更新;LLM可能不知道你私有的领域/业务知识;LLM有时会在回答中生成看似合理但实际上是错误的信息。LLM的知识仅限于它所接受的训练数据。如果你。
2026-04-02 12:36:17
482
原创 springai Alibaba(上)
对于Java开发者来说,我们需要一款AI应用开发框架来简化AI应用开发。在这样的背景下,Spring官方开源了Spring AI框架,用来简化 Spring开发者开发智能体应用的过程。随后阿里巴巴开源了 Spring AI Alibaba,它基于Spring AI,同时与阿里云百炼大模型服务、通义系列大模型做了深度集成与最佳实践。基于 Spring AI Alibaba,Java开发者可以非常方便的开发 AI智能体应用。
2026-03-24 21:40:23
481
原创 提示词工程简介Prompt Engineering
本文摘要:文章系统介绍了提示词工程(Prompt Engineering)的核心概念与应用。主要内容包括:1.提示词工程的定义,即通过优化指令(Prompt)与大模型交互;2.Prompt调优方法,强调需根据训练数据特点持续迭代优化;3.Prompt的典型构成要素,包括角色定义等技巧;4.进阶应用如防止Prompt攻击、内容审核等。文章还提供了Python代码示例,展示如何通过OpenAI API实现Prompt工程应用。核心观点指出Prompt工程"门槛低但天花板高",需培养结构化表达
2026-03-19 23:54:58
481
原创 大模型基础入门
模型一开始的参数可能是随机的,然后它通过不断试错、计算误差并调整参数,最终让自己能够更准确地拟合真实数据的规律。简单来说,参数是模型在训练过程中通过数据学习得到的数值,类似于我们拟合直线时求得的系数a和b。要算力才能产生token,而算力吃的性能,这也是为什么基本上所有公司都是按照token的数量来计费,因为token的数量对应背后的计算量。参数是模型内部的变量,可以理解为是模型在训练过程中学到的知识,参数决定了模型如何对输入数据做出反应,从而决定模型的行为。帮助模型理解和预测数据之间的关系。
2026-03-18 23:42:59
380
原创 消息队列削峰和分发
消息队列削峰,一般解决的是突发流量激增额情况。如果是流量持续增大,并且单机性能优化达到极致,那么只能水平扩容。削峰,也可以理解为在解耦的基础上,进一步考虑了流量激增的情况;而解耦更侧重考虑整体的相应时间。
2026-03-18 21:15:35
231
原创 消息队列解耦及基本使用
消息队列的解耦,就是上下游服务相互依赖,但上游服务不关心下游服务结果,同时需要降低整体响应时间,且下游即便出现问题也不需要上游来解决的场景。
2026-03-18 19:12:27
410
原创 消息队列简介及安装
比如发送短信场景,假设服务SvrA发送消息给SvrB,SvrB发送短信给客户,很多时候业务是允许SvrA不需要得到SvrB发送完成的回应,只需要消息发送到SvrB就行了,这种情况下,如果还让SvrA等待SvrB的返回,显然会导致性能变低,同时还要去关注SvrB的运行结果。还有更常见的,比如一个业务流程,过了10多个微服务,单个也许不长,加起来就很难接受。以上的情况下,用户很难通过同步接口长时间等待结果,那就应该做成异步,先扔进消息队列,后续再进行消费,和解耦一样可以收获更高的性能,以及获得更好的可靠性。
2026-03-16 21:43:17
431
原创 MCP简单介绍
在介绍MCP之前,我们先来看一个日常问题想象一下,你在用ChatGPT这样的AI助手,你问它:"帮我看看今天的日程安排"。AI回答:"抱歉,我看不到你的日程表。因为AI就像一个关在房间里的超级聪明的人:它知识很丰富,它推理能力很强;但它完全接触不到外面的世界(你的文件、数据库、日历...)。但是拥有了MCP之后,AI就可以通过MCP来读取你的文件啦!简单来说,MCP就是能够让大模型更好地使用各类工具的一个协议。Host是大脑(决策者),Client是手脚(执行者),Server是工具(能力提供者)
2026-03-09 23:45:16
324
原创 wrk简单入门
wrk作为一款、高性能的,摒弃了复杂的图形化界面,以极简的命令行方式,充分利用单机多核CPU优势,用几行命令就能模拟出海量的HTTP请求负载。无论是快速验证接口的QPS、分析延迟分布,还是通过Lua脚本定制化模拟 POST请求、动态参数等真文业务场景,wrk都能以极低的资源消耗完成专业级测试。
2026-03-07 20:19:58
449
原创 Redis集群
Redis是内存数据库,我们知道可以通过持久化机制,保存快照或者保存记录日志的方式,将数据持久化到磁盘。但是,如果机器故障了或磁盘坏了,数据就不就全没了吗?这种情况应该怎么办呢?别担心,考虑主从模式。
2026-02-15 14:28:46
848
原创 Redis秒杀及限流器
黄牛可能是开脚本,一次发很多请求过来,抢到之后再转卖。但我们做活动,希望的就是回馈客户,进而吸引用户,而不是去让黄牛赚外快。因此,我们要尽量挡住黄牛的魔爪。通常来说,为了打击黄牛,最常见的方式是,一个用户最多只能抢到N份这样可以大大保障正常用户的权益。具体怎么做呢,为了性能,我们还是将限制逻辑加入到Redis中,所以我们的Lua脚本中,第一步查询库存,第二步扣减库存,需要优化为第一步查询库存,第二步查询用户已购买个数,第三步扣减库存,第四步记录用户购买数。
2026-02-15 13:29:20
767
原创 Redis分布式锁
分布式锁:满足分布式系统或者集群模式下多进程可见并且互斥的锁。分布式锁,一般会依托第三方组件来实现,而利用Redis实现则是工作中应用最多的一种。今天,就让我们从最基础的步骤开始,依照分布式锁的特性,层层递进,步步完善,将它优化到最优,让大家完整地了解如何用Redis来实现一个分布式锁。
2026-02-14 16:18:11
800
原创 Redis的Java客户端
SpringData是Spring中数据操作的模块,包括对各种数据库的集成,其中对Redis的集成模块叫做SpringDataRedis那么我们该如何使用SpringData来操作Redis呢?其提供了统一API来操作Redis;并且将不同数据类型的操作API封装到不同类型中;
2026-02-12 16:20:26
404
原创 Gemini无法使用问题解决
2.成功之后,在谷歌引擎中搜索where am i,查看地址是否与设置的地址一致,一致则设置成功;1.先去gmail邮箱里更改我的关联地址,当时我是改为美国纽约的地址。按照指示的步骤为自己的gem起名字。4.成功之后,再次访问。
2026-02-11 16:39:36
1623
原创 Redis缓存
做过项目的同学应该知道,Redis经常作为MySQL的缓存来使用;因为MySQL操作数据需要访问磁盘,性能不高,通常就几千QPS,而Redis基于内存并做了很多优化,性能高达10W QPS,一些热点数据就可以缓存到Redis,查询时先查Redis,不存在才查MySQL,这种Redis+MySQL结合的方式可以有效提高系统QPS。一般而言,缓存分为服务器端缓存,和客户端缓存,服务器端缓存即服务端将数据存Redis,可以在访问DB之后,将从DB得到的数据缓存起来。
2026-02-11 10:44:23
624
原创 Redis持久化
Redis是跑在内存种的,所以当程序重启或者服务崩溃,数据就会丢失,如果业务场景希望重启后数据还在,就需要进行数据持久化,即把数据保存到可永久保存的存储设备。Redis提供两种方式来持久化:1.RDB(Redis Database Backup),记录Redis某个时刻的全部数据,这种方式本质就是数据快照,直接保存到磁盘,后续通过加载RDB文件恢复数据。2.AOF(Append Only File),记录执行的每条写命令,重启之后通过。
2026-02-09 17:48:12
802
原创 Redis内存满了又该怎么办?
我们知道Redis是基于内存存储放入,那么我们可以存入多少数据到Redis中呢?我们可以使用maxmemory配置,默认是被注释掉的,在32位操作系统中,maxmemory的默认值是3G。因为32位的机器最大只支持4GB的内存,而系统本身又需要一定的内存资源来支持运行,默认3G相对合理。但是现在的机器基本上都是64位机器,我们后面重点关注以及面试重点提到的也是64位机器下的情况,64位机器不会限制内存的使用。
2026-02-06 12:19:40
790
原创 Redis执行
我们之前讲了Redis中数据对象的存储,大家就好奇了,我既然知道这些对象存储的底层原理,那么整体在Redis中是怎么存储的呢?Redis作为内存存储,前面提到过我们放在Redis中的数据都是以键值对形式存储的,本次我们会学习Redis底层结构到底长什么样?
2026-02-05 15:34:13
952
原创 Redis入门
Redis即Remote Dictionary Server ,远程词典服务器,是一个基于内存的键值型NoSQL数据库核心来看,Redis是。
2026-02-05 10:13:23
733
原创 Redis跳表
跳表的本质还是链表,普通链表的结构如下所示:这种结构虽然简单清晰,但是查询某个节点的效率比较低,而在有序集合场景,无论是查找还是添加删除元素,我们是需要能快速通过score定位到具体位置,如果用链表那时间复杂度其实就是O(N),N是节点个数。为了提升查找的性能,Redis就引入了跳表,跳表在链表的基础上,给链表增加了多级的索引,通过索引可以一次实现多个节点的跳跃,提高性能。跳跃表是一种支持多级索引的结构,查询效率可以媲美二分查找,它插入一条数据也是需要先查找,找到之后会进行索引的重建,整体。
2026-02-04 17:17:41
788
原创 HashTable
扩容是数据太多存不下了,那如果太富裕呢,比如原来可能数据较多,发生了扩容,但后面数据不再需要,被删除了,此时多余的空间就是一种浪费。Redis的扩容策略基于负载因子和写时复制机制的权衡:当负载因子≥1时,哈希表性能开始下降,本应触发扩容,但如果此时正在执行BGSAVE或BGREWRITEAOF(会fork子进程并使用写时复制技术),扩容将导致内存页被大量修改,使内存占用量短时间内近翻倍增长,因此Redis选择暂不扩容以优先保证内存稳定;此时,rehash 完成,旧哈希表被释放,新哈希表替换旧哈希表,
2026-02-04 11:36:45
552
原创 Java的锁机制
Synchronized用的锁是存储在Java对象头的,所以理解Java对象头的存储结构和存储数据的类型有助于对锁的理解;三类中,我们这里重点关注第一类MarkWord,是我们理解锁的核心程序运行期间,MarkWord存储的信息会随着锁标志位的变化而变化,可能会变化为以下四种状态之一;会发现无锁、偏向锁的"锁标志位”是一样的,即都是01,这是因为无锁、偏向锁是靠字段“是否是偏向锁”来区分的,0代表没有启用偏向锁,1代表启用偏向锁。
2026-01-30 10:40:49
1106
原创 实现单头自注意力机制(self-attention)
中的第一个embed_size和第二个对应每个词向量有多长(输入维度),处理后的词向量要多长(输出维度)就是告诉代码:"我要处理的每个词向量有这么长,请你按照这个长度来准备所有工具和计算比例。表示在最后一个维度上做softmax。
2025-12-18 18:44:04
298
原创 Springboot进阶知识
什么是starter?SpringBoot里的starter就是用来简化开发的工具,主要解决依赖管理和自动装配的问题;它本质上是一个整合好的依赖包,里面包含了开发某个功能常用的所有依赖,不需要我们手动一个个去添加需求自定义redis-starter,要求当导入redis坐标时,SpringBoot会自动创建Jedis的Bean案例:实现步骤①创建redis-spring-boot-autoconfigure模块。
2025-12-11 22:54:22
715
原创 SpringMVC的请求流程
HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器)对象,View 会根据传进来的Model 模型数据进行渲染,此处的Model 实际是一个Map 数据结构,因此 很容易支持其他视图技术;前端控制器接收到请求后自己不进行处理,而是委托给其它的解析器进行处理,作为统一访问点,进行全局的流程控制;本文搬运总结自下述博客,无任何商业用途,仅供自我学习,侵权即删。
2025-12-08 19:08:16
785
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅