Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

news/2024/5/5 12:48:58/文章来源:https://blog.csdn.net/weixin_45248492/article/details/127323315

Java基础(一):编译和解释、数据类型、变量作用域、String常用方法、数组、面向对象、异常

Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

Java异常、继承结构、处理异常、自定义异常、SpringBoot中全局捕获处理异常

Java–JUC之CountDownLatch、Semaphore以及CyclicBarrier

Java多线程基本概念、线程的创建方式(有、无返回值)、常用方法、synchronized锁、线程安全问题、死锁以及如何避免

Java基础(二)

集合

java.util包中提供了一些集合类,也被称为是容器。数组其实也是容器,那么集合和数组的是有区别的:

  • 数组的长度是固定的,集合长度可变
  • 数组可存放基本数据类型和引用数据类型,而集合是存储引用数据类型,且集合可以有泛型

在这里插入图片描述

Collection接口是层次结构中的根接口,构成Collection的单位称为元素。Collection中提供了一些基本方法,需要子类实现并重写。

List

list集合中的元素允许重复,是有序的(插入顺序)。

子类有ArrayListLinkedList实现类,区别?

  • ArrayList底层是动态数组实现,在堆内存中开辟一块连续的空间存储元素,并且默认存储空间为10,扩容每次1.5倍。每个元素存储着对象的引用地址和一个索引值,查询元素时根据索引下标即可获取元素,时间复杂度为O(1),但是随机插入和删除元素时,需要移动元素的位置,影响效率,比LinkedList效率慢。
  • LinkedList底层是双向链表,内存分布散列,是一种无界限的数据机构;元素除保存着对象的引用地址外,还保留着前后节点的指针地址,随机访问元素时,需要从头到尾将链表查询一遍,直到找到元素为止,时间复杂度是O(n),比ArrayList要慢,但是随机插入删除元素时只需要改变目标节点的前后节点指针即可,效率很高,比ArrayList效率高。

一般项目中ArrayList完全够用了,除非涉及到过多的插入删除集合元素时使用LinkedList,有一种情况,当数据量很大的情况下,若了解数据的预估量,那么在创建集合时直接声明元素数量即可,因为过多的扩容会很影响效率

Set

set集合中的元素不允许重复,且无序的(有些子类维护了顺序)

子类有HashSetTreeSetLinkedHashSet

  • HashSet底层就是HashMap(也就是哈希表),是一个无序集合,允许存入一个null值,感觉可以将HashSet看做是只有key的一个HashMap。

  • TreeSet:底层是TreeMap来实现(红黑树),维护了一个排序,但是需要注意:

    • 元素要实现Comparable,重写compareTo()
    • 或者创建TreeSet集合对象时,构造函数中传入一个比较器
  • LinkedHashSet:就是在HashSet的基础上维护了一个链表,来保证元素的插入顺序。

Map

map是比较特殊的一种集合,它存储的不是单一的元素,而是一个k-v键值对的集合,其中key是不能重复的,通过hashCode和equals方法比较是否是重复元素,若重复则value会把先前的覆盖掉。

key决定了存储对象在映射中的存储位置,不能由key本身决定,而是通过散列技术进行处理,产生一个hash值,通常是作为一个偏移量。

子类有:HashMapTreeMapLinkedHashMap

  • HashMap:是通过数组+链表/红黑树来实现,允许使用null键和null值,但是只能有一个null键(重复的会被覆盖),是无序的。存储的元素需要计算key的hash值确定其存储位置,当遇到hash冲突时(key的hash值相同但却是不同的对象),它们的value通过链表相连接,当hash冲突的数量大于一定阈值时,链表转为红黑树来保证查询效率。

  • TreeMap:通过红黑树来实现,插入元素时会自动排序,同样的需要注意:

    • 元素实现Comparable接口,重写compareTo()
    • 创建TreeMap集合时,构造器传入一个比较器
    • 且key不能是null,因为要比较排序
  • LinkedHashMap:在HashMap的基础上维护一个链表,保证元素的插入顺序。

