分类: 计算机科学

软件复用

软件复用分为实体复用和概念复用两类。实体复用有三个层次:应用系统复用、组件复用、对象和函数复用。概念复用指的是复用一个思想、一个方法、一个操作或一个算法,它可以嵌入在设计模式、可配置系统产品以及程序生成器等方法中。复用的好处在于降低开发成本、增加可靠性、降低过程风险、有效使用专家、标准一致等;坏处在于可复用的开发和维护成本高、推广可能遭遇不利。 软件复用的方法包含:体系结构模式、设计模式、应用框架

架构入门

面向服务架构富客户端、客户端-服务器模式、基于 ESB 企业服务总线的 SOA 服务导向架构、microservices architecture 微服务架构,微服务架构是循着这条演进路线发展而来的。客户端-服务器模式可用于解释现行的很多架设,如 hsf 服务即包含客户端和服务端,此外还有微服务架构中的配置中心;redis 消息服务;sql 服务器和应用服务器的关系也是客户端-服务器模式。基于 E

电商后台建模

系统建模系统建模是对软件系统的抽象,滤除了对细节的关照,通常需要包含如下内容: 上下文模型:说明系统在上下文环境中有怎样的构成,边界如何。上下文模型并未说明各系统的交互关系。 业务过程模型:说明系统中某个业务人工或自动化的处理过程,并交代各系统在该业务过程中的交互行为。可使用 UML 活动图绘制。 交互模型:说明系统与外部参与者(用户或其他系统)之间的交互关系,其中传递的数据可通过文本或结构化表

进程与线程踩点

前言本篇基于《现代操作系统》整理。虽然笔者也不甚理解,但是这篇总结可以为后续深入探究 node 进程、java 并发、react 调度算法打个桩,从中也确实增进了对进程、中断等的理解。 进程进程概要单核 CPU 一瞬只能运行一个进程,因此需要通过多道程序设计实现多进程的伪并行,营造在 1 秒钟内有多个进程同时运行的错觉。一个进程就是一个正在执行程序的实例,包含程序计数器、寄存器和变量的当前值。程序

符号表与二叉查找树

符号表符号表用于存储键值对。通常符号表按功能提供了如下 API(由 API 可逐步深入到设计决策、测试用例、实现等): get: 获取指定 key 键的值。 put: 将键值对存入符号表中。 delete: 删除指定的键值对。 contains: 判断符号表中是否包含指定的键。 isEmpty: 判断符号表是否为空。 size: 获取符号表中键值对的数量。 keys: 获取符号表中所有 key

透过散列表看HashMap

散列表用于存储键值对。先举两个例子:如果使用有序数组存储键值对,那么当存在某个较大的键时,整个数组所占用的内存空间就会很大;如果使用无序数组存储键值对,那么在查找元素时就需要遍历数组项,造成了性能的低效。与这两个例子不同的是,散列表有效地平衡了时间和空间复杂度。创建散列表的流程分为: 通过散列函数将键转化为散列码,以作为数组的索引。 通过碰撞处理解决两个或多个散列码等值的情况。 散列函数制作散

HashMap中的红黑树

HashMap 预期以链表数组的形式存储数据,即以 key 键的散列码计算索引,然后将元素插入到作为数组项的链表中(每个数组项称为桶)。为了提升查询的效率,HashMap 中存在一个阈值,当桶中的元素量超过这个阈值时,桶的数据结构就会从链表转变成红黑树。与红宝书中基于 2-3 树实现的红黑树不同,HashMap 中的红黑树基于 2-3-4 树实现。补充说明的是,Java 中的 TreeMap 也是

红黑树

与数组相比,链表提升了插入元素的效率。因为数组在插入元素时,需要移动后续元素的位置;而链表只需要改变后继元素的 prev 属性。然而在查询元素时,链表需要遍历所有元素,并不高效。借助于红黑树,既能提升查询的效率,又能保证插入的效率。 为什么说红黑树有助于提升查询和插入的效率呢?因为红黑树本质上是一棵完美平衡的二叉查找树,可以通过节点的有序性保证查找和插入操作的便捷,其作时间复杂度就是树的高度 O(

代理模式

概述代理模式(proxy pattern) 的主要处理逻辑为,构建代理对象以桥接对实际对象的访问。因此,可以在访问过程中构建附加的间接性操作如请求处理、权限校验、内务处理(housekeeping task)等,也可以为多种实际对象提供统一的接口。 《设计模式:可复用面向对象软件的基础》中的说法是: Provide a surrogate or placeholder for another ob