Java:枚举类型

news2024/11/26 16:57:27

Java:枚举类型

在这里插入图片描述


每博一文案

师父说:人活一世,每个人都有他的特别,每个人都值得被温柔相待。红尘一遭,每段经历都有它的必然,
每段经历都造就了现在的你,最快乐的事情,就是做自己,最浪漫的事情,就是爱自己。致自己,这段话永不过期。
没有别人天生好命,就要学会后天自己拼命,没有别人可以依靠,就要学会独立创造幸福。
路,是靠自己一步一步走的,钱,是靠自己一分分赚的。财富,需要勤劳的付出,辉煌,需要顽强的拼搏。
心酸,苦酒,自己品尝,大风大浪自己挡,靠自己,最争气。
有些事,不能尽如意,有些情,不会久燃不熄,日久不一定生情,但一定能够见人心。
感情不是你对他好,他就会懂你的用心良苦。你再优秀,也会有人对你不屑一顾,
你再平凡,也会有人把你视若生命,捂不热的心,就不要暖了,等不到的人,就不要等了。
谁若真心待你,你就拿命去珍惜。谁若对你无情,你就报之以绝情。想要的人生自己赚,
满意的幸福自己争取,不亏待每一份热情,不讨好任何的冷漠。
愿你成为自己的太阳,也愿你的身后总有力量,你期待的一切,都会如约而至。
                                     ——————   一禅心灵庙语

文章目录

  • Java:枚举类型
    • 每博一文案
    • 1. 枚举类型的介绍
    • 2. 自定义枚举类型
    • 3. JDK 5.0 enum 定义枚举类
    • 4. JDK5.0 enum 定义枚举类的常用方法
    • 5. 总结:
    • 6. 最后:

1. 枚举类型的介绍

一个 枚举类型 是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。常见的例子包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和一周的几天。

因为它们是常量,枚举类型的字段的名称是大写字母。

对于类的对象有限,并且确定的,才可以使用 枚举类型 ,如:

  • 星期:Monday(星期一)、…、Sunday(星期天)

  • 性别:Man(男)、Woman(女)

  • 季节:Spring(春节)…Winter(冬天)

  • 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银 行卡)、CreditCard(信用卡)

  • 就职状态:Busy、Free、Vocation、Dimission

  • 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、

  • Return(退货)、Checked(已确认)Fulfilled(已配货)、

  • 线程状态:创建、就绪、运行、阻塞、死亡

像 一天中是温度变化,就仅仅是在一个范围内,是有限的,但是却不是确定的

2. 自定义枚举类型

枚举类的实现:

JDK1.5 之前需要自定义枚举类。

JDK1.5 新增的 enum 关键字用于定义枚举类。

若枚举只有一个对象,则可以作为一种单例模式的实现方式。

枚举类的属性

  • 枚举类对象的属性不应允许被改动的,所以应该使用 private final 修饰
  • 枚举类的使用 private final 修饰的属性应该在构造器中为其赋值,注意: 了 对于 final 修饰的属性/变量 必须赋值,如果不赋值,会报异常。
  • 若枚举类显式 的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数
  • 私有化 类的构造器,保证不能在类的外部创建其对象,保证其 枚举类的安全性。
  • 在类的内部创建枚举类的实例。声明为 : public static final
  • 对象如果有实例变量,应该声明为 private final ,并在构造器中初始化。

举例: 基于 JDK5.0 之前的方式:自定义一个枚举类,一个关于四季的枚举类型。

package blogs.blog6;


class Season {
    // 1.创建枚举类中的含有的特定的属性: 注意是被: private final 修饰的,也可以没有枚举类特有的属性
    private final String stringName;
    private final String stringDesc;

    // 2.创建枚举类常量: 注意是: public static final 修饰的,常量所有字母大写的
    // 被 static 修饰,静态的和类一起加载到内存当中,仅仅只会加载一次,所以对象共用,可以直接使用 "类名.常量"的方式访问
    public static final Season SPRING = new Season("春天", "春暖花开");
    public static final Season SUMMER = new Season("夏天","夏日炎炎");
    public static final Season AUTUMN = new Season("秋天","秋高气爽");
    public static final Season WINTER = new Season("冬天","冰天雪地");



