[关闭]
@lovesosoi 2018-08-03T14:14:42.000000Z 字数 4584 阅读 691

8.4

Lovesosoi大讲堂

一、计算机网络知识
万维网:World Wide Web

  1. 万维网并不等同互联网,万维网只是互联网所能提供的服务其中之一,是靠着互联网运行的一项服务。
  2. 万维网联盟(英语:World Wide Web Consortium,简称W3C),又称W3C理事会。199410月在麻省理工学院(MIT)计算机科学实验室成立。万维网联盟的创建者是万维网的发明者蒂姆·伯纳斯-李。

Http协议

  1. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准
  2. HTTP是无连接,HTTP是媒体独立的,HTTP是无状态
  3. 消息结构
  4. 客户端请求消息:
  5. 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
  6. GET /hello.txt HTTP/1.1
  7. User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
  8. Host: www.example.com
  9. Accept-Language: en, mi
  10. 服务器相应消息:
  11. 状态行、消息报头、空行和响应正文。
  12. HTTP/1.1 200 OK
  13. Date: Mon, 27 Jul 2009 12:28:53 GMT
  14. Server: Apache
  15. Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
  16. ETag: "34aa387-d-1568eb00"
  17. Accept-Ranges: bytes
  18. Content-Length: 51
  19. Vary: Accept-Encoding
  20. Content-Type: text/plain
  21. 请求方法:
  22. HTTP1.0定义了三种请求方法: GET, POST HEAD方法。
  23. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE CONNECT 方法。
  24. 响应头的信息:
  25. http://www.runoob.com/http/http-header-fields.html
  26. 状态码:
  27. 200 - 请求成功
  28. 301 - 资源(网页等)被永久转移到其它URL
  29. 404 - 请求的资源(网页等)不存在
  30. 500 - 内部服务器错误

TCP/UDP

  1. TCP:
  2. TCP -- 传输控制协议,提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
  3. 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTPHTTPSFTP等传输文件的协议,POPSMTP等邮件传输的协议。
  4. UDP:
  5. UDP -- 用户数据报协议,是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。
  6. 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP
  7. QQ语音
  8. QQ视频
  9. TFTP

IP地址:

  1. 网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。

端口号:

  1. 注意,这个号码是用在TCPUDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。

http://www.mandroid.xin:80

子网掩码/地址分类(自己了解,如255.255.255.255,地址分类为abc 三类,自己了解)

网络层次

面试常见问题

TCP的三次握手与四次挥手(自己了解)
TCP与UDP有什么区别(上边有)
长链接与短链接

  1. HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
  2. 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
  3. Connection:keep-alive
  4. 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
  5. HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

http 与 https 的区别

  1. HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  2. HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
  3.  HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSLSecure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
  4. HTTPSHTTP的区别主要如下:
  5. 1https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  6. 2http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  7. 3httphttps使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
  8. 4http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

Get请求与post 请求的区别

  1. /test/demo_form.asp?name1=value1&name2=value2
  2. GET 请求可被缓存
  3. GET 请求保留在浏览器历史记录中
  4. GET 请求可被收藏为书签
  5. GET 请求不应在处理敏感数据时使用
  6. GET 请求有长度限制
  7. GET 请求只应当用于取回数据
  8. POST /test/demo_form.asp HTTP/1.1
  9. Host: w3schools.com
  10. name1=value1&name2=value2
  11. POST 请求不会被缓存
  12. POST 请求不会保留在浏览器历史记录中
  13. POST 不能被收藏为书签
  14. POST 请求对数据长度没有要求

二、常见算法

  1. 一个算法的好坏,不是看代码有几行,而是看效率有多高,衡量一个算法的优劣,主要通过时间复杂度和空间复杂度。这两个值来判断
  2. 时间复杂度是算法的所需要消耗的时间,时间越短,算法越好。可以对算法的代码进行估计,而得到算法的时间复杂度。
  3. 一般来说,算法代码简短精悍可以用来减少算法的时间复杂度!(但是不绝对)
  4. 空间复杂度指的是算法程序在执行时所需要的存储空间。空间复杂度可以分为以下两个方面!
  5. 1.程序的保存所需要的存储空间资源。即程序的大小;
  6. 2.程序在执行过程中所需要消耗的存储空间资源,如中间变量等;
  7. 一般来说,程序的大小越小,执行过程中消耗的资源越少,这个程序就越好!

平均情况,最好情况,最坏情况

计算机的常见算法:递推法,递归法,穷举法,贪心算法,分治法,动态规划法,迭代法,分支界限法,回溯法(自己了解)

https://www.cnblogs.com/MrTao/p/7199961.html

1.排序(快速排序,归并排序,冒泡排序,选择排序,希尔排序,堆排序)
2.查找(二分查找,线性查找,)

三、设计模式

创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式:适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式、代理模式
行为型模式:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式

学习内容:
算法:
冒泡排序

  1. void bubble_sort(int *a, int size)
  2. {
  3. int i, j, t;
  4. for(i = 1; i < size; ++i){
  5. for(j = 0; j < size -i; ++j){
  6. if(a[j] > a[j+1]){
  7. t = a[j];
  8. a[j] = a[j+1];
  9. a[j+1] = t;
  10. }
  11. } // end for j
  12. }// end for i
  13. }

时间复杂度分析。其外层循环执行 N - 1次。内层循环最多的时候执行N次,最少的时候执行1次,平均执行 (N+1)/2次。

所以循环体内的比较交换约执行 (N - 1)(N + 1) / 2 = (N^2 - 1)/2(其中N^2是仿照Latex中的记法,表示N的平方)。按照计算复杂度的原则,去掉常数,去掉最高项系数,其复杂度为O(N^2)。
https://blog.csdn.net/bitboss/article/details/51559034

冒泡的优化1

  1. void BubbleSort2(int arr[],int len)
  2. {
  3. int i = 0;
  4. int j = 0;
  5. for(i = 0; i < len - 1; i++)
  6. {
  7. int flag = 1;//假定每次进入都是有序的 flag为1;
  8. for(j = 0; j < len - i - 1; j++)
  9. {
  10. int tmp = 0;
  11. if(arr[j] > arr[j+1])
  12. {
  13. tmp = arr[j];
  14. arr[j] = arr[j+1];
  15. arr[j+1] = tmp;
  16. flag = 0;//如果发生交换,则flag 置为0;
  17. }
  18. }
  19. if(flag == 1)//如果这趟走完,没有发生交换,则原数组有序;
  20. break;
  21. }
  22. }//加入标志位优化

冒泡排序优化2

  1. void BubbleSort3(int arr[],int len)
  2. {
  3. int i = 0;
  4. int j = 0;
  5. int k = len - 1;//控制内部比较循环
  6. int n = 0;
  7. for(i = 0; i < len -1 ; i++)
  8. {
  9. int flag = 1;
  10. n = 0;
  11. //假定每次进入都是有序的 flag为1;
  12. for(j = 0; j < k; j++)
  13. {
  14. int tmp = 0;
  15. if(arr[j] > arr[j+1])
  16. {
  17. tmp = arr[j];
  18. arr[j] = arr[j+1];
  19. arr[j+1] = tmp;
  20. flag = 0;//如果发生交换,则flag 置为0;
  21. n = j;//保存最后一次交换的下标;
  22. }
  23. }
  24. if(flag == 1)//如果这趟走完,没有发生交换,则原数组有序;
  25. break;
  26. k = n;//最后一次交换的位置给k,减少比较的次数;
  27. }
  28. }//最终优化

设计模式
单例模式

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注