<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Oppuser的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Oppuser</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Oppuser]]></copyright><item><title><![CDATA[CSD开发日记(一)-20220517]]></title><link>https://blog.csdn.net/Oppuser/article/details/124831052</link><guid>https://blog.csdn.net/Oppuser/article/details/124831052</guid><author>Oppuser</author><pubDate>Tue, 17 May 2022 22:20:31 +0800</pubDate><description><![CDATA[1. 即时UI设计共享:即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款在线可协作的UI设计工具，是可协作的在线sketch、国内版figma，拥有海量的设计资源与素材，支持导入sketch格式的源文件。支持创建交互原型、获取设计标注、快速切图、团队协作等工作。https://js.design/f/acH1v2?p=alEZRpLAkE

2. SQL文件: 

1). 分库, 垂直分表, 不水平分表. 四个库: system, tenant, player, resul...]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day14 秒杀异步下单-2021-10-27]]></title><link>https://blog.csdn.net/Oppuser/article/details/120988927</link><guid>https://blog.csdn.net/Oppuser/article/details/120988927</guid><author>Oppuser</author><pubDate>Wed, 27 Oct 2021 11:04:35 +0800</pubDate><description><![CDATA[一. 秒杀商品存入缓存

1. 客户访问-&gt; seckill服务查询mysql-&gt; seckill_goods表-&gt; 缓存数据到MySQL-&gt; 一是缓解高并发下数据库的查找压力, 二是利用redis的原子性操作避免超卖问题.

2.新建服务changgou_service_seckill


(1)添加依赖: common-db/ eureka/ order-api/ seckill-api/ goods-api/ amqp/ oauth2
(2)添加changgou_servi..]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day14 订单处理-2021-10-26]]></title><link>https://blog.csdn.net/Oppuser/article/details/120978659</link><guid>https://blog.csdn.net/Oppuser/article/details/120978659</guid><author>Oppuser</author><pubDate>Tue, 26 Oct 2021 21:36:28 +0800</pubDate><description><![CDATA[一. RabbitMQ延时消息-&gt; 订单处理

1. 流程: 调用微信支付api-&gt; 查看订单状态-&gt; 未支付则调用关闭订单api-&gt; 修改订单状态为已关闭order-&gt; 回滚库存goods-&gt; 已支付则做补偿操作(修改订单状态和记录日志)

2. 核心: 死信队列-&gt; provider发送的消息不会被立刻消费-&gt; 设定TTL后被consumer消费

3. 创建订单时, 发送延迟消息为订单号-&gt; 系统在限定时间内取出消息-&gt; 查询订单支付转态
.]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day13 微信扫码支付-2021-10-26]]></title><link>https://blog.csdn.net/Oppuser/article/details/120978611</link><guid>https://blog.csdn.net/Oppuser/article/details/120978611</guid><author>Oppuser</author><pubDate>Tue, 26 Oct 2021 19:16:14 +0800</pubDate><description><![CDATA[一. 调用微信支付api-开发文档

1. Native支付-&gt; JAVA SDK/DEMO-&gt; 申请微信支付(公众号/提交资料/开户成功/在线签署/)-&gt; 获取appid唯一标识/ mch_id商户号 / key商户秘钥

2. 调用思路: 组装API参数-&gt; XML方式发送POST请求-&gt; 到微信URL接口-&gt; 微信以XML方式响应-&gt; 畅购根据结果(支付URL)生成qrcode-&gt; 判断订单状态

3. 统一下单: 微信SDK: com.github..]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day12 分布式解决方案-2021-10-24]]></title><link>https://blog.csdn.net/Oppuser/article/details/120943298</link><guid>https://blog.csdn.net/Oppuser/article/details/120943298</guid><author>Oppuser</author><pubDate>Mon, 25 Oct 2021 18:53:31 +0800</pubDate><description><![CDATA[一. 本地事务和分布式事务

1. ACID: 操作执行原子性(atomicity), 数据库状态一致性(consistency),多线程并发隔离性(isolation),durability(修改数据持久性)