IO

流是一组有序的数据序列,根据操作的类型,可以分为输入流输出流两种,从其他维度也可细粒度划分:如数据类型上分字节流字符流,与数据源的关系上划分为节点流处理流等等。

图解

在这里插入图片描述

在这里插入图片描述

在java中定义了很多专门负责各种方式的输入/输出,这些类被放入到java.io包中。所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;输出流类都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。

注意:所有的流资源都会在内存中创建对象占用系统资源,一定要在流资源使用完毕后关闭,否则会造成java程序中占用着系统资源且java中的流资源对象一直在堆内存中存在,导致内存泄漏

详解看Java IO流

File类

File类是java包中唯一代表磁盘文件本身的对象,可以调用File类的一些方法,实现创建、删除、重命名文件等操作,可以获取文件的一些基本信息,文件所在目录、文件长度、文件读写权限等。数据流可以将数据写入到文件中,文件也是数据流最常用的数据媒体。

构造函数

  • File(String pathname) : 该构造通过给定路径名称字符串转换为抽象路径创建一个File实例

    // 创建a.txt文件
    File file = new File("D:\\file\\a.txt");
    
  • File(String parent, String child) : 该构造根据定义的父子路径拼接创建一个File实例

    // 创建a.txt文件
    File file = new File("D:\\file","a.txt");
    
  • File(File f, String child) : 该构造根据parent抽象路径名和子路径名称字符串创建一个新的File实例

    // 创建a.txt文件
    File file = new File(new File("D:\\file"), "a.txt");
    

常用方法

方法返回值说明
getName()String文件名称
canRead()boolean是否可读
canWrite()boolean是否可写
getAbsoletePath()String文件绝对路径
getParent()String获取文件父路径
isFile()boolean是否是文件
isDirectory()boolean是否是目录

缓冲流

缓冲流主要是在内存里开了一块缓冲区,以提高数据的读写速度,遇到一些大文件读写速度较慢时可以考虑将数据搞到内存里进行读写,写数据的话然后记得flush()一下,将数据全部写入到目的文件中去。

注意的是:缓冲流其实只是在内存开了块缓冲区,实际上还是调用的InputStreamOutputStreamReaderWriter的方法

具体详解看Java IO流

Zip压缩输入/输出流

java.util.zip包中的ZipOutputStreamZipInputStream类来实现文件的压缩/解压缩。如要从Zip压缩管理文件内读取某个文件,那么要先找到对应文件的"目录进入点"(从它可知该文件在Zip文件内的位置),才可以读取到这个文件的内容。若要将文件内容写至ZIP文件内,要先写入对应文件的"目录进入点",且要把写入文件内容的位置移入到此进入点所指的位置,然后写入文件内容。

在Java中实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和压缩的实现比较容易。ZipEntry类产生的对象,是用来代表一个ZIP压缩文件内的进入点。

ZipInputStream类用来读取压缩格式的文件,所支持的包括已压缩及未压缩的进入点(entry)。ZipOutputStream用来写出Zip压缩格式的文件,而且所支持的包括已压缩及未压缩的进入点(entry)。

ZipEntry、ZipInputStream、ZipOutputStream三个Java类实现Zip数据压缩/解压。

ZipOutputStream类

构函

可将文件压缩为.zip文件。构造函数如下:

  • ZipOutputStream(OutputStream out):接收一个输出流
方法
方法返回值说明
putNextEntry(ZipEntry e)void开始写一个新的ZipEntry,将流内的位置移至此entry所指数据的开头
write(byte[] b, int off, int len)void字节数组写入当前Zip条目数据
finish()void完成写入ZIP输出流的内容,无需关闭它所配合的OutputStream
setComment(String comment)void可设置此ZIP文件的注释文字
例子

如压缩E盘的hello文件件,在该文件夹中有个hello1.txt和hello2.txt文件,将压缩后的hello.zip文件保存在E盘的根目录下。

