7 晓寒风骤

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

RocketMQ(二):底层存储

存储介质-磁盘一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对而言读写速度较慢,那通过磁盘作为存储介质如何实现高吞吐呢?顺序读写答案就是顺序读写。首先了解一下页缓存,页缓存是操作系统用来作为磁盘的一种缓存,减少磁盘的I/O操作。在写入磁盘的时候其实是写入页缓存中,使得对磁盘

2020-07-29 10:32:48

Dubbo(二):协议详解

(1)协议支持Dubbo支持多种协议,如下所示:Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情。你可以根据你应用的创建来选择。例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议。(2)默认使用Dub

2020-07-28 17:48:17

kryo序列化的优缺点

其实之前在“Kryo序列化生效位置”处已经提到了Kryo序列化的优点,这里总结一下,大致为:1. 算子函数中使用到的外部变量,使用Kryo以后:优化网络传输的性能,可以优化集群中内存的占用和消耗;2. 持久化RDD,优化内存的占用和消耗,持久化RDD占用的内存越少,task执行的时候,创建的对象,就不至于频繁的占满内存,频繁发生GC;3、shuffle:可以优化网络传输的性能。Kryo序列化机制比默认的Java序列化机制速度要快,序列化后的数据要更小,大概是Java序列化机制的1...

2020-07-10 18:03:45

DDD(四):会员系统-支撑子域

订单域1、订单域2、核心流程订单:1、创建订单(个人订单)2、付款(团体订单)3、退款(部分退款)套餐:3、实体与值对象订单:套餐:

2020-06-09 10:40:00

DDD(三):会员系统-核心子域

一、通用语言服务项目是对数字健康平台、医疗机构等能够提供的医疗服务资源进行的统一抽象。名称 服务编码 分类 服务方式 链接 缩略图 优惠类型 支持场景 服务简介 服务说明 服务提供者 服务簇是一组具有 "单一相关性"的服务项目的聚集。比如: 问诊服务簇,表示的是所有的问诊服务的集合。 问诊服务簇 = 图文问诊服务 + 专家问诊服务 + 视频问诊服务;注意:一个服务也可以自成一簇,如果该服务没有与之有相关性的服...

2020-06-09 10:32:18

DDD(二):会员系统-限界上下文与集成

会员平台限界上下文映射关系

2020-06-09 10:26:54

DDD(一):会员系统-事件风暴

通用语言 服务项目 服务簇 服务类目 权益 使用限制 优惠方式 卡权益归属主体 卡默认使用者 共享人 使用范围 服务提供者 事件风暴...

2020-06-09 10:23:48

Redis(十):redis的I/O多路复用

