自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZERO

  写程序归根到底就是做两件事---算法实现和错误处理

  • 博客(729)
  • 收藏
  • 关注

原创 线上问题排查实用linux命令

Linux命令类1、grepgrep xxx a.txt #文件查找 grep xxx a.txt b.txt #多文件查找 grep 'xxx' /home/admin -r -n #目录下查找所有符合关键字的文件 grep 'xxx' /home/admin -r -n --include *.{vm,java} #指定文件后缀 grep 'xxx' /home/admin...

2020-04-17 20:21:46 262

转载 毕玄:稳定性,难的不是技术,而是……

只有把稳定性当成业务的功能实现一样,有相应的人员配备和投入,例如做一个业务可能需要多少人,相应的稳定性这块也固定投入多少人,你说到底多少比例合理呢,其实也说不太清楚,但这种简单粗暴的方式其实是最有效的,当然,是不是要把稳定性上升到这样的高度,也需要根据业务的性质、业务所处的阶段来具体判断,以及有这样的投入的情况下,怎么去评判相应职责的团队也仍然是个很复杂的话题。很多做过稳定性这事的人都知道,做这个事情最麻烦的是很难被认可,做的好,不出问题,不懂的人不知道你做了什么,出了问题的时候觉得你到底做了什么,

2024-04-14 20:36:22 1

转载 RST及java socket关闭后读写的各种异常

转载自:https://blog.csdn.net/liuxiao723846/article/details/128402301。

2024-04-14 11:52:51 2

转载 java.net.Socket异常场景及解决方案

转载自:https://blog.csdn.net/hzp666/article/details/96854876。

2024-03-27 22:56:00 6

原创 监控系统介绍

而其他时序库,这些问题都要从头解决。​ 从上图来看,从左往右,监控数据的采集,采集到的数据一般是写入时序库,然后就是对时序库中的数据进行分析和可视化,分析部分最经典做法就是告警规则判断(复杂一些的做会引入统计算法和机器学习的能力做预判),也就是上图中的告警引擎,告警引擎产生告警事件之后交给告警发送模块做不同媒介的通知。​ 数据触发式,是指服务端接收到监控数据之后,除了存储到时序库,还会转发一份数据给告警引擎,告警引擎每收到一条监控数据,就要判断是否关联了告警规则,做告警判断。

2024-03-27 22:31:49 1002

原创 Mybatis在SpringBoot中是如何被加载执行

由于MapperScannerConfigurer这个类实现了BeanDefinitionRegistryPostProcessor,所以它就会被生成bean之前加载,调用它的postProcessBeanDefinitionRegistry方法,postProcessBeanDefinitionRegistry里面就会scan我们指定的package里的@Mapper类。里会返回代理对象,对象的类型即 构造函数里传进来的 mapperInterface。

2024-03-27 12:00:38 329

转载 深入剖析socket的timeout

转载自:https://blog.csdn.net/yinshipin007/article/details/129370511。

2024-03-26 22:04:50 9

原创 Spring事务源码解析

通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。从上面可知,方法级别上的注解会覆盖类级别上的注解,两个findTransactionAttribute方法都在AnnotationTransactionAttributeSource实现,Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JDBC或者JTA等持久化机制所提供的相关平台框架的事务来实现。Spring的事务属于逻辑事务。

2024-02-05 22:15:00 917 1

转载 通过SQL分析数据库加锁

转载自:https://blog.csdn.net/fedorafrog/article/details/104249140。

2024-02-05 22:00:00 25

转载 InnoDB的MVCC原理

MVCC (Multi-Version Concurrency Control) 是一种基于多版本的并发控制协议,只有在InnoDB引擎下存在。MVCC是为了实现事务的隔离性,通过版本号,避免同一数据在不同事务间的竞争,可以把它当成基于多版本号的一种乐观锁。当然,这种乐观锁只在事务级别未提交锁和已提交锁时才会生效。MVCC最大的好处,读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能。

