在掘金社区看到有人说这个问题,网上查了一下真有人遇到过这个问题,这里来简单说下。date格式为“YYYY-MM-dd”表示的是周年,date格式为“yyyy-MM-dd”表示的是年。看如下代码@Test public void test2() { DateFormat lFormat = new SimpleDateFormat("yyyy-MM-dd"); DateFormat uFormat...阅读全文>>
阿里云介绍:为解决用户无法获知免费证书剩余额度的问题,从2021年1月1日起,阿里云SSL证书服务将为每个实名的个人主体或者企业主体提供1个自然年内,免费领取一次包含20张免费证书的资源包。详细说明如下:实名个人主体或企业主体(包括该企业的所有阿里云账号)下,1个自然年内只能领取一次包含20张免费证书的资源包(共包含20张免费证书)。自然年是每年的01月01日~12月31日。每年12月31日24:00:00,未领取的免费证书资源包额度将会清零。您需要等到第二年的1月1日00:00:00后申请领取当年的免费证书资源包。下面申请SSL免费证书申请后,因为主机也在阿里云,直接部署即可。这边我使用的是...阅读全文>>
ava 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。先创建测试对象packa...阅读全文>>
Integer.parseInt多次解析同一个字符串得到的int基本类型数据是相等的。Integer.valueOf多次解析相同的一个字符串时,得到的是Integer类型的对象:如果s字符串对应的整数值在 -128~127之间,则解析出的Integer类型的对象是同一个对象;如果s字符串对应的整数值不在-128~127之间,则解析出的Integer类型的对象不是同一个对象。测试代码public class LambdaTest { public static void main(Str...阅读全文>>
借助 explain 执行计划来分析索引失效的具体场景。explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字即可。示例:explain select * from test where id=1;以上查询结果的列中,我们最主要观察 key 这一列,key 这一列表示实际使用的索引,如果为 NULL 则表示未使用索引,反之则使用了索引。以上所有结果列说明如下:id — 选择标识符,id 越大优先级越高,越先被执行;select_type — 表示查询的类型;table — 输出结果集的表;partitio...阅读全文>>
MySQL 中常用的两种时间储存类型分别是datetime和 timestamp。如何在它们之间选择是建表时必要的考虑。对于TIMESTAMP,它把写入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。占用空间timestamp 4 字节datetime 8 字节表示范围timestamp所能存储的时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999&...阅读全文>>
需要把其他库或者Excel中的数据批量导入到指定库中,业务中需要判断是否为重复数据,但是大量数据录入时判断是否重复,如何实现?创建测试表CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT , `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT&nb...阅读全文>>
sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题.sql model 常用来解决下面几类问题(1) 通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性。(2) 通过设置sql model 为宽松模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据库之间进行迁移时,则不需要对业务sql 进行较大的修改。(3) 在不同数据库之间进行数据迁移之前,通过设置SQL Mode 可以使...阅读全文>>
BlockingQueue也叫做阻塞队列,在某些情况下对BlockingQueue的访问可能会造成阻塞。被阻塞的情况主要有如下两种:当队列满了的时候进行入队列操作当队列空了的时候进行出队列操作阻塞队列一共有四套方法用来进行增、删、查,当每套方法对应的操作不能马上执行时会有不同的反应,下面这个表格就分类列出了这些方法:这4类方法有不同的行为1,Throws Exception如果操作不能立即被执行,那么将抛出异常2.Special Value如果操作不能被立即执行,那么将返回一个异常值(一般情况下是true/false)3.Blocks如果操作不能被立即执行,那么操作将会阻塞,直至可以执行。4T...阅读全文>>
常见的两种创建线程的方式。一种是直接继承Thread,另外一种就是实现Runnable接口。这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。Future模式的核心思想是能够让主线程将原来需要同步等待的这段时间用来做其他的事情。(因为可以异步获得执行结果,所以不用一直同步等待去获得执行结果)。上图简单描述了不使用Future和使用Future的区别,不使用Future模式,主线程在invoke完一些耗时逻辑之后需要等待,这个耗时逻辑在实际应用中可能是一次RPC调用,可能是...阅读全文>>