RxJava源码解读

2019-04-14
阅读 2 分钟
2.2k
{代码...} 我们从最简单的一段代码入手() Observable.just 实际上just方法就是返回了一个ObservableJust ObservableJust Observable.subscribe 创建了一个LambdaObserver观察者 LambdaObserver 主要有onSubscribe,onNext,onError,onComplete方法对应的执行的逻辑是对应的是类构造参数的回调接口 调用了ObservableJust.su...

聊聊幽灵Class

2019-03-25
阅读 2 分钟
1.9k
偶然一次路过同事电脑,看着黑底蓝色满屏的堆栈信息,过去笑着拍了拍他的肩膀说道「小哥,又在写BUG呢」凑过去仔细看了一眼异常堆栈详情,「虎躯一震」哟,高端的,这堆栈后面的还有类的包路径信息呢呢,以前看堆栈的时候咋没有特别注意

由日志打不出引出的知识图谱(一)

2018-01-19
阅读 2 分钟
3.6k
目前业界日志标配slf4j + logback,当我们调用slf4j的Logger.error()的时候到底发生了什么?贴一张Logger执行流程图这里出现了一个关键对象AppenderAttachableImpl,如果Logger的局部变量值为null,就调用父Logger进行日志打印,结合实际场景解释一下

说说分布式事务(五)

2018-01-10
阅读 1 分钟
3.4k
整个资金平台会和支付宝进行交互(冻结金额,出账金额),对这两个动作支付宝都会返回成功或者失败,当然还有异常流接口超时(实际成功/实际失败).

业务上锁的应用

2017-12-19
阅读 1 分钟
1.6k
针对一个赔付工单(由底下小二发起),当金额数量大于一定值以后,针对这笔工单就会有层层审批(风控),先YY一个审批流「TL审批」--->「主管审批」--->「财务审批」.这里就会存在3种权限「一审权限」「二审权限」「终审权限」,当这笔工单被小二提交以后就会给小二对应的TL创建一个审批任务,在主管的界面就可以看到相应的...

日志框架浅析(三)

2017-04-20
阅读 2 分钟
2.3k
当我们应用配置了slf4j&&logback的组合,但是我们引用的jar包里面用的却用了Log4j来执行日志输出,那么怎么统一控制,让jar包里面的的日志也能按照我们工程配置的日志输出格式输出呢?日志转调这个时候就可以大显身手了

日志框架浅析(二)

2017-04-14
阅读 2 分钟
2.6k
log4j并没有实现slf4j相应的接口,所以加了一层桥接层(slf4j-log4j12.jar包里面的内容)来实现slf4j对log4j的调用slf4j-log4j12.jar里面的代码很简单只有5个类,关键的两个类是Log4jLoggerFactory和Log4jLoggerAdapter,对应Log4jLoggerFactory的getLogger方法源码:

日志框架浅析(一)

2017-04-11
阅读 2 分钟
2.1k
常用的日志主流框架基本上是基于slf4j搭配logback来实现日志输出 依赖jar包:slf4j-api-x.x.x.jar,logback-classic-x.x.x.jar,logback-core-x.x.x.jar

浅谈缓存(二)

2016-09-06
阅读 1 分钟
2.6k
缓存失效策略 失效缓存---->更新数据库数据 缺点 如果缓存失效失败,根据策略可能会影响后续的正常的数据更新操作 直接失效缓存会增加后续的一次缓存查询的Miss 优点 避免数据库更新成功,缓存失效失败,导致缓存中是旧数据 场景 对缓存准确率要求比较高的业务 异常情况 线程A需要更新数据库数据,失效缓存;线程B发现缓存...

浅谈缓存(一)

2016-07-19
阅读 1 分钟
3.6k
场景:当通过一个key去数据库查询出来的数据结果为null,缓存系统就不会缓存该数据,每次该key查询都会经过数据库层,造成没有必要的DB开销 解决方案:将该key缓存至缓存系统中,value为一个特殊值(^^,&&...)

说说分布式事务(四)

2016-07-15
阅读 1 分钟
5.9k
预扣减库存失败:如果预扣减库存真实失败,则下单失败(订单由定时补偿机制定时删除,其它应用参照场景4的处理方式,下单失败;如果实际预扣减库存成功,参照场景4的处理方式,下单失败

说说分布式事务(三)

2016-07-14
阅读 2 分钟
17k
最终一致性(一) TCC 简介 TCC是由支付宝架构师提供的一种柔性解决分布式事务解决方案,主要包括三个步骤: TCC流程 TCC的关键流程如下图(以下单和扣减库存为例子)Q: 预生成订单失败了,为什么要通过TCC执行预处理数据回滚? A: 可能预生成订单成功,但是接口返回失败(超时失败),所以预处理在某些情况下是有预处理数据,需要清...

系统中循环引用

2016-05-29
阅读 3 分钟
3.4k
从直观上来看,类A中耦合了类B,从程序的角度上看,假如类A的methodB()方法做了修改,就会导致类B的methodB做出相应的修改, 并且还会导致一系列调用B.methodB()的方法也改变;另一方便如果类B的methodA()做出修改也会导致类A产生相同的副作用.

关于域的的一些遐想(一)

2016-05-28
阅读 2 分钟
1.7k
有一个店铺列表查询,查询条件是店铺Id/店铺名称(通过下拉框选择)。这个时候我们在和前端约定,往往是传一个queryType和queryValue,这个时候Service和Dao就有两个选择:

说说分布式事务(二)

2016-03-08
阅读 1 分钟
3.4k
以两阶段提交来说,主持人收到一个提案请求,打电话跟每个组员询问是否通过并统计回复,然后将最后决定打电话通知各组员。要是主持人在跟第一位组员通完电话后失忆,而第一位组员在得知结果并执行后老人痴呆,那么即使重新选出主持人,也没人知道最后的提案决定是什么,也许是通过,也许是驳回,不管大家选择哪一种决定...

说说分布式事务(一)

2016-02-22
阅读 1 分钟
4.8k
2PC(两阶段事务提交) 两阶段事务提交简化图 两阶段事务提交异常点 节点本身故障(比如Down机) 节点之间通信故障 两阶段事务提交错误点分析 说明 图中有问号的条目,是我不确定的地方,但是不影响这个分布式事务的结果 图中的感叹号条目,个人感觉其实也是允许先发消息再记录日志的,但是如果这样子做以后发生Down机,客户端或...

由「抽象一致性」思考如何书写可读性代码

2016-01-15
阅读 4 分钟
4.1k
通过用户Id查找用户的订单信息接口List<Order> orders = orderService.queryOrders(long userId)

如何设计接口的粒度

2016-01-05
阅读 2 分钟
5.2k
用户基本信息的展示.产品需要有3个页面,分别面向的是消费者,运营,商家。所以3个页面的内容不是完全一样的,并且有些内容是敏感的,但是他们的数据源是一致的。现在一共有四种解决方案: