- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 秒杀业务流程
流程说明:用户在点击秒杀按钮,选择规格尺寸,数量后,点击确认最终跳转到确认订单页。在点击"确认"按钮后,api会把相关参数封装后调用促销结算接口。1.促销这边首先做基本参数的校验判断,然后是单用户每次最大购买数量,单用户最大购买次数判断,秒杀活动时间,秒杀会员范围判断。2.促销这边判断完以后再做计算商品秒杀金额,并组装前端商品信息,是否包邮信息,并将这些信息返回给api.3.提交订单,调用订单系统保存订单接口。4.保存订单接口先做订单主信息,订单明细信息的校验。然后是做防重复提交,前端提交订
2021-03-04 12:12:07 2228 1
原创 促销中心购物车结算
**加入购物车逻辑:**1.传入CartDto,传入以后生成购物车id,购物id逻辑为:公司渠道店铺编码_会员账号.购物车id,如下:公司_渠道店铺编码_会员账号img2.购物车为空–>>新增购物车–>新增商品到购物车商品明细list,购物车不为空,更新购物车(更新商品数量)。然后重新插入mongoDB中,插入mongodb的对象结构如下,主要是购物车id,会员账号,公司,渠道,购物车明细。**购物车分组:**购物车api传入商品明细list给促销侧,促销侧根据传
2021-03-03 19:26:01 676 1
原创 spring容器的refresh方法分析
从这里进去:进入到refresh方法中,有10几个子方法,一个个讲。1.prepareRefresh,刷新前的准备工作,比如:设置容器启动时间,设置活跃状态为true,设置关闭状态为false,获取environment对象,并加载当前的属性值到environment对象中,准备监听器和事件的集合对象,默认为空的集合。2.obtainFreshBeanFactory,主要是创建容器对象(DefaultListableBeanFactory),生成BeanDefination,这个时候Default
2021-02-23 17:28:51 2665 1
原创 源码解析-HashMap put方法解析
put方法主要干这几件事情:1.算出key的hash值,key的hashcode的高低位异或算出来。2.若果散列表为空,则初始化散列表。3.算出散列表下标位置,(n - 1) & hash。4.散列表下标位置值为空,则把传入的参数封装成node节点设置到散列表下标位置。5.如果该散列表下标的值不为空,如果key和hash值与传入的值相等,则直接覆盖,如果散列表下标的节点是红黑树,则走红黑树的逻辑,相等则覆盖,不相等,则插入,具体红黑树逻辑后面会讲解。6.如果当前散列表下标的值与传入的值不
2021-02-08 09:50:43 420
原创 源码解析-HashMap扩容(红黑树单独讲)
扩容的场景这里不累赘讲了,比如第一次put的时候,还有就是插入完以后,也还要判断是否要扩容。直接看源码吧。1.扩容的方法如下,主要干这几件事情,第一件,算出新数组长度和新数组扩容阈值,创建新数组。第二件,扩容前的数组元素迁移到扩容后的数组当中去。主要分为单个元素的迁移,链表的迁移,红黑树的迁移(下期再讲),下面我们依次来看一下hashmap它是怎么玩的吧。首先我们看下新数组长度和新数组扩容阈值是怎么算出来的。这里也分为两种情况,第一种是数组已经初始化过了。第二种是hashMap里面的散列表为null的
2021-02-07 12:06:11 894 2
原创 源码解析-spring循环依赖源码解析
假设:A依赖B,B依赖A,A,B相互依赖.大体流程如下图所示:1.A先执行getBean(),getBean里面调用doGetBean方法,doGetBean再调用getSingleton(beanName)从缓存中获取实例,进入方法里面,先从一级缓存里面拿,一级缓存里面没有,再从二级缓存,二级缓存没有再从三级缓存里拿,刚开始BeanA进来,1,2,3级缓存都是没有的。getSingleton(beanName)返回null.缓存里面都没有,调用createBean创建实例。进入createB
2021-02-05 14:09:12 226
原创 源码解析-ReentrantLock源码解读
传入参数为true,是公平锁,false为非公平锁。我们这边解读源码以非公平锁为例来解读:compareAndSetState(0, 1)通过CAS设置state状态为1,如果设置成功则加锁成功,设置当前拥有独占访问权限的线程为当前访问线程。后面没有设置成功的线程执行else中的acquire(1)方法。进入acquire(1)方法中,这个方法中包含了线程入队,尝试拿锁,LockSupport的park()阻塞线程。首先我们先看下tryAcquire(arg)方法,这个方法会调用nonfair
2021-02-03 19:37:35 163
原创 Alibaba Nacos集群搭建与使用
Spring cloud Netflix现状如何:Spring Cloud Netflix Projects Entering Maintenance Mode(Spring Cloud Netflix项目进入维护模式)https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now以上组件将不再进行新功能的添加。所以spring-cloud-alibaba后面就越来越流行了,并加入了springCloud官方孵化器
2021-02-03 17:31:40 373
原创 线上问题-服务正常启动,但外部系统调用超时
其他系统调用我们这边服务报timeout超时。接口调用链的情况如下:通过调用链发现172.21.162.244这台机器上的服务有问题,怎么办?是不是fullGC了,查看gc情况,gc正常。这怎么搞 ,然后看下日志,发现日志如下,启动完了以后,但一直没有日志输出了,但如果正常启动,应该是有日志输出的哈。重启服务器,调用日志有了,调用方反馈业务正常了。额。。。。。。...
2021-02-03 09:14:28 1083
原创 线上问题-API依赖传递导致问题处理
采购包在发版前测试环境出现jdk版本问题:nested exception is java.lang.UnsupportedClassVersionError: javax/annotation/ManagedBean : Unsupported major.minor version 52.0看问题是jdk1.7环境下运行jdk1.8的依赖包,搜索发现这个ManagedBean是javaee7里面的(javaee是一种标准规范,tomcat会实现其规范),tomcat实现javaee7规范依赖的是jd
2021-02-03 09:07:54 393
原创 线上问题-Full GC问题排查
问题描述:【云集】Dubbo Rpc调用异常(第1次发送):项目:agent-admin类:com.yunji.oms.base.api.supplier.ISupplierService方法:validLogin失败次数:131成功次数:1688平均耗时:744provider:172.16.4.13consumer:172.16.4.19时间:2018-12-06 17:50:30Agentadmin调用异常,去线上服务器看agentadmin日志,日志出现Full GC.问题分
2021-02-03 09:01:24 546
原创 线上问题-OMS订单履约系统调用服务接口超时
1.现象: OMS订单履约系统调用供应链基础服务接口超时(图1) 图1 2.调用链查看: 供应链基础服务这段时间内存在一定的接口超时(图2) 图2根据以往经验首先想到是服务有频繁FULLGC,查看服务是否频繁fullgc进入jdk bin目录下执行 ./jstat -gccause &
2021-02-03 08:55:58 873 1
原创 线上问题-小店价格服务调用不通(arthas排查)
问题描述:小店价格服务调用没有返回值,没有异常信息。首先初步怀疑是这个方法有问题:这个外部方法中有两个方法,一个一个监控看。首先监控insertPriceApplication(pv)这个,结果如下图,没有问题。然后监控另外一个方法pushApproval(pv),结果如下,报NoSuchMethodError().说是2604行有问题,那就到2604行去看。发现是一个对象(request)设值.然后再看这个对象(request),看它的加载情况。结果如下:从上面的结果可以看出
2021-02-03 08:47:05 172
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人