- 博客(99)
- 资源 (1)
- 收藏
- 关注
原创 基于 Spring Boot + Nacos + Dubbo 的完整自定义鉴权过滤器实现方案
*** 基于Dubbo SPI的自定义鉴权过滤器*/@Activate(group = CommonConstants.PROVIDER, order = 100) // 仅在服务端生效@Component@Override// 1. 从上下文获取调用信息// 2. 打印调用信息System.out.println("收到调用请求 - 方法: " + methodName + ", 客户端IP: " + clientIp + ", 应用名: " + appName)
2025-10-31 00:45:07
364
原创 分析SpringApplication类中ConfigurableApplicationContext方法
SpringApplication 中与创建:根据应用类型选择合适的实现类。配置:通过初始化器、环境设置、注册启动类等,为上下文 “搭骨架”。刷新:触发 Spring 核心的 Bean 加载、初始化、依赖注入等流程,完成 “填内容”。启动:执行启动后逻辑,通知应用已就绪。整个过程通过事件驱动()和扩展点(等)保证了高度的灵活性,是 Spring Boot “自动配置” 能力的基础。
2025-09-27 12:52:28
780
原创 SpringBoot 的启动原理
SPI 机制:通过加载初始化器、监听器、自动配置类,实现 "插件化" 扩展。事件驱动:通过在启动各阶段发布事件(如),允许监听器介入启动过程。自动配置:在refresh()阶段,通过加载中的自动配置类(如),结合条件注解实现按需配置。内嵌容器:通过扩展点创建内嵌 Web 服务器(Tomcat 等),无需外部容器部署。通过以上机制,SpringBoot 实现了 "零配置" 启动,大幅简化了 Spring 应用的开发与部署。
2025-09-27 12:48:51
739
原创 Spring Boot 详细介绍
Spring Boot 的发展始终围绕 “简化开发” 和 “适应技术趋势” 两大主线:从解决传统 Spring 应用的配置痛点,到拥抱响应式编程、云原生、现代 Java 特性,它已成为 Java 企业级开发(尤其是微服务、云原生应用)的事实标准。其成功的核心在于 “约定大于配置” 的设计哲学,以及与 Spring 生态(Spring Cloud、Spring Data 等)的无缝衔接,未来将持续聚焦性能优化和云原生适配,巩固其在 Java 开发领域的核心地位。
2025-09-27 12:45:42
794
原创 new species of flying reptile1 discovered in Scotland
这种新发现的翼龙被命名为 “雾翼龙(Ceoptera)”,在苏格兰盖尔语中指 “薄雾”。侏罗纪中期时代的化石极其罕见,这一发现改变了人们对该时期飞行爬行动物的认识。尽管这些化石于2006年被发现,但考古学家们在经过多年的辛勤工作后才得以将化石从坚硬的岩石中提取出来以对其进行分类。在侏罗纪中期,当时苏格兰仍是亚热带岛屿的一部分,这种飞行爬行动物就曾在恐龙头顶上空飞翔。科学家们在一片海滩上的石灰岩中发现了它的翅膀、肩膀、腿部和脊骨部分的化石。为了保护它们,这些脆弱的化石被装进研究人员的背包中进行运输。
2025-09-15 00:07:06
423
原创 深入理解 Spring @Async 注解:原理、实现与实践
生产环境中,我们应始终自定义线程池,通过@Bean注解创建java运行/*** 自定义异步线程池*/// 核心线程数:线程池维护的最小线程数量// 最大线程数:线程池允许创建的最大线程数量// 队列容量:用于缓冲等待执行的任务// 线程活跃时间:超出核心线程数的线程的最大空闲时间(单位:秒)// 线程名称前缀:便于日志跟踪// 拒绝策略:当任务数量超过最大线程数+队列容量时的处理策略// 初始化线程池@Async开启异步支持,注册关键处理器。
2025-09-15 00:02:58
1017
原创 一文读懂 Java 注解运行原理
首先要定义注解本身 —— 就像设计便利贴的格式:要写哪些信息(比如 “事务出问题要回滚哪些异常”“事务传播规则”)。Java 中定义注解需要用@interface关键字,还要加 “元注解”(描述注解的注解),告诉 JVM 这张 “便利贴” 的规则(比如贴在方法上、活到老程序运行时):java// 元注解1:这张便利贴只能贴在“方法”上// 元注解2:这张便利贴要活到老程序运行时(关键!// 元注解3:子类能继承父类的这张便利贴@Inherited。
2025-09-14 23:58:44
649
原创 Java 事务失效场景全解析
代理机制限制(非 public 方法、同类内部调用)异常处理不当(捕获未抛出、未配置 rollbackFor)事务属性配置错误(传播机制不合理)基础环境问题(数据库不支持、未被 Spring 管理)并发场景下的事务隔离问题在实际开发中,需结合业务场景合理配置事务属性,同时注意编码规范,避免上述陷阱,才能确保事务机制有效运行,保障数据一致性。
2025-09-14 23:36:17
1010
原创 对于程序员来说python和java 哪个未来更有优势
对于程序员来说,。两者在各自领域的不可替代性和发展潜力决定了它们将长期共存,但技术趋势和市场需求的分化正在重塑开发者的选择逻辑。
2025-09-14 01:10:17
902
原创 Spring Boot 的自动配置原理
启动触发包含,开启自动配置。导入选择器通过@Import导入。加载候选类通过从加载所有对应的自动配置类。过滤配置类排除用户指定的类(exclude属性)。通过条件注解(如)筛选符合当前环境的配置类。注册 Bean:生效的自动配置类()通过@Bean向容器注册组件,完成自动配置。通过这套机制,Spring Boot 实现了 "引入 starter 依赖即可自动配置组件" 的便捷性,开发者无需手动编写大量 XML 或 Java 配置。
2025-09-14 00:58:43
980
原创 电商系统商品表设计:基于 “主表 + 子表” 的灵活方案
在实际落地时,需重点关注 “表结构规范”(如字段命名、外键设计)、“索引优化”(针对高频查询场景)与 “扩展策略”(新增类型的低成本适配),确保方案能长期支撑业务增长。“主表 + 子表” 设计方案通过 “共性字段集中存储、个性字段分类隔离”,平衡了 “数据规范性” 与 “业务灵活性”,成为解决多类型商品存储的最优选择之一。业务需求:首页商品推荐需展示所有类型的上架商品,无需区分类型,但需显示 “类型标识” 与 “核心个性信息”(如实物显示库存,虚拟显示有效期)。
2025-09-14 00:41:15
661
原创 数据库按商品类型分成多个表是否可行?
优先不拆分若商品类型差异小(共性字段多、个性字段少),用 “主表 + 子表”;若个性字段不用于查询,用 “单表 + JSON 扩展”;核心原因:多表设计会增加查询复杂度和维护成本,不符合 “简单优先” 原则。仅在以下场景拆分商品类型差异极大(共性字段 <30%,个性字段> 70%);不同商品类型的查询完全独立(如 “实物商品管理” 和 “虚拟商品管理” 是两个独立模块,几乎不查 “所有商品”);新增商品类型频率极低(避免频繁建表)。
2025-09-14 00:35:08
612
原创 微服务搭建(SpringBoot + Dubbo + Nacos)
UserSeviceImpl 使用 @DubboService 注解 暴露服务。Controller中使用 @DubboReference 进行依赖注入。Application 类加 @EnableDubbo。
2025-08-30 22:18:02
609
2
原创 MAT工具是什么,具体可以分析哪些JVM内存问题,如何分析?
MAT 通过解析堆快照,将抽象的 “内存异常” 转化为具体的 “对象引用关系”,是诊断 JVM 内存问题的利器。
2025-08-24 11:32:34
924
原创 描述Java 虚拟机运行时的数据区划分(JVM 内存模型 )?
区域线程共享性主要存储内容可能的 OOM程序计数器私有字节码指令地址无虚拟机栈私有栈帧(局部变量、操作数栈等)本地方法栈私有本地方法执行信息同上Java 堆共享对象实例、数组方法区(元空间)共享类信息、常量、静态变量等OutOfMemoryError(元空间不足)理解 JVM 内存模型(运行时数据区)是分析内存泄漏、OOM 问题和 JVM 调优的基础。不同区域的内存管理机制(如堆的 GC、元空间的动态扩展)直接影响程序的性能和稳定性。
2025-08-24 01:48:39
646
原创 如何监控和管理微服务之间的调用关系
通过分布式追踪、依赖图分析、指标监控和日志关联,可实现对微服务调用关系的全链路可见性。核心是将分散的调用数据聚合、关联并可视化,从而快速定位问题、优化性能,并为服务架构调整提供数据支持。实际落地时,可根据技术栈选择合适的工具(如 Java 生态优先 SkyWalking+Prometheus,K8s 环境优先 Istio+Jaeger)。编辑分享如何选择合适的分布式追踪工具服务依赖分析的原理和方法实时监控微服务调用关系的最佳实践。
2025-08-22 12:31:04
959
原创 微服务之间的调用关系如何处理,才能防止循环依赖
订单服务(A)依赖库存服务(B),而库存服务(B)又依赖订单服务(A)查询订单状态 → 可将 “订单状态查询” 中与库存相关的部分拆分到新的 “订单快照服务”(C),让 A 和 B 都依赖 C,消除 A↔B 的循环。用户服务(上游)调用订单服务(下游)查询订单 → 订单服务若需用户信息,可通过缓存获取(用户服务更新时同步数据到缓存),而非直接调用用户服务。提取共享能力:若两个服务都依赖某部分功能,可将这部分功能拆分为独立的新服务(如用户认证服务、配置服务),让原服务都依赖这个新服务,打破闭环。
2025-08-22 12:17:21
457
原创 centos7安装jdk17
从官方网站或者其他可靠的镜像源下载 Java 17 的压缩包。我已下载好的压缩包:bellsoft-jdk17.0.14+10-linux-amd64.tar.gz。
2025-07-30 12:54:22
645
原创 ubutun 操作
sudo ufw allow 8000/tcp //指定开放8000端口的tcp协议。提供了一个用户友好的界面来配置和管理iptables防火墙。(Uncomplicated Firewall)作为其防火墙管理工具。(例如,允许SSH服务):sudo ufw allow OpenSSH。命令,帮助你管理Ubuntu的防火墙。Ubuntu 默认使用。1.查看本机端口使用情况。
2025-06-24 14:21:27
296
原创 centos7 安装 postgreSQL数据库
以上步骤应该可以帮助你在 CentOS 7 上安装、启动并登录 PostgreSQL。如果你遇到任何问题,确保检查 PostgreSQL 的日志文件,通常位于。在 CentOS 7 上安装并登录 PostgreSQL 的步骤大致如下。这里假设你已经有了 CentOS 7 系统的基础知识,包括如何使用命令行界面。首先,你需要安装 PostgreSQL。这将让你进入 PostgreSQL 的命令行界面。你可以根据需要选择不同版本的 PostgreSQL,例如。同样,确保使用正确的服务名称,例如。
2025-05-19 08:37:17
1128
原创 SpringBoot 常用注解总结
用于修饰 MVC 中 controller 层的组件,SpringBoot 中的组件扫描功能会识别到该注解,并为修饰的类实例化对象,通常与 @RequestMapping 联用,当 SpringMVC 获取到请求时会转发到指定路径的方法进行处理。在Java中,特别是在使用Spring框架时,自动注入是一种依赖注入的方式,它允许Spring容器自动将依赖项注入到组件中。可用于将Web请求路径映射到处理类的方法上,当作用于类上时,可以统一类中所有方法的路由路径,当作用于方法上时,可单独指定方法的路由路径。
2025-03-02 01:43:17
513
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