js使用for in取动态key参数
It’s a nice day for coding,isn’t it?Ha ha!
今天遇到一种服务端响应的参数,key是动态的
就像这样
我们一般静态key取值就是直接
data.data.id.username
但这种id是动态的
我们就只能用for in的方式取值了
var data = { "msg": "查询成功!", "code": 200, "data": { "2f793b1baf4b441c99a12d22af6678aa": { "username": "ruben2", "password": null, "userInfo": null, "genderEnum": null }, "59fa61fe88b64df58568a7046f17ab38": { "username& ...
枚举的使用及校验
今天聊聊枚举咋用
先定义一个枚举
package com.ruben.enumration;import com.alibaba.fastjson.annotation.JSONType;import com.fasterxml.jackson.annotation.JsonFormat;/** * @ClassName: GenderEnum * @Description: * @Date: 2020/8/18 19:03 * * * @author: achao<achao1441470436 @ gmail.com> * @version: 1.0 * @since: JDK 1.8 */@JSONType(serializeEnumAsJavaBean = true)@JsonFormat(shape = JsonFormat.Shape.OBJECT)public enum GenderEnum { FEMALE("女", 0), MALE("男", 1); private String name; ...
spring实现Validator校验和全局异常处理
开整!
首先引入依赖
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.5.Final</version> </dependency> <!-- FastJson --> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <grou ...
springboot全局异常处理器
直接贴代码
package com.ruben.resolver;import com.ruben.utils.AjaxJson;import lombok.extern.slf4j.Slf4j;import org.springframework.validation.FieldError;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.List;import java.util.stream.Collectors;/** * @ClassName: GlobalExceptionResolver * @Description: 全局异常处理器 * @Date: 2020/8/15 14:24 * * * ...
springboot实现Validator校验
一个优秀的后端,是不会相信任何传入的参数的
要做到这一点,以前我们是写大量的判断代码来验证数据的格式
在开发中,我们实际不这么干,我们使用Hibernate Validator来进行参数校验
它实现了JSR 303规范,使我们的代码的健壮性大大提高
先列出一些常用注解
约束注解
详细信息
@Null
被注释的元素必须为 null
@NotNull
被注释的元素必须不为 null
@AssertTrue
被注释的元素必须为 true
@AssertFalse
被注释的元素必须为 false
@Min(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)
被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)
被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)
被注释的元素的大小必须在指定的范围内
@Digits (integ ...
mysql join
首先先放张图
今天聊聊mysql表join连接,其本质是拿主表每条数据取出来和子表每行数据进行循环比较,如果满足则返回,不满足返回null
首先是内连接
两者之间取交集,两边都满足返回,不满足不返回
语法很简单
SELECT * FROM tb_goods a INNER JOIN tb_goods_desc b WHERE a.id = b.goods_id
其中,INNER可以省略掉只写个JOIN
然后是左外连接
左外连接,此时可以理解为理解 左表为主表,右表为子表。在条件不满足时,左表数据存在,右表数据为null
简单来说就是结果集包含左表所有行,右表不匹配则为null
SELECT * FROM sp_user a LEFT OUTER JOIN tb_seller b ON a.seller_id = b.seller_id
其中,OUTER可省略
反向操作一波就是右外连接
SELECT * FROM tb_seller a RIGHT OUTER JOIN sp_user b ON a.seller_id = b.seller_id WHERE b.seller_i ...
fastjson基本使用
alibaba的fastjson真香啊
首先是依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version></dependency>
这里列举点简单的应用
首先是对象转JSON
Map<String, Object> map = new HashMap<>(1 << 3);map.put("data", "操作成功!");map.put("code", 200);map.put("success", true);map.put("list", Arra ...
url怎么传数组
前两天遇到一个奇葩问题,url怎么传数组参数到后端,后端怎么接收
先申明,一般项目中绝不会这么传。。。
其实很简单,前端转换成JSON进行一次Base64加密,后端进行一次Base64解密再从json转换成对象就可以
前端base64加密解密方法:
//1.加密 var str = '内容'; var base = new Base64(); var result = base.encode(str); document.write(result); //2.解密 var result2 = base.decode(result); document.write(result2); //2.加密、解密算法封装: function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZab ...
程序员,你还在用postman吗
每次写完一个接口,都需要日常的打开postman测试接口,测试完后,又要把结果复制到接口文档里,给上备注等等
最近公司开发在用这个好东西:runapi
它可以测试完直接生成接口文档,免去从postman复制一大堆参数的烦恼
runapi用完真香,谁用谁知道,那么在哪能免费下载到runapi呢?我已经帮你们把链接放在下面啦!附带说一句,这玩意生成的接口文档链接可以部署在自己的局域网本地哦~这样就不会被别人看到啦!是不是很香?
官网链接
java巨大字符串截取
string转list,分段截取
比如传入rubenrubenruben和5,得到的list就是{"ruben","ruben","ruben"}这样的
/** * @param initial 初始字符串 * @param interval 分段长度 * @return */ public static List<String> stringSplit(String initial, Integer interval) { List<String> result = new LinkedList<>(); StringBuilder tmp = new StringBuilder(initial); int length = tmp.length(); while (length > 0) { if (interval > ...