it.sauronsoftware(pom.xml包)没导入解决、单例模式、JavaScript中的undefined null

it.sauronsoftware(pom.xml包)没导入解决

在这里插入图片描述
在这里插入图片描述
包在网盘里
链接:https://pan.baidu.com/s/1tI8rRI8tRcPfD9cNMgSVAw
提取码:wab4
复制这段内容后打开百度网盘手机App,操作更方便哦
在这里插入图片描述

mvn install:install-file -Dfile=E:\jave-1.0.2.jar -DgroupId=it.sauronsoftware -DartifactId=jave -Dversion=1.0.2 -Dpackaging=jar

E:\jave-1.0.2.jar是你本地放入包路径
在这里插入图片描述

刷新一下即可
在这里插入图片描述

如果一个类始终只能创建一个实例,则这个类成为单例类------单例模式

/**
 * @author samxie
 * @version 1.0
 * @date 2022/5/26 11:01
 **/
public class SingletonTest {
    public static void main(String[] args) {
        //如果一个类始终只能创建一个实例,则这个类成为单例类。。。。单例模式
        //Spring容器所管理的Bean实例默认是到哪里,可以通过scope来修改其行为方式
        //优势:减少系统开销,不用每次都创建新的实例
        //方便系统跟踪单个实例的生命周期与实例状态
        Singleton instance = Singleton.getInstance();
        Singleton instance1 = Singleton.getInstance();
        System.out.println(instance == instance1);
    }
}

class Singleton {
    //使用一个类变量缓存创建的实例
    private static Singleton instance;

    //构造器
    private Singleton() {

    }

    //提供一个静态方法,用于返回Singleton实例
    public static Singleton getInstance() {
        if (null == instance) {
            instance = new Singleton();
        }
        return instance;
    }

}

在这里插入图片描述

单例模式:一个实例对象,指的是一个程序运行期间,某个类最多只可以创建一个对象—单例模式 1、构造方法私有化 2、定义私有、静态本类类型的成员属性 饿汉式:先创建对象 懒汉式:不先创建对象

单例模式:一个实例对象,指的是一个程序运行期间,某个类最多只可以创建一个对象—单例模式
1、构造方法私有化
2、定义私有、静态本类类型的成员属性
饿汉式:先创建对象
懒汉式:不先创建对象(至少是被动的)
3、饿汉式:由于已经创建对象,直接返回成员属性
懒汉式:要先判断成员属性是否为null,是创建对象,之后返回成员属性

import org.junit.Test;

import java.time.temporal.ValueRange;

/**
 * @author: samxie
 * @create: 2022/5/27
 * @Description:
 * @FileName: SingletonNewTest
 * @History:
 * @自定义内容:一个实例对象,指的是一个程序运行期间,
 * 某个类最多只可以创建一个对象---单例模式
 */
public class SingletonNewTest {
    @Test
    public void test() {
        //这种就是单例模式饿汉式的(那个人很饿,只要有东西可以就去吃),线程安全 先创建对象
        Student student = Student.getInstance();
        Student student1 = Student.getInstance();
        System.out.println(student1 == student);
        //true
    }

    //懒汉先不创建对象
    @Test
    public void test1() {
        //这种就是单例模式懒汉的普通,线程不安全
        Student1 student = Student1.getInstance();
        Student1 student1 = Student1.getInstance();
        System.out.println("===" + (student1 == student));
        //true

    }

    //懒汉先不创建对象
    @Test
    public void test2() {
        //这种就是单例模式懒汉的升级,线程不安全
        LazyDoubleCheckSingleton student = LazyDoubleCheckSingleton.getInstance();
        LazyDoubleCheckSingleton student1 = LazyDoubleCheckSingleton.getInstance();
        System.out.println("===!!!!" + (student1 == student));
        //true
    }
}

class Student {
    private Student() {

    }

    //先创建对象
    private static Student stu = new Student();

    public static Student getInstance() {
        return stu;
    }
}


class Student1 {
    private Student1() {

    }

    //没有new对象
    private static Student1 stu;

    public static synchronized Student1 getInstance() {
        if (stu == null) {
            stu = new Student1();
        }
        return stu;
    }
}

 class LazyDoubleCheckSingleton {
    private LazyDoubleCheckSingleton() {

    }
    private volatile static LazyDoubleCheckSingleton a;

    //直接使用new就不能实现好的设计,这时候需要使用间接使用new, getInstance也是创建对象一种方法
    //getInstance在主函数开始时调用,返回一个实例化对象,此对象是static
     public static LazyDoubleCheckSingleton getInstance() {
         if (null == a) {
             synchronized (LazyDoubleCheckSingleton.class) {
                 if (null == a) {
                     a = new LazyDoubleCheckSingleton();
                 }
             }
         }
         return a;
    }
 }

JavaScript中的undefined null

underfined是var 变量没有赋值的情况,可用null覆盖


<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org/">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <base th:href="${#servletContext.getContextPath+'/'}">

</head>

<body>

<script>

    var username;

    document.write(username+"<br>");

    var username = null;

    document.write(username+"<br>");

</script>

 

</body>

</html>

 

结果

undefined

null