编程语言 Java命令行解析jcommander总结 Java命令行解析jcommander总结 完整示例 jcommander 官网地址 http://jcommander.org/ com.beust jcommander 1.78 密码字段:可以以交互式的方式提供密码 Connection password: yuziyue 6 Sep 2023 · 2 min read
编程语言 Java远程执行linux命令总结 Java远程执行linux命令总结 注意事项 执行的命令不要用 ; & 拼接多条命令 执行的命令参数如果有空格,需要注意测试,空格对命令行解析有一定的误差。org.apache.sshd sshd-core runx("yzy", "9090", "localhost", 22, 3000, command); yuziyue 6 Sep 2023 · 1 min read
编程语言 Java单元测试JUnit5总结 Java单元测试JUnit5总结 单元测试简单流程 1.1 准备待测试代码 Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。对于高质量的代码来说,测试覆盖率应该在80%以上。测试类和待测试类名称一一对应:HelloJava 对应 HelloJavaTest yuziyue 30 Aug 2023 · 3 min read
编程语言 Java命令行解析commons-cli完整示例 Java命令行解析commons-cli完整示例 Config用于存最终的参数值 .longOpt 指定长参数名称 .hasArg 参数后面是否有值 .required 是否必传参数 .desc 描述信息 OptionGroup groupAction = new OptionGroup();创建一个组,组内的参数是互斥的,只能传一个。 yuziyue 19 Aug 2023 · 2 min read
编程语言 Java之lambda表达式总结 Java之lambda表达式总结 使用方法举例 在Java程序中,我们经常遇到一大堆单方法接口,即一个接口只定义了一个方法,此时可以以匿名类方式编写。如下是一个排序的例子 lambda语法详细解释 参数是(s1, s2),参数类型、返回值都可以省略,因为编译器可以自动推断出类型。-> { ... }表示方法体,所有代码写在内部即可。如果只有一行return xxx的代码,可以简写成(s1, s2) -> s1.compareTo(s2) yuziyue 19 Aug 2023 · 3 min read
编程语言 Java 数组操作总结 Java 数组操作总结 // 只定义: 会默认初始化。 // String型初始化为null // int型初始化为0 // float型初始化为0.0 // bool型是false String[] names = new String[5]; System.out.println(Arrays.toString(names)); System.out.println(names.length); 二. 数组遍历 yuziyue 13 Aug 2023 · 2 min read
编程语言 JAVA 线程池参数总结 Java多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释。从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler,下面会对这7个参数一一解释。线程池不会无限制的去创建新线程,它会有一个最大线程数量的限制,这个数量即由maximunPoolSize指定。 yuziyue 13 Aug 2023 · 4 min read
编程语言 Java 时间处理函数总结 从Java 8开始,java.time 包提供了新的日期和时间 API,主要涉及的类型有: 本地日期和时间:LocalDateTime,LocalDate,LocalTime; 带时区的日期和时间:ZonedDateTime; 时刻:Instant; 时区:ZoneId,ZoneOffset; 时间间隔:Duration 时间格式化:DateTimeFormatter yuziyue 12 Aug 2023 · 10 min read
编程语言 Java 枚举类型的定义与使用 Java 枚举类型的定义与使用 定义枚举类 通过enum关键字来定义枚举类,enum定义的类型就是class,只不过它有以下几个特点: 定义的enum类型总是继承自java.lang.Enum,且无法被继承;只能定义出enum的实例,而无法通过new操作符创建enum的实例;定义的每个实例都是引用类型的唯一实例;每多一个枚举 yuziyue 6 Aug 2023 · 1 min read
编程语言 Java 中List Map Stream排序总结 Java 中List Map Stream排序总结 一. List排序 方法:调用 List 对象的 sort 方法,传入实现了 Comparator 接口的 compare 方法的匿名类。 降序:compare 方法返回相反数,比如 return -o1.compareTo(o2); 按照Key排序 使用TreeMap来实现按照Key排序,TreeMap实现了红黑树的结构,形成了一颗二叉树,它的Key是有序的,可以自定义一个比较器 yuziyue 6 Aug 2023 · 2 min read
编程语言 Java 中如何使用元组 Tuple Java 中如何使用元组 Tuple Java 内置数据类型中是没有 Tuple 元组类型的,需要引入第三方包 vavr,它提供了最多八个元素的 Tuple 类型。添加依赖 vavr Tuple3 tuple3 = Tuple.of("beijing", 50, 60); System.out.println("tuple2._2() = " + tuple2._2()); yuziyue 6 Aug 2023 · 1 min read
编程语言 Java 之 ByteBuffer 详解 类ByteBuffer是Java nio程序经常会用到的类,ByteBuffer的核心特性来自Buffer,用于特定基本类型数据的容器。子类ByteBuffer支持除boolean类型以外的全部基本数据类型。Java提供的主要基础数据类型如下 Buffer也就是由装有特定基本类型数据的一块内存缓冲区和操作数据的4个指针变量(mark标记,position位置, limit界限,capacity容量)组成。 yuziyue 6 Aug 2023 · 7 min read
编程语言 Java中的volatile关键字原理 概述 在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题,被volatile关键字修饰的变量(类的成员变量、类的静态成员变量),具有了可见性、有序性,但是不能保证原子性。volatile关键字保证了多线程间的可见性。被volatile修饰的变量的读取和修改特征: yuziyue 5 Aug 2023 · 4 min read
编程语言 Java 之字符串处理方法总结 在Java中,String是一个引用类型,它本身也是一个class,实际上字符串在String内部是通过一个char[]数组表示的 字符串编码转换 在Java中,char类型实际上就是两个字节的Unicode编码。如果我们要手动把字符串转换成其他编码,可以如下这样做。注意:转换编码后,就不再是char类型,而是byte类型表示的数组。 yuziyue 5 Aug 2023 · 3 min read
编程语言 JAVA 文件操作原理与实战总结 字节流 IO流以byte(字节)为最小单位,因此也称为字节流。 比如,我们要从磁盘读入一个文件,包含6个字节,就相当于读入了6个字节的数据,这6个字节是按顺序读入的,所以是输入字节流。反过来,我们把6个字节从内存写入磁盘文件,就是输出字节流。在Java中,InputStream代表输入字流,OuputStream代表输出字节流,这是最基本的两种IO流。 字节流抽象类:InputStream/OutputStream yuziyue 3 Aug 2023 · 12 min read
编程语言 Java 之惰性计算 stream 总结 Java从8开始,不但引入了Lambda表达式,还引入了一个全新的流式API:Stream API。它位于java.util.stream包中。这个Stream不同于java.io的InputStream和OutputStream,它代表的是任意Java对象的序列,它类似Python中的迭代器。创建Stream最简单的方式是直接用Stream.of()静态方法,传入可变参数即创建了 yuziyue 3 Aug 2023 · 10 min read
编程语言 Java 反射原理与实际使用场景 加载的流程 class是由JVM在执行过程中动态加载的。JVM在第一次读取到一种class类型时,将其加载进内存。Java的所有类都是一个叫做Class的类的一个实例,Class类大概如下所示。每加载一种class,JVM就为其创建一个Class类型的实例,并关联起来。注意:这里的Class类型是一个名叫Class的class。 yuziyue 2 Aug 2023 · 5 min read
编程语言 Java 泛型机制理解与实践 泛型就是定义一种模板,例如ArrayList,然后在代码中为用到的类创建对应的ArrayList<类型>,在Java标准库中的ArrayList实现了List接口,它可以向上转型为List ,Java泛型的主要目的是实现代码的重用性和类型安全性。假如没有泛型,我们可能就会定义很多遍ArrayList了,比如 ArrayList 、ArrayList 、ArrayList 等等。 yuziyue 2 Aug 2023 · 4 min read