Timer和ScheduledExecutorService是JDK内置的定时任务方案,而业内还有一个经典的定时任务的设计叫时间轮(Timing Wheel), Netty内部基于时间轮实现了一个HashedWheelTimer来优化百万量级I/O超时的检测,它是一个高性能,低消耗的数据结构,它适合用非准实时,延迟的短 […]
Timer和ScheduledExecutorService是JDK内置的定时任务方案,而业内还有一个经典的定时任务的设计叫时间轮(Timing Wheel), Netty内部基于时间轮实现了一个HashedWheelTimer来优化百万量级I/O超时的检测,它是一个高性能,低消耗的数据结构,它适合用非准实时,延迟的短 […]
序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 什么时候需要用到序列化和反序列化呢? 当我们只在本地 JVM 里运行下 Java 实例, 这个时候是不需要什么序列化和反序列化的, 但当我们需要将内存中的对象持久化到磁盘, 数据库中时, 当 […]
用一句话来总结这种改进就是: 支持唯一性约束和索引将null值视为相同的值。 之前是将null值索引成不同的值,现在可以通过使用unique nulls not distinct创建约束,将null值视为相同的值。 两种unique风格 创建示例表: CREATE TABLE null_old_style ( id B […]
NullPointException应该算是每一个码农都很熟悉的家伙了吧?谁的代码不曾抛过几个空指针异常呢... 比如:你写了段如下的代码: public void getCompanyFromEmployee() { Employee employee = getEmployee(); Company company […]
准备工作: Jetbrains系列产品重置试用插件 MyBatisCodeHelperPro (Marketplace Edition) idea 第一步 方法一)插件市场安装: 在Settings/Preferences... -> Plugins 内手动添加第三方插件仓库地址:http://plugins […]
@Resource和@Autowired这两个注解的作用都是在Spring生态里面去实现Bean的依赖注入。 下面分别说一下@Autowired和@Resource这两个注解。 闪现 [@Autowired的作用详解 ] 几个字。 首先,@Autowired是Spring里面提供的一个注解,默认是根据类型来实现Bean […]
前言 在日常开发中我们经常会将JSON、XML、HTML、SQL、Regex等字符串拷贝粘贴到我们的代码中,而这些字符串往往包含很多的引号",我们就必须将所有引号逐个添加转义符进行转义。这个转义十分麻烦,且容易出错,而当我们们需要替换这些字符串时,重新粘贴进来的文本仍需要再次进行转义,简直让人崩溃。 在我的工 […]
一 引言 作为长期奋战在一线的技术人,我深刻体会到如下几个思维能力对技术人成长的重要性,熟练运用这几种思维可以帮助我们快速的进入到新的领域,在分析、定位和解决问题上有很大帮助。 抽象思维:帮助我们快速抽取面对问题的关键要素和本质,可以是其他能力的“元能力” 分层思维:帮助我们拆解问题,分而治之,划清问题和职责边界 归 […]
在如今的关系型数据库中,有两个开源产品是你必须知道的。其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的。而今天我们将介绍另外一个开源关系型数据库:PostgreSQL,以及在Spring Boot中如何使用。 PostgreSQL […]
三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的。JVM中的CMS、G1垃圾回收器所使用垃圾回收算法即为三色标记法。 三色标记算法思想 三色标记法将对象的颜色分为了黑、灰、白,三种颜色。 白色:该对象没有被标记过。(对象垃圾) 灰色: […]
露从今夜白,月是故乡明。