小知识点总结

用户输入一个url之后到整个页面返回给客户这个过程都经历了一些什么

首先url是为了让人记忆方便的,计算机在进行网络传输的过程中只能通过ip地址找到对应的主机,所以当输入一个ip地址的时候,此时就需要找对应的url,首先从浏览器中取查找ip地址,再到系统中去查找,再到域名解析服务器中去查找,直到找到根域名服务器,此时就会出错.
当找到对应的ip的地址之后此时DNS服务器就会将这个ip地址进行返回.此时拿到这个ip地址它就可以到对应的主机上去找对应的资源,资源找到后主机就发送一个HTTP响应,然后把数据交给传输层,传输层就会加上自己的报头,其中会加上自己的报头数据,然后交给下一层网络层,网络层收到数据之后就将自己的报头进行封装,然后交给数据链路层,数据链路层,由于之前在IP层封装了源IP目的IP,于是通过ip找到对方的MAC地址,此时就要经过ARP协议,然后通过ARP得到对方的ip再依次从下往上不断交付,直到应用层,应用层通过对HTTP的响应进行解析最终将页面展示给用户

GET和POST方法有什么区别

GET 会将参数放到url后面,post将参数放到body中,如果对url长度有限制的话,此时GET方法所传的参数长度也会受到限制,POST方法不会限制,POST方法将数据进行加密后就会实现安全传输,GET方法不会数据进行加密,没有安全性

计算机网络中为什么要有网络层

假如没有网络层,数据要从远端到达目的端,此时就只知道要去哪里,但是不知道该如何让到达目的主机,于是就必须有网络层告诉主机要经过哪些路由才能到达目的端

简述计算机网络中ISO分层结构

物理层:用于建立、维护和拆除物理链路连接。数据的单位是比特,主要设备有中继器、集线器、适配器。
数据链路层:负责设备之间数据帧的传送和识别,以太网,令牌环网
网络层:负责两台主机源端和目的端是如何到达,路由转发
传输层:保证数据可靠的从源主机到达目标主机
会话层:负责通信的连接和建立
表示层:设备固有的数据和网络之间的数据转换
应用层:负责应用进程之间的通信

线程和进程之间的区别

概念上:进程是资源管理的基本单位,线程是调度的基本单位
独立性上:进程是具有独立性的线程是存在于进程的,但是线程有自己的栈,上下文数据以及局部变量等等
通信方面:进程通信比较花费资源,线程只需要有一个全局变量就可以实现通信
安全性:进程崩溃不会导致另外一个进程崩溃,但是线程崩溃就会导致整个进程崩溃

堆和栈的区别

地址空间上:堆在栈的下面(堆地址低,栈地址高)
增长方向:堆向上生长,栈向下生长
数据存储结构:堆区可以看成是一棵树,栈区可以看成一个栈
清理变量:堆区得程序员自己申请,自己释放,栈区由编译器自定进行释放

进程间通信

管道
消息队列
共享内存
信号量
sock套接字

数据在计算机中的存储都有哪些

磁盘,内存,CPU,高速缓存

C++中如果传一个特别大的对象的时候应该怎样去传输,为什么要传引用

传值会开辟一个新的对象,然后将这个对象调用拷贝构造,最后传过去,如果对象很大的时候,这个时候额外的开销就会特别大,但是如果是传引用的话就会只额外开辟四个字节,花费的开销不是特别大

深浅拷贝的区别

深拷贝会额外开辟空间,然后将原来已有的空间对饮的内容依次拷贝到新的空间,浅拷贝只是减小引用计数,将指针直接指向对应的空间

软硬连接的区别

创建方式上:软连接ln -s 文件名 原文件名
硬链接ln -d 文件名 原文件名
实现上:软连接只是一个文件的地址,不使用相同的inode号
在Linux下多个文件可以指向一个inode, 此时的这些inode相同的文件就叫做软连接文件
磁盘存储上:
删除一个软连接对应的源文件的时候,此时如果继续访问该文件就不存在
删除一个硬链接对应的文件, 此时硬链接文件还在,硬链接是存在于磁盘上的一个文件
不允许给目录创建硬链接
只有在同一文件系统中的文件之间才能创建硬链接。

进程和线程之间的区别

概念上:

进程是资源分配的基本单位,线程是执行的最小单位.

创建方式:

系统再创建进程的时候会给进程分配资源包括页表,PCB,IO等,然后将进程放到就绪队列中,只有给进程分配了CPU等资源的时候,此时该进程才算是运行.
如果进程在创建之后需要执行多跟我任务此时就可以创建多个线程,让多个线程去同时完成多个任务,这样势必会提高效率
同时在创建进程和创建线程的时候用到的接口也是不同的,创建进程的时候是用fork()和vfork()来创建,但是创建线程的时候用的是pthread_create()来创建一个线程

