复习总结(9)数据库原理(1)

范式:

第一范式:属性不可再分

第二范式:所有非关键字段都完全依赖于任意一组候选关键字。
可以理解为:单关键字的表都符合。多关键字表其中部分关键字跟其它属性没有依赖关系。
例如:
(学号,课程名称) → (姓名,年龄,成绩,学分)是违反第二范式,因为
(课程名称) → (学分)
(学号) → (姓名,年龄)
*例子来自百度百科
所以不满足第二范式

第三范式:满足第二范式的情况下,不存在传递的函数依赖
假如
关键字段 → 非关键字段x → 非关键字段y
则违反第三范式。

 

 

SQL语句:

常用SQL关键字:
SELECT 选择
SELECT DISTINCT选择并返回不重复的值
WHERE 限定选择条件,如值大小
AND OR 在WHERE语句中连接条件
ORDER BY 对语句进行排序
INSERT INTO 表名称 VALUES (值1, 值2,….) 对表插入值
JOIN 合并表(还有left join、right join等也需要了解)
GROUP BY分组(常用于聚合函数)
LIMIT 限制

还有其它常用语句,需要了解。

事务:

数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

数据库的ACID特征:

  • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行
  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束
  • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行
  • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中

 

数据库引擎:

  • ISAM:执行读取操作的速度很快,而且不占用大量的内存和存储资源。不支持事务处理,也不能够容错
  • MYISAM:MYISAM是MYSQL的ISAM扩展格式和缺省的数据库引擎。强调了快速读取操作。

  • HEAP:允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。
  • INNODB和BERKLEYDB:比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了对事务处理外来键的支持

更详细可以参考:http://www.cnblogs.com/0201zcr/p/5296843.html

复习总结(8)计算机网络(2)运输层

3.1:概述和运输层服务

 

