自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Python】PyQt5 点击按钮打开显示图片的窗口

使用 tk 实现打开只有一张图片的窗口。

2022-12-03 12:02:59 4659 1

原创 【学习笔记】seckill-秒杀项目--(11)项目总结

秒杀项目总结项目推荐

2022-06-13 21:59:31 376

原创 【学习笔记】seckill-秒杀项目--(10)安全优化

引言当我们秒杀开始时,不会直接调秒杀接口,而是获取真正秒杀接口的地址,根据每个用户秒杀的不同商品是不一样的。这样可以避免有些人提前通过脚本准备好固定地址进行秒杀。这种方式的缺点是有可能能提前获取到秒杀接口地址,这种时候可以再进行一次验证码的防护。如果没有验证码的话,一秒内可能有很多请求,加上验证码可以延迟请求的时间,服务器承受的压力就没有那么大。为了减少并发量,还可以进行一次接口的限流。一、秒杀接口地址隐藏针对不同用户秒杀不同商品,设计秒杀接口地址不同。1.1 控制层修改/** * 秒杀 *

2022-05-13 20:45:11 836

原创 【学习笔记】seckill-秒杀项目--(9)接口优化

一、redis通过redis预减库存,来减少数据库访问。可以在初始化阶段,将商品库存加入到redis中。后续直接在redis中进行预减库存操作。后续的下单可以先返回给客户端提示信息,同时将请求发送到消息队列,来实现订单的创建等操作,实现异步操作。客户端的页面使用轮询来判断订单是否创建成功。二、内存标记通过内存标记减少redis访问。三、消息队列请求进入消息队列,实现异步下单。3.1 RabbitMQ安装首先将erlang以及RabbitMQ安装包传到虚拟机中,注意两个版本需要对应。执行

2022-05-12 16:22:57 511

原创 【RabbitMQ】消息传递模型

生产者是发送消息的用户程序。队列是存储消息的缓冲区。使用者是接收消息的用户应用程序。RabbitMQ消息传递模型的核心思想是生产者从不直接向队列发送任何消息。实际上,很多时候生产者甚至根本不知道消息是否被传递到任何队列。相反,生产者只能向交换器发送消息。交换是一件很简单的事情。它一边接收来自生产者的消息,另一边将消息推送到队列。交换器必须确切的知道如何处理它接收到的消息,比如是附加到一个特定的队列还是多个队列或者被丢弃。它的规则由交换类型定义。交换类型:direct 直连,topic 主题, head.

2022-05-12 13:58:54 657

原创 【学习笔记】seckill-秒杀项目--(8)页面优化

页面缓存、对象缓存、压力测试、商品详情页面静态化、秒杀静态化、订单详情静态化。

2022-05-05 15:39:58 692

原创 【学习笔记】seckill-秒杀项目--(7)压力测试

一、JMeter简单使用添加线程组,在线程组里设置要测试的线程数等。在线程组里添加HTTP请求默认值(设置请求ip端口号等)、HTTP请求(测试哪个页面)、需要查看的结果等。在聚合报告里可以看到设置1000个线程的情况下吞吐量大概为190.(windows环境)二、虚拟机环境压力测试首先在虚拟机服务器中安装JDK以及MySQL。把项目打包,JMeter打包,发布到虚拟机中。在linux中执行./jmeter.sh -n -t first.jmx -l result.jtl进行压力测试,把结果

2022-05-03 16:01:44 1868

原创 【学习笔记】seckill-秒杀项目--(6)秒杀功能

一、秒杀倒计时1.1 跳转逻辑在跳转到详情页面的时候,对比秒杀开始时间、结束时间与当前时间。在model中传入秒杀状态与倒计时时间。在前端页面根据秒杀状态与倒计时的状态进行不同的显示。/** * 跳转商品详情页 * @author 47roro * @date 2022/4/15 * @param goodsId * @return java.lang.String **/@RequestMapping("/toDetail/{goodsId}")public String toDe

2022-04-16 18:17:24 619

原创 【学习笔记】seckill-秒杀项目--(5)实现商品列表页、详情页

