自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 商品入库异步任务实现

之前做异步的时候通常都是用消息队列来做,今天使用spring的异步任务首先异步任务需要定义线程池,spring异步提供了默认线程池,但是线程池通常都是自己定义,这样更能符合业务需求。将自定义线程池注入到sprin中,并设置异步任务异常捕获处理器package com.imooc.ecommerce.config;import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.springframe

2021-11-09 23:50:58 1085

原创 一次索引优化

场景是用户地址存储在mysql中,当一个用户有多个地址的时候在表中不是连续的比如表结构此时我往数据库里添加了36万的数据,此时我想找到111号用户的所有地址用了0.251秒看一下走了全表扫描此时我认为可以在userId上加上普通索引。此时再看一下速度 已经缩短了一半的时间是走了索引的.这样其实也算是一个小优化了,实际情况下查询用户地址的情况还是比较多的。...

2021-11-07 22:20:12 263

原创 基于mysql实现乐观锁

最近开发微服务商城用户账户余额扣减发生的问题,比如说一个用户的账户同时扣减买东西的时候在高并发情况下会出现余额少扣的情况。其实解决方案可以使用悲观锁去只让一个线程去实现,但是我想做并发量并不是很大感觉极限情况下最多也就10qps 悲观锁阻塞线程其实有点浪费性能,所以采用了乐观锁在并发量不高的情况下即保证余额的安全性又可以保证用户大概率情况下可以实现扣减操作这部分代码就是serice层方面具体业务逻辑就是先查询用户余额有足够的余额扣减,在进行扣减乐观锁用数据库实现很简单 cas 就是记录.

2021-11-03 19:54:48 1116

原创 一个编码习惯的学习

今天在学习微服务的时候,慕课网的springcloud alibaba 老勤讲的,学习了一下编码和业务的一点思想定义实体类的时候在用户业务层面使用的时候需要单独定义VO类优点是:一个实体类最好是只用作一个功能比如说我们定义于数据库交互的实体类,只用作于数据库交互,我认为应该是要单一职责。其次是定义到一个公共的微服务的时候可以引入这个公共的微服务,其他微服务就可以使用了而不是引入整个业务曾的微服务。再一个是我们做了权限验证的时候在获取用户这些重要的信息时候我们不能直接用前端传过来的数据

2021-10-31 22:31:12 128

原创 用redis做购物车

此设计方案是模仿京东购物车,京东的购物车有一个特点,在不登陆的情况下加入购物车的信息会在你登陆的时候合并到一起。但是淘宝是只有在登录的情况下才能加入购物车。所以京东是怎么做的呢?我的想法是在redis中存储一个自增id也可以是唯一id来代表这个请求所做的添加购物车的行为,并将其存储到他的cookie中,等到登录的时候从其中获取cookie中id如果在未登录的情况下添加购物车那么就将其合并去重就可以实现了。但是京东的实现肯定要比这复杂的多,这只是一个简单思路。简单画了两个图 第一个是登录.

2021-10-30 21:58:29 2240

原创 spring中的Transactional

@Transaction注解的参数常用的属性propagation :这个属性其实是相对于调用者来设置的而不是方法里面的被调用者REQUIRED :支持当前事务,如果事务不存在那么就创建一个事务。 同时也是事务的默认值SUPPORTS: 支持当前事务,如果没有事务那么就当成没有事务进行MANDATORY: 支持当前事务如果不存在那么就抛出异常REQUIRES_NEW:创建一个新事物,如果当前有事务存在那么就暂停当前事务NOT_SUPPORTED :以非事务的方式进行...

2021-10-30 17:08:38 651

原创 浏览器点击量业务实现

实现代码

2021-10-27 20:41:59 325

原创 springcache简单用法

springcache是spring3.1发布的使用注解去操作缓存的方法,解耦业务代码和缓存代码,在方法上使用注解就可以获取到缓存结果。注意: springcache只支持string类型不支持其他类型 springcache只支持单表查询不支持多表查询常用注解@CacheConfig(cacheNames = {"user"})@Cacheable(key = "#id")@CachePut(key = "#obj.id")@CacheEvict...

2021-10-25 20:47:33 399

原创 PriorityQueue源码分析

PriorityQueue源码分析//默认初始容量是11private static final int DEFAULT_INITIAL_CAPACITY = 11;​transient Object[] queue; // non-private to simplify nested class access//容量大小private int size = 0;//比较器private final Comparator<? super E> comparator;/

2021-10-23 19:09:55 81

原创 记录一次springcloud alibaba的排错问题

真是因为少写了一个return导致排查了好长时间。最近在慕课网上学习springcloud alibaba,在搭建gateway路由的时候出现了路由转发转发不到的情况。大概背景是,我在nacos上写了个配置,是关于gateway路由的配置,写了一个自定义局部过滤器,这个过滤器的主要作用就是判断一下是否有权限去调用另一个微服务。大体原理就是路径 http://localhost:9000/test/....回去判断路径中是否有/test这个标识如果有可以接着走过滤器链,如果没有返回401没有权

2021-10-21 12:19:42 122

原创 java转JSON值为null的对象不会显示在JSON字符串中

场景大概是这样的,我一个同学做了一个公司的笔试题大概是这样问最后输出什么其实我也头回见这样的笔试题我只是个还没见过市面的大四学生,下面的都好理解但是new User()这个输出我确实没太听说过然后就控制台测试了一下输出是这样的,为什么User里的属性会设置到里面?我起初以为是静态内部类的原因 然后我就想这也没调用get方法怎么会获得呢然后证明了一下写了一个外部类发现如果给属性赋初值的话也会设置到里面所以就转移到了toJSON方法确实也是在这里面利用反射调用的get..

2021-09-28 23:23:20 3048

原创 单核内存解决topk问题

原文 : 秒杀TopK问题(附代码) - 知乎题目给定一个很大的文件(1T?10T),里面每一行存储着一个用户的ID(IP?IQ?),你的电脑只有2G内存,请找出其中出现频率最高的十个ID 介绍TopK问题是近年来实战考的最多最多最多的问题了 其实答案也比较简单,…https://zhuanlan.zhihu.com/p/107555849topk问题其实有很多场景很多方法这种是单核固定内存就是将文件分为多个小文件,维护一个小顶堆,读取每个文件,使用hashmap计数这样可以不用一下全部都读入到

2021-09-28 19:55:37 109

原创 rocketmq实现顺序消费

顺序消费的使用场景是某些业务必须同步完成的时候可以使用看一下官网的解释其实很好理解就是这一个业务线的数据都发到同一个queue中并且使用同一个消费者来消费,这样相对于每个queue就是有序的把官网的代码写了一遍理解了一下生产者代码意思就是使用设定的规则让这系列的业务消息都发送到在一个队列中package com.qiqi.mq;import org.apache.rocketmq.client.producer.DefaultMQProducer;impor...

2021-09-27 22:27:53 402 1

原创 写博客的原因

学习java断断续续很长时间了,但是一直没有完整的总结一些东西,所以想把学习的总结感悟写下来,也可以在以后遇到某个场景或者复习的时候可以有东西看

2021-09-27 21:45:30 80 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除