- 博客(17)
- 收藏
- 关注
原创 OpenFeign的调用源码解析InvocationHandlerFactory 和MethodHandler类
在 Spring Cloud Feign 中,和初始化阶段Contract解析接口的方法注解。为每个方法创建(如(默认Default实现)使用这些创建。调用阶段用户调用代理方法 →触发 → 查找对应→执行 HTTP 调用。会转换为请求。优势解耦允许自定义(如支持熔断)。高效预编译方法逻辑,减少运行时开销。扩展性:通过实现这些接口,可以添加日志、重试等切面功能。
2025-07-21 00:08:48
611
原创 SpringCloud中如何在Feign调用中识别调用的源头位置
手动方式:使用Feign拦截器添加自定义请求头(如),简单灵活。自动方式:集成Spring Cloud Sleuth,实现全链路追踪,推荐用于复杂系统。在实际应用中,结合日志框架(如Logback)记录源头信息,能显著提升系统的可观测性。如果源头位置涉及安全敏感信息,建议加密头内容或使用OAuth2令牌验证。
2025-07-14 23:40:58
308
原创 transferFrom 与 transferTo 技术实现区别详解
维度transferTo数据流向源通道 → 当前通道(拉取)当前通道 → 目标通道(推送)实现机制强制分块(8MB)内存映射优先系统调用,回退内存映射性能特点分块带来额外开销系统调用更高效适用场景目标端控制/网络接收源端控制/网络发送实际选择应结合具体场景测试验证,在大多数网络传输场景中transferTo性能更优。
2025-07-12 16:41:36
220
原创 Stream流的详细使用教程
流是Java 8引入的核心特性之一,用于处理集合数据的函数式操作。它允许以声明式方式处理数据,支持并行操作,无需编写显式循环。流不存储数据,而是按需计算,适合处理大量或无限数据。
2025-07-01 11:07:28
146
原创 多级缓存的详细使用
多级缓存通过分层存储数据,减少直接访问慢速存储(如数据库)的频率,提高系统响应速度。通过RabbitMQ或Kafka广播缓存失效事件,其他节点监听后删除本地缓存。以上方案需根据实际业务场景调整参数,例如缓存大小、过期时间及同步策略。本地缓存适合高频访问的低变动数据,需注意内存管理和过期策略。Redis作为二级缓存,解决多服务实例间的数据一致性问题。防止缓存穿透,快速判断数据是否存在,避免无效查询。合理设计各级缓存的交互逻辑,避免缓存穿透或雪崩。
2025-07-01 10:50:16
347
原创 SQL中with关键字详解
关键字用于创建临时结果集,称为公用表表达式(CTE)。CTE 仅在当前查询中有效,类似于临时视图,可以简化复杂查询的结构,提高可读性和可维护性。支持递归 CTE,常用于处理层次结构数据(如组织结构、树形数据)。可以在一个查询中定义多个 CTE,用逗号分隔。
2025-07-01 10:45:14
281
原创 spring管理mybatis时sqlsession的创建情况【只看这一篇就够了】
在Spring框架中,整合MyBatis时,SqlSession的行为主要依赖于SqlSessionTemplate的管理机制,并结合事务上下文。以下是针对您问题的逐步分析:在一个方法中执行两次SQL操作时,SqlSession的创建次数取决于该方法是否处于事务中。引用[1]中提到,非事务性操作后会立即提交事务,这隐含了会话的独立创建1。可能创建多次SqlSession:SqlSessionTemplate会为每次独立的SQL操作创建新的SqlSession实例。事务性方法:1次(无论执行多少次SQL)。
2025-06-26 16:59:07
312
原创 分库分表和分表查询
当数据库的数据量或访问量达到一定规模时,单库单表的存储和查询性能会显著下降,影响系统整体性能。例如通过商品ID查询订单,先查索引表获取订单ID列表,再根据订单ID分片查询。例如根据用户ID范围查询,先确定用户ID对应的分片,再定向查询。分库分表后,查询需要根据数据分布策略进行调整,确保能准确找到目标数据。适用于无分片键或需要全量数据的场景,但性能较差。分库分表查询的核心是根据业务特点选择合适路由策略,平衡查询效率与开发复杂度。通过合理的设计和工具选择,分库分表可以有效提升系统性能和扩展性。
2025-06-21 14:38:09
809
原创 使用索引优化提升排序、GROUP BY和分页性能
好处:1. 避免Innodb表进行索引的二次查询(回表)Innodb是以聚集索引的顺序来存储的,对于Innodb来说,二级索引在叶子节点中所保存的是行的主键信息,如果是用二级索引查询数据,在查找到相应的键值后,还需通过主键进行二次查询才能获取我们真实所需要的数据。2. 可以把随机IO变成顺序IO加快查询效率由于覆盖索引是按键值的顺序存储的,对于I0密集型的范围查找来说,对比随机从磁盘读取每一行的数据IO要少的多,因此利用覆盖索引在访问时也可以把磁盘的随机读取的IO转变成索引查找的顺序IO。
2025-02-26 00:03:23
731
原创 博客摘录「 ParserConfig.getGlobalInstance()解决autotype被禁止问题」
看到一条新闻说是fastjson修复了一些高危漏洞,然后我们就协定升版本,然后今天就踩到了这个坑,报错如下: com.alibaba.fastjson.JSONException: unclosed.str。按照fastjson官网(就是最上面那个链接里)的说法,有几种处理方式,我们就临时先做了一个简单粗暴的处理,等到周一之后讨论具体方案(因为今天是周六)这样子就不会报错了,不过这只是临时做法,因为这个是fastjson的安全漏洞,如果按照这种方式的话,也还是存在这样的漏洞的。
2024-11-14 16:14:06
466
原创 redis设置主从复制-slave Replication--解决报错:(error) READONLY You can‘t write against a read only replica.
如果你的 Redis 环境使用了 Sentinel 或 Cluster,客户端库通常会处理节点的发现,包括在节点故障时自动切换到新的主节点。确保你的客户端库配置正确,以便能够处理这些情况。在您的服务或控制器中注入 RedisTemplate,并使用它来执行 Redis 操作。在这个配置类中,您可以指定使用 Sentinel。如果使用的RedisTemplate,可以对RedisTemplate进行配置。如果你使用的是 Jedis,确保你的连接字符串指向主节点。
2024-10-25 17:57:16
673
原创 Maven学习总结
@Maven的入门学习maven的安装没什么好说的在maven得配置文件中地conf目录下的setting.xml文件中可以进行配置1.这里的配置的路径在pom文件引入依赖就会首先到这个路径下去查找,没有的化才会到中央仓库下载2.在mirrors的标签内可以配置你的中央仓库这里的是阿里云仓库,如果你的本地仓库没有找到就会到你配置的这里去查找在idea中设置项目得依赖路径(注意这里得配置只相对于当前项目)生命周期Maven对项目进行构建过程中分为三套互相独立的生命周期,每个生命周期中,都包含了不同
2022-12-07 16:08:17
651
原创 对于SSM数据库查询数据为null的解决
问题:在SSM整合中如何排查数据库查询为null值排查方式: 1.排查datasource数据连接是否成功 - 如果不成功检查导入依赖是否有误 - 查看配置类配置或者xml文件是否有误(******) - 使用maven工程查看target中文件导入是否正确,有问题的话进行clear和compiler操做 2.检查实体类的导包有没有错误 3.检查实体类的属性是否和数据库数据列一一对应,没有对应使用resultMap映射是否有误 4.在检查sql语句是否正确 以上对于此问题的简单总结若有不足欢
2022-12-05 20:54:50
961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人