自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记(11)商品上架与ES检索

学习笔记(11)商品上架与ES检索商品上架商品里有很多SKU:每个SKU有自己的销售属性:除此之外,每个商品有共用的商品属性:检索出来的界面标题是SPU+SKU都有查询商品的详情SPU的信息拿来筛选,SKU的信息拿来售卖SELECT pav.*,pa.`name` FROM `pms_product_attribute_value` pav LEFT JOIN `pms_product_attribute` pa ON pa.`id` = pav.`product_attrib

2020-12-05 09:46:56 744

原创 学习笔记(22)订单服务

学习笔记(22)订单服务@GetMapping("/create/order")public Order createOrder(Long skuId,Integer num,Integer memeberId){ Order order = new Order(UUID.randomUUID().toString().replace("-", ""), skuId, num, memeberId); // rabbitTemplate.convertAndSen

2020-12-03 16:37:52 474

原创 学习笔记(21)消息队列

学习笔记(21)消息队列上表有一处问题,其中rabbitMQ也支持分布式。本项目选rabbitMQ的原因:1 性能高 2 支持高级队列协议每个服务建立一个长TCP连接,连接里有通道。连接好处,一但服务器突然宕机,MQ能及时感知,不再给该服务器发消息。在MQ里开小MQ,每个Vhost是隔离的,相当于一个镜像,另一个镜像。direct是点对点模式,其它是发布订阅模式。headers和topic模式一样,topic决定发给谁由路由件决定,但headers模式由消息头里某个字段决定,性能低,还需要

2020-12-03 16:32:35 130

原创 学习笔记(17)社交登录

学习笔记(17)社交登录社交登录的步骤1)、给页面放一个社交登录按钮,点击地址是微博登录2)、用户只要授权通过了,会自动跳转到我们指定的http://www.gulishop.com/success,会给url后面带一个code=xxxxxxxx3)、拿到这个code发送请求换取access_token即可。4)、拿到access_token可以调用所有的开放api;https://open.weibo.com/apps/771268000/privilege可以将用户的信息都保存自己的网站

2020-12-03 16:29:54 244

原创 学习笔记(20)分布式事务

学习笔记(20)分布式事务分布式事务原因:服务太多,这个操作那个表,这个操作这个表,这个操作这个数据库,那个操作那个数据库,两个表一起联动,它要滚,那么它也跟着要滚干完活后把信息发到消息队列,容忍一段时间的不一致。分布式事务的两个原因;服务节点分布过多资源(db)阶段分散其中有个原因是因为微服务太多。太多团队一个人维护几个微服务,过度设计。微服务多就会引出分布式事务,这个时候不会建议任何一种分布式事务解决方案,而是将这些服务聚合成一个单机服务,使用数据库的本地事务。因为无论什么方案都会增加系

2020-12-03 16:28:25 83

原创 学习笔记(19)购物车

学习笔记(19)购物车购物车有两种情况:​ 在线购物车;​ 离线购物车;离线购物车:只要每次看购物车。都有一个user-key=uuid;如果这个user-key丢了,购物车就没了。如果我们要看购物车肯定会带上这个user-key的cookie;如果有就用自带的,没有就新建一个以后用这个。登录以后离线的和在线的合并了,并且清空了离线购物车里面的数据。京东怎么做购物车?​ 购物车有一个cookie对应的key关联,即使没有登录也有,登录以后进行购物车合并,合并完成后删

2020-12-03 16:26:47 401 1

原创 学习笔记(18)单点登录

学习笔记(18)单点登录核心:拿cookie标识用户是否登录。cookie为啥一会放在url地址,一会又传回来?因为不同域名下的cookie不能共享,需要把认证服务器下登陆过的标志要交给你,只能通过url地址方式放在后边,自己处理后保存。由于不同域名之间cookie没法共享认证服务器只能将自己旗下的登录过的用户的标识以url地址参数的方式交给另外一个域名。让这个域名对应的服务器,自己妥善保存这个cookie信息。之前社交登录查用户信息是通过acceaaToken查,accessToken如何传

2020-12-03 16:09:46 120

原创 学习笔记(16)多线程

学习笔记(16)多线程/** * 数据库(商品的基本信息表、商品的属性表、商品的促销表)和 es(info/attr/sale) * * 查加缓存 * 1、第一次查。肯定长。 * @return */public EsProduct productInfo2(Long id){ CompletableFuture.supplyAsync(()->{ return ""; },threadPoolExecutor).whenComplete((r,e

2020-12-03 16:04:37 73

原创 学习笔记(15)商品详情

学习笔记(15)商品详情商品详情是一个高并发访问的功能我们需要考虑缓存、考虑性能、考虑机器压力。京东商城:一个请求过去,所有数据都来了。​1)、服务拆分查询​ 查询商品基础信息​ 查询sku组合信息​ 点击sku组合查询商品基础信息+sku信息(特别是库存)​ 商品的所有属性信息​ 大数据不可以联表(数据太多)。​ 1)、禁用联表。​ 2)、MySQL表有极限。大数据表分表;2)、做好容错。​ 如果sku组合查询库

2020-12-03 16:01:04 299

原创 学习笔记(14)缓存

学习笔记(14)缓存问题:查询频率高,数据变化率是不是太快了,我们进缓存,缓存与数据库不同步。因此,存在一个悖论,到底是变化频率高还是变化频率低的进缓存。我们读取数据的时候:if(readLock){ Data data = readFromCache(); if(data == null){ data = readFromDb(); setToCache(data); }}写数据的时候if(writeLock){ Data data = xxxxx

2020-12-03 15:56:52 213

原创 学习笔记(13)分布式锁

学习笔记(13)分布式锁分布式锁以前的锁:进程内锁进程间锁需要使用分布式锁RPC解决进程间通信问题@AutowiredStringRedisTemplate redisTemplate //public Object obj = new Object();public void incr(){//这个锁大家都用一个。 //this当前对象。当前service对象。spring的组件是单例的。this一个。 //this相同,锁相同,锁ok

2020-12-03 15:49:07 244

原创 学习笔记(10)ES检索

学习笔记(10)ES检索es正排索引按照数据的id(索引),查出数据的内容倒排索引按照数据的内容锁定到数据的索引节点负载:主节点的角色既为master又为data,既要存储数据,又要计算该数据应该再哪一个分片上选主时暂停服务,保证可用性学习参考链接:https://www.cnblogs.com/zlslch/p/6440114.htmlhttps://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html@RunWit

2020-12-02 10:05:37 346

原创 学习笔记(9)事务

学习笔记(9)事务隐式传参怎么获取代理对象呢,AopContext.currentProxy()使用ThreadLocal保存了代理对象,因此((Service) AopContext.currentProxy()).B()就能解决。public void saveProduct(PmsProductParam productParam) { ProductServiceImpl proxy = (ProductServiceImpl) AopContext.currentProxy();

2020-12-02 10:03:37 111

原创 学习笔记(8)核心接口

学习笔记(8)核心接口核心接口—商品录入前的所有数据@CrossOrigin@RestControllerpublic class UmsMemberLevelController { @Reference MemberLevelService memberLevelService; /** * 查出所有会员等级 * @return */ @GetMapping("/memberLevel/list") public Comm

2020-12-02 10:02:10 253

原创 学习笔记(7)redis缓存

学习笔记(7)redis缓存缓存设计限流的理念是“多层限流、尽早限流”,缓存也是如此。缓存是利用“数据冗余”来阻挡海量请求的冲击,即缓存实际是同一份数据的不同形式拷贝。例如,数据库缓存Redis实际就是以key-value结构,来存储数据库中二维表结构的数据。Redis中的数据,实际就是数据库的一份冗余。在设计缓存时,需要明确一点:对于数据的访问,“读的次数”远远大于“写的次数”。缓存动态请求在秒杀活动期间,大量的用户会访问相同的商品。因此可以在秒杀开始前,提前在后台服务中将参与秒杀的商品缓存到内

2020-12-02 10:01:18 149 1

原创 学习笔记(6)数据表设计

学习笔记(6)数据表设计商品数据模型sku ( Stock Keeping Unit):库存量单位,即库存进出计量的基本单元,可以是件,盒,托盘单位。sku这是对于大型连锁超市DC(配送中心)物流管理的一个必要方法。现在已经被引申为产品统一编号的简称,每种产品均对应唯一的sku号。spu(Standard Product Unit):标准化产品单元,是商品信息聚合的最小单位,是一组可复用,易检索的标准化信息的集合,该集合描述了一个产品的特性。spu属性是公共属性,sku属性也称核心属性,即销售属性。

2020-12-02 09:59:59 175

原创 学习笔记(5)品牌查询实现

学习笔记(5)品牌查询实现品牌查询@Slf4j@Service@Componentpublic class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements BrandService { @Autowired BrandMapper brandMapper; @Override public PageInfoVo brandPageInfo(String keywor

2020-12-02 09:53:47 148

原创 学习笔记(4)商品查询实现

学习笔记(4)商品查询实现商品查询分页处理:@AllArgsConstructor@NoArgsConstructor@ApiModel@Datapublic class PageInfoVo implements Serializable { @ApiModelProperty("总记录数") private Long total; @ApiModelProperty("总页码") private Long totalPage; @ApiMode

2020-12-02 09:53:19 287

原创 学习笔记(3)登录实现

学习笔记(3)登录实现跨域请求invalid CORS:非法跨域请求。@CrossOrigin解决所谓跨域请求就是指:当前发起请求的域与该请求所指向的资源所在的域不一致(协议、域名、端口,任意一个不一样都会导致。浏览器要设置同源策略,正是因为浏览器要出于安全考虑。如果缺少了同源策略,浏览器很容易受到XSS和CSRF等攻击。(XSS与CSRF可以单独成为一个额外的知识点) 此时会导致一个域名下网页的操作就可以直接拿到另一个非同域名下网页的任何信息,或者一个网页可以随意请求到不同域名服务器下的接口数据。

2020-12-02 09:50:38 263

原创 学习笔记(2)基本配置以及高性能高可用数据库设计

学习笔记(2)基本配置以及高性能高可用数据库设计基本配置微服务设计gmall-api:抽取所有的bean、模型类、异常、通用类等gmall-common:抽取工具类,通用类等gmall_pms:商品管理系统gmall_ums:用户管理系统gmall_sms:营销管理系统gmall_admin_web: 后台管理系统对接前端的web项目gmall_api: 不包含mapper,impl,mapper应该是每个具体实现里的,impl应该是服务类的真正实现。api保留了接口,javabean。

2020-12-02 09:49:50 502

原创 学习笔记(1)分布式商城技术与业务概述

学习笔记(1)分布式商城技术与业务概述分布式商城主要面临两个问题,其一是面临高并发高可用的技术问题,另一是面临复杂的业务问题。下面依次简要分析两种问题。高并发高可用技术概述概念首先明确什么是分布式系统:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。分布式系统(distributed system)是建立在网络之上的软件系统。——《分布式系统原理与范型》集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

2020-12-02 09:41:33 477

原创 约瑟夫问题详解

约瑟夫问题详解问题约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。逻辑推导假设最后的幸存者编号为h,则num(1)=1;在由最后两个节点组成的环中,幸存者编号为num(2);…在由i-1个节点组成的环中,幸存者编号为num(i-1);在由i个节点组成的环中,幸存者编号为num(i);新旧表编号变化原表

2020-05-26 13:31:04 679

空空如也

空空如也

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

TA关注的人

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