自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秒杀项目之消息推送

定义RabbitMQ配置类,设置生产者发送数据时自动转换成JSON,设置消费者获取消息自动转换成JSON。@Bean@Bean设置RabbitTemplate消息转换模式为Jackson2JsonMessageConverter;设置RabbitMQ消费者监听器的的消息转换模式为Jackson2JsonMessageConverter;

2023-02-15 15:40:05 777 1

原创 秒杀项目之商品秒杀接口压测及优化

预减方法是在用户抢购商品成功后对商品进行库存预减;超时时间的设定取至于活动结束时间减去活动开始时间的差值,但必须是有效活动时间,也就是当前时间在活动开始时间与结束时间范围之内。将UserUtils工具类导入到zmall-user模块中,运行生成测试用户信息,可根据自身电脑情况来生成用户数量。将参与秒杀活动且秒杀状态、秒杀活动时间有效的商品推送到Redis中,并对秒杀商品设置超时时间。根据用户ID和秒杀商品ID为Key,将秒杀订单保存到Redis中;数据库中的秒杀商品表中的商品出现了库存为负数的问题。

2023-02-11 22:39:27 559

原创 秒杀项目之商品展示及商品秒杀

这里一定要注意,最后在将RedisConnectionFactory设置到RedisTemplate中,不要在最前做该步操作,不然会导致String和Hash类型的序列化无效,将采用默认的JdkSerializationRedisSerializer进行序列化,从而导致保存的key前缀出现乱码问题。在zmall-order模块中完成秒杀订单生成工作。第6步:修改商品服务zmall-product模块中的index方法,将之前从HttpSession中获取登录用户信息改换成User对象参数方式。

2023-02-11 22:20:22 999

原创 秒杀项目之网关服务限流熔断降级&分布式事务

2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),其愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们 遇到的分布式事务方面的所有难题。后来更名为 Seata,意为:Simple Extensible Autonomous Transaction Architecture,是一套分布式事务解决方案。Seata的设计目标是对业务无侵入,因此从业务无侵入的2PC方案着手,在传统2PC的基础上演进。

2023-02-11 22:02:29 429

原创 秒杀项目之服务调用&分布式session

SpringBoot整合Spring-Session的自动配置可谓是开箱即用,极其简洁和方便。这篇文章即介绍SpringBoot整合Spring-Session,这里只介绍基于RedisSession的实战。Spring Session 是Spring家族中的一个子项目,Spring Session提供了用于管理用户会话信息的API和实现。

2023-02-11 21:32:22 388

原创 秒杀项目之mybatis与微服务注册

将资料目录中的《易买网网页素材.rar》解压后,将其中Index.html、Product.html和js/css/images等等添加到项目的templates和static目录下,最好请将Index.html、Product.html页面首字母改成小写。解决方案:(此处将在第三次课解决,使用nginx动静分离方式实现) 配置静态资源访问服务器,将各个微服务模块中的静态访问资源迁移到静态资源访问服务器中,然后通过http方式访问即可。将页面中的头部申明修改成

2023-02-06 13:41:40 425

原创 微服务项目框架及多模块开发

4、C2C模式 C2C (Customer to Consumer),客户之间自己把东西放上网去卖,如:淘宝,闲鱼 5、O2O模式 O2O即Online To Ofline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线 下交易的前台。如:饿了么,美团,淘票票,京东到家。1)将资料目录中的《易买网网页素材.zip》解压后,将其中Login.html和js/css/images等等添加到项目的templates和static目录下,最好请将Login.html重命名为login.html。

2023-02-04 18:11:03 704

原创 OAuth2 (三)

授权流程界面化

2023-02-03 21:49:39 112

原创 OAuth2 (二)

目录创建项目结构父工程 客户认证服务器资源拥有者资源服务器 父工程有:子模块需要重新导入该标签的作用是为了锁定整个微服务项目的版本父工程中没有:子模块不需要导入对应的依赖 application.yml application.yml :资源拥有者 pom.xml:资源服务器 pom.xml:application.yml :关于代码调试,下载导入的项目中已经打好了Debugger,自己去看就行了。

2023-02-01 15:19:45 699

原创 OAuth2(一)

