自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Effective C++ 之学习:from 条款21 to ...

条款21:Don't try to return a reference when you must return an object观点一:在使用引用的时候必须明确该引用指向谁,引用是常指针实现的,故而其所指向的对象肯定是唯一不可变的,所以在使用引用的时候必须明确其指向。观点二:函数应该尽可能的避免返回一个指向局部对象的指针或者引用。因为局部对象在函数体执行完之后就会被销毁,这时候,指针和引用就...

2018-06-05 17:16:02 253

原创 TCP客户端与服务器函数调用过程及特殊情况

基本结构如下图所示:一般而言服务器是被动建立连接,服务器调用socket创建套接字,bind给socket分配具体的ip地址以及端口号,再调用listen函数将刚创建好的socket放入监听队列,之后调用accept等待指定地址(协议)的客户端的连接。客户端调用socket创建套接字,随后connect来建立连接,客户端的socket的bind操作在connect中隐藏完成。调用c...

2018-08-03 23:03:21 2307

转载 C/C++ 运算符优先级

原文链接:https://blog.csdn.net/skywalker_leo/article/details/6237222抄写一遍,帮助记忆注:数字越小优先级越高。关于运算符优先级的两点说明:1、同等级的运算符,运算次序由结合方向来决定。特别注意:-和++,结合方向是自右向左,因而-i++相当于-(i++);2、由上述表可以归纳出大致的优先级(从高到低的顺序):初等运算符->单目运算符...

2018-07-10 10:39:38 2920

原创 TCP“三次握手”、“四次挥手”

TCP协议TCP协议是建立在不可靠的ip层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复的问题。TCP是TCP/ip体系中非常复杂的一个协议,主要特点是:1、TCP是面向连接的传输层协议。2、每一条TCP连接只能有两个端口,每一个TCP连接只能是点对点的。3、TCP提供可靠的交付服务,保证传输的数据无差错,不丢失不重复且有序。4、TCP提供全双工通信。5、TCP是面向字节...

2018-06-27 22:32:27 209

原创 IP地址相关

定义:连接在Internet中的每一台主机都分配了一个32比特的全球唯一的标识符,即ip地址。传统的ip地址是分类的地址,A、B、C、D、E五类。一般讨论前三类;A类网络号占据8个bit,第一位为0,B类16个前两位为10,C类24个,前三维为110。无论哪类地址,均是由两部分组成,即{<网络号>,<主机号>},其中网络号标志主机所连接到的网络,其在整个因特网范围内都是唯一...

2018-06-27 19:59:23 778

原创 计算机网络体系结构

定义:计算机网络的各层及其协议的集合合称为网络的体系结构。协议:即规则的集合。为进行网络中数据交换(如数据格式及同步问题)而建立的规则、标准或约定称为网络协议(network protocol)。协议由语法、语义和同步组成。语法规定了传输数据的格式;语义规定了所要完成的功能,即需要发出何种控制信息完成何种动作以及做出何种应答;同步规定了执行各操作的条件、时序关系等,即时间实现顺序的详细说明。协议是...

2018-06-27 15:05:20 415

原创 分页存储管理

what's this?将主存物理地址空间分成多个固定大小的块(页框),并为各块加以编号,从0开始,第0块、第1块......将进程逻辑地址空间按照主存块大小分页(页面),并为各页加以编号。连续的页面存放在离散的页框之中。why this?分区管理要求作业必须分配一个或若干分区之中,容易产生区内碎片,即某个区多出的部分无法利用。且要找到足够大的分区需要花费时间合并分区(变长分区),影响内存利用率以...

2018-06-26 10:44:27 1431

原创 死锁相关

死锁定义:如果一个集合内多个进程在运行过程中都在等待只能由集合内其他进程释放的资源,则在无外力作用下,这些进程将永远相互等待,即死锁。产生死锁的四个必要条件:互斥条件:进程互斥的使用资源(资源独占性);占有和等待条件(部分分配条件):申请新资源时不释放已占有资源;不剥夺条件:一个进程不能抢占其他进程占有的资源;循环等待条件:存在一组进程循环等待资源的现象;死锁的解决办法有:死锁预防、死锁避免、以及...

2018-06-25 16:21:33 480

原创 进程间的通信

低级通信:交换信息量少且控制复杂,对用户不透明。主要有信号通信机制、信号量和原语操作。高级通信:用户直接用操作系统提供的通信命令传输大量数据,通信细节由操作系统完成,对用户透明。主要有管道通信(共享文件通信机制)、共享存储区通信机制、信箱的收发信原语的消息传递通信机制;1、信号通信机制别名软中断,通过发送一个指定的信号通知进程某个异常事件发生,并进行适当处理。2、管道机制what's this?管...

