漠然

Nothing is impossible to a willing heart!

Quartz 任务强制删除

一、扯淡 公司调度平台使用 Quartz 框架实现,Job 信息持久化到 Oracle 数据库中;坑爹队友在开发环境开发了一个 Job,结果后期需求变更,又将此 Job 实现类移除,但移除代码前未删除相关的数据信息,导致数据库中残留相关 trigger、JobDetails 等信息,最终项目启动初始化 scheduler 失败,整个调度平台不可用…… 二、强删 Job 1、...

vim 笔记

一、Vim 模式 编辑模式 : 键盘操作通常被解析为编辑命令 输入模式 : 大部分键盘操作被存储到文档中 末行模式 : 用于解释运行 Vim 内置命令 二、模式切换 1、 编辑模式 –> 输入模式 i : 在当前光标所在处输入 I : 在当前光标所在行的行首输入 a : 在当前光标所在处后方输入 A : 在当前光标所在行行尾输入 o...

Hexo+Upyun 实现整站全网 CDN

一、upyun 设置 upyun 提供存储型服务,即将任意文件放置 CDN 中,通过其进行全网加速;既然 Hexo 为静态博客,那么理所当然可以将整站文件放入 upyun CDN,同时 upyun CDN 支持绑定自定义 CNAME 域名,结合两者即可实现无服务器的整站全网 CDN 加速;以下为 upyun 相关设置。 1、创建服务 创建 upyun 账号,以及充值省略,首先自定义一...

WebLogic request.getContextPath() 为 null 问题

当使用 Weblogic 作为中间件,并且 Web 项目部署方式为 war 包部署时,jsp 页面request.getContextPath() 将返回 null,此时加入以下代码设置 webRoot 即可: String webRoot = request.getSession().getServletContext().getRealPath("/"); if(webRoot == ...

List 的 UnsupportedOperationException 异常

一、前言 今天偶尔测试 List.remove() 和 List.add() 方法很奇怪的出现了 UnsupportedOperationException 异常,但是 “某些情况下” 调用则不会出现这个异常,由于只考虑了局部代码,所以让我很困惑,以下分析一下 “搞笑的 UnsupportedOperationException” 异常。 二、测试代码 首先一个正常的 // 创建一...

JDK8 新特性

一、接口的默认方法实现 在 JDK8 中,接口允许有默认的实现方法,这些默认的实现方法需要使用 default 关键字修饰即可,同时其实现类可直接调用这些方法;代码示例如下: 1、自定义接口 public interface TestInterface { // 接口方法 public void test(); // 接口默认方法1 default ...

JAXB 笔记

一、简介 JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码! JAXB 原本是 J2...

HotSpot 虚拟机的算法实现

一、概述 HotSpot 虚拟机通过 GC Roots 枚举判定待回收的对象,通过安全点和安全区域确定 GC 的触发点,最后通过各种不同的回收算法完成垃圾回收。 二、GC Roots 枚举过程 GC Roots 枚举最大的困难点在于:检查范围比较大,并且必须在内存快照中进行,保证一致性,而且时间要求比较敏感。 在生产环境中,即使不考虑其它部分内存,仅仅 Java 堆内存就可达几百...

JVM 对象判定和可回收算法

一、可回收对象判定方法 1、引用计数算法 基本原理: 给对象添加一个引用计数器,当有新的地方引用他的时候就将其+1,引用失效则对其-1,知道为0时,说明该对象不被任何引用,可被 GC 回收,如下图所示: 但是这种算法是有缺陷的,比如当 A、B 对象都没有使用时,其应该被 GC 回收,然后根据引用计数器算法,A、B 对象互相持有对方引用,导致两者引用计数器都为1,所以不会被 G...

Java 内存之直接内存

一、概念和特征 直接内存并非 JVMS 定义的标准 Java 运行时内存。 JDK1.4 加入了新的 NIO 机制,目的是防止 Java 堆 和 Native 堆之间往复的数据复制带来的性能损耗,此后 NIO 可以使用 Native 的方式直接在 Native 堆分配内存。 直接内存区域是全局共享的内存区域。 直接内存区域可以进行自动内存管理(GC),但机制并不...