页面跳转后,用户登录认证服务器,同意或拒绝资源服务器的授权请求,认证服务器根据上一步的 redirect_uri地址,将生成的授权码返回给资源服务器。这种方式的特点:这种方式不安全,适用于对安全性不高的场景,令牌的有效期一般设置的比较短,通 常是会话期间有效,浏览器关闭令牌就时效了。需要被授权,然后再访问受保护资源的实体。资源所有者生成授权码后,需要回调客户的一个接口,将授权码传回, 客户得到授权码后,需要向认证。小王看到了服务人员的申请,在验证了客服人员的公司名称,工号等信息后,同意申请,并发给他。

2023-01-31 14:31:57 324

原创 前言技术之mybatis-plus 02

根据接口生成xml配置文件,IDE一般有辅助的插件,例如IDEA中的Free Mybatis plugin。mybatis-plus是mybatis的升级版,所以在mybatis-plus中使用xml的配置比较简单。即:标记删除,并不是真的从数据库中删除,而是做个删除标记,在查询时,过滤掉标记为删除的记录 即可。修改实体类,在使用类中加入对应的version字段,并使用是乐观锁。物理删除使用起来比较简单,仿照查询功能即可,不再赘述。在数据库表中加入version字段,表示数据版本号。

2023-01-30 19:18:18 101

原创 前言技术之mybatis-plus 01

目录1.什么是mybatis-plus2.初体验3.日志4.主键生成策略5.更新6.自动填充升级版的mybatis,目的是让mybatis更易于使用, 用官方的话说“为简化而生” 官网: MyBatis-Plus1.准备数据库脚本数据库 Schema 脚本如下:其对应的数据库 Data 脚本如下:2.初始化工程pom.xmlapplication.yml:启动类,指定mapper接口的位置3.编码编写实体类 编写 Mapper 包下的 接口4.开始使用添加测试类,进行功能测试:

2023-01-24 18:30:27 673

原创 前言技术之swagger

一.前后端分离的特点前后端分离是的前端与后端之间的职责更加明确后台: 负责业务处理前端: 负责显示逻辑在这种情况下,前端和后端可以分别交付给专业的开发人员去做,所以是必须要定义前后端直接的对接接口,否则各自为是则项目无法集成,这时就需要一个文档来定义统一的接口。二.在没有swagger之前在没有swagger之间,我们可以使用word,excel等功能来书写接口定义文档,但又有一个弊端,即:在接口发送改变时需要及时的同步接口文档,否则实际的接口与接口文档不相符,则接口文件就失去了。

2023-01-10 11:16:27 400

原创 小程序:后台交互-个人中心

session_key 功能说明 微信客户端通过wx.getUserInfo()获取用户的信息 后台有时候也需要获取微信客户端的用户信息,因此,就需要利用session_key这个秘钥来从微信平台中获取 官方文档原文 签名校验以及数据加解密涉及用户的会话密钥 session_key。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。小程序端长时间不使用,服务端的session_key会失效,无法再用session_key去微信端获取数据,需要小程序端重新执行登录操作;

2022-12-29 19:50:24 949 3

原创 小程序:后台交互-首页

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。fulfilled: 成功 (已完成), 调用 resolve, 就会将状态从pending改成fulfilled, 且将来就会执行.then。rejected: 失败 (拒绝), 调用 reject, 就会将状态从pending改成rejected, 且将来就会执行.catch。@MapperScan("com.zking.ssm.mapper") //指mapper接口所在包。

2022-12-28 22:20:00 409

原创 小程序:会议OA项目-其它页面

自定义组件 | 微信开放文档tabs.json{}tabs.wxmltabs.wxss.tabs {top: 0;}*/}*/}tabs.js/*** 组件的属性列表*/},/*** 组件的初始数据*/data: {},/*** 组件的方法列表*/// 获取索引// 触发 父组件的事件})}}})

2022-12-27 20:05:27 164

原创 小程序:会议OA项目首页

布局的传统解决方案,基于盒状模型,依赖display属性 +position属性 +float属性1) Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。2) 任何一个容器都可以指定为Flex布局。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

2022-12-27 19:47:23 254

原创 微信小程序框架

事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如 id, dataset, touches。

2022-12-27 19:17:54 363

原创 微信小程序入门

