linux
文章平均质量分 52
egraldloi
DBOSps:是博客更是笔记欢迎纠错
展开
-
unix环境高级编程笔记--高级IO
系统调用可以被分为“低速“系统调用和其他系统调用,低速系统调用是可能使进程发生阻塞的系统调用,在我写网络编程程序的时候就遇到过某个函数如open,read,recv这些函数发生阻塞,如果指定为非阻塞的话,有两种:1,调用open获得文件描述符,然后指定为O_NONBLOCK标志;2,对于已经打开的文件描述符,调用fcntl打开O_NONBLOCK文件状态文件是阻塞的,设置为非阻塞的方式为:原创 2013-10-12 16:04:29 · 780 阅读 · 0 评论 -
epoll原理和应用
前段时间在项目中用到了select系统调用来实现非阻塞IO,但是select系统调用的缺点如下:1,select监听的fd的个数有个上限值,1024,也就是当server端同时接受来自1024个客户端的网络连接,就会出现FD_SETSIZE的限制,但是这个缺点有解决方法,就是通过修改宏定义或者重新编译内核来修改FD_SETSIZE的值。2,select会维护一个存储要监听的所有文件描述符的数原创 2013-10-12 16:04:27 · 871 阅读 · 0 评论 -
多个线程barrier操作--条件变量
在多个线程协同工作时,有一种应用为,当多个线程都完成工作之后,才进行下一阶段的工作,最典型的为hashjoin算法中的build阶段并行化。在build阶段,多个线程同时读取一个relation建立hash表,在此我们不考虑线程之间写hash表冲突造成的性能降低。N个线程读relation然后build hash表,N个线程都完成工作之后,才能开始下一步的probe阶段,否则probe阶段“见原创 2014-03-26 22:54:59 · 1305 阅读 · 0 评论 -
多线程之信号量--生产消费者问题
在诸如生产者消费者问题中,信号量被广泛使用,前段时间网上流传的奶茶京东的例子,就是一个信号量的问题。下面以生产者消费者问题为例,说一下信号量和锁的结合应用:一般有两个信号量:对于生产者的缓冲区可用资源数目和对于消费者的产品可用的资源数目。一般有两个函数指针:生产者函数指针在生产,消费者函数指针在消费。这个两个函数指针指向的函数中如果是多线程情况会有锁来避免多个线程修改缓冲区。代原创 2014-04-22 23:35:44 · 887 阅读 · 0 评论 -
linux使用技巧
以下是一些在使用linux的时候记录下来的技巧,以防忘记,博客记录下来1,cat /var/log/messages 如果出现什么异常情况,可以用这条命令查看日志信息后面还可以加上管道|grep **原创 2013-10-12 16:04:37 · 702 阅读 · 0 评论 -
C++实现高性能哈希表
构建哈希表的时候,必须指定有多少个bucket,下面我们以6个bucket为例,当我们指定哈希规则为模6的话,哈希表初始化的时候是建立6个bucket。首先由6个指针分别指向这6个bucket,然后申请具体的6个bucket所需要的空间,且每个bucket所需要的空间后面有两个指针,这两个指针一个指向这个bucket中的空闲位置,还有一个是指向当此bucket溢出之后重新申请空间的bucket,比原创 2014-07-30 13:15:25 · 1646 阅读 · 0 评论 -
一个C++线程池
当一个作业来的时候,能够在线程池中取出一个线程来run这个作业,这在服务器代码中尤其常见。1,为什么要用线程池?一些对象的创建和销毁会很耗用资源,“池化资源”能够尽可能的减少创建和减少销毁对象的次数,其采用的多线程机制也能显著的减少处理器单元的闲置时间。2,线程池的实现线程池主要分为四个组成部分:线程池管理器,工作线程,任务接口和任务队列线程池管理器主要是管理创建线程池和销毁线程池中原创 2013-10-12 16:04:52 · 948 阅读 · 0 评论 -
用eclipse读spark源码
最近没有时间研究IDEA开发环境,相信也有很多人和我一样习惯使用eclipse开发环境,幸好spark源码提供了生成eclipse工程的插件。当然首先你得下载Scala的eclipse插件,对于不同版本的eclipse环境,你要下载的Scala插件也有所不同。具体请参考这里对应你的eclipse版本。然后从spark的主页或者github主页下载spark的源码包(github上是最新的代码)原创 2014-03-27 16:43:19 · 2064 阅读 · 0 评论 -
agent admitted failure to sign using the key 解决方法
在按要求配置好ssh无密码登录之后,还是出现了"agent admitted failure to sign using the key" 的错误。解决方法:ssh-add ~/.ssh/id_rsa用ssh-add命令添加私钥即可解决。原创 2014-03-07 22:20:00 · 1159 阅读 · 0 评论 -
vim编辑器的使用
1,用vim编辑器打开工程: 首先安装project插件,下载(这里是1.4.1版本)。 安装很简单,只需要解压并且将解压的doc和plugin文件放到~/.vim/中即可 现在开始打开一个工程: $vim $:Project $\C Enter the Name of the Entry: myProject原创 2013-10-12 16:04:31 · 992 阅读 · 0 评论 -
redhat上安装clusterssh
没有付费的红帽系统不能执行yum在线安装,比较苦闷,现有一种非常好用的集群软件clusterssh。在红帽上安装然后使用的步骤如下:1,安装:红帽6.3版本上安装一些包,这些包放于我的csdn上面,猛戳这里下载。然后按照依赖关系的顺序安装这几个包。原创 2014-07-28 10:45:10 · 882 阅读 · 0 评论