    // 3. 构造器私有化: 将枚举类定义的特定的被 final 修饰的属性,附上值。
    // 注意: 被 final 修饰的属性/变量,必须赋值,不然报异常
    private Season(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }

    // 4. 其他诉求的方法的定义: 这里我们定义一个获取 属性的get方法
    // 因为属性被 final 修饰了,所以我们不需要创建 set方法

    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }

    // 或者来一个重写 toString()方法

    @Override
    public String toString() {
        return "Season{" +
                "stringName='" + stringName + '\'' +
                ", stringDesc='" + stringDesc + '\'' +
                '}';
    }
}

public class EnumTest {
    public static void main(String[] args) {
        // 访问自定义的枚举类型的常量,static 静态的,使用类名.常量名
        System.out.println(Season.AUTUMN);
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.WINTER);
        

    }

}

在这里插入图片描述

3. JDK 5.0 enum 定义枚举类

在 Java 编程语言中,基于 JDK5.0 的前提下,您可以使用 enum 关键字定义枚举类型。

使用说明:

  • 使用 enum 定义的枚举类 默认继承java.lang.Enum 类,因此不能再继承其他类。
  • 枚举类的构造器只能使用 private 权限修饰符。
  • 枚举类的所有实例必须在枚举类中显式列出(,分隔 ; 结尾). 列出的实例系统会 自动添加 public static final 修饰,
  • 对于枚举类中的常量必须定义声明在第一行枚举类对象。

举例: 基于上述:自定义一个枚举类,一个关于四季的枚举类型。上面我们使用的是在 JDK 5.0 之前自行定义的方式,这里我们基于 JDK 5.0以后的方式创建。

在这里插入图片描述

在这里插入图片描述

package blogs.blog6;


// 使用JDK5.0 新特性中的定义枚举类关键字 enum
enum Season2 {

    // 1. 首先将枚举类中的常量定义在第一行,如果不是定义在定义行的话,编译报错的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开"),    // 注意: 因为要定义在第一行,所以枚举常量之间使用","逗号分隔
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高气爽"),
    WINTER("冬天", "冰天雪地");    // 最后使用,“;”分号结束 枚举常量的定义

    // 2. 定义枚举类型特有的属性
    // 注意: 被 private final 修饰防止被修改,这个根据需求设定就好,可以没有
    private final String stringName;
    private final String stringDesc;


    // 3. 私有化构造器(因为定义了枚举类特定的属性,所以需要额外定义构造器为其赋值),没有特定属性的话,可以省略的
    // final 必须赋值,不然报异常
    private Season2(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }


    // 4.处理特定的诉求 这里我们定义 get方法()
    // 因为 特定的属性被 final 修饰了,所以不用定义 set的
    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }


}

public class EnumTest2 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.AUTUMN);
        System.out.println(Season2.SUMMER);
        System.out.println(Season2.WINTER);
    }

}

在这里插入图片描述

注意: 这里的 enum 类继承的不是 Object 类,而是 java.lang.Enum 类中的,所以 Season2.SPRING 枚举常量类中没有重写 toStirng()方法的前提下,调用的是 java.lang.Enum 类中的 toString()方法,返回的是 枚举常量名。 所以结果就如上图中的 : SPRING,AUTUMN,SUMMER,WINTER 的枚举常量名。

在这里插入图片描述

在这里插入图片描述

// 使用JDK5.0 新特性中的定义枚举类关键字 enum
enum Season2 {

    // 1. 首先将枚举类中的常量定义在第一行,如果不是定义在定义行的话,编译报错的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开"),    // 注意: 因为要定义在第一行,所以枚举常量之间使用","逗号分隔
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高气爽"),
    WINTER("冬天", "冰天雪地");    // 最后使用,“;”分号结束 枚举常量的定义

    // 2. 定义枚举类型特有的属性
    // 注意: 被 private final 修饰防止被修改,这个根据需求设定就好,可以没有
    private final String stringName;
    private final String stringDesc;


    // 3. 私有化构造器(因为定义了枚举类特定的属性,所以需要额外定义构造器为其赋值),没有特定属性的话,可以省略的
    // final 必须赋值,不然报异常
    private Season2(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }


    // 4.处理特定的诉求 这里我们定义 get方法()
    // 因为 特定的属性被 final 修饰了,所以不用定义 set的
    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }


}

public class EnumTest2 {
    public static void main(String[] args) {
        // 打印其中的 enum 的父类
        System.out.println(Season2.class.getSuperclass());
    }
}

在这里插入图片描述

JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举

类作为限定。

举例: 将指定一个星期的枚举类型为:

// 静态常量,导入对于特定的包,对于静态常量可以省略类名,直接使用常量名的方式
import static blogs.blog6.Day.SUNDAY;

// 枚举类型也是可以被权限修饰符修饰的
enum Day {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,   // 枚举常量大写字母,必须定义在第一行当中,使用“,”逗号分隔开,
    THURSDAY,
    FRIDAY,
    SATURDAY;   // 最后“;” 分号结尾

}

public class EnumTest3 {
    public void tellItLikeItIs(Day day) {
        switch (day) {
            case MONDAY:
                System.out.println("星期一是糟糕的");
                break;

            case FRIDAY:
                System.out.println("星期五是最爽的");
                break;

            case SATURDAY:
            case SUNDAY:
                System.out.println("周末是最最安逸的");
                break;

            default:
                System.out.println("其他时间一般");
                break;
        }
    }


    public static void main(String[] args) {
        // 静态方法调用非静态方法
        EnumTest3 enumTest3 = new EnumTest3();
        enumTest3.tellItLikeItIs(Day.MONDAY);
        enumTest3.tellItLikeItIs(Day.WEDNESDAY);
        enumTest3.tellItLikeItIs(Day.FRIDAY);
        enumTest3.tellItLikeItIs(Day.SATURDAY);
        enumTest3.tellItLikeItIs(SUNDAY);
    }
}

在这里插入图片描述

4. JDK5.0 enum 定义枚举类的常用方法

注意: 这里的方法是,基于 JDK5.0 enum 关键字定义的枚举类才有的方法。

  • values() 方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。这是一个静态方法/类方法 可以直接使用类名调用。

举例:

// 使用JDK5.0 新特性中的定义枚举类关键字 enum
enum Season2 {

    // 1. 首先将枚举类中的常量定义在第一行,如果不是定义在定义行的话,编译报错的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开"),    // 注意: 因为要定义在第一行,所以枚举常量之间使用","逗号分隔
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高气爽"),
    WINTER("冬天", "冰天雪地");    // 最后使用,“;”分号结束 枚举常量的定义

    // 2. 定义枚举类型特有的属性
    // 注意: 被 private final 修饰防止被修改,这个根据需求设定就好,可以没有
    private final String stringName;
    private final String stringDesc;


    // 3. 私有化构造器(因为定义了枚举类特定的属性,所以需要额外定义构造器为其赋值),没有特定属性的话,可以省略的
    // final 必须赋值,不然报异常
    private Season2(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }


    // 4.处理特定的诉求 这里我们定义 get方法()
    // 因为 特定的属性被 final 修饰了,所以不用定义 set的
    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }

    // 重写toString方法


    @Override
    public String toString() {
        return "Season2{" +
                "stringName='" + stringName + '\'' +
                ", stringDesc='" + stringDesc + '\'' +
                '}';
    }
}

public class EnumTest2 {
    public static void main(String[] args) {
        Season2[] season2s = Season2.values();  // 返回枚举类中所有的常量值,存储到枚举类数组中

        // 遍历获取到其中,枚举类数组
        for(int i = 0; i < season2s.length; i++) {
            System.out.println(season2s[i]);  // 如果重写了toString()方法,就调用的是重写的toString()方法
        }
    }
}

在这里插入图片描述

  • valueOf(String str): 可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象中存在的“名字”。如不是,会有运行时异常:IllegalArgumentException。
    在这里插入图片描述

举例:

// 使用JDK5.0 新特性中的定义枚举类关键字 enum
enum Season2 {

    // 1. 首先将枚举类中的常量定义在第一行,如果不是定义在定义行的话,编译报错的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开"),    // 注意: 因为要定义在第一行,所以枚举常量之间使用","逗号分隔
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高气爽"),
    WINTER("冬天", "冰天雪地");    // 最后使用,“;”分号结束 枚举常量的定义