实现:

public class ZipTest {public static void main(String[] args) throws IOException {ZipTest zi = new ZipTest();// 参数: 1.压缩后的文件 2.要压缩的文件/目录zi.zip("E:\\hello.zip", new File("E:\\hello"));System.out.println("压缩完成");}private void zip(String zipFileName, File inputFile) throws IOException {ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));zip(out, inputFile, "");System.out.println("压缩中...");out.close();}private void zip(ZipOutputStream out, File f, String base) throws IOException {// 如果是目录,递归方式继续找下层,直到是文件if (f.isDirectory()) {File[] fl = f.listFiles();// 每执行一次,都要将目录进入点更新下,否则可能会写入到别的目录中out.putNextEntry(new ZipEntry(base + "/"));base = base.length() == 0 ? "" : base + "/";for (File aFl : fl) {zip(out, aFl, base + aFl);}} else {    // 是文件,将文件拷入到 压缩文件内// 每执行一次,都要将目录进入点更新下out.putNextEntry(new ZipEntry(base));FileInputStream in = new FileInputStream(f);int b;System.out.println(base);while ((b = in.read()) != -1) {out.write(b);}in.close();}}}

ZipInputStream

Zip类可以读取ZIP压缩格式的文件,包括已压缩和未压缩的条目.

构造函数
  • ZipInputStream(InputStream in) : 接收一个字节输入流
方法
方法返回值说明
read(byte[] b, int off, int len)int读取目标b数组内off偏移量的位置,长度是len字节
available()int判断是否已经读完目前entry所指的数据。读完返回0,否则返回1
closeEntry()void关闭当前ZIP条目并且定位流以读取下一个条目
getNextEntry()ZipEntry读取下一个ZipEntry,并将流的位置移至该entry所指的数据开头
createZipEntry()ZipEntry以指定的name参数新建一个ZipEntry对象
解压缩示例
public class DeZipTest {public static void main(String[] args) {try (ZipInputStream zin = new ZipInputStream(new FileInputStream("E:\\hello.zip"))){ZipEntry entry;while (((entry = zin.getNextEntry()) != null) && !entry.isDirectory()) {File file = new File(entry.getName());System.out.println(file);// 文件不存在时,创建目录和文件if (!file.exists()) {file.mkdirs();file.createNewFile();}zin.closeEntry();System.out.println(entry.getName() + "解压成功");}} catch (IOException e) {e.printStackTrace();}}}
hutool工具

hutool开源工具非常好用,有兴趣可以去官网看下,有各种各样的工具类,方便使用,简化开发,提高效率。

官方网站

简单介绍下hutool工具有关压缩/解压的工具类ZipUtil,有兴趣可以去官网学习下。

ZipUtil就是针对java.util.zip做工具化封装,使用时一个方法全都搞定。

  • 压缩
//将aaa目录下的所有文件目录打包到d:/bbb/目录下的ccc.zip文件中
ZipUtil.zip("d:/aaa", "d:/bbb/ccc.zip");
  • 解压
//将test.zip解压到e:\\aaa目录下,返回解压到的目录
File unzip = ZipUtil.unzip("E:\\aaa\\test.zip", "e:\\aaa");

反射

通过反射机制,可以在程序中访问已经装载到JVM中的Java对象的描述,实现访问、监测和修改描述Java对象信息的功能。java.lang.reflect包中提供了该功能的支持。

Object类中定义了一个getClass()方法,返回一个Class对象。

Class textClasss = a.getClass();

获取Class类对象的几种方式:

