如何在Java8中处理日期和时间

1. 前言

在 Java 8 之前处理日期时间的 API 存在着一些诸如非线程安全、设计差、时区处理麻烦等问题,为了解决这一系列的问题,Java 8 推出了全新的日期时间 API 供使用,包路径为 java.time

其中最常使用的为下面的几个类

  • Instant:瞬时实例
  • LocalDate:本地日期,不包含具体时间
  • LocalTime:本地时间,不包含日期
  • LocalDateTime:组合了日期和时间,但不包含时差和时区信息。
  • ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。

下面将举出具体例子来详细介绍

JWT整合Spring Security

1. 前言 之前介绍了一下 JWT ,在最后提到了 JWT 本身没啥难度,但安全整体是一个比较复杂的事情,JWT 只不过提供了一种基于 token 的请求验证机制。但我们的用户

了解JSON Web Token(JWT)

1. 前言

互联网服务离不开用户认证,一般流程是下面这样。

1、用户向服务器发送用户名和密码。

2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。

3、服务器向用户返回一个 session_id,写入用户的 Cookie。

4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。

5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。

这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。

举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用户只要在其中一个网站登录,再访问另一个网站就会自动登录,请问怎么实现?

一种解决方案是 session 数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请求数据。这种方案的优点是架构清晰,缺点是工程量比较大。另外,持久层万一挂了,就会单点失败。

另一种方案是服务器索性不保存 session 数据了,所有数据都保存在客户端,每次请求都发回服务器。JWT 就是这种方案的一个代表。

下面介绍 JWT 的使用。

Maven更换阿里镜像

1. 前言 Maven 默认的中央仓库速度慢,可以考虑换成阿里的镜像。修改方式主要有两种,全局修改和针对当前项目的修改。 2. 全局修改 2.1 Windows Windows 下 maven 的 .m2 文件夹地址在

Ubuntu 18.04.2 安装redis

1. 前言 Redis 是目前业界使用最广泛的内存数据存储。相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化。除此之

JPA踩坑记录

以下是本人使用 JPA 的时候遇到的坑,记录一下 在使用的时候,能使用单向关联就尽量不要用双向关联,如果使用双向关联,请记得一定要在非主控端加上 @JsonIgnore 等让