https://www.yiibai.com/javatime/javatime_localdate.html
最近一直在使用Java8,正好上午的时候学习到了关于Java8的新特性之一【LocalDate类】,写下来一些心得和大家分享一下! ...什么都不说,先上代码 这是在看Core Java的时候看着写的,从代码中可以看到,相比较其他日期类,这个类更加的简单,粗暴,可以很方便的对一个日期进行增加天数,减少天数 其中, 获取当前时间 LocalDate
过去,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。...受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。 Optional 被定义为一个简单的容器,其值可能是null或者不是null。...方法 Optional类主要有以下方法: empty(): 返回空的 Optional 实例。 equals(Object obj): 判断其他对象是否等于 Optional。...flatMap(function): 如果值存在,返回经过函数加工的Optional类,否则返回一个空的Optional get(): 如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException
; 用于格式化日期的类DateFormat被放在java.text包中,它是一个抽象类,所以我们需要实例化一个SimpleDateFormat对象来处理日期格式化,并且DateFormat也是非线程安全...Java 8日期/时间类 Java 8的日期和时间类包含LocalDate、LocalTime、Instant、Duration以及Period,这些类都包含在java.time包中,下面我们看看这些类的用法...LocalDate和LocalTime LocalDate类表示一个具体的日期,但不包含具体时间,也不包含时区信息。...是原有的java.util.TimeZone类的替代品。...:日本历 HijrahDate:伊斯兰历 每个日期类都继承ChronoLocalDate类,所以可以在不知道具体历法的情况下也可以操作。
JAVA8实战 - Optional工具类 前言 没错,这又是一个新的专栏,JAVA8可以说是JAVA划时代的一个版本,几乎是让JAVA焕发了第三春(第二春在JDK5),当然里面的新特性也是十分重要的...,虽然Java现在都已经到了10几的版本,但是国内多数使用的版本还是JAVA8,所以这个系列将会围绕Java8的新特性和相关工具做一些总结。...简单介绍 Java8之后新增的一个工具类,在包java.util.Optional,他的作用类似于一个包装器,负责把我们需要操作的对象包装到一个黑盒中,我们可以通过黑盒安全的操作对象的内容。...后面主要提到的是一些Java9的操作,由于本文只涉及Java8的版本,所以更高版本的内容可以从《Effective Java》这本书里面看到。...不要使用包装基本类型的Optional 设计Optional的设计师在考虑的时候,为基础类型也设置了专属的Optional类,然而作者认为这三个类的设计「很垃圾」,并且建议「永远不要返回基本包装类型」
关于Java8工具类Optional的一点使用心得 对于Java开发中遇到的npe(空指针问题),其实使用工具类Optional处理效果一般,个人感觉最大的用处就是可以减少一定的if语句,减少一定的非空判断...工具类 package com.ven.utils; import java.util.ArrayList; import java.util.List; import java.util.Optional...; /** * java 8 Optional 工具类 * @author fhadmin * @from fhadmin.cn * @ version 1.0 */ public class
那就是引入了Optional类。 Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。...所幸OPtional 类的源码加上注释不过三百多行,我就将其中的方法一一道来。
=null) { System.out.println(author.getName()); } } 因此,为了避免出现空指针异常,java8设计了Optional...类. 2 使用 2.1 创建 private static void test28() { Author author= getAuthor(); Optional authorOptional...getAuthor().ifPresent(author1 -> System.out.println(author1.getName())); } 养成使用Optional的习惯以后,就不用记忆哪个类需要非空判断了
JAVA提供了Date和Calendar用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。...一、Date类(java.util.Date) 常用的两个构造方法: 1. Date(); 2.... 因为Date类在设计上存在一些缺陷,所以Java提供了Calendar类更好的处理日期和时间。...Calendar是一个抽象类,它用于表示日历。Gregorian Calendar,最通用的日历,公历。 Calendar与Date都是表示日期的工具类,它们直接可以自由转换。...,如Calendar.YEAR 三、Java8新增java.time包 Clock:该类用于获取指定时区的当前日期、时间。
“ 在前面我们已经谈论过Java8的Lambda表达式,方法引用,Stream。除了这些之外Java8中还有一个很重要的知识:Optional ” ?...、 类依赖分析器jdeps),Stream API,Date Time API(加强对日期与时间的处理),Optional 类,Nashorn和JavaScript 引擎(Java 8提供了一个新的Nashorn...javascript引擎,它允许我们在JVM上运行特定的javascript应用) 那么今天我们就来谈一谈Optional 类,通常来说它是用来解决空指针异常的。...---- 跟小伙伴们分享一下这一周的推送安排,大家可以重点关注自己喜欢的文章(已经发布的大家可以直接点击链接进去哦): 九月10号周一:探究Java8的Stream(一) 九月11号周二:探究Java8...的Stream(二) 九月12号周三:关系型数据库之oracle 九月13号周四:探究Java8的Optional 类 九月14号周五:Effective Java(第三版)——条目十四:考虑实现Comparable
从 Java 8 引入的一个很有趣的特性是 Optional 类。...Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。 简单的示例 我们从一个简单的用例开始。...学习 Optional 类 位置:package java.util; 类名:Optional public final class Optional { /** * 创建出一个
新版本的 Java,比如 Java 8 引入了一个新的 Optional 类。Optional 类的 Javadoc 描述如下: 这是一个可以为 null 的容器对象。...下面会逐个探讨 Optional 类包含的方法,并通过一两个示例展示如何使用。 方法 1:Optional.of() 作用:为非 null 的值创建一个 Optional。...说明:of 方法通过工厂方法创建 Optional 类。需要注意的是,创建对象时传入的参数不能为 null。如果传入参数 为 null,则抛出 NullPointerException 。...简答地说,Consumer 类包含一个抽象方法。该抽 象方法对传入的值进行处理,但没有返回值。...Java8 支持不用接口直接通过 lambda 表达式传入参数,如果 Optional 实例有值,调用 ifPresent()可以接受接口段或 lambda 表达式 //ifPresent 方法接受 lambda
#LocalDateTime 比较大小 计算两个LocalDateTime的时间差时分秒 实体用的都是 年月时间 格式 以下是LocalDateTime 比较方...
为什么引入Optional类? 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。...之前,Google Guava项目曾提出用Optional类来包装对象从而解决NullPointerException。...受此影响,JDK8的类中也引入了Optional类,在新版的SpringData Jpa和Spring Redis Data中都已实现了对该方法的支持。...如何使用Optional类?...总的来说,这个简单而强大的类有助于创建简单、可读性更强、比对应程序错误更少的程序。
特定日期的取得 LocalDateTime nowLocalDateTime = LocalDateTime.now(); L...
Lambda表达式的基础语法 java8中引用了一个新的操作符"->",该操作符称为箭头操作符或者Lambda操作符,箭头操作符将Lambda表达式分为了两部分: 左边:Lambda表达式的参数列表...Lambda表达式需要“函数式接口”的支持 函数式接口:接口中只有一个抽象方法的借口,称为函数式接口,可以使用注解** @FunctionInterface **修饰,可以检查是否是函数式接口 4. java8...,可以使用ClassName :: method (类::实例方法名) 6....数组引用 格式: Type[]::new; Optional类 概念 Optional是一个容器类,代表一个值存在或不存在,原来用null表示值不存在,现在Optional可以更好的表达这个概念...并且可以避免空指针异常 Optional容器类的常用方法 Optional.of(T t):创建一个Optional实例 Optional.empty():创建一个空的Optional实例
前面的文章已经分析过List和Queue相关的接口与并发实现类,本篇我们来分析一下非常Java里面非常重要的一个数据结构HashMap。...(注意Set类型在这里我们不在单独分析,因为Set本身并不能算一种数据结构,它可以借助任何其他数据结构如array或者map类来实现。)...JDK8的源码里仍然保留了Segment类,仅仅是为了兼容旧的版本,不做其他的用途。 前面说过JDK8的ConcurrentHashMap用了数组+链表+红黑树的数据结构,如下图: ?...总结: 本文主要介绍了Java8里面HashMap的相关内容并着重介绍了ConcurrentHashMap的实现和核心方法分析,HashMap是我们日常开发中使用频率最高的类之一,而ConcurrentHashMap...则是在并发编程中的高效工具类,理解其实核心设计,则对我们的工作和学习有很大帮助。
StampedLock类是JDK8里面新增的一个并发工具类,这个类比较特殊,在此之前我们先简单的了解一下关于数据库或者存储系统的锁策略和机制。...对于一个高并发的应用程序来说,数据库常常会成为一个访问的瓶颈,这里面主要存在以下的几种访问情况: (1)读读并发 (2)读写并发 (3)写写并发 一般情况下,数据库都会有读共享写独占的锁并发的方案,也就是说读读并发是没问题的...底层的原理是当前有并发的写线程在独占,那么读线程就直接读取事务log里面的历史最新版本的数据,这样以来就大大提高了并发吞吐能力,虽然读取的数据并不是最新的数据,但是历史上最新的,同时也保持了一致性,目前主流的数据库都支持这种模式...基于上面谈到的这些内容,我们再来分析StampedLock类,就会非常比较容易理解,它实际主要解决的是读写并发场景更加类似于上面我们谈到的MVCC的模式。...StampedLock类的主要特点,我认为有两个: (1)通过乐观读锁支持读写并发,这里使用的是票据对比。
如果你的类库没有使用命名空间定义的话,实例化的时候需要加上根命名空间,官方文档原话 tp中对于没有命名空间的类, 实例化的时候要使用 new \ClassName(); ####第三方类库导入(vendor...方法的别名vendor,专门用于导入第三方类库,并且默认的起始目录和类文件后缀有区别。...use) 应用类库通常是在应用或者模块目录下面的类库,应用类库的命名空间一般就是模块的名称为根命名空间,例如: Home\Model\UserModel类(位于Application\Home\Model...公共类库 (import) 公共类库通常是指ThinkPHP/Library目录下面的类库,例如: Think目录:系统核心类库 Org目录:第三方公共类库...这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。
Java8原子弹类之LongAdder源码分析 JDK 8开始,针对Long型的原子操作, Java又提供了LongAdder....所以,上面的base和Cell[]变量,位于基类Striped64。英文Striped意为“条带”, 即分片。 使用场景 适用于统计求和计数的场景,因为它提供add、sum方法。...hash 到多个 Cell,有限分离,通过分散提升了并行度 但统计时有数据更新,也可能会出现数据误差,但高并发场景有限使用此类,低时还是可以继续 AtomicLong 伪共享与缓存行填充 Cell类定义用了注解
领取专属 10元无门槛券
手把手带您无忧上云