- 博客(618)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
转载 除了Minio,这5个分布式文件系统更香!
摘要:随着Minio转向AGPLv3许可证并收紧商业化政策,企业面临开源合规风险。本文推荐5个替代方案:1)SeaweedFS(Apache2.0协议,小文件优化);2)Garage(去中心化设计);3)Ceph(企业级全能方案);4)GlusterFS(POSIX兼容);5)OpenStack Swift(企业标准)。各方案在许可证友好度、部署复杂度、适用场景等方面存在差异,建议根据团队规模、文件类型、运维能力等实际需求选择。核心原则是平衡许可证合规性与技术适配性,而非单纯追求功能全面性。
2025-12-20 21:31:32
99
转载 SpringBoot + Tika 实现数据泄露防护、检测敏感信息
Apache Tika是一个强大的内容分析工具,支持从多种文件格式(如文档、PDF、图片等)中提取文本和元数据。其核心特性包括自动文件类型识别、OCR文字识别、语言检测和多线程处理。Tika架构包含解析器、配置管理和REST服务等组件,可广泛应用于文档管理、数据分析和信息安全领域。在SpringBoot项目中,Tika可集成用于敏感信息检测,通过正则表达式识别身份证号、信用卡号等敏感数据,实现数据泄露防护。测试表明,Tika能有效提取并检测文件中的敏感信息,为企业提供安全解决方案。
2025-12-16 08:21:01
33
原创 nacos实现注册中心原理详解
Nacos注册中心核心架构包括服务注册表、服务提供者、消费者和健康检查机制。服务注册流程通过REST API将实例信息存入内存注册表,采用分层存储结构。健康检查通过心跳机制和服务端探测保证实例可用性。服务发现采用客户端拉取和服务端推送(UDP/长轮询)结合的方式。集群部署使用Distro和Raft协议实现数据同步,支持AP/CP模式。关键特性包括保护阈值、权重路由和实例分级(临时/持久化),相比Eureka和Zookeeper在一致性、健康检查等方面更具优势。Nacos通过分层存储、混合推送机制和双协议设计
2025-12-14 16:35:12
873
原创 Maven聚合、继承与私库详解
本文详细介绍了Maven的聚合(Aggregation)与继承(Inheritance)机制,以及私服(Private Repository)的配置与使用。主要内容包括:1)Maven核心概念与仓库体系;2)聚合项目的结构与配置,通过父POM统一管理多模块构建;3)继承机制详解,包括可继承元素、父POM配置与子模块继承方式;4)聚合与继承的关系对比;5)私服的作用、架构、配置及依赖下载流程;6)企业级多模块项目实战案例与常用命令;7)最佳实践总结,包括项目结构建议和依赖管理原则。通过聚合与继承的结合使用,可
2025-12-13 18:46:52
1060
原创 记一次k8s服务部署之后,访问返回503
摘要:同事在K8s部署Python服务时遇到503错误,经排查发现Service配置错误。Pod运行正常且日志显示服务启动成功,但Service未找到。原因是Service名称模板多加了"-service"后缀,导致实际名称(python-assist-creation-service-service)与Pod标签不匹配。正确的Service名称应与Pod的label保持一致,该问题暴露了资源配置中的命名不一致问题。(149字)
2025-10-25 16:03:11
403
转载 精通python,不知道Uvicorn?
本文介绍了Python Uvicorn库,一个高性能的ASGI服务器,适用于构建异步Web服务。主要内容包括:Uvicorn的基本概念、安装方法、快速启动示例,以及SSL支持、WebSocket处理、中间件使用等高级功能。文章还提供了异步API服务和WebSocket服务的实际应用场景,帮助开发者快速上手构建高性能的异步Web应用。Uvicorn能与FastAPI等框架配合使用,支持HTTP/WebSocket协议,并提供丰富的配置选项,是开发现代Web应用的理想选择。
2025-10-19 15:00:17
227
转载 用 Docker 快速搭建 MinIO 文件服务
本文介绍了使用Docker部署MinIO对象存储服务及Java SDK集成方法。主要内容包括:1)通过Docker快速部署MinIO服务,配置数据目录和访问端口;2)MinIO的基本概念和文件存储结构;3)Web控制台操作,包括创建存储桶和设置访问权限;4)Java代码示例演示文件上传功能,包含初始化客户端、流式上传文件及获取直链URL等关键步骤。文章提供了完整的部署命令和Java代码片段,帮助开发者快速实现兼容S3协议的文件存储解决方案。
2025-10-18 17:49:52
232
转载 最新RAG技术架构演进路线图拆解
RAG技术演进与应用趋势(2025年) 摘要:RAG技术已成为大模型应用的核心支撑,从NaiveRAG到AgenticRAG经历了三代架构升级。NaiveRAG通过文档分块解决知识不足问题;GraphRAG引入知识图谱解决上下文断层;AgenticRAG实现动态知识获取,支持多智能体协作。2025年RAG呈现三大趋势:元学习能力增强、模块化架构普及、混合检索技术成熟。企业应用建议根据业务复杂度选择架构,重视数据质量,建立持续优化机制。RAG正从辅助工具演变为企业AI核心基础设施,在连接大模型与业务需求方面发
2025-10-14 08:02:22
133
转载 RAG实践指南:一文搞定大模型RAG过程
RAG(检索增强生成)是一种结合信息检索与大语言模型的AI框架,通过实时检索外部知识库提升回答准确性。其核心流程分为知识准备和问答两阶段:知识准备阶段对文档进行解析、清洗、分块和向量化存储;问答阶段则通过查询预处理、向量检索、结果重排序和提示词优化,最终由LLM生成基于检索结果的回答。RAG技术有效解决了大模型的知识更新、幻觉问题和垂直领域适配等关键挑战,成为AI落地的实用方案。
2025-10-12 13:58:44
105
转载 5年经验,redis几种部署方式都没搞清楚?
文章分享了五种Redis部署模式的经验:1)单实例模式简单但可靠性低;2)主从+哨兵模式实现高可用和读写分离;3)分片集群+一致性Hash解决大数据量问题;4)分片集群+预分配槽位支持平滑扩容;5)官方RedisCluster提供去中心化、自动分片等高级特性。作者强调没有完美的"银弹"方案,需要根据业务需求在性能、扩展性和运维成本间权衡选择。每种模式都有其适用场景,从简单到复杂逐步演进,反映了Redis在不同业务规模下的应用实践。
2025-10-05 15:30:00
55
转载 有互联网开发经验,不了解小程序登录流程?
小程序登录流程解析:前端通过wx.login获取临时code并传给后端,后端调用微信接口换取用户的openId和session_key。开发者服务器需存储用户信息(含openId)并生成自定义登录状态token。关键点包括:1)获取手机号需先获取access_token;2)openId是小程序用户唯一标识;3)unionId是微信开放平台统一标识。实现时需注意接口调用封装、token校验拦截器设计,以及用户信息表的创建(含openId字段)。该流程确保了用户身份识别和后续业务交互的安全可靠性。
2025-10-05 15:16:27
142
原创 5年经验,没安装部署过Nginx?
本文介绍了Linux服务器上安装Nginx的多种方法:1)通过系统包管理器(Ubuntu/Debian使用apt,CentOS使用yum/dnf)简单安装;2)源码编译安装适合高级用户,可定制模块但过程复杂;3)使用Nginx官方仓库获取较新版本;4)Docker方式便于容器化部署。文章还对比了各方法的优缺点:包管理器安装简单但版本较旧,源码安装可定制但复杂,官方仓库版本较新,Docker适合容器环境。建议新手使用包管理器或官方仓库,高级用户可选择源码编译,容器环境推荐Docker。最后提供了验证安装的方法
2025-09-27 12:57:44
306
原创 tar -xzf nginx.tar.gz -C / 后面的-C是啥意思?
tar命令的-C参数用于指定解压/压缩的目标目录,避免文件解压到当前工作目录造成混乱。基本语法为"tar -xzf 压缩包文件名 -C 目标目录",例如"sudo tar -xzf nginx-backup.tar.gz -C /"将文件解压到根目录。该参数在备份恢复时特别有用,能保持原始路径结构。使用时需注意权限问题,确保目标目录存在,并警惕覆盖风险。结合其他参数如-v(显示详情)、-t(查看内容)等,可实现更精准的文件操作。-C参数本质上是为tar命令指定工作目录
2025-09-27 12:37:41
398
转载 JWT和redis+token那些事
本文对比分析了JWT和Token+Redis两种认证授权方案。JWT通过自包含的无状态令牌实现认证,适合分布式系统,但无法主动失效;Token+Redis采用有状态会话存储,支持精细控制但依赖Redis性能。文章详细介绍了两种方案的Java实现、优劣势对比及适用场景,并提出混合方案(短期JWT+Redis黑名单)来兼顾无状态特性和主动注销能力。最后给出选型建议:JWT适合分布式架构,Token+Redis适合需要实时控制的系统,混合方案则平衡了安全性和便利性。强调应根据实际业务需求选择最简单可靠的方案,并重
2025-09-20 16:23:26
67
转载 8年经验,Nginx部署配置都没整明白?
本文全面介绍了Nginx的核心功能配置,包括反向代理、静态资源访问、限流、SSL和负载均衡。从基础环境搭建到高级配置优化,详细讲解了各项功能的实现方法,如反向代理缓存、静态资源压缩、请求限流、SSL证书配置以及多种负载均衡算法。通过具体配置示例,展示了如何提升服务性能、保障安全性和实现高可用性,为构建高效稳定的Web服务提供了完整解决方案。
2025-09-20 16:15:34
141
1
转载 精通MQ,不清楚如何保证消息顺序消费?
本文深入探讨了消息队列中消息顺序性的概念与解决方案。首先明确了消息顺序的定义,指出其核心在于消费者处理消息的顺序与消息到达Broker的顺序一致。文章分析了Kafka的分区存储机制,区分了全局顺序和局部顺序两种需求场景,特别强调了大多数业务场景下局部顺序才是真正需求。针对顺序消费问题,文章提出了三种解决方案:单分区方案简单但性能受限;单分区异步消费方案存在复杂性高和数据丢失风险;多分区局部有序方案成为主流方案,通过业务键路由确保同一业务消息进入同一分区,同时讨论了数据倾斜和扩容导致顺序错乱的应对策略。最后指
2025-09-18 08:22:58
75
原创 精通Linux,不会这些命令?
这篇摘要介绍了五个实用的Linux和Java命令操作:1)使用find命令递归删除Maven本地仓库中的.lastUpdated文件;2)通过du命令查找当前目录下空间占用最大的前10个子目录;3)用netstat命令查询指定PID的进程网络信息;4)使用jmap工具导出Java堆快照;5)利用jstack命令导出Java线程栈信息。这些命令涵盖了文件清理、空间分析、进程监控和Java内存诊断等常见运维场景,每个命令都配有参数说明和示例输出,具有较高的实用价值。
2025-09-17 08:32:44
354
转载 在Maven中趟过的坑
摘要:本文系统解析Maven核心原理,包括坐标体系、依赖传递、生命周期和仓库体系,并列举10个典型问题场景及其解决方案。重点涵盖循环依赖、版本冲突、快照依赖误用、资源过滤缺失等常见问题,提供依赖树分析、版本锁定等实用技巧。针对企业级应用,提出依赖管理三原则(严格父POM、持续检查、公私分离)和高可用构建架构建议,强调通过dependency:analyze优化依赖,使用archetype规范项目结构。文章结合具体案例(如JDK17兼容性问题)和配置示例,帮助开发者规避Maven使用中的常见陷阱。
2025-09-17 08:12:12
86
原创 企业级VIP+Nginx的网络访问方案
虚拟IP(VIP)是构建高可用Nginx架构的标准方案。VIP作为公网统一入口,通过Keepalived实现主备切换,确保服务高可用性。后端Nginx服务器的真实IP应严格限制在内网,避免直接暴露公网。这种架构通过VIP隐藏后端细节,简化维护,同时利用负载均衡提高性能。关键配置包括:防火墙仅开放VIP的80/443端口,内网通信使用VRRP协议,DNS只解析到VIP地址。相比单机部署,VIP方案显著提升了系统的可靠性和扩展性,是生产环境推荐的最佳实践。
2025-09-13 19:43:32
1080
转载 MCP协议演进:从SSE到Streamable HTTP的技术革命
MCP协议演进:从SSE到StreamableHTTP的AI通信革新 摘要:MCP协议作为AI模型与外部工具交互的核心标准,其传输机制从HTTP+SSE转向StreamableHTTP具有重大意义。传统SSE方案存在高连接资源消耗、企业网络兼容性差、实现复杂度高等问题,而StreamableHTTP通过统一端点、按需流式传输和灵活状态管理三大创新,显著提升了系统性能与可靠性。实测数据显示,在1000并发场景下,StreamableHTTP将连接数从上千降至数十,响应时间稳定在7.5ms,远优于SSE的1.5
2025-09-08 07:54:09
172
转载 什么是向量数据库?
向量数据库通过存储向量嵌入实现高效的数据管理,支持创建、检索、更新和删除操作。其核心在于将文本、图像等数据转换为数值向量,利用嵌入模型捕捉语义信息。系统通过相似性搜索(如余弦相似度)、聚类算法(如K-Means)和索引优化(如K-D树)实现快速检索。关键技术还包括数据规范化、GPU加速、降维可视化(如PCA)和稀疏数据处理(如CSR格式)。这些特性使其在AI聊天机器人、推荐系统等场景中发挥重要作用,同时通过加密和审核确保数据完整性。NVIDIA NeMo等工具进一步强化了向量数据库的AI应用能力。
2025-09-07 12:44:39
77
转载 精通消息队列,不了解kafka?
Kafka高性能架构设计解析 Kafka通过精妙的架构设计实现超高吞吐量: I/O模型采用Reactor模式,基于NIO实现非阻塞网络通信,通过Acceptor-Processor线程模型高效处理海量连接 零拷贝技术运用sendfile和mmap,减少数据复制次数,降低CPU负担 Partition分区并发设计,通过水平扩展提升处理能力,配合轮询/键保序等分区策略实现负载均衡 分段存储+稀疏索引机制,结合磁盘顺序写和PageCache优化,使磁盘读写性能接近内存 数据压缩和批量处理机制减少网络传输和存储开销
2025-09-06 21:53:42
95
转载 如何给千万级数据量表加字段
【如何在千万级订单表中安全新增字段】面对千万级订单表新增字段的需求,直接执行DDL存在锁表风险。本文探讨了多种解决方案:1)主从切换方案需谨慎操作;2)在线DDL工具实现复杂;3)最终通过需求优化,将字段写入日志避免修改表结构。还介绍了扩展表、JSON字段和复用冗余字段等备选方案。关键启示:核心表结构修改需全面评估风险,优先考虑需求优化和非侵入式方案,测试环境充分验证是保障线上稳定的关键。
2025-08-31 06:52:06
121
原创 LangGraph 那点事
LangGraph是LangChain公司开发的库,用于构建基于大语言模型的有状态多智能体应用。它通过状态图(StateGraph)实现循环计算图,支持节点、边和共享状态管理,能处理顺序、条件分支、循环和并行工作流。相比LangChain的线性流程,LangGraph更灵活,适合多步骤有状态任务和智能体开发。其核心特性包括条件路由、循环控制和可视化调试,通过Pydantic模型定义状态,节点可访问修改共享状态。示例展示了分类处理用户问题的流程,演示了LangGraph在多轮决策中的优势。该框架为复杂AI工作
2025-08-24 16:40:47
959
1
转载 为什么Redis使用哈希槽而不是一致性哈希
Redis Cluster采用哈希槽(16384个槽)而非一致性哈希,主要基于以下优势:哈希槽支持更灵活的数据迁移和节点扩容,可直接迁移整个槽而非重新计算key;允许按节点性能差异分配不同数量的槽位;集群通信时槽信息仅占2KB空间,比65536槽方案更高效;16384槽数完全能满足千节点级集群需求。一致性哈希虽可通过虚拟节点解决数据均衡问题,但在迁移灵活性和管理复杂度上不及哈希槽方案。
2025-08-24 15:05:09
94
转载 精通分布式,不了解Hash一致性算法?
本文介绍了理论一致性哈希算法及其在分布式系统中的应用。该算法通过将数据键散列到2^32环上,使节点增减时仅需迁移少量数据,而无需重新计算所有映射关系。相比普通哈希取模法,一致性哈希能有效减少数据迁移量。文章还分析了节点增减对数据分布的影响,并提出了虚拟节点方案解决分布不均问题:通过为每个真实节点创建多个虚拟节点,使数据分布更均匀,从而平衡节点故障时的负载压力。虚拟节点数量越多,系统负载分布越均衡。
2025-08-24 14:55:06
77
原创 IDEA 快捷编辑指南
让 IDEA 帮你写尽可能多的代码(生成、补全、重构),让你的精力集中在逻辑和设计上。会弹出可用的快速修复或优化建议(如创建方法、添加参数、转换 lambda、导包等),这是 IDEA 最强大的功能之一!不要试图一次记住所有快捷键。万能搜索(Search Everywhere),搜文件、类、操作、符号等。重命名(类、方法、变量、文件名等,智能更新所有引用)。内联(将变量、方法、常量等内联到使用处,反向操作)。显示当前文件的结构(方法、字段列表),可快速跳转。缩进/取消缩进选中的代码块(结构化编辑的核心)。
2025-08-10 16:32:25
1091
转载 mysql-connector-java 插入 utf8mb4 字符失败问题处理分析
摘要:MySQL数据库从utf8改为utf8mb4后,Java程序插入表情符号时出现编码错误。分析发现mysql-connector-java-5.1.46版本依赖MySQL服务端返回的编码信息,而动态修改编码参数后服务端仍返回旧编码。解决方法包括:1)重启MySQL使配置生效;2)为连接器打补丁使其额外检查collation参数;3)升级到5.1.47+版本直接支持utf8mb4映射。此外还指出低版本MySQL中emoji可能引发唯一键冲突问题,建议使用utf8mb4_bin排序规则或升级到MySQL 8
2025-07-13 22:23:50
175
转载 ThreadLocal全面解析
摘要: ThreadLocal是Java实现线程封闭的关键技术,通过为每个线程创建独立变量副本来保证线程安全。其核心原理是每个Thread对象内置ThreadLocalMap存储线程本地变量,以ThreadLocal实例作为弱引用key。主要优点包括避免线程竞争、简化参数传递和提高并发性能,但也存在内存泄漏风险,需配合remove()方法及时清理。典型应用场景包括线程安全对象管理(如SimpleDateFormat)和跨层参数传递。最佳实践建议将ThreadLocal声明为static变量,避免重复创建实例
2025-06-29 19:57:24
123
原创 RabbitMQ 的高可用性
RabbitMQ高可用方案对比:普通集群模式通过分散元数据提高吞吐量但不保证高可用,镜像集群模式实现消息全节点同步确保高可用性。普通集群存在单点故障风险且数据拉取效率低,镜像集群虽解决高可用问题却带来性能开销和扩展性限制——消息需全量同步导致带宽压力,且无法通过增加节点实现线性扩展。管理控制台可便捷配置镜像策略,但数据量过大时仍面临存储瓶颈。两种模式分别适用于不同场景,需权衡可用性需求与性能成本。
2025-06-08 10:02:33
693
转载 六年经验,没了解过Excel百万数据高性能导出
在日常工作中,Excel数据导出常面临性能和内存问题。传统方案如Apache POI的HSSF/XSSF组件在处理超过5万行数据时性能显著下降,主要由于内存对象模型设计缺陷。为解决这一问题,提出了两种高性能导出方案:一是使用SXSSFWorkbook,通过滑动窗口机制减少内存占用;二是采用阿里巴巴的EasyExcel,通过事件驱动模型和对象复用池技术进一步降低内存消耗。此外,文章还强调了数据库查询优化的重要性,包括解决深度分页问题、减少字段数量和连接池参数调优。最后,提出了异步分片导出和JVM参数配置等生产
2025-05-10 20:31:22
218
1
原创 六年经验,看不懂GC日志?
基于AI的智能分析,支持自动检测内存泄漏、GC暂停原因分析,并提供JVM优化建议。没有"完美"的GC日志,只有适合你应用场景的平衡点。通过持续监控和分析GC日志,你能更好地理解应用的内存行为,做出明智的优化决策。想象一下这样的场景:你的应用在生产环境运行良好,突然某天开始响应变慢,甚至出现OOM崩溃。:开源工具,支持可视化GC日志(如堆内存变化、暂停时间统计),可生成CSV报告和图表。在开始解读之前,先确保你的应用已经正确配置了GC日志记录。:快速分析生产环境日志,无需本地安装,适合非敏感数据环境。
2025-05-10 17:25:53
1246
1
原创 记一次现网服务FGC告警
起因是运维发现现网一个服务触发了FGC频率监控告警,具体告警信息如下遇到这种问题,首先考虑就可能是发生内存泄漏了,或者存在大对象,导致无法申请新内存。运维在把触发告警的节点重启之间,保存了dump信息,下面来看看具体的内存快照信息。
2025-02-09 13:58:33
575
转载 Spring Boot中Druid连接池与多数据源切换
在需要切换数据源的方法上使用自定义注解。@Service@Autowired// 其他操作。
2024-11-21 00:06:35
281
转载 彻底搞懂零拷贝
无论是传统 I/O 拷贝方式还是引入零拷贝的方式,2 次 DMA 拷贝是都少不了的,因为两次 DMA 都是依赖硬件完成的。拷贝方式CPU拷贝DMA拷贝系统调用上下文切换传统方式(read + write)224内存映射(mmap + write)124sendfile12sendfile202sendfile2RocketMQ 选择了 mmap + write 这种零拷贝方式,适用于业务级消息这种小块文件的数据持久化和传输;
2024-11-17 17:06:17
245
原创 Collections.synchronizedList()你真的会用吗?
在日常开发中,我们有时候需要初始化一个线程安全的List集合,我们可以使用。
2024-11-14 20:52:35
848
原创 The field file exceeds its maximum permitted size of 1048576 bytes.
SpringBoot 项目在文件上传时出现了如上的错误,显示文件的大小超出了允许的范围。原因是 SpringBoot内嵌的 tomcat 默认的所有上传的文件大小为 1MB,超出这个大小就会报错,解决这个问题需要更改以下两个默认。解决方案呢,要根据SpringBoot的版本来确定,以下列举出了几种情况,可以根据自己项目的SpringBoot版本来对应:把默认的文件的大小限制修改一下即可。以下是我项目中的用到的文件大小限制,改成50MB即可满足我的需求了。配置完上述限制之后,重启项目。
2024-11-12 22:03:18
2080
原创 The temporary upload location [/tmp/tomcat.*.*/*/Tomcat/*/ROOT] is not valid
原因:springboot 启动tomcat服务的时候默认会在/tmp目录下生成一个缓存文件夹,linux系统满足某种条件会清理/tmp路径,导致报错。思路:很明显这个缓存目录是用来缓存上传文件的,当上传的文件进行缓存时,找不到缓存目录,导致IOException。解决方案:指定一个linux不会清理的缓存目录:server.tomcat.basedir。
2024-11-12 21:57:09
948
原创 RedisTemplate序列化设置
在本文中,我们介绍了 RedisTemplate 序列化设置的流程和具体步骤,并提供了几种常见的序列化方案供选择。通过正确地配置序列化器,我们可以将对象以合适的格式存储到 Redis 中,从而提高数据的读写效率和可读性。希望本文能帮助你理解和运用 RedisTemplate 的序列化设置。
2024-11-11 21:35:23
1531
原创 mysql中数据不存在却查询到记录?
首先看下面的查询语种查询结果如下看到上面的查询结果,是不是一脸懵?这audioId明显不对啊,怎么查询到了?
2024-11-11 19:33:03
658
Java+内存分析工具+MAT
2023-08-19
websocket实现聊天小demo
2023-05-12
aspose导出pdf乱码,配置字体库
2023-02-25
windows 2008 R2解决socket连接不释放补丁包
2019-01-17
aspose操作word文档,目录问题
2022-09-05
苹果退款接收latest_receipt_info数组里面的对象问题
2021-11-18
苹果商品内购,服务端提供接口订阅通知消息
2021-09-13
java.io.IOException: Premature EOF异常怎么解决
2020-09-17
jdk中的jre/lib/security目录下为啥要导入证书
2019-12-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