跳至主要內容
Centos多版本Java切换

Centos多版本Java切换

image-20240707084611598
image-20240707084611598

我在/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

全民制作人ikun小于 1 分钟LinuxJavaLinuxJava
使用策略模式消除ifelse

使用策略模式消除ifelse

有这样的场景,根据不同的套餐,有不同的计算方式,全部在一个函数里面,使用if+else不停的判断,导致一个方法堆了成百上千行,而且不同的service里面都有这个关于不同套餐的计算方式。为了解决这个问题,学习使用策略模式消除,使得代码遵循开闭原则,新增新的套餐会变得容易

策略模式

代码

现在有一个coding函数,我们想要根据传入的codeType来进行判断使用那个编辑器coding,如果这样ifelse写的话,每次新加一个编辑器,这边都要进行修改,不符合软件设计的开闭原则。


全民制作人ikun大约 2 分钟Java设计模式Java设计模式策略模式
consul微服务注册问题

consul微服务注册问题

参考连接:https://blog.csdn.net/lushuaiyin/article/details/104585630

consul和微服务间的网络不稳定,断开了几分钟。在此情况下,consul向微服务发的健康检查请求发不通,认为微服务挂了,就从服务列表里剔除他。

当网络恢复后,注意,已经剔除的服务,consul是不会主动再发健康检查的。那么服务列表里没有他,也就不正常了。网关的转发都是需要获取可用服务列表,才能做转发的!这时候,你想让微服务注册上consul就只能重启微服务了。这在生产环境意味着什么就不用多说了吧。是不是很坑?
原因:因为consul的健康检查机制是consul主动发


全民制作人ikun小于 1 分钟Java微服务Java微服务
Easy Excel

Easy Excel

官网: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>

全民制作人ikun大约 2 分钟JavaEasy ExcelJavaEasyExcel
JUC并发编程与源码分析

JUC并发编程与源码分析

线程基础知识复习

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();

全民制作人ikun大约 29 分钟JavaJUCJavaJUC
JUC并发编程

JUC并发编程

JUC概述

JUC是java.util.concurrent包的简称,即Java并发编程工具包,目的是为了更好地支持高并发任务,让开发者进行多线程编程时有效减少竞争条件和死锁线程。

并发编程

一些基本概念:

进程与线程:

  • 进程:程序是静止的,进程实体的运行过程就是进程,是系统进行资源分配的基本单位
  • 线程:线程是属于进程的,是一个基本的 CPU 执行单元,是程序执行流的最小单元。线程是进程中的一个实体,是系统独立调度的基本单位,线程本身不拥有系统资源,只拥有一点在运行中必不可少的资源,与同属一个进程的其他线程共享进程所拥有的全部资源

全民制作人ikun大约 42 分钟JavaJUC并发编程JavaJUC并发编程
Mybatis-Plus

Mybatis-Plus

官网:Mybatis-plus官网

快速入门

引入依赖,替换掉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>

全民制作人ikun大约 16 分钟JavaMybatis-plusJavaMybatis-Plus
2
3