2. @Transaction: 只在单体服务中有效, 即本地事务

3. 分布式事务: 事务参与者, 服务器,事务管理器在不同节点的不同应用-&gt; 数据一致性

    (1) 早期单体服务: 不涉及服务间的调用, 而是服务内操作到访问多个数据库资源

    (2) 一...]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day11 订单-2021-10-24]]></title><link>https://blog.csdn.net/Oppuser/article/details/120931008</link><guid>https://blog.csdn.net/Oppuser/article/details/120931008</guid><author>Oppuser</author><pubDate>Sun, 24 Oct 2021 18:36:58 +0800</pubDate><description><![CDATA[一. 订单渲染结算页

1.用户收件地址查询: 登录人名称-&gt; 收件人地址信息-&gt; 表tb-address


(1) com.changgou.user.service.impl.AddressServiceImpl类
/***
 * 收件地址查询
 * @param username
 * @return
 */
@Override
public List&lt;Address&gt; list(String username) {
    Address address = new A..]]></description><category></category></item><item><title><![CDATA[(简单)SPU和SKU的区别-2021-10-24]]></title><link>https://blog.csdn.net/Oppuser/article/details/120937827</link><guid>https://blog.csdn.net/Oppuser/article/details/120937827</guid><author>Oppuser</author><pubDate>Sun, 24 Oct 2021 18:11:57 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[(自用)Zookeeper复习-2021-10-20]]></title><link>https://blog.csdn.net/Oppuser/article/details/120860594</link><guid>https://blog.csdn.net/Oppuser/article/details/120860594</guid><author>Oppuser</author><pubDate>Wed, 20 Oct 2021 14:44:03 +0800</pubDate><description><![CDATA[一. 安装:


(1) docker-compose.yml 
version: "3.1"
services:
  zk:
   image: daocloud.io/daocloud/zookeeper:latest
   restart: always
   container_name: zk
   ports:
     - 2181:2181

(2) 进入zk容器内部,进入bin目录执行下面的zk客户端命令
    docker ps -&gt; docker exec -it 容器id b]]></description><category></category></item><item><title><![CDATA[(自用)RabbitMQ简单复习-2021-10-19]]></title><link>https://blog.csdn.net/Oppuser/article/details/120851031</link><guid>https://blog.csdn.net/Oppuser/article/details/120851031</guid><author>Oppuser</author><pubDate>Tue, 19 Oct 2021 22:20:44 +0800</pubDate><description><![CDATA[RabbitMQ简单复习:


一.架构:

1. Publisher连接-&gt; Broker(Server)-&gt; VHost-&gt;Connection-&gt; channel-&gt;Exchange-&gt;Queu&lt;-Exchange&lt;-channel&lt;- VHost&lt;- Broker&lt;- Consumer


(1) RPC: remote process call远程调用
(2) 依赖: amqp-client
(3) JAVA客户端口: 5672;.]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day10 购物车-2021-10-18]]></title><link>https://blog.csdn.net/Oppuser/article/details/120826940</link><guid>https://blog.csdn.net/Oppuser/article/details/120826940</guid><author>Oppuser</author><pubDate>Mon, 18 Oct 2021 17:17:02 +0800</pubDate><description><![CDATA[一. SpringSecurity权限控制

1. 用户授权-&gt; 获取令牌-&gt; 网关鉴权-&gt; 登录角色的权限控制-&gt; JWT自定义数据(角色+权限)-&gt; 访问资源微服务-&gt; 判断令牌的数据-&gt; 普通用户/管理员用户


(1). 用户权限加载: com.changgou.user.oauth.config.UserDetailsServiceImpl.java


//创建User对象
String permission = "salesman, accountan]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day09 用户认证 -2021-10-17]]></title><link>https://blog.csdn.net/Oppuser/article/details/120807819</link><guid>https://blog.csdn.net/Oppuser/article/details/120807819</guid><author>Oppuser</author><pubDate>Sun, 17 Oct 2021 21:28:41 +0800</pubDate><description><![CDATA[一.用户认证分析: 登录


1. 单点登录: 一处登录, 处处登录SSO(single sign on)


(1) 流程: 用户请求 -&gt; 微服务网关 -&gt; 用户/订单/秒杀微服务 -&gt; 访问认证系统 -&gt; 查询/存储在Redis
(2) 用户认证的框架:
    Apache Shiro
    CAS
    Spring security

2. 第三方登录: 用户第三方已有账号密码 -&gt; 完成本系统的注册登录


(1) 第三方认证通用标准: OAUTH协议 -&.]]></description><category></category></item><item><title><![CDATA[(自用)Mybatis-plus简易了解-2021-10-15]]></title><link>https://blog.csdn.net/Oppuser/article/details/120780241</link><guid>https://blog.csdn.net/Oppuser/article/details/120780241</guid><author>Oppuser</author><pubDate>Fri, 15 Oct 2021 21:41:23 +0800</pubDate><description><![CDATA[一. 测试基本准备:


1. Springboot项目: 快速创建Spring Initializer
2. 导入依赖: starter 
3. yml配置: 
    (1). dataSource四大属性
    (2). mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout. StaOutImpl  #开启SQL语句打印
    
4. 实体类: @Data  //lombok注解 -&gt; 类的setter]]></description><category></category></item><item><title><![CDATA[记录第一次使用代码生成器 + SwaggerUI遇到的问题-2021-10-15]]></title><link>https://blog.csdn.net/Oppuser/article/details/120787966</link><guid>https://blog.csdn.net/Oppuser/article/details/120787966</guid><author>Oppuser</author><pubDate>Fri, 15 Oct 2021 18:08:18 +0800</pubDate><description><![CDATA[一.记录第一次使用代码生成器CodeTemplate+ SwaggerUI遇到的问题:

1. 使用Code-template工具:

 (1) 工具类介绍



 (2) 生成的代码结构:



 (3) swagger.json 规范文件:





2. 使用Node.js+Swagger-UI访问



 (1) 部署Swagger-ui环境:



    (2) 启动命令:

    (3) 注意配置环境变量:

    (...]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day08 商品详情页-2021-10-14]]></title><link>https://blog.csdn.net/Oppuser/article/details/120770139</link><guid>https://blog.csdn.net/Oppuser/article/details/120770139</guid><author>Oppuser</author><pubDate>Thu, 14 Oct 2021 21:15:17 +0800</pubDate><description><![CDATA[一. Thymeleaf入门

1. thymeleaf: 页面静态化技术 -&gt; 提前生成静态资源 -&gt; 用户访问时加载到浏览器-&gt; 提高访问效率减少占用资源

Thymeleaf is a modern server-side Java template engine for both web and standalone environments.

2. SpringMVC整合thymeleaf模块 -&gt; 六种模板

3. 创建springboot工程 -&gt; 依赖sta.]]></description><category></category></item><item><title><![CDATA[(自用)简单总结下Spring组件的记忆方式 -2021-10-14]]></title><link>https://blog.csdn.net/Oppuser/article/details/120759139</link><guid>https://blog.csdn.net/Oppuser/article/details/120759139</guid><author>Oppuser</author><pubDate>Thu, 14 Oct 2021 10:44:55 +0800</pubDate><description><![CDATA[简单总结下Spring组件的记忆方式:

一. 按照开发流程记忆:

SpringWeb: 前端JSP/HTML/CSSS -&gt; Resolver解析器

SpringMVC: ModelAndView渲染-&gt; controller层-&gt; DispatcherServlet

SpringContext: 容器bean注入 -&gt; service层常用

SpringDAO: DAO层 -&gt; JDBC数据库 -&gt; 事务框架

SpringORM: 数据关系映射 -&g...]]></description><category></category></item><item><title><![CDATA[简单总结下搭建Redis集群步骤 - 2021-10-14]]></title><link>https://blog.csdn.net/Oppuser/article/details/120756773</link><guid>https://blog.csdn.net/Oppuser/article/details/120756773</guid><author>Oppuser</author><pubDate>Thu, 14 Oct 2021 10:03:50 +0800</pubDate><description><![CDATA[简单总结下搭建Redis集群步骤:

