
linux
文章平均质量分 78
vgxpm
这个作者很懒,什么都没留下…
展开
-
I/O模式 同步、异步、阻塞、非阻塞
同步与异步IO、阻塞与非阻塞IO转载 2014-04-22 21:57:17 · 721 阅读 · 0 评论 -
5种服务器网络编程模型讲解
1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:12345678bind(srvfd);listen(srvfd);for(;;){clifd = accept(srvfd,...); //开始接受客户端来的连接read(clifd,buf,...); //从客户端读取数据dosomthingonbuf(buf);write(clifd,buf)转载 2015-09-20 16:55:31 · 594 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
本文转载自:http://blog.jobbole.com/24006/摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主转载 2015-10-03 22:29:13 · 522 阅读 · 0 评论 -
僵尸进程详解
1、含义在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。2、真实的背景一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被僵尸进程销毁, 而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是 使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进原创 2015-08-20 12:25:07 · 958 阅读 · 0 评论 -
透过 Linux 内核看无锁编程
本文转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-lockfree/多核多线程已经成为当下一个时髦的话题,而无锁编程更是这个时髦话题中的热点话题。Linux 内核可能是当今最大最复杂的并行程序之一,为我们分析多核多线程提供了绝佳的范例。内核设计者已经将最新的无锁编程技术带进了 2.6 系统内核中,本文以 2.6.10 版本为蓝本,带转载 2015-08-18 17:48:25 · 854 阅读 · 0 评论 -
valgrind的使用
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。转载 2015-07-24 21:14:38 · 741 阅读 · 0 评论 -
Linux守护进程的编程实现 (转)
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本转载 2015-07-23 16:05:44 · 573 阅读 · 0 评论 -
详解coredump
转自:http://blog.youkuaiyun.com/tenfyguo/article/details/8159176一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件转载 2015-08-01 10:40:03 · 909 阅读 · 0 评论 -
Linux调用backtrack函数打印程序崩溃时的调用堆栈
转自:http://blog.sina.com.cn/s/blog_6e2282880100wlrt.html可以给自己的程序都加上这个东西,便于快速的找到错误吧,看到别人都是这么用的#include#include#include#include //signal 函数用法参考http://www.kernel.org/转载 2015-08-01 23:38:48 · 894 阅读 · 0 评论 -
修改linux文件最大句柄数
文章转载自:http://www.cnblogs.com/likehua/p/3831331.html大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:[root@mongodb11 ~]# ulimit -aco转载 2015-08-13 20:30:11 · 652 阅读 · 0 评论 -
epoll的两种触发模式ET和LT
转载自:http://haoningabc.iteye.com/blog/1432958epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知. 以代码来说明问题转载 2015-08-24 23:45:36 · 1325 阅读 · 0 评论 -
epoll的高效实现原理
本文转载自:http://blog.chinaunix.net/uid-17299695-id-3059110.html开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实转载 2015-08-24 22:03:42 · 681 阅读 · 0 评论 -
实现服务器的回射
1、首先介绍需要使用到的函数:1)#include int pipe(int fd[2]);pipe函数用于创建一个管道,以实现进程间的通信。pipe函数的参数--两个元素的整形数组,表示两个文件描述符,它们构成管道的两端,往fd[1]中写入的数据可以从fd[0]读出,且fd[0]只能用于从管道中读取数据,fd[1]只能用于往管道中写入数据,默认情况下,这对描述符都是阻塞的。该函原创 2015-07-09 11:51:59 · 788 阅读 · 0 评论 -
TCP服务端和客户端程序示例
服务端:#include #include #include #include #include #include #include #include #include #define BUFFER_SIZE 1024int main( int argc, char* argv[] ){ if( argc <= 2) { printf(原创 2015-07-07 23:10:15 · 870 阅读 · 0 评论 -
fstat、stat和lstat 区别
stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。1首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat三者都要用到的一个结构体类型,名字叫做struct stat。可以说,没有这个struct stat的支持,上述三个系统调用将寸步难行。这个s转载 2015-07-09 10:33:53 · 2032 阅读 · 0 评论 -
udp服务端和客户端程序示例
UDP 服务端:#include #include #include #include #include #include #include #define BUFFERSIZE 1024int main( int argc, char* argv[] ){ if( argc <= 2 ) { printf( "usage: %s ip_a原创 2015-07-07 23:02:04 · 1234 阅读 · 0 评论 -
Ubuntu下安装使用Monaco字体
原文:http://blog.youkuaiyun.com/jokes000/article/details/17793397 https://github.com/cstrap/monaco-font安装方法:curl -kL https://raw.github.com/cstrap/monaco-font/master/install-font-ubuntu.转载 2015-04-06 17:43:52 · 2654 阅读 · 0 评论 -
linux基础学习
1、sed命令实现修改文件中某行指定字符串,并保存如a.txt文件内容是:wangyi is a shabizhouxiong is a big shengliuqing is a diaosi#wangdao is a dashen1)需要做的是将shabi 所在行的wangyi改为liuqing。命令如下: sed -i '/shabi/s/wangyi/liuq原创 2015-01-01 10:22:25 · 750 阅读 · 0 评论 -
在Ubuntu14.04中配置自己的GVIM
注:保证你的Ubuntu能够联网1、首先安装vim7.4以上版本,选择GTK版本(不要选择gnome版本,会出点小问题)2、在~目录下创建目录.vim:mkdir ~/.vim3、安装插件管理工具Vundle,将它放到.vim目录中:执行命令git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle原创 2015-04-07 01:10:49 · 4087 阅读 · 4 评论