对比 currentTimeMillis 与 nanoTime

## 简介 在 Java 中有两种获取时间的方式,分别是在 java.lang.System 中的 `public static native long currentTimeMillis()` 和 `public static nat ...

谷歌翻译 API 调用

## 调试接口 由于时常使用[谷歌翻译](https://translate.google.com/),就想着把接口做成服务调用,省去登陆网页的麻烦。 > 需要更好的服务可以使用谷歌云服务 https://cloud.google.c ...

Spring Bean 生命周期简单分析

容器是 Spring 设计中一个核心组件,它负责管理 Bean 实例,并提供了接口 `BeanFactory` 使用。 网上对这个有太多分析的文章了,但大多繁琐不堪,不易新手理解,这里就只对关键步骤做个简单分析。 > 文章中所研究的 ...

爬虫与反爬虫

爬虫与反爬虫是个在软件开发行业里一直存在的斗争。爬虫,一般常见的有窃取同行数据、分析行业数据、恶意攻击等,最终都是以牟利为目的。为了防止爬虫,就诞生了反爬虫技术,通过识别非法操作与正常操作来做到拦截爬虫请求。 下面就来分析一下这些常见的 ...

第五届中间件性能挑战赛

今年参与了阿里巴巴举办的[中间件性能挑战赛](https://tianchi.aliyun.com/competition/entrance/231714/introduction),并且有幸进入到了复赛,虽然后期由于其他原因没法专心参与 ...

Shenandoah GC 介绍

## 介绍 Shenandoah GC 是 OpenJDK 在 JDK12 推出的新一代 `标记整理` 的垃圾回收器,它的目标时为了使大容量内存应用在垃圾回收时只进行短暂的应用暂停,使用 -XX:+UseShenandoahGC 开启。 ...

ZGC 介绍

## 什么是 ZGC 由于现在系统日趋增长的内存,传统的垃圾回收器在整理阶段需要花费更长的时间,为了提高 jvm 在大容量内存应用的回收效率,一款新的垃圾回收器 ZGC 在 JDK11 上正式公布问世。通过配置参数 -XX:+UseZG ...

在非 SpringBoot 工程中实现 Eureka 构建 Feign 服务

## 背景 最近有个需求需要嵌入至其他业务中,其中有个数据需要通过 Eureka 获取,正常情况下使用 `@EnableDiscoveryClient` 和 `@EnableFeignClients` 即可获取服务接口实例。可是由于我使 ...

instanceOf、isInstance、isAssignableFrom 的区别

在 Java 中,对一个类的子类判断有三种方式,分别是 `obj instanceof [TypeName]`、`class.isInstance(obj)`、`class.isAssignableFrom(class)`,他们的作用都是 ...

序列化框架对比

## 背景 最近接到一个需求,涉及到大流量的数据传输,那么就不可避免序列化,正巧我也有想法对最近主流的序列化框架做一次对比。 参数对比的序列化的框架如下,将对 `序列化数据字节大小`、`序列化\反序列化平均耗时`、`序列化\反序列化吞 ...