一。计算机三大原则
- 硬件:输入,运算,输出
- 软件(程序);数据+指令
- 计算机有自己的处理方式;对计算机来说,所有东西都是数字
- 所以规范都是适合计算机处理方式而产生制定的;如soap规范,就是定义了指令和数据的规范。
- 为了更贴近人类,编程方法也在进化,分为面向组件编程和面向对象编程。
二。程序的流程
- 程序的三种编程方式类似河流的运动方式:顺序,循环,条件
- 流程图:
- 高级语言可以不写跳转指令,但是实际上到本地代码,还是会转换为跳转指令。
- 算法,就是解决既定问题的步骤。
- 中断机制,事件驱动机制(调用Windows)
- 状态图,通过状态图可以理清思路
三。算法
- 算法中解决问题的步骤必须明确且有限
- 计算机不靠直觉,而是机械的解决问题
- 典型算法,可以参考的书目包括:算法技术手册,算法精解;主要典型算法:辗转相除法,埃拉托斯特尼筛法(判定素数),顺序查找,二分查找,哈希查找,冒泡排序,快速排序。
- 无论多么冗长繁琐的步骤,只要明确并且机械就能构成优秀算法。
- 使用哨兵策略
- 发现数字之间的规律
- 先在纸上写算法,包括步骤,画流程图等===》这步刚开始我是这么做的,后面不知道为什么就怠惰了;algorithm+data structures=programs
四。数据结构
- 变量的实质是按照变量存储数据的大小被分配到的一块内存空间。数组的实质是连续分配的一块特定大小的内存空间,数组是数据结构的基础,因为数组反映了内存的物理结构。
- 典型数据结构:栈,队列,二叉树,链表;都是基于数组衍生的数据结构
- 实现栈,需要先定义一个数组和一个变量,数组用来表示元素个数,变量中存储的索引指向最顶端数据,称为栈顶指针。
- 实现队列,需要一个任意大小的数组,两个变量(分别指向队首和队尾),两个函数(插入数据,读取数据);所以队列表面看是直线,实际上是圆环形
- 二叉树和链表都是基于数组的自我引用结构体
五。面向对象编程
- 继承inheritance,
- 封装encapsulation,在类所拥有的成员中,隐藏没有必要展现给该类调用者的成员。
- 多态polymorphism,针对同一种消息,不同的对象可以进行不同的操作。
- 面向对象编程就是在为现实世界建模
- UML(unified modeling laguage)
- 消息传递:调用其他对象的函数
- 面向对象:类是对象的定义,对象是类的实例。
- 有的人负责创建类,有的人负责使用类。调用类有三种方法:调用类的个别成员,如函数,变量;继承类的基础上定义新类;在类的定义中包含其他的类(也称为组合)
- java其实是位于操作系统之上,旨在通过隐藏操作系统的复杂性从而提升开发效率的程序集,也称为“框架framework”。框架由两部分构成,一部分是负责安全执行程序的执行引擎,另一部分是类库。java框架之上用的是java语言。
综上,面向对象编程就是通过把组件拼装到一起进行编程的方法。
六。数据库
- 每个值都唯一标识一条记录的字段为主键;与其他表建立关系而在表中添加的,其他表主键的字段为外键。
- 数据库系统=数据文件+DBMS+应用程序
- 索引是提升数据检索和排序速度的内部机制。一旦在字段上设置了索引,DBMS就会自动为这个字段创建索引表。代价是插入或更新数据的速度降低。
- 一般的开发工具都包含了数据对象组件,ADO(activex data object),包括用于建立和dbms链接的connection类,向dbms发送sql语句的command类以及存储返回结果的recordset类等。
- 事务控制:事务由若干条sql语句构成。为了防止数据不一致,sql语言设计了三条语句:begin transcation,commit,roll back
七。网络
- 集线器hub,负责把各个计算机的网线连接起来。路由器router负责把公司内网络和互联网连接起来。
- CSMA/CD:career sense multiple access with collision detection带冲突检测的载波监听多路访问,适用于LAN
- MAC:media access control;在每一块网卡所带的rom中,都预先烧录了一个mac地址。使用ipconfig /all可以查看mac地址,前三位代表制造商,后三位代表产品编号。
- ip地址中表示分组的部分称为网络地址,表示计算机部分的称为主机地址。子网掩码的作用是标识出网络地址和主机地址的区间,将子网掩码用二进制表示,值为1的对应ip地址中的网络地址,值为0的地址对应主机地址。
- DHCP:dynamic host configuration protocol动态主机配置协议,DHCP服务器上记录着可以被分配到LAN内计算机的ip地址范围和子网掩码的值。路由器和dns服务器的ip地址也可以通过dhcp获得。
- 路由器的工作原理:查看附加到数据的ip地址中的网络地址部分,只要不是发给lan内的数据,就把它发送给LAN外,也就是WAN。路由表中,只会记录相邻路由器的路径。route print命令可以查看路由表信息
- tracert 目标路径,查看路由器的路由过程;如tracert www.baidu.com
- DNS服务器,部署在各个LAN中,记录着主机名和ip地址的对应关系表。hostname命令可以列出主机名主机名+dns后缀就是FQDN(fully qualified domain name完整限定域名 )
- ARP(address resolution protocol地址解析协议),实现由ip地址到mac地址的转换。向所有lan内的计算机发送数据的过程称为广播;提供了缓存功能,将得到的mac地址和ip地址的关系缓存到内存中,这些缓存关系称为arp缓存表。用arp -a命令可以查看arp缓存表内容。
- tcp协议使用被称作tcp端口号的数字识别上层的应用程序,有一些是预先定义的。如web 80,smtp 25发送,110接收
八。加密解密
- 密钥每增长一倍,花费时间就会翻10倍。
- 对称密钥加密技术:加密解密所用密钥相同
- 非对称加密技术,也称为公开密钥加密技术,公钥公开,私钥属个人所有
- MD5:message digest5,使用的是发送者的密钥对儿,用发送者的私钥加密,接受者用发送者的公钥解密;如果计算出的信息摘要和发送的匹配,则证明文件在传输过程没有被篡改。
九。xml
- xml:extensible markup language,可扩展标记语言
- 通过添加标签为数据赋予意义的行为称为“标记”,为这种行为定义规则的语言就是“标记语言”。
- xml仅仅限定了进行标记时标签的书写格式,并没有限定标签的使用方式,通常把这种用于创造语言的语言称作“元语言”。
- xml的主要约束:
- xmlns:xml nameSpace
- DTD:document type definition,定义xml实例的结构。
- SOAP:simple object access protocol,部署分布式服务