2024-02-01 22:00:00 24

转载 一次彻底解决因数据库全表扫描引发系统卡顿问题的实践

思路比解决方案更重要。

2024-01-30 21:15:00 42

转载 Spring Boot微服务性能降九成!用Arthas定根因

大家在自定义 Feign 的编解码器时,如果用到了 SpringEncoder / SpringDecoder,应避免 HttpMessageConverters 的重复初始化。如果不需要使用那些默认的 HttpMessageConverter,可以在初始化 HttpMessageConverters 时将第一个入参设置为 false,从而不初始化那些默认的 HttpMessageConverter。另外,应该了解不同的部署方式在类加载器频繁查找和加载资源时是存在性能差异的。

2024-01-26 16:08:31 32

转载 JVM stop the world

转载自:https://zhuanlan.zhihu.com/p/91937583。

2024-01-09 23:00:00 32

转载 Spring Boot 中自定义异常处理

转载自:https://blog.csdn.net/u013360850/article/details/93101903Spring Boot 中提供了默认的异常处理,但是对于应用来说,这些信息并不应该直接返回或者不够明确,需要结合自己的情况进行定制。当两种方式都实现时,HandlerExceptionResolver要先于ControllerAdvice执行。

2023-12-22 22:00:00 43

转载 Kafka索引的二分查找算法

转载自:https://baijiahao.baidu.com/s?

2023-12-01 23:00:00 92

转载 分布式系统的SLA

服务等级协议,是指系统服务提供者(Provider)对客户(Customer)的一个可量化的服务承诺,常见于大型分布式系统中,用于衡量系统服务是否稳定健康的常见方法。

2023-11-30 00:00:00 63

转载 java的几把锁

转载自:https://blog.csdn.net/u013256816/article/details/104912386。

2023-11-29 23:45:00 46

转载 C10K场景解决方案

总结以上造成交易超时的原因有两个:**1、心跳机制导致 netty worker 线程忙碌。**在每个心跳任务中,提供方向所有 1 个心跳周期内未收发过报文的消费方发送心跳;消费方向所有 1 个心跳周期内未收发过报文的提供方发送心跳。提供方上所连接的消费方较多,导致心跳报文堆积;同时,处理心跳过程消耗较多 CPU,影响了业务报文的处理时效。**2、全连接队列容量不足。**在提供方重启后该队列溢出,导致大量单边连接产生。单边连接下首笔交易大概率超时失败。下一步思考。

2023-11-28 00:00:00 34

转载 记一次线上数据库死锁定位

有些批量操作可以利用multiquery更新数据库,但有些不可,例如对于同一张表不同字段的多行更新。批量更新,并且每个dao可以多线程更新(在不同事务内同时请求更新),而且没有按照一定顺序。例如事务1更新id为1,2,3的数据,事务2更新id为3,2,1的数据,这样就会发生死锁。转载自:https://zhanghaoxin.blog.csdn.net/article/details/78255670。按顺序更新,例如把入参改为TreeSet,并且dao对象实现Comparable接口。

2023-08-05 13:15:00 95

转载 做系统架构的一些原则

转载自:https://coolshell.cn/articles/21672.html。

2023-04-07 20:30:55 188 1

转载 一文教会你如何写复杂业务代码

转载自:https://blog.csdn.net/zhousenshan/article/details/119084197。

2023-04-04 20:14:31 194

转载 MemorySafeLinkedBlockingQueue

转载自:https://xuliugencn.blog.csdn.net/article/details/125229930?前几天在一个开源项目的 github 里面看到这样的一个 pr:光是看这个名字,里面有个 MemorySafe,我就有点陷进去了。我先给你看看这个东西:这是阿里巴巴开发规范中截的图。为什么不建议使用 FixedThreadPool 和 SingleThreadPool 呢?因为队列太长了,请求会堆积,请求一堆积,容易造成 OOM。

2023-04-04 19:29:17 231

原创 负载均衡-

