在JDK1.7中引入了一种新的Fork/Join线程池,它可以将一个大的任务拆分成多个小的任务并行执行并汇总执行结果。 Fork/Join采用的是分而治之的基本思想,分而治之就是将一个复杂的任务,按照规定的阈值划分成多个简单的小任务,然后将这些小任务的结果再进行汇总返回,得到最终的任务。
ForkJoinPool是用于运行ForkJoinTasks的线程池,实现了Executor接口。 可以通过new ForkJoinPool()直接创建ForkJoinPool对象。
javapublic ForkJoinPool() {
this(Math.min(MAX_CAP, Runtime.getRuntime().availableProcessors()),
defaultForkJoinWorkerThreadFactory, null, false);
}
public ForkJoinPool(int parallelism,
ForkJoinWorkerThreadFactory factory,
UncaughtExceptionHandler handler,
boolean asyncMode){
this(checkParallelism(parallelism),
checkFactory(factory),
handler,
asyncMode ? FIFO_QUEUE : LIFO_QUEUE,
"ForkJoinPool-" + nextPoolId() + "-worker-");
checkPermission();
}
通过查看构造方法源码我们可以发现,在创建ForkJoinPool时,有以下4个参数:
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
使用redis集群时,从机在redis.windows.conf中修改port为6380,启动后还是使用的是6379,导致窗口闪退,启动失败
未读取到redis.windows.conf中的信息,还是使用的是默认的配置信息
进入redis目录下,打开命令行输入:
redis-server.exe ./redis.windows.conf
即可启动成功
Zuul 是 Netflix 提供的一个基于 JVM 的网关服务,其主要作用是将所有请求转发到相应的后端服务。Zuul 主要有以下几个特点:
在Zuul的组件中,主要由以下几个部分组成:
核心模块:包含了Zuul的核心代码,负责接收和处理外部请求,并进行路由、过滤等操作。其中,核心模块还包含了Zuul的主要配置类和启动类,用于对整个系统进行配置和启动。
路由模块:负责请求的路由功能,可以根据不同的路径或请求头信息对请求进行分发,并将请求发送到后端对应的服务实例中。
过滤器模块:提供了基于拦截器的过滤功能,可以对请求进行鉴权、限流、重试等操作,并对响应进行处理和转换。
发现模块:用于注册和发现后端服务实例,可以通过各种服务发现机制(如Eureka、Consul等)实现服务的自动发现和负载均衡。
监控模块:提供了一系列的监控指标和报告,可以帮助用户对系统进行实时监控和分析,以便及时发现和排查问题。
AspectJ是一种面向切面编程(AOP)的框架,它可以在不修改原有代码的情况下,为其添加额外的行为。AspectJ使用三个核心心心概念:连接点(Join Point),切面(Aspect),和建议(Advice)
该类使用AspectJ注解来实现日志记录
连接点(Join Point)是指需要被切面影响的方法或构造器。您可以使用pointcut语句来定义连接点
java@Pointcut("execution(public * com.test.controller..*.*(..))")
public void webLog() {}
切面(Aspect)是指包含pointcut和建议的类。您可以使用@Aspect注解来标记一个类为一个切面,例如:
java@Aspect
@Component
public class WebLogAcpect {
// ...
}
建议(Advice)是指在连接点之前或之后执行的方法。您可以使用@Before, @After, @Around等注解来标记一个方法为一个建议,例如:
java
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// ...
}