Calendar的获取date中年月日时分秒
仿佛前世的密约,注定我们要在今生抵掌,然后一起创世,或者再次站成一排,慷慨赴死。——野夫
转载,原文
Date startTime = new Date();Calendar c = Calendar.getInstance();c.setTime(startTime);int year = c.get(java.util.Calendar.YEAR);int month = c.get(java.util.Calendar.MONTH) + 1;//获取月份(因为在格里高利历和罗马儒略历一年中第一个月为JANUARY,它为0,最后一个月取决于一年中的月份数,所以这个值初始为0,所以需要加1)int day = c.get(java.util.Calendar.DATE);//获取日int hour = c.get(Calendar.HOUR_OF_DAY);//小时(calendar.HOUR 12小时制,calendar.HOUR_OF_DAY 24小时)int minute = c.get(java.util.Calendar.MINUTE);//分int second = ...
部署hexo后样式丢失问题
无息乌乎生,无绝乌乎续,无无乌乎有? ——明·宋应星《谈天·日说三》
如果遇到hexo部署到gitee后样式丢失,并且控制台没有报错的话,可以修改hexo配置文件
检查url和root这两项
还有一个注意点是,如果我们新建仓库的时候,尽量让仓库名、以及路径和gitee的登录名保持一致
这样的话我们部署好的博客的路径就可以省略掉子路径
仓库名和登录名不一致访问url:https://vampireachao.gitee.io/blog
仓库名和登录名一致访问url:https://vampireachao.gitee.io/
重新生成.idea以及.iml文件
心地才是最远的荒地,很少有人一辈子种好它。――刘亮程
idea中重新生成.iml可以输入命令
mvn idea:module
重新生成.idea则可以输入命令
mvn -U idea:idea
模块、依赖找不到的话不妨试试
还可以尝试点击idea中的作废缓存
以及mvn clean和刷新
validator分组校验
当生活像一首歌那样轻快流畅时,笑颜常开乃易事;而在一切事都不妙时仍能微笑的人,是真正的乐观。——威尔科克斯
之前写过一篇springboot实现validator校验
今天进行一个补充
我们可以使用分组校验
首先是我们可以定义一个接口在我们的实现类里
然后在我们需要分组校验的注解上给上groups参数
最后在controller上也给我们的@Validated注解加上我们的分组参数
最后运行就只会校验我们分组的参数
那如果有这么一种场景:一个接口,传入Id时修改,不传入Id时新增,修改和新增又是不同的校验的话,我们该怎么处理呢?
其实很简单,我们可以注入一个Validator,然后在代码里进行分组校验
package com.ruben;import com.ruben.pojo.User;import com.ruben.utils.SpringContextHolder;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import ...
let和const命令
一个人在学校里表面上的成绩,以及较高的名次,都是靠不住的,唯一的要点是你对于你所学的是否心里真正觉得很喜欢,是否真有浓厚的兴趣……——邹韬奋
es6出来这么久了,是时候系统学习一下了
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。——ECMAScript 6.0入门网站
<!-- es6学习笔记 -->// let必须先声明再使用// console.log(a) // Uncaught ReferenceError: Cannot access 'a' before initializationlet a = "a";console.log(a); // a// var可以先使用再声明b = "ib"console.log(b); // ibvar b = "b";// 作用域 ...
explain
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃.迪伦
使用explain+SQL
作用:
表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
**id**:查询的序列号,包含一组数字,表示查询中执行select字句或操作表的顺序id值越大执行优先级越高,id相同情况下执行顺序从上到下
**select_type**:查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询simple简单的select查询,不包含子查询、UNION
primary子查询的最外层
subquery子查询的内层
derived表示 FROM临时表,这个表被标记为衍生
union在union后面的查询,若union包含在from字句的子查询中,外层select被标记为derived
union result从union表获取结果的sel ...
解决lambda中必须为final的方式
一个真正而且热切地工作的人总是有希望的——只有怠惰才是永恒的绝望。——卡莱尔
在开发中使用lambda经常出现一个问题
编译提示我们lambda中使用的变量必须为final或者effectively final
int i = 2;BigDecimal j = BigDecimal.ZERO;j = BigDecimal.TEN;List<String> stringList = mpUserMapper.selectList(Wrappers.lambdaQuery()).stream().map(UserDataObject::getUsername).collect(Collectors.toList());stringList = stringList.stream().distinct().collect(Collectors.toList());List<String> strings = new ArrayList<>(10);strings.stream().peek(s -> { stringList.a ...
@PostConstruct使用
在项目中我们可以使用@PostConstruct去初始化一些操作
例如
package com.ruben;import com.ruben.dao.MpUserMapper;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.PostConstruct;import javax.annotation.Resource;@SpringBootTestclass SimpleSpringbootApplicationTests { private String name; @PostConstruct public void init() { name = "ruben"; } @Test void test() { System.out.println(name); & ...
js进行深拷贝
共夸不受污泥染,没有污泥哪有莲。——《赏荷》
对象深拷贝
export function deepClone (data) { var type = getObjType(data) var obj if (type === 'array') { obj = [] } else if (type === 'object') { obj = {} } else { // 不再具有下一层次 return data } if (type === 'array') { for (var i = 0, len = data.length; i < len; i++) { data[i] = (function () { if (data[i] === 0) { return data[i] } ...
debugのChrome篇
我来到这个世界为的是看太阳和蔚蓝色的田野。——巴尔蒙特
chrome中如何debug?我们可以打开chrome的控制台
找到我们的文件
然后在想要调试的地方打断点
然后执行到此处的时候就会触发调试
我们可以点击右侧的Step into next function call来执行下一步函数调用
可以点击Resume script execution放行到下个断点
然后Step over next function call则可以执行步过,执行到当前函数结尾
Step out of current function步出,则可以跳出我们当前执行的函数
Step和我们第一个Step into next function call差不多,都是执行下一步
Activate breakpoints则是禁用断点
最后一个Pause on exceptions则是在所有异常发生时暂停程序,开始调试
我们也可以直接在代码里右键,点击执行到当前代码
Call Stack区域可以查看我们当前函数以及它的调用者 甚至 调用者的调用者…
下方的Scope区域可以观测我们的参数,在Br ...