摘要: 进程的状态切换: 进程主要有五种状态,分别是新建、就绪、运行、阻塞、销毁。如下图: 严格来说,进程还有挂起的状态,主要为了解决内存资源不足的问题。如果终端用户请求、父进程请求、负荷调节都需要使用挂起状态。如下图: 在就绪和阻塞两个状态中,再区分静止就绪和活动就绪,以及静止阻塞和活动阻塞;静止与活动状 阅读全文
posted @ 2021-06-27 21:40 多元思维的开发者 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 进程: 进程是系统资源分配和独立运行的基本单位。 进程的创建、调度、运行和销毁都是由操作系统控制、操作系统会负责对进程进行状态的切换,而这便是对进程的管理。 进程会创建进程,前者称为父进程,后者便是子进程。而子进程也可以创建进程,这样就会形成一颗进程树。如下图: 进程创建之前,会创建进程控制块(PC 阅读全文
posted @ 2021-06-20 21:07 多元思维的开发者 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 经典的设计模式有 23 种,分成三类,分别是: 创建型: 1、单例 2、工厂 3、建造者 4、原型 结构型: 1、适配器 2、装饰器 3、门面 4、享元 5、代理 6、组合 7、桥接 行为型: 1、策略 2、迭代器 3、模板方法 4、命令 5、状态 6、观察者 7、责任链 8、访问者 9、中介者 1 阅读全文
posted @ 2021-06-13 22:08 多元思维的开发者 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 责任链:将每个模块负责的处理流程链接起来,形成一条链子,所有请求的数据进入这条链子时,都会由链头到链尾被链子上的各个模块处理。 例如:Java EE 的 Filter(过滤链)就是责任链,所有请求都必须经过这条过滤链,每经过一个节点都会被这个节点进行处理。如果请求满足过滤条件,那么就会进入下一个过滤 阅读全文
posted @ 2021-06-06 21:38 多元思维的开发者 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 模板方法:定义好一个执行模板(骨架),然后将一些动态的流程和数值参数化,这样就可以根据不同的参数产生不同的结果。 例如:JDK 的 AQS(AbstractQueueSynchronizer) 就是采用了模板方法模式。AQS 已经定义好线程同步的流程和细节,只有五个方法是没有实现的,由子类负责具体实 阅读全文
posted @ 2021-05-30 21:16 多元思维的开发者 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将需要执行的流程封装成一个任务(命令),然后提交给执行器(命令执行者)执行。 例如:JDK 线程池里的 Execultor 就是采用了命令模式,Executor 是命令执行者,Runnable 是命令,Executor 里的 execute 方法传入的参数就是 Runnable,如下: R 阅读全文
posted @ 2021-05-23 21:07 多元思维的开发者 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 观察者模式:主要涉及两个对象,主题(被观察者)、观察者。如果主题发生变化,那么就会通知所有订阅该主题的观察者。 例子:JDK 中有一套通用的观察者模式模板。那就是 Observable (可观察) 和 Observer (观察者),它们的关系如下: 主题可以被很多观察者订阅,所以主题与观察者是一对多 阅读全文
posted @ 2021-05-16 22:44 多元思维的开发者 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 迭代器是用来遍历容器的工具,迭代器内部封装了容器遍历的细节。 因为容器可能比较多,而且结构也可能各不相同,例如有:数组、哈希表、链表、跳表、红黑树、多路树、图等等。因此,每种容器一般都会提供各自的迭代器,用于遍历容器里的数据。 每种容器都有自己的迭代器,但如果每种迭代器接口不统一,那么使用成本极高, 阅读全文
posted @ 2021-05-09 22:24 多元思维的开发者 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 策略模式:针对不同的情况和场景,使用相应的处理策略。不同的策略,处理的逻辑各不相同。 例如;在 JDK 的线程池配置参数里面,就有一个拒绝策略的参数。这个拒绝策略是线程池最后保险机制,一旦线程池处理请求达到饱和就会触发拒绝策略,而线程池默认的拒绝策略就是丢弃策略(AbortPolicy),除此之外还 阅读全文
posted @ 2021-05-07 22:42 多元思维的开发者 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式:在原有的功能附加额外的功能,从而扩展和强化已有的功能,同时也保留着原有功能的效果。 例如:JDK 的 IO 包里,就有很多装饰器的例子。如下 InputStream 的 UML 图: InputStream 是所有输入流的顶级抽象基类,其中定义了最基本的 read 方法,负责读取数据,如 阅读全文
posted @ 2021-05-07 22:20 多元思维的开发者 阅读(34) 评论(0) 推荐(0) 编辑