47roroya
码龄6年
求更新 关注
提问 私信
  • 博客:67,934
    社区:1
    67,935
    总访问量
  • 24
    原创
  • 29
    粉丝
  • 34
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
加入CSDN时间: 2018-12-04
博客简介:

qq_43950000的博客

查看详细资料
个人成就
  • 获得55次点赞
  • 内容获得38次评论
  • 获得486次收藏
  • 代码片获得2,401次分享
创作历程
  • 14篇
    2022年
  • 10篇
    2021年
成就勋章
TA的专栏
  • Python学习
    6篇
  • Java学习
    14篇
  • 学习笔记
    13篇
  • matlab学习
    2篇
  • 软件安装
    2篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

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

使用 tk 实现打开只有一张图片的窗口。
原创
发布博客 2022.12.03 ·
5044 阅读 ·
1 点赞 ·
0 评论 ·
14 收藏

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

秒杀项目总结项目推荐
原创
发布博客 2022.06.13 ·
455 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

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

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

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

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

【RabbitMQ】消息传递模型

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

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

页面缓存、对象缓存、压力测试、商品详情页面静态化、秒杀静态化、订单详情静态化。
原创
发布博客 2022.05.05 ·
766 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

【学习笔记】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 ·
1985 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

【学习笔记】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 ·
731 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【学习笔记】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 ·
583 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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

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

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

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

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

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

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

一
原创
发布博客 2022.04.05 ·
1360 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

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

一、系统方案二、项目搭建1. 引入依赖包括thymeleaf组件、web组件、test组件、MySQL驱动、Mybatis-plus、lombok插件 <dependencies> <!--thymeleaf--> <dependency> <groupId>org.springframework.boot</groupId> <artifactI
原创
发布博客 2022.04.03 ·
1634 阅读 ·
1 点赞 ·
5 评论 ·
6 收藏

【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 ·
366 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

pyqt5 在父窗口中打开子窗口,子窗口和父窗口实现信号以及参数的传递。
原创
发布博客 2021.11.16 ·
8981 阅读 ·
6 点赞 ·
0 评论 ·
79 收藏

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

pyqt 自定义了一个指示灯控件,并在窗口中实现动态添加、删除指示灯控件的操作。
原创
发布博客 2021.11.16 ·
8090 阅读 ·
4 点赞 ·
1 评论 ·
52 收藏

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

使用QPainter 制作简易仪表盘,绘制三色环、刻度线、刻度值、指针等。
原创
发布博客 2021.11.12 ·
5784 阅读 ·
6 点赞 ·
4 评论 ·
58 收藏

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

在窗口中放置一个QWidget,用于画图(使用QPainter),其余位置可以放置别的控件。自定义QWidget类,重写PaintEvent后。可以单独作为一个控件放在其他的窗口中。
原创
发布博客 2021.11.11 ·
4822 阅读 ·
3 点赞 ·
6 评论 ·
18 收藏

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

在matlab内实现数据库的读写操作
原创
发布博客 2021.10.26 ·
3554 阅读 ·
2 点赞 ·
8 评论 ·
24 收藏
加载更多