Night Field's Blog

Make it work, make it right, make it fast.

解决Unable to open debugger port错误

原因 IntelliJ Debug模式下,启动Tomcat报错Unable to open debugger port 可能的原因有二: 目标端口被占用 文件权限不足 解决 目标端口占用 这种情况比较常见。Tomcat启动需要监听一个端口,如果此端口正好被别的程序占用了,就会报这个错。有两个办法可以解决问题: 1. 调整端口: Run/D...

深入理解ThreadLocal

前言 并发是Java开发中绕不开的一个话题。现代处理器都是多核心,想要更好地榨干机器的性能,多线程编程是必不可少,所以,线程安全是每位Java Engineer的必修课。 应对线程安全问题,可大致分为两种方式: 同步: 用Synchronized关键字,或者用java.util.concurrent.locks.Lock工具类给临界资源加锁。 避免资源争用: 将全...

Java四种引用详解

前言 为了满足对不同情况的垃圾回收需求,从Java从版本1.2开始,引入了4种引用类型(其实是额外增加了三种)的概念。本文将详细介绍这四种引用。 Java 4种引用类型 Java中的4中引用类型分别为强引用(String Reference),软引用(Soft Reference),弱引用(Weak Reference)和虚引用(Phantom Reference)。 概念及应用场景...

如何重启Spring Scheduler

背景 定时任务是一个比较常见的功能,在某些情况下,需要重新启动或者是重设Scheduler Job,但是官方的API上都没有提供类似restart的方法,那该如何完成此需求呢? 方案 Spring Quartz Spring Quartz是一整套完整的Cron Job架构,可以完成复杂的任务调度需求,支持任务持久化,事务化,甚至分布式。如果是基于Spring Quartz做的Sche...

InstanceAlreadyExistsException的解决方案

背景 JMX Java Coder们都知道,Java提供了JMX(Java Management Extensions) attach的机制(如JConsole),可以动态获取JVM运行时的一些信息。我们可以自定义MBean,来暴露指定的一些参数值,如DB连接数等。为方便故障排查,我们添加了一些DB相关的metrics,于是在Spring配置文件里面添加了如下代码 1 2 3 4 5 6...

记一次开源类库PF4J的类卸载Bug排查经历

背景 我们有一个Plugin的管理系统,可以实现Jar包的热装载,内部是基于一个Plugin管理类库PF4J,类似于OSGI,现在是GitHub上一个千星项目。 以下是该类库的官网介绍 A plugin is a way for a third party to extend the functionality of an application. A plugin implemen...

SimpleDateFormat线程安全问题深入解析

背景 众所周知,Java中的SimpleDateFormat不是线程安全的,在多线程下会出现意想不到的问题。本文将解析SimpleDateFormat线程不安全的具体原因,从而加深对线程安全的理解。 例子 简单的测试代码,当多个线程同时调用parse方法的时候会出问题: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class SimpleDat...

表重复更新引发的问题

问题描述 我们的工程部署在两个DC上,双活。两边的服务器以及逻辑都是一样的,也分别都有自己的业务。数据库用的Oracle,之间有同步,用的是Quest的DB同步产品shareplex。shareplex的原理是,read进程读取分析数据库的redo log,把需要更新的数据放到queue里面,export进程读取queue的数据,发送到对端的queue里面,由对端的import进程写入对端...

Java反射调用报错java.lang.IllegalArgumentException wrong number of arguments

问题描述 类Target.java有一个execute()方法,用一个String数组作为参数 1 2 3 4 5 public class Target { public void execute(String[] args) { System.out.println("call execute method with parameter type String[...

Typecho上手指南

前言 本文将介绍如何搭建基于Typecho的个人网站,以及分享一些遇到问题的解决方案。 Why Typecho Typecho是一个由国人开发的轻量级CMS,和WordPress一样,可以快速建立个人博客网站。So Why Typecho? WordPress有无数的优点,但是选择Typecho的理由只需一个:简单,简洁,轻量级。 Typecho几乎是专门为个人博客打造的,全部代码不足4...