编程语言 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
编程语言 Scala之高阶函数指南 高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数作为参数,或者返回值为函数的“函数”和“方法”,均称之为“高阶函数”。map 将传入的函数一次作用在序列上 yuziyue 5 Aug 2023 · 3 min read
编程语言 Java中的volatile关键字原理 概述 在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题,被volatile关键字修饰的变量(类的成员变量、类的静态成员变量),具有了可见性、有序性,但是不能保证原子性。volatile关键字保证了多线程间的可见性。被volatile修饰的变量的读取和修改特征: yuziyue 5 Aug 2023 · 4 min read
编程语言 Scala 编程之类与对象 Scala 编程之类与对象 主构造函数:其实就是把类成员初始化 辅助构造函数:额外的构造函数,每个辅助构造方法都必须首先调用另一个构造方法(另一个辅助方法 或者 主构造方法)。在 Java 类中,构造方法要么调用同一个类的另一个构造方法,要么直接调用超类的构造方法。而在 Scala 类中,只有主构造方法可以调用超类的构造方法。 yuziyue 5 Aug 2023 · 4 min read
编程语言 scala没有break关键字怎么办 scala.util.control 包的 Break 类给出了一个 break 方法,可以被用来退出包含它的用breakable标记的代码块。Break类实现的break的方法是抛出一个异常,然后由外围的breakable的方法的应用所捕获,因此对break的调用并不需要跟 breakable 的调用放在同一个方法内。 yuziyue 5 Aug 2023 · 1 min read
编程语言 Scala 中下划线用法总结 Scala 中下划线用法总结 导入通配符 *号在Java中是导入通配符,但是在Scala中是合法的方法名,所以导入包时要使用_代替。类成员默认值 Java中类成员可以不赋初始值,编译器会自动帮你设置一个合适的初始值,而在Scala中必须要显式指定,可以用 _ 让编译器自动帮你设置初始值,注意: 该语法只适用于类成员,而不适用于局部变量。可变参数 yuziyue 5 Aug 2023 · 3 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
编程语言 Python 实现 linux 命令 tail Python 实现 linux 命令 tail ,在某些场景需要实时读取文件的新增内容,使用linux的命令行tail不是很容易操作,所有有了python版本的tail,方便直接加入到脚本。自定义处理函数 同时还可以指定从文件开头,还是文件末尾读取,以及读取的间隔时间。t = tail.Tail("/tmp/able") yuziyue 30 Jul 2023 · 2 min read
编程语言 linux 命令 exec 到底有什么作用 我们在看别人写的脚步时,你可能会发现别人启动程序时喜欢在命令前面添加一个 exec 命令,它的作用其实是:将当前的 shell 进程替换为指定的命令或程序,这意味着原来的 shell 进程将被终止,并且执行的命令将在新的 shell 进程中运行。 这样做的好处在于可以在不创建新的子进程的情况下,直接在当前 shell 进程中执行指定的命令,从而节省了系统资源并且能够更高效地执行命令。 yuziyue 30 Jul 2023 · 2 min read
编程语言 bash 中ctrl+c ctrlc ctrl c清理工作 bash 中ctrl+c ctrlc ctrl c清理工作 bash 脚本有时候按 ctrl+c 以后需要做清理工作,可以自定义 ctrl + c 以后的处理逻辑。运行上面的脚本,当按ctrl c以后,会运行 ctrl_c 函数,然后才退出程序。 echo "cleaning..." echo " Bye!" yuziyue 30 Jul 2023 · 1 min read
编程语言 Java 面向对象知识点梳理 一个 .java 文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。 如果不确定是否需要public,就不声明为public,即尽可能少地暴露对外的字段和方法。 创建新对象时,优先选用静态工厂方法而不是new操作符。 定义为public的class、interface,可以被当前包,其他包的任何类访问。 yuziyue 27 Jul 2023 · 20 min read
编程语言 python与bash用法比较 字符串startswith和endswith,字符串contains包含,按行读取文件内容,字符串split拆分,数组追加元素,${#arr[@]}表示当前数组的长度 arr=() arr[${#arr[@]}]=element1 arr[${#arr[@]}]=element2 arr[${#arr[@]}]=element3 yuziyue 27 Jul 2023 · 1 min read