总结:Java枚举类Enum常用API,与EnumUtil工具类封装

总结:Java枚举类Enum常用API,与EnumUtil工具类封装

  • 一·通过enum关键字创建一个枚举类:
  • 二·自定义枚举对象常用方法示例:
    • 1.获取枚举值方法:一般为code字段
    • 2.获取描述值方法:一般为description字段
    • 3.获取枚举对象名称:
    • 4.获取枚举对象在枚举类中的索引位置:从0开始计算
    • 5.获取枚举对象的序列化方法:一般很少用
    • 6.获取枚举类的class对象:
  • 三·自定义枚举类,自带静态方法常用示例:
    • 1.获取枚举单个对象:
    • 2.根据枚举对象名,获取对应的枚举对象,方式一:
    • 3.根据枚举对象名,获取对应的枚举对象,方式二:
    • 4.获取枚举类中全部枚举对象数组集合:
  • 四·枚举类Class对象常用方法示例:这块不仅包含枚举相关的API,也涉及class的反射内容方法API
    • 1.获取该类型的全类名:
    • 2.判断该类是不是枚举类型:
    • 3.获取枚举对象数组集合:
    • 4.获取该类声明的所有属性字段:
  • 五·枚举类父类,Enum常用方法示例:
    • 1.根据枚举对象名,获取对应的枚举对象,方式三:
  • 六·EnumUtil工具类封装:各种枚举类本身不具备,但是开发中经常需要使用的功能方法

一·通过enum关键字创建一个枚举类:

public enum UserStatus {/*** 正常*/Normal(1, "正常"),Locked(2, "锁定"),Delete(3, "删除"),Disabled(4, "禁用"),NotCertified(5, "未认证");private Integer code;private String description;UserStatus(Integer code, String description) {this.code = code;this.description = description;}public Integer getCode() {return code;}public String getDescription() {return description;}
}

二·自定义枚举对象常用方法示例:

1.获取枚举值方法:一般为code字段

//获取code值:4
Integer code = UserStatus.Disabled.getCode();
System.out.println(code);

2.获取描述值方法:一般为description字段

//获取description值:禁用
String description = UserStatus.Disabled.getDescription();
System.out.println(description);

3.获取枚举对象名称:

//获取枚举对象在枚举类中的名称:Disabled
String name = UserStatus.Disabled.name();
System.out.println(name);

4.获取枚举对象在枚举类中的索引位置:从0开始计算

//获取枚举对象在枚举类中的索引位置,从0开始计算,即ordinal值:3
int ordinal = UserStatus.Disabled.ordinal();
System.out.println(ordinal);

5.获取枚举对象的序列化方法:一般很少用

//获取枚举类中所有的枚举对象:Optional[EnumDesc[UserStatus.Disabled]]
Optional<Enum.EnumDesc<UserStatus>> userStatusEnumDesc = UserStatus.Disabled.describeConstable();
System.out.println(userStatusEnumDesc);

6.获取枚举类的class对象:

//获取枚举类对象的class对象:true
Class<UserStatus> declaringClass = UserStatus.Disabled.getDeclaringClass();
Class<? extends UserStatus> aClass = UserStatus.Disabled.getClass();
System.out.println(declaringClass == aClass);

三·自定义枚举类,自带静态方法常用示例:

1.获取枚举单个对象:

//获取枚举单个对象:Locked
UserStatus locked = UserStatus.Locked;
System.out.println(locked);

2.根据枚举对象名,获取对应的枚举对象,方式一:

//根据枚举对象名,获取对应的枚举对象,方式一:Normal
UserStatus normal = UserStatus.valueOf("Normal");
System.out.println(normal);

3.根据枚举对象名,获取对应的枚举对象,方式二:

//根据枚举对象名,获取对应的枚举对象,方式二:Delete
UserStatus delete = UserStatus.valueOf(UserStatus.class, "Delete");
System.out.println(delete);

