Eureka 是 Netflix 公司出品的实现服务注册和发现的工具,覆盖了服务发现、服务注册、服务下线、服务续约、服务同步等多种功能,其体系包含服务端和客户端,它们之间使用 RestAPI 接口通信,因此我们也可以使用其他语言作为客户端。Spring Cloud 对 Eureka 进行了集成,使其仅需在依赖中引入一个 starter
即可使用。
Java 是一门面向对象的语言,一般情况下,我们要获取一个对象的实例,需要用 new 关键字来创建,而在多数情况下,创建一个实例还需要一些初始设置等其他操作,就是一个过程而不是一个简单的操作。比如有一个客户想要一个小动物,传统的做法就是:
顾名思义,单例就是程序内部只有一个实例。java 单例包含 2 个要点:
- 构造方法私有。只能自己创建实例
- 公开静态访问方法。既然别人不能创建实例了,那么要获取实例,就得提供一个公开的静态方法了
字典序法指对给定的字符集中的字符规定了一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后。因此对于一个给定的序列,我们只要不断求出其下一个排列,直到其没有下一个(没有任何一个元素后面存在“应该在它前面”的元素),便可以逐一列举出当前序列的全部排列。
邻位互换法 由 Johnson-Trotter 首先提出的,算法利用递归思想,将第 n 个数插入到 n-1 阶排列的不同位置,从而得到不同排列。本文将给出算法的原理及 Java 和 Go 语言的代码实现。
本文主要介绍怎么使用 Spring Cloud 快速创建一个 restful 服务。
spring-boot-actuator
模块提供了很多特性让我们可以选择使用 HTTP 或者 JMX 来监视和管理我们的应用,启用这些特性的最简单方式就是在应用加入 spring-boot-starter-actuator
依赖。
jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 threaddump 或者 javacore 文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过 jstack 来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。
DirectMemory 容量可通过 -XX:MaxDirectMemorySize
指定,如果不指定,则默认与 Java 堆最大值( -Xmx
指定)一样,下面程序利用 DirectByteBuffe 模拟直接内存溢出的情况