常见的负载均衡系统包括 3 种:DNS 负载均衡、硬件负载均衡和软件负载均衡。

2023-02-01 10:05:19 439

原创 Filter过滤器

接下来我们看一下所有的Filter是如果被调用的,关键代码在ProtocolFilterWrapper中,采用装饰器模式,在调用所有协议会执行ProtocolFilterWrapper这个类,这样就给我们实现Filter相关的机制提供了帮助,在ProtocolFilterWrapper中会将所有的Filter组装成一个链,当链中所有节点运行完之后才会真正执行最终的Invoker。Dubbo这里的Filter设计的确很巧妙,它的目的是在Invoker调用前或后执行一系列Filter。

2022-10-26 21:04:11 177

转载 API接口设计要考虑的点

一个项目内的所有接口,必须有统一的风格,统一返回格式,约定业务层错误编码,每个编码可以携带明确的错误信息。出入参字段含义明确,采用统一的命名规范,如驼峰命名等。返回格式统一采用json格式。{"error_message": "未获取到用户信息","data":}status标识接口是否逻辑处理成功;error_code为不同类型错误信息对应的唯一错误码,error_message为错误信息的简要描述信息(注意某些数据或者信息是否可直接展示给用户),data则为需要返回给调用方的数据信息。

2022-10-21 22:00:00 341

转载 UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

**PROPAGATION_REQUIRES_NEW**:原有事务A新起事务B,事务B中的commit和rollback不会影响外部事务A的commit和rollback,相互独立,如果事务B抛出异常,肯定会影响外事务A的。

2022-10-19 22:45:00 1761

翻译 前缀匹配的工具类

有这样业务场景:对于一个主题subject,想看有哪些group订阅了。而对于消费者来说,订阅的时候就是需要支持前缀匹配的,比如XXX.order.pay,支持订阅XXX.order 就能获取消息。使用的数据结构是基数树,而不是以为的字典树,基数树与字典树的区别在于基数树将单词压缩了, 节点变得更少,解决了字典树高度问题。转载自:https://blog.csdn.net/bohu83/article/details/126427401。

2022-10-19 21:30:00 308

转载 MapStruct用法示例

MapStruct

2022-10-14 21:45:00 714

转载 Future.get() 在配置RejectedExecutionHandler为ThreadPoolExecutor.DiscardPolicy策略时一直阻塞

1、重写DiscardPolicy,取消任务: ((FutureTask) r).cancel(true)。2、不使用DiscardPolicy,建议还是用线程池默认的AbortPolicy,可以重写,打印日志,再调用super.rejectedExecution(r, executor),抛出默认异常行为。3、使用java.util.concurrent.FutureTask#get(long, java.util.concurrent.TimeUnit) 带有超时的方法获取结果。

2022-10-14 16:46:50 391

转载 交易中台系统设计与思考

转载自:https://blog.csdn.net/zhousenshan/article/details/109690375?spm=1001.2014.3001.5502系统架构在这里,主要想说的是服务接入层,在我们目前的系统架构中并没有服务接入层。但是在我日后的反思中,觉得服务接入层的存在还是很有必要的。服务接入层的作用防腐层作用。因为业务中台要服务于企业内多条业务线,日常开发中应对不同的业务需求,我们常常在底层服务中的添加许多转换、判读逻辑,而引入了服务接入层我们可以把这些代码放到服务接

2022-04-18 20:02:19 427

转载 java流程引擎实现_手写实现一套流程编排

转载自:https://blog.csdn.net/weixin_39631301/article/details/112082970流程编排随着业务的不断发展,业务流程迭代慢慢变得复杂了起来,全景不清晰,这不仅仅会使开发人员编写代码弄的’ 不敢改 '心理,以及出现问题不好寻找出错位置,历史包袱太重,影响面需要评估,等等。一个本来很简单的需求,但是由于很多历史背景和包袱导致侵入代码需要评估改动影响面很大,这时候就需要一套流程编排来使得流程清晰,能全局感受到业务的能力地图。减少开发、测试等的维护迭代成本