2018-06-25 15:01:34 343

原创 管程

1、what's this?1-1:将分散在各个进程中的临界区集中管理起来,并将共享资源用数据结构抽象地表示出来;1-2:建立一个“秘书”程序来管理到来的访问;1-3:秘书每次只让一个进程来访;这个秘书就是管程。更正式的定义:一个管程定义了一个数据结构和能为并发进程所执行的在该数据结构上的一组操作,这组操作能同步进程和改变管程中的数据。特点共享性:管程被所有管理的进程所共享;安全性:管程的局部变量...

2018-06-25 14:17:14 761

原创 进程间的交互

进程间的交互分为竞争关系、协作关系。1、竞争关系由于计算机内资源有限,或者说某几个进程必须共享某些资源与变量,这时候就不可避免的会出现竞争,进程的相互竞争就会穿死锁和饥饿问题,饥饿问题已解释。死锁问题是指一组进程如果都获得了部分资源,还想要得到其他进程占用的资源,最终所有进程都将陷入死锁,即都在等待,每个进程都不会先放手自己占有的资源。进程互斥:若干进程在使用共享资源的时候,其他进程必须等待正在使...

2018-06-24 15:30:18 2130

原创 处理器调度

处理器调度算法设计从以下几个方面着手:资源利用率、吞吐率、公平性、响应时间、周转时间、截止时间的保证、优先权原则等等。cpu利用率 = cpu有效工作时间 / cpu总的运行时间cpu总运行时间 = cpu有效工作时间+cpu空闲等待时间吞吐率:单位时间内cpu处理的作业数公平性:确保进程不会出现饿死现象,即某进程一直在等待,当得到资源时,进程已经没有执行的实际意义。响应时间:从提交一个请求到接收...

2018-06-23 21:23:47 483

原创 进程与线程相关

1、进程与线程的概念进程是操作系统对并发执行的程序在执行过程中进行资源分配、系统调度的基本单位,是一个动态概念。与其对应的是程序,程序意味着一堆指令与数据的有序集合,是一个静态概念。进程有三个基本状态:就绪、运行、阻塞。进程的状态转换图:就绪态势获得了除cpu外所有必须资源;运行态是就绪态的进程获取了cpu资源开始执行;阻塞态是运行中的程序缺乏除cpu外的某些资源,比如说等待下一个输入操作;线程是...

2018-06-22 11:02:55 167

原创 虚函数相关

1、何为虚函数虚函数是C++多态实现的基石。虚函数是为了实现动态编译而设计,即:只有在具体的运行中,才会知道到底调用父类或者子类哪个版本的虚函数。其出现的根本原因是在C++中父类指针既可以指向子类对象也可以指向父类对象(反之不行)。如果没有虚函数,且子类中如果重写了与父类中函数原形相同的函数,则会隐藏父类中的此函数,编译器在编译阶段并不知道这个父类指针到底指向什么对象,所以最安全的办法就是调用父类...

2018-06-20 11:17:56 221

原创 reinterpret_cast

C++中四种类型转换中,reinterpret_cast功能最为强大,但也最为危险。字面意思就是“重新解释”,其主要与指针相关,将某种指针转换为任意其他类型指针或类型,而不做类型检查,内部其实是做二进制层面的转换(bit位数相同),也可以将整数类型转换为指针类型(代表地址),反之亦然,其强大之处是可以做无关类型之间的转换。tip1:不可以做两个非指针类之间的转换;tip2:不可以做去const的转...

2018-06-19 22:50:23 271

原创 static_cast&dynamic_cast

stactic_cast用来执行任意明确定义的类型转换,以及反变换。但其只是暴力转换,并不负责保证转换的安全性。1、基本数据类型之间的转换,int->char,int->enum,char->int,int->float,float->int,但精度的丢失不在static_cast的考虑范围,需要开发者自己考虑。2、将任何非常量对象的地址存入void* & 找...

2018-06-19 20:46:46 238

原创 const_cast用法

顶层const&底层const:普通变量没有底层顶层的区别;int const a == const int a只有对应指针,引用才会有区别:指针常量->顶层const,指针本身不可被修改。int * const b = &a,a既可以通过a = x来改变,也可以通过*b = x来改变,但不可以把b指向别的地址、别的变量。例如声明int c = 2;b=c即会报错。指向常量的...

2018-06-19 16:44:45 8685 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除