文章
为何使用MQ• 异步通信(调用解耦、故障隔离)• 流量的削峰(防止流量压垮)• 消息的持久化(可重试,可重复消费)基本概念Broker:即Kafka服务部署的一个节点,多个broker节点可以构成一个Kafka集群。消息:消息是Kafka中最基本的消息单元。由一串字节组成,主要由key和value构成,key和value都是字节数组。key的主要作用是根据一定的策略,将这个消息路由到指定的分区中,
  • arick
  • 2020-05-17 23:39:39
  • 66
十大经典排序算法直接插入排序思想:第一个数默认有序。从第二个数开始,从后往前扫描。若取出数 < 当前数,则指针不断前移,直到取出数 >= 当前数时,把取出数插入到当前位置public static int[] insertSort(int[] arr){ int pre,cur; //pre:当前数指针,cur: 取出数 for(int i = 1; i < arr.lengt
  • arick
  • 2020-05-14 16:52:24
  • 102
如果想了解 redis 与Memcache的区别参考:Redis和Memcache的区别总结阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引因为B+树的原理是 叶子节点存储数据,非叶子节点存储索引,B+树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度
  • arick
  • 2020-05-14 14:28:31
  • 115
Channel 通道,可以类比nio的channelNioEventLoop 单线程的线程池,可以处理多个channel,源于nio可多路复用的特点ChannelInboundHandler 可以有多个,处理进入的事件,主要的业务逻辑写在这里ChannelOutboundHandler 可以有多个,处理出去的事件,主要的业务逻辑写在这里ChannelPipeline 管理所有的ChannelInb
  • arick
  • 2020-05-13 17:41:32
  • 131
序言在后端的日常开发工作中,集合是使用频率相当高的一个工具,而其中的HashMap,则更是我们用以处理业务逻辑的好帮手,同时HashMap的底层实现和原理,也成了面试题中的常客。以前曾有详细了解过HashMap的实现原理,看过源码(JDK7版本)。但随着jdk版本的飞速迭代(现在都到JDK13了,但新特性还从没用过。。),主流的jdk使用版本也终于从JDK7挪到了JDK8。由于JDK的向前兼容,在
  • arick
  • 2020-05-13 14:48:32
  • 99
1、前言1.1、背景介绍在TCC模式下,发起方需要考虑如何存储事务日志:异库发起方需要实现回查服务,并且自身业务量会受XTS Server及其db的瓶颈限制;同库发起方需要自行建库建表维护数据库,如果分库分表的话还需考虑如何对数据分片;对于参与者, 需要按TCC参与者设计规范,实现参与者服务;此外一个TCC参与者通常只适用于一个特定的业务场景,新的业务场景需要设计和实现新的TCC参与者,复用性比较
  • arick
  • 2020-05-12 15:53:52
  • 103
什么是Feign?Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign被广泛应用在Spring Cloud 的解决方
  • arick
  • 2020-05-12 15:29:48
  • 100
如果使用的IDE是spring sts或者idea,可以通过向导来创建spring boot项目。也可以参考官方教程:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-first-application对spring boot的两个疑问刚开始接触spring b
  • arick
  • 2020-05-12 14:22:10
  • 93
1 cpu和内存模型  cpu和内存模型   上图描述的是cpu和内存模型之间的交互关系,现代的cpu模式和过去有很大的不同,不仅存在多核,也有多cpu的场景,极大提高了线程的并发性。cpu的处理速度非常快,而内存的处理速度较cpu来说较慢。增加了cpu cache memory进行提高指令执行效率,而问题是:cpu cache memory和主内存之间存在数据一致性问题。1.1 硬件层面内存屏障
  • arick
  • 2020-05-11 15:08:27
  • 136
一、背景在做玩法钱包项目时,其中一个场景,在使用账户资金创建红包时,先要预先判断账户资金是否充足,如果充足则冻结这笔资金,再创建红包,如果创建红包失败要取消冻结资金。这就涉及到了两个应用中红包库和资金库的跨应用跨库事务的问题。本打算采取处理失败后使用metaq消息重试机制来做补偿,保证最终一致性。这种方式的好处是不引用新的中间件,对系统性能和吞吐量影响不大。但缺点也很明显,为了对数据进行补偿,针对
  • arick
  • 2020-05-06 23:01:18
  • 187
Rick ©2018