登录社区云,与社区用户共同成长
邀请您加入社区
一句话需求 → 完整工程,五步流程清晰可控工程级代码输出,分层规范、可直接运行全流程上下文串联,修改自动同步效率提升显著,从天级缩短到分钟级
在Spring Cloud(Gateway)中,GlobalFilter 和 HandlerInterceptor 不存在直接的执行顺序比较,因为它们位于请求链路中完全不同的层级和时间点。GlobalFilter 在 API网关层 执行,而 HandlerInterceptor 在请求到达后端微服务后,于Spring MVC框架内执行。HandlerInterceptor.postHandle()
基于上面本地锁的问题,我们需要一种支持分布式集群环境下的锁:查询 DB 时,只有一个线程能访问,其他线程都需要等待第一个线程释放锁资源后,才能继续执行。生活中的案例:可以把锁看成房门外的一把锁,所有并发线程比作人,他们都想进入房间,房间内只能有一个人进入。当有人进入后,将门反锁,其他人必须等待,直到进去的人出来。我们来看下分布式锁的基本原理,如下图所示:我们来分析下上图的分布式锁:1.前端将 10
/ 业务状态码,不是 HTTP 状态码// 给前端/用户看的提示// 成功时的数据r.code = 0;return r;return r;// getter/setter 省略// 只管抛,怎么转成响应交给全局处理器throw new BusinessException(40401, "用户不存在");Controller 干净了,不用再关心异常怎么变成 HTTP 响应。
内容社区系统上线初期,很多问题并不会立刻暴露。页面能打开,动态能发布,短视频能播放,私信能发送,商品卡片也能进入详情,看起来已经形成完整闭环。但数据量一上来,真正麻烦的地方会集中出现:这些问题表面是功能异常,本质是数据链路没有设计清楚。内容社区源码不能只看页面完整度,更要看内容流、缓存、搜索、消息、交易、权限之间是否有稳定的协作方式。
Hibernate Reactive是Hibernate团队推出的响应式ORM解决方案,将传统Hibernate与响应式数据库驱动结合,支持非阻塞数据库操作。该项目兼容主流数据库(PostgreSQL、MySQL等),重点适配Quarkus和Vert.x框架,解决了响应式应用中JDBC阻塞问题。通过返回CompletionStage或Uni/Multi类型,保留Hibernate的实体映射、缓存等
《技术流行背后的社会机制反思:MyBatis缺陷为何长期存在》 本文揭示了MyBatis框架在技术缺陷明显的情况下仍能长期流行的深层原因。作者指出其六大原生缺陷:SQL执行黑盒化、XML标签反模式、OGNL侵入配置、冗余执行链路、异常体系臃肿及违背关系型本质。这些缺陷被四种社会惯性维持:1)心理层面的认知防御,开发者因沉没成本拒绝承认问题;2)社会羊群效应,大厂使用形成虚假权威;3)经济利益驱动,
这篇GitHub项目介绍了一个专注于Spring Boot应用测试的实战课程配套代码库。该项目由德国开发者Philip Rieckpil创建,已获得330星,包含一个完整的微服务演示项目,涵盖Keycloak认证、PostgreSQL、SQS消息队列等组件。 主要内容包括: 项目定位:提供从单元测试到集成测试的完整解决方案,使用JUnit 5、Testcontainers等现代测试工具链 技术栈:
而普通索引,可能会存在用户记录中的关键字相同的情况,根据页结构的原理,当我们读取一条记录的时候,不是单独将这条记录从磁盘中读出去,而是将这个记录所在的页全部加载到内存中进行读取。mysql 的最小存储单元叫做“页”,这么多的页是如何构建一个庞大的数据组织,我们又如何知道数据存储在哪一个页中?从图中可以看出,每个表的主键索引的根页的page number都是3,而其他的二级索引page number
本文为 Spring Boot 开发者提供了快速上手 NestJS 的实战指南。通过架构思想对比(IoC/DI、AOP、模块化)、核心装饰器对照表、项目目录结构解析,帮助开发者理解 NestJS 与 Spring Boot 的异同。重点介绍了 TypeORM 的使用(类似 JPA),并通过实战案例演示了如何开发一个航班查询接口,包括 DTO 定义、Service 编写、Controller 实现及
三年了,我以为自己已经是个“熟练工”了,直到那天坐在那张冰冷的椅子上,对面的人用一句“你所谓的微服务拆分,是业务边界还是技术边界?”把我问得哑口无言。那一刻我才明白,这三年的经验如果只是重复地写CRUD、配配置文件,那它根本不叫经验,只能算是“时间积累”了个寂寞。那次面试结束后,我蹲在写字楼外的台阶上抽了半包烟,把脑子里所有面试题和实际踩过的坑重新梳理了一遍。今天把这份复盘写出来,不是为了炫耀,而
摘要:项目存在同名Bean冲突问题(不同包的TTBean类),虽尝试通过MyBatis FQDN方案但无法解决Spring层面的冲突。临时方案是通过JVM参数允许Bean覆盖(spring.main.allow-bean-definition-overriding=true),但存在三大隐患:1)类型注入(@Autowired)会因Bean被覆盖导致启动后报错;2)名称注入(@Resource)可
Spring Boot + Shiro + MyBatis 权限系统实战 摘要 本文详细介绍使用Spring Boot集成Apache Shiro和MyBatis构建完整RBAC权限系统的全过程。主要内容包括: 技术选型:分析Shiro相比Spring Security的优势,如简单易用、轻量级、功能完整等特性 架构设计:采用经典的RBAC模型,设计用户、角色、权限三者的多对多关系 数据库实现:提
每一个环节都在消耗你的CPU周期。常见的优化手段有:使用对象池(比如Netty的ByteBuf池)、复用变量(如。
摘要:VMware NAT网络导致宿主机无法访问虚拟机Docker服务的故障排查 问题现象:Windows宿主机前端Vite代理请求失败,实际是后端服务因依赖初始化失败而退出。表面表现为前端代理错误,实则是宿主机无法稳定访问虚拟机内Docker暴露的端口。 根因分析:VMware使用NAT网络模式时,虽然宿主机能ping通虚拟机IP,但无法可靠访问Docker容器暴露的TCP端口(如MySQL 3
Nacos 3.2.2 在 Win和 Linux 系统上的安装部署流程,MySQL或SQLServer配置,问题解决方法
本文探讨了双向流通信(gRPC/WebFlux)中的背压控制问题及其解决方案。通过三个典型故障案例(内存OOM、消息丢失乱序、资源空转)揭示了双向流背压失控的严重后果。文章深入解析了Reactor背压机制在双向流中的传播原理,并重点给出gRPC双向流的实践方案: 问题本质在于双向流需要独立管理两条数据通道的背压信号,任何环节缺失都会导致流控失效 推荐使用reactor-grpc库实现gRPC与Re
brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。赛选商品,苹果的、ios的、屏幕
GitHub仓库"timebusker/spring-boot"将Spring Boot拆解为23个独立模块,涵盖从基础入门到多数据源、消息队列等实战场景,获得1273星。每个模块都是可独立运行的Maven工程,配合作者博客教程,系统性地演示Spring Boot生产环境常用功能。重点模块包括多数据源配置、自定义Starter实现、健康监控和Vue后台集成等,特别适合已掌握Spring基础、想全面
Shiro与Spring Security整合兼容问题解决方案 摘要 本文探讨了在企业应用开发中整合Apache Shiro与Spring Security两种安全框架的可行方案。分析了两者整合的核心冲突点: 过滤器链执行顺序冲突 认证上下文不共享 会话管理机制重叠 提出三种整合策略: 主从模式(推荐):以Spring Security为主框架,Shiro为辅助 路由分离模式:按URL路径分流处理
Redis 在国内后端项目里几乎是标配,但缓存事故也集中:缓存击穿打满数据库,热 key 打爆单核,大 key 阻塞主线程,过期策略随意导致旧数据。实践建议:先列出业务里最重要的 20 个缓存 key,逐个确认 TTL、最大体积、回源成本、删除策略和 Redis 不可用时的行为。对缓存来说,恢复也不是简单重启实例:如果大量 key 同时失效,恢复后会出现冷缓存,数据库仍然可能被打满。写时先更新数据
写代码如烹小鲜,讲究的是精细和用心。就像一碗好汤,不仅仅在于锅和火候,更在于厨师对食材的理解和尊重。MyBatisPlus的这12个优化技巧,何尝不是程序员对代码的一种尊重和雕琢?还记得文章开头说的外婆的羊肉汤吗?优秀的代码,和一碗好汤,都需要用心。MyBatisPlus就像是厨房里的得力助手,它帮你处理繁琐,让你专注于创造。当你掌握了这些技巧,你的代码将不再是简单的指令堆砌,而是一首优雅的诗,一
人大金仓 V9 的内存、CPU、磁盘三大资源故障,看似复杂,实则都有清晰的排查路径和成熟的解决方案。绝大多数生产故障都不是数据库本身的问题,而是参数配置不合理、运维规范缺失、SQL 质量不高导致的。掌握「自底向上分层排查」的思路,先定位大类原因,再深入到具体 SQL 和参数,就能快速解决问题。更重要的是建立日常预防机制,通过监控告警、定期巡检、SQL 治理,把故障消灭在萌芽状态,这才是生产运维的核
《SpringBoot全家桶式学习仓库:系统化实践与源码解析》介绍了GitHub上一个689星标的学习项目spring-boot-demo。该项目由开发者liuyueyi整理,将SpringBoot、SpringCloud等技术的知识点以模块化工程形式组织,形成分级清晰的学习资源库。内容涵盖基础配置、数据库操作、MVC框架、微服务组件等核心领域,每个子工程都对应具体知识点并附带可运行代码。项目特色
注入方式只有三类:构造注入、set 注入、字段注入;@Autowired@Resource@Inject是实现注入的注解;@Qualifier@Primary是辅助限定注解,用来解决多 Bean 冲突,不属于注入方式;@Value专门注入普通配置值,不用于对象 Bean 依赖注入。
企业里审批场景很多:请假、报销、采购……如果流转逻辑全写在里,每次改流程都要发版。BPMN + Flowable 的做法是:本文用「请假审批」串联整条链路:最终你会得到两个工程:Java 侧常见工作流引擎均支持 BPMN 2.0,本文后端选用 Flowable,主要因为:它由 Activiti 原核心团队维护,API 与 Activiti 5/6 相近、迁移成本低;官方提供 Spring Boot
Spring Boot 项目调用外部接口,完全不需要、也不应该手动封装 HttpClient 工具类。Spring 生态提供的全套 HTTP 调用抽象,已经帮我们完成了底层资源管理、容错处理、可观测性搭建、引擎适配等所有基础工作。开发者无需纠结 Socket 连接、IO 流关闭、线程调度等底层细节,只需聚焦业务实现。优秀的开发者,从不重复造轮子,而是善用生态能力。把精力投入业务架构、服务边界、高可
本文从前后端项目开发角度,整理订单支付模块的核心实现逻辑,包括前端支付方式选择、后端订单创建、支付单生成、异步回调处理、签名校验、订单状态流转、幂等控制、数据库事务、余额扣减、退款和对账。示例采用 Vue3 + Spring Boot + MyBatis + MySQL,重点说明支付模块在真实业务中的数据表设计、接口设计和安全处理方式。
librdkafka是 Apache Kafka 官方开源的高性能 C/C++ 客户端库,底层基于异步事件驱动模型,支持 Kafka 全部核心协议,跨平台、无虚拟机依赖,是目前性能最强、稳定性最高的 Kafka 客户端。1. librdkafka 是 C++ 接入 Kafka 的工业级高性能 SDK,适配所有高吞吐流式业务场景;2. 日常开发可根据业务可靠性要求,选择同步、异步、批量、有序四种发送
你把“学Java”这件事想得太难了,但你也没想错——它确实让人难受。网上铺天盖地的劝退帖说Java开发已死,说市场饱和,说小白找不到工作。这些话不假,但都是废话。真正的问题是,大部分人的学习路径压根就是错的,学了五个月连个干净的增删改查都写不利索,然后怪Java不行。如果你受够了这种烂街的、还在教你先装JDK然后写HelloWorld的过时教程,那么这篇文章就是为你准备的。我要给你的不是课程大纲,
现在的企业就喜欢深度考察虚拟机。要是你能深入理解HotSpot VM的运行原理,就可以写出更加高效的Java代码,同时也能更好地排查Java性能瓶颈等一系列问题,面试时也不会是仅仅停留在会用的阶段,在谈薪资的环节上面也能更加硬气起来!
但告警不能太多,否则会“狼来了”效应。链路追踪(Jaeger或Zipkin)解决分布式调用中“慢在何处”的问题。
当然,GraphQL 并不是银弹。它有自己的学习成本,缓存策略比 REST 复杂,N+1 查询问题也需要专门处理。但站在业务演进的角度看,当产品从简单 CRUD 走向复杂交互、前端迭代速度越来越快时,GraphQL 在灵活性、协作效率、协议统一性上的优势,正是它能逐步替代传统 REST API 的核心原因。技术选型永远是权衡的艺术。如果你正在被多接口拼接、字段冗余、文档不同步这些问题困扰,不妨试一
动漫文化在国内不断扩散,动漫爱好者对相关服装与道具的需求也跟着上升。但购买成本偏高、家中存放不便,加上传统线下租赁信息散乱、流程繁琐,爱好者实际体验并不理想。围绕这一问题,本文设计并实现了一个动漫服装道具租赁平台,前端采用Vue,后端基于Spring Boot,数据存储使用MySQL。商家可以发布并维护服装信息、处理订单和续租申请,并发起优惠活动;管理员则承担利润统计、用户和商家审核、服装分类维护
文章摘要: Spring Boot重试策略是一把双刃剑,配置不当可能引发雪崩、死循环等灾难性后果。本文剖析了典型重试失控场景,如重试风暴拖垮集群、死循环卡死Kafka消费、幂等缺失导致重复扣款等,并深入解析Spring Retry、Resilience4j等工具的正确用法。关键解决方案包括:指数退避算法、线程池隔离、幂等设计、熔断保护,以及HTTP客户端(RestTemplate/WebClien
Component// 业务逻辑});关键点lowCardinalityKeyValue:用于聚合的标签(如order.type),基数低highCardinalityKeyValue:用于调试的标签(如order.id),基数高,不会出现在Prometheus指标中Spring Boot 3.x用Micrometer Tracing替代Sleuth,底层基于OpenTelemetry是统一的入口
本文探讨Linux组调度的演进与优化,指出传统CFS组调度仅通过CPU时间片隔离资源,无法满足现代业务对延迟稳定性、吞吐量和动态资源适配的需求。新一代调度技术通过SCHED_EXT可编程框架、多维度资源隔离和智能动态调整,实现对K8s混部、AI算力、交易系统等场景的精准资源管控。文章详细解析了核心技术原理,并提供了从环境配置到实验对比的完整实践方案,帮助开发者掌握高性能、低抖动的调度优化能力,提升
本文展示了一个珠宝订单处理系统的建造者模式实现。系统通过IJewelryProcessBuilder接口定义订单创建流程,包含原料核验、设计、生产等11个步骤(ProcessStep枚举)。核心类JewelryOrder记录订单状态,JewelryProcessBuilder通过链式调用构建处理流程,并利用CompletableFuture实现异步执行。各步骤由独立服务类(如DesignServi
摘要:小强库提供计算机专业毕业设计一站式服务,包含精品源码(SpringBoot+Vue3+MySQL等技术栈)、答辩PPT、部署文档及售后支持。本次推荐的大学生就业招聘系统为典型多角色项目,涵盖管理员(全局审核/数据统计)、企业(招聘管理/简历处理)和求职者(岗位申请/简历维护)三类终端(含网页端+微信小程序)。系统采用前后端分离架构,包含完整业务流、权限控制与ECharts数据可视化,适合计算
Solon 的注解体系并非简单的"换皮",它在统一性(@Component / @Inject / @Condition)和简便性(@Db / 无需 @RefreshScope)上做了明显的设计取舍。Solon 使用 @Db。注意:Solon 的 @Inject 一个注解兼顾了 Spring 中 @Autowired、@Qualifier、@Value 三个注解的功能。@Component@Com
接口文档是前后端协作的桥梁。手写文档费时且容易和代码不一致,Knife4j 可以自动从注解生成接口文档,提供在线调试功能。
在前两周完成了基础 CRUD 和三层架构后,本周我深入学习了数据库关联映射、自定义查询、性能优化(索引)以及健壮性保障(全局异常处理和参数校验)。本文将记录这一周的学习和实践过程。方法名生成的 SQL打开// 根据分类 ID 查询所有书籍理解 JPQL 和 @Query 是一种面向对象的查询语言,它操作的是实体对象和属性,而不是数据库表和字段。对比项SQLJPQL操作对象数据库表、列Java 实
后端
——后端
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net