JAVA

配置文件

  • yaml
  • properties
CompositeConfiguration conf = new CompositeConfiguration();
conf.addConfiguration(new PropertiesConfiguration("SWC.properties"));
String ts = conf.getString("spark.name");

序列化Serializable

  1. 对象序列化的定义:将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新"装配"。像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
  2. 实现序列化的类必须实现Serializable接口。序列化时,类的所有数据成员应可序列化除了声明为transient或static的成员.

Hashmap

get后,通过函数修改了类里面的东西,那么这个value也就修改了。


JAVA_第1张图片
image.png

字符间加入符号

public static void main(String[] args) {
        List list = new ArrayList();
        list.add("s1");
        list.add("s3");
        list.add("s5");
        list.add("s7");
        System.out.println(String.join(",", list));
    }
//结果:s1,s3,s5,s7

代码规范

常量

全局常量和类内常量采用字母全部大写、单词之间加下画线,局部常量采用小驼峰形式

数据结构

  • List集合
    常用的时ArryList好LinkedList两个集合类。
    1. ArraList是使用数组进行存储。扩容的时候是把数据复制到新数组中。特点:随机访问快速,但是插入和删除速度很慢,因为可能移动其他元素。
    2. LinkedList的本质是双向链表。特点:插入和删除的速度快,但是随机访问慢。
  • Queue集合
    先进先出的数据结构FIFO的特性,经常作为Buffer(数据缓冲区)使用。
  • Map集合
    1. HashTable因为性能瓶颈被淘汰。
    2. HashMap应用广泛,线程不安全。
    3. ConcurrentHashMap是线程安全的,JDK8中进行了锁的大幅度优化,在多线程并发场景中,优先推荐使用ConcurrentHashMap.
    4. TreeMap是Key有序的Map类集合。
  • Set集合
    Set是不允许出现重复元素的集合类型。
    1. HashSet使用HashMap实现的,只是Value固定为一个静态对象,使用Key保证集合元素的唯一性。但是不保证集合的顺序。
    2. TreeSet使用TreeMap实现的,底层是树结构,保证了集合的有序。
    3. LinkedHashSet继承自HashSet,内部使用链表维护了元素的插入顺序。

集合初始化

ArrayList使用无参数构造的时候,默认大小为10,如果放入1000个元素,那么需要扩容13次才完成存储,但是如果初始化的时候指定了容量New ArrayList(1000)的话,初始化的时候就会直接分配1000个存储空间,从而避免了被动扩容和数组复制的额外开销。注意,如果这个值很大,而且没有初始化复制,那么会造成很大的额外性能损耗,甚至导致OOM的风险。

默认初始值:ArrayList的是10,HashMap的是16

maven编译报错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.4:single (make-assembly) on project flink_WC: Failed to create assembly: Error creating assembly archive jar-with-dependencies: IOException when zipping org/apache/flink/streaming/connectors/fs/Clock.class: invalid LOC header (bad signature) -> [Help 1]
问题:对应的依赖没下载好,去仓库里删除重新下
解决:删除仓库中的残余,重新下载。

Comparator的理解

 // 按照点击量从大到小排序
    allItems.sort(new Comparator() {
      @Override
      public int compare(ItemViewCount o1, ItemViewCount o2) {
        return (int) (o2.viewCount - o1.viewCount);
      }
    });

总结:compare的比较结果如果返回1的话,那么表示要交换位置。如上述代码,o2.viewCount - o1.viewCount如果是1的话,表示o2比较大,那么o2要和o1交换位置,从大到小。

Json的使用

链接:https://www.cnblogs.com/geek1116/p/7413619.html

多线程

一个进程里面可以有多个线程,每个线程最多使用完一个核的CPU

你可能感兴趣的:(JAVA)