
Linux
文章平均质量分 61
ljlstart
这个作者很懒,什么都没留下…
展开
-
Linux的进程/线程间通信方式总结
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式原创 2015-09-28 21:08:25 · 2518 阅读 · 0 评论 -
Linux中的swap分区
Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其转载 2015-12-28 00:43:44 · 336 阅读 · 0 评论 -
硬链接与软连接的区别
首先我们需要了解linux下硬链接以及软连接的基本概念.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.下面详细介绍一下硬链接和软连接之间的区别.1.硬链接和原来的文件没有什么区别,而且共享一原创 2015-10-15 22:51:30 · 359 阅读 · 0 评论 -
Linux netstat命令详解
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Recv-Q S原创 2015-12-28 00:11:07 · 365 阅读 · 0 评论 -
Proactor和Reactor的简单分析
两种I/O多路复用模式:Reactor和ProactorI/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事件分离器有关的模式是原创 2016-05-07 10:07:17 · 703 阅读 · 0 评论 -
Linux下异步I/0: Linux上的AIO简介
文章出处:http://blog.sina.com.cn/s/blog_6028e2630100y0d1.html本节将探索 Linux 的异步 I/O 模型,从而帮助我们理解如何在应用程序中使用这种技术。在传统的 I/O 模型中,有一个使用惟一句柄标识的 I/O 通道。在 UNIX® 中,这些句柄是文件描述符(这对等同于文件、管道、套接字等等)。在阻塞 I/O 中,我们发起了转载 2016-04-07 11:22:13 · 1334 阅读 · 0 评论 -
如何统计一个目录下的文件个数以及代码总行数的命令
linux下如何统计一个目录下的文件个数以及代码总行数的命令知道指定后缀名的文件总个数命令:find . -name "*.cpp" | wc -lfind . -maxdepth 1 -name "*.sh"|wc -l知道一个目录下代码总行数以及单个文件行数:find . -name "*.h" | xargs wc -lfind . -name "*.c" | xar原创 2016-06-03 09:00:48 · 8396 阅读 · 0 评论 -
vim几个小技巧(持续更新)
vim批量替换:%s/source_pattern/target_pattern/g原创 2016-05-03 16:02:14 · 337 阅读 · 0 评论 -
I/O中的同步 异步 阻塞 非阻塞
同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个转载 2016-05-21 17:54:18 · 599 阅读 · 0 评论 -
查看Linux下系统资源占用常用命令
一 top命令1.作用top命令用来显示执行中的程序进程,使用权限是所有用户。2.格式top [-] [d delay] [q] [c] [S] [s] [i] [n]3.主要参数d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。c:显示进程完整的路径与名称。S:累积模式,会将己完成或消失的子行程的C转载 2016-06-19 10:56:46 · 13857 阅读 · 0 评论 -
如何提高服务器并发能力
1什么是服务器并发处理能力 一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强。如何提高服务器的处理能力,是目前计算机界的一个关键问题。服务器的本质工作就是,争取以最快的速度将内核缓冲区中的用户请求数据都拿出来,然后尽快处理,再将响应数据放到一块又能够与发送数据的缓冲区中,接着处理下一个请求。2 衡量方法2.1 吞吐率 吞原创 2016-05-07 22:43:45 · 4735 阅读 · 0 评论 -
Linux下如何检测内存泄漏
Valgrind通常用来成分析程序性能及程序中的内存泄露错误一 Valgrind工具集简绍Valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。 3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。原创 2016-04-30 01:17:45 · 3159 阅读 · 0 评论 -
Linux 内存管理
1.Linux 进程在内存数据结构 可以看到一个可执行程序在存储(没有调入内存)时分为代码段,数据段,未初始化数据段三部分: 1) 代码段:存放CPU执行的机器指令。通常代码区是共享的,即其它执行程序可调用它。假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 2) 数据段:存放已初始化的全局变量,静态变量(包括全局和局部的),原创 2015-10-25 22:49:59 · 408 阅读 · 0 评论 -
awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho转载 2016-04-08 23:37:28 · 368 阅读 · 0 评论 -
常用的shell命令(持续更新)
批量修改后缀名(例如把当前目录下的.cpp文件修改为.c文件)ls *.cpp | awk -F'.' '{print $1}' | xargs -I {} mv {}.cpp {}.c把指定的文件移动到指定的目录(例如把当前目录下的.java文件移动到/dir)ls *.java | xargs -I {} mv {} /dir统计当前处于TIME_WAIT状态下的TCP连接原创 2016-05-01 22:19:30 · 402 阅读 · 0 评论 -
mac vim下的批量缩进
这样的一个场景:指定的n行向后缩进4个空格。第一步:因为缩进宽度默认为8个空格。我们可以使用以下命令,来修改缩进宽度::set shiftwidth=4第二步:按v进入visual状态,用上下键选择多行,用>或者原创 2016-12-06 18:24:01 · 2759 阅读 · 0 评论 -
Linux五种IO模型
转载:http://blog.youkuaiyun.com/jay900323/article/details/18141217Linux下的五种IO模型阻塞IO模型非阻塞IO模型 IO复用模型信号驱动IO异步IO模型个IO模型的比较select poll epoll简介1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async)原创 2016-03-07 01:25:07 · 440 阅读 · 0 评论 -
tcpdump用法
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。实用命令实例默认启动tcpdump普通转载 2016-05-06 23:11:27 · 397 阅读 · 0 评论 -
Linux C 线程池
1.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程池提转载 2015-10-25 22:40:16 · 342 阅读 · 0 评论 -
Linux命令详解
http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645321.html转载 2016-04-08 23:41:25 · 247 阅读 · 0 评论 -
Linux环境下多进程和多线程的优缺点
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linux更原创 2016-04-08 00:39:20 · 2607 阅读 · 0 评论 -
select,poll和epoll分析
select()和poll() IO多路复用模型select的缺点:单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;(在linux内核头文件中,有这样的定义:#define __FD_SETSIZE 1024)内核 / 用户空间内存拷贝问题,select需要复制大量的句原创 2016-04-27 21:37:11 · 495 阅读 · 0 评论 -
vim的用法
vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。转载 2016-05-10 17:09:36 · 473 阅读 · 0 评论 -
linux下用core和gdb查询出现"段错误"
有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误"。当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。什么是core dump?core的意思是内存,dump的意思是扔出来,堆出来。为什么没有core文件生成呢?有时候程序down了,但是core文转载 2016-04-28 20:41:36 · 522 阅读 · 0 评论 -
Linux用户态和内核态间的转换
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录、页表等,这些操作显然不能随便让任何程序都可以做,于是就产生了特权级别的概念,与系统相关的一些特别关键性的操作必须由高级别的程序来完成,这样可以做到集中管理,减少有限资源的访问和使用冲突。Intel的X86架构的CPU提供了0到3四个特权级,而在我们Linu原创 2016-04-29 08:57:21 · 6078 阅读 · 0 评论 -
Linux文件系统
文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识。1.Linux磁盘分区和目录 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。Linux的文件结构是单个的树状结构.可以用tree进行展示。原创 2016-05-01 01:25:05 · 2032 阅读 · 0 评论 -
常用的gdb调试命令
一.gdb常用命令:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)列出源代码,接着上次的位置往下列,每次列10行原创 2016-05-01 23:40:18 · 622 阅读 · 0 评论 -
通用线程池的设计和实现[C语言]
转载自"祁峰"的优快云博客1 适用场景 首先,必须明确一点,线程池不是万能的,它有其特定的使用场景。使用线程池是为了减小线程本身的开销对应用性能所产生的影响,但是其前提是线程本身创建、销毁的开销和线程执行任务的开销相比是不可忽略的。如果线程本身创建、销毁的开销对应用程序的性能可以忽略不计,那么使用/不使用线程池对程序的性能并不会有太大的影响。因此,线程池通常适合以下几种场景转载 2015-10-25 22:42:34 · 523 阅读 · 0 评论 -
解决UDP服务器并发困难
大多数UDP服务器程序是迭代运行的,服务器等待一个客户请求,读入这个请求,处理这个请求,送回其应答,再等待下一个客户请求。然而当客户请求的处理需要消耗过长的时间时,我们期望UDP服务器程序具有某种形式的并发性。当使用TCP时,服务器的并发处理得以简化的根源在于每个客户连接都是唯一的(不同的已连接套接字),标识每个客户连接的是一个唯一的套接字对。然而当使用UDP时,服务端通过同一个套接字原创 2016-05-02 20:08:50 · 13867 阅读 · 0 评论 -
关于网络编程中服务器出现故障的三种情况(TCP协议)
1 服务器主机崩溃 模拟操作:当客户端和服务器成功连接之后,拔掉服务器的网线,此时从客户端发送数据分节。这样同时也模拟了客户端发送的数据不可达服务端的情景(即建立连接后某些中间路由器不工作)。 产生后果:客户端会持续重传未收到确认的数据分节(TCP软件负责),持续一段时间后仍未收到确认则放弃(通常是9分钟)。如果是服务器崩溃则本机TCP软件会向用户进程显示套接字错误并置错误码原创 2016-05-02 21:23:52 · 2771 阅读 · 0 评论 -
Vim编辑器-批量注释与反注释
vim编辑器---批量注释与反注释在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码。下面简要介绍其操作。方法一 块选择模式插入注释:用v进入virtual模式用上下键选中需要注释的行数按Control+v(win下面ctrl+q)进入列模式按大些“I”进入插入模式,输入注释符“#”或者是"//",然后立转载 2016-05-06 16:14:54 · 403 阅读 · 0 评论 -
read/fread write/fwrite 的区别
fread就是通过read来实现的,fread是C语言的库,而read是系统调用。差别在read每次读的数据是调用者要求的大小,比如调用者要求读取10个字节数据,read就会读10个字节数据到数组中。而fread不一样,为了加快读的速度,fread每次都会读比要求更多的数据,然后放到缓冲区中,这样下次再读数据只需要到缓冲区中去取就可以了。缓冲区(位于内存中)相当于磁盘的一个缓存,因为在内存中的原创 2015-10-31 17:54:51 · 19915 阅读 · 1 评论 -
sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会转载 2015-12-04 22:58:41 · 334 阅读 · 0 评论 -
vim下的代码块对齐操作
step1:ctrl + v (选中块)step2:ctrl + f (向前) 或 ctrl +v (向后)step3:按"=", 把选中的代码对齐原创 2015-10-15 22:44:02 · 19092 阅读 · 0 评论