0

Laravel结合Redis实现黑名单、倒计时、防刷功能

新建的网站,如何限制别人恶意攻击、频繁请求接口,导致数据库崩溃?我们可以使用Redis对请求的IP做一个简单的限制。 一、设计思路1、Redis中使用有序set表存放黑名单列表、频繁请求列表。 2、用户访问,设置一个锁,数值为1,过期时间10秒。 3、用户每次请求接口1次,锁的数值加1。在10秒内接口访问次数超过20次,则把该用户IP或uid添加到频繁请求列表中,score的值为当前时间,数据库表频繁请求次加1。 4、若频繁请求次数超过设定次数,则添加到redis黑名单列表中。 二、前期准备1、在app\http\common中创建RedisKey.php<?php namespace...

阅读全文>>

0

Springboot中接口参数校验N种方法你会几个?

环境:springboot2.2.10.RELEASESpring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),结合BindingResult对象可以直接获取错误信息。JSR是什么?JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR...

阅读全文>>

0

Laravel 开发中值得记住的简单建议

1. 最大限度地使用你的 .env 文件;2.不要破坏框架核心,不要编辑 vendor 文件夹中的文件,你可以选择继承相关函数来实现。扩展优于修改。3. 不要直接通过 PHPMyAdmin 或者其他数据库控制台创建表和索引。请使用数据库迁移表来创建表、增加修改字段,然后提交到 Git 仓库。4.测试的时候不要直接向数据库插入假值。创建填充文件(Seeder 文件)来填充数据库。5.更倾向于使用 Artisan 脚手架而不是手动创建东西,这会极大地提升你的生产力。6.确保使用一些 artisan 命令来提升性能:php artisan route:cache // 路由缓存 ...

阅读全文>>

0

SpringBoot咋使用PageHelper实现数据分页?

前言我们在做页面查询的时候由于页面无法一次性展示所有的数据,所以采用一种分段式的展示策略—分页查询,实现分页查询的方式有很多种方式,比如sql中的limit,mybatisplus带的分页插件等等,这里我们介绍一下如何在SpringBoot中使用PageHelper插件实现分页查询。正文PageHelperPageHelper是针对MyBatis最方便的分页插件PageHelper支持任何复杂的单表,多表查询。 它有以下特点:PageHelper不支持嵌套结果映射.PageHelper本质上是两次查询,第一次是对记录总数量的查询,第二次是对记录的查询。对记录的查询是利用了mybatis提供的拦...

阅读全文>>

0

Elasticsearch数据迁移方案

前言最近要去给客户部署一套系统涉及到了Mysql和ES数据的迁移,下面就给大家分享一下ES数据迁移的几套方案,根据具体的使用场景来选择不同的迁移方案能使你事倍功半,话多说下面就一一介绍。Elasticsearch-dump(工具)这里有很多版本需要大家注意:Elasticdump的1.0.0版更改了转储创建的文件的格式。使用此工具的版本0.x.x创建的文件可能不适用于以后的版本。要了解有关重大更改的更多信息,请访问1.0.0版的发行说明。如果收到“内存不足”错误,则可能是或很可能是原因。Elasticdump版本2.0.0删除了批量选项。这些选项是错误的,并且在Elasticsearch的版本...

阅读全文>>

0

分布式事务2阶段提交理论的落地方案seata的项目实战演示

背景看过我上一篇文章的小伙伴应该对seata 项目有了一个大概的认识,这一篇我就拿实际案例用户下订单->扣减库存->扣减用户余额,来演示。前期准备下载好seata-server 本示例以1.4.0版为例业务系统: 订单系统 仓储系统 用户系统所用框架 springboot , mybaits, httpclient项目调用结构实战引入jar包,spring-cloud-alibaba 版<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId&...

阅读全文>>

0

SpringCloud2020替换Netflix套件实践一

Spring Cloud 2020版已经发布了,因为网飞Netflix套件进入维护期,替代方案也出来了,本着“就新不就旧”的原则,个人的知识结构也要更新,所有就有了下面的内容。按照官方给出的推荐替代品,主要是:网关由Gateway替换Zuul,断路器由Resilience4j和Sentinel替代Hystrix,负载均衡LoadBalance替换Ribbon。还有例如从Feign衍生出来的OpenFeign等,替换注册中心Eureka的Nacos、Consul等。本文主要是想基于Spring Cloud 2020一些新的组件+Docker,组建一个轻量级的微服务Demo,总结一下学习成果,也适...

阅读全文>>

0

微信官方开源自家优化二维码引擎!3行代码让你拥有微信扫码能力

十天前,微信官方开发团队在 opencv_contrib 开源了自家优化9年的二维码引擎!各位读者可编译最新版OpenCV及opencv_contrib ,直接使用!2011年12月微信3.5版本正式上线“扫一扫”二维码,历经9年蜕变,“扫一扫”从二维码名片到扫码支付、从小程序码到健康码,二维码已经成为一种生活方式,连接着数字与现实。现在,在腾讯WeChatCV团队的贡献下,微信扫码引擎正式加入OpenCV开源了!只需3行代码,你便轻松拥有微信的扫码能力:import cv2detector = cv2.wechat_qrcode_WeChatQRCode("detect.prototxt",...

阅读全文>>

0

SpringBoot自动配置原理及手动实现自动配置

前言之前我们学习了SpringBoot中的配置文件及外部化配置,了解了SpringBoot对于配置文件的功能支持与增强,本篇我们将要来学习SpringBoot的自动配置原理及手动实现自动配置。数据库依赖引起的bug我们很多人在第一次使用SpringBoot的时候,往往对其原理认知不足,或者简单的了解以后就开始入门使用,往往最常见的就是使用SpringBoot添加一个持久化框架的依赖,用来尝试操作数据库,比如:<pre style="margin: 0px; padding: 8px 0px 6px; max-width: 100%; box-sizing: border-box; wor...

阅读全文>>

0

SpringCloud微服务:Zipkin组件,实现请求链路追踪

一、链路追踪简介1、Sleuth组件简介Sleuth是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案。可以定位一个请求到底请求了哪些具体的服务。在复杂的微服务系统中,如果请求发生了异常,可以快速捕获问题所在的服务。 2、项目结构启动顺序如下* 注册中心 node07-eureka-7001 * 链路数据收集服务 node07-zipkin-7003 * 服务提供 node07-provider-6001 node07-provider-6002 * 网关路由 node07-zuul-7002 二、搭建链路服务1、核心依赖<dependency> <gr...

阅读全文>>