    // 2. 定义枚举类型特有的属性
    // 注意: 被 private final 修饰防止被修改,这个根据需求设定就好,可以没有
    private final String stringName;
    private final String stringDesc;


    // 3. 私有化构造器(因为定义了枚举类特定的属性,所以需要额外定义构造器为其赋值),没有特定属性的话,可以省略的
    // final 必须赋值,不然报异常
    private Season2(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }


    // 4.处理特定的诉求 这里我们定义 get方法()
    // 因为 特定的属性被 final 修饰了,所以不用定义 set的
    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }

    // 重写toString方法


    @Override
    public String toString() {
        return "Season2{" +
                "stringName='" + stringName + '\'' +
                ", stringDesc='" + stringDesc + '\'' +
                '}';
    }
}

public class EnumTest2 {
    public static void main(String[] args) {
        Season2 season2 = Season2.valueOf("SPRING");  // valueOf()类方法,返回对应枚举常量名的对象
        System.out.println(season2);
    }
}

在这里插入图片描述

如果不是 valueOf(String name) 参数的字符串名,必须是对应枚举类中所存在的枚举常量名,如果不是,报:java.lang.IllegalArgumentException 异常

在这里插入图片描述

  • toString():返回当前枚举类对象常量的名称。这个方法和我们以前的方法是一样的。

和普通 Java 类一样,枚举类可以实现一个或多个接口。若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可。

若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,,则可以让每个枚举值分别来实现该方法。

举例: 这里我们定义一个 inof 接口,其中定义一个 show() 抽象方法, 再定义一个 enum 枚举类,实现该接口,并重写其中的 show()重写方法。做到每个枚举值(枚举常量值)在调用实现的接口 show()方法呈现出不同的行为方式,


interface Info {
    public abstract void show();

}

//  enum 枚举类 implements 接口
enum Season5 implements Info {

    // 1. 首先将枚举类中的常量定义在第一行,如果不是定义在定义行的话,编译报错的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开") {
        // 枚举值(枚举常量值)实现对应接口的抽象方法
        @Override
        public void show() {
            System.out.println("找春天");
        }
    },    // 注意: 因为要定义在第一行,所以枚举常量之间使用","逗号分隔
    SUMMER("夏天", "夏日炎炎") {
        @Override
        public void show() {
            System.out.println("夏日,蝉鸣");
        }
    },
    AUTUMN("秋天", "秋高气爽") {
        @Override
        public void show() {
            System.out.println("秋日,枫叶飞舞");
        }
    },
    WINTER("冬天", "冰天雪地") {
        @Override
        public void show() {
            System.out.println("冬日,雪花飞舞");
        }
    };    // 最后使用,“;”分号结束 枚举常量的定义

    // 2. 定义枚举类型特有的属性
    // 注意: 被 private final 修饰防止被修改,这个根据需求设定就好,可以没有
    private final String stringName;
    private final String stringDesc;


    // 3. 私有化构造器(因为定义了枚举类特定的属性,所以需要额外定义构造器为其赋值),没有特定属性的话,可以省略的
    // final 必须赋值,不然报异常
    private Season5(String stringName, String stringDesc) {
        this.stringName = stringName;
        this.stringDesc = stringDesc;
    }


    // 4.处理特定的诉求 这里我们定义 get方法()
    // 因为 特定的属性被 final 修饰了,所以不用定义 set的
    public String getStringName() {
        return stringName;
    }

    public String getStringDesc() {
        return stringDesc;
    }

    // 重写toString方法


    @Override
    public String toString() {
        return "Season5{" +
                "stringName='" + stringName + '\'' +
                ", stringDesc='" + stringDesc + '\'' +
                '}';
    }
}



public class EnumTest5 {
    public static void main(String[] args) {
        Season5[] values = Season5.values();  // 静态方法/类方法:获取到对应枚举类中所有的枚举值(枚举常量值),并存储在数组中

        for(int i = 0; i < values.length; i++) {
            values[i].show();  // 调用对应枚举值(枚举常量值)中特有的方法
        }
    }
}

在这里插入图片描述

