软考中级,软件设计师笔记;之前没有学过计算机及程序原理方面的知识,借着软考的机会,系统学一下; 1、计算机结构 硬件:运算器、控制器、存储器、输入设备和输出设备; 存储器:主存(内存)和辅存(外存); CPU:由运算器、控制器、寄存器和内部总线组成 运算器 算数逻辑单元ALU:数据的算数运算和逻辑运算; 累加寄存器AC:通用寄存器,为ALU提供一个工作区,暂存数据; 数据缓冲寄存器DR:写内存时,…
分类: 基础知识
软件设计师(6) – 剩余部分
《软件设计师教程》剩余部分的笔记,考试之前整理到word中,考完试才有时间搬过来; 不得不说,中级还是有点儿东西的,这次不知道能不能通过;这一系列的笔记仅仅算是考点的记录,每个知识点扩展下去的话,没一年半载是搞不定的; 笼统的学了这一遍,感觉比较重要的知识有:设计模式、算法、数据流图、UML图,个个都是大坑; 一、面向对象 1、设计模式 这里只整理分类吧,之前就看过好几遍,现在为了软考,又学了一遍…
软件设计师(2) – 程序设计语言基础
1、编译和解释 编译型和解释型最大的不同,就是编译型会生成目标代码; 编译型编译的过程如下: 源程序 -> 词法分析 -> 语法分析 -> 语义分析 -> 中间代码生成 -> 代码优化 -> 目标代码生成 -> 目标程序 词法分析:利用正规式、有限状态机,来检查是否存在非法字符,关键字或标识符拼写错误等; 语法分析:检查语法结构是否正确,比如 if els…
软件设计师(3) – 数据结构
数据结构相关笔记 1、线性表 顺序存储 数组 链式存储 单链表:每个结点指向指向下一个结点; 双向链表:每个结点指向上一个和下一个结点,可以从两个方向上遍历链表; 循环链表:在单链表或双向链表的基础上,首尾相连,可以从任意结点遍历整个链表; 静态链表:数组; 栈和队列 栈:先进后出; 队列:先进先出; 两者都有两种存储结构:顺序存储、链式存储; 串 仅有字符构成的有限序列;– 字符串;…
软件设计师(4) – 操作系统
操作系统 1、进程 进程是程序的一次执行,进程通常是由程序、数据和进程控制块(PCB)组成; 三态五态模型 同步和互斥 同步:多个进程并发执行,每个进程都以各自独立的、不可预知的速度向前推进,需要在某些确定的点上协调相互合作进程间的工作; 互斥:系统中多个进程因征用临界资源而互斥执行; 临界资源:一次只能供一个进程使用的资源; 临界区:进程中对临界资源实施操作的那段程序; 信号量:一个整型变量,根…
软件设计师(5) – 软件工程
一、软件过程 1、能力成熟度模型(CMM) 是用来评价软件组织(公司)的模型; 初始级:项目依赖个人努力和英雄式核心人物; 可重复级:重复之前同类项目的成功; 已定义级:管理和工程两方面的软件过程已经文档化、标准化; 已管理级:指定了软件过程和产品质量的详细度量标准; 优化级:加强了定量分析,持续改进; 2、能力成熟度模型集成(CMMI) CMMI和CMM一样,是适用不同学科领域的模型;CMMI是…
算法 – 静态查找
先明确“查找”的几个定义: 查找 查找表:(同一类型的)数据元素(或记录)构成的集合,是一种灵活的数据结构; 静态查找表:只查找,不改变查找表; 动态查找表:需要在查找表中插入元素或删除元素,这类查找表就是动态查找表; 平均查找长度:查找的基本操作是将记录的关键字与给定值进行比较;为确定记录在查找表中的位置,比较次数的期望值称为查找算法在查找成功时的平均查找长度; 静态查找中常用的算法是顺序查找和…
算法 – 冒泡排序
冒泡排序差不多是我最早接触的算法了,但实际工作中也没怎么用过; 现在 js 里排序的场景我都直接用 Array.sort(),随着电脑和手机处理器性能的提升,至少在我所在的团队/环境,感觉大家都不太关注 js 代码执行性能的优化了;使用 Vue 的过程中,也有很多滥用循环没有考虑性能的情况; JavaScript 实现 两个数字交换,我用的是 arr[j] = [n2, arr[j + 1] = …