2017年度百度百科十大热词之一微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用( 张小龙对其的定义是无需安装,用完即走,实际上是需要安装的,只不过小程序的体积特别小, 下载速度很快,用户感觉不到下载的过程 )限制:同一个分包中的页面享有共同的预下载大小限额 2M,限额会在工具中打包时校验。2017年1月9日0点,万众瞩目的微信第一批小程序正式低调上线。

2022-12-27 12:59:01 265

原创 RabbitMQ之延迟队列

一、延迟队列的应用场景1. 场景:“订单下单成功后,15分钟未支付自动取消” 1.传统处理超时订单 2.rabbitMQ延时队列方案二、延迟队列中的消息投递和消息消费2. TTL和DLX1.TTL2.DLX和死信队列3. 延迟队列4. 开发步骤5. json转换

2022-12-18 20:25:37 325

原创 RabbitMQ之交换机

一. Exchange(交换机)的作用在RabbitMQ中,生产者发送消息不会直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列再将消息以推送或者拉取方式给消费者进行消费。创建消息 路由键 pull/push生产者------------>交换机------------>队列------------>消费者交换机原理图见:二. Exchange(交换机)的类型。

2022-12-15 17:14:58 2611

原创 RabbitMQ入门

一. 什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已二. 应用场景主要解决等问题,,

2022-12-13 19:28:07 117

原创 Docker之Nacos的持久化和集群部署

一.下载相关镜像二.docker mysql:5.7的持久化存储及远程连接 1.下拉镜像 2.在宿主机中相关目录,用于挂载容器的相关数据 3.创建mysql5.7容器 4.修改mysql允许Navicat远程连接 5.创建数据库nacos_config,并进行初始化 6.持久化测试 7.小结:使用bridge网络创建mysql5.7容器,创建并初始化数据库nacos三. nacos-docker镜像安装nacos并配置数据库(nacos单机版) 1

2022-12-12 21:51:41 370

原创 Docker安装Nginx

参数说明--driver bridge 设置网络模式--subnet 192.168.0.1/16 设置子网--gateway 192.168.0.1 设置网关mynet 自定义网络的名称简单测试nginx镜像A.使用docker内置网络bridge登录nginx容器B.使用自定义网络mynet???

2022-12-10 00:07:59 124

原创 Docker之网络配置

Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定。docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口。注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效。Docker run -it --name mytomcat01 -p 8081:8080 镜像ID。

2022-12-08 20:37:34 2412

原创 Docker之自定义镜像上传阿里云

1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和BusyBox以减少系统的体积和运行时的资源消耗。2.Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu中是apt-get),我们可以通过https://pkgs.alpinelinux.org/packages 查询包信息。

2022-12-08 20:20:15 258

原创 Docker之数据卷(Data Volumes)&dockerfile

目录宿主机与容器之间的文件拷贝数据卷数据卷容器Dockerfile引言:利用MySQL镜像安装MySQL服务从容器中拷贝文件到宿主机从宿主机拷贝文件到容器将宿主机的目录与容器的目录进行挂载,实现数据共享docker run -di --name c2 -v /home/lixiao/data/:/home/lixiao/data/ centos:7结论:不管宿主机、容器在指定目录创建文件夹还是文件,都会会被共享;其中c4为数据卷容器,c6为普通容器,其中c4就起到一个桥接作用,我们可以通过docker

2022-12-06 15:38:48 604 1

原创 Docker入门

目录简介新一代虚拟化技术环境配置 常用操作 1.启动、停止、重启容器命令 2.查看当前运行的容器 3.查看所有容器 4.删除容器 5.创建容器(重点) 6.启动容器(重点) 7.进入容器(重点) 8.创建\启动\进入容器(run=create+start) 9.退出容器0. 前置条件 需要掌握Linux及常用命令1. Docker是什么 Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs),它是完整的一套容器

2022-12-05 08:46:11 504

原创 Gateway之限流、熔断

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量 为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即 突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用 应用等。完备的实时监控:Sentinel 提供了实时的监控功能。

2022-12-01 23:16:54 281

原创 服务网关之Spring Cloud Gateway

大家都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调 用。这样的架构,会存在着诸多的问题:客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性认证复杂,每个服务都需要独立认证。存在跨域请求,在一定场景下处理相对复杂。上面的这些问题可以借助API网关来解决。所谓的API网关,就是指系统的统一入口。

