飞道的博客

C/C++基础知识点(四)

219人阅读  评论(0)

37.静态变量什么时候初始化

静态变量存储在虚拟地址空间的数据段和bss段,C语言中其在代码执行之前初始化,属于编译期初始化。而C++中由于引入对象,对象生成必须调用构造函数,因此C++规定全局或局部静态对象当且仅当对象首次用到时进行构造。

38.HTTP和HTTPS的区别

HTTP协议和HTTPS协议的区别如下:

  • HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据经过TLS加密后,HTTPS具有更高的安全性
  • HTTPS在TCP三次握手阶段之后,还需要进行SSL的handshake,协商加密使用的对称加密密钥
  • HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书
  • HTTP协议的端口是80,HTTPS的协议端口是443

39.HTTPS的优缺点

优点:

  • 传输数据过程中使用秘钥进行加密,所以安全性更高
  • 可交易认证用户和服务器,确保数据发送到正确的用户和服务器

缺点:

  • 握手阶段延时较高,由于在进行会话之前还需要进行SSL握手,因此HTTPS协议握手阶段延时增加
  • 部署成本高,一方面HTTPS协议需要使用证书来验证自身的安全性,所以需要购买CA证书,另一方面由于采用HTTPS协议需要进行加解密的计算,占用CPU资源较多,需要的服务器配置或数目高。

40.IP地址和MAC地址的作用

MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。
IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

41.GET和POST的区别

对于GET方式的请求,浏览器会把http header和data一并发出去,服务器响应200(返回数据)
对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

主要区别如下:

  • get参数通过url传递,post放到request body中
  • get请求在url中传递的参数是有长度限制的,post没有
  • get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息
  • get请求只能进行url编码,而post支持多种编码方式
  • get请求参数会被完整保留在浏览历史记录,post中的参数不会被保留
  • get和post本质上就是tcp连接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
  • get产生一个tcp数据包,post产生两个数据包。

42.C++11中的auto不能用于什么情况

auto使用限制:

  • 不能用于函数参数
  • 不能用于非静态成员变量,可以用于静态常量成员变量,如 static const auto a = 0;
  • 无法定义数组,如:auto a[10] = {0};
  • 无法推导出模板参数, 如:Bar<int> bar; Bar<auto> b = bar;

auto仅能用于推到static const的整型或者枚举成员,因为其他静态类型在C++标准中无法就地初始化,虽然C++11中可以接收非静态成员变量的就地初始化,但不支持auto类型非静态成员变量的初始化。


转载:https://blog.csdn.net/luoyayun361/article/details/105052748
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场