server.cpp #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/epoll.h> #include<netinet/in.h> #include<arpa/inet.h> #include<assert.h> #include<unistd.h> #include<errno.h> #include<string.h> #include<fcntl.h> #include<stdlib.h> #include<sys/epoll.h> #define MAX_EVENT_NUMBER 1024 #define TCP_BUFFER_SIZE 512 #define UDP_BUFFER_SIZE 1024 int setnonblock 继续阅读 >>


李佳灏 18/03/15 21:53:26
代理服务器的设置 有时使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。那么怎么解决这个问题呢? 解决的方法很简单,就是使用代理服务器。 使用代理服务器去爬取某个网站的内容的时候,在对方的网站上,显示的不是我们真实的IP地址,而是代理服务器的IP地址。并且在Python爬虫中,使用代理服务器设置起来也很简单。 给大家推荐一个网址,http://www.xicidaili.com/,这上面有免费的代理Ip。 选择好代理ip地址后,我们就可以进行相应的程序编写了,可以使用以下程序,实现通过代理服务器来爬取网站内容。 def use_proxy(proxy_addr,url): import urllib.request proxy=urllib.request.ProxyHandler({'http':proxy_addr}) opener=urllib.request.build_opener(proxy,urllib.request.HTTPH 继续阅读 >>


冯鑫 17/08/17 20:20:58
一、信号概述 1.发送信号 【1】 #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); 该函数将信号sig发送给目标进程;目标进程由pid指定,可能取值如下: pid参数 含义 pid>0 信号发送给PID为pid 的进程。 pid=0 信号发送给本进程组内的其他进程 pid = -1 信号发送给除init进程外的所有进程,但发送者需要拥有对目标进程发送信号的权限 pid < -1 信号发送给组ID为-pid的进程组中的所有成员 【2】 linux定义的信号值均大于0,如果sig取值为0则kill函数不发送任何信号。将sig值设为0时,可用来检测目标进程或进程组是否存在,因为检查在信号发送之前执行。但是这种检测方式是不可靠的,因为一方面由于进程PID的回绕,可能导致被检测到的pi 继续阅读 >>


闫钰晨 17/08/07 16:57:00
前言 本篇心路历程太多,放在最后了。 正文 在云服务器(阿里云、腾讯云)上部署Zookeeper集群模式时,无法成功的原因有很多,网上主要提到了端口被占用(未开放)和防火墙开启两种问题,类似的博客很多,本文不再赘述。 如果你已经针对上述两种情况做了修改依然没有成功,那么就可能出现了本篇的问题。 Zookeeper在启动时,并不会打印信息,即使集群启动失败,依然会显示: 这样我们看不到日志信息,无法判断出现的问题,通过 # zkServer.sh start-foreground 可以看到Zookeeper启动时的信息。 每次Zookeeper启动时信息很多,一定翻到最上面要从第一条开始看。 如果有这条错误消息 2017-08-05 09:27:32,253 [myid:1] - ERROR [/xxx.xx.xxx.xxx(你的IP):3888:QuorumCnxManager$Listener@763] - Exception while listening java.net.BindException: 无法指定被请求的地址 继续阅读 >>


康艺杰 17/08/05 10:06:20
一、select系统调用 1.selectAPI 原型: #include<sys/select.h> int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,struct timeval* timeout) 【1】nfds参数指定被监听的文件描述符的总数。 【2】readfds,writefds,exceptfds分别指向可读,可写和异常等事件对应的文件描述符集合。通过这三个参数传入自己感兴趣的文件描述符;select调用返回时,内核将修改它们来通知应用程序哪些文件描述符已经就绪。三个参数都是fd_set结构指针类型: #include <typesizes.h> #define __FD_SETSIZE 1024 #include <sys/select.h> #define FD_SETSIZE __FD_SETSIZE typedef long int __fd 继续阅读 >>


闫钰晨 17/08/04 15:11:45
有时候会想把github上的文件删除,但是本地仓库里的文件想保留下来该怎么办,只要用三条命令就能完成了 git rm --cached filename/-r directory git commit "xxxx" git push 1.删除github文件,本地保留 git rm --cached test.txt git commit -m "delete file" git push 此时github上已经不存在了 2.删除远程code 文件夹,本地保留 一定要注意,删除文件夹要使用-r 参数 git rm --cached -r code git commit -m "delete directory" git push 作者:FallingU 发表于 2017/08/03 21:47:42 原文链接 https://blog.csdn.net/FallingU/article/deta 继续阅读 >>


