- 博客(111)
- 问答 (4)
- 收藏
- 关注
原创 Redis:Redis键值淘汰策略
Redis键值淘汰策略摘要:Redis作为缓存使用时,通过maxmemory设置内存限制,当内存不足时根据配置的淘汰策略自动移除键值。主要策略包括noeviction(不淘汰)、LRU(最近最少使用)、LFU(最不常用)、random(随机)和TTL(最短存活时间)等变体。策略选择应考虑数据访问模式,如热点数据适合LRU,均匀访问适合random。淘汰算法采用近似实现以节省内存,可通过maxmemory-samples调整精度。Redis 4.0+支持LFU模式,通过频率计数淘汰不常用键。使用INFO命令可
2026-01-16 15:47:01
266
原创 Redis:Redis高可用——副本、哨兵和集群
Redis提供了三种高可用方案:主从复制、哨兵和集群。主从复制实现数据备份和读写分离,但需人工故障恢复;哨兵监控主从架构,自动选举新主节点实现高可用;集群通过数据分片解决单机容量限制,支持水平扩展。三种方案各有特点:主从复制简单易用,哨兵实现自动故障转移,集群提供分布式存储但客户端逻辑复杂。实际应用中需根据数据量、可用性需求和运维复杂度进行选择,同时注意主节点持久化配置以避免数据丢失风险。
2026-01-14 15:00:28
1107
原创 Redis:Redis持久化机制
Redis 提供了两种主要持久化机制:RDB 和 AOF。RDB 通过定时快照实现数据备份,具有文件紧凑、恢复速度快的特点,但可能丢失最近数据。AOF 记录所有写操作,提供更强的数据安全性,但文件体积较大。Redis 7.0 引入多部分 AOF 机制,提升了重写效率和安全性。用户可根据需求选择单独使用 RDB 或 AOF,或两者结合。此外,文章还介绍了从 RDB 切换到 AOF 的方法和 Redis 数据备份策略,为不同场景下的数据持久化需求提供了灵活解决方案。
2026-01-14 14:57:46
724
原创 Redis:Redis脚本
Redis脚本提供在服务器端执行自定义逻辑的能力,支持Lua脚本(Redis 2.6+)和函数(Redis 7+)两种模式。核心优势包括数据局部性、原子性操作和减少网络开销。脚本执行具有5秒超时限制,只读脚本可安全终止,写入脚本需强制重启。集群模式下需明确区分键名和参数以确保正确路由。Redis通过沙箱机制限制脚本仅访问数据库内部数据,保证安全性。
2026-01-13 17:29:24
865
原创 Redis:Redis 数据类型
Redis 提供了丰富的数据类型,包括基础类型(String、Hash、List、Set、Sorted Set)、高级类型(Vector Set、Stream、JSON)以及特殊类型(Bitmap、Geospatial、Time Series等)。这些类型针对不同场景优化,在性能、内存使用和功能上各有优势。基础类型如String支持二进制安全存储和原子计数,List采用QuickList优化内存和性能,适用于队列/栈场景。高级类型如Stream支持消息队列,JSON处理结构化数据。特殊类型如Geospati
2026-01-13 15:56:04
775
原创 Redis:Redis 命令详解
Redis命令是与Redis交互的核心方式,主要用于数据操作和管理功能。命令通过唯一名称标识,遵循类型前缀约定(如H开头的哈希命令)。每个命令包含键和参数,服务器处理后返回成功响应或错误信息。键是二进制安全的字符串,建议采用结构化命名(如"user:1000")并避免过长/过短。哈希标签({...})可用于集群多键操作。基础命令如EXISTS、DEL和TYPE用于键空间管理。键过期功能(EXPIRE/TTL)支持自动删除,时间精度达毫秒级。遍历键空间推荐使用增量迭代的SCAN命令,避免阻
2026-01-13 15:53:30
910
原创 Kafka核心架构与设计深度解析
Kafka通过顺序磁盘读写、操作系统页面缓存和恒定时间操作实现高性能持久化。生产者采用分区策略和异步批处理优化负载均衡与吞吐量,消费者通过拉取模型和位移管理实现高效消费。消息投递提供三种语义保障,0.11+版本支持精确一次投递。核心设计利用文件系统顺序I/O优势,避免JVM GC开销,实现高吞吐、低延迟的消息处理能力。
2026-01-09 15:03:42
802
原创 Java:JavaAgent技术(java.instrument和java.attach)
本文详细介绍了Java Instrumentation机制,主要包括java.instrument和java.attach模块的核心架构、工作机制以及基于ASM的字节码操作实战。核心组件包括Agent代理、ClassFileTransformer转换器和Instrumentation实例。文章阐述了三种Agent启动方式:命令行启动、动态附加和可执行JAR内嵌,并对比了不同拦截时机(类加载前和类重定义)的能力边界。最后介绍了ASM框架的核心概念(ClassReader、ClassVisitor等)及其在字节
2025-12-23 15:55:27
692
原创 All In AI——DSPy框架,让智能体开发像模型训练一样
DSPy框架提供了一套简洁的API来构建AI系统,其开发流程分为编程、评估和优化三个阶段。核心思想是通过代码而非字符串来定义任务,使用签名(Signature)声明模块的输入输出行为,支持多种数据类型和自定义类型。内置模块如Predict和ChainOfThought可组合使用,通过优化器自动生成高质量提示或微调模型。该方法比传统提示工程更模块化、适应性强,能有效提升AI系统的开发效率和质量。
2025-12-13 14:35:48
997
原创 JVM 字节码指令活用手册(基于 Java 17 SE 规范)
JVM 字节码指令手册摘要 本手册基于Java SE 17规范,系统化讲解JVM字节码指令,适用于开发者、学习者及底层技术研究者。主要内容包括: 核心模型:JVM执行基于局部变量表、操作数栈和常量池的三元数据流模型 指令分类解析: 常量加载指令(如iconst、ldc等) 局部变量存取指令(如iload、astore等) 数组操作指令(如iaload、iastore等) 实用特性: 指令格式标准化说明(操作数、栈行为等) 典型应用场景与异常处理 优化设计(如单字节指令优化) 手册采用"从代码到字节
2025-12-08 10:51:12
882
原创 ASM七步曲之一:Core API——类
文章摘要: 本文详细介绍了Java编译后类的结构及其与源代码的区别。编译后的类保留了源代码的大部分结构信息,包括类修饰符、字段、方法和注解等,但不包含注释、包声明和导入节。主要差异体现在:1) 每个编译类对应一个类文件;2) 使用常量池存储常量;3) 类型表示方式不同,包括内部名称、类型描述符和方法描述符。文章还介绍了ASM框架中的ClassVisitor接口,该接口提供了一系列访问类结构的方法,并规定了这些方法的调用顺序。这些知识对于理解Java字节码和进行字节码操作具有重要意义。
2025-12-08 09:34:55
1055
原创 SSE字符串以及Flux<String>中文乱码问题
摘要:Spring Boot 3.2.5使用SSE发送中文字符串时出现乱码问题,原因是StringHttpMessageConverter默认编码非UTF-8。解决方案是继承WebMvcConfigurationSupport并重写extendMessageConverters方法,将StringHttpMessageConverter替换为UTF-8编码版本。但该方案在.http文件请求中仍存在乱码问题,尝试转换为ISO编码或使用WebMvcConfigurer均无效,必须添加@EnableWebMvc注
2025-12-03 15:15:04
262
原创 All In AI之三:一文构建Python核心语法体系
本文从执行模型和数据模型两个维度系统介绍了Python的核心机制。执行模型部分详细解析了代码块结构、名称绑定规则、命名空间作用域(LEGB原则)以及local/nonlocal/global关键字的用法。数据模型部分深入剖析了对象的三大特性(标识号、类型、值),阐述了基类object与元类type的关系,并重点介绍了抽象基类体系及其在数字类型、容器类型中的应用。全文基于官方文档,以清晰的逻辑和结构化的方式呈现Python语言设计精髓,为开发者提供全面而深入的语言底层认知框架。
2025-09-23 18:58:47
3367
原创 All in AI之二:一文构建机器学习数学体系
本文介绍了机器学习所需的数学基础,重点涵盖数与量、几何、函数和线性代数四大模块。数与量区分了标量与向量,强调向量具有大小和方向的双重属性。几何通过坐标系将抽象数学量可视化,阐述了单位向量和线性组合的几何意义。函数部分解析了标量函数与向量函数的区别及其空间表达,包括单变量/多变量函数和参数曲线的动态变化。线性代数则深入探讨向量空间、线性组合、线性相关性、基和维度的核心概念,并引入范数作为向量大小的量化工具。全文以直观几何解释配合严谨数学定义,为读者构建了机器学习所需的实用数学框架。
2025-09-09 18:18:04
1075
原创 All in AI之一:AI基本概念
本文介绍了AI模型的核心概念与应用技术,涵盖五大关键方向:1)AI模型的分类与功能,包括文本、图像、音频等输入输出形式;2)提示词工程的艺术性与技术性,强调模板化设计对输出质量的影响;3)嵌入技术的向量化表示,说明其在语义相似度计算中的作用;4)Token的基础计量单位特性,揭示其与费用计算和上下文窗口的关联;5)数据整合的三大技术路径(微调、提示词填充、工具调用),重点解析RAG技术通过ETL管道实现外部数据融合的机制。文章系统性地呈现了AI应用开发中的关键技术要素,为开发者提供了从理论到实践的完整认知框
2025-08-05 09:59:34
1092
原创 SpringAI:提示词工程
本文介绍了如何使用Spring AI实现高效提示工程技术,重点讲解了LLM配置和提示词技术实现。主要内容包括:1)LLM厂商选择和配置(如Anthropic Claude模型),通过ChatOptions调整temperature、maxTokens等参数控制输出特性;2)支持结构化输出映射到Java对象;3)零样本提示技术的实现示例,展示了电影评论情感分类案例。文章提供了完整的代码示例,帮助开发者将提示工程理论转化为可运行的Java实现。
2025-07-28 13:11:40
1168
原创 SpringAI:构建高效的智能代理系统
原文连接“Agent” 可以有多种定义。一些客户将 Agent 定义为完全自主的系统,能够独立运行较长时间,使用多种工具完成复杂任务。另一些客户则用该术语描述遵循预定义工作流程的指令式实现。工作流(Workflows):这类系统通过预定义的代码路径对 LLM 和工具进行编排(例如:指令式系统)Agent(智能体):这类系统由 LLM 动态驱动自身的流程和工具调用下面,我们将详细探讨这两类 agentic 系统。在 LLM 领域取得成功,不在于构建最复杂的系统,而在于构建最适合你需求的系统。
2025-07-28 11:31:14
1153
原创 站在 Java 程序员的角度如何学习和使用 AI?从 MVC 到智能体,范式变了!
本文探讨了Java开发者如何适应AI技术变革,分析了从传统MVC开发向AI Agent模式的范式转变。文章指出,LLM(大语言模型)作为预测性无状态系统存在输入限制、缺乏记忆等固有缺陷,而AI智能体通过三大核心技术解决了这些问题: Prompt工程 - 控制模型行为 RAG技术 - 动态注入外部知识(结合语义检索与关键词检索) MCP架构 - 赋予模型工具调用能力(API/DB/代码执行) 文章还展望了AI应用的未来方向:多模态输入(图像/语音/视频处理)和多智能体协作(任务分解与角色分工)。这种转变本质上
2025-07-03 13:30:08
1126
原创 分布式系统全链路监控之一:分布式全链路监控基础概念和OpenTelemetry
OpenTelemetry(OTel)是一个开源、厂商无关的可观测性框架,用于采集和导出追踪、指标和日志等遥测数据。它支持分布式系统监控,通过链路追踪(Traces)、指标(Metrics)和日志(Logs)等信号提供系统可观测性。OTel的核心概念包括上下文传播、信号关联以及结构化日志处理,帮助开发者理解系统行为并排查问题。其收集器(Collector)可统一处理多种数据源,自动关联日志与追踪信息,推荐使用结构化日志以提升分析效率。OTel已成为行业标准,被广泛集成于各类应用中。
2025-06-16 11:58:50
1506
原创 分布式系统全链路监控之二:Spring Actuator
Spring Boot Actuator 提供生产级监控和管理功能,通过HTTP或JMX接口实现。主要功能包括健康检查、指标收集和审计日志等。通过添加spring-boot-starter-actuator依赖即可启用。Actuator提供多种内置端点,如beans、env、metrics等,用于监控应用状态。端点访问权限可通过配置管理,默认仅开放health端点。敏感信息会自动脱敏处理,端点响应可缓存优化性能。还支持自定义端点扩展功能,满足特定监控需求。详情可参考Spring Boot官方文档。
2025-06-16 09:32:02
1161
原创 从操作系统到Java一文彻底搞懂Java并发和异步编程
在Java中,当我们启动`main()`函数时其实就是启动了一个JVM 进程,而 `main()` 函数所在的线程就是这个进程中的一个线程,也称主线程。Java线程如何实现并不受JVM规范的约束,它与具体的虚拟机实现相关。以HotSpot为例,它的每一个Java线程都是直接映射到一个操作系统原生线程来实现的。目前使用的两种主要线程库是:POSIX Pthreads、Windows API。Pthreads作为POSIX标准的扩展,可以提供用户级或内核级的库。Windows线程库是用于Windows操作系统的
2024-12-19 12:25:38
773
原创 MySQL十部曲之九:MySQL优化理论
在学习优化理论之前,应该先明白:下文提到的所有优化方法是指MySQL优化器在特定条件下对SQL的的优化,我们要做的仅仅是在编写SQL时尽量满足这些特定条件而尽量多的触发MySQL优化器对SQL的优化。此外,MySQL版本的差异和MySQL的不断发展都会导致优化方法和触发条件的变化,本文基于MySQL8以及InnoDB进行讨论。
2024-05-30 09:24:47
1817
原创 操作系统——进程与线程
现代操作系统允许多个程序并发执行,为了更好地描述和控制程序的并发执行,从而引入了进程的概念。程序和进程的区别如下:- 程序:是静态的,是一个存放在磁盘里的可执行文件,是一个指令的集合。- 进程:是动态的,是程序的一次执行过程
2024-02-17 11:20:17
1139
原创 Docker五部曲之五:通过Docker和GitHub Action搭建个人CICD项目
通过Docker和GitHub Action搭建个人CICD项目
2024-01-18 17:52:32
2173
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