高性能网络编程IO多路复用之epoll
epoll的性能是最好的,即使在监听多达 10000 个文件描述符的情况下,其性能和监听 10 个文件描述符相比,差别也不大。而随着文件描述符的增大,select和 poll的性能逐渐变得很差。 1. epoll的使用首先,通过编写一个聊天室服务器的例子认识一下epoll。 使用epoll编写网络程序需要三个步骤:分别是epoll_create``epoll_ctl和epoll_wait。接下来,我们详细讲解一下这三个 API。 1.1 epoll_create()epoll_create()函数会创建一个 epoll 实例,并返回一个文件描述符指向该 epoll 实例。 12345#include <sys/epoll.h>int epoll_create(int size);// Returns: a file descriptor if OK; -1 on error and errno is set. 参数说明 size: 自Linux 2.6.8,参数size将被忽略,但是仍需传入一个大于 0...
高性能网络编程TCP编程
1. C/S 网络编程模型C/S 模型在我们日常生活中随处可见,比如网上购物,游戏,聊天等等软件,用的都是 C/S 模型。C/S 模型比较简单,它的一般流程如下图所示: 当一个客户端需要某个服务时,它会像对应的服务器发送一个请求。请求的格式是事先双方约定好的,以保证服务器可以解析这个请求。 服务器接收到请求后,会解析并处理这个请求。 服务器处理完请求后,会给客户端发送一个响应。响应可以是处理后的结果,也可以是指引客户端下一步操作的指示。 客户端接收到响应后,会解析响应并处理响应(当然客户端也可能什么都不做)。 服务器端是我们要关注的重点。它需要事先监听在一个众所周知的端口上,然后等待客户端的请求。一旦有客户端连接,服务器端就要消耗一定的计算机资源为它服务。服务器端是需要同时为成千上万的客户端服务的,因此,保证服务器端在海量的客户端访问时依然能保持稳定和高效,就至关重要。 客户端相对来说简单许多,它向服务器的监听端口发起连接请求。连接建立之后,他就可以和服务器端进行通信了。 2....
leetcode贪心算法题解
本文是基本常见的贪心算法题解 一、贪心算法简介贪心无套路. 思考局部最优解是什么, 然后思考局部最优能不能推出全局最优(没有严格证明, 就是感觉局部最优可以推理出全局最优,同时自己还想不到反例, 那么就可以试一试贪心的策略, 仅仅是尝试) 贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 这个四步其实过于理论化了,只要想清楚 局部最优 是什么,如果推导出全局最优,其实就够了. 贪心没有套路,说白了就是常识性推导加上举反例 二、贪心算法题解455. 分发饼干小饼干先喂饱小胃口 大饼干先喂饱大胃口 这两种思路都可以 下面是leetcode的解法,我第一次写也是这样的.方便好理解. 123456789101112131415161718192021class Solution {public: int findContentChildren(vector<int> &g, vector<int> &s) { int...
最小编辑距离算法及其在中文场景下的扩展
本文介绍最小编辑距离(Edit Distance)的原理、标准算法实现,并进一步探讨在处理中文字符串时的特殊处理方法。 一、最小编辑距离简介最小编辑距离(Minimum Edit Distance)是衡量两个字符串相似度的经典算法之一,其核心思想是:将一个字符串转换成另一个字符串所需的最少操作数。 典型的允许操作包括: 插入(Insert) 删除(Delete) 替换(Replace) 该算法常用于拼写纠错、字符串模糊匹配、自然语言处理等领域。 二、经典动态规划算法leetcode题目链接 72. 编辑距离 设 dp[i][j] 表示将字符串 A[0...i-1] 转换成字符串 B[0...j-1] 所需的最小操作数。 转移方程为: 12345dp[i][j] = min( dp[i-1][j] + 1, // 删除 A[i-1] dp[i][j-1] + 1, // 插入 B[j-1] dp[i-1][j-1] + cost // 替换 A[i-1] 为...
模板代码随想录算法训练营54期dayXX
模板代码随想录算法训练营54期dayXX
信息学奥赛一本通题解基础二(非官方)
我在搜寻题解的时候找到了别人自己一个人做的题解汇总[信息学奥赛一本通题解](http://ybt.10082009.com/)所以就想着自己反正也做了,就也写一个题解,当做监督自己不要半途而废的外在作用力.这就是我这篇博客的由来.
typora设置代码块默认语言
typora设置默认代码块为c++
信息学奥赛一本通题解基础一(非官方)
我在搜寻题解的时候找到了别人自己一个人做的题解汇总[信息学奥赛一本通题解](http://ybt.10082009.com/)所以就想着自己反正也做了,就也写一个题解,当做监督自己不要半途而废的外在作用力.这就是我这篇博客的由来.
C++PrimerPlusStudyNotesCh8
C++PrimerPlusStudyNotesCh8
C++PrimerPlusNotesHsuwindowPdf
C++PrimerPlusNotesHsuwindowPdf