美文网首页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