- 博客(87)
- 收藏
- 关注
原创 Redis为什么能够轻松抗住百万级别的并发请求
有些小伙伴可能会疑惑:Redis是单线程的,为什么还能支持这么高的并发?这里需要澄清一个概念,Redis的"单线程"指的是网络IO和键值对读写是由一个线程来完成的,但Redis的整个系统并不是只有一个线程。为什么单线程反而更快?避免了线程切换的开销:多线程环境下,CPU需要在不同线程间切换,这个过程需要保存和恢复线程上下文,开销很大。避免了锁竞争:单线程模型下,不需要考虑线程安全问题,避免了各种锁的开销。CPU缓存友好:单线程执行时,CPU缓存命中率更高,减少了内存访问延迟。让我们看一个简单的对比:1
2025-09-11 09:49:19
552
原创 消息队列(MQ)的10种典型场景
今天我想和大家分享我在实际工作中使用消息队列(MQ)的10种典型场景,希望对你会有所帮助。在深入具体场景之前,我们先来思考一个基本问题:为什么要使用消息队列?系统间的直接调用:引入消息队列后:接下来我们将通过10个具体场景,带大家来深入理解MQ的价值。在我早期参与的一个电商项目中,订单创建后需要通知多个系统:这种架构存在严重问题:紧耦合:订单服务需要知道所有下游服务单点故障:任何一个下游服务挂掉都会导致订单创建失败性能瓶颈:同步调用导致响应时间慢引入MQ后,架构变为:代码实现:技术要点
2025-09-04 11:34:39
910
原创 开源MCP交易平台
在MCP/API变现这件事上,大多数人要么被复杂的技术栈劝退,要么在使用现有平台时,被高昂的抽成和规则限制。XPack 则提供了一个“两全其美”的方案——既给了你开箱即用的便利,又保留了掌控一切的自由度。近年来AI 疯狂崛起,很多人都在想:我能不能把自己写的 API、MCP 工具、AI 插件,做成一个小服务,让更多人调用,顺便赚点副业收入?真心建议对MCP变现感兴趣的同学,可以去研究一下这个开源项目,打开了MCP交易的新可能。命令,你把它复制到你的服务器上运行,接杯水的功夫,你的专属MCP商店就部署好了。
2025-08-27 15:40:48
809
原创 Token、Session、Cookie、JWT、OAuth2 详解
Cookie是存储在浏览器端的一小段文本数据,由服务器通过HTTP响应头的Set-Cookie字段发送给浏览器,浏览器随后会自动在每次请求中通过Cookie头将其带回给服务器。工作原理Session是存储在服务器端的用户状态信息。服务器为每个用户创建一个唯一的Session ID,并通过Cookie将这个ID传递给浏览器,浏览器后续请求时带上这个ID,服务器就能识别用户身份。Session存储结构// 典型的Session数据结构// 自定义属性// 省略getter/setter。
2025-08-24 00:10:43
887
原创 还在用WebSocket实现即时通讯?试试MQTT吧
消息中间件应用越来越广泛,不仅可以实现可靠的异步通信,还可以实现即时通讯,掌握一个消息中间件还是很有必要的。如果没有特殊业务需求,客户端或者前端直接使用MQTT对接消息中间件即可实现即时通讯,有特殊需求的时候也可以使用SpringBoot集成MQTT的方式来实现,总之消息中间件是实现即时通讯的一个好选择!
2025-08-22 08:43:30
608
原创 MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核
摘要:基于MaxKB V2版本,通过文件上传、链接生成、TextIn OCR转换和大模型审核四步流程,将PDF扫描件转为Markdown格式后进行智能审核。系统支持错别字标注、格式修正等审核功能,企业无需自研OCR即可实现高精度文档处理。该方案适配各类OCR服务,可帮助用户突破扫描件处理瓶颈,构建全格式智能审核闭环,显著提升文档处理效率。
2025-08-12 09:23:58
514
原创 画图神器,“手残党”福音,拒绝丑图!
很少有人一上来就能把图画得好看。刚开始画得丑很正常,别急着放弃——循序渐进才是王道。先给大家看看我刚写博客时画的几张图,现在回头看,真是忍不住想抠脚。当然,说了过去的不好看,也不是暗示我现在的图有多惊艳。实话实说,现在画的很多图我自己也不完全满意,更多时候是在时间和回报之间做取舍。最后,画图不是一蹴而就的技能,它需要工具熟练度、审美积累和反复练习的结合。刚开始画得丑没关系,能坚持下去、不断优化细节的人,才会在某一天突然发现——自己的图,也能很好看。
2025-08-11 09:09:25
931
原创 引入Disruptor内存消息队列,系统性能大幅提升!
摘要:Disruptor是一款高性能内存消息队列,源于LMAX对并发算法的研究。其核心架构包括RingBuffer(数据存储)、Sequence(位置标识)、Sequencer(并发控制核心)等组件。主要特性包括:多播事件(支持多个消费者)、消费者依赖关系管理、内存预分配和无锁并发设计。通过不同的ProducerType(单/多生产者)和WaitStrategy(阻塞/睡眠/Yielding/BusySpin等待策略)可进行性能调优。Disruptor通过减少内存分配和使用CAS操作实现低延迟,适用于对性能
2025-07-09 10:04:11
935
原创 MySQL的三大日志详解
MySQL三大日志系统是保障数据安全的核心机制:RedoLog通过WAL机制和循环写入确保数据持久性,UndoLog实现事务回滚和MVCC多版本控制,Binlog支持主从复制和数据恢复。文章深入剖析了三大日志的协同工作原理,提供了生产环境配置模板和监控指标,并针对常见故障给出解决方案。关键配置包括:innodb_flush_log_at_trx_commit=1保障RedoLog实时刷盘、ROW格式Binlog确保数据一致性、合理设置UndoLog清理策略避免膨胀。掌握日志机制是DBA必备技能,正确配置才能
2025-07-09 09:50:27
705
原创 100万QPS短链系统如何设计?
凌晨两点,监控大屏突然飙红——短链服务QPS突破80万!数据库连接池告急,Redis集群响应延迟突破500ms。这不是演习,而是某电商平台大促的真实场景。当每秒百万级请求涌向你的短链服务,你该如何设计系统?今天这篇文章跟大家一起聊聊100万QPS短链系统要如何设计?希望对你会有所帮助。四大设计原则:无状态设计:跳转服务完全无状态,支持无限扩展读多写少优化:将读性能压榨到极致分而治之:数据分片,流量分散柔性可用:宁可部分降级,不可全线崩溃。
2025-06-23 16:57:19
877
原创 我用Trae+豆包+火山方舟,开发了一个美食推荐助手
前几天火山引擎的豆包大模型1.6正式发布了。火山引擎AI云原生的核心是打造了Agent开发的新范式:大模型+Agent开发平台。大模型我们可以用豆包大模型1.6。Agent开发平台,我们可以使用PromptPilot通过交互式引导与提示词优化,在火山方舟通过MCP协议调用云服务,解决部署繁琐问题。我赶紧试用了一下。这几天我用Trae+豆包1.6+火山方舟的MCP,开发了一个美食推荐助手agent。感觉挺有意思的,这篇文章跟大家一起分享一下。
2025-06-17 09:07:19
892
原创 数据权限的4种方案
在数字化系统的权限架构演进中,用户、角色、菜单始终构成权限管理的三位一体基础框架。随着企业治理进入精细化阶段,传统RBAC模型在应对多维数据管控需求时日益显现其局限性。基于此,"功能权限-数据权限-审批权限"的三元权限体系逐渐成为行业最佳实践,其中数据权限因其与业务场景的高度耦合性,成为系统架构设计中的关键突破点。本文将系统解构四种典型数据权限实现方案,揭示灵活高效的数据权限建模方法论。
2025-06-17 08:55:35
474
原创 如何理解 Spring 当中的 Bean?
当你把第一个管理page的page放进来的时候,这就是第一层b+树,当数据更多的时候,管理page的page也越来越多,那就需要第三层page来进一步管理,这就是两层b+树,以此类推,最终形成一个层层嵌套的hashmap结构,这就是b+树咯。联合索引就是按照你指定的ABC三个字段,形成先排序A再排序B再排序C的有先后的主键,等于在b+树中用A做key找B,用B做key找C,所以如果查询的时候跳过了A,所有的索引就不生效了,因为你没有key,就没法用hashmap。有A没有B,那A会生效B不生效,原理一样。
2025-06-16 09:06:41
768
原创 MySQL同步ES的6种方案!
对于文章上面给出的这6种技术方案,我们在实际工作中,该如何做选型呢?下面用一张表格做对比:方案实时性侵入性复杂度适用阶段同步双写秒级高低小型单体项目MQ异步秒级中中中型分布式系统Logstash分钟级无低离线分析Canal毫秒级无高高并发生产环境DataX小时级无中历史数据迁移Flink毫秒级低极高实时数仓。
2025-05-26 08:44:29
860
原创 数据脱敏的6种方案
/ 反例:直接将生产数据同步到测试环境// 包含手机号、身份证等敏感字段直接将生产的数据,比如:手机号、身份证等敏感字段,同步到了测试环境。这个案例揭示了数据脱敏的极端重要性。方案安全性性能可逆性适用场景字符串替换★★★★★★不可逆日志/展示加密算法★★★★★★可逆支付信息存储数据遮蔽★★★★★★部分可逆数据库查询数据替换★★★★★★可逆测试数据生成动态脱敏★★★★★★★动态可控生产环境查询K匿名化★★★★★★不可逆医疗/位置数据。
2025-05-19 15:45:24
660
原创 10款优质开源项目(GPS、定位修改、IP定位、地图开发)
通过确定说话人的位置,ODAS可以更好地捕捉说话人的声音,并减少环境噪声和其他干扰因素的影响,从而提高语音识别的准确率。而且,它还有速度测试、ping测试、MTR测试,以及网站可用性检查等功能, 具有查询速度快、、内存占用低、支持多种部署方式等特点,简直就是网络检测的瑞士军刀!简单来说,ODAS可以帮助确定声音来源的位置,并对这些声音进行区分和追踪,这在许多场景中都非常有用,如语音识别、会议系统、智能家居、安全监控等。Air780EG,室内室外都能用,支持北斗+GPS双模卫星定位,卫星定位误差约5米;
2025-03-17 09:05:06
1810
原创 常用的接口重试方案!
某个电商平台的订单退款接口突发异常,因为银行系统网络抖动,退款请求连续失败。原本技术团队只是想“好心重试几次”,结果开发小哥写的重试代码竟疯狂调用了银行的退款接口近百次!最终导致用户账户重复退款,平台损失过百万。老板在复盘会上质问:“接口重试这么基础的事,为什么还能捅出大篓子?大家哑口无言,因为所有人都以为只要加个for循环,再睡几秒就完事了……这篇文章跟大家一起聊聊重试的7种常用方案,希望对你会有所帮助。重试就像机房里的灭火器——永远不希望用到它,但必须保证关键时刻能救命。我们工作中选择哪种方案?
2025-03-11 08:56:55
464
原创 分库分表 带来了哪些问题?
分库分表是解决单库单表性能瓶颈的有效手段,但也会引入新的复杂性和技术挑战。这篇文章跟大家一起聊聊,分库分表后带来的7个问题,以及相关的解决方案,希望对你会有所帮助。分库分表本质上是“性能换复杂度”,它虽然能有效提升系统的性能和扩展性,但问题也随之而来。问题解决方案全局唯一 ID雪花算法、号段分配、Leaf跨库跨表查询中间件支持(如 ShardingSphere)或手动合并分布式事务分布式事务框架(Seata)、消息最终一致性分片键设计问题路由表或高效分片键数据迁移问题。
2025-01-17 10:06:50
914
原创 用 Spring AOP 优化数据库 IN 查询,效率提升巨大!
我们在项目中经常遇到IN查询,同时IN的参数太多甚至大几百上千,会导致PG性能下降严重进而接口反应太慢。因为用的地方多,每次都要写很麻烦,所以结合SpringAOP写了一个基于注解优化方案,只需要打上注解就可以提升性能了。加在需要拆分的参数上,只支持一个。这里的加可以是:合并运算,SUM,COUNT以及求TOPN(合并后再取TOPN)线程池,可能阻塞比较大,不要用公共的线程池最好自己定义一个。不适用的典型场景有分页以及不符合上面公式的场景。并行执行,然后将返回结果合并。标记需要拆分参数的注解。
2025-01-13 13:53:34
362
原创 Git代码规范
master 为主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。对于工作量小的功能开发(工时小于1天),可以直接在devolop 分支进行开发,否则由 develop 分支检出 feature 分支进行开发,开发完后合并到develop 分支。develop 为开发环境分支,始终保持最新完成以及bug修复后的代码,用于前后端联调。一般开发的新功能时,feature分支都是基于develop分支创建的。线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支。
2024-12-24 11:00:54
1558
原创 MyBatis中的 10 个宝藏技巧!
这个轻量级的持久层框架还有很多隐藏的“宝藏技巧”。如果你能掌握这些技巧,不但能让开发更高效,还能避免掉入一些常见的“坑”。今天就从浅入深,分享 10 个让人眼前一亮的 MyBatis 开发技巧,每一个都配上具体的场景和代码示例,务求通俗易懂,希望对你会有所帮助。有些小伙伴会遇到这样的问题:数据库表字段是下划线命名,但 Java 对象是驼峰命名。比如user_name对应userName。如果直接用默认的resultType,MyBatis 是无法自动映射的。这个时候,用resultMap就能完美解决。
2024-12-24 10:59:52
848
原创 MQ的10种经典使用方式
消息队列(MQ)是分布式系统中不可或缺的技术之一。对很多小伙伴来说,刚接触MQ时,可能觉得它只是个“传话工具”,但用着用着,你会发现它简直是系统的“润滑剂”。无论是解耦、削峰,还是异步任务处理,都离不开MQ的身影。下面我结合实际场景,从简单到复杂,逐一拆解MQ的10种经典使用方式,希望对你会有所帮助。消息队列不只是传递消息的工具,更是系统解耦、提升稳定性和扩展性的利器。在这10种经典场景中,每一种都能解决特定的业务痛点。
2024-12-17 08:33:29
870
转载 工作中常用的8种设计模式
设计模式在我们日常的软件开发中无处不在,它们帮助我们编写更易扩展、更具可读性的代码。今天结合我实际工作场景和源码实例,跟大家一起聊聊工作中最常用的8种设计模式,希望对你会有所帮助。这些设计模式不仅在日常开发中有着广泛应用,更在 JDK 和 Spring 中深度体现。了解它们的本质和应用场景,能够让我们写出更优雅、更健壮的代码。
2024-12-11 16:38:20
1164
原创 SkyWalking 和 ELK 链路追踪实战
SkyWalking和 ELK 各自在 APM 与日志管理领域发挥着重要作用,尽管原生 ELK 不直接支持链路追踪,但通过与 SkyWalking 的集成,可以互补优势,共同提升微服务架构下的可观测性。
2024-12-09 15:23:19
1195
原创 10个好用的在线工具
代码生成图片,这个不写博客的小伙伴可能不太常用,像我会时常分享一些技术类的文章,里边难免会贴出代码块,出于观看方便和样式美观就会转成图片。的所有功能,又在其基础上增加了很多实用功能,它几乎可以集成当下所有主流技术,只要勾选相应的模块就可以自动集成进来。里的数据,自动生成对应的统计图形,样式可以自由切换,生成PDF、JPG等格式。是一个自动生成代码的工具,JAVA代码自动生成,还有H5样式布局器。来生成,但用的时间长了发现,它也就仅仅只能帮我们引入一些必要的。这是一个非常强大的工具类站点,我个人常用得就是。
2024-12-05 14:50:11
912
原创 对接第三方接口,并处理异步通知,对接口进行签名验签
*** 是否启用验签功能,默认验签*/@Component//实现 HandlerMethodArgumentResolver 接口/*** 此方法用来判断本次请求的接口是否需要解析参数,* 如果需要返回 true,然后调用下面的 resolveArgument 方法,* 如果不需要返回 false*/@Override/*** 真正的解析方法,将请求中的参数值解析为某种对象* parameter 要解析的方法参数。
2024-11-28 15:25:33
382
原创 接口Controller设计
在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用。那么问题来了,如果设计一个优雅的Controller接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求?今天跟大家一起聊聊设计Controller接口时,需要注意的一些地方,希望对你会有所帮助。
2024-11-12 11:15:59
462
原创 如何优雅处理异常?处理异常的原则
在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。那么问题来了,我们该如何处理异常,让代码变得更优雅呢?如果标准异常无法满足我们的业务需求,我们可以自定义异常。/*** 业务异常* @author 苏三* @date 2024/1/9 下午1:12*/@Data/*** 异常码*//*** 具体异常信息*/super();
2024-11-05 09:39:16
925
原创 优化分页查询接口:百万商品分页查询接口,如何保证接口的性能?
问题:百万商品分页查询接口,如何保证接口的性能?这就需要对该分页查询接口做优化了。这篇文章从9个方面跟大家一起聊聊分页查询接口优化的一些小技巧,希望对你会有所帮助。
2024-11-05 09:36:02
857
原创 使用 SpringEvent 解决 WebUploader 大文件上传解耦问题
关于Spring的Event机制,相信使用Java开发的朋友们一定非常熟悉。Spring Event是Spring框架内建的一种发布/订阅()模式的实现,它允许应用内部不同组件之间通过事件进行通信。当某个特定事件发生时,系统中对这类事件感兴趣的监听器可以接收到通知并执行相应操作。是不是看起来跟消息队列差不多,尤其是这种发布/订阅的模式,确实非常符合消息中间件的模式。通常来说,消息队列一般有以下几种作用。异步、解耦和削峰。
2024-11-05 09:31:58
850
原创 Redis 中 Bitmap 原理和应用
本文梳理了 bitmap 和 布隆过滤器的原理、用法以及它们各自的优缺点和应用场景,大环境不好更要多多提升自身技术能力,而且现在面试三句不离大数据量和高并发,此类问题想要应对自如,不仅要有深度还要有广度,掌握这两个知识点多提供一种答案也是好的。
2024-11-05 09:26:58
1557
原创 阿里 Sentinel
sentinel顾名思义:卫兵;在Redis中叫做哨兵,用于监控主从切换,但是在微服务中叫做流量防卫兵。Sentinel 以流量为切入点,从流量控制熔断降级系统负载保护等多个维度保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。
2024-11-05 09:21:18
1591
原创 数据库主从延迟处理方案
举例在一家餐饮工作中,当时的系统属于订单的下游业务系统。在中午和晚上的用餐高峰期,用户并发量还是不小的。订单系统为了保证性能和高可用,做了主从分离架构。一个主库,两个从库。主库主要用来写数据,从库主要是用来读数据,主库的数据会实时同步到从库。但偶尔会出现主从延迟问题。
2024-10-23 09:34:10
771
原创 Java Http 接口对接太繁琐?试试 UniHttp 框架吧
从企业级项目来说,如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码,并且针对不同的对接渠道方需要每次封装一次调用的简化,一旦封装不好系统将会变得难以维护,难以阅读,甚至不同的开发同学会用自己的方式用不同的Http客户端用不同的封装逻辑去对接接口,这种情况一般发生于项目换了维护者,技术负责人也没把控代码质量和规范所导致。一个就是前面说的获取令牌的接口。一个是获取天气情况的接口。
2024-10-23 09:26:47
1213
原创 如何设计一个排行榜?
本文分析了实现排行榜5种方案的整体思路:数据库排序数据库 + Redis分布式系统NoSQL数据库最小堆 + Redis设计排行榜涉及多个方面,包括数据存储、排序算法、缓存、并发控制和性能优化等,不同的技术方案各有优缺点,因此,在实际开发中,需要根据具体的业务需求和数据规模来决定采用什么方案。
2024-09-30 08:47:49
1476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人