4.获取枚举类中全部枚举对象数组集合:

//获取所有枚举对象数组集合
UserStatus[] values = UserStatus.values();
System.out.println(Arrays.toString(values));

四·枚举类Class对象常用方法示例:这块不仅包含枚举相关的API,也涉及class的反射内容方法API

1.获取该类型的全类名:

//获取该类型的全类名:com.pazl.iot.admin.bean.UserStatus
String typeName = UserStatus.class.getTypeName();
System.out.println(typeName);

2.判断该类是不是枚举类型:

//判断该类是不是枚举类型:true
boolean anEnum = UserStatus.class.isEnum();
System.out.println(anEnum);

3.获取枚举对象数组集合:

//获取枚举对象数组集合:如果是非枚举类class调用,则直接返回null
UserStatus[] enumConstants = UserStatus.class.getEnumConstants();
for (UserStatus enumConstant : enumConstants) {//输出每个枚举对象的code和descriptionSystem.out.println(enumConstant.getCode() + ":" + enumConstant.getDescription());
}

4.获取该类声明的所有属性字段:

//获取该类声明的所有属性字段
Field[] declaredFields = UserStatus.class.getDeclaredFields();
for (Field declaredField : declaredFields) {//输出每个属性字段System.out.println(declaredField);
}

五·枚举类父类,Enum常用方法示例:

1.根据枚举对象名,获取对应的枚举对象,方式三:

//根据枚举对象名,获取对应的枚举对象,方式三
UserStatus normal_1 = Enum.valueOf(UserStatus.class, "Normal");
System.out.println(normal_1);

六·EnumUtil工具类封装:各种枚举类本身不具备,但是开发中经常需要使用的功能方法