2022-03-09 18:05:57 2022

原创 Java获取泛型T的类型 T.class

直接上代码:public interface CrudRepository<T> { Iterable<T> findAll();}public class BaseImpl <T> implements CrudRepository<T> { @Override public Iterable<T> findAll() { Class<T> c = getTClass();

2022-03-03 21:09:45 7834

转载 数据存储引擎结构介绍

转载自:https://zhuanlan.zhihu.com/p/247953550介绍在存储系统的设计中,存储引擎属于底层数据结构,直接决定了存储系统所能够提供的性能和功能。常见存储算法结构涵盖:哈希存储,B 、B+、B*树存储,LSM树存储引擎,R树,倒排索引,矩阵存储,对象与块,图结构存储等等。哈希存储引擎是哈希表的持久化实现,一般用于键值类型的存储系统。而大多传统关系型数据库使用索引来辅助查找数据,用以加速对数据库数据的访问。考虑到经常需要范围查找,因此其索引一般使用树型结构。譬如MySQL、

2022-01-29 14:33:17 862

转载 stringRedisTemplate使用注意

转载自:https://www.toutiao.com/a7052163401643983390/?log_from=0f004a3e112a_1642771270982首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象。刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁,越来越多的同事开始抱怨,于是感觉代码可能有问题,开始排查。01首先发现开发的本地ide没有发现问题,应用卡死时候数据库,redi

2022-01-21 21:23:59 1287

转载 ZooKeeper典型应用场景:分布式锁

转载自:https://www.toutiao.com/a6595438372460691971/?log_from=94560f55c8956_1642770980146分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不

2022-01-21 21:23:22 296

转载 ZooKeeper典型应用场景:分布式锁

转载自:https://www.toutiao.com/a6595438372460691971/?log_from=94560f55c8956_1642770980146分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不

2022-01-21 21:17:22 320

转载 分布式服务框架和原理简章

转载自:https://www.toutiao.com/a6573610696825635336/?log_from=ff720c65a6954_1642770703125应用架构演进这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取出来,独立开发,部署,维护,用来解决并发,扩展,维护的问题。传统垂直架构有的地方也叫单体应用,以mvc模式开发:所有应用代码统一打包,代码所有接口本地api调用,很少存在远程服务调用;单机或主备,应用做集群部署;

2022-01-21 21:14:00 338

转载 微服务的4个设计原则和19个解决方案

转载自:https://www.toutiao.com/a6755819647863390728/?log_from=393c21fb5a7b8_1642769673160微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个“微服务应用平台”需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。微服务平台也是我目前正在参与的,

2022-01-21 20:57:25 655

转载 初探InnoDB存储引擎的架构设计

转载自:https://www.toutiao.com/a6954629177517916708/?log_from=f8438e0bf8069_1642768601083前言InnoDB组件结构:buffer pool : 缓冲池,缓存磁盘的数据redo log buffer :记录对缓冲池的操作,根据策略写入磁盘防止宕机但事务已经提交而丢失数据undo log :当对缓冲池的数据进行修改时,在事务未提交的时候都可以进行回滚,将旧值写入 undo 日志文件便于回滚,此时缓冲池的数据与磁盘中的不

2022-01-21 20:38:30 180

转载 由 RedisTemplate 事务 enableTransactionSupport 引发的血案

转载自:https://carlzone.blog.csdn.net/article/details/108629864在最近的项目当中因为使用了类似字典表的数据,所以使用的 Spring Farmework 当中的 Cache 抽象,通过 Redis 来做为缓存。因为原有项目当中配置了 Redis,而且项目是基于 Spring Boot 构建的,并没有去除 Redis 的自动依赖(RedisAutoConfiguration)。导致有些 Redis 的有些类是基于项目中自己配置的 RedisTempl

2022-01-07 21:13:13 907

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除