为不同主机的应用进程之间提供了逻辑通信(logic communication)功能
将发送自应用进程的报文转换成运输层分组,术语为报文段(segment
有两种协议,TCPUDP

 

运输层和网络层的关系:运输层为不同主机的进程提供逻辑通信,而网络层提供了主机之间的逻辑通信。

 

多路复用(multiplexing)与多路分解(demultiplexing

将运输层报文段总的数据交付到正确的套接字的工作称为多路分解(demultiplexing)。

从源主机的不同套接字中收集数据块并为每个数据块封装上首部信息从而生成报文段并传递到网络层称为多路复用

多路复用的要求:

套接字有唯一标识符

每个报文段有特殊字段来指示该报文段说要交付的套接字

特殊字段是源端口号字段(source port number field)和目的端口字段(destination port number field

范围是0~65535

0·1023范围的称为周知端口号(well-known port number),保留给HTTPFTP等应用层协议的

 

无连接传输:UDP

有很多应用更适合用UDP:

应用层能更好地控制要发送的数据和发送时间

无需连接建立

无连接状态

分组首部开销小

UDP校验和

对报文段中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷

得到的结果放在UDP报文中的检验和字段

接收方将所有的相加(包括检验和),如果结果是1111111111111111,则无差错

提供差错检测但是不能进行差错恢复。

 

可靠数据传输的原理

实现这种服务抽象是可靠数据传输协议(reliable data transfer protocol)的责任

TCP是在不可靠的端到端网络层协议(IP)上实现的。

 

3.4.3回退N步(重点!!!TCP的滑动窗口)

回退N步协议(Go-Back-N,GBN)允许发送发发送多个分组而不需要等待确认,但是也受限于在流水线中未确认的分组数不能超过某个最大允许数N

GBN协议常被称为滑动窗口协议(sliding-window protocol

GBN发送方必须响应以下三种类型的事件:

上层的调用:rdt_send()

收到ACK:对序号为n的分组的确认采取累积确认的方式

超时事件

接收方如果序号为n的正确接收,则发送ACK,其它所有情况都丢弃该分组

这种方式称为基于事件的编程(event-based programming

 

TCP报文段结构
包括源端口号和目的端口号,校验和字段(checksum field

 

TCP拥塞控制

1加性增,乘性减

2慢启动:一开始很慢的速率发送但是以指数速度增加发送速率

3对超时事件作出反应

 

TCP的三次握手四次分手(超级重点)

 

(图来自互联网,原出处不详)

 

复习总结(7)Java那些近义词们

int 和Ingeter

int是Java的基本数据类型。Java是面向对象的,这就带来了一些不便,所以需要包装类,把基本类型装箱称为对象。所以Ingeter是包装类,把基本类型包装为一个对象。相似的还有float和Float,double和Double等。

详细参考包装类基本知识。

相关问题:
包装类和基本数据类型的==结果
包装类之间的==结果

 

String、StringBuffer和StringBuilder

String是不可变对象,StringBuffer和StringBuilder是可变对象。
StringBuffer线程安全,StringBuilder线程不安全。

通常情况下,优先使用StringBuilder,因为没有线程同步,使得效率更高。
通常不使用String,因为不可变对象在每次修改的时候都会创建新对象,过多旧对象回收会影响效率。

Hashtable和Hashmap

Hashtable线程安全,Hashmap需要手动同步。
Hashtable不允许null,Hashmap允许null(两者都包括key和value)
Hashmap是新框架用来代替Hashtable的类,建议使用Hashmap

 

Arraylist和Vector

Vector有线程同步,线程安全,同时也导致访问相对较慢。
都是使用数组进行存储,但是每次扩充的大小不一样。

 

多线程的run和start

只调用run,实际上只是单纯的调用,没有多线程运行,后续语句会等待调用执行完再继续进行。
调用start后,启动了一个新进程并使进程进入就绪态,但是并没有立即启动。当得到时间片后,就会调用run方法。

 

sleep和wait

sleep在睡眠时,仍然持有锁。
wait在睡眠时释放锁。

实际上线程的状态也不一样。

图来自https://my.oschina.net/mingdongcheng/blog/139263

collection 和 collections

java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
(原出处不详)

复习总结(6)软件测试software Testing(1)

文章内含图片均来自互联网且原作者不详

TDD: Test-Driven Development测试驱动开发

 

V模型,W模型,H模型

 

公理

Axiom 1 :It is impossible to test a program completely
Axiom 2: Software testing is a risk-based exercise
Axiom 3: Testing cannot show the absence of bugs
Axiom 4:The more bugs you find, the more bugs there are

Axiom 5: Not all bugs found will be fixed
Axiom 6: It is difficult to say when a bug is indeed a bug
Axiom 7: Specifications are never final
Axiom 8: Software testers are not the most popular members of a project
Axiom 9:Software testing is a disciplined and technical profession

 

软件测试方法分类

 

测试策略的概念

测试用例

  • 满足特定目的的测试数据、测试代码、测试规程的
    集合
  • 是发现软件缺陷的最小测试执行单元
  • 有特殊的书写标准和基本原则

测试用例设计生成的基本准则:
测试用例的代表性:能够代表并覆盖各种合理的
和不合理、合法的和非法的、边界的和越界的、
以及极限的输入数据、操作和环境设置等;
测试结果的可判定性:即测试执行结果的正确性
是可判定的,每一个测试用例都应有相应的期望
结果;
测试结果的可再现性:即对同样的测试用例,系
统的执行结果应当是相同的。

 

黑盒测试Black-Box-testing

测试用例设计技术
  • 等价类划分方法
  • 边界值分析方法
  • 错误推测方法
  • 判定表驱动分析方法
  • 因果图方法
  • 场景法

场景法步骤总结:
1、设计场景:通过用例的主事件流和备选事
件流的组合给出不同的场景
2、设计测试用例标准覆盖场景
3、根据测试用例标准给出具体的测试数据

 

白盒测试

逻辑分支覆盖法:

语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
条件组合覆盖

路径法:
路径覆盖
基本(独立)路径覆盖

 

复习总结(5)计算机网络(1)应用层

2.1应用层协议原理

应用程序体系结构:两种主流结构:
客户机/服务器体系结构(client-server architecture)
P2P体系结构(P2P architecture)

进程通讯:
进程与计算机网络之间的接口:套接字(socket)

四个方面对应用程序服务要求进程分类:
可靠数据传输(reliable data transfer)
吞吐量。
定时
安全性

因特网提供的运输服务:
TCP服务:面向连接服务、可靠数据传输服务
UDP服务:轻量级传输层协议。无连接,不能保证被接收到,可以乱序到达,没有拥塞控制机制
不提供的服务:不能提供任何有关定时或带宽的保证
进程寻址:用IP地址标识主机,端口号用于标识进程

应用层协议(application-layer Protocol)定义了:
交换的报文类型,如请求报文和响应报文
报文类型的语法
字段的语义
进程何时发送报文以及响应的规则

Web应用和HTTP协议(HyperText Transfer Protocol)

2.2.2:非持久连接(non-persistent connection)和持久连接(persistent connection)

HTTP报文格式:

http请求报文

 

http响应报文

 

用户与服务器的交互:cookie

 

FTP(File Transfer Protocol):

 

因特网的目录服务

主机的识别方法是它的主机名hostname、IP地址

DNS提供的服务
需要一种能进行主机名到IP地址转换的目录服务,就是域名系统(Domain Name System)
DNS是:
(1)一个由分布的DNS服务器实现的分布式数据库
(2)一个允许主机查询分布式数据库的应用层协议
DNS运行在UDP上,使用53端口

提供一些重要的服务:
主机别名(host aliasing)
邮件服务器别名(mail server aliasing)
负载分配(load distribution)

 

DNS查询

利用了递归查询(recursive)和迭代查询(iterative query)

Type = A时,Value是主机名的IP地址
Type=NS时,Name是域,Value是知道如何获得该域中的IP地址的权威DNS服务器的主机名
Type = CNAME,Value是主机对应的规范主机名
Type = MX,Value是邮件服务器的规范主机名