2020
10-08
10-08
详解在java中进行日期时间比较的4种方法
1.Date.compareTo()java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。如果两个日期相等,则返回值为0。如果Date在date参数之后,则返回值大于0。如果Date在date参数之前,则返回值小于0。@TestvoidtestDateCompare()throwsParseException{SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Datedate1=sdf.parse("2009-12-31");Datedate2=sdf.parse("2019-01-31");System.out.p...
继续阅读 >
一、Java从编码到执行首先我们来看一下Java是如何从编码到执行的呢?我们有一个x.java文件通过执行javac命令可以变成x.class文件,当我们调用Java命令的时候class文件会被装载到内存中,这个过程叫做classloader。一般情况下我们自己写代码的时候会用到Java的类库,所以在加载的时候也会把Java类库相关的类也加载到内存中。装载完成之后会调用字节码解释器和JIT即时编译器来进行解释和编译,编译完之后由执行引擎开始执行,执行引...
首先volatile有两大功能:保证线程可见性禁止指令重排序1、保证线程可见性首先我们来看这样一个程序,其中不加volatile关键字运行的结果截然不同,加上volatile程序能够正常结束,不加则程序进入死循环;packagecom.designmodal.design.juc01;importjava.util.concurrent.TimeUnit;/***@authorD-L*@ClassnameT001_volatile*@Version1.0*@Descriptionvolatile保证线程的可见性*@Date2020/7/1917:30*/publiccla...
Purpose开发人员在合作的时候经常遇到以下场景:1.开发人员A在自己的本地数据库做了一些表结构的改动,并根据这些改动调整了DAO层的代码,然后将代码上传到svn或git等版本控制服务器上。此时如果开发人员B拉取了A的代码改动,在运行项目的时候很可能会报错,因为B的本地SQL数据库并没有修改。2.在项目上线的时候,当服务器拉取的版本控制服务器的最新修改后,必须同时运行SQL数据库的修改脚本,如果忘了跑数据库脚本,那么会出现严...
Flyway的使用环境:SpringBoot2.0.4.RELEASE为什么要用Flyway?开发人员在合作的时候经常遇到以下场景:1.开发人员A在自己的本地数据库做了一些表结构的改动,并根据这些改动调整了DAO层的代码,然后将代码上传到svn或git等版本控制服务器上。此时如果开发人员B拉取了A的代码改动,在运行项目的时候很可能会报错,因为B的本地SQL数据库并没有修改。2.在项目上线的时候,当服务器拉取的版本控制服务器的最新修改后,必须同时运行SQ...
FlyWay官网:https://flywaydb.org/getstarted/firststeps/mavenFlyway做为databasemigration开源工具,功能上像是Git、svn这种代码版本控制。google搜索databasemigration,或者针对性更强些搜索databasemigration Java,会有其它的framework、tool、甚至aws的service。因为项目使用到了flyway,而且确实google中排第一位的搜索结果就是flyway,那就之后有机会再与其它方案做比较,先对flyway做下学习笔记。数据库版本管...
Spire.Cloud.SDKforJava提供了pdfPathApi接口可用于在PDF文档中绘制形状(或图形),如绘制线条形状drawLine()、绘制矩形形状drawRectanglef(),下面将介绍如何通过Java示例和步骤来实现:一、导入jar文件。(有2种方式)创建Maven项目程序,通过maven仓库下载导入。以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下:<repositories><repository><id>com.e-iceblue</id><n...
一、尽量不要使用e.printStackTrace(),而是使用log打印。反例:try{//dowhatyouwant}catch(Exceptione){e.printStackTrace();}正例:try{//dowhatyouwant}catch(Exceptione){log.info("你的程序有异常啦,{}",e);}理由:printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,排查异常日志不太方便。e.printStackTrace()语句产生的字符串记录的是堆栈信息,如果信息太长太多,字符串常量池所在的...
在写入数据库的时候需要有锁,比如同时写入数据库的时候会出现丢数据,那么就需要锁机制。数据锁分为乐观锁和悲观锁,那么它们使用的场景如下:1.乐观锁适用于写少读多的情景,因为这种乐观锁相当于JAVA的CAS,所以多条数据同时过来的时候,不用等待,可以立即进行返回。2.悲观锁适用于写多读少的情景,这种情况也相当于JAVA的synchronized,reentrantLock等,大量数据过来的时候,只有一条数据可以被写入,其他...