- 博客(17)
- 资源 (4)
- 收藏
- 关注
转载 Linux网络编程 五种I/O 模式及select、epoll方法的理解
近期一次面试机会让我觉得有很多地方理解可能不到位,翻翻谷歌的资料加深对一些技术的理解五种I/O 模式:【1】 阻塞 I/O (Linux下的I/O操作默认是阻塞I/O,即open和socket创建的I/O都是阻塞I/O)【2】 非阻塞 I/O (可以通过fcntl或者open时使用O_NONBLOCK参数,将fd设置为非阻塞的I/O)【3】 I/O 多路复用 (I/O多路复用,
2014-06-29 20:48:42 2724
转载 【重要】Linux I/O模型
socket阻塞与非阻塞,同步与异步、I/O模型分类: c/c++ socket网络编程2012-04-12 16:35 32926人阅读 评论(22) 收藏 举报socketsocketswindowsapi服务器目录(?)[+]socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解
2014-06-29 15:10:37 2107
转载 编写高效的C++程序方法之使用对象池
对象池技术可以避免在程序的生命期中创建和删除大量对象。如果知道程序需要同一类型的大量对象,而且对象的生命周期都很短,就可以为这些对象创建一个池(pool)进行缓存。只要代码中需要一个对象,就可以向对象池请求.用完此对象时,要把它放回池中。对象池只创建一次对象,因此它们的构造函数只调用一次,而不是每次使用时都调用。因此,当构造函数要完成一些设置动作,而且这些设置可以应用与该对象的多次使用时,对象池就
2014-06-22 22:17:43 681
转载 高性能服务器底层网络通信模块的设计方法
高性能服务器底层网络通信模块的设计方法在对I/O完成端口进行底层封装的基础上,本文提出一种具有高性能的、可扩展性的通用网络通信模块设计方案。该方案采用多种系统性能优化技术,如线程池、对象池和环形缓存区等。该模块在Win32平台上用c++开发完成,经过严格的压力和性能测试后,实验结果表明该模块能够支持海量并发连接,具有较高的数据吞吐量,在实际项目应用中也取得了良好的表现。
2014-06-22 22:15:51 1453
转载 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
[置顶] 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三分类: VC网络编程基础2011-11-01 08:17 78679人阅读 评论(375) 收藏 举报网络编程socketnull服务器windows 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解
2014-06-21 22:26:12 1431 1
转载 进程间通信 —— 命名管道
要点:1、引子好,到这里呢,就需要介绍实现进程间通信的第四种方式了,也就是通过命名管道来实现,前面介绍的那三种方式呢,都是有缺陷或者说局限性太强,而这里介绍的命名管道相对来说,在这方面就做得好很多了,比如,剪贴板的话只能实现本机上进程之间的通信,而邮槽的话虽然是可以实现跨网络之间的进程的通信,但麻烦的是邮槽的服务端只能接收数据,邮槽的客户端只
2014-06-15 22:51:51 1279
转载 进程间通信——匿名管道
要点:1、进程间通信 - 匿名管道实现引子前面的两篇博文分别介绍了通过剪贴板和通过邮槽来实现进程之间的通信,其中剪贴板呢,是用来实现本地两个进程之间的通信,而邮槽则既可以实现本地两个进程之间的通信,也可以实现本地进程和服务器进程的通信,当然,上面这两种方式都是有局限性的,比如剪贴板就只能实现本地进程之间的通信,而在邮槽中,虽然是既可以实现
2014-06-15 22:42:43 609
转载 进程间通信 - 邮槽实现
要点:1、引子前面的一篇博文介绍了进程之间通信的一种最为简单的方式,也就是在本地进程之间通过剪贴板来实现进程间通信,而剪贴板自有其缺陷,很显然的是,剪贴板只能在本地机器上实现,无法实现本地进程与远程服务器上的进程之间的通信,那么有没有办法实现本地进程和远程进程的通信呢?办法自然是有的,要是实在搞不出,我拿 Socket 来
2014-06-15 22:27:59 928
转载 进程间通信——剪切板
要点:1引子由于在启动一个进程后,操作系统会给这个进程分配 4GB 的私有地址空间,至于为何有 4GB 这么大,那得考虑进程的私有地址空间和实际物理内存地址空间之间的映射以及页交换等等细节问题了,这里不予讨论,从名字就可以知道,既然操作系统给每一个进程分配的是私有地址空间,自然,这段地址空间也只有这个进程自己才能访问了,不然还称为私有干吗呢?既然这段私有
2014-06-15 22:02:20 3691
转载 面试问题整理
前段时间专心面过腾讯,经过了N轮的技术面,结果还是挂了,但没挂在技术面,比较欣慰,回来之后写一点总结,以供有梦想进入腾讯做后台服务器开发的同学参考,本文章为胡成精心总结,胡成原创,copy和转载请通知。ps:()之内的文字由作者点评,非面试题文字。linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的
2014-06-15 21:35:49 6712
转载 IOCP模型与网络编程
IOCP模型与网络编程一。前言: 在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一
2014-06-15 21:14:43 712
原创 虚拟地址空间的理解
1、创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟 进程地址空间。之所以是 4GB ,是因为在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即为 4GB 大小的容量。2、每个进程只能访问自己虚拟地址空间中的数据,无法访问别的进程中的数据,通过这种方法实现了进程间
2014-06-14 22:58:31 4981
原创 OD学习笔记
1、OD与IDA是两个常用工具。OD是动态分析,IDA是静态分析。2、F2下断点,F3加载一个可执行程序。3、Call *** 按F7可以进入该函数内部,Ctrl + F9运行至ret出,就可以返回程序了。4、Alt + B打开断点编辑器,用于取消断点,del或者空格取消断点。
2014-06-08 21:23:48 3841
原创 一个简单的变长内存池
#define NODE_SIZE (200) //每个node的大小#define BASE_NODE_NUM (1024 * 1) //初始分配大小#define STEP_NODE_NUM (1024 * 1) //每次递增大小#include #pragma pack(1)typedef struct _mem_node {
2014-06-02 19:24:04 1763
转载 一个简单的固定长度内存池的实现
一个简单的内存池的实现j 当频繁地用malloc申请内存,然后再用free释放内存时,会存在两个主要问题。第一个问题是频繁的分配释放内存可能导致系统内存碎片过多;第二个问题是分配释放内存花费的时间可能比较多(这个问题不太明显)。这个时候我们就可以考虑使用内存池了。TAG: 内存池 当频繁地用malloc申请内
2014-06-01 17:45:11 3183
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人