摘要:1、创建一张表,记录一下谁扫码了,谁登录了,User_Token表 字段如下: uuid : 用于确保唯一性 userId :谁登录的 loginTime :登录时间 createTime :创建时间 用于判断是否过期 state:是否二维码失效 0有效 1失效 2、步骤 PC端打开。调用生成二维码
阅读全文
摘要:1、@Cacheable相关注解 1.1 相关依赖 如果要使用@Cacheable注解,需要引入相关依赖,并在任一配置类文件上添加@EnableCaching注解 <dependency> <groupId>org.springframework.boot</groupId> <artifactId
阅读全文
摘要:加一张防重表,在防重表中增加商品表的name和model字段作为唯一索引。 例如: CREATE TABLE `product_unique` ( `id` bigint(20) NOT NULL COMMENT 'id', `name` varchar(130) DEFAULT NULL COMM
阅读全文
摘要:服务器通过redis 记录下请求的次数,如果次数超过限制就限制访问。 在redis 保存的key 是有时效性的,过期就会删除。 @RequestLimit 注解 import java.lang.annotation.*; /** * 请求限制的自定义注解 * * @Target 注解可修饰的对象范
阅读全文
摘要:有这样一个判断场景。 if ("dog".equals(animalType)){ System.out.println("吃骨头"); } else if ("cat".equals(animalType)) { System.out.println("吃鱼干"); } else if ("she
阅读全文
摘要:以前写法 public String getCity(User user) throws Exception{ if(user!=null){ if(user.getAddress()!=null){ Address address = user.getAddress(); if(address.g
阅读全文
摘要:redis是线程安全的,天然具有线程安全的特性,支持原子性操作,限流服务不仅需要承接超高QPS,还要保证限流逻辑的执行层面具备线程安全的特性,利用Redis这些特性做限流,既能保证线程安全,也能保证性能。 结合上面的流程图,这里梳理出一个整体的实现思路: 编写lua脚本,指定入参的限流规则,比如对特
阅读全文
摘要:1、引入guava依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> 2、自定义限流注解 自定义一个限流用的注
阅读全文
摘要:docx格式的文件本质上是一个XML文件,只要用占位符在指定的地方标记,然后替换掉标记出的内容,就能达到我们的目的 封装成工具类 import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; i
阅读全文
摘要:前言 在业务开发的时候,经常会遇到某一个接口不能对外暴露,只能内网服务间调用的实际需求。面对这样的情况,我们该如何实现呢?今天,我们就来理一理这个问题,从几个可行的方案中,挑选一个来实现。 可行方案 目前,想到的方案有三种: 内外网接口通过微服务隔离 redis配合网关实现接口白名单机制 网关加AO
阅读全文
摘要:前言 我们开发的时候常常会遇到多线程事务的问题。以为添加了@Transactional注解就行了,其实你加了注解之后会发现事务失效。 原因:数据库连接spring是放在threadLocal里面,多线程场景下,拿到的数据库连接是不一样的,即是属于不同事务。 本文是基于springboot的@Asyn
阅读全文
摘要:自定义异常 @Getter public class BusinessException extends RuntimeException { /** * http状态码 */ private int code; private Object object; public BusinessExcep
阅读全文
摘要:@Component public class LimiterUtil { @Resource private RedisTemplate<String, String> redisTemplate; /** * 固定窗口限流算法 * * @return true 限流 false 放行 */ pu
阅读全文
摘要:用于高精确处理常用的数学运算 package com.vivo.ars.util; import java.math.BigDecimal; /** * 用于高精确处理常用的数学运算 */ public class ArithmeticUtils { //默认除法运算精度 private stati
阅读全文
摘要:断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 // 要求参数 object 必须为非空(Not Null)
阅读全文
摘要:如何创建 Stream 对象 1.从集合创建:我们可以通过调用集合的 stream() 方法来创建一个 Stream 对象。例如: List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbe
阅读全文
摘要:一、假设json结构如下: { "Settings": [ { "name": "系统标识码", "key": "API_SYS_CODE", "params": [ "SYS_CODE" ], "disabled": "false", "edited": "false", "type": "str
阅读全文
摘要:package com.sxsoft.config; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.istrong.ec.common.utils.StringUtils; import
阅读全文