自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cyber

勿在浮沙筑高台

  • 博客(22)
  • 资源 (5)
  • 收藏
  • 关注

原创 IPC进程间通信(信号量)

基本概念信号量是一个计数器,用于为多个进程提供对共享数据对象的访问。信号量和P、V原语操作是由Dijkstra(迪杰斯特拉)所提出的。执行P操作时,将该进程状态设置为等待状态,并把该进程的PCB插入相应的等待队列s.queue末尾;执行V操作时,唤醒相应等待队列s.queue中等待的一个进程 改变其状态为就绪态并将其插入就绪队列。信号量的同步与互斥互斥:P、V操作在同一个进程中同步:P、V操作在不...

2018-05-31 09:58:55 437

原创 IPC进程间通信(共享内存)

基本概念共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 与消息队列管道的物理区别用管道或者消息队列传递数据,内核为每个IPC对象维护一个数据结构用共享内存传递数据共享内存函数struct shmid_ds {struct ipc_perm shm_perm; /* O...

2018-05-30 17:05:15 1131

原创 IPC进程间通信(管道)

基本概念管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。其本质是内核中固定大小的缓冲区。管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。匿名管道pipe#include <unistd.h>int pipe(int pipefd[2]);返回值:成功返回0,失败返回错误代码管道只能用于具有共同祖先的进...

2018-05-30 16:21:05 1467

原创 IPC进程间通信(消息队列)

基本概念消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法。每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列与管道同样有缺陷,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)。IPC数据结构struct msqid_ds {struct ipc_per...

2018-05-29 19:13:00 1663

原创 IPC进程间通信(概念简介)

进程间通信发展Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内;后者则跳过了该限制,形成了基...

2018-05-28 18:32:26 700

原创 Socket套接字编程(I/O复用 select)

select函数/* According to POSIX.1-2001 */#include <sys/select.h>/* According to earlier standards */#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select...

2018-05-23 19:49:32 660

原创 Socket套接字编程(TCP有限状态机 粘包)

三次握手四次断开四次断开特殊情况(同时关闭)有限状态转换

2018-05-23 14:17:57 687

原创 Socket套接字编程(I/O模型)

阻塞I/O当上层应用调用recv系统调用时,如果对方没有发送数据(缓冲区没有数据),上层应用将被Linux内核阻塞(默认行为)。当对方发送了数据,linux内核套接字缓冲区有数据后,内核会把数据copy给用户空间。然后上层应用解除阻塞,执行下一步操作。非阻塞I/O上层应用程序将套接字设置成非阻塞模式。轮询调用recv函数来接收数据。若缓冲区没有数据,上层应用程序不会阻塞,recv返回值为-1,错误...

2018-05-22 16:34:42 1110

原创 Socket套接字编程(TCP编程异常处理)

在运行TCP并发服务器端代码时发现客户端退出时服务器端子进程产生了僵尸进程服务器端避免僵尸进程的方法通过忽略SIGCHLD信号,解决僵尸进程signal(SIGCHLD, SIG_IGN)。通过wait方法,解决僵尸进程signal(SIGCHLD, handle_sigchld);wait(NULL)。通过waitpid方法,解决僵尸进程signal(SIGCHLD, handle_sigchl...

2018-05-21 20:44:27 1345

原创 Socket套接字编程(TCP并发服务器模型)

并发编程典型框架服务器阻塞于accept函数调用,当客户端申请连接请求时客户端与服务器的状态从accept函数返回后,新的连接被内核接受,创建新的connfd套接字通过fork父进程可以创建子进程,让其代替自己完成读写数据操作此时listenfd与connfd被父子进程所共享,接下来父进程关闭连接套接字只负责监听,但父进程可再次调用accept函数准备处理下一个客户端连接请求,而子进程关闭监听套接...

2018-05-20 20:06:50 1473

原创 Socket套接字编程(TCP基本编程)

Socket函数#include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);创建一个套接字用于通信。domain :指定通信协议族(protocolfamily)type:指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOC...

2018-05-20 17:33:05 2152

原创 Socket套接字编程(基本概念介绍)

关于Socketsocket是用户进程与内核网络协议栈的编程接口。可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。IPv4套接口地址结构struct sockaddr_in {sa_family_t sin_family; /* address family: AF_INET */in_port_t sin_port; /* port in network ...

2018-05-20 15:05:37 880

原创 信号(高级用法 sigaction sigqueue)

sigaction信号处理函数#include <signal.h>int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);struct sigaction {void (*sa_handler)(int);void (*sa_sigaction)(int...

2018-05-17 13:39:19 470

原创 信号(阻塞未达 信号集)

信号的阻塞未达信号在操作系统内核的传递过程中,执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。(注:阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。)信号在内核中的表示如图:PCB...

2018-05-17 11:48:30 208

原创 信号(分类 发送)

信号分类(不可靠信号/可靠信号)linux信号机制基本上是从unix系统中继承过来的。早期unix系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是:进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。早期unix下的不可靠信号主要指的...

2018-05-16 22:47:15 399

原创 信号(基本概念 signal函数)

基本概念信号是软件类型的中断,但不是中断,中断是指由外部设备通过硬件请求的方式产生的中断,信号是是由CPU运行程序错误或执行内部程序调用对于异步事件的响应。信号与中断的区别相同点:(1)采用了相同的异步通信方式;(2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;(3)都在处理完毕后返回到原来的断点;(4)对信号或中断都可进行屏蔽。不同点:(1)中断有优先级,而信号没有...

2018-05-16 21:02:47 5990

原创 进程管理(vfork exec函数族 wait/waitpid)

fork与vfork的区别(1)fork子进程拷贝父进程的数据段,vfork子进程与父进程共享数据段。(2)fork父、子进程的执行次序不确定,vfork子进程先运行,父进程后运行。(3)vfork有限制,子进程必须立刻执行_exit或者exec函数。进程终止的方式exec函数族wait/waitpid...

2018-05-16 15:18:33 492

原创 进程管理(fork)

fork典型应用场景

2018-05-16 13:24:06 504

原创 HadoopMapReduce倒排索引

package com.IverseIndex;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce...

2018-05-14 20:09:54 688

原创 HadoopMapReduce单表关联

package com.singlejoin;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce....

2018-05-14 16:59:56 250

原创 HadoopMapReduce求平均成绩

package com.averscore;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoo...

2018-05-14 11:06:33 1738

原创 HadoopMapReduce数据排序

package com.sort;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.mapreduce.Job;import org.apache.hado...

2018-05-14 11:04:54 544

taxi数据分析可视化

基于Hadoop的曼哈顿出租车租赁公司数据分析可视化,HDFS+Echart+mapreduce+sqoop

2019-02-21

高并发服务器api

通过C/C++高并发服务器api,涵盖线程,进程管理,信号量,消息队列等api,可通过不同业务需求,编写服务器框架。

2018-08-27

Hadoop实战

《Hadoop实战》

2018-07-01

Hadoop技术内幕-深入解析HADOOP COMMON和HDFS架构设计与实现原理

Hadoop技术内幕-深入解析HADOOP COMMON和HDFS架构设计与实现原理

2018-07-01

Hadoop Spark大数据巨量分析与机器学习整合开发实战

手把手教你学习Hadoop + Spark免费赠送范例程序下载 提供微博交流学习及技术支持

2018-06-29

空空如也

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

TA关注的人

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