代码实现上:

多进程的代码比多线程的代码实现起来要简单,多线程的代码由于要考虑到线程安全问题,所以实现起来就会比较复杂

创建开销上:

进程的创建比线程的创建花费开销大,创建一个进程的时候就要给该进程创建对应的PCB,页表,地址空间等,但是创建线程的话由于线程是存在于进程中的,因此在创建线程的时候线程只需共享进程的堆,但是进程也拥有自己的栈,上下文数据

通信方式上

进程的通信实现起来相对比较复杂,它会用到的有管道(匿名管道和命名管道),消息队列,共享内存,信号量,socket套接字,实现起来较为复杂,但是线程由于是存在于进程内部的,因此只需要有一个全局变量,此时所有的线程就会全部看到,实现起来较为简单
线程由于是相互独立的,因此在创建线程之后,要让两个线程之间进行通信,此时就需要通过加锁机制实现线程之间的安全问题

线程的健壮性没有进程强

因为进程之间具有独立性,因此两个线程之间如果有一个进程挂掉,不会影响其他的一个进程,但是线程就不一样了,运行在一个进程中的两个线程如果其中的一个线程崩溃了,此时就会导致整个进程崩溃

实现方式

Linux下线程是轻量级进程,线程的执行粒度比进程的执行粒度更细,Linux下的线程是轻量级进程

状态上

进程状态包括:
R(运行状态):进程要么在运行,要么在运行队列中
S(睡眠状态):进程在等待时间完成
D(休眠状态):不可中断睡眠状态(等待IO结束)
T(停止状态):进程可以通过发送SIGSTOP信号来是当前进程停止运行,同时也可以给进程发送一个SIGCONT来使得进程继续运行
X(死亡状态):只是一个返回状态,不会再列表中看到这个
Z(僵尸状态):进程退出后父进程没有拿到子进程的退出结果,此时的子进程就会成为僵尸进程
线程就没有这么多的状态

等待上

进程等待:
调用wait接口,但是线程的等待调用pthread_join(线程退出后由主线程对其进行资源回收)或者是pthread_detach接口(线程退出时自动回收线程的资源)

退出方式

进程退出可以在主函数中调用return,也可以使用exit
对于线程而言,也可以退出,但是为了实现安全机制,线程就不能使用exit来退出,线程调用pthread_exit来终止自己,同时线程还可以使用return,但是对于主线程不行,同时一个线程也可以使用pthread_cancle来终止另外一个线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383881.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习之普通函数指针与成员函数指针

http://blog.csdn.net/lisonglisonglisong/article/details/38353863 函数指针(function pointer)是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生。我最近也被问…

HDU2683——欧拉完全数

题目要求符合等式的数,我们首先要做的就是分析这个数: 对于这个等式,我们可能什么都看不出来,左边很难化简的样子,所以我们就要想到通过变化怎么样把右边化成和左边形式差不多的样子。结合组合数我们想到二项式定理&am…

BZOJ-2005能量采集-数论函数

很入门的数论函数题目。我还是wa了一发(爆long long 了) 对于每个位置x,y,在他们和能量采集器中间的植物为gcd(x,y)-1,【在他们之间说明斜率相同,而和他们斜率相同的就是所有gcd(x/gcd(x,y),y/gcd(x,y))1的并且比他们小…

网络五层模型

TCP/IP五层模型 应用层: HTTP,HTTPS协议,其中HTTP没有对数据进行加密操作,但是HTTPS对数据进行了加密操作 其中HTTP端口号一般是80/8080等等,HTTPS端口号是443,SSH端口号一般是22,ftp是21 HTTP协议报头: 首行:请求方法,url,协议版本 请求报头: HOST:主机 Connection:长连接…

C++的静态成员函数指针

http://blog.csdn.net/sky453589103/article/details/47276789 先简单的说说非静态的成员函数。非静态成员函数指针的类型:类的非静态成员是和类的对象相关的。也就是说,要通过类的对象来访问变量。成员函数的类型定义为:typedef void (A::*p…

从一个字符串中删除另一个字符串中出现过的字符

http://blog.csdn.net/walkerkalr/article/details/39001155 定义一个函数,输入两个字符串,从第一个字符串中删除在第二个中出现过的所偶字符串。例如从第一个字符串"We are students."中删除第二个字符中“auiou”中出现过的字符得到的结果是…

SPOJ-VLATTICE Visible Lattice Points-莫比乌斯反演