详细版入口:redis集群搭建（非常详细，适合新手）_橙子君的博客-CSDN博客_redis集群搭建

一. 前提:

最少6个redis实例: 因为投票容错机制需要最少3个节点; 因为高可用, 每个节点需要1个从节点;

二.步骤:

1. 创建6个Redis实例并启动:

拷贝redis/bin文件到redis-cluster/redis01-&gt; 删除dump.rdb-&gt; 修改redis.conf(开启cluster-enabed)-&gt; 拷贝5份.]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day07 商品搜索-2021-10-12]]></title><link>https://blog.csdn.net/Oppuser/article/details/120724968</link><guid>https://blog.csdn.net/Oppuser/article/details/120724968</guid><author>Oppuser</author><pubDate>Tue, 12 Oct 2021 22:41:33 +0800</pubDate><description><![CDATA[一.关键词查询

1. 实现思路:

2. search微服务查询接口: com.changgou.search.service.SearchServiceImpl.java


(1) Map封装返回结果: 分页功能的实现
    Map封装查询条件: 关键字 / 品牌 / 规格 / 销量 / 价格区间..

(2) @Service
    public class SearchServiceImple implemtns SearchServiec{
    
        //注入ES模板类完成.]]></description><category></category></item><item><title><![CDATA[SpringCloud商城day06 数据同步解决方案-2021-10-11]]></title><link>https://blog.csdn.net/Oppuser/article/details/120701878</link><guid>https://blog.csdn.net/Oppuser/article/details/120701878</guid><author>Oppuser</author><pubDate>Tue, 12 Oct 2021 00:20:46 +0800</pubDate><description><![CDATA[一.基于Canal, 开发数据监控微服务

1. Canal: 阿里开源, java开发, 监控数据库 -&gt; 双机房数据同步

 (1) 工作原理: canal -&gt; 伪装成mysql备份机 -&gt; mysql数据改变 -&gt; 数据写入 binary log -&gt; 日志发送到Canal -&gt; canal提取mysql更新数据

(2) Canal 环境部署 - LINUX虚拟机:


1) mysql开启binlog模式, 值ON已开启, OFF未开启
    SH...]]></description><category></category></item><item><title><![CDATA[VUE引入moment.js插件error moment is not defined-2021-10-11]]></title><link>https://blog.csdn.net/Oppuser/article/details/120705822</link><guid>https://blog.csdn.net/Oppuser/article/details/120705822</guid><author>Oppuser</author><pubDate>Mon, 11 Oct 2021 16:27:41 +0800</pubDate><description><![CDATA[商城项目Day16 - 秒杀前端

一. 报错: Vue页面 moment is not defined 报错404

二. 现象: 引入moment.js插件后, 过滤器失效, 前端页面无法识别

三. 原因: 网关微服务也要添加一份 static/js/moment.min.js

       所有请求都是访问网关, 再转发到相应的微服务, 所有前端页面需要的插件, 需要在网关配置.






...]]></description><category></category></item><item><title><![CDATA[FeignException: Status(401) reading XXXfeign# - 2021-10-11]]></title><link>https://blog.csdn.net/Oppuser/article/details/120700497</link><guid>https://blog.csdn.net/Oppuser/article/details/120700497</guid><author>Oppuser</author><pubDate>Mon, 11 Oct 2021 12:12:15 +0800</pubDate><description><![CDATA[今日份bug........

一. 报错如下:

com.netflix.hystrix.exception.HystrixRuntimeException:SecKillOrderFeign#add(String,Long)failedandnofallbackavailable.



二. 提示: 401无权限调用SecKillOrderFeign, 但是依赖, 启动类注解, 拦截器, 路径都没问题



三. 暂时找不到原因 -&gt; 测试service_seckill微服务内部...]]></description><category></category></item></channel></rss>