摘要:
关于订单库存扣减的最佳实践 一: 背景 在电商的业务场景中每个商品都是有库存的,而且可能存在很多限售的运营策略。我们团队面临社区电商的业务场景更为复杂。不仅仅是库存限售,存在区域,门店,用户,运营分组,物流等的限售策略。如何面对日单量千万级别(未来更多),和多个维度的限售策略而不超卖,少卖是一个 阅读全文
摘要:
CompleteFuture实现简单的任务编排实践 一:前言 CompleteFuture是java8 新提供的API,是对函数式编程思想的体现,提供了很多的对于函数式编程支持。不止有同步处理功能,还有异步处理能力。 通过函数式编程可以实现线程的简单任务编排。高效,整洁实现多线程异步编程。 二: 阅读全文
摘要:
MVCC原理分析 1:什么是MVCC MVCC是英文名称Multi Version Concurrency Control 的简称,就是多版本并发控制。 MVCC可以说实现,读不加锁,读写不冲突。这个可以大大的提高Mysql的性能。 2:MVCC解决了什么问题 多事务的并发进行一般会造成以下几个 阅读全文
摘要:
设计模式之-策略模式 开发中经常碰到很多同一入口,但是不同场景的业务需求,很多人都是if-else一把梭。这样开发是简单,但是代码很丑,业务耦合严重。也很不利于后期代码的维护,久而久之,代码就变成了"屎山",无人敢动。 测试模式就是可以解决少写if-else,让业务解耦,便于业务的拓展,逻辑 阅读全文
摘要:
如何实现一个排行榜 场景 1:用户签到可以获得积分,需要按照用户维度每天进行用户总积分排行榜 2:需要近实时更新排行榜 3:在积分相同的情况下,需要按照先注册的用户排在前面 4:用户量100w 5:排行前20名称 设计 1:排行榜的实现可以借助redis的SortedSet数据结构实现排行榜,sor 阅读全文
摘要:
RocketMq对于消费者对于消息的如何处理的 1:如果设置了自动提交 返回: ConsumeOrderlyStatus.COMMIT, ConsumeOrderlyStatus.ROLLBACK, ConsumeOrderlyStatus.SUCCESS , 返回者三种状态都是会提交offset, 阅读全文
摘要:
装饰者设计模式在业务中的实践 装饰者设计模式在顾名思义就是在原来逻辑上进行一层装饰逻辑,从而实现不通过if-else实现对优雅的对基础逻辑的扩充。在JDK源码中的InputStream中就有使用了装饰者的设计模式。从而实现通过BufferedInputStream、DataInputStream 阅读全文
摘要:
Mybatis实现分包定义数据库 背景 业务需求中需要连接两个数据库处理数据,需要用动态数据源。通过了解mybatis的框架,计划 使用分包的方式进行数据源的区分。 原理 前提: 我们使用mybatis都会有四个步骤 1:构建SqlSessionFactory 2:通过SqlSessionFacto 阅读全文
摘要:
JAVA日志发展史 第一阶段 2001年以前,Java是没有日志库的,打印日志全凭System.out和System.err 缺点: 产生大量的IO操作同时在生产环境中无法合理的控制是否需要输出 输出的内容不能保存到文件 只打印在控制台,打印完就过去了,也就是说除非你一直盯着程序跑 无法定制化,且日 阅读全文
摘要:
无状态状态机 一:前言 在项目中经常有一些工单,申请之类需要对状态进行流转。这种需求一般都是满足什么条件然后就翻转状态。这些流程结构相似得逻辑,感觉可以抽象处理。用一个通用得结构处理,可以让系统更加整洁,代码逻辑更加单一。 发现阿里开源一种,轻量级得无状态状态机得组件。仔细研究一下,确实很适 阅读全文
摘要:
git操作清单,问题答疑 一:git操作示意图 常见概念说明 Remote:远程分支 Repository:仓库 index:暂存区 workspace:工作空间 二:常见操作 1. 新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ 阅读全文
摘要:
时序图 一:简介 时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消 阅读全文