  • 对象.getClass();
  • 类名.class
  • Class.forName("com...."),从类的全限定类名加载Class类对象

常用方法

组成方法返回值说明
包路径getPackage()Package对象获得该类的存放路径
类名getName()String对象获得该类的名称
继承类getSuperclass()Class对象获得该类继承的类
实现接口getInterfaces()Class型数组获取该类实现的所有接口
构造getConstructors()Constructor型数组获取所有权限为public的构造函数
getConstructor(Class<?> paramType)Constructor对象获取权限为public的指定构造
getDeclaredConstructors()Constructor型数组暴力获取所有的构造方法,按照声明顺序返回
方法getMethods()Method型数组获取所有public的方法
getDeclaredMethods()Methods型数组获取所有的方法(含private)
成员变量getFields()Field型数组获取成员变量(public)
getDeclaredFields()Field型数组暴力获取所有

注意:

getFields()getMethods()获取public级别的成员变量和方法时,将会获取到父类的所有public级别的成员变量和方法;而通过getDeclaredFields()getDeclaredMethods()时,只能暴力获取所有本类的的成员变量和方法。

每个Class对象中存在的组件:

  • Method
  • Constructor
  • Field

这几个组件中的方法不再展示,有用到直接查Java8API文档或其他资料即可。

这里贴几块代码展示下基本使用,首先有个Student的类

@Data
public class Student {@Deprecated // 标个注解String name;Integer age;public Student() {}@Deprecated	// 标个注解public Student(String name, Integer age) {this.name = name;this.age = age;}// 随便写个注解(bean销货时调用的注解)@PreDestroypublic void show() {System.out.println("show 1");}private void show2() {System.out.println("show 2");}}
  • Constructor

    public static void main(String[] args) throws ClassNotFoundException {// 获取 Class类对象Class<?> aClass = Class.forName("com.xw.test.Student");Constructor<?>[] constructors = aClass.getConstructors();for (Constructor<?> constructor : constructors) {// 构造名System.out.println(constructor.getName());// 查看注解Annotation[] annotations = constructor.getAnnotations();if (annotations.length > 0) {System.out.println(Arrays.toString(annotations));}}
    }
    
    com.xw.test.Student
    com.xw.test.Student
    [@java.lang.Deprecated()]
    
  • Method

    public static void main(String[] args) throws ClassNotFoundException {// 获取 Class类对象Class<?> aClass = Class.forName("com.xw.test.Student");Method[] methods = aClass.getMethods();for (Method method : methods) {// 获取方法名System.out.println(method.getName());// 查看注解Annotation[] annotations = constructor.getAnnotations();if (annotations.length > 0) {System.out.println(Arrays.toString(annotations));}}
    }
    
    ...
    show
    [@javax.annotation.PreDestroy()]	获取到show方法,并且和他的@PreDestory注解
    ...
    
  • Field

    public static void main(String[] args) throws ClassNotFoundException {// 获取 Class类对象Class<?> aClass = Class.forName("com.xw.test.Student");// 这里如果用 getFields()是获取不到属性的,因为在Student类中的所有属性都是private级别的// 只能通过暴力返回Field[] fields = aClass.getDeclaredFields();for (Field field : fields) {// 获取属性名System.out.println(field.getName());// 查看注解Annotation[] annotations = field.getAnnotations();if (annotations.length > 0) {System.out.println(Arrays.toString(annotations));}}
    }
    
    name
    [@java.lang.Deprecated()]
    age
    

注解@Annotation

使用@interface关键字可以声明一个注解,这个关键字的隐含意思是继承了java.lang.annotation.Annotation接口。

@interface MyAnnotation {String value();
}

其中 String 是成员的类型,可指定的类型:

  • String
  • Class
  • primitive

value是成员的名称。如果在定义的Annotation类型中只有一个成员,通常会将名称命名为value;

在定义Annotation类型时