import com.alibaba.fastjson2.JSON;
import com.pazl.iot.admin.bean.UserStatus;import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;/*** 枚举工具类** @author LiuMingFu* @date 2024/3/9*/
public class EnumUtils {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {System.out.println("1.======================================================================================================");/*** 1.枚举类单个对象常用方法示例:*///获取code值:4Integer code = UserStatus.Disabled.getCode();System.out.println(code);//获取description值:禁用String description = UserStatus.Disabled.getDescription();System.out.println(description);//获取枚举对象在枚举类中的名称:DisabledString name = UserStatus.Disabled.name();System.out.println(name);//获取枚举对象在枚举类中的索引位置,从0开始计算,即ordinal值:3int ordinal = UserStatus.Disabled.ordinal();System.out.println(ordinal);//获取枚举类中所有的枚举对象:Optional[EnumDesc[UserStatus.Disabled]]Optional<Enum.EnumDesc<UserStatus>> userStatusEnumDesc = UserStatus.Disabled.describeConstable();System.out.println(userStatusEnumDesc);//获取枚举类对象的class对象:trueClass<UserStatus> declaringClass = UserStatus.Disabled.getDeclaringClass();Class<? extends UserStatus> aClass = UserStatus.Disabled.getClass();System.out.println(declaringClass == aClass);System.out.println("2.======================================================================================================");/*** 2.枚举类自带静态常用方法示例:*///获取枚举单个对象:LockedUserStatus locked = UserStatus.Locked;System.out.println(locked);//根据枚举对象名,获取对应的枚举对象,方式一:NormalUserStatus normal = UserStatus.valueOf("Normal");System.out.println(normal);//根据枚举对象名,获取对应的枚举对象,方式二:DeleteUserStatus delete = UserStatus.valueOf(UserStatus.class, "Delete");System.out.println(delete);//获取所有枚举对象数组集合UserStatus[] values = UserStatus.values();System.out.println(Arrays.toString(values));System.out.println("3.======================================================================================================");/*** 3.枚举类class对象常用方法示例:这块也涉及class的反射内容方法API*///获取该类型的全类名:com.pazl.iot.admin.bean.UserStatusString typeName = UserStatus.class.getTypeName();System.out.println(typeName);//判断该类是不是枚举类型:trueboolean anEnum = UserStatus.class.isEnum();System.out.println(anEnum);//获取枚举对象数组集合:如果是非枚举类class调用,则直接返回nullUserStatus[] enumConstants = UserStatus.class.getEnumConstants();for (UserStatus enumConstant : enumConstants) {//输出每个枚举对象的code和descriptionSystem.out.println(enumConstant.getCode() + ":" + enumConstant.getDescription());}//获取该类声明的所有属性字段Field[] declaredFields = UserStatus.class.getDeclaredFields();for (Field declaredField : declaredFields) {//输出每个属性字段System.out.println(declaredField);}System.out.println("4.======================================================================================================");/*** 4.所有枚举类父类,Enum常用方法示例:*///根据枚举对象名,获取对应的枚举对象,方式三UserStatus normal_1 = Enum.valueOf(UserStatus.class, "Normal");System.out.println(normal_1);System.out.println("5.======================================================================================================");//根据枚举类code值,获取对应的枚举类对象UserStatus enumObject = getEnumObjectByCode(UserStatus.class, 3);System.out.println(enumObject.getCode());System.out.println(enumObject.getDescription());UserStatus enumObject2 = getEnumObjectByDescription(UserStatus.class, "未认证");System.out.println(enumObject2.getCode());System.out.println(enumObject2.getDescription());UserStatus enumObject3 = getEnumObject(UserStatus.class, "description", "未认证");System.out.println(enumObject3.getCode());System.out.println(enumObject3.getDescription());UserStatus enumObject4 = getEnumObject(UserStatus.class, "code", 3);System.out.println(enumObject4.getCode());System.out.println(enumObject4.getDescription());Map<String, String> enumMapWithStringKey = getEnumMapWithStringKey(UserStatus.class);//转为json打印输出,需要引入外包fastjson依赖包,不需要去掉就行System.out.println(JSON.toJSONString(enumMapWithStringKey));Map<String, String> enumMapWithStringKey2 = getEnumMapWithStringKey(UserStatus.Delete);System.out.println(JSON.toJSONString(enumMapWithStringKey2));Map<Integer, String> enumMapWithIntegerKey = getEnumMapWithIntegerKey(UserStatus.class);System.out.println(JSON.toJSONString(enumMapWithIntegerKey));Map<Integer, String> enumMapWithIntegerKey2 = getEnumMapWithIntegerKey(UserStatus.Delete);System.out.println(JSON.toJSONString(enumMapWithIntegerKey2));}/*** 根据枚举类整型字段的指定值、class对象,获取对应的枚举类对象** @param enumClass         目标枚举类class对象* @param integerFieldName  枚举类存在的一个整型字段名* @param integerFieldValue 枚举类该整型字段的值* @param <T>               枚举类类型* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> T getEnumObject(Class<T> enumClass, String integerFieldName, Integer integerFieldValue) throws NoSuchFieldException, IllegalAccessException {//根据class对象,获取枚举类中名称为 integerFieldName 的属性字段对象Field integerField = enumClass.getDeclaredField(integerFieldName);//设置强制访问权限:一般情况私有属性、方法不允许反射访问integerField.setAccessible(true);//获取该枚举类声明的所有枚举对象T[] enumConstants = enumClass.getEnumConstants();for (T enumConstant : enumConstants) {//获取每个枚举对象的该属性值Integer value = (Integer) integerField.get(enumConstant);//若根据参数值一样,则将该枚举类对象直接返回if (integerFieldValue.equals(value)) {return enumConstant;}}//没有则返回nullreturn null;}/*** 根据枚举类字符串类型字段的指定值、class对象,获取对应的枚举类对象** @param enumClass        目标枚举类class对象* @param stringFieldName  枚举类存在的一个字符串类型字段名* @param stringFieldValue 枚举类该整型字符串类型的值* @param <T>              枚举类类型* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> T getEnumObject(Class<T> enumClass, String stringFieldName, String stringFieldValue) throws NoSuchFieldException, IllegalAccessException {//根据class对象,获取枚举类中名称为 stringFieldName 的属性字段对象Field stringField = enumClass.getDeclaredField(stringFieldName);//设置强制访问权限:一般情况私有属性、方法不允许反射访问stringField.setAccessible(true);//获取该枚举类声明的所有枚举对象T[] enumConstants = enumClass.getEnumConstants();for (T enumConstant : enumConstants) {//获取每个枚举对象的该属性值String value = (String) stringField.get(enumConstant);//若根据参数值一样,则将该枚举类对象直接返回if (stringFieldValue.equals(value)) {return enumConstant;}}//没有则返回nullreturn null;}/*** 根据枚举对象的描述、class对象,获取对应的枚举类对象* 注意:需要该枚举类存在 description 字段才行** @param enumClass   目标枚举类class对象* @param description 枚举对象的描述* @param <T>         枚举类类型* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> T getEnumObjectByDescription(Class<T> enumClass, String description) throws NoSuchFieldException, IllegalAccessException {//根据class对象,获取枚举类中名称为 description 的属性字段Field descField = enumClass.getDeclaredField("description");//设置强制访问权限:一般情况私有属性、方法不允许反射访问descField.setAccessible(true);//获取该枚举类声明的所有枚举对象T[] enumConstants = enumClass.getEnumConstants();for (T enumConstant : enumConstants) {//获取每个枚举对象的该属性值String descValue = (String) descField.get(enumConstant);//若根据参数值一样,则将该枚举类对象直接返回if (description.equals(descValue)) {return enumConstant;}}//没有则返回nullreturn null;}/*** 根据枚举值、class对象,获取对应的枚举类对象* 注意:需要该枚举类存在 code 字段才行** @param enumClass 目标枚举类class对象* @param code      枚举值* @param <T>       枚举类类型* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> T getEnumObjectByCode(Class<T> enumClass, Integer code) throws NoSuchFieldException, IllegalAccessException {//根据class对象,获取枚举类中名称为code的属性字段Field codeField = enumClass.getDeclaredField("code");//设置强制访问权限:一般情况私有属性、方法不允许反射访问codeField.setAccessible(true);//获取该枚举类声明的所有枚举对象T[] enumConstants = enumClass.getEnumConstants();for (T enumConstant : enumConstants) {//获取每个枚举对象的code属性值Integer codeValue = (Integer) codeField.get(enumConstant);//若根据参数值一样,则将该枚举类对象直接返回if (code.equals(codeValue)) {return enumConstant;}}//没有则返回nullreturn null;}/*** 根据一个枚举类对象,获取他的枚举值* 注意:该枚举类必须存在 code 字段且为整型** @param enumObject 一个枚举类对象* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> Integer getCode(T enumObject) throws IllegalAccessException, NoSuchFieldException {Field codeField = enumObject.getClass().getDeclaredField("code");codeField.setAccessible(true);return (Integer) codeField.get(enumObject);}/*** 根据一个枚举类对象,获取他的枚举值* 注意:该枚举类必须存在 codeFieldName 字段且为整型** @param enumObject    一个枚举类对象* @param codeFieldName 枚举值字段名* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> Integer getCode(T enumObject, String codeFieldName) throws IllegalAccessException, NoSuchFieldException {Field codeField = enumObject.getClass().getDeclaredField(codeFieldName);codeField.setAccessible(true);return (Integer) codeField.get(enumObject);}/*** 根据一个枚举类对象,获取他的描述字符串* 注意:该枚举类必须存在 description 字段且为字符串类型** @param enumObject 一个枚举类对象* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> String getDescription(T enumObject) throws IllegalAccessException, NoSuchFieldException {Field descriptionField = enumObject.getClass().getDeclaredField("description");descriptionField.setAccessible(true);return (String) descriptionField.get(enumObject);}/*** 根据一个枚举类对象,获取他的描述字符串* 注意:该枚举类必须存在 descFieldName 字段且为字符串类型** @param enumObject    一个枚举类对象* @param descFieldName 枚举对象描述字段名* @return* @author LiuMingFu* @date 2024/3/9*/public static <T extends Enum<T>> String getDescription(T enumObject, String descFieldName) throws IllegalAccessException, NoSuchFieldException {Field descriptionField = enumObject.getClass().getDeclaredField(descFieldName);descriptionField.setAccessible(true);return (String) descriptionField.get(enumObject);}/*** 获取枚举类中每个枚举值对应的map集合* key:枚举对象code值,* value:枚举对象description值** @param enumClass 枚举类class对象* @param <T>       枚举类类型* @return* @author LiuMingFu* @date 2024/2/28*/public static <T extends Enum<T>> Map<Integer, String> getEnumMapWithIntegerKey(Class<T> enumClass) throws NoSuchFieldException, IllegalAccessException {Map<Integer, String> enumMap = new LinkedHashMap<>();//获取所有枚举类属性字段Field[] fields = enumClass.getDeclaredFields();//循环处理各个枚举类型字段for (Field field : fields) {//判断是否为枚举属性字段if (field.isEnumConstant()) {//根据枚举类class对象、枚举字段名,获取对应的枚举类对象T enumValue = Enum.valueOf(enumClass, field.getName());//获取枚举对象code值Integer code = getCode(enumValue);//获取枚举对象描述String description = getDescription(enumValue);//放入map集合enumMap.put(code, description);}}return enumMap;}/*** 获取枚举类中每个枚举值对应的map集合* key:枚举对象code值,* value:枚举对象description值** @param enumObject 一个枚举类对象* @param <T>        枚举类类型* @return* @author LiuMingFu* @date 2024/2/28*/public static <T extends Enum<T>> Map<Integer, String> getEnumMapWithIntegerKey(T enumObject) throws NoSuchFieldException, IllegalAccessException {Map<Integer, String> enumMap = new LinkedHashMap<>();//获取所有枚举类属性字段Field[] fields = enumObject.getClass().getDeclaredFields();//循环处理各个枚举类型字段for (Field field : fields) {//判断是否为枚举属性字段if (field.isEnumConstant()) {//根据枚举类class对象、枚举字段名,获取对应的枚举类对象T enumValue = Enum.valueOf(enumObject.getDeclaringClass(), field.getName());//获取枚举对象code值Integer code = getCode(enumValue);//获取枚举对象描述String description = getDescription(enumValue);//放入map集合enumMap.put(code, description);}}return enumMap;}/*** 获取枚举类中每个枚举值对应的map集合* key:枚举对象code值,* value:枚举对象description值** @param enumClass 枚举类class对象* @param <T>       枚举类类型* @return* @author LiuMingFu* @date 2024/2/28*/public static <T extends Enum<T>> Map<String, String> getEnumMapWithStringKey(Class<T> enumClass) throws NoSuchFieldException, IllegalAccessException {Map<String, String> enumMap = new LinkedHashMap<>();//获取所有枚举类属性字段Field[] fields = enumClass.getDeclaredFields();//循环处理各个枚举类型字段for (Field field : fields) {//判断是否为枚举属性字段if (field.isEnumConstant()) {//根据枚举类class对象、枚举字段名,获取对应的枚举类对象T enumValue = Enum.valueOf(enumClass, field.getName());//获取枚举对象code值Integer code = getCode(enumValue);//获取枚举对象描述String description = getDescription(enumValue);//放入map集合enumMap.put(code.toString(), description);}}return enumMap;}/*** 获取枚举类中每个枚举值对应的map集合* key:枚举对象code值,* value:枚举对象description值** @param enumObject 一个枚举类对象* @param <T>        枚举类类型* @return* @author LiuMingFu* @date 2024/2/28*/public static <T extends Enum<T>> Map<String, String> getEnumMapWithStringKey(T enumObject) throws NoSuchFieldException, IllegalAccessException {Map<String, String> enumMap = new LinkedHashMap<>();//获取所有枚举类属性字段Field[] fields = enumObject.getClass().getDeclaredFields();//循环处理各个枚举类型字段for (Field field : fields) {//判断是否为枚举属性字段if (field.isEnumConstant()) {//根据枚举类class对象、枚举字段名,获取对应的枚举类对象T enumValue = Enum.valueOf(enumObject.getDeclaringClass(), field.getName());//获取枚举对象code值Integer code = getCode(enumValue);//获取枚举对象描述String description = getDescription(enumValue);//放入map集合enumMap.put(code.toString(), description);}}return enumMap;}}

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

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

相关文章

使用docker搭建chromium

使用Docker CLI 首先&#xff0c;你需要确保已经安装了Docker。以下是使用Docker命令行界面&#xff08;CLI&#xff09;搭建linuxserver/chromium的步骤&#xff1a; 拉取linuxserver/chromium镜像&#xff1a; docker pull linuxserver/chromium这将从Docker Hub上拉取最新的…

LeetCode-Hot100

哈希 1.两数之和&#xff1a; 给定一个整数数组nums和一个整数目标值target&#xff0c;请你再该数组中找出和为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 思路&#xff1a;暴力解法是使用两层循环来遍历每一个数&#xff0c;然后找出两数之和等于target的…

Unity的PICO项目基础环境搭建笔记(调试与构建应用篇)

文章目录 前言一、为设备开启开发者模式1、开启PICO VR一体机。前往设置>通用>关于本机>软件版本号2、一直点击 软件版本号 &#xff0c;直到出现 开发者 选项3、进入 开发者模式&#xff0c;打开 USB调试&#xff0c;选择 文件传输 二、实时预览应用场景1、下载PC端的…

Linux中的read命令详解:交互性脚本编写的利器

在Linux系统中&#xff0c;Shell脚本是一种强大的工具&#xff0c;用于自动化任务和编写系统管理脚本。然而&#xff0c;有时候需要脚本能够与用户进行交互&#xff0c;以便动态地获取输入或提供输出。这时&#xff0c;read命令就成为了我们的利器。本文将深入探讨read命令的使…

2024年新手视频剪辑软件推荐-6款视频剪辑软件测评

视频剪辑软件推荐 premiere premiere 直达地址:各大软件网站 说到底,还是得专业的来,虽然很多人觉得他是收费的,但是你懂的,想要免费总是会有办法的.别的不说,剪辑这块,我还是很认可这个软件,虽然我现在还是刚入门. 剪映 剪映 抖音官方推出的一款手机视频编辑剪辑应用,提供切割…

go切片实现原理

近日一直在学习golang,已经产出如下博客一篇 GO闭包实现原理(汇编级讲解) 引言 最近在使用go语言的切片时,出现了一些意料之外的情况,遂查询相关文档学习后写下此篇博客 正文 首先,我们思考,go在通过函数传递一个切片时,是通过引用传递的吗,还是通过值传递的呢(答案将会很…

Transformer之多角度解读

Transformer 文章目录 Transformer  &#x1f449;引言&#x1f48e; 一、 自注意力机制 &#xff1a; 主要用于 长距离依赖捕捉和转换序列二、 Encoder&#xff1a;2.1 多头注意力机制&#xff1a;2.2 残差连接&#xff1a; 三、 Decoder&#xff1a;3.1 Decoder 多头注意力…

hive sql无法停止

排查流程 hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的 其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。 同时&#xff0c;通过JDK动态代理为其织入了synchronized同步机制&#xff1a;其底层是委托给…

申请公众号上限是多少

一般可以申请多少个公众号&#xff1f;公众号申请限额在过去几年内的经历了很多变化。对公众号申请限额进行调整是出于多种原因&#xff0c;确保公众号内容的质量和合规性。企业公众号的申请数量从50个到5个最后到2个&#xff0c;对于新媒体公司来说&#xff0c;这导致做不了公…

swift的lazy关键字 后面还会补充

使用lazy关键字的例子 在Swift 中&#xff0c;如果你在子类的构造器中遇到了“Property self.someProperty not initialized at super.init call”的错误&#xff0c;这表示在调用父类的init方法前&#xff0c;你必须确保所有非可选的实例属性都已经被初始化。Swift 要求所有非…

网络延迟导致终端卡顿

网络延迟导致终端卡顿 在一些情况下&#xff0c;终端卡顿可能是由于网络延迟增加或丢包导致的。例如&#xff0c;使用 hping3 模拟网络流量时可能观察到这种情况。 在使用 hping3 运行前后&#xff0c;通过 ping 命令来观察网络延迟的变化&#xff0c;以便更全面地了解卡顿问…

【XMU学科实践二】豆瓣爬虫实践

文章目录 分析豆瓣阅读网站具体步骤构造headersBeautiful soup中的定位函数find() 、find_all() 完整爬虫代码 叠甲&#xff1a;仅供学习。。 XMU的小朋友实在不会了可以参考我的思路&#xff0c;但还是建议自己敲一遍哈。 学科实践二还是挺有意思的&#xff01; 分析豆瓣阅读网…

什么是jwt

jwt是JSON Web Token&#xff0c;由3部分构成&#xff1a; 头部Header&#xff1a;头部包含了两部分&#xff0c;token 类型和采用的加密算法&#xff08;可为none&#xff0c;后端应限制加密算法&#xff0c;不以这里为准&#xff09;。 载荷Payload&#xff1a;这部分才是重要…

test02

1.逢七过/*朋友聚会时&#xff0c;玩逢7过的游戏 游戏规则&#xff1a;从任意一个数字开始报数&#xff0c;当你要报的数字是包含7或者是7的倍数时都要说&#xff1a;过 需求&#xff1a;使用程序在控制台打印出1-100之间的满足逢七过规则的数据*/ //1.打印1-100 for (int i 1…

Compose UI 之 Small TopAppBar

Small 类型 TopAppBar AppBar 主要由2类&#xff0c;顶部 AppBar 和底部 AppBar。 顶部 AppBar&#xff1a;主要包含了标题&#xff0c;action菜单&#xff0c;导航菜单。底部 AppBar&#xff1a;典型地包含主要导航项。 顶部 AppBar 顶部 AppBar 包含了 4 中类型&#xff…

webhook详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥最佳作用。完成一项任务(几乎)总是需要多个实体的参与。电子商务应用程序需要与支付系统通信,支付…

Python快速入门系列-2(Python的安装与环境设置)

第二章&#xff1a;Python的安装与环境设置 2.1 Python的下载与安装2.1.1 访问Python官网2.1.2 安装Python对于Windows用户对于macOS用户对于Linux用户 2.2 集成开发环境&#xff08;IDE&#xff09;的选择与设置2.2.1 PyCharm2.2.2 Visual Studio Code2.2.3 Jupyter Notebook2…

【操作系统学习笔记】文件管理2.2

【操作系统学习笔记】文件管理2.2 参考书籍: 王道考研 视频地址: Bilibili 文件系统的全局结构&#xff08;布局&#xff09; 外存结构 物理格式化&#xff0c;即低级格式化->划分扇区&#xff0c;检测坏扇区&#xff0c;并用备用扇区替换坏扇区逻辑格式化&#xff0c;即…

初级代码游戏的专栏介绍与文章目录

我的github&#xff1a; codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…

关于 Rust 的 From 特性的尝试

文章目录 关于Rust的From特性的尝试 关于Rust的From特性的尝试 在The Rust Programming Language一书中&#xff0c;第 9.2 节Recoverable Errors with Result中有如下&#xff1a; For example, we could change the read_username_from_file function in Listing 9-7 to ret…