计算机基础

446 阅读6分钟

1.1 走进 0 与 1

  • 8位电路,最左侧的一条表示正负,0表示正数,1表示负数,最大 0111 1111,即127;则可以表示-128 ~ 127 的范围的数
  • 正数的原码、反码、补码一致;
  • 负数 原码:符号位为1,数值位同对应的正数的数位;反码: 除符号位对应原码取反;补码: 反码 +1
  • 二进制整数最终以补码出现。
  • 需要注意的是 -128的补码规定为 1000 0000,没有反码,原码; 这里面个人觉得需要体会的是 “满” “溢”的思想,这里有一篇讲 -128 补码的问题;可以参下www.cnblogs.com/flowerslip/…
如:     (35)+(-35)
=  0010 0011 + 1101 11101 
= 10000 0000 
=  0000 0000
=          0
  • 1位,即1个bit,简写b; 8个bit组成一个字节,即1个Byte,简写B
  • 位移运算,在左移<<与右移>>两种运算(带符号位位移运算),符号位参与移动,除负数往右移动,高位补1之外,其余高位补0,在实际操作中 << 1 相当于 *2,而 >> 1,类似除2(低位舍去)
  • >>> 无符号位右移(注意不存在 <<< 左移的情况),当向右移动时,正负高位补0,正数不断向右移动的最小值是 0;负数不断向右移动最小值是1;
  • 实际编程中,位移运算仅作用于整型(32位)和长整型(64位)数上;整型移动的位数是一个mod 32的结果,即 35 >> 1 与 35 >> 33 是一样的结果
  • 按位或``(|),都为0,则为0; 按位与(&),都为1则为1;按位异或(^),相同为0,不同为1;按位取反(~),取反,
true ^ true = false

*逻辑与(&&)、逻辑或(||)都有短路功能

1.2 浮点数

计算机定义了两种小数,定点数 浮点数

1.2.1 科学计数法

  • 如 a * 10 ^ n,也可以表示成aen, 1 <= |a| < 10

1.2.2 浮点数表示

  • 符号位
  • 阶码位
  • 尾数位

1.2.3 加减运算

  • 零值检测
  • 对阶操作
  • 尾数求和
  • 结果规划化

1.2.4 浮点使用

在使用浮点数时推荐使用双精度;要求绝对精确的业务下,推进使用整型存储,如人民币用分,在数据库中保存小数时,推荐使用decimal类型,禁止使用float和double 类型

1.3 字符集与乱码

  • ASCII: 26个英文大小写字母,10个数字,以及特殊字符,超过64(2^6)个,需要7组连续的信号标识,校验奇偶校验用一位(1bit),故8位基本满足英文字符的输入,即ASCII;
  • GB2312: 一个字节(8bit,1bit做了使用)能标识128个字符。汉字个数较多,为兼容ascii,使用2字节,收录6763个常用汉字;
  • GBK: 支持繁体,兼容gbk2312。
  • Unicode: 为每种语言中的字符都设定了唯一编码,以满足跨语言交流的需要,分为编码方式和实现方式,其实现有三种: utf-8、utf-16、utf-32
  • utf-8: 以字节为单位,针对Unicode的可变长度字符编码,用1~6个字节对unicode字符进行编码压缩,能用较少的字节表示最常用的字符
  • GBK编码,一个汉字占两个字节,一个英文字符占一个字节
  • UTF-8编码是变长编码,通常汉字占三个字节,扩展B区以后的汉字占四个字节,一个英文字符占一个字节

1.5 TCP/IP

1.5.1 网络协议

TCP/IP 中文译为传输控制协议/英特网互联协议,这个大家族的还有HTTP、HTTPS、FTP、SMTP、UDP、ARP、PPP、IEEE802.x等

  • TCP 分层框架
  • 链路层: 以字节为单位,定义数据帧,写入源和目标机器的物理地址、数据、校验位。

MAC 地址长6个字符工48位,使用ifconfig-a 可查看MAC地址,如:f4:5c:89:ae:bd:23,f4:5c:89 即前24位管理机构统一分配,后24位由厂家自己分配,确保网卡全球唯一

  • 网络层: 根据IP定义网络地址,区分网段,子网内根据地址解析协议(ARP)进行MAC寻址,子网外进行路由转发数据包,这个数据包即IP数据包
  • 传输层:数据包通过网络层发送到目标计算机后,确认身份,数据给应用程序,实现端口到端口通信。协议UDP TCP。