  • 可以通过Annotation类型@Target来设置那些地方上可以声明注解,如果未设置@Target,那么适用于所有的程序元素。枚举类ElementType中的常量用来设置@Target
// 表示此注解声明在 属性和方法上
@Target({ElementType.FIELD, ElementType.METHOD})
@interface MyAnnotation {String value();
}
  • 可通过Annotation的@Retention设置注解的有效范围,枚举类RetentionPolicy中的枚举常量用来设置@Retention
@Target({ElementType.FIELD, ElementType.METHOD})// 使用时,一般使用 RUNTIME即可
@Retention(RetentionPolicy.SOURCE) // 表示不编译注解到类文件中,有效范围最小
@Retention(RetentionPolicy.CLASS) // 表示编译注解到类文件中,但是运行时不加载注解到JVM中
@Retention(RetentionPolicy.RUNTIME) // 运行时加载注解到JVM中,有效范围最大
@interface MyAnnotation {String value();
}

使用注解,获取注解信息

例如创建了一个注解,那么后面如何使用和获取注解的信息呢

@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) // 运行时加载注解到JVM中,有效范围最大
@interface MyAnnotation {String value() default "";
}// 使用注解
@MyAnnotation(value = "用户类")
class User {@MyAnnotation(value = "用户姓名")private String name;}

获取注解信息

如果定义Annotation类型时将@Retention设置为RUNTIME类型,那么程序运行期间通过反射可以获取相关的注解上的信息。

在Constructor、Field、Method类中均有访问注解的方法,如getAnnotations()方法获取所有注解,或getAnnotation(Class<T> clazz)获取指定类型的注解

public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {Class<?> aClass = Class.forName("com.xw.test.User");// 获取User类上的注解MyAnnotation annotation = aClass.getAnnotation(MyAnnotation.class);// 强制获取 User 类的name属性Field name = aClass.getDeclaredField("name");// 获取 name属性上的 注解MyAnnotation nameAnnotation = name.getAnnotation(MyAnnotation.class);// User类上注解的value()System.out.println(annotation.value());// User类的 name 属性上的注解 的 value()System.out.println(nameAnnotation.value());}
用户类
用户姓名

枚举

可以将枚举看做是一个类,它继承自java.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员可以看做是枚举类型的一个实例,这些枚举类型成员默认都被final、public、static修饰。并且枚举类型都可以调用Enum类中的一些常用方法。

方法名说明使用方法
values()将枚举成员以数组形式返回枚举类名.values()
valueOf()将普通字符串转换为枚举实例枚举类型.valueOf(“abc”)
compareTo()比较两个枚举对象在定义时的顺序枚举对象.compareTo()
ordinal()得到枚举成员的索引位置枚举对象.ordinal()

普通使用,有参构造方式定义,且提供一个get方法

@Getter
enum Constant {SEASON_1(1, "季节1"),SEASON_2(2, "季节2"),SEASON_3(3, "季节3");private int code;private String msg;Constant(int code, String msg) {this.code = code;this.msg = msg;}
}

获取某个实例,且获取code值

public static void main(String[] args) {Constant season1 = Constant.SEASON_1;System.out.println(season1.getCode());
}

高级使用

通常情况下,我们可能会把相关的code值,存入到其他的数据库表里面,查询时需要根据code值来到枚举类中寻找相关的msg值。改造下枚举

对外提供一个根据code查询msg的方法,内部实现下即可。

@Getter
enum Constant {SEASON_1(1, "季节1"),SEASON_2(2, "季节2"),SEASON_3(3, "季节3");private int code;private String msg;Constant(int code, String msg) {this.code = code;this.msg = msg;}public static String getByCode(int code) {Constant[] values = values();for (Constant value : values) {if (value.getCode() == code) {return value.getMsg();}}return null;}
}

使用

public static void main(String[] args) {int code = 2;String byCode = Constant.getByCode(code);System.out.println(byCode);
}
季节2

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

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

相关文章

数据库学习记录2

数据库学习记录1介绍了DDL (Data Definition Language) 数据定义语言。 在数据库学习记录2中&#xff0c;我们介绍常见的数据类型&#xff1b; 主要分为三类&#xff1a;数值类型、字符串类型、日期时间类型。 数值类型 类型大小有符号范围无符号范围描述TINYINT1byte(-128&…

生成模型笔记(七):自回归模型

有鸟止南方之阜&#xff0c;三年不翅&#xff0c;不飞不鸣&#xff0c;嘿然无声&#xff0c;此为何名&#xff1f; 第七部分 深度自回归模型&#xff08;Deep Autoregressive Model&#xff0c; DARM&#xff09; 参考内容 https://jmtomczak.github.io/blog/2/2_ARM.html A…

第二十三:Fiddler抓包教程(23)-Fiddler如何优雅地在正式和测试环境之间来回切换-上篇

一.简介 1.在开发或者测试的过程中&#xff0c;由于项目环境比较多&#xff0c;往往需要来来回回地反复切换&#xff0c;那么如何优雅地切换呢&#xff1f; 二.实际工作场景 1.问题场景 1.1.已发布线上APP出现接口错误&#xff0c;如何测试线上APP访问本地请求&#xff1f;…

QFramework v1.0 使用指南 介绍篇:01. 简介

01. 简介 大家好&#xff0c;我是 QFramework 的作者 凉鞋&#xff0c;QFramework 从第一次代码提交到现在快 7 年了&#xff08;2015 年 12 月 ~ 2022 年 10 月&#xff09;了&#xff0c;而经过了 7 年时间的打磨&#xff0c;我们终于迎来了 v1.0 版本。 此教程&#xff0c…

Macos/linux g++ 安装OpenCV环境

本文前半部分主要翻译官方文档的东西 https://docs.opencv.org/4.x/d0/db2/tutorial_macos_install.html 依赖&#xff1a; CMake 3.9 or higher Git Python 2.7 or later and Numpy 1.5 or later大家都是程序员自己安装一下吧 在 relese 这里下载一下源代码&#xff1a; htt…

第三章:为组件库添加规范【前端工程化入门-----从零实现一个react+ts+vite+tailwindcss组件库】

第三章&#xff1a;为组件库添加规范 本章我们会用 eslint、prettier以及Husky 为组件库添加规范&#xff1b; 前置知识&#xff1a; eslint、prettier和husky各有什么作用&#xff1f; eslint是代码检查工具&#xff0c;你可以配置eslint&#xff0c;然后通过lint命令检测…

打游戏哪款蓝牙耳机好?四款适合打游戏的蓝牙耳机推荐

现在年轻人最离不开的就是手游&#xff0c;蓝牙耳机可谓是手机游戏的最佳搭档&#xff0c;一副好的蓝牙耳机可以为游戏带来很完美的助力&#xff0c;延迟低的蓝牙耳机可以实现更好的游戏体验感&#xff0c;那么接下来推荐四款适合打游戏的蓝牙耳机。 1、南卡小音舱蓝牙耳机 佩…

2022年全国大学生数学建模美赛E题NPP数据获取

今年的数学建模美赛终于开始了&#xff01;令我感到欣喜的是&#xff0c;今年E题竟然和地理遥感专业息息相关。E题是分析生态环境方面的&#xff01;因此&#xff0c;有很多小伙伴来询问咨询如何解决这道题目。有些小伙伴&#xff0c;还咨询如何使用CASA软件来计算NPP数据&…

Flink SQL使用Catalog消费Kafka时,多个Source读取同一主题解决方案

一、Catalog定义 Catalog 提供了元数据信息&#xff0c;例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。数据处理最关键的方面之一是管理元数据。 元数据可以是临时的&#xff0c;例如临时表、或者通过 TableEnvironment 注册的 UDF。 元数据也可以是…

apollo在虚拟机下部署遇到的坑

目录问题描述解决方法编译问题总结问题描述 ​   其实在虚拟机下部署apollo网上是有线程教程的。可以参考在虚拟机上安装运行百度Apollo 6.0&#xff0c;Apollo 6.0 安装完全指南。我依靠这两个指南准备部署的是apollo 7.0&#xff0c;事实证明虽然版本不同&#xff0c;但部…

1、6边距复合属性

提示&#xff1a;文章写完后&#xff0c;padding可以有到四个值。 1、语法&#xff1a; div{ padding&#xff1a;“50px”&#xff1b; padding&#xff1a;“5px 10px”&#xff1b; padding&#xff1a;“5px 10px 20px”&#xff1b; padding&#xff1a;“5…

flex竖排列元素排列方向

flex竖排列元素排列方向一、flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐)※ flex-direction:row-reverse (与row 相反)※ flex-direction:column (从上往下排列==顶对齐)※ flex-direction:column-reverse (与column 相反) 二…

基于导频的信道估计实现

目录 零、前言 一、为什么要信道估计 二、导频的概念 &#xff08;1&#xff09;为什么要有导频 &#xff08;2&#xff09;导频在信道估计中作用 &#xff08;3&#xff09;关于导频序列的补充 三、最小二乘法估计 &#xff08;1&#xff09;LS信道估计算法分析 &…

24.登录form的显示

1.概括 本次博客的代码就不自己去写输入框了&#xff0c;直接去引用element官网中的就好。 具体如何实现可以去订阅Vue专栏中的最后两节课噢&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;2.操作方法 打开element官网 https://element.eleme.cn/…

TRC丨艾美捷TRC 那非那韦亚砜说明书

艾美捷TRC Nelfinavir Sulfoxide 是 Nelfinavir Mesylate (N389750) 的杂质。Nelfinavir USP 相关化合物 A。 艾美捷TRC 那非那韦亚砜化学性质&#xff1a; 目录号N389770 化学名称那非那韦亚砜 同义词(3S,4aS,8aS)-N-(1,1-二甲基乙基)十氢-2-[(2R,3R)-2-羟基-3-[(3-羟基-2-…

合宙AIR32F103CBT6刷回CMSIS-DAP固件以及刷ST-LINK V2-1固件方法

合宙AIR32F103CBT6刷回CMSIS DAP固件以及刷ST-LINK V2-1固件方法&#x1f4cc;官方介绍文档:https://wiki.luatos.com/chips/air32f103/index.html&#x1f4cd;原理图&#xff1a;https://cdn.openluat-luatcommunity.openluat.com/attachment/20220605164915340_AIR32CBT6.pd…

从零备战蓝桥杯——动态规划(递推篇)

双非刷leetcode备战2023年蓝桥杯&#xff0c;qwq加油吧&#xff0c;无论结果如何总会有收获&#xff01;一起加油,我是跟着英雄哥的那个思维导图刷leetcode的&#xff0c;大家也可以看看所有涉及到的题目用leetcode搜索就可以哦&#xff0c;因为避让添加外链&#xff0c;一起加…

简历石沉大海?来围观月薪 20k 的软件测试工程师真实简历...

​前言&#xff1a;面试的重要性 在互联网公司&#xff0c;你面试的时候能拿到多少 k 薪资&#xff0c;基本上决定了你未来 1-2 年的工资&#xff0c;这个非常现实。软件测试工程师在企业中俩内年想涨工资非常难的&#xff0c;就算有涨&#xff0c;涨幅也不大。当然不排除你待…

前置句与倒装句练习题

1. 特殊语序&#xff1a;前置 1.All the information you need I am putting in the post today. 2.Any item in our catelogue we can supply and deliver 3.How she got the gun through customs they never found out. 4.The kitchen we are planning to redecorate in the…

Day25Linux获取命令帮助,压缩与解压缩,vim编辑器使用,Linux系统下载软件,通过yum方式安装软件

命令字的帮助信息的查询 rm -fr fdisk -l ls ls -l ls -出现许多.开头的文件隐藏文件 Linux命令字格式 命令字 [选项] 命令字 [选项] 文件或目录 ls哪些选项&#xff1f; 1.如何查看一个命令字的帮助手册&#xff1f; man man ls 按q退出 ls -a显示隐藏文件 ls -l显示文件的详…