美文网首页Android专题Java专题
Java基础知识框架体系

Java基础知识框架体系

作者: 千夜零一 | 来源:发表于2020-11-01 23:18 被阅读0次

      “大部分码农无法成为架构师的一个原因。一直停留在业务层面,把砖砌的再好,终究只是砌砖师傅。”
      “对于绝大多数编程从业开发者而言都面临一个普遍的问题:广度与深度难以兼顾。”
      “底层知识学扎实了,上层的东西像风筝一般千变万化,而你是在底下扯线的那个人,顺着线往下拉,便能轻松看清楚这个风筝长什么样。”

    与诸君共勉~


    Java基础知识

    面向对象三大特性

    1、 封装
    2 、继承
    3 、多态

    程序设计6大原则

    1、单一职责原则
    2 、 里氏替换原则
    3、依赖倒置原则
    4、接口隔离原则
    5、迪米特法则
    6、开闭原则

    设计模式

    单例模式

    • Double check 双重加锁方式
    • 枚举方式
    • 静态内部类方式

    构造器模式
    模板方法模式
    装饰器模式
    中介模式
    观察者模式
    责任链模式
    策略模式
    简单工厂模式

    Java字符串相关

    1、String
    2、StringBuilder
    3、StringBuffer

    Java 线程池

    自定义线程池集成ThreadPoolExecutor
    JDK 自带的几种线程池

    • newFixedThreadPool
        newFixedThreadPool,创建固定大小的线程池,poolCoreSize和maxPoolSize 相等,到达coreSize,则将新的任务放到缓存队列,有线程执行完毕,直接去取。
    • newSingleThreadExecutor
        newSingleThreadExecutor,创建一个单线程的线程池,核心池的大小和最大池大小都为1.
    • newCacheThreadPool
        newCacheThreadPool,无大小限制的线程池,提交一个任务就创建一个线程执行。

    Java 集合

    • Collection
    1、List
    • 1 , LinkedList
      1、基于链表实现,插入和删除效率高,查找效率低。
      2、有一个加速查找的优化,二分之一查找。
      3、实现了栈和队列的方法,所以也可以用作栈和队列。
    • 2、ArrayList
      1、基于数组实现,查找效率高,但删除和插入是需要移动大量元素,效率低
      2、默认容量为10,当容量不足时,扩容方式是原来容量的1.5倍+1。
      3、当需要扩充容量时,需要将原来的数组通过Araays.copyOf() 方法进行拷贝到新数组中,非常耗时,所以尽量在容量确定的情况下使用AraayList,否则推荐LinkedList。
    • 3,、Vector
      1、与ArrayList 类似,添加元素时需要检查容量,不够需扩容,当设置了扩展容量时,新的容量为原来的容量+上扩展容量,否则新的为原来的2倍
      2、线程安全的
    2、Set

      1、HashSet
      2、TreeSet
      3、Queue

    Map

    • 1、HashMap
        hashMap 用一个Hash表来存储数据(也就是hash 数组),数组的每一个元素是一个单链表的头结点(用来解决冲突用)。
        扩容非常的麻烦,需要重新计算每个元素在Hash表中新的位置,效率低,所以用HashMap 时最好能确定容量。
        Hash 表的长度为2 的整数次幂,这样能确保均匀散列,充分利用空间,效率高。
    • 2、TreeMap
    • 3、HashTable

    Collection结构图

    Java 内存模型

    • 栈内存
    • 堆内存
    • 垃圾回收机制

    volatile 关键字

    相关文章

      网友评论

        本文标题:Java基础知识框架体系

        本文链接:https://www.haomeiwen.com/subject/mwfpvktx.html