进程与线程的区别
进程是系统的资源分配和调度的最小单位
线程是系统运算调度的最小单位
线程是进程的子任务
一个进程至少有一个线程,一个进程可以有多个线程
从资源消耗看
进程的创建和销毁消耗的资源比较大,因为每一个进程都有自己独立的内存空间,就算fork一个子进程,在写时复制的机制下,还是会提前复制一些内核区的信息
而线程由于共享同一块内存,创建和删除只需要消耗少量的上下文,因此资源消费更少
从通信来看
进程因为拥有自己独立的内存空间,所以进程间通信需要借助特殊的手段例如管道 共享内存 信号等方式
而线程由于是同一块内存,可以直接通过访问内存数据进行通信
从安全性
进程更安全,一个崩了另一个没影响
线程因为同一块内存,其他也会崩溃
URL从输入到页面展示发生了什么
- 用户接到浏览器请求,首先检查浏览器缓存里是否有该资源,有直接返回,没有再进行网络请求
- 在进行网络请求前要进行DNS解析,用于获取域名的IP地址。会从浏览器缓存,本地host文件,路由器缓存,DNS服务器,根DNS服务器去找IP。如果请求协议是HTTPS的话,还需要建立TLS链接
- 浏览器与服务器IP建立TCP连接。浏览器像服务器发出请求行,请求头的信息,并且把跟域名相关的cookie也加入请求头里面去,想服务器构建请求信息
- 服务器收到浏览器的请求信息,返回响应数据
- 浏览器解析响应头,如果状态吗是301 302,则重定向到其他地址,如果是字节流,则转到下载管理器,如果是HTML,会进入下一步渲染
- 浏览器解析HTML文件,创建DOM树,解析css样式计算,然后将css和dom树合并构建渲染树,最后布局和绘制渲染树,完成页面展示
malloc 和new的区别
malloc是c库函数,new是c++里面的关键字
malloc是从堆上分配的
new是从 free store上分配的
malloc申请出来返回的是一个void*,要用的话需要类型转换到对应对象的类型
new是直接返回对象的指针
free
4111

被折叠的 条评论
为什么被折叠?



