专业课学习记录1(2019)

软件工程
1.举例说明软件生命周期模型描述的是什么?
同任何事物一样,一个软件产品或软件系统也要经历孕育,诞生,成长,成熟,衰亡等阶段,一般称为软件生命周期,软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。生命周期模型简介地描述软件过程,规定把生命周期划分成哪些阶段及各个阶段的执行顺序。
包含了软件从生产到报废的六个阶段 1.软件需求工程 2.软件设计(1.软件体系结构设计,2.软件详细设计 3.人机交互设计) 3.软件实现/构造 4.软件测试 5.软件交互 6.软件维护。

2.解释软件的功能性需求和非功能性需求
软件的功能性需求是描述一个系统的行为,与系统的功能性相关。功能需求是指提供了什么服务,实现了什么功能。软件非功能性需求是详细描述了一个系统的性能特点,系统应该做成什么样与系统架构相关,非功能性需求是指效果怎么样,性质怎么样,

3.写出5个软件质量保证方法
评审 度量 测试 重构 过程管理

4.白盒测试和黑盒测试的区别
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
黑盒测试:是通过使用整个软件或某种软件功能来严格测试,在测试时,把程序看着一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接受和正确的输出。
二者最大的区别就是测试对象不一样,白盒测试主要针对的是程序代码逻辑,黑盒测试主要针对的是程序所展现给用户的功能,简单的说就是前者测试后台测序后者测试前台展示功能。

5.软件体系结构的设计视角
逻辑视图 :设计的对象模型(使用面向对象的设计方法时)
过程视图 :捕捉设计的并发和同步特征
物理视图 :描述了软件到硬件的映射,反应了分布式特性
开发视图 :描述了在开发环境中软件的静态组织结构

6.策略模式

context:使用策略的环境对象
Strategy:策略的抽象接口
StrategyA:一个具体的策略,其实现了策略抽象接口。
StrategyB:一个具体的策略,其实现了策略抽象接口。
在这里插入图片描述
7.策略模式的优缺点:
策略模式提供了管理相关的算法族的方法。策略类的等级结构定义了一个算发或行为族,恰当使用继承可以把公共的代码移到父类里面,从而避免了代码重复。使用策略模式可以避免使用多重条件if else 语句。多重条件语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重条件语句中,比使用继承的方法还要原始和落后。

缺点:客户端必须知道所以的策略类,并自行决定使用哪一个策略类。这就意味者客户端必须理解这些算法的区别,以便适时选择适当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
由于策略模式把每个具体的策略实现都单独封装为类,如果备选的策略很多的话,那么对象的数目就会很可观。

8.迪米特法则(Demeter Law):
⼀个软件实体应当尽可能少地与其他实体发⽣相互作⽤。

数据结构:
1.循环队列
在这里插入图片描述
b状态增加一个元素。(rear+1)%maxsize=='front (满)
c状态是删除一个元素 (front+1)%maxsize==rear (空)
如何区分该循环队列是空还是满
方法是牺牲一个数组元素的空间,即若数组大小是max,则最多允许存储max-1个元素。循环队列满的条件是:
(rear+1)%maxsize == 'front
循环队列空的条件是rear=front

平方和公式 n*(n+1)*(2n+1)/6

简单图:1.不存在顶点到自身的边
2.同一条边不重复出现

连通图:任意两个不同的顶点vi和vj都连通,即有路径

强连通图:任意两个不同的顶点Vi和vj都存在从vi到vj以及从vj到vi的路径,则称G为强连通图。

线索二叉树:
引入线索二叉树的目的是:加快查找节点前驱节点和后继节点的速度;
https://blog.csdn.net/u014492609/article/details/40477795

AVL树:平衡二叉排序树
是颗空树,或者它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1.
平衡度:左子树高度-右子树高度
只能是-1 0 1,否则要调整该树
掌握调整AVL树方法
LL :左子树高了就右旋
RR:右子树高了就左旋
LR:将新增不满足平衡数都节点的父亲变为根节点
RL:同LR

在这里插入图片描述

优先队列和一般队列的区别?优先队列的机内实现有哪几种?
队列的特点是先进先出。通常都把队列比喻成排队买东西,大家都很守秩序,先排队的人就先买东西。但是优先队列有所不同,它不遵循先进先出的规则,而是根据队列元素的优先权,优先权大的先被取出。可以通过数组,链表或者栈来实现。

