分布式事务——消息最终一致性方案前言分布式事务一直是服务化拆分后一个绕不开的话题,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此时已经提交,无法回滚,那么最终就会导致两边数据不一
  • arick
  • 2019-09-24 22:10:32
java反射核心机制与原理解析一、java的核心机制java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection):1、Java虚拟机:是运行所有Java程序的抽象计算机,是Java语言的运行环境,在其上面运行Java代码编译后的字节码程序,java虚拟机实现了平台无关性。2、Java垃圾回收(Garbage Collecti
  • arick
  • 2019-09-24 22:13:25
背景最近在做某一个项目的时候用到了OSS作为存储工具,简单的来说就是需要把本地文件存储到OSS上以缓解本地存储空间不足,然后在需要该文件时再将文件从OSS上下载到本地对应目录。另外考虑到性能问题,需要传输速度至少满足2G大小的文件在3分钟内传输完毕。下载测试阿里云的关于OSS下载文档中,介绍了两种OSS上传文件的API,分别是流式下载和断点续传下载,我们主要看一下多线程下文件下载的速度,以2GB大
  • arick
  • 2020-06-01 13:54:22
一、什么是G1G1(Garbadge First Collector)作为一款JVM最新的垃圾收集器,可以解决CMS中Concurrent Mode Failed问题,尽量缩短处理超大堆的停顿,在G1进行垃圾回收的时候完成内存压缩,降低内存碎片的生成。G1在堆内存比较大的时候表现出比较高吞吐量和短暂的停顿时间,而且已成为Java 9的默认收集器。未来替代CMS只是时间的问题。二、CMS与G1对比C
  • arick
  • 2020-04-29 14:37:05
RocketMQ是阿里开源的分布式消息中间件,在阿里云上有它的商业版本ONS,类似的开源消息中间件还有Kafka, ActiveMQ等。跟其它中间件相比,rocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;跟kafka相比吞吐率稍低,但是在保持一定的吞吐情况下,在发生宕机和其它故障时消息丢失率更低。后面几篇文章会对照源码来讲RocketMQ的实现原理。基本概念核心概念Message代表
  • arick
  • 2020-03-16 18:09:42
关于Java线程池的参数设置。线程池是Java多线程里开发里的重要内容,使用难度不大,但如何用好就要明白参数的含义和如何去设置。干货里的内容大多是参考别人的,加入了一些知识点的扩充和看法。希望能对多线程开发学习的童鞋有些启发和帮助。一、Threa关于Java线程池的参数关于Java线程池的参数设置。线程池是Java多线程里开发里的重要内容,使用难度不大,但如何用好就要明白参数的含义和如何去设置。干
  • arick
  • 2019-09-24 22:14:56
维基百科:领域模型可以被看作是一个系统的概念模型,用于以可视化的形式描述系统中的各个实体及其之间的关系。领域模型记录了一个系统中的关键概念和词汇表,显示出了系统中的主要实体之间的关系,并确定了它们的重要的方法和属性。因此,对应于用例所描述的动态视图,领域模型提供了一种对整个系统的结构化的视图。领域模型的一个好处是描述并限制了系统边界。领域模型的语义可以被用在源代码中,因此领域模型可以被应用在底层的
  • arick
  • 2020-04-06 16:28:55
一、前言最近在做项目时候遇到一个奇葩问题,就是bean依赖注入的正确性与bean直接注入的顺序有关系,但是正常情况下明明是和顺序没关系的啊,究竟啥情况那,不急,让我一一道来。二、普通Bean循环依赖-与注入顺序无关2.1 循环依赖例子与原理public class BeanA { private BeanB beanB; public BeanB getBeanB() {
  • arick
  • 2020-06-05 15:52:01
ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个
  • arick
  • 2020-04-14 06:57:28
虫子有个服务器,没多久磁盘空间就被撑爆了,为了定位问题,我需要查找服务器中占用体积最大文件。 像df、du 或 ncdu 这些命令只会显示当前目录的文件,并不会显示整个系统范围的文件。经过查找,看到了网友分享的如下四种命令组合方法。操作步骤使用Xshell等软件连接服务器,全选复制下方4种命令合集中的任意一种,粘贴至Xshell执行,稍等即可列出最大的10个文件的位置。虫子通过这种方法,最终定位到
  • arick
  • 2019-09-29 14:49:45
Rick ©2018