2022-11-30 14:29:54 1408

原创 使用Nacos作为配置中心

首先我们来看一下,微服务架构下关于配置文件的一些问题:配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环 境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动 维护,这比较困难。配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一 个正在运行的项目来说是非常不友好的。

2022-11-29 14:32:07 236

原创 Nacos注册中心和服务消费方式

先来思考一个问题通过上一篇的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 (ip,端口)等硬编码到了代码中,这种做法存在许多问题:一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理。什么是服务治理服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

2022-11-28 15:19:27 299 1

原创 SpringCloud之入门

微服务介绍系统架构演变一、单体应用架构二、垂直应用架构三、分布式架构四、SOA架构五、微服务架构初步了解微服务架构微服务架构介绍微服务架构的常见问题六、微服务架构涉及内容全面介绍微服务架构的常见概念服务治理服务调用服务网关服务容错链路追踪微服务架构的常见解决方案SpringCloudSpringCloud AlibabaSpringCloud Alibaba介绍主要功能组件七、微服务架构拆分代码实现微服务环境搭

2022-11-25 16:45:43 394

原创 SpringBoot完成查询和增加功能(简易版)

一、环境准备1、db2、html打开前端开发工具HBuilder X,把准备好的前端spboot移进去:接着查看电脑的mvn版本,选中项目右键:npm -versionnpm i​编辑3、java在弹出的窗口中选择你需要导入的项目,点击ok,选择maven然后去修改maven配置:再去检查一下application.yml文件和jdbc.properties,看数据库配置是否正确:最后要注意修改generatorConfig.xml:二、后台接口定义及测试

2022-11-18 01:43:34 3371

原创 SpringBoot电商项目之购物车下单(沙箱支付)

一、购物车结算前端功能实现实现思路1.购物车页面实现结算功能,主要是拿到传入后台的gids2.跳转订单页后台,主要是拿到订单页展示数据3.订单页前台数据展示购物车页面实现结算功能注:使用jquery动态实现结算功能,必须勾选购物车中的商品进行结算,没有勾选无法完成结算功能!!!cart.js进行整改:关于结算按钮的绑定事件测试结果,当点击结算,会跳转访问地址;说明gids的值是已经拿到了;

2022-11-08 23:43:38 3800

原创 SpringBoot电商项目之实现购物车功能

*** @author 杨总*//*** 使用参数解析器之前的做法 弊端:* 在每一个需要登录之后才能操作的功能,都需要做用户登录验证,即以下代码都需要再写一遍* @return*/}}弊端:在每一个需要登录之后才能操作的功能,都需要做用户登录验证,即以下代码都需要再写一遍运行时,点击加入购物车会出现关于Mybatis-plus时间字段代码生成问题。

2022-11-07 23:59:28 3364 2

原创 SpringBoot电商项目前后端界面搭建

前端:Freemarker、jQuery后端:SpringBoot、MyBatisPlus、Lombok中间件:Redis用户表:t_user商品表:t_goods订单表:t_order订单项表:t_order_item数据源表:t_dict_type数据项表:t_dict_data后续微服务秒杀项目所用:秒杀商品表:t_seckill_goods秒杀订单表:t_seckill_order二、构建SpringBoot项目起初搭建时,可以不勾选任何组件。

2022-11-05 20:12:48 2406 5

原创 自定义starter

SpringBoot中的starter是一种非常重要的机制(自动化配置),能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。

2022-11-04 00:18:27 529

原创 springboot整合其它项目

是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭 个人建议如果想用SQL防火墙 建议打开。# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙。#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒。# 配置一个连接在池中最小生存的时间,单位是毫秒。#初始化连接池的连接数量 大小,最小,最大。添加配置,不要最新的,进过测试SQL监控失效。#设置监控页面的登录名和密码。--添加redis相关集成依赖-->

2022-11-02 22:39:03 509

原创 SpringBoot视图渲染技术

SpringBoot默认是不推荐使用jsp的,本身就是向前端推送数据。二、Freemarker的基本语法。三、Freemarker综合案例。一、Freemarker入门。生成后相关配置稍作调整。

2022-11-02 01:43:31 352

空空如也

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

TA关注的人

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