项目复习笔记
文章平均质量分 55
OOPfaker
这个作者很懒,什么都没留下…
展开
-
SpringCloud商城day14 秒杀异步下单-2021-10-27
一. 秒杀商品存入缓存1. 客户访问-> seckill服务查询mysql-> seckill_goods表-> 缓存数据到MySQL-> 一是缓解高并发下数据库的查找压力, 二是利用redis的原子性操作避免超卖问题.2.新建服务changgou_service_seckill(1)添加依赖: common-db/ eureka/ order-api/ seckill-api/ goods-api/ amqp/ oauth2(2)添加changgou_servi..原创 2021-10-27 11:04:35 · 333 阅读 · 0 评论 -
SpringCloud商城day11 订单-2021-10-24
一. 订单渲染结算页1.用户收件地址查询: 登录人名称-> 收件人地址信息-> 表tb-address(1) com.changgou.user.service.impl.AddressServiceImpl类/*** * 收件地址查询 * @param username * @return */@Overridepublic List<Address> list(String username) { Address address = new A..原创 2021-10-24 18:36:58 · 226 阅读 · 0 评论 -
SpringCloud商城day14 订单处理-2021-10-26
一. RabbitMQ延时消息-> 订单处理1. 流程: 调用微信支付api-> 查看订单状态-> 未支付则调用关闭订单api-> 修改订单状态为已关闭order-> 回滚库存goods-> 已支付则做补偿操作(修改订单状态和记录日志)2. 核心: 死信队列-> provider发送的消息不会被立刻消费-> 设定TTL后被consumer消费3. 创建订单时, 发送延迟消息为订单号-> 系统在限定时间内取出消息-> 查询订单支付转态.原创 2021-10-26 21:36:28 · 493 阅读 · 0 评论 -
SpringCloud商城day13 微信扫码支付-2021-10-26
一. 调用微信支付api-开发文档1. Native支付-> JAVA SDK/DEMO-> 申请微信支付(公众号/提交资料/开户成功/在线签署/)-> 获取appid唯一标识/ mch_id商户号 / key商户秘钥2. 调用思路: 组装API参数-> XML方式发送POST请求-> 到微信URL接口-> 微信以XML方式响应-> 畅购根据结果(支付URL)生成qrcode-> 判断订单状态3. 统一下单: 微信SDK: com.github..原创 2021-10-26 19:16:14 · 442 阅读 · 0 评论 -
SpringCloud商城day12 分布式解决方案-2021-10-24
一. 本地事务和分布式事务1. ACID: 操作执行原子性(atomicity), 数据库状态一致性(consistency),多线程并发隔离性(isolation),durability(修改数据持久性)2. @Transaction: 只在单体服务中有效, 即本地事务3. 分布式事务: 事务参与者, 服务器,事务管理器在不同节点的不同应用-> 数据一致性 (1) 早期单体服务: 不涉及服务间的调用, 而是服务内操作到访问多个数据库资源 (2) 一...原创 2021-10-25 18:53:31 · 220 阅读 · 0 评论 -
SpringCloud商城day10 购物车-2021-10-18
一. SpringSecurity权限控制1. 用户授权-> 获取令牌-> 网关鉴权-> 登录角色的权限控制-> JWT自定义数据(角色+权限)-> 访问资源微服务-> 判断令牌的数据-> 普通用户/管理员用户(1). 用户权限加载: com.changgou.user.oauth.config.UserDetailsServiceImpl.java//创建User对象String permission = "salesman, accountan原创 2021-10-18 17:17:02 · 349 阅读 · 0 评论 -
SpringCloud商城day09 用户认证 -2021-10-17
一.用户认证分析: 登录1. 单点登录: 一处登录, 处处登录SSO(single sign on)(1) 流程: 用户请求 -> 微服务网关 -> 用户/订单/秒杀微服务 -> 访问认证系统 -> 查询/存储在Redis(2) 用户认证的框架: Apache Shiro CAS Spring security2. 第三方登录: 用户第三方已有账号密码 -> 完成本系统的注册登录(1) 第三方认证通用标准: OAUTH协议 -&.原创 2021-10-17 21:28:41 · 322 阅读 · 1 评论 -
SpringCloud商城day08 商品详情页-2021-10-14
一. Thymeleaf入门1. thymeleaf: 页面静态化技术 -> 提前生成静态资源 -> 用户访问时加载到浏览器-> 提高访问效率减少占用资源Thymeleaf is a modern server-side Java template engine for both web and standalone environments.2. SpringMVC整合thymeleaf模块 -> 六种模板3. 创建springboot工程 -> 依赖sta.原创 2021-10-14 21:15:17 · 178 阅读 · 0 评论 -
SpringCloud商城day07 商品搜索-2021-10-12
一.关键词查询1. 实现思路:2. search微服务查询接口: com.changgou.search.service.SearchServiceImpl.java(1) Map封装返回结果: 分页功能的实现 Map封装查询条件: 关键字 / 品牌 / 规格 / 销量 / 价格区间..(2) @Service public class SearchServiceImple implemtns SearchServiec{ //注入ES模板类完成.原创 2021-10-12 22:41:33 · 167 阅读 · 0 评论 -
SpringCloud商城day06 数据同步解决方案-2021-10-11
一.基于Canal, 开发数据监控微服务1. Canal: 阿里开源, java开发, 监控数据库 -> 双机房数据同步 (1) 工作原理: canal -> 伪装成mysql备份机 -> mysql数据改变 -> 数据写入 binary log -> 日志发送到Canal -> canal提取mysql更新数据(2) Canal 环境部署 - LINUX虚拟机:1) mysql开启binlog模式, 值ON已开启, OFF未开启 SH...原创 2021-10-12 00:20:46 · 396 阅读 · 0 评论 -
SpringCloud商城day05 网站首页广告高可用 - 2021-10-10
一. Lua语言1. C编写脚本语言2. 作用:灵活嵌入应用 -> 扩展和定制功能3. 不提供库, 不适合作为开发独立应用的语言4. 即时编译: JIT项目5. 特点: (1) 面向过程 procedure-oriented (2) 函数式编程 functional-programming (3) 自动内存管理: 通用类型的表table -> 实现数组, 哈希表, 集合, 对象 (4) 语言内置模式匹配 (5) 闭包 (6)...原创 2021-10-10 18:14:48 · 133 阅读 · 0 评论 -
SpringCloud商城day04 商品管理-2021-10-09
一. 开源算法Snowflake生成分布式id1. 原因: 数据量庞大 ->分库分表 -> 数据库多实例部署 -> 唯一的全局ID2. UUID: universe unique ID -> 32位长度字符串(1) 缺点: 无排序, 无递增; 字符串存储查询效率低; 存储量大; 传输数据量大; 不可读3. Redis: (1) 单线程特点 -> 原子性 -> INCR / INCRBY (2) 优点:...原创 2021-10-09 12:00:39 · 200 阅读 · 0 评论 -
SpringCloud商城day03 网关微服务和加密算法-2021-09-29
一. 网关微服务Gateway1. 没有网关的问题: (1) 复杂性: 客户端多次请求不同微服务 (2) 跨域请求 (3) 每个微服务独立认证 (4) 难以重构. 合并/拆分服务, 直接通信复杂2. 作用: 授权 / 限流 / 登录 / log日志3.优点: (1) 安全 (2) 易监控 (3) 统一认证授权 (4) 减少客户端与微服务交互次数4. 实现技术: (1) nginx(engine x) (2) netflix(zuul) (...原创 2021-09-29 22:03:13 · 344 阅读 · 0 评论 -
SpringCloud商城day02 分布式文件存储解决方案-2021-09-29
1. CORS: cross-original resource sharing. 跨域资源共享 (1) http://192.168.200.128:9011/brand https://192.168.200.128:9011/brand(协议不同, 跨域) https://192.168.200.129:9011/brand(IP不同, 跨域) https://192.168.200.128:9012/brand(端口号不同, 跨域) http://192...原创 2021-09-29 20:05:28 · 244 阅读 · 0 评论