自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面经

-----------------------------------------虚函数的优缺点问题就是在子类很少覆盖基类函数实现的时候内存开销太大,再加上象界面编程这样子类众多的情况(大概是都不覆盖)性能分析:使用了虚函数之后带来的开销:1、继承体系中每一个类的虚函数表空间开销。2、每一个对象的虚函数表指针空间开销。3、每一次生成一个类都要去初始化虚函数表

2017-04-27 21:10:28 528

转载 linux编程之GDB调试

GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能:1 在程序中设置断点,当程序运行到断点处暂停2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显示出来3 单步执行4 运行时修改变量的值5 跟踪路径6 线程切换等等 下面以以下程序为例当我们要使用GDB进行程序的

2017-02-02 11:56:50 445

原创 进程与线程的各种锁分析总结

进程的文件读写锁学习:http://blog.youkuaiyun.com/anonymalias/article/details/9197641http://blog.chinaunix.net/uid-27177626-id-3791049.html线程的读写锁学习:http://blog.youkuaiyun.com/callinglove/article/details/46646369

2017-02-02 01:04:44 2810

转载 linux c学习笔记----共享内存(shmget,shmat,shmdt,shmctl)

shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key-----------------------------------------------    key标识共享内存的键值:

2017-01-31 19:33:52 634

原创 多进程与多线程与同步的故事

首先先介绍一个无关的对象,可以用来获取毫秒级的时间。有两个函数int gettimeofday(struct timeval *tv, struct timezone *tz);int settimeofday(const struct timeval *tv , const struct timezone *tz);而timeval和timezone的结构体定义是这样

2017-01-25 22:45:28 793

原创 linux文件的一些操作

重命名文件可以用mv移动到同一目录,换一个名字。对文件夹或目录操作一般要加-r选项。创建文件夹【mkdir】  一、mkdir命令使用权限    所有用户都可以在终端使用 mkdir 命令在拥有权限的文件夹创建文件夹或目录。    二、mkdir命令使用格式    格式:mkdir [选项] DirName    三、mkdir命令功

2017-01-25 21:44:02 326

转载 linux上GIT的使用

(转载过来方便查阅)# smbclient -U mtk -L 192.168.64.64     -U 后面跟的是服务器的名字,即mtk  -L 后面中的是服务器的IP,即192.168.64.64 Enter public's password: ---------如果有密码这里需要密码(服务器的密码)[cpp] view

2017-01-25 11:35:12 412

原创 UDP的分析与UDP一次性能发多大的数据

UDP的过程比较简单,当只有一方进行了bind显示绑定端口,则这一方(假设为A)要先作为接收方接受信息,因为不知道对方(假设为B)的端口号是多少。而对方作为发送方进行发送数据通信的时候,底层会为它自动随机分配一个端口号,然后A方则能从&addr中获取B的端口,从而能够紧接着进行发送信息。当然我们也可以对A,B双方都进行显示的bind来进行绑定端口。#include

2017-01-17 12:04:58 4213

转载 TCP、UDP、IP 协议分析

转载: http://blog.chinaunix.net/uid-26833883-id-3627644.html互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。TCP/IP

2017-01-16 23:32:28 486

原创 有关tcp字段的详解

TCP首部字段有必选字段20字节,另外有40字节的可选字段必选字段如下:源端口(Source Port),目标端口(Destination Port) 各2字节源端口号,标识主机上发起传送的应用程序;目的端口标识主机上传送要到达的应用程序。源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目的端I P地址唯一

2017-01-15 16:55:11 15847

转载 socket编程中write、read和send、recv之间的区别

一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。ssize_t write(int fd, const void*buf,size_t nbytes);write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,

2017-01-15 15:17:25 616

原创 TCP全连接队列和半连接队列已满之后的连接建立过程抓包分析

在进行client不断的对server端进行connect的过程中发现下面这个状态,而且循环6w次的链接只进行了2W多次就出错了。于是去查找了下原因:Linux内核协议栈为一个tcp连接管理使用两个队列,一个是半链接队列(用来保存处于SYN_SENT和SYN_RECV状态的请求),一个是全连接队列(accpetd队列)(用来保存处

2017-01-14 11:50:04 3077

原创 关于socket中被动方的close的执行

如果在主动方调用了close(socket),被动方没有及时相应的执行close,则会出现异常。。比如我在被动方的close前加一句键盘输入fgets然后进行send来进行停顿。。则会抓到如下包:主动方(client)执行close之后,会抓到如下两个包,此时主动方是FIN_WAIT2,被动方是CLOSE_WAIT:23:23:48.335377 IP localhost.43152

2017-01-13 23:26:02 1228

转载 解决创建socket时Too many open files问题

转载:http://blog.chinaunix.net/uid-10666692-id-1759617.html首先按照网络上的指导操作修改如下内容(需要重启):ulimit -n 65535(可以写入启动文件/etc/rc.d/rc.local中)/etc/sysctl.conf : fs.file-max = 65535/etc/security/limits.con

2017-01-13 12:26:56 1705

转载 TCP协议中FLAG的含义

TCP FLAG 标记基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据包。TCP标记和他们的意义如下所列:* F : FIN - 结束; 结束会话* S : SYN - 同步; 表示开始会话请求* R : RST - 复位;中断一个连接* P : PUSH - 推送; 数据包立即发送* A : ACK - 应答* U : URG -

2017-01-12 12:32:25 1026

原创 tcp过程

开始过程:A向B发送SYN包,并给定seq=一个比较大的随机数B收到后返回ACK+SYN包,seq=楼上+1.A收到后返回一个ack包。ack=1.。表示下次接受的序号从1开始。结束过程:A发出FIN-ACK后,进入FIN-WAIT-1状态,等待B的确认。B发出ACK后,进入CLOSE-WAIT状态。此时TCP连接处于半关闭状态,即A没有数据发给B了,但

2017-01-11 20:32:50 972

空空如也

空空如也

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

TA关注的人

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