引出IO多路复用为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而I/O 多路复用就是为了解决这个问题而出现的。要弄清问题先要知道问题的出现原因由于进程的执行过程是线性的(也就是顺序执行),当我们调用低速系统I/O(read,write,acce..

2020-06-03 15:45:23

阿里代码规范检查工具的安装使用

该插件由阿里巴巴 P3C 项目组研发。代码已经开源,GitHub:https://github.com/alibaba/p3c阿里介绍文章:https://mp.weixin.qq.com/s/IbibsXlWHlM59kfXJqRvZA#rd插件支持了IDEA、Eclipse,在扫描代码后,将不符合规约的代码显示出来,甚至在 IDEA 上,还基于 Inspection 机制提供了实时检测功能,编写代码的同时也能快速发现问题所在,还实现了批量一键修复的功能。IDEA 下如何使用?1.打开

2020-05-13 10:29:35

深度介绍分布式系统原理

1 概念 1.1 模型 1.2 副本 1.3 衡量分布式系统的指标 2 分布式系统原理 2.1 数据分布方式 2.2 基本副本协议 2.3 Lease 机制 2.4 Quorum 机制 2.5 日志技术 2.6 两阶段提交协议 2....

2020-04-29 19:49:08

分布式事务(三):分布式事务问题的几种方案

这种方案说实话几乎很少人使用,我们用的也比较少,但是也有使用的场景。因为这个事务回滚实际上是严重依赖于你自己写代码来回滚和补偿了,会造成补偿代码巨大,非常之恶心。比如说我们,一般来说跟钱相关的,跟钱打交道的,支付、交易相关的场景,我们会用 TCC,严格保证分布式事务要么全部成功,要么全部自动回滚,严格保证资金的正确性,保证在资金上不会出现问题。而且最好是你的各个业务执行的时间都比较短...

2020-04-29 19:46:44

IO(六):深入探秘 Netty、Kafka 中的零拷贝技术

零拷贝,从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能。我们也经常在 Java NIO,Netty,Kafka,RocketMQ 等框架中听到零拷贝,它经常作为其提升性能的一大亮点下面从 I/O 的几个概念开始,进而再分析零拷贝。I/O 概念缓冲区缓冲区是所有 I/O 的基础,I/O 讲的无非就是把数据移进或移出缓冲区;进程执行 I/O 操作,就是向...

2020-04-13 16:38:05

Java多线程(十九): J.U.C 之线程池:ThreadPoolExecutor

作为Executor框架中最核心的类,ThreadPoolExecutor代表着鼎鼎大名的线程池,它给了我们足够的理由来弄清楚它。下面我们就通过源码来一步一步弄清楚它。内部状态线程有五种状态:新建,就绪,运行,阻塞,死亡,线程池同样有五种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。 private final Ato...

2020-04-02 14:21:44

Java多线程(十八): J.U.C 之阻塞队列LinkedBlockingDeque

前面的BlockingQueue都是单向的FIFO队列,而LinkedBlockingDeque则是一个由链表组成的双向阻塞队列,双向队列就意味着可以从对头、对尾两端插入和移除元素,同样意味着LinkedBlockingDeque支持FIFO、FILO两种操作方式。LinkedBlockingDeque是可选容量的,在初始化时可以设置容量防止其过度膨胀,如果不设置,默认容量大小为Integer...

2020-04-02 14:19:41

Java多线程(十七): J.U.C 之阻塞队列SynchronousQueue

作为BlockingQueue中的一员,SynchronousQueue与其他BlockingQueue有着不同特性:SynchronousQueue没有容量。与其他BlockingQueue不同,SynchronousQueue是一个不存储元素的BlockingQueue。每一个put操作必须要等待一个take操作,否则不能继续添加元素,反之亦然。 因为没有容量,所以对应 peek, co...

2020-04-02 14:18:34

Java多线程(十六): J.U.C 之阻塞队列DelayQueue

DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue主要用于两个方面:缓存:清掉缓存中超时的缓存数据 任务超时处理DelayQueueDelayQueue实现的关键主要有如下几...

2020-04-02 14:17:37

Java多线程(十五): J.U.C 之阻塞队列PriorityBlockingQueue

我们知道线程Thread可以调用setPriority(int newPriority)来设置优先级的,线程优先级高的线程先执行,优先级低的后执行。而前面介绍的ArrayBlockingQueue、LinkedBlockingQueue都是采用FIFO原则来确定线程执行的先后顺序,那么有没有一个队列可以支持优先级呢? PriorityBlockingQueue 。PriorityBlockin...

2020-04-02 14:16:52

Java多线程(十四): J.U.C 之阻塞队列ArrayBlockingQueue

1. 简介ArrayBlockingQueue,一个由数组实现的有界阻塞队列。该队列采用 FIFO 的原则对元素进行排序添加的。ArrayBlockingQueue 为有界且固定,其大小在构造时由构造函数来决定,确认之后就不能再改变了。ArrayBlockingQueue 支持对等待的生产者线程和使用者线程进行排序的可选公平策略,但是在默认情况下不保证线程公平的访问,在构造时可以选择公...

2020-04-02 14:15:50

Java多线程(十三): 深入分析 ThreadLocal

ThreadLocal是什么?ThreadLocal是啥?以前面试别人时就喜欢问这个,有些伙伴喜欢把它和线程同步机制混为一谈,事实上ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。那么ThreadLocal到底是什么呢?API是这样介绍它的:This class provides thread...

2020-04-01 17:19:52

Java多线程(十二):J.U.C 之 Condition

在没有 Lock 之前,我们使用synchronized来控制同步,配合 Object 的#wait()、#notify()等一系列方法可以实现等待 / 通知模式。在 Java SE 5 后,Java 提供了 Lock 接口,相对于synchronized而言,Lock 提供了条件 Condition ,对线程的等待、唤醒操作更加详细和灵活。下图是 Condition 与 Object...

2020-04-01 17:10:57

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。