JAVA编程小知识

JAVA编程小知识

一、设计模式

1、设计模式的提出: 博士论文
2、Singleton模式
(1)确保全局至多只有一个对象
(2)用于:构造缓慢的对象,需要统一管理的资源
(3)缺点:很多全局状态,线程安全性
(4)创建

  • 双重锁模式Double checked locking:check两次
  • 作为Java类的静态变量
  • 使用框架提供的能力—spring等

3、变继承关系为组合关系
继承关系:描述is-a关系,不要用继承关系来实现复用,使用设计模式实现服用

4、创建对象
(1)使用new创建对象

  • 编译时必须决定创建哪个类的对象
  • 不看具体代码,参数意义不明确

(2)Abstract Factory Pattern

二、并行计算与多线程

1、并行计算
(1)节点,将数据拆分到每个节点,每个节点并行的计算出结果,将结果汇总
(2)外部排序

  • 将数据分为左右两半,分别归并排序,再将两个有序数据归并
  • 左边右边进行一位一位的比较,左右相等时候出左边的数
  • 每个节点都是有序排列,由归并结点进行合并

2、多线程
(1)在任何地方都可以线程切换,甚至在一句语句中间
(2)死锁条件
互斥等待,hold and wait,循环等待,无法剥夺的等待
(3)死锁防止

  • 破除互斥等待-----一般无法破除
  • 破除hold and wait----一次获取所有的资源
  • 破除循环等待----按顺序获取资源

3、线程池
(1)创建线程开销大
(2)线程池:预先建立好线程,等待任务派发
(3)线程池:Blocking Queue + 线程
(4)线程池参数

  • corePoolSize:线程池中初始线程数量,可能处于等待状态
  • maximumPoolSize:线程池中最大允许线程数量
  • keepAliveTime:超出corePoolSize部分线程如果等待这些时间将会被回收

三、资源管理与算法

1、资源管理
(1)Java垃圾回收

  • 不被引用的对象会被回收
  • 垃圾回收包括Minor GC 和Full GC
  • 垃圾回收时所有运行暂停

(2)Java资源管理
内存会被回收,资源不会被释放
databaseConnection需要databaseConnection.close()来释放

2、算法
(1)算法导论
(2)对数据进行排序:快速排序算法O(nlogn)
(3)对一组数据进行排序:数据特征、是否包含大量重复的元素--------三路快排
(4)数据特征:大部分数据距离它正确的位置很近,近乎有序—查序
(5)数据特征:取值范围有限----计数排序
(6)对一组数据进行排序

  • 有没有可能包含大量重复的元素
  • 是否大部分数据距离它正确的位置很近
  • 是否近乎有序
  • 是否数据的取值范围非常有限,比如对学生成绩排序
  • 是否需要稳定排序
  • 是否是使用链表存储
  • 数据的大小是否可以装载在内存
posted @ 2020-03-16 22:00  李泽坤  阅读(83)  评论(0编辑  收藏  举报