java项目 畅购商场 商品管理

本文介绍了在Java项目畅购商场中如何实现商品管理,包括使用snowflake算法生成分布式ID,商品的新增、修改、审核、上下架、删除与还原功能。详细讲解了UUID、Redis和snowflake三种分布式ID生成方案的优缺点,并展示了使用snowflake算法的代码实现。
摘要由CSDN通过智能技术生成

第4章 商品管理
学习目标
能够使用开源算法snowflake生成分布式id
完成新增和修改商品功能
完成商品审核和上下架功能
完成删除与还原商品功能

  1. 分布式ID生成解决方案
    1.1 分布式ID生成解决方案
    1.1.1 UUID
    常见的方式。可以利用数据库也可以利用程序生成,一般来说全球唯一。

优点:

1)简单,代码方便。

2)生成ID性能非常好,基本不会有性能问题。

3)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应对。

缺点:

1)没有排序,无法保证趋势递增。

2)UUID往往是使用字符串存储,查询的效率比较低。

3)存储空间比较大,如果是海量数据库,就需要考虑存储量的问题。

4)传输数据量大

5)不可读。

1.1.2 Redis
当使用数据库来生成ID性能不够要求的时候,我们可以尝试使用Redis来生成ID。这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作 INCR和INCRBY来实现。

优点:

1)不依赖于数据库,灵活方便,且性能优于数据库。

2)数字ID天然排序,对分页或者需要排序的结果很有帮助。

缺点:

1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。

2)需要编码和配置的工作量比较大。

3)网络传输造成性能下降。

1.1.3 开源算法snowflake
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0

在这里插入图片描述

我们在《畅购》系统中采用的就是开源算法snowflake

1.2 snowflake快速入门
1.2.1 快速入门
(1)新建工程,将资料/工具类下的IdWorker.java拷贝到工程中。

(2)编写代码

        IdWorker idWorker=new IdWorker(1,1);for(int i=0;i<10000;i++){
   
            long id = idWorker.nextId();
            System.out.println(id);
        }

1.2.2 配置分布式ID生成器
(1)IdWorker.java拷贝到changgou_common工程com.changgou.util包中

(2)changgou_service_goods的application.yml添加配置

workerId: 0
datacenterId: 0
(3)修改GoodsApplication,增加代码

    @Value("${workerId}")
    private Integer workerId;
​
    @Value("${datacenterId}")
    private Integer datacenterId;
​
    @Bean
    public IdWorker idWorker(){
        return new IdWorker(workerId,datacenterId);
    }
2 新增和修改商品
2.1 概念与表结构分析
2.1.1 SPU与SKU概念
SPU = Standard Product Unit  (标准产品单位)

概念 : SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

通俗点讲,属性值、特性相同的货品就可以称为一个 SPU

例如:华为P30 就是一个 SPU

SKU=stock keeping unit( 库存量单位)

SKU 即库存进出计量的单位, 可以是以件、盒、托盘等为单位。

SKU 是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。

在服装、鞋类商品中使用最多最普遍。

例如:华为P30 红色 64G 就是一个 SKU

2.1.2 表结构分析
tb_spu 表 (SPU表)

字段名称	字段含义	字段类型	字段长度	备注
id	主键	VARCHAR	 	 
sn	货号	VARCHAR	 	 
name	SPU名	VARCHAR	 	 
caption	副标题	VARCHAR	 	 
brand_id	品牌ID	INT	 	 
category1_id	一级分类	INT	 	 
category2_id	二级分类	INT	 	 
category3_id	三级分类	INT	 	 
template_id	模板ID	INT	 	 
freight_id	运费模板id	INT	 	 
image	图片	VARCHAR	 	 
images	图片列表	VARCHAR	 	 
sale_service	售后服务	VARCHAR	 	 
introduction	介绍	TEXT	 	 
spec_items	规格列表	VARCHAR	 	 
para_items	参数列表	VARCHAR	 	 
sale_num	销量	INT	 	 
comment_num	评论数	INT	 	 
is_marketable	是否上架	CHAR	 	 
is_enable_spec	是否启用规格	CHAR	 	 
is_delete	是否删除	CHAR	 	 
status	审核状态	CHAR	 	 
tb_sku 表(SKU商品表)

字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值