其余知识点:散列表,队列:先进先出
栈:先进后出

尚未掌握:
B树:
https://blog.csdn.net/z_ryan/article/details/79685072

计算机网络
CSMA/CA:带有冲突避免的载波监听多路访问,发送包的同时不断检测到信道上有无冲突,只能尽量“避免”。这个协议解决了在Ethernet上的各个工作站如何在线缆上进行传输的问题,利用它检测和避免当两个或两个以上的网络设备需要进行数据传输时网络上的冲突。

LLC:逻辑电路控制子层。LLC负责识别网络层协议,然后对他们进行封装。LLC报头告诉数据链路层一旦帧被接受到时,应当对数据包做何处理。

HTTP:超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求后,服务段开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端

OSPF:OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。

ASDL:非对称数字环路,业务是宽带接入技术鸿的一种,它利用现有的电话用户线,通过采用先进的复用技术和调制技术,使得高速的数字信息和电话语音信息在一对电话线的不同频段上同时传输,为用户接入宽带的同时,维护用户原有的电话业务和质量不变。

端口有多少字节,端口的作用.
端口号为16位,IP地址与网络服务的关系是一对多的关系,实际上是通过IP地址+端口号来区别不同的服务,端口号可以认为是设备和外界通讯交流的出口。

ABC三类IP地址的区别
主要是地址范围的不同。
A类 1.0.0.1——126.255.255.254
B 128.1.0.1——191.255.255.254
C 192.0.1.1——223.255.255.254

https://blog.csdn.net/kzadmxz/article/details/73658168

操作系统:
1.系统调用:
由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口,是应用程序同系统之间的接口。

2.进程映像
进程映像也称进程图像,是进程执行的上下文环境,包括处理器中各通用寄存器的值,进程的内存映像,打开文件的状态和进程占用资源的信息。包括进程控制块(PCB),程序以及数据集合。

3.原语
原语是操作系统或计算机网络用语的范畴。是由若干条指令组成的,用于完成一定功能的一个过程。原语是由若干个机器指令组成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行的过程中不允许被中断。

4.Spooling:
在这里插入图片描述

组成
1.输入井和输出井:输入井和输出井的存储区域是在磁盘上开辟出来的。输入输出井中的数据一般以文件的形式组织管理,这些文件称之为井文件。一个文件仅存放某一个进程的输入或输出数据,所有进程的数据输入或输出文件链接成为一个输入输出队列。
2.输入缓冲区和输出缓冲区:输入缓冲区和输出缓冲区的存储区域是在内存中开辟出来的。主要用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存有输入设备传送的数据,之后再传送到输入井;输出缓冲区 同理。
3.输入进程和输出进程:输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。当CPU需要的时候,直接从输入井将数据读入内存。反之,输出的同理。
4.井管理程序:用于控制作业与磁盘井之间信息的交换。

特点
1.提高了I/O的速度:,对数据执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU和低速的I/Os设备之间速度的不匹配的矛盾。
将独占设备改造成了共享设备:因为在假脱机打印机系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配了一个空闲盘块和建立了一张I/O请求表。
实现了虚拟设备功能:宏观上,对于每一个进程而言,它们认为是自己独占了一个设备,其实实际上是多个进程在同时使用一台独占设备。也可以说,假脱机系统,实现了将独占设备变换为若干台对应的逻辑设备的功能。

Spooling技术是在通道技术和多道程序设计上产生的,它由主机和相应的通道共同承担作业的 输入输出工作,利用磁盘作为外援存储器。实现外围设备同时联机操作。SPooling系统由专门负责I/O的常驻内存的进程以及输入井,输出井组成。它将独占设备改造为共享设备。

5.时间片调度算法
响应比最高优先算法(HRRF)
响应比:作业周转时间/作业处理时间=(作业等待时间+作业处理时间)/作业处理时间=1+作业等待时间/作业处理时间

6.分页算法:
最近最少使用替换算法
时钟置换算法:
一个页面首次装入内存时,其“引用位”置1
内存中任何一个页面被访问了就置1
淘汰页面时,把所遇到的1清0,并跳过去,把第一个遇到的0淘汰
如果首次循环发现没有0,再循环一次。

7.PV操作:重难点,还未掌握。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值