UDP 只是在IP数据包上加了端口等部分信息,面向无连接,不可靠,用于视屏通信、电话会议(少一帧无妨);
TCP 面向连接,是一种端到端通过失败重传机制建立的可靠数据传输方式

  • 应用层:传输层的叔叔到达应用程序时,以某种统一规定的协议格式解读数据;SMTP 协议

总结 数据发送过程:既定协议打包(应用层)-> 加上双方的端口(传输层)-> 加上双方IP地址(网络层)-> (链路层)加上双方MAC地址,并将数据查分成数据帧,经过多个路由器和网关后,到达目标机器。 "端口 —— IP地址 —— MAC地址" 进行数据的封装和返送,解包反之

1.5.2 IP协议

IP 面向无连接、无状态的,没有额外的机制保证发送的包是否有序到达。

  • 协议结构比较简单,重点说 下数据包的生存时间,即 TTL ,它是数据包可经过的最多路由器总数。 TTL 初始值由源主机设置后,数据包在传输过程中每经过一个路由器 TTL 值则减 ,当该字段为 时,数据包被丢弃,并发送 ICMP 报文通知 源主机,以防止源主机无休止地发送报文

1.5.3 TCP建立连接

TCP:传输控制协议,是一种面向连接、确保数据在端到端间可靠传输的协议。 确保可靠传输

对每一字节进行编号确认,校验每一数据包的有效性,超时重传,滑动窗口和拥塞控制等机制处理网络问题 TCP: FLAG位,置为1表示有效

  • SYN: 用作建立连接时的同步信号
  • ACK: 用于对收到的数据进行确认,确认的数据由确认序列号表示
  • FIN: 表示后面没有数据需要发送,意味着所建立的连接需要关闭

三次握手

  • A 发出一个数据包并将SYN置为1。数据包的序列号为X
  • B收到A的数据包后,通过SYN得知建立请求,相应发送一个数据包并将SYN和ACK置为1。包中序列号是Y,收到的包确认序列号必须是 x+1,表示收到A的SYN
  • A 收到B的相应包后,需要发送确认包中ACK置1,并将确认序列号为y+1

三次握手的主要目的: 消息对等 和 防止超时脏连接(没有第三次握手,服务端只有等待)

1.5.4 TCP断开连接

TCP 是全双工通信,双方都能作为数据的发送方和接收方

四次挥手

  • A 想要关闭连接,传递FIN信号给B
  • B 应答ACK,告诉A可以断开,但需要等B处理完数据,在主动给A发送FIN信号。这时A处于半关闭状态(FIN_WAIT_2),无法在发送新的数据
  • B 做好连接关闭前的准备工作后,发送FIN给A,此时B也进入半关闭状态。
  • A 发送对B 的FIN的ACK后,进入TIME-WAIT状态,经过2MSL(Maximum Segment Lifetime)后,没有收到B传来的报文,则确定B已经A最后发送的ACK,此时TCP连接正式释放

1.5.5 连接池

我们使用连接来进行系统间交互;连接数的创建是受到服务器操作系统的fd(文件描述符)数量限制的。创建更多活跃的连接,需要消耗更多的fd,系统默认单个进程可同时拥有1024个fd,该值可以适当调整。

1.6 信息安全

1.6.1 黑客与安全

互联网企业信息安全体系,遵守CIA原则,即保密性(Confidentiality)、完整性(Intergrity)、可用性(Availability)

1.6.2 SQL 注入

预防

(1) 过滤特殊字符 (2) 禁止通过字符串拼接,严格使用参数绑定传入SQL参数 (3) 合理使用数据库访问框架,防止注入机制

1.6.3 XSS 与 CSRF

XSS 跨站脚本攻击 防范:对用户输入数据做过滤或者转义 CSRF 跨站请求伪造 防范:(1)CSRF Token验证,利用浏览器同源限制 (2)人机交互,校验短信等

1.6.5 HTTPS

  • DES 是对称加密算法

  • SSL 安全套接字协议,作用于传输层于应用层之间

  • HTTPS 全称HTTP over SSL,HTTP传输上增加SSL协议的加密能力

  • RSA 将密码分成公钥和私钥,由于两个秘钥并不相同,所以称为非对称加密