java
文章平均质量分 87
编号94530
新时代 积极 向上 奋斗 好 青年
展开
-
如何在Java中直接使用Hystrix?
最近由于一些背景原因,需要在项目中需要对接口进行限流。所以就考虑到了直接使用Hystrix。但是呢,又不想直接使用SpringCloud,而是直接引入原生,现在发现挺好用的,所以记录下来,分享出来。...原创 2022-06-04 15:45:01 · 616 阅读 · 0 评论 -
SpingWebFlux中WebClient怎么打印日志?
怎么记录WebClient请求的日志呢?原创 2022-05-14 23:04:05 · 1258 阅读 · 1 评论 -
SpringDataRedis序列化带有双引号
1. 背景在使用Spring Data Redis的hash存数据的时发现,如果存值的泛型和取出来的泛型对象不同时,可能存在值不相等。记录下过程与解决方案,避免大家重复踩坑。2. 问题说明情况如下,用图说明。2.1 RedisOpts操作RedisOpts是对RedisTemplate<String,?>进行了一层封装,在用hash操作时,存入的key是test-hash,value是RedisUtils.class.getName(), 取值得时候有两种方式,分别是转化成了Stri原创 2022-03-02 20:07:29 · 2125 阅读 · 2 评论 -
Spring是如何自动注入多类型
抓住10月月末的小尾巴, 一探SpringBean内部字段是如何注入多类型的时常有个小问题围绕着我,Spring是如何给字段字符装盘,为何支持Collection、List、Map、String等这么多类型的呢?在Spring注入的过程中,有没有什么小技巧值得我们学习呢?带着这个疑惑,我们来一探究竟。本文基于SpringBoot V2.5.6, Spring V5.3.12。不同版本可能会有不同,请注意哈想要弄懂上面的问题,有一个小小的要求,那就是要弄懂SpringBean的生命周期(如和Get原创 2021-10-31 21:12:45 · 310 阅读 · 1 评论 -
高峰应对分享
一、背景最近这个点9月中旬了,快到双十一了,公司开始对一些较为重要的系统开始进行压测。在这个过程中,需要保证系统的稳定性,以及高吞吐量。所以记录这次的压测过程,自己遇到的各种问题以及自己的思考。二、 过程记录2.1 工作流程梳理在确定系统被确定为高峰系统后,就需要对系统有一个完整的梳理,并对接下来的工作有一个梳理规划。其中主要有几个方面。如下:系统功能的完整梳理系统调用链路,以及上下游系统调用链路系统现有监控梳理。如:业务监控、请求调用、重要接口日志监控等系统应急预案。如:系统层面的容灾、原创 2021-09-20 17:10:47 · 144 阅读 · 0 评论 -
高可用架构(下)
上次说到了理论,接口层面,数据库层面如何实现高可用,但是,这远远是不够得。为了面对更大的灾害,如:洪水,地震等,还要在机房层面做出高可用。当然,也不仅仅是为了面对自然灾害,也可以是用于备份等,接下来就让我们从存储方式,机房层面说一下高可用架构。一. 数据存储方式在我们用集群存储数据的时候,有多种的存储方式,有时候会把数据存在一个节点上,有时候又会把数据分散存储。如Redis集群,将数据存储在不同的节点上。这样就带来了两次数据存储的讨论。分别是:数据集中式存储集群和数据分区存储集群。1.1 数据集中存储原创 2021-08-17 21:03:20 · 151 阅读 · 1 评论 -
高性能架构
上一篇文章初识架构让我们对架构设计的复杂度考虑有了一定了解,主要有个高可用、高性能、可扩展。但仅仅知道是不够用的,接下来,将从高性能来进行详细分享1. 高性能数据库从数据库分享高性能,主要是两个方面分别是:1.1 读写分离读写分离的主要原理是将读和写分散到不同的节点上1.1.1 实现方式数据库搭建主从模式,一主多从或一主一从。主服务器负责写, 从服务器负责读。从服务器通过复制的方式从主服务器同步数据。在业务域实现分别有两种方式:从代码层面实现。主要是代码封装,通过将读写请求分离出,请求不同原创 2021-07-11 18:37:17 · 97 阅读 · 0 评论 -
如何定义错误码
好久没有写文章了,搞得不知道写啥,最近遇到了一个问题,决定把东西总结一下,记录下来。1. 背景最近开发,发现遇到了一个问题,那就是关于如何定义错误码。写代码写着写着迷糊了,突然发现不知道如何定义错误码,错误码对我们来说,到底有什么用?今天我结合自己的实现,来说一下如何定义错误码2. 处理错误的方式在Spring时代,spring提供的ControllerAdvice,RestControllerAdvice给我们集中处理异常提供了一种很好的解决方案。我们也经常用这样的方式来解决方案。但是,结合我们一原创 2021-03-24 21:54:33 · 2590 阅读 · 0 评论 -
Nacos如何实现服务自动注册
1. 背景接着上次的说,Nacos问题的分析。这次就来分享一下自己的分析方法。以及如何利用Spring事件完成服务注册。2. 分析一下2.1 问题分析过程问题是这样的,我以为是Nacos服务注册不上吗? 那就肯定是注册有问题了, 那就去找是服务是如何注册的。关键是从哪找呢?具体步骤:知道服务启动方式。如Nacos,就是通过properties,那就找哪有用到启动的属性文件项目用SpringBoot集成,那核心类的加载就在Spring.factories中。(这个文件会被springSPI加载原创 2020-09-19 22:52:56 · 3201 阅读 · 0 评论 -
CompletableFuture运行流程源码详解
1. 背景CompletableFuture用起来着实舒服,代码一写,异步跑起来,时间缩短了不少(一个IO任务单线程40多分钟,用上多线程CompletableFuture,直接变成7分钟了)。代码是用起来了, 很舒服,但是里面的原理,想必有些大兄弟还不怎么清楚。今天就来一步步分析一下运行流程。2. 上代码CompletableFuture可以通过构造函数或者提供的方法构造一个CompletableFuture对象。我们今天就以CompletableFuture#supplyAsync方法来讲解。直接原创 2020-07-29 14:38:19 · 626 阅读 · 0 评论 -
mybatis执行过程源码分析
1 总结代码有些多,怕有的大兄弟耐不下心, 就先写一个总结。mybatis的的大概流程是这样的:通过解析配置文件分析mapper文件和接口,生成代理对象。根据配置文件,创建会话通过会话拿到代理对象通过代理对象,执行具体方法,将接口和sql关联,并执行。Note: mybatis version --3.4.62 代码示例public void howToUseMybatis() throws Exception { String confLocation = "myb原创 2020-06-30 22:49:22 · 123 阅读 · 0 评论 -
记一次线上事故
1. 事故发生某天晚上,收到系统CPU占用过高报警,立刻登录服务器查看cpu信息(top,命令即可),此时CPU占用率高达750%+, 查看GC日志,频繁的发生Full GC, 并且一次Full GC市场可达到6s,立刻使用jmap命令dump文件(命令:jmap -dump:file=heap.bin )。立刻重启服务,恢复一部分机器,保证服务可用。重启后,系统恢复正常。2. 堆栈分析把dump的文件从服务器弄下来,然后使用MAT工具分析(dump的文件有点大,注意调整MAT内存大小,对MAT不熟悉原创 2020-05-14 23:25:53 · 216 阅读 · 0 评论 -
用jdk8的stream来实现斐波那契数列
1. 为什么jdk8用着越来越舒服,各种API, 一顿操作,代码从上到下一气呵成,爽! 突然想到,怎么用stream来实现斐波那契数列?2. 说干就干斐波那契数列就是后一个数是前两个数的和,即 n = (n-1) + (n-2) [n >2],那我们去Stream的API中查询,有没有生成这种规则的stream呢?3. 查看API翻看API,有两个API是有可能的, 分别是:...原创 2020-04-29 12:15:16 · 564 阅读 · 0 评论