不要再问我前端如何让字符串转成Date了
生活就像一盒巧克力,你永远不知道你会得到什么。——《阿甘正传》
那天有朋友问我yyyy-MM-dd'T'HH:mm:ss.SSSZ怎么转成yyyy-MM-dd HH:mm:ss,我就给他了我这篇博客
结果他说看完还是不会。。。
那我今天再讲一次吧
首先,我们拿到一个字符串2018-05-23T16:05:52+08:00
很多程序员看到了就不知道如何下手了
我们理清思路:
1.将字符串转换成js中的Date对象
2.调用Date对象中的函数转换为我们想要的格式
我们首先调用Date的构造方法
var a = "2018-05-23T16:05:52+08:00"console.log(a)var date = new Date(a);console.log(date)
可以看到我们的date确实转成功了
当然,除了这种格式的日期字符串
还可以支持很多格式
以及我们的时间戳
如果这些格式都不能满足你
还有一招:按照
new Date(年,月,日,时,分,秒,毫秒)
的格式去转换,注意月这里需要减一
同上,也支持省略写法
有朋友说,诶我这 ...
不要用魔法值!!!
我来到这个世界为的是看太阳和蔚蓝色的田野。——巴尔蒙特
《阿里Java手册》中第一条编程规约下的第二条常量定义里的第一条
例如这里
我们使用了魔法值
我们改成常量则为
像是字符编码此类都有对应的常量或者枚举等
例如java.nio.charset.StandardCharsets
@SneakyThrows
好的木材并不在顺境中生长;风越强,树越壮。——(英)马里欧特
我们有时候会把一些受检异常try catch掉
例如
但我们每次都这么写
try { String encode = URLEncoder.encode("阿巴阿巴阿巴阿巴", "UTF-8");} catch (UnsupportedEncodingException e) { e.printStackTrace();}
会导致代码很臃肿
如果我们使用了lombok
可以直接在方法上加个@SneakyThrows注解
简洁多了
花式Equals
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃.迪伦
相信大伙在开发中经常用equals去比较两个对象是否相等,这里分享一下一些别的写法
注意翻转equals:例如我们之前是这样写ruben.equals("ruben"),一定要改成"ruben".equals(ruben)
养成好习惯,利人利己
第一种写法,最常见的这种
String ruben = "ruben";String rabbit = "ruben";String achao = "achao";// 常用的Object.equalsSystem.out.println(ruben.equals(rabbit));
第二种写法,避免空指针
// 避免空指针的java.util.Objects.equalsSystem.out.println(Objects.equals(ruben, rabbit));
比较数组的equals
// 比较数组的Objects.deepEqualsint[] ra ...
redis自增减
是以太山不让土壤,故能成其大;河海不择细流,故能就其深。——李斯
多用于排行榜、统计访问量、签到天数等场景
package com.ruben;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.annotation.DependsOn;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.support.atomic.RedisAtomicLong;import org.springframework.test.annotation.Rollback;import javax.annotation.Resource;import java.math.BigDecimal;import java.time.Duration;impor ...
URL编码
人需要真理,就像瞎子需要明快的引路人一样。──高尔基
// URL编码String encode = URLEncoder.encode("你好,世界", Encoder.UTF_8);System.out.println(encode);// URL解码String decode = URLDecoder.decode(encode, Encoder.UTF_8);System.out.println(decode);
运行结果
idea2021更改内存设置
中国的孩子,只要生,不管他好不好,只要多,不管他才不才。生他的人,不负教他的责任。虽然“人口众多”这一句话,很可以闭了眼睛自负,然而这许多人口,便只在尘土中辗转,小的时候,不把他当人,大了以后,也做不了人。——鲁迅
如下
IDEA自带http客户端
我们活在世上不是为自己而向生活索取什么,而是试图使别人生活得更幸福。——奥斯勃
前两天更新了idea2021让我发现一个功能
虽然这个功能应该在以往的idea版本也存在,但是我是随着更新了它才发现这个功能
我们在idea中按下快捷键ctrl+alt+shift+insert
当然我们不用快捷键,直接在项目目录右键新建->草稿文件也是一样的效果
我们输入http找到Http Request
然后我们发现在草稿文件中多了个.http后缀的文件
我们可以在里面写我们的接口测试
例如我这里写一个
GET https://unidemo.dcloud.net.cn/api/news
然后点击左边的小箭头运行一下
可以看到下面我们调用接口后的响应
这串json会自动储存在.idea/httpRequests/2021-04-22T212126.200.json这里
我们可以按ctrl+鼠标左键去打开这个json文件
那么我们除了GET,使用POST也是可以的,只需要在前面改成POST即可
如果我们需要设置Request Header,可以直接在下方写上我们想要的header ...
idea启动springboot时指定端口号
对上级谦恭是本分;对平辈谦逊是和善;对下级谦逊是高贵;对所有的人谦逊是安全——亚里士多德
我们可以在启动项目时在启动参数加上-D去指定配置文件中的内容
例如我们使用-Dserver.port=8082去指定我们项目中的端口号
如果我们是在idea中启动项目,我们可以在VM Options中编写
然后我们启动项目则会把参数自动拼在后面
最后可以看到成功生效
如果我们想要多个
则使用空格分开即可
BeanCopier坑
志不强者智不达。——《墨子·修身》
今天使用org.springframework.cglib.beans.BeanCopier时遇到一个坑
这里记录一下
BeanCopier用于拷贝属性,详情可以看mofan的博客,写的很详细了
我们这里写两个对象用于测试
@Data@Builder@EqualsAndHashCode@NoArgsConstructor@AllArgsConstructorpublic static class Monkey { private String name; private Integer age;}@Data@Builder@EqualsAndHashCode@NoArgsConstructor@AllArgsConstructorpublic static class Cat { private String name; private Integer age;}
我们测试一下
public static void main(String[] args) { Bea ...