网络服务
文章平均质量分 80
狱典司
异步但IO!
展开
-
GET和POST方法的区别
一般认为POST在传输数据时更加的安全,因为,所以更安全。浏览器由于规范问题不会在GET的请求体中添加数据,但是可以通过例如Fiddler的Composer来添加数据到GET的请求体种。常见的GET和POST区别还有GET传输的数据比较少,POST传输数据多;因此不管GET还是POST,数据传输大小都会有限制,只是POST的传输大小相对于GET来说比较大;数据量大小也并不是面试官期望听到的回答。GET请求多是用来获取数据的,通常可以缓存。原创 2023-01-07 10:46:53 · 462 阅读 · 0 评论 -
一台Linux机器上最多能建立多少个TCP连接?
但是就目前的TCP协议来说,显然这是不可能的,首先,不会有一台机器可以占用所有的ip,其次需要考虑机器是否能正常的打开2^16个端口,以及机器是否支持那么多的打开文件,最最最重要的是,机器能否有那么大的内存和CPU资源来维护这些TCP连接。ip(ipv4)数量的理论最大值,受限于ip的位数 ---- ip长度为32位,那么极限最优条件下(但没有这个可能)单机可以拥有2^32个ip地址,但这样就把世界上所有的ip都用光了。假如是4GB的内存,那么大约可接受的TCP连接数量是100万左右。.........原创 2022-08-12 21:40:21 · 1570 阅读 · 0 评论 -
浅记对于select多路IO网络模型性能调优和BUG解决方案
前些日子接手了一个老项目,是一个网络收发的linux socket程序,接收各地设备发来的数据,进行解码 – 处理数据 – 存数据 – 发数据的工作;项目代码业务逻辑处理没有问题,问题在于该代码运行一阵子之后就收不到数据了,但是进程仍然在跑,且用top命令查看cpu占用率极高,严重影响了云服务器的性能,分析之后,记录调优和debug的心得:这个程序采用了跨平台的多路IO转接函数 —— ,由于select函数设计的比较早,遗留了针对小规模多路IO的性能低下的问题,解决办法是通过用户代码逻辑添加一个额外的数组(原创 2022-06-12 19:45:07 · 347 阅读 · 0 评论 -
浅记线程池模型中多个线程对同个fd接收缓冲区读取争夺的方案
最近在复习实现和思考线程池的时候发现了一个问题:概括说就是 线程池+多路IO(epoll ET)+ 非阻塞轮询处理数据的场景下,同个fd(socket)高频率接收数据,可能导致线程池中多个线程争夺读取该fd接收缓冲区的情况,怎么处理?思考后得到如下的解决方案:............原创 2022-06-12 19:14:24 · 704 阅读 · 3 评论 -
Epoll 反应堆模型核心原理及代码讲解
epoll反应堆模型的三个要素:epoll ET模式非阻塞轮询处理结构体中联合体中的指针 – 实现回调机制socket、bind、listen – epoll_create 创建监听 红黑树 – 返回 epfdepoll_ctl() 向红黑树上添加一个listenfd(监听socket)while(1) {【可选】每轮迭代监测100个连接,若存在超时连接(沉积用户)则主动关闭; 监听 --> 对应监听fd有事件产生 --> 返回监听满足结构集 (即结构体数组);判断返回数组元素 :}原创 2022-06-08 19:23:25 · 705 阅读 · 0 评论 -
简单封装一个linux socket服务端的listenfd初始化函数
简单封装一个linux socket服务端的listenfd初始化函数,方便快速调用:initlistensocket()参数说明 —— 服务器开启的监听端口 —— listen()函数的连接队列容量(两队列总容量) —— 置1则listenfd设为非阻塞,置0则默认阻塞initlistensocket()返回值暂时未做出错处理,initlistensocket()函数返回socket()函数的返回值,成功调用的情况下返回监听文件描述符......原创 2022-06-08 15:33:10 · 332 阅读 · 0 评论 -
Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口
这里写目录标题Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口一、源代码及其运行1. Linux C程序getPort.c源码运行示例2. 脚本文件 getPort.sh源码运行示例二、bash命令说明1. netstat命令2. awk命令3. wc 命令4. shuf命令Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口一、源代码及其运行1. Linux C程序getPort.c源码原创 2022-03-14 19:20:31 · 731 阅读 · 0 评论 -
Linux C程序获取本机可用IP地址 && Linux C程序获取system()函数的标准输出到char *缓冲中
Linux C程序获取本机可用IP地址 &&Linux C程序获取system()函数的标准输出到char *缓冲中方法一:使用pipe匿名管道思路:fork一个子进程,并创建一个匿名管道,在子进程中执行shell命令,并将其标准输出dup到匿名管道的输入端,父进程从管道 中读取,即可获得shell命令的输出。char * get_ipaddr(){ int fd[2]; pipe(fd); int pid = fork();原创 2022-03-12 23:13:02 · 5109 阅读 · 0 评论 -
Ubuntu18.04下基于apache2部署Zend Framework 3 MVC框架【含BUG/问题解决】)
这部分的内容相关资料有一些旧了,存在一些版本问题,我把我遇到的问题统一整理到这篇博客中,供参考。更多的安装方式参考Zend Framework的官方资源:Zend Framework (github.com)下面是安装步骤:1.安装Apache2和PHP$ sudo apt-get update$ sudo apt-get upgrade$ sudo apt-get install apache2 $ sudo apt-get install mysql-server mysql-cli.原创 2022-02-03 21:45:51 · 763 阅读 · 0 评论 -
保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令
Swap分区的详解 && 创建什么是swap分区?方法一:使用物理分区创建Swap分区1. 利用fdisk / gdisk在磁盘上划出一个分区1.1 lsblk —— 查看本机的磁盘分区基本情况1.2 df 命令 —— 查看磁盘空间利用率1.3 parted命令 —— 列出磁盘的分区表类型与分区信息1.4 fdisk / gdisk命令 —— 磁盘管理1.5 partprobe —— 更新Linux内核分区表信息2. 创建swap格式2.1 mkswap命令 —— 格式化Swap分区2.2原创 2021-07-16 23:43:53 · 15038 阅读 · 4 评论 -
Linux常用文件压缩/解压命令格式大全(tar、gzip、bzip2、zip、compress、cpio、compress、dd)建议收藏
Linux常用文件压缩/解压命令格式大全1. tar2. gzip3. bzip24. zip5. compress6. cpio7.dd1. tar打包备份后的文件包缀:.tar作用:用来对系统上的文件作备份与恢复,可以将系统上多个文件组构成一个tar文件备份到磁盘内或写入到一般的文件(文件名为*.tar)上,也可以将文件从一个tar文件解回到原来的系统中。说明:仅能将一个目录下的所有文件变成一个文件,不具备压缩功能,因此,一般都会将tar与gzip或bzip2一同使用。t原创 2021-07-10 15:22:30 · 3553 阅读 · 0 评论 -
Linux中以@结尾的文件
进入/bin目录原创 2021-07-10 14:20:07 · 1680 阅读 · 0 评论 -
一文带你捋清 Linux根目录下常见文件目录(etc/ dev/ var/ bin/ sbin/ lib/ proc/ tmp/等)建议收藏
目录说明binbin是binary的缩写,是UNIX类操作系统中根目录的标准子目录,包含可执行的程序(即准备运行的程序),以便达到启动(即启动)和修复系统的最小功能。打开 bin目录我们发现。这里面有我们常用的很多命令:cat、mv、cp、su、等。所以这里面存放着使用者最经常使用的命令。·/bin是系统默认的路径,它是系统发出命令时搜索相应程序的目录列表。这意味着,只要在命令行中输入文件名,然后按下Enter键,就可以运行/bin中的对应的可执行文件(即,可运行程序)从而达到我们执行...原创 2021-07-10 14:02:44 · 2016 阅读 · 1 评论 -
Rsync核心算法讲解
目录1. 分块Checksum算法2. 传输算法3. checksum查找算法4. 比对算法5. 例图建议结合阅读文章:Rsync镜像备份工作原理(含流程示意图)为了方便理解,假设:同步源文件名为fileSrc,同步目的文件叫fileDst1. 分块Checksum算法(1). 首先,把fileDst的文件平均切分成若干个小块比如每块512个字节(最后一块会小于这个数)(2). 然后对每块计算两个checksum(校验和)一个是rolling checksum,是32位的弱原创 2021-05-25 23:32:02 · 656 阅读 · 0 评论 -
Rsync镜像备份工作原理(含流程示意图)
目录1. 概念2. 特性3. 流程示意图4. 工作原理(1) 进程和角色(2)进程开始(3)The Files list(文件列表)(4)The Pipeline(管道)(5)The Generator(6)The Sender(7)The Receiver(8)The Daemon1. 概念rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。2. 特性可以镜像保存整个目录树和文件系统。原创 2021-05-25 21:44:03 · 1859 阅读 · 1 评论 -
利用PDO.so连接并读取Mysql数据库 核心代码实现讲解
目录Pre. 准备测试连接1. 结构化编程代码 <1.1>代码 <1.2>2. 面对对象编程代码 <2.1>代码 <2.2>Pre. 准备建议阅读本文前先大致浏览下方链接文章 :PDO.so中PDO类以及PDOStatement类的相关方法、预定义汇总查看数据库的基本操作请阅读下方连接文章:超全!Mysql数据库 常用基本操作总结(含快速索引目录)利用PDO.so连接数据库并读取Mysql数据库数据有两种编程方式可以考虑:结构化编程,即面向原创 2021-05-18 22:34:24 · 394 阅读 · 0 评论 -
利用PDO.so连接数据库
pdo.so方法汇总 Class PDOClass PDOStatement 结果集类DNS预定义常量Class PDO代表PHP和数据库服务之间的一个连接,功能主要是连接、查询方法功能_construcrt(string $dns [,string $username [,string $password [array $driver_opyions ]]] )创建一个表示数据库连接的PDO实例mixed errorCode(void)获取数据库句柄上一次操作相关的原创 2021-05-14 21:30:48 · 318 阅读 · 0 评论 -
超全!Mysql数据库 常用基本操作总结(含快速索引目录)
Mysql数据库 常用基本操作<1> 数据库 & 表 基本操作1.登陆数据库2.建立数据库3.查看数据库4.在指定库中建表5.查看表结构6.在表中查询指定的内容7.快速查询表中所有内容8.向指定表中添加内容9.清空指定表10.删除n行数据11.删除表12.删除库———————————————————<2> 数据库的数据类型(1) MySQL的数据类型1、整型2、浮点型(float和double)3、定点数5.二进制数据(_Blob)6.日期时间类型(2) 数据类型的属性特别说原创 2021-05-12 23:13:22 · 1720 阅读 · 2 评论 -
Makefile文件的基本单元 —— 规则
Makefile文件的基本单元是规则规则的格式Makefile文件的组成部分明确的典型规则伪目标隐含规则使用变量流程控制---条件语句一条规则指定一个或多个目标文件:编译生成该目标文件所依赖的文件或模块,生成或更新目标文件所使用的命令。规则的格式目标文件列表 分隔符 依赖文件列表 [;命令][命令][命令]注:“[ ]”中的内容是可选的。Makefile文件的组成部分一个完整的Makefile文件由5部分构成:①显式规则②隐含规则③使用变量④流程控制⑤注释#原创 2021-05-12 20:41:39 · 627 阅读 · 4 评论 -
抓包分析Telnet远程登陆协议信令交互过程
本文章上半部分为telnet远程登录协议的原理,下半部分为抓包分析抓包分析Telnet远程登陆协议信令交互过程* Part1. Telnet协议原理1. 概述1.1 Telnet协议特点1.1.1 适应异构1.1.2. 传送远地命令1.1.3. 数据流向1.1.4. 强制命令1.1.5. 选项协商1.2. 原理1.2.1网络虚拟终端(NVT)1.2.2. 操作协商1.2.3. 子选项协商1.3. 实现* Part2. 抓包分析信令交互过程2.1 抓包2.2 分析* Part3. 用php 模拟teln.原创 2021-05-08 22:06:02 · 2645 阅读 · 1 评论