Centos多版本Java切换
我在/root/tools/java
目录下下载了两个Java的安装包
alternatives --install /usr/bin/java java /root/tools/java/jdk-21.0.3/bin/java 1
alternatives --install /usr/bin/java java /root/tools/java/jdk1.8.0_411/bin/java 2
我在/root/tools/java
目录下下载了两个Java的安装包
alternatives --install /usr/bin/java java /root/tools/java/jdk-21.0.3/bin/java 1
alternatives --install /usr/bin/java java /root/tools/java/jdk1.8.0_411/bin/java 2
wget https://get.jenkins.io/war-stable/2.452.2/jenkins.war
查看本机有多少Java
/usr/libexec/java_home -V
有这样的场景,根据不同的套餐,有不同的计算方式,全部在一个函数里面,使用if+else不停的判断,导致一个方法堆了成百上千行,而且不同的service里面都有这个关于不同套餐的计算方式。为了解决这个问题,学习使用策略模式消除,使得代码遵循开闭原则,新增新的套餐会变得容易
代码
现在有一个coding函数,我们想要根据传入的codeType来进行判断使用那个编辑器coding,如果这样ifelse写的话,每次新加一个编辑器,这边都要进行修改,不符合软件设计的开闭原则。
参考连接:https://blog.csdn.net/lushuaiyin/article/details/104585630
consul和微服务间的网络不稳定,断开了几分钟。在此情况下,consul向微服务发的健康检查请求发不通,认为微服务挂了,就从服务列表里剔除他。
当网络恢复后,注意,已经剔除的服务,consul是不会主动再发健康检查的。那么服务列表里没有他,也就不正常了。网关的转发都是需要获取可用服务列表,才能做转发的!这时候,你想让微服务注册上consul就只能重启微服务了。这在生产环境意味着什么就不用多说了吧。是不是很坑?
原因:因为consul的健康检查机制是consul主动发
官网:https://easyexcel.opensource.alibaba.com/
依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
Java开启一个线程的源码:
public synchronized void start() {
/**
* This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new functionality added * to this method in the future may have to also be added to the VM. * * A zero status value corresponds to state "NEW". */ if (threadStatus != 0)
throw new IllegalThreadStateException();
/* Notify the group that this thread is about to be started
* so that it can be added to the group's list of threads * and the group's unstarted count can be decremented. */ group.add(this);
boolean started = false;
try {
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
/* do nothing. If start0 threw a Throwable then
it will be passed up the call stack */ }
}
}
private native void start0();
JUC是java.util.concurrent包的简称,即Java并发编程工具包,目的是为了更好地支持高并发任务,让开发者进行多线程编程时有效减少竞争条件和死锁线程。
一些基本概念:
进程与线程:
引入依赖,替换掉mybatis
<!-- <dependency>-->
<!-- <groupId>org.mybatis.spring.boot</groupId>-->
<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!-- <version>2.3.1</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency>