# coupon **Repository Path**: yunwolf/coupon ## Basic Information - **Project Name**: coupon - **Description**: 优惠券系统 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 优惠券系统 ~~~ 优惠券模板,分发,结算系统可以做实际系统开发参考使用, 慕课网视频学习项目 ~~~ ## 技术架构 - spring cloud - maven - mysql - jpa - redis ## maven - release是发布版(稳定版) - snapshot是开发版 - dependency 依赖管理 ### 坐标 - 程序的依赖 - groupId/artifactId/version ### 常用命令 mvn -v 查看版本号 mvn compile 编译 mvn test 测试 mvn package 打包 mvn clean 清理环境 mvn install 安装 ### 相关特性 - 依赖传递,引用的jar包中引用了其他的jar就会被间接引用 - 排除依赖,可以使用exclusions排除不想引用的jar包 ## redis ### redis支持的数据类型 string List hash set sortedSet ### redis的特性 redis的所有操作都是原子性的(redis6改成了多线程) redis的key可以设置过期时间 redis支持两种持久化快照:rdb,aof ### redis使用时注意的问题 #### redis速度快的原因 完全基于内存的操作,数据结构简单,单线程没有切换,多路复用IO模型 #### 缓存穿透和缓存雪崩的问题 给key随机设置不同的过期时间,避免大量的数据失效造成的缓存雪崩 ### redis的多路复用模型 不做解释 ## mysql ### mysql的索引 - B树和B+树:b是平衡的意思,B树是一种多路平衡查找树 - B+树是B树的变种,非叶子节点不存储数据只存储索引,mysql使用的是B+树 - mysql的聚簇索引:每个innodb都拥有一个索引称为聚簇索引,一般来说就是主键 如果没有主键会选择一个非空的字段生成聚簇索引, 如果没有非空字段就会隐式的创建一个自增的列来创建聚簇索引 - 辅助索引的两次查找(除了主键索引就是辅助索引) 辅助索引节点存储的是主键值,然后通过主键值去查找行记录 - 唯一索引 - 单列索引 - 多列索引 在多列上设计索引需要考虑索引顺序 ## jap jpa是hibernate的一个抽象面向接口编程 ## 数据库连接池 管理数据库的连接 资源池设计模式 ## kafka消息发布订阅系统 类似MQ --------------------------------------------------------------- 可靠性 高拓展 高性能 Topic brokers groups 分组 partition分区 ~~~ 启动zookeeper服务 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 启动kafka服务 bin/kafka-server-start.sh config/server.properties 创建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic my-topic 查看topic bin/kafka-topics.sh --list --zookeeper localhost:2181 启动生产者 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning 启动消费者 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic ~~~