计算机网络
_charming_Man_
这个作者很懒,什么都没留下…
展开
-
统计一小时内的ip访问topk问题
利用时序数据库的思想,一小时为3600秒,每一秒由一个hashmap进行标记,然后够一个小时后对这些数据进行聚合;找出topk的ip原创 2020-11-09 16:52:45 · 277 阅读 · 0 评论 -
linux高性能服务器编程第十三章(多进程编程)
fork()的使用复制与原进程栈堆指针和寄存器值相同的,PPID,信号位图不同的子进程;调用成功返回两次,成功的情况第一次是返回0,第二次返回子进程的pidexec系统调用子系统中,调用其他程序,替换掉当前的进程映像,可以使用exec函数;#include <unistd.h>int execl(const char* path , const char * arg ,...);处理僵尸程序僵尸程序出现的两种原因是(1)在子进程结束前,父进程读取他的退出状态.原创 2020-06-08 18:11:02 · 192 阅读 · 0 评论 -
linux高性能编程第十二章(高性能框架libevent)
使用reactor的模式,reactor包括reactor、句柄集、多路事件分发器、事件处理器和具体事件处理器event_base,相当于reactor,有注册事件、取消事件、注册句柄的功能多路事件分发器是一个I/O复用模型事件处理器是处理事件的虚函数接口,具体事件处理器是这些虚函数的具体实现,不过在libevent中处理器为大量的回调函数一个简单的hello word的程序:#include <string.h>#include <errno.h>#incl.原创 2020-06-08 15:26:32 · 89 阅读 · 0 评论 -
linx高性能服务器编程第十一章(定时器)
基于socket选项SO_RCVTIMEOSO_SNDTIMEO基于SIGALRM信号alarm(TIMESLOT) -> io服用检测SIGALRM信号->查找存储计时器里过期的项,用回调的函数执行时间链表通过链表时间轮通过环状的时间轮时间堆通过小顶堆的超时时间设置alarm()的超时时间,高效率的实现计时器,效率最高...原创 2020-06-07 13:52:10 · 150 阅读 · 0 评论 -
linux高性能服务编程第十章(信号)
发送信号linux下,一个进程给其他进程发信号的api是#include <sys/types.h>#include <signal.h>int kill ( pid_t pid , int sig );成功返回o,失败返回-1,并设置errno,errno的参数可选为:EINVAL(无效) EPERM (该进程无权限发给任何一个进程)ESRCH(目标进程或进程组不存在)信号处理方式typedef void(* __sighandler_t ) (int原创 2020-05-29 17:36:02 · 139 阅读 · 0 评论 -
linux高性能服务器编程第九章(I/O复用)
select#include <sys/select.h>int select ( int nfds , fd_set* readfds , fd_set* writefds , fd_set* exceptfds , struct timeval * timeout);readfds:可读集合writefds:可写集合exceptfds:异常集合struct timeval{long tv_sec;long tv_usec;}FD_ZERO(f..原创 2020-05-28 17:20:54 · 163 阅读 · 0 评论 -
linux高性能服务器编程第八章(高性能服务器程序框架)
C/S模型传统C/S,一端作为客户端,一端作为服务器,这里不做多介绍。P2P模型peer 2 peer ,每台机器使用服务的同时也提供服务,通俗的讲,没有绝对客户端和服务端的概念,当下云计算的模型就是这样实现的,但他具有一个缺点,就是难以被发现,所以通常加上一个发现服务器。服务器编程框架通常分为四块,IO处理模块若是单个服务器,用于处理用户链接和收发若是服务器集群,作为传入服务器,实现负载均衡逻辑处理单元若是单个服务器,线程或进程形式存在若是服务器集群,逻辑服务器原创 2020-05-28 11:34:48 · 149 阅读 · 0 评论 -
linux高性能服务器编程第七章(linux服务器程序规范)
日志#include <syslog.h>voidsyslog(int priority , const char* message ,...);void openlog(const char * ident , int logopt ,int facility);int setlogmask(int maskpri);void closelog();用户信息uid euid gid guid#include < sys / types.h >#.原创 2020-05-27 14:21:22 · 134 阅读 · 0 评论 -
linux高性能服务器编程第六章(高级I/O函数)
fork()函数;pipe函数int socketpair(int domain , int type , int protocol ,int fd[2]);dup函数和dup2函数#include <unistd.h>int dup(int file_descriptor);int dup2(int file_descriptor_one , int file_descriptor_two);不继承原文件的属性,如阻塞和非阻塞用于重定向文件、管道、网络连接.原创 2020-05-25 17:53:47 · 141 阅读 · 0 评论 -
linux高性能服务器编程第五章(Linux网络编程基础API)
SOCKET地址API主机字节序和网络字节序: 大端字节序是一个数的高位字节存储在内存的低地址位;小端字节序是一个数的高位字节序在内存的高位地址位;主机字节序是小端字节序;网络字节序是大端字节序;JAVA虚拟机是大端字节序。 Linux下提供了4个函数完成大小端的转换,即为:#include <netinet/in.h>unsigned long int htonl(unsigned long int hostlong);unsigned short...原创 2020-05-15 16:54:43 · 214 阅读 · 0 评论 -
linux高性能服务器编程第四章(TCP/IP通信案例上的web服务器)
代理服务器: 在HTTP通讯链上,客户端和服务器之间通常存在某些中转代理服务器,他们提供对目标资源的中转访问。代理服务器可分为,正向代理、反向代理和透明代理三种情况。 下面介绍正向代理,正向代理是客户端自己设置代理服务器的地址,这里的应用是防火墙内局域网要访问Internet,或要访问一些外国网站,就需要使用正向代理。 接着是反向代理,反向代理设置在服务端,因此客户端不需要设置,反向代理是指服务端收到Internet上的一些请求,并把他返回给内部的客户端。这种情况下,代理服务器...原创 2020-05-15 14:54:36 · 160 阅读 · 0 评论 -
linux高性能服务器网络编程第三章(TCP协议详解)
TCP服务的特点:tcp面向链接、字节流和可靠;UDP则不同;tcp通过调用send()/recv()函数处理数据,udp通过调用sendto()/recvfrom()处理数据;可靠是指,接受确认、定时重发、由于IP分片对TCP报文段重排和整理;可见,数据最终都是封成IP数据报发送的。这里有个疑问,IP进行分片,tcp进行分组,那么怎么保证tcp协议不会被ip分片呢?经查,有个MSS = MTU - 20(IP头) - 20(tcp头),而udp则为 MTU - 20(IP头)- 8原创 2020-05-15 11:37:46 · 174 阅读 · 0 评论 -
linux高性能服务器网络编程第二章
ip服务的特点:无状态、不可靠、无连接ipv4的结构:4位版本号,IPV4为44位头部长度8位TOS,三位代表优先权,四位代表最小延时、最大吞吐量、最高可靠性、最小费用16位总长度(字节数),是指ip数据报的长度,以字节为单位,最大长度到65535字节,但由于MTU限制,到不了那么大;16位标识,唯一的标识主机发送的每一个数据报,初始值由系统生成;3位标志段,第一位保留,第二位禁止分片(不对数据分片,IP数据长超过MTU的情况下,IP模块丢弃数据报并返回一个ICMP差错报文)原创 2020-05-14 09:24:36 · 96 阅读 · 0 评论