5. 总结:

  • 对于类的对象有限,并且确定的,才可以使用 枚举类型 。
  • 当需要定义一组常量时,强烈建议使用枚举类
  • JDK 5.0 定义枚举类的关键字 enum 其中枚举值,省略了 public static final Season 和 new Season的
    // 省略了 public static final Season 和 new Season的
    // public static final Season SPRING = new Season("春天", "春暖花开");
    SPRING("春天", "春暖花开"),
  • JDK5.0 enum 定义的枚举类中的枚举值(枚举常量值**)必须**在第一行中定义,不然编译无法通过。正是因为必须定义在第一行:所以每个枚举值(枚举常量值)之间使用 逗号"," 号分隔开,最后一个枚举值,使用“;” 分号结束。
  • JDK5.0 enum 定义的枚举类 和普通的类是一样的单继承,多接口实现。
  • JDK5.0 enum 定义的枚举类 的父类是 java.lang.Enum 抽象类,不是 Object 的类。
  • JDK5.0 enum 定义的枚举类 常用的三个方法 values(),valueOf()这两个都是静态方法。以及一个 toString()方法。

6. 最后:

限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,江湖再见,后会有期 !!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程案例之定时器

一. 定时器概述 1. 什么是定时器 定时器是一种实际开发中非常常用的组件, 类似于一个 “闹钟”, 达到一个设定的时间之后, 就执行某个指定好的代码. 比如网络通信中, 如果对方 500ms 内没有返回数据, 则断开连接尝试重连.比如一个 Map, 希望里面的某个 key 在 3s 之后过期(自…

排序算法: 数据的离散化(排序+去重 C++例题实现)

文章目录数据的离散化例题&#xff1a;电影完整代码数据的离散化 离散化是指将一个无穷大的集合中的若干个元素映射到一个有限的集合中&#xff0c;以便于对那个无穷大的集合进行操作。 在很多情况下&#xff1a;对于一个规定在Z范围内的整数范围&#xff0c;他有可能包含非常…

maven创建自定义web工程模板

一&#xff0c;先搭建好一个项目模板。 注意每个文件夹下都放一个文件占位&#xff0c;否则创建模板时会认为是空目录不进行创建。 注意项目文件夹名字 和 pom.xml 中<artifactId 和 <name 的名字都使用相同的名字&#xff0c;写一个好记的名字&#xff0c;因为后面生…

QT UI布局设置整理-边框设置

一、设置边距的方法 1、设置容器内部的内容控件的边距 //设置容器leftBar&#xff08;QWidget&#xff09;内部marginui->leftBar->setContentsMargins(10,10,0,0); 2、 设置内部控件之间的间距 //editWidget是一个QWidget ui->editWidget->layout()->setSpac…

【云原生kubernetes】k8s中控制器使用详解

一、什么是控制器 控制器是管理pod的中间层&#xff0c;只需要告诉Pod控制器&#xff0c;想要创建多少个什么样的Pod&#xff0c;它会创建出满足条件的Pod &#xff1b;控制器相当于一个状态机&#xff0c;用来控制Pod的具体状态和行为 &#xff1b;controller会自动创建相应的…

【数据库概论】3.2 SQL的查询、更新和删除语句

一、 数据查询 SQL提供SELECT语句用于查询&#xff0c;一般格式为&#xff1a; 根据WHERE子句条件表达式从FROM子句指定的基本表、视图中找出满足条件的元组 GROUP BY语句则用作将结果按照<列名1>的值进行分组&#xff0c;该属性列值相等的元组为一个组&#xff1b;ORD…

Essential C++第五章习题

目录 5.1 5.2 5.3 5.4 5.1 C代码&#xff1a; //Stack.h#include<vector> #include<string> #include<iostream> using namespace std;#pragma once#ifndef _STACK_H_ #define _STACK_H_typedef string elemType;class Stack { public://基类的析构函数…

【JavaSE专栏5】Java 基本数据类型和取值范围

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

Mine Goose Duck 0.2版本发布

本次我增加了模组的1.16.5和1.18.2的适用版本&#xff0c;新增了一些职业和装扮 1.新职业 1.冒险家 你不会死于摔伤、溺水、火烧、冰冻。 2.工程师 你可以修改888范围内红石设备的状态。 3.模仿者 怪物认为你是他们的一员。 4.加拿大鹅 你会自动报警并召唤警车。 5.…

深度卷积对抗神经网络 基础 第三部分 (WGAN-GP)

深度卷积对抗神经网络 基础 第三部分 (WGAN-GP&#xff09; Wasserstein GAN with Gradient Penalty (WGAN-GP) 我们在训练对抗神经网络的时候总是出现各种各样的问题。比如说模式奔溃 (mode collapse)和 梯度消失&#xff08;vanishing gradient&#xff09;的问题。 比如说…

在linux下安装docker

文章目录 目录 文章目录 前言 一、docker 二、使用步骤 1.环境准备 2.安装 三、配置阿里云镜像加速 四、卸载 总结 前言 一、docker 镜像&#xff08;image&#xff09;&#xff1a; docker镜像就好比是一个模板&#xff0c;可以通过这个模板来创建容器服务&#xff0c;tomc…

【攻坚克难】详解k8s持久化存储数据pv、pvc存储问题

问题 如图:pod中的容器,创建一个包含文件的目录,重启pod或系统重启后,此目录及其文件都会丢失,如何保证其不会丢失? 图 1 创建包含文件的目录 方法 分析:用pv、pvc为k8s持久化存储数据是最好的选择,可解决上述问题。流程:pv → pvc → pod把创建的目录挂载到pvc上步…

路由 OSPF 优化(FA地址、路由汇总、路由过滤、区域认证、接口认证)

1.2.0 路由 OSPF 优化&#xff08;FA地址、路由汇总、路由过滤、区域认证、接口认证&#xff09; 一、FA地址 该文章介绍的FA地址说辞简单易懂&#xff1a;路由协议系列之六&#xff1a;OSPF FA地址 产生条件 ASBR在其连接外部网络的接口&#xff08;外部路由的出接口&#xf…

CS61A 2022 fall HW 01: Functions, Control

CS61A 2022 fall HW 01: Functions, Control 文章目录CS61A 2022 fall HW 01: Functions, ControlQ1: A Plus Abs BQ2: Two of ThreeQ3: Largest FactorQ4: HailstoneHW01对应的是Textbook的1.1和1.2 Q1: A Plus Abs B 题目&#xff1a; Fill in the blanks in the following f…

Java | 解决并发修改异常问题【CurrentModificationException】

今日碰到Java中的一个异常&#xff0c;名为CurrentModificationException&#xff0c;从属于RunTimeException运行时异常&#xff0c;故作此记录 异常解析 首先来说明一下什么是【并发修改异常】❓ 因为迭代器依赖集合而存在&#xff0c;因为当你在操作集合中元素的时候&#…

springboot中restful风格请求的使用

springboot中restful风格请求的使用restful风格springboot中的使用1.创建html表单页面2.在yml配置文件中开启rest表单支持3.编写controller层及对应映射处理4.启动服务&#xff0c;逐个访问restful风格 Rest风格支持&#xff08;使用HTTP请求方式动词来表示对资源的操作&#…

【手写 Vue2.x 源码】第四十二篇 - 组件部分 - 组件挂载流程简述

一&#xff0c;前言 上篇&#xff0c;组件部分-生成组件的真实节点&#xff1b; 本篇&#xff0c;组件部分-组件挂载流程分析&#xff1b; 二&#xff0c;组件挂载流程分析 1&#xff0c;示例 全局组件&#xff1a;my-button&#xff0c;name&#xff1a;‘全局组件’&…

什么是软件架构中的ASRs(架构需求文档)?

作者&#xff1a;非妃是公主 专栏&#xff1a;《软件工程》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01&#xff1a;软件工程概述 软件工程复习02&#xf…

十大经典排序算法(动态演示+代码)-快速排序与希尔排序

快速排序 1.什么是快速排序 我们知道排序有很多种&#xff0c;常见的如希尔排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;堆排序等等&#xff0c;而快速排序也是排序家族中的一员。因为其在大多数情况下有着优秀的综合性能&#xff0c;快速排序的快速也算是实至…

结构型模式-享元模式

1.概述 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销&#xff0c;从而提高系统资源的利用率。 2.结构 享元&#xff08;Flyweight &#xff09;模式中存在以下两种状态&#xff1a; 内…