自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

#维多利亚的秘密#

思念着你的人所在的地方就是你的归处。。。

  • 博客(91)
  • 资源 (1)
  • 收藏
  • 关注

转载 首款用Cubieboard搭建起的Spark/Hadoop ARM集群

在大数据时代,我们熟知的Splunk作为数据处理引擎,能有效提供大块数据分析及解决方案,是常用的开发分布式程序的分析工具,Splunk Web还能快速实现对搜索结果深入分析的功能。        ARM CPU设计之初,并没有瞄准大数据处理方向,但随着快速地架构优化和升级,目前看来已经非常接近或完全达到实现大数据处理的能力。在这个推进过程中,许多人一直试图在ARM集群之上运行 Ap

2014-07-31 13:59:44 1686

转载 搭建hadoop集群环境

搭建hadoop集群环境    本文通过在vmware workstation上建立三台虚拟机来搭建hadoop集群环境,其中一台作为namenode,两台作为datanode。一、安装vmware workstation(10.0.0)(一路下一步即可)二、创建3个虚拟机    每个虚拟机安装Ubuntu 桌面版(我用的11.10,但是有点老了,建议用12.04或

2014-07-31 13:31:59 494

转载 Nodejs开发框架Express3.0开发手记–从零开始

前言Nodejs给Javascript赋予了服务端应用的生命,Jquery让Javascript成为浏览中开发的利器。 最近学习了Nodejs的Express3.0的开发框架,本来是按照“node.js开发指南”书中介绍,但“node.js开发指南”讲的是Express2.x的,从Express2.x到Express3.0自己模索中还是走了不少弯路的。写篇文章总结一下。关于作者

2014-07-31 10:45:27 509

转载 Mongoose使用案例–让JSON数据直接入库MongoDB

为什么用Nodejs?为什么用MongoDB?从领域语言和代码简洁之道来看,这是我非常关心的问题。Nodejs基于Javascript,MongoDB脚步同样也是基于Javascript。而且他们的数据存储格式都是JSON,这就是为什么要把他们放在一起的原因了。如果程序前后端能直接处理JSON,我想数据处理过程又可以极大的减化了,代码量又将低少1/5。多么的兴奋啊!让我们来动手验证一下想法

2014-07-31 10:42:50 739

转载 开源C/C++网络库比较

在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。支持跨平台。Boost的ASIO是一个异步IO库,

2014-07-25 13:12:11 407

转载 LDO的选用技术

LDO的种类     LDO是新一代的集成电路稳压器,它与三端稳压器最大的不同点在于,LDO是一个自耗很低的微型片上系统(SoC)。  LDO按其静态耗流来分,分为OmniPowerTM  / MicroPowerTM / NanoPowerTM三种产品。   OmniPowerTM  LDO的静态电流在100mA-1mA,是一种静态电流稍大但性能优于三端稳压器的新

2014-07-24 10:23:54 714

转载 开关电源中光耦的作用

在一般的隔离电源中,光耦隔离反馈是一种简单、低成本的方式。但对于光耦反馈的各种连接方式及其区别,目前尚未见到比较深入的研究。而且在很多场合下,由于对光耦的工作原理理解不够深入,光耦接法混乱,往往导致电路不能正常工作。本研究将详细分析光耦工作原理,并针对光耦反馈的几种典型接法加以对比研究。1 常见的几种连接方式及其工作原理    常用于反馈的光耦型号有TLP521、PC817等。这里

2014-07-20 23:04:14 2062

转载 select(poll)系统调用实现解析(三)

三、讨论几个细节      3.1、fop->poll()       fop->poll()函数就是file_operations结构体中的poll函数指针项,该函数相信很多人都知道怎么写,网上大把的文章介绍其模板,但是为什么要那么写,而且它做了什么具体的事情?本小节来揭开其神秘面纱,先贴一个模板上来。       static unsigned int XXX_poll(str

2014-07-17 16:25:33 455

转载 select(poll)系统调用实现解析(二)

二、重要结构体之间关系       比较重要的结构体由四个:struct poll_wqueues、struct poll_table_page、struct poll_table_entry、struct poll_table_struct,这小节重点讨论前三个,后面一个留到后面小节。      2.1、结构体关系每一个调用select()系统调用的应用进程都会存在一个struc

2014-07-17 16:25:01 434

转载 select(poll)分析背景

我们编写驱动程序的时候,通常需要告诉上层应用程序设备的状态:是否可读写。  应用程序可以直接通过read/write系统调用(阻塞和非阻塞模式)进入内核态驱动程序,那么驱动程序的read/write至少需要支持阻塞和非阻塞模式的读写:  上层阻塞模式调用read时,如果设备驱动的read_buffer中没有数据可以供上层读取,就让该进程睡眠(阻塞)直到有数据才被唤醒,然后取到数据返回用户态

2014-07-17 16:23:03 387

转载 select(poll)系统调用实现解析(一)

上层要能使用select()和poll()系统调用来监测某个设备文件描述符,那么就必须实现这个设备驱动程序中struct file_operation结构体的poll函数,为什么?因为这两个系统调用最终都会调用驱动程序中的poll函数来初始化一个等待队列项, 然后将其加入到驱动程序中的等待队列头,这样就可以在硬件可读写的时候wake up这个等待队列头,然后等待(可以是多个)同一个硬件设备可读

2014-07-17 16:22:00 531

转载 select(poll)在应用程序中如何使用

select()和poll()系统调用的本质一样,前者在BSD UNIX中引入的,后者在System V中引入的。 一、select应用程序中最广泛用到的是BSD UNIX中引入的select()系统调用,其原型如下:int select(int maxfdp, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct

2014-07-17 16:21:07 367

转载 poll和select的使用和差异

使用非阻塞I/O 的应用程序常常使用poll, select。poll和select本质上有相同的功能:每个允许一个进程来决定它是否可读或者写一个或多个文件而不阻塞。这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来读或写。因此,它们常常用在必须使用多输入输出流的应用程序,而不必粘连在它们任何一个上. 相同的功能常常由多个函数提供,因为2 个是由不同的团队在几乎相同时间完成的:select

2014-07-17 16:20:46 410

转载 select poll使用

select poll使用  2.1. 如何管理多个连接?“我想同时监控一个以上的文件描述符(fd)/连接(connection)/流(stream),应该怎么办?” 使用 select() 或 poll() 函数。 注 意:select() 在BSD中被引入,而poll()是SysV STREAM流控制的产物。因

2014-07-17 16:20:09 368

转载 select, poll和epoll的区别

随着2.6内核对epoll的完全支持,网络上很多的文章和示例代码都提供了这样一个信息:使用epoll代替传统的poll能给网络服务应用带来性能上的提升。但大多文章里关于性能提升的原因解释的较少,这里我将试分析一下内核(2.6.21.1)代码中poll与epoll的工作原理,然后再通过一些测试数据来对比具体效果。       POLL:       先说poll,poll或selec

2014-07-17 16:19:37 472

转载 select、poll、epoll的比较

linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int poll(struct po

2014-07-17 16:18:58 380

转载 Linux下C多线程编程初学

抄袭的第一个Linux下C多线程并发的程序,要用到pthread.h头文件~这还不算完,记得编译时要用-lpthread来链接libpthread.a原理很简单,利用sleep(1)隔一秒打印一次,两个线程分别打印"hello"和"world!\n"虽然写的睡一秒,但是这两个打印并不是均匀的交叉。里边用到很多现成的线程的接口,pthread_create还有pthread_join

2014-07-17 16:15:43 473

转载 Linux下多线程编程1

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪

2014-07-17 16:14:50 358

转载 Linux系统下的多线程编程入门

线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有

2014-07-17 16:13:23 425

转载 linux下C语言多线程编程

#include #include #include #include string.h>#define MAX 10pthread_t thread[2];pthread_mutex_t mut;int number=0, i;void *thread1(){ printf ("thread1 : I'm thread 1\n"); for (i

2014-07-17 16:13:08 411

转载 Linux下多线程编程简单示例

最近尝试下Linux下使用多线程开发程序,在百度文库中找到了一段比较好的范例,介绍的很全面,拿出来和大家分享。        Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clon

2014-07-17 16:11:31 428

转载 【Linux开发】Linux下的多线程编程

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/本文作者: 姚继锋 (2001-08-11 09:05:00) 黄鹏程(2009-03-13) converse (2009-01-15) 1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的 Unix

2014-07-17 16:10:07 356

转载 TCP非阻塞accept和非阻塞connect

非阻塞accept    当一个已完成的连接准备好被accept的时候,select会把监听socket标记为可读。因此,如果用select等待外来的连接时,应该不需要把监听socket设置为非阻塞模式,因为如果select告诉我们连接已经就绪,accept就不应该被阻塞。不过这样做的时候有一个BUG:当客户端在跟服务器建立连接之后发送了一个RST包,这个时候accept就会阻塞,直到有下

2014-07-17 16:08:05 795

转载 socket阻塞和非阻塞的区别

简单点说:阻塞就是干不完不准回来,   非组赛就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧... 比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你C

2014-07-17 16:03:54 413

转载 TCP速率与窗口,带宽,RTT之间的关系

以下部分内容是自己的理解,可能会有差错,如有发现,欢迎指正。窗口:TCP是一个滑动窗口协议,即一个TCP连接的发送端在某个时刻能发多少数据是由滑动窗口控制的,而滑动窗口的大小实际上是由两个窗口共同决定的,一个是接收端的通告窗口,这个窗口值在TCP协议头部信息中有,会随着数据的ACK包发送给发送端,这个值表示的是在接收端的TCP协议缓存中还有多少剩余空间,发送端必须保证发送的数据不超

2014-07-17 15:35:51 1029

转载 c 线程的取消和终止

上次说了如何去创建一个线程及如何向线程中传递一个参数那么这次我们说一下如何终止一个线程。如进程中调用exit,_exit使进程结束一样,线程也可以通过类似的方法结束。一、线程的执行体结束线程自然结束。二、可以通过调用pthread_exit使程序结束。pthread_exit 的原型为:     void pthread_exit(void *value_p

2014-07-17 15:35:01 888

转载 多线程还是多进程的选择及区别

鱼还是熊掌:浅谈多进程多线程的选择关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有

2014-07-17 15:32:12 485

转载 多进程和多线程的比较

1、首先要明确进程和线程的含义:进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。进程是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集

2014-07-17 15:31:15 493

转载 多线程和多进程的区别(小结)

很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()

2014-07-17 15:31:14 435

转载 C语言中的函数指针学习讲解

函数在内存中有一个物理位置,而这个位置是可以赋给一个指针的。一零点函数的地址就是该函数的入口点。因此,函数指针可被用来调用一个函数。函数的地址是用不带任何括号或参数的函数名来得到的。(这很类似于数组地址的得到方法,即,在只有数组名而无下标是就得到数组地址。)1.怎样说明一个函数指针变量呢?  为了说明一个变量fn_pointer的类型是"返回值为int的函数指针",你可以使用下面的

2014-07-17 15:23:20 463

转载 C中函数指针的作用

项目中用到了很多封装在struct中的函数指针,以前在MFC里面经常用到则个作为回调函数,还以为是微软设计的特色呢。在网上查了一下它的用法,做个总结。 1)提供调用的灵活性。设计好了一个函数框架,但是设计初期并不知道自己的函数会被如何使用。比如C的”stdlib”中声明的qsort函数,用来对数值进行排序。显然,顺序还是降序,元素谁大谁小这些问题,库程序员在编写qsort的时候不可能决定。

2014-07-17 15:14:31 691

转载 C语言中函数指针的例子

// zhizhen.cpp : 定义控制台应用程序的入口点。/*    函数指针的例子    061105*/#include stdio.h>#include stdlib.h>typedef int (*FUN)(int a ,int b);        //函数指针类型,功能和下面main方法中的函数指针一样int compare(cons

2014-07-17 15:12:30 556

转载 探讨C语言中的回调函数

回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给 调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不 同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同 的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()...等 等。这是我们想用一个统一的显示函数,我

2014-07-17 15:10:17 464

转载 C语言中的回调函数实例

在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同时声明指针型的多个对象。比如:复制代码 代码如下:char *pa,pb;//pa是一个char型指针,但pb是一个char型字符。我们可以这样来实现typedef char* PCHAR;PCHAR pa,pb;//pa和pb都是char型指

2014-07-17 15:08:53 493

转载 C语言中的回调函数实例

在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同时声明指针型的多个对象。比如:复制代码 代码如下:char *pa,pb;//pa是一个char型指针,但pb是一个char型字符。我们可以这样来实现typedef char* PCHAR;PCHAR pa,pb;//pa和pb都是char型指

2014-07-17 14:08:32 522

转载 C语言中的回调函数

C语言中通过函数指针实现回调函数(Callback Function)====== 首先使用typedef定义回调函数类型 ====== [cpp] view plaincopyprint?typedef void (*event_cb_t)(const struct event *evt, void *userdata)

2014-07-17 14:06:13 724

转载 pthread_cond_signal

pthread_cond_signal函数的作用是发送一个信号给另外一个正在处于阻塞等待状态的线程,使其脱离阻塞状态,继续执行.如果没有线程处在阻塞等待状态,pthread_cond_signal也会成功返回。但使用pthread_cond_signal不会有“惊群现象”产生,他最多只给一个线程发信号。假如有多个线程正在阻塞等待着这个条件变量的话,那么是根据各等待线程优先级的高低确定哪个线

2014-07-17 13:17:38 450

转载 pthread_cond_wait

条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。中文名多线程的条件变量外文名pthread_cond_wait动作一条件变量的条件成立

2014-07-17 13:16:59 524

转载 Pthread

POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。中文名POSIX线程外文名POS

2014-07-17 13:12:59 386

转载 linux 线程挂起恢复的简单示例

写了个demo:[cpp] view plaincopyprint?#include   #include     static pthread_mutex_t mutex;  static pthread_cond_t cond;  static int flag = 0;    void srpthread_init(

2014-07-17 11:39:47 900

Z shell利剑

Z shell 是一种新的shell

2012-09-04

空空如也

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

TA关注的人

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