- 博客(24)
- 收藏
- 关注
原创 谈谈我对电商交易系统的理解
自我介绍:本人目前在一家独角兽电商公司做后端开发,负责电商交易链路相关功能开发,接触交易系统有一段时间了,现在谈谈我对交易系统的一些看法,算是对之前工作内容做下总结。我对交易系统总结:交易系统作为电商链路中的核心一个环节,承载着整个平台流量的变现。它依赖下游会员、促销、商品、支付等服务,并为上游横向业务提供交易功能的支撑。交易系统需要保证什么特性、或者说交易系统的难点在哪里?我这边总结了3个点:稳定性 支持业务扩展 数据一致性。本文我将从上面几个角度来谈...
2021-03-03 22:18:01 1975 2
原创 流程编排在电商系统中应用
什么是流程编排?流程编排就是将接口或者一段复杂的业务代码拆分成一个个节点/步骤然后聚合成一条执行链,流程编排适合复杂的业务系统,列如电商交易系统。名词流程: 执行处理的整个过程(通常可以理解为一个接口,如下单接口) 节点/步骤:一个完整的流程可以分为多个节点,每个节点可以完成单一的业务行为,比如下单流程中的限流、限购、拆单等。一个节点通常是一个类或者spring bean。 上下文:将节点返回的数据设置到上下文context中,让后续节点能够获取到相关数据(如拆单节点需要获取到初始化购物车节
2021-02-23 23:31:09 2180 3
原创 并发编程01—基础
一.并发概念1.并发常见的概念串行/并发/并行串行:多个任务,执行时一个执行完再执行另一个并发:多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换并行:是指多个处理器或者是多核的处理器同时处理多个不同的任务CPU调度:进程/线程由运行态切换到其他状态,或者由其他状态切换到运行态,即拥有时间片时间片:时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许...
2021-02-22 18:40:10 182
原创 spring aop学习笔记
JDK与CGLIB选择性 Spring Aop部分使用JDK动态代理或者CGLIB来为目标实现创建代理那么什么时候使用JDK,什么时候使用CGLIB?public AopProxy createAopProxy(AdvisedSupport config) throws AopConfigException { if (config.isOptimize() || config.is...
2019-01-28 21:06:04 246
原创 spring cloud ribbon客户端负载均衡
客户端负载均衡 spring cloud ribbon是一个基于HTTP和TCP的客户端负载均衡工具,基于NetFlix Ribbon实现。不同于服务端负载均衡硬件列如F5,软件列如Nginx,客户端负载均衡最大的特点服务清单所存储的位置。在客户端负载均衡中,所以客户端截点都维护着自己要访问的服务端清单,在spring cloud架构体系中,可以通过Eureka来获取服务清单。...
2019-01-22 14:34:55 283
原创 java 内存模型volatile实现与CPU缓存
CPU缓存架构 如下图所示是Intel的Skylake的CPU架构,我们可以看到缓存被分为L1、L2、L3这3层,CPU在运行中首先使用自己的寄存器,然后使用速度更快的L1缓存,其中:L1D缓存数据;L1I缓存指令;L1缓存和次快的L2同步数据;L2缓存和L3缓存同步数据(这里L2和L3按照内核数量做了等分,分给各个内核使用),我们可以简单地认为L3和内存同步数据。 CPU...
2019-01-22 13:26:20 589
原创 微信服务直达消息系统配置java
微信的服务直达功能需要用户在小程序消息推送系统里面配置配置url来接收微信端传过来的数据,配置里面需要我们验证是否是微信请求过来的数据,如果不加以验证会出现Token校验失败以下是我们服务端的代码,注意:代码中的token需要和配置的token一致,EncodingAESKey随机生成就可以了import org.apache.catalina.servlet4prev...
2018-08-18 20:16:38 344
原创 单例模式 多线程单例 双重锁定 枚举
1:单例模式public class Singleton { private static Singleton singleton = null; private Singleton(){ } public static Singleton getSingleton(){ if (singleton == null){ r...
2018-08-08 22:39:54 215
原创 NIO多路复用器Selector
selector简称多路复用器,它是JAVA NIO编程的基础简单来讲,selector会不断轮询注册在其上的channel,如果某个channel上面发生了读或者写事件,这个channel就会处于就绪状态,会被selector轮询出来,然后通过selectorKey可以获取就绪channel的集合,进行后续的io操作。 一个多路复用器selector可以同时轮询多个ch...
2018-08-07 22:29:54 1012
转载 mysql死锁查看
解除正在死锁的状态有两种方法:第一种:1.查询是否锁表show OPEN TABLES where In_use > 0;2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)show processlist3.杀死进程id(就是上面命令的id列)kill id 第二种:1.查看下在锁的事务 SELECT * FR...
2018-08-05 23:02:40 285
原创 dubbo四种负载均衡策略
1.随机模式。按权重设置随机概率。在一个截面上碰撞的概率较高,但调用越大分布越均匀2.轮询模式。按公约后的权重设置轮询比例。但存在响应慢的服务提供者会累积请求3.最少活跃调用数。响应快的提供者接受越多请求,响应慢的接受越少请求4.一致hash。根据服务提供者ip设置hash环,携带相同的参数总是发送的同一个服务提供者,若服务挂了,则会基于虚拟节点平摊到其他提供者上...
2018-08-02 22:05:10 18222 1
原创 java spi与dubbo spi区别
java spi与dubbo spi区别java spi :是上游产商给服务供应商提供的接口,供应商遵循接口契约提供自己的实现.。提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类
2017-05-08 07:48:40 7929 1
原创 当子类继承父类时,构造块,静态块,静态方法的执行顺序
当子类继承父类时,构造块,静态块,静态方法的执行顺序: 首先编写父类代码如下: public parent() { System.out.println("父类构造函数"); } static{ System.out.println("父类静态块"); } { System.out.println("父
2017-03-08 11:40:28 1638
原创 win7下实现Host与Ip的映射
win7下实现Host与Ip的映射 : 打开c盘目录:C:\Windows\System32\drivers\etc 找到hosts文件并且打开: 将ip填入到左边,host填入右边
2017-03-08 10:26:39 3176
原创 forward和redirect区别
forward和redirect区别:地址栏显示: forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.数据共享: forward:转
2017-02-26 19:11:04 231
原创 数据库中范式和反范式
数据库中范式和反范式在范式化的数据库中,每个事实数据会出现在并且只会出现一次。相反,在反范式化数据库中,可能会存储在多个地方。
2017-02-25 16:55:15 723
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人