一、创建表单1、创建表准备商品表、订单表、秒杀商品表、秒杀订单表。(设计较为简单,重点在秒杀,不在设计表。)商品表:create table `t_goods`( `id` BIGINT(20) not null AUTO_INCREMENT COMMENT '商品id', `goods_name` VARCHAR(16) DEFAULT NULL COMMENT '商品名称', `goods_title` VARCHAR(64) DEFAULT NULL COMMENT '商品标题',

2022-04-15 22:17:54 475

原创 【问题解决】seckill-秒杀项目 -- 服务端异常

问题描述:在登录页面输入账号密码都正确的情况下,显示服务端异常。但是打开页面调试窗口发现doLogin状态码是200。显示的是event handler error。检查发现redis已经开启,防火墙也没问题。后来找到是GoodsMapper.xml文件里代码写错了。select语句里的resultType写成了resultMap。导致无法读取到商品列表。跳转页面失败。错误代码:<!-- 获取商品列表 --><select id="findGoodsVo" resultMap=

2022-04-15 21:22:48 544

原创 【学习笔记】seckill-秒杀项目--(4)登录功能总结及优化

一、总结一开始使用最简单的从controller 到 service 到数据库。发现参数校验比较麻烦。所以引进了validation依赖。添加了参数校验,可以抛异常,但是无法再页面进行异常状态显示。于是添加了全局异常处理类。如果只是单应用,就没有问题。但后来肯定要做成分布式的,就会遇到分布式session的问题。解决分布式session的问题有两种解决方法:spring session、redis存储用户信息。最后每一个接口都需要做用户校验,比较麻烦。于是加上自定义的参数校验,来定义用户参数

2022-04-15 15:22:14 841

原创 【学习笔记】seckill-秒杀项目--(3)分布式Session

分布式Session问题由于Nginx使用默认负载均衡策略(轮询),请求会按照时间顺序逐一发到后端应用。在Tomcat1登录后,用户信息存放在Tomcat1的Session里,后来被分到了Tomcat2上,这时候Tomcat2的Session没有用户信息,所以需要重新登录。解决方案有:Session复制、前端存储、Session粘滞、后端集中存储这些方法。几种方法各有优缺点,需要我们根据实际情况选择。一、使用SprignSession实现1. 添加依赖spring data redis、对象池.

2022-04-05 14:45:21 1691

原创 【学习笔记】seckill-秒杀项目--(2)登录功能及完善

2022-04-05 11:28:00 1296

原创 【学习笔记】seckill-秒杀项目--(1)搭建项目

一、系统方案二、项目搭建1. 引入依赖包括thymeleaf组件、web组件、test组件、MySQL驱动、Mybatis-plus、lombok插件 <dependencies> <!--thymeleaf--> <dependency> <groupId>org.springframework.boot</groupId> <artifactI

2022-04-03 15:37:56 1498 5

原创 【IDEA】 控制台中文乱码解决

一、普通工程1、找到idea的安装路径下的bin目录,选择.vmoptions文件2、用记事本打开后,在最后一行添加-Dfile.encoding=UTF-83、打开IntelliJ IDEA>File>Setting>Editor>File Encodings,将Global Encoding、Project Encoding、Default encodeing for properties files这三项都设置成UTF-8。二、web项目1、点击工具栏上的配置服

2021-11-25 11:22:08 336

原创 【Python】PyQt5 从父窗口中打开子窗口,并向父窗口传递子窗口的信号以及数据。

pyqt5 在父窗口中打开子窗口,子窗口和父窗口实现信号以及参数的传递。

2021-11-16 20:32:40 8478

原创 【Python】PyQt5 指示灯控件的制作,以及窗口动态添加、删除指示灯控件

pyqt 自定义了一个指示灯控件,并在窗口中实现动态添加、删除指示灯控件的操作。

2021-11-16 20:00:32 7179 1

原创 【Python】PyQt5 使用QPainter绘制简易仪表盘

使用QPainter 制作简易仪表盘,绘制三色环、刻度线、刻度值、指针等。

2021-11-12 13:15:01 5138 3

原创 【Python】PyQt5 在窗口中使用自定义的QWidget,并重写paintEvent

在窗口中放置一个QWidget,用于画图(使用QPainter),其余位置可以放置别的控件。自定义QWidget类,重写PaintEvent后。可以单独作为一个控件放在其他的窗口中。

2021-11-11 21:30:47 4585 6

原创 【Matlab】 对 mysql 数据库进行读写操作

在matlab内实现数据库的读写操作

2021-10-26 14:56:52 3139 8

原创 【Matlab】matlab连接mysql数据库

一、软件及驱动版本matlab:2021amysql:mysql8.0JDBC驱动:mysql-connector-java-8.0.27.jar二、驱动下载官网地址选择合适版本:http://mvnrepository.com/artifact/mysql/mysql-connector-java这里我选择的是最新版本8.0.27,点击jar包进行下载。三、matlab与mysql连接1、驱动位置将下载好的 mysql-connector-java-8.0.27.jar 放在mat

2021-10-26 13:29:00 4154 6

原创 【Python】PyQt5 实现实时数据显示

利用 pyqtchart 结合定时器实现动态数据的显示。

2021-10-04 13:15:00 8704 7

原创 【Python】PyQt5 工具配置:QT Designer 、PyUIC、Pyrcc

在安装了 pyqt5 以及 pyqt5-tools 后,QtDesigner 、PyUIC 以及 Pyrcc 就已经在 “Python安装路径\Lib\site-packages\pyqt5-tools” 路径下了。下面进行三个工具的配置。

2021-10-03 17:29:45 1322

原创 【LaTeX】下载及安装步骤

一、TeX Live下载进入TeX Live官网(http://tug.org/texlive/),点击on DVD点击downloading the TeX Live iso image and burning your own DVD选择最近的镜像网站选择.iso 文件下载,文件大小3G,选择网络好的进行下载。双击下载好的.iso文件,用管理员身份打开advanced.bat文件。耐心等待,出现提示窗,关闭病毒扫描软件后,点击continue.点击修

2021-10-02 19:44:20 1950

空空如也

空空如也

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

TA关注的人

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