- 博客(126)
- 资源 (5)
- 收藏
- 关注
原创 Linux学习总结
规则是有顺序的,如果匹配第一个规则,则执行该规则的Action,不会执行后续的规则。Vmware 是一种虚拟机,可以用来安装windows,也可以安装linux ,ubuntu是Linux的发行版之一,另外的Linux发行版有红帽,Linux mint 等等,linux秉承开源性,在嵌入式领域和服务器领域有很多使用实例,包括目前流行的安卓,也使用到了Linux.我们上面的例子指定的类型为ip,除了ip,还可以是网络段,端口号(支持指定TCP/UDP协议),mac地址,网络接口名称,或者上述各种类型的组合。
2023-09-12 13:43:46 331
原创 Socket套接字编程(I/O复用 epoll)
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。目前e...
2019-10-28 15:28:32 306
原创 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:19:01 244
转载 Linux makefile 教程
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一...
2019-07-27 22:59:16 206
原创 HTTP详解
URL 的基本概念我们先来看看浏览网页的基本过程,如果在浏览器地址栏输网址:http://www.baidu.com会发生什么?1. 浏览器通过 DNS 服务器 查找域名对应的 IP 地址。2. 向IP地址对应的Web服务器发送请求。3. Web服务器响应请求,发回 HTML文本页面。4. 浏览器解析HTML内容,并显示出来。我们向浏览器中输入的地址,实际上就是一个url(统一资...
2019-04-22 18:19:31 1516
原创 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 560 1
原创 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 563
原创 线程管理(同步与互斥)
互斥(锁的机制)由于互斥锁,自旋锁,读写锁作用与函数名都类似,所以这里我们只讨论互斥锁。互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。这个互斥锁只有两种状态,也就是上锁和解锁,可以把互斥锁看作某种意义上的全局变量。在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。那...
2018-06-05 14:54:21 239
原创 线程管理(基本概念)
进程与线程程序中的一个执行路线就叫做线程(thread)。线程是“一个进程内部的控制序列”,一个进程中最少有一个线程。进程是资源竞争的基本单位,而线程是程序执行的基本单位,一个进程中的多个线程共享进程数据,但也有自己的数据。进程中线程的共享数据与私有数据...
2018-06-04 19:16:58 4635
原创 IPC进程间通信(信号量)
基本概念信号量是一个计数器,用于为多个进程提供对共享数据对象的访问。信号量和P、V原语操作是由Dijkstra(迪杰斯特拉)所提出的。执行P操作时,将该进程状态设置为等待状态,并把该进程的PCB插入相应的等待队列s.queue末尾;执行V操作时,唤醒相应等待队列s.queue中等待的一个进程 改变其状态为就绪态并将其插入就绪队列。信号量的同步与互斥互斥:P、V操作在同一个进程中同步:P、V操作在不...
2018-05-31 09:58:55 450
原创 IPC进程间通信(共享内存)
基本概念共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 与消息队列管道的物理区别用管道或者消息队列传递数据,内核为每个IPC对象维护一个数据结构用共享内存传递数据共享内存函数struct shmid_ds {struct ipc_perm shm_perm; /* O...
2018-05-30 17:05:15 1139
原创 IPC进程间通信(管道)
基本概念管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”。其本质是内核中固定大小的缓冲区。管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。匿名管道pipe#include <unistd.h>int pipe(int pipefd[2]);返回值:成功返回0,失败返回错误代码管道只能用于具有共同祖先的进...
2018-05-30 16:21:05 1483
原创 IPC进程间通信(消息队列)
基本概念消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法。每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列与管道同样有缺陷,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)。IPC数据结构struct msqid_ds {struct ipc_per...
2018-05-29 19:13:00 1671
原创 IPC进程间通信(概念简介)
进程间通信发展Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内;后者则跳过了该限制,形成了基...
2018-05-28 18:32:26 712
原创 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 672
原创 Socket套接字编程(I/O模型)
阻塞I/O当上层应用调用recv系统调用时,如果对方没有发送数据(缓冲区没有数据),上层应用将被Linux内核阻塞(默认行为)。当对方发送了数据,linux内核套接字缓冲区有数据后,内核会把数据copy给用户空间。然后上层应用解除阻塞,执行下一步操作。非阻塞I/O上层应用程序将套接字设置成非阻塞模式。轮询调用recv函数来接收数据。若缓冲区没有数据,上层应用程序不会阻塞,recv返回值为-1,错误...
2018-05-22 16:34:42 1120
原创 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 1356
原创 Socket套接字编程(TCP并发服务器模型)
并发编程典型框架服务器阻塞于accept函数调用,当客户端申请连接请求时客户端与服务器的状态从accept函数返回后,新的连接被内核接受,创建新的connfd套接字通过fork父进程可以创建子进程,让其代替自己完成读写数据操作此时listenfd与connfd被父子进程所共享,接下来父进程关闭连接套接字只负责监听,但父进程可再次调用accept函数准备处理下一个客户端连接请求,而子进程关闭监听套接...
2018-05-20 20:06:50 1486
原创 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 2163
原创 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 900
原创 信号(高级用法 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 483
原创 信号(阻塞未达 信号集)
信号的阻塞未达信号在操作系统内核的传递过程中,执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。(注:阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。)信号在内核中的表示如图:PCB...
2018-05-17 11:48:30 218
原创 信号(分类 发送)
信号分类(不可靠信号/可靠信号)linux信号机制基本上是从unix系统中继承过来的。早期unix系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是:进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。早期unix下的不可靠信号主要指的...
2018-05-16 22:47:15 409
原创 信号(基本概念 signal函数)
基本概念信号是软件类型的中断,但不是中断,中断是指由外部设备通过硬件请求的方式产生的中断,信号是是由CPU运行程序错误或执行内部程序调用对于异步事件的响应。信号与中断的区别相同点:(1)采用了相同的异步通信方式;(2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;(3)都在处理完毕后返回到原来的断点;(4)对信号或中断都可进行屏蔽。不同点:(1)中断有优先级,而信号没有...
2018-05-16 21:02:47 6025
原创 进程管理(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 502
原创 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 698
原创 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 256
原创 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 1744
原创 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 555
原创 HadoopMapReduce数据去重
package com.shuffle;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.*;public class ShuffleMapper extends Mapper
2018-04-24 17:35:48 417
原创 HadoopMapReduceWordcount示例程序
package com.wordcount;import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;public class wordreducer ex...
2018-04-02 16:04:52 176
原创 上传到HDFS文件系统中,往该文本文件写入姓名,再将其读出打印
package com.upload;import java.io.ByteArrayInputStream;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FS...
2018-04-02 15:38:29 366
原创 matplotlib函数库使用Axes3D绘制3D图形
#coding=utf-8import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig=plt.figure()ax=Axes3D(fig)x=np.arange(-5,5,0.25)y=np.arange(-5,5,0.25)x,y=np.meshgrid(x
2017-11-05 19:15:43 16357 2
原创 matplotlib函数库使用imshow绘制像素图片
#coding=utf-8import numpy as npimport matplotlib.pyplot as pltarr=np.random.rand(3,3)plt.imshow(arr,interpolation='nearest',cmap='bone',origin='lower')#根据像素绘制图片 origin表示渐变程度plt.colorbar()#显示像素与
2017-11-05 18:40:55 6425
原创 matplotlib函数库使用contour绘制等高线图形
#coding=utf-8import numpy as npimport matplotlib.pyplot as pltdef height(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)x=np.linspace(-3,3,300)y=np.linspace(-3,3,300)X,Y=np.meshgrid(x,y)p
2017-11-05 18:01:22 15235 4
原创 matplotlib函数库使用bar绘制柱状图
#coding=utf-8import numpy as npimport matplotlib.pyplot as pltx=np.arange(10)y1=(1-x/float(10))*np.random.uniform(0.5,1,10)y2=(1-x/float(10))*np.random.uniform(0.5,1,10)plt.bar(x,y1,facecolor='#
2017-11-05 17:33:40 4360
原创 matplotlib函数库使用scatter绘制散点图
#coding=utf-8import numpy as npimport matplotlib.pyplot as pltn=1000x=np.random.normal(0,1,n)y=np.random.normal(0,1,n)t=np.arctan2(y,x)plt.scatter(x,y,s=75,c=t,alpha=0.7)#使用scatter存放x,y数据,表示大小
2017-11-05 17:09:11 686
原创 matplotlib函数库使用plot绘制线状图
#coding=utf-8import matplotlib.pyplot as pltimport numpy as npx=np.linspace(0,1,50)y1=2*x+1y2=x**2plt.figure(num=1)#获取图片并命名plt.plot(x,y1,color='blue',linewidth=1.0,linestyle='--',label='blue')
2017-11-05 16:58:27 1653
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人