需要将问题分解一下。 我们需要求的是这个立方体从(0,0,0)能看到的点的个数。可是在三个含有(0,0,0)的面上我们没有办法和其他的一起进行分析(因为含有坐标是0,而我们的数论工具都是从1开始的),所以我们可以将那三个面分开考虑&a…

进程的通信

管道 什么是管道 由于进程之间是相互独立的,因此在进程与进程之间进行相互联系的时候,此时就需要采用一种机制,通过管道的方式将进程一个进程的执行数据交给另外一个进程,此时就可以以通过管道来实现 匿名管道和命名管道 匿名管道 创建一个匿名管道的方式是pipe(int pipe[…

获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf

http://blog.csdn.net/windeal3203/article/details/39320605 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq 结构体struct ifconf来获取网络接口的各种信息。 ioctl 首先看ioctl()用法ioctl()原型如下&#xff1a;#include <sys/ioctl.h>int ioctl(int fd, i…

欧拉降幂

我们记f(n)为n的欧拉函数值&#xff0c;则 当B>f©时&#xff0c;AB%CAB%f©f©%C&#xff0c;这里A,C可能不互质。 很好用&#xff0c;证明很复杂&#xff0c;等有时间回来学习一下。

房多多面试总结

测试一个ATM机 功能上 取钱     正常         要取的钱的面值是否支持ATM机服务         要取的钱的数目是否小于等于存的钱的数目         要取的钱的数目大于存钱的数目     异常         取钱的时候操作出现异常&#xff0c;导致…

BZOJ3884上帝与集合的正确用法-欧拉函数

刚开始我想的是欧拉降幂&#xff0c;可是觉得复杂度还是挺高的就去找了一下题解。 思路大方向没有问题&#xff0c;仍然是使用欧拉函数降低指数然后递归处理。但是不是简单的使用欧拉降幂而是应该对模数p稍微处理一下。因为底数已经确定为2&#xff0c;所以我们可以将p写成p2k…

比较ArrayList和数组的区别

区别1:创建时的区别 一般数组在创建的时候都需要指定数组的大小&#xff0c;但是ArrayList不需要指定数组的大小 //创建一个ArrayList对象 ArrayList<String> myList new ArrayList<String>(); //创建一个数组 String [] myList new String[2];区别2&#xff1…

linux C如何获取服务器节点上所有网口的ip地址

http://blog.csdn.net/weiyuefei/article/details/22198659 之前项目原因&#xff0c;需要获取当前服务器节点上所有网口的ip地址&#xff0c;但是当时由于时间比较紧&#xff0c;一直没搞出来&#xff0c;最近没那么忙了&#xff0c;又在网上找了一下&#xff0c;终于实现了这…

HDU1573-模线性方程

模线性方程的模板题。&#xff08;卡了一会&#xff0c;发现读入弄错了&#xff09; #include<cstdio> #include<cstring> #include<algorithm> #include<climits> #include<cmath> #include<cstdlib> #include<ctime> #include<…

java中引用传递

基本概念 栈内存 所谓的栈内存就是存储进程在运行过程中变量的内存空间 堆内存 所谓的堆内存就是存储系统中数据的内存空间 数组相关的引用传递 先来看一段代码 public class ArrayDemo {public static void main(String[] args) {int[] x null;x new int[3];System.o…

(原创)C++11改进我们的程序之右值引用

http://www.cnblogs.com/qicosmos/p/3369940.html 本次主要讲c11中的右值引用&#xff0c;后面还会讲到右值引用如何结合std::move优化我们的程序。 c11增加了一个新的类型&#xff0c;称作右值引用(R-value reference)&#xff0c;标记为T &&&#xff0c;说到右值引用…

(原创)C++11改进我们的程序之move和完美转发

http://www.cnblogs.com/qicosmos/p/3376241.html 本次要讲的是右值引用相关的几个函数&#xff1a;std::move, std::forward和成员的emplace_back&#xff0c;通过这些函数我们可以避免不必要的拷贝&#xff0c;提高程序性能。move是将对象的状态或者所有权从一个对象转移到另…

微型个人博客服务器

Http相关简介 Http是应用层的基于请求响应的一个协议, 其中Http的请求响应可以分为四部分. 请求行, 请求报头,空行, 请求正文.其中请求行包括了请求方法, url, 版本号, 请求报头包括请求属性, 冒分割的键值对, 每组属性之间都以换行的形式分开, 最后一空行作为请求的结束标识.…

HDU6428-Calculate-数论函数

并不知道为什么同样一份代码早上超时下午就A了…好像数据是随机的? 做的第一道不是简单板题的数论函数题.果然做不出来… 在网上研究了好久,才算稍微研究明白.看到了两种推导的思路.(写了半天发现讲起来好麻烦,有时间再来更新) #include<cstdio> #include<cstring&g…