4 hawkeye丶

尚未进行身份认证

暂无相关简介

等级
TA的排名 4w+

Socket套接字编程(I/O复用 epoll)

epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。目前e...

2019-10-28 15:19:36

Socket套接字编程(I/O复用 poll)

#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { int fd; /* 文件描述符 */ short events; /* 监控的事件 */ short revents; /* 监控事件中满足条件返回的事件 */ }; POLLIN ...

2019-10-28 15:16:22

Linux makefile 教程

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一...

2019-07-27 22:59:16

HTTP详解

URL 的基本概念我们先来看看浏览网页的基本过程,如果在浏览器地址栏输网址:http://www.baidu.com会发生什么?1. 浏览器通过 DNS 服务器 查找域名对应的 IP 地址。2. 向IP地址对应的Web服务器发送请求。3. Web服务器响应请求,发回 HTML文本页面。4. 浏览器解析HTML内容,并显示出来。我们向浏览器中输入的地址,实际上就是一个url(统一资...

2019-04-22 18:19:31

HadoopMapReduce寻找共同好友

假设有所有用户的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的),如果两个用户之间存在共同好友,需要找出他们之间的共同好友。样例文本如下:A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C...

2018-07-04 22:30:27

HbaseAPI编程示例

package com.HbaseJDBC;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import java.io.IOException;public class hbase { public...

2018-07-02 10:30:42

线程管理(同步与互斥)

互斥(锁的机制)由于互斥锁,自旋锁,读写锁作用与函数名都类似,所以这里我们只讨论互斥锁。互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。这个互斥锁只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。那...

2018-06-05 14:54:21

线程管理(基本概念)

进程与线程程序中的一个执行路线就叫做线程(thread)。线程是“一个进程内部的控制序列”,一个进程中最少有一个线程。进程是资源竞争的基本单位,而线程是程序执行的基本单位,一个进程中的多个线程共享进程数据,但也有自己的数据。进程中线程的共享数据与私有数据...

2018-06-04 19:16:58

IPC进程间通信(信号量)

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

2018-05-31 09:58:55

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

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

2018-05-30 17:05:15

IPC进程间通信(管道)

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

2018-05-30 16:21:05

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

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

2018-05-29 19:13:00

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

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

2018-05-28 18:32:26

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

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

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

2018-05-23 14:17:57

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

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

2018-05-22 16:34:42

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

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

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

2018-05-20 20:06:50

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

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

2018-05-20 17:33:05

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

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。