软件设计师学习笔记
计算机系统知识程序语言设计数据结构操作系统软件工程基础知识结构化开发方法创建型设计模式行为型设计模式结构型设计模式; 算法设计与分析数据库技术基础网络与信息安全基础知识法律法规其他计算机系统知识
在程序执行的过程中,cache与主存的地址映射是由硬件自动完成的;在计算机系统中采用总线结构,便于实现系统的积木化构造,同时可以减少信息传输线的数量。SCSI不属于系统总线;指令中用时最长的指令的执行时间为流水线的周期;计算机系统的主存主要是由==DRAM(dynamic random access memory)==构成;SRAM不需要刷新电路既能保存内部存储的数据,用来做cache;EEPROM一般用于即插即用,常用在接口卡中存放硬件设置数据。DRAM使用电容存储信息且需要周期性刷新;海明码是奇偶校验的一种扩充,利用奇偶性进行检错和纠错。在微机系统中,BIOS(基本输入输出系统)保存在主板上的ROM中;主存与cache的地址映射方式中,全相联方式可以实现主存的任意一块装入cache中任意位置,只有装满才会替换,发生块冲突的次数最小(直接映像最高,组相连映像居中);相联存储器是指按照内容访问的存储器;CPU是在一个总线周期结束时响应DMA请求的;DMA方式传送数据时,每传送一个数据需要占用一个存储周期;计算机运行过程中,CPU需要与外设进行数据交换,采用中断方式和DMA方式控制技术时,CPU与外设可并行工作;当用户通过键盘或鼠标进入某应用系统时,通常最先获得键盘或鼠标输入信息的是中断处理程序;为了便于实现多级中断嵌套,使用堆栈来保护断电和现场最有效。按照是否可以被屏蔽将中断分为不可屏蔽中断和可屏蔽中断;不可屏蔽中断一旦提出请求CPU必须无条件响应(eg:电源掉电),面对可屏蔽中断请求,CPU可以响应也可以不响应(I/O设备提出的中断请求)。实现计算机与外部设备之间数据交换经常使用的方式有1.无条件传送、2.程序查询、3.中断、4.直接存储器存取DMA。无条件传送、程序查询、中断通过CPU执行某一段程序,实现计算机内存与外设的数据交换,只有DMA方式下,CPU交出计算机系统总线的控制权,不参与内存与外设之间的数据交换。DMA方式工作时,在DMA控制器硬件的控制下实现内存与外设间数据的直接传送,并不需要CPU参与工作,这种方式传送的速度最快。CPU依据指令周期的不同阶段区分在内存中以二进制编码形式存放的数据和指令;CPU的中断响应时间指的是从发出中断请求到开始进入终端处理程序;三层总线结构由数据总线、地址总线和控制总线组成;计算机采用分级存储体系主要目的是为了解决存储容量、成本和速度之间的矛盾;Flynn分类法基于信息流特征将计算机分成四类,其中多指令流单数据流MISD只有理论意义而无实例;浮点数中阶码决定浮点数所能表示的数值范围,尾数决定浮点数所能表示的数值精度;工业标准IEEE754浮点数规格化指的是阶码采用移码,尾数采用原码;两个浮点数相加时,需要先对阶,即将小阶向大阶对其,同时将尾数右移n位;累加器AC暂时存放算术逻辑运算部件ALU运算的结果信息;程序计数器PC存放下一条指令所在单元的位置,当执行一条指令时,处理器首先需要从PC中取出指令在内存中的地址,通过地址总线寻址获取;指令寄存器IR保存当前正在执行的一条指令;指令寄存器完全透明地址寄存器AR用来保存当前CPU所要访问的内存单元的地址;计算机指令一般包括操作码和地址码两部分,为分析执行一条指令,操作码和地址码都应该存入指令寄存器;编写汇编语言程序时,程序员可访问的是程序计数器PC;在机器指令的地址字段中,直接指出操作数本身的寻址方式称为立即寻址方式;指出操作数所在的内存地址叫直接寻址方式;当操作数放在CPU的通用寄存器中时,采用寄存器寻址方式;在指令中隐含着操作数地址的叫隐含地址;甲乙通信,甲对发送的消息附加了数字签名,乙收到消息后利用甲的公钥验证该消息真实性;MIME与电子邮箱安全性无关;SSL和HTTPS涉及到邮件传输过程的安全,PGP优良保密协议是一套用于信息加密、验证的应用程序,可用于加密电子邮件内容。冗余技术通常分为四类:结构冗余:按其工作方式可分为静态、动态和混合;信息冗余:指的是为了检测或纠正信息在运算或传输中的错误另外加的一部分信息;时间冗余:是指重复执行指令或程序来消除瞬时错误带来的影响;冗余附加技术:是指为实现上述冗余技术所需的资源和技术;冗余附加技术构成=程序语言设计
数据必须有类型是便于为数据合理分配存储单元;便于对参与表达式计算的数据对象进行检查;便于规定数据对象的取值范围及能够进行的运算(数据结构
互异的非平凡子串是指非空且不等于其本身的子串;先序遍历先根后左后右(根左右);中序遍历先左后根后右(左根右);后序遍历先左后右后根(左右根);树的高度即深度,为其最大层次数;平衡二叉树左子树与右子树高度差绝对值不超过1;图的遍历是指从图中某一顶点出发,对图中所有顶点访问一次且只访问一次;图的遍历分为深度优先算法和广度优先算法,使用队列对图进行广度优先遍历,广度优先遍历的特点是尽可能进行横向搜索;插入排序适合基本有序时使用,计数排序适合小范围集合的排序。选择排序:从待排序序列中找到关键字最小的元素与第一个元素互换位置,剩余同理,是不稳定排序方法;快排最佳基准元素是待划分数组的中位数;算法中选择第一个;线性表采用顺序存储结构时,访问标中任意一个指定序号元素的时间复杂度为常量级;将一组关键字映射到一个有限的连续的地址集上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表称为哈希表;由于冲突的产生,哈希表的查找过程仍然是个比较的过程;H(key)=key mod p时,p的值一般为不大于n且最接近n的质数;构造哈希函数时应尽量使关键字的所有组成部分都能起作用;链表存储的缺点是数据元素之间的关系需要占用存储空间,导致存储密度不高;循环单链表表示队列,入队和出队都不需要遍历链表;最后一个阶段指向第一个结点;操作系统
在有限的资源下,要保证不发生死锁,给每个进程分配所需资源数-1,然后整体系统还有一个剩余资源既不会产生死锁;在进行地址变换时,利用逻辑地址的段内页号来对应其物理块号,再利用物理块号和页内地址构成物理地址;实时系统对于来自外部的事件必须在被控对象规定的时间内做出及时响应并对其处理;当通过键盘或鼠标进入某应用时,通常最先获得键盘鼠标输入信息的是中断处理程序;P、v操作,p减v加,互斥1,同步0;在多线程运行环境中,线程使用程序计数器、寄存器和栈时不可共享;系统初始化过程自底向上,从硬件到软件的次序为片级初始化、板级初始化、系统级初始化;系统级初始化以软件初始化为主,主要进行操作系统的初始化;文件的全文件名应该从根目录开始;若IO接口与主存采用统一编址,则输入输出操作是通过访存指令完成的;CPU采用中断方式和DMA方式,CPU与外设并行工作;(程序查询方式是顺序执行);XP可以选择FAT、FAT32或NTFS文件系统格式化卷;系统采用信箱通信方式,当原语为“等信箱”状态,原因是指定信箱中存满了信件;进程创建了若干个线程,该进程中的某线程的栈指针不能被线程共享;在移臂调度算法中,先来先服务和最短寻找时间优先算法可能会随时改变移动臂的运动方向;文件存储直接存储:物理块可存放=磁盘块大小/块号;一级索引存储:物理块可存放*磁盘块大小/1024;一级索引存储:物理块可存放磁盘块大小磁盘块大小/1024;IP管理层次从上往下为用户IO、设备无关系统软件、设备驱动程序、中断处理程序、硬件;Linux中只有一个根目录,用/表示;Linux中更改文件权限用chmod;若磁盘转速提高一倍,则旋转等待时间减半;强行撤下p1,让更高优先级p2运行——可剥夺方式;软件工程基础知识
软件工程的基本要素包括方法、工具和过程;系统开发的目的是把现有系统的物理模型转化为目标系统的物理模型;系统分析的结果是得到目标系统的逻辑模型;软件配置管理的内容结构化开发方法
结构化分析的输出•
面向对象技术面向对象执行顺序:认定对象、组织对象、描述对象间相互作用,确定对象的属性;Jackson不属于面向对象方法,是面向数据结构;分析阶段,架构师主要关注系统的行为;面向对象分析的过程中,从给定需求描述中选择名词短语来识别对象;名词短语暗示类及其属性,动词和动词短语暗示职责或操作;面向对象分析的第一步是确定问题域;面向对象设计要关注实现层面的细节!!!;实体类是应用领域中的核心类,用于保存系统中的信息以及提供针对这些信息的相关处理行为;控制类用于负责实体类和界面类的交互;边界类负责和用户进行交互;高层模块不应该依赖于底层模块,抽象不应该依赖于细节,细节可以依赖于抽象(错误的是高层模块无法不依赖于底层模块);类的静态数据成员的值可以修改;一个类是一组对象的抽象定义;一个对象通常由对象名、属性和方法三部分组成;一个对象把属性和行为封装为一个整体,一个类所包含的方法和数据描述了一组对象的共同行为和属性;对象具有1清晰的边界,2良好定义的行为,4可扩展性;(1、2、4);领域类模型中不包含领域对象;(包括属性、操作、关联);泛化是一个类与他的一个或多个细化类之间的关系,即一般与特殊关系;多重继承指一个类有多个父类,子类中可能会存在二义性的成员;动态绑定是实现多态的基础;子类在原有父类的接口基础上,用适合于自己要求的实现去置换父类相应实现称为覆盖;采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的行为;聚合对象是指一个对象包含其他对象;在面向对象方法中,多态是指客户类无需知道所调用方法的特定子类的实现;都用统一方式来调用;不同对象收到统一消息可以产生不同的结果;动态绑定是实现多态的基础;包含多态在许多语言中都存在,子类泛型化;里氏代换:任何基类对象可以出现的地方,子类对象一定可以代替基类对象;
创建型设计模式
为图形用户界面组件定义不同平台的并行类层次结构,适合采用抽象工厂模式;当构造过程必须允许被构造的对象有不同的表示时用生成器;行为型设计模式
concreteSubject在其状态发生改变时向他的各个观察者发出通知;后端数据模型能够被多个前端用户连接,使用中介者最合适;责任链适用于可处理一个请求的对象,集合应被动态指定;结构型设计模式;
Web创建主题——桥接模式;统一的驱动接口屏蔽不同的驱动方法——适配器;UML状态图中转换的五要素:源状态、目标状态、触发事件、监护条件、动作;UML中类图描述的是类与类之间的关系;对象图描述的是某个具体的对象;-在UML用例图中,参与者表示人、硬件或其他系统可以扮演的角色;部署图:组件和硬件之间的物理关系;部署组件之间的依赖关系类似于包依赖;部署图是用来显示系统中软件和硬件的物理架构;组件之间的依赖关系类似于包图;部署图通常在实施阶段使用;接口用于声明对象类所需要的服务;规划什么功能或测试用例——用例图;组件之间的组织和依赖——组件图;UML类图不用对对象快照进行建模;UML中关联是一个结构关系,两个类之间可以有多个由不同角色标识的关联;UML活动图表示分支、合并、分岔和汇合;活动图——从一个活动到另一个活动的流程;构件图专注于系统的静态实现视图;对一个复杂用例中的业务处理流程可用活动图建模;父类中方法为斜体,表示此类为抽象类,在子类中需要重置该方法;UML中有四种关系;依赖:两事务之间的语义关系,其中一个事物发生变化会影响另一个事物的语义;关联:关联描述一组对象之间连接的结构关系,对象之间的连接成为链;关联的多重度指的是一个类的实例能够与另一个类的多少个实例相关联;泛化:是一般化和特殊化的关系,特殊元素(子元素)的对象可以替换一般元素(父元素)的对象,使子元素共享了父元素的结构和行为;实现:是类之间的语义关系,其中一个类指定了由另一个类保证执行的契约;关于UML中错误的是:若事件触发一个没有特定监护条件的迁移,则对象离开当前状态;(不一定离开)关于状态图错误的是:一个转换可以有事件触发器、监护条件和一个状态;对象是封装数据和行为的整体;
特殊多态强制多态:一种类型的变量在作为参数传递时隐式转换成另一种类型;过载多态:同名在不同上下文中有不同类型;业务用例和参与者一起描述组织支持的业务过程;业务对象模型描述业务结构以及结构元素如何完成业务用例;按照不同采取不同行为——判断表描述该加工的规格说明;
算法设计与分析
三元组顺序链表,行逻辑连接的顺序表和十字链表是对稀疏矩阵进行压缩存储的方式;Java:即时编译,对象在堆空间分配;用C/C++语言为某个应用编写程序,经过预处理、编译、汇编、链接后形成可执行程序;动态规划算法通常用于求解具有某种最优性质的问题;分治法对设计思想是将一个难以直接解决的大问题分解成一些规模较小的相同问题;贪心法是一旦做出选择就不会改变,只能做到局部最优;回溯法是将问题的候选解按照某种顺序逐一枚举和检验;分支限界——广度优先的问题探索解空间;二叉树先序遍历和后序遍历无法构造中序遍历;对于二叉排序树,从左到右排列同层次的结点,其关键字呈现有序排列的特点;对于N个数排序,最坏情况下时间复杂度归并为nlog2n;优先队列通常采用堆实现;采用邻接矩阵表示图时,查找所有顶点的邻接点的时间复杂度为n^2;N个权值构造哈夫曼树,结点数为2n-1;完全二叉树中,左右子树高度之差绝对值不超过1;高度与其节点数之间存在确定的关系;哈希表中冲突是指关键字不同的元素被映射到相同存储位置;实现函数或过程的递归调用及返回时必须用栈;完全图适合采用邻接矩阵存储;M阶B-树,每个节点至多有M棵子树;错误的是:-分治一般由三个步骤组成:问题划分、递归求解、合并解;动态规划——最优;回溯——深度优先;构造哈希函数时应尽量使关键字的所有组成部分都能起作用;若网较稠密,Prim算法比Kruscal算法好;当基准元素为中位数时,快排的时间复杂度最坏都是o(n);通过元素在存储空间中的相对位置来表示数据元素之间的逻辑关系,是顺序存储的特点;
-解决哈希冲突,与多个关键字进行了比较,这些关键字的第一个可以不是e的同义词;归并无论如何都是nlgn;大顶堆——父节点比孩子节点都大;按层次往下;eg84723561;
数据库技术基础
==JDBC(Java Database Connectivity)==是基于Web的电子商务应用中,访问存储与数据库中业务对象常用的方式之一;共享锁(S锁):若事务T对数据对象A加上了S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加上S锁,直到T释放S锁;-排他锁(X锁):若事务T对数据对象A加上了X锁,则只允许T读取和修改A,其他事务都不能对A加任何类型的锁,知道T释放X锁;
-配置数据库一般包括开发库,受控库和产品库。(不包括信息库)
事务:原子性:要么做,要么不做;一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态;隔离性:事物相互隔离。持久性:一旦事务成功提交,即使数据库崩溃,对数据库的更新操作也永久有效;确定系统边界和关系规范化分别在数据库设计的需求分析和逻辑分析阶段;系统边界——需求分析;
-关系规范化——逻辑分析;对数据库一张表创建聚簇索引,改变的是数据库的内模式;视图是从一个或几个基本表或视图导出的虚拟表;
-4NF:多值属性的ER转关系模型时,将实体的码分别和每个多值属性独立构成一个关系模式;关系中都有编号不属于命名冲突;命名冲突是在ER模型中提出,合并ER图产生冲突是因为同样对象不同局部有不同定义,不同对象则不存在命名冲突;returns integer/dclare d_count integer;
-OLAP工具是针对特定问题的联机数据访问与分析,通过多维的方式对数据进行分析、查询和报表;
-分布式数据库可用性——某一场地故障,系统使用其他场地副本而不至于整个系统瘫痪;不同分ER图有同一属性——结构冲突;
网络与信息安全基础知识
HTTPS协议需要CA申请证书,http是超文本传输协议;HTTPS是具有安全性的SSL加密传输协议;http默认端口为80,https默认端口为443;HTTPS使用SSL协议对报文进行封装;-SSH是应用层上的安全协议,利用SSH有效防止远程管理中信息泄露问题;用于读取一个网页的操作——GET;用于获取头部——HEAD;用于提交表单——POST;
-被动攻击中攻击者不对数据信息做任何修改,是在未经用户同意或认可的情况下非法获得相关信息或数据,通常包括窃听,流量分析,破解若加密的数据流,会话拦截等攻击方式;
-漏洞扫描不属于入侵检测技术;相比TCP,UDP开销较小;
-SMTP端口25,POP3端口110;WWW端口80;FTP端口21传输命令和参数,20传送文件;Telnet端口23;
-DNS用的是UDP端口53;数据库容灾属于系统安全和应用安全;数据链路层:网桥、交换机;ARP攻击造成网络无法跨网段通信的原因是伪造网关ARP使得数据包无法发送到网关;ARP属于网络层协议;
-ICMP属于网络层协议,封装在IP数据报中传送;在IE中,安全级别最高的是受限站点;使用Web方式收发电子邮件时,必须设置账号密码登录;MIC收到的信号是音频模拟信号;表示媒体——传输感觉媒体的中介媒体;eg:图像编码;CIF——352*288;网络中交换设备错误的是三层交换机只能根据第三层协议进行交换;集线器连接的主机构成一个冲突域,交换机每个端口属于一个冲突域,路由器连接的部分为广播域;集线器不能起到自动寻址的作用;PPP中安全认证协议是CHAP;浏览器输入正确地址,本地主机首先在本机hosts文件查询该网址对应IP地址;主域名服务器在接收到域名请求后,首先查询本地缓存;ADSL协议接入Internet,用户端需要安装PPPOE协议;在windows中设置默认路由是当没有其他路由可选时最后选择的路由;
-SMTP传输邮件报文采用ASCII格式表示;
-SNMP属于应用层协议,封装在UDP中;
-在ASP的内置对象中,response对象可以修改cookie 的值;使两个IPv6可以通过现有的IPv4通信采用隧道技术;纯IPv6和纯IPv4通信使用翻译技术;VLAN的优点允许逻辑地划分网段;Netstat不能用用于诊断DNS故障,使监控TCP/IP网络的工具;网络的可用性是指用户可利用网络时间的占比;和打开的不一定是同一页面,要高一级;TCP使用的流量控制协议是可变大小的滑动窗口协议;Ping按照由近及远,首先执行的是127.0.0.1,其次本地,然后默认网关,最后是远程主机;TCP和UDP均提供了端口寻址;
-关于帧中继错误的是:帧中继比异步传输模式能提供更高的数据数率;三网:电信,广播,互联网;UDP协议上通常应用VolP;DHCP客户端可以从DHCP服务器获得DNS服务器地址和DHCP服务器的地址;DHCP用于自动分配IP地址;主机路由的子网掩码是255.255.255.255;DNS服务器中通过启用循环,添加每个Web服务器的主机记录操作可以确保域名解析并实现负载均衡;中国自主研发的3G通信标准是TD-SCDMA;层次化局域网模型中核心层将分组从一个区域高速转发到另一个区域;自适应路由依据网络信息经常更新路由;MIME协议扩展了电子邮件标准,使其能够支持多媒体特性;哈夫曼属于熵编码(无损);通常把web服务器置于DMZ区;冰河不是蠕虫病毒;BGP——属于外部网关协议;无效IP地址169.254.x.x(Windows);0.0.0.0(Linux);尽量让优先级较高目标达到最优;RSA——X.5-9数字证书;ECC——SM2数字证书;
-ARPrequest采用广播,response采用单播;VLANtag在数据链路层;
法律法规
软件著作权产生时期:自作品完成之日起;-智力成果能取得专利的是——用于控制测试过程的程序;GB国家标准,行业标准,地方标准DB,企业标准Q/;署名权、修改权和保护作品完整权的保护期不受限制;商标权可延长;有可能无限期拥有;合理使用指可以不经著作权人许可,不需支付报酬使用其作品;学术论文中不可引用未发表作品;提供复制品侵犯了著作权;开发类似软件侵犯了著作权;
-翻译权:一种自然语言文字转换成另一种自然语言文字;