李东林 17/08/03 21:47:42
并发模式是指I/O处理单元和多个逻辑单元之间协调完成任务的方法 1、半同步/半异步模式 1.1半同步/半异步模式 【1】同步:程序完全按照代码顺序执行;异步:程序的执行需要由系统事件来驱动。常见的系统事件包括中断,信号等。 【2】同步线程:按照同步方式运行的线程;异步线程:按照异步方式运行的线程。 异步线程执行效率高,实时性强,但是程序相对负责,难以调试和扩展,不适合于大量的并发。 同步线程效率相对较低,实时性较差,但逻辑简单。 像服务器这种既要求较好的实时性,又要能同时处理多个客户请求的应用程序,就要同时使用同步线程和异步线程来实现,即半同步/半异步模式。 【3】半同步/半异步模式中,同步线程用于处理客户逻辑,即逻辑单元;异步线程用于处理I/O事件,即I/O处理单元。 异步线程监听到客户请求之后,就将其封装成请求对象插入请求队列,请求队列通知某个工作在同步模式的工作线程来读取并处理该请求对象。具体选择哪个工作线程取决于请求队列的设计 【4】半同步/半 继续阅读 >>


闫钰晨 17/07/29 15:58:01
1、服务器模型 1.1C/S模型 【1】C/S(客户端/服务器)模型:所有客户端都通过访问服务器来获取所需的资源 【2】C/S模型逻辑:服务器启动后,先创建一个或者多个监听socket,并调用bind函数将其绑定到服务器的端口上,然后调用listen函数等待客户连接。服务器稳定运行后,客户端就可以调用connect函数向服务器发起连接。由于客户连接请求时随机到达的异步事件,服务器需要使用某种I/O模型来监听这一事件,(图中使用的是I/O复用技术之一的select系统调用),当监听到连接请求后,服务器就调用accept函数接受它了,并且分配一个逻辑单元为新的连接服务。逻辑单元读取客户请求,处理该请求,然后将结果反馈给客户端 【3】C/S模型适合资源相对集中的场合,但是服务器是通信的中心,当访问量过大时,可能所有客户都将得到很慢的响应。 2.1P2P模型 【1】P2P模型不在是以服务器为中心的格局,它使得每台机器在消耗服务的同时也给别人提供服务,这样资源能充分、自由的分享。 【2】问题 继续阅读 >>


闫钰晨 17/07/28 10:00:25
1.HTTP代理服务器的工作原理 在HTTP通信链上,客户端和目标服务器之间通常存在某些中转代理服务器,它们提供对目标资源的中转访问。一个HTTP请求可能被多个代理服务器转发,后面的服务器称为前面服务器的上游服务器。代理服务器按照其使用方式和作用,分为正向代理服务器、反向代理服务器、透明代理服务器。 正向代理服务器:要求客户端自己设置代理服务器的地址。客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源。比如处于防火墙内的局域网机器要访问Internet,或者要访问一些被屏蔽掉的国外网站,就需要使用正向代理服务器。 反向代理服务器:被设置在服务器端,因而客户端无须进行任何设置。反向代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。在这种情况下,代理服务器对外就表现为一个真实的服务器。 透明代理:只能设置在网关上。用户访问Internet的数据报必然都经过网关,如果在网关上设置代理,则该代理对用户来说 继续阅读 >>


闫钰晨 17/07/26 21:25:03
文章转自:http://blog.csdn.net/whoamiyang/article/details/50860709 FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。听起来好像很高上的样子,所以,我今天也在自己的服务器上搭了一个ftp服务器玩玩,现在,分享一下经验哦! 一. 查看是否安装vsftpd: rpm -qa | grep vsftpd 如果已经安装过了,则会提示vsftpd的版本.如果没有安装则什么都不会提示. [yang@yang ~]$ rpm -qa | grep vsftpd vsftpd-2.2.2-14.el6.i686 二.安装 (如果上一步没有任何提示,则证明没有安装v 继续阅读 >>


王一妃 17/07/25 13:15:15