自定义博客皮肤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)
  • 收藏
  • 关注

原创 TCP协议通讯流程——三次握手四次挥手

TCP协议通讯流程(如图) 1 服务器的初始化(服务器端)调用socket,创建文件描述符 调用bind,将当前文件描述符与IP地址跟端口号绑定在一起;如果该端口号已经被其它进程占用了,就会bind失败 调用listen, 声明当前文件描述符为服务器的文件描述符 调动accept,阻塞等待客户端连接2 建立连接的过程(三次握手)客户端调用socket,创建文件描...

2018-07-26 13:00:12 325

原创 网络编程套接字

1 IP地址1.1 IP地址的基本理解IP协议有两个版本,IPv4 和IPv6,我们这里使用IPv4。IPv4有4个字节,32位来表示 IP地址四IP协议中用来标识网络中不同主机的地址 我们通常使用点分十进制标识IP地址,如192.168.1.01.2 源IP地址和目的IP地址       在IP数据报头部有两个IP地址,一个是源IP地址,表示该数据报从哪个主机发送过来...

2018-07-26 09:51:26 258

原创 网络传输的基本流程

1 网络传输的进本流程同一网段内两台主机进行文件传输,文件传输的流程:2 理解封装和分用不同协议对数据报有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame); 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据首部(header),称为封装; 首部信息中包含了一些类似于首部有多长,载荷多长,上层协议是什么的信...

2018-07-25 17:01:53 1174

原创 OSI七层模型与TCP/IP五层模型

1 OSI(open system interconnection)七层模型OSI模型为开放式系统互联参考模型,是一个逻辑上的定义和规范; 把网络从逻辑上划分为了7层,每一层都有相应的物理设备; OSI模型是一种框架性的设计方法,其主要功能是帮助不同类型的主机进行数据传输; 它最大的优点是将服务、接口和协议三个概念区分开,通过七个层次化的结构模型,使得不同系统的数据传输可靠;1.1 应...

2018-07-25 15:19:14 382

原创 多线程的同步与互斥——读者写者模型

在读者写者模型中,同样有“一二三”,一个交易场所,两种角色,三种关系。在读者写着模型中,读者与读者之间是共享的关系,因为并没有改变资源,所以不需要互斥;写者与写者之间是互斥的关系;读者与写者之间是同步与互斥的关系。那么如何实现这么复杂的关系呢?读写锁可以帮助我们进行完成以上同步与互斥关系:int pthread_rwlock_init(pthread_rwlock_t *re...

2018-07-23 16:37:51 889

原创 多线程的同步与互斥---生产者与消费者模型

生产者与消费者模型是多线程同步与互斥应用的一个典型场景,在这个模型中我们要实现:一个交易场所;两种角色(一个是生产者,一个是消费者);三种关系(互斥,同步,同步与互斥)。值得注意的是,消费者与消费者,生产者与生产者之间都是互斥的关系;而生产者与消费者之间是同步与互斥的关系。说到这里就不免要解释一下线程的同步与互斥是什么了?简单来说,互斥就是同一个资源,互斥双方不能同时访问;而同步就...

2018-07-23 16:13:52 1169

原创 Linux多线程

一、什么是线程什么是线程?        线程是进程中一个单一顺序的执行流。我们可以假设这样一个场景,有100道数学题,我做完一道数学题需要1分钟,做完100道需要100分钟;如果我有两个脑袋,其中一个脑袋做前50个题,另外一个脑袋做后50个题,这样我就可以省下一半的时...一个进程中可以有多个线程,这就意味着,完成一件任务,每个线程可以完成一部分,各个线程合作完成一件工作,会大大提高...

2018-07-19 15:34:20 188

原创 找出字符串中第一个只出现一次的字符

题目:找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入asdfasdfo输出o解题思路:和找出一个数组中只出现一次的数字方法类似,都是利用哈希表的思想来统计每个字符或数字出现的次数。然后在进行遍历,以返回只出现一次的数字或字符。这个题的难点主要在于要自己设计main函数用来打印结果。值得注意的是,在这种题目中一定要循...

2018-07-11 16:49:05 409

原创 数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路:要求出数组中出现超过一般的数字,也就意味着要统计每个数字出现的次数。可以利用哈希表,定义一个数组,在每个数字下标的地方存放该下标数字出现的次数。这样统计完后,就可以在进行一次...

2018-07-11 16:25:41 144

原创 逆序栈(使用递归)

题目:一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。给定一个栈Stack以及栈的大小top,请返回逆序后的栈。解题思路:借助递归,利用辅助函数,在调用辅助函数的函数定义一个栈,用来存放逆序后的结果;在辅助函数内进...

2018-07-11 16:21:37 634

原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。解题思路:可以借用一个临时栈帮助遍历数据并存放数据。代码实现:class Solution { stack<int> s;public: void push(int value) { s.push(value); } void pop() { ...

2018-07-10 15:47:34 1264

原创 将一个有序的链表转化为一个二叉搜索树

题目:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.解题思路:解决这道题目,首先要想到的就是二叉树是递归定义的。所以我们在将链表转化为二叉树时,就要先从递归的角度入手。我们知道二叉搜索树是根节点比左子树的所有节点大,比右子树的所...

2018-07-09 18:32:12 279

原创 Partition(list)

题目:Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of ...

2018-07-09 18:24:40 389

原创 链表的旋转

题目:Given a list, rotate the list to the right by k places, where k is non-negative.For example:Given1->2->3->4->5->NULLand k =2,return4->5->1->2->3->NULL.解题思路:观察发现,如果我们将元...

2018-07-09 18:17:07 224

原创 删除链表的倒数第n个节点

题目:Given a linked list, remove the n th node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from th...

2018-07-09 18:05:22 107

原创 双栈排序

题目:请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector&ltint>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。思路:代码实现:class TwoStacks {public: ...

2018-07-09 16:44:25 182

原创 Linux查看系统负载的常用命令

top:查看系统整体状态uptime:与top的第一行相似主要描述的是01:33:50:当前时间,4 users:用户连接数load average:系统平均负载,最近1/5/15分钟的系统平均负载w:第一行与top的第一行相似。USER :登录的用户名 TTY :登录后系统分配的终端号 FROM:远程主机名,即从哪儿登录来的 LOGIN@:何时登录 IDLE:空闲了多长时间,表示用户闲置的时间。...

2018-07-08 17:20:44 941

空空如也

空空如也

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

TA关注的人

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