极客时间学习笔记-Java核心技术36讲

Java核心技术36讲

第8讲 | 对比Vector、ArrayList、LinkedList有何区别?

内部排序,至少掌握基础算法如归并排序、交换排序(冒泡、快排)、选择排序、插入排序等。
外部排序,掌握利用内存和外部存储处理超大数据集,至少要理解过程和思路。
建议学习相关书籍,如《算法导论》《编程珠玑》等

待学习

  • 双轴快速排序(Dual-Pivot QuickSort)
  • TimSort排序
  • 堆排序
  • 归并排序
  • PriorityQueue

第9讲 | 对比Hashtable、HashMap、TreeMap有什么不同?

HashMap 的性能表现非常依赖于哈希码的有效性,请务必掌握 hashCode 和 equals 的一些基本约定,比如:
1. equals 相等,hashCode 一定要相等。
2. 重写了 hashCode 也要重写 equals。
3. hashCode 需要保持一致性,状态改变返回的哈希值仍然要一致。
4. equals 的对称、反射、传递等特性。

待学习

  • 红黑树

第15讲 | synchronized和ReentrantLock有什么区别呢?

如果状态不是共享的,或者不是可修改的,也就不存在线程安全问题,进而可以推理出保证线程安全的两个办法

1、封装:通过封装,我们可以将对象内部状态隐藏、保护起来。
2、不可变。

线程安全需要保证几个基本特性:

1、原子性,简单说就是相关操作不会中途被其他线程干扰,一般通过同步机制实现。
2、可见性,是一个线程修改了某个共享变量,其状态能够立即被其他线程知晓,通常被解释为将线程
本地状态反映到主内存上,volatile 就是负责保证可见性的。
3、有序性,是保证线程内串行语义,避免指令重排等。

你可能感兴趣的:(JAVA,学习笔记)