Blog

Java8日期和时间API

mybatis自 3.4.5 开始,已经支持使用LocaldateTime作为时间查询入参,映射类型为TimeStamp,参考地址: https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

1 前言 #

在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病。

在Java SE 8前,日期时间工具库在java.util包中,包括:

  • java.util.Date:表示日期和时间
  • java.util.Calendar以及其实现子类:表示各种日历系统,常用的是格林威治日历java.util.GregorianCalendar
  • java.util.TimeZone以及其实现子类:表示时区偏移量和夏令时

以及辅助其进行格式化和解析的工具库在java.text包中,包括:

  • java.text.DateFormat:格式化日期时间和解析日期时间的工具抽象类
  • java.text.SimpleDateFormat:DateDateFormat的实现
阅读全文 ...

背包问题2例

背包问题其实属于 动态规划Dynamic Programming )问题的一种。动态规划的手段是将大问题拆解为多个小问题,小问题解决之后,大问题也就随之而解。

背包问题的典型描述是:

给定n种物品和一背包。物品i的重量为wi,其价值为vi,背包的容量为c

问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?

阅读全文 ...

事务隔离级别与MVCC

开发过程中,或多或少会碰到需要使用数据库事务的业务场景,而Spring框架提供的能力使得开发者无需过多地关注事务本身,这带来诸多便利,但也带来弊端:开发者只知其貌,而不知其理,一旦Spring框架抛出异常,便往往手足无措。本文简单地介绍了MySQL事务相关的基本概念,使用例证阐述了不同事务隔离级别下MySQL的数据可见性,简单讨论了MySQL如何保证数据一致性。有了这些基本的概念,遇到事务与数据库锁相关的问题时,开发者能够多一点思考。

阅读全文 ...

redis必知必会(转)

简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。

阅读全文 ...

布隆过滤器(转)

海量数据处理以及缓存穿透这两个场景让我认识了 布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章。希望通过这篇文章让更多人了解布隆过滤器,并且会实际去使用它!

下面我们将分为几个方面来介绍布隆过滤器:

  1. 什么是布隆过滤器?
  2. 布隆过滤器的原理介绍。
  3. 布隆过滤器使用场景。
  4. 通过 Java 编程手动实现布隆过滤器。
  5. 利用Google开源的Guava中自带的布隆过滤器。
  6. Redis 中的布隆过滤器。
阅读全文 ...

SpringBoot使用AOP的简单示例

有一个cd接口,其实体类用于播放歌曲,同时我们想在播放歌曲的时候记录每个曲目的播放次数。看起来,记录次数这个事和播放曲目是不相干的事情,当然,我们可以在每首歌曲播放完成之后记录,但是更好的办法是使用一个切面,切入到播放方法中,来完成这件事,这样可以减少无关逻辑对代码的侵入。

阅读全文 ...