自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 选择排序,冒泡排序,插入排序

插入排序和选择排序以及冒泡排序不同的是,它的比较是不重复的,因为之前比较过的已经在手上形成了一个有序的牌型,每次拿一个新牌去比较都只是比较有序排序最大的,直到找到自己合适的位置。翻开第一张扑克牌,放到arr[0]位置,再翻开第二张扑克牌,和第一张比较,把小的那张放到一个空的新牌堆(这里只是便于理解,实际上不需要额外的空间,用原来的数组就行),再从原牌堆翻开一张和大的比较,同样,谁小谁放到新牌堆。拿第三张,和你手上最大的那张牌比较,直到找到合适的位置插入,循环直到把牌拿完,手上的牌自然就有序了。

2023-02-02 14:54:20 88

原创 C++实现红黑树

代码中还涉及到红黑树的前中后序遍历的递归算法和非递归算法,并打印出来,不过红黑树的删除在代码中没有体现,删除节点操作相对于增加节点操作更加复杂,等以后再补上。总结:红黑树是一种自平衡二叉查找树,特点:查找速度快且中序遍历是顺序的,应用于任务调度(CFS),内存管理等等。

2023-02-01 18:36:07 154

原创 gcc 11.3 升级安装命令

gcc 11.3 安装

2023-02-01 18:24:14 639

原创 Linux 下如何安装vm tools

如果想使用vm共享文件功能,那么需要在linux系统安装vm tools。Vm 虚拟机新建Linux系统到可以正常使用的注意事项:SecureCRT 快捷访问在SecureCRT中设置好hostname 及username, hostname为Linux的IP地址,username为Linux的用户名,这里注意,如果username写的是root,这时候因为root没有密码或者是没有开启权限导致说密码不匹配,所以username可以使用非root账户。Vm 共享文件夹怎么使用首...

2022-03-19 14:00:27 7032

原创 网络编程流程及redix、nginx介绍(上)

在介绍select\poll\epoll及阻塞、非阻塞I\O的那篇文章里,着重点在于实现,本篇文章主要讲一下流程。流程可以分为连接的建立,消息的到达,消息发送完毕,连接的断开 。之前讲的fd的阻塞与非阻塞属性是可以进行设置的,但是非阻塞其实也只是在数据准备阶段为非阻塞,如下图:在数据拷贝阶段两者都是阻塞的。I/O多路复用,只负责检测I/O,如果说数据已准备,再通过系统调用来操作I/O。数据已准备对于上述四个过程(连接建立、消息到达、消息发送完毕、连接断开)有着不同的意义,同时调用的I/O

2022-03-19 10:44:57 3710

原创 Linux下websocket协议实现

websocket协议的实现

2022-03-18 01:15:58 4643

原创 基于reactor的http协议简单业务实现

利用上篇文章(百万连接并发)的代码,如何实现一个简单的http业务。首先reactor模式中最重要的三个函数,也就是三个回调函数:accept_cbrecv_cbsend_cb如果对应到我们的http业务上,首先tcp的连接是通过accept_cb进行处理,然后http请求的数据包通过recv_cb进行接收,接收后通过send_cb给客户端发送response。那么http请求的数据包是什么格式呢?我们直接通过浏览器访问服务器监听的端口,通过打印来查看http请求的数据包内容,注意此

2022-03-17 15:00:21 3092

原创 利用单线程reactor实现百万连接并发

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <sys/epoll.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#define ...

2022-03-17 11:26:27 625

原创 epoll的应用与回调函数——单线程reactor模式实现

reactor模式也是基于epoll组件基础上利用回调函数实现的,之前文章有讲过epoll主要由三个函数来实现,分别是:epoll_creat();epoll_wait();epoll_ctrl();epoll中的data,其中有一个void型的指针ptr,是为了能方便把参数传入,在epoll_wait的时候就可以返回我们需要的参数,然后通过这些参数进行判断做相应处理。在reactor中,同样是以这三个函数作为核心,在epoll_wait等到就绪的fd时,会找到之前设定的对应的回调函数进

2022-03-16 20:02:04 1841

原创 网络I/O与Select、Poll、Epoll(下篇)

在实现利用Select组件实现网络通信的前提下,再来看Poll和Epoll就简单多了。首先Poll的数据结构如下:struct pollfd { int fd; short events; short revents;};events 表示监测的事件,revents表示返回的事件结果。比如一个客户端进行连接,所监测的fd为listenfd,监测的事件为POLLIN,通过poll函数进行返回,返回事件结果存储在revents中,在这里对poll函数不做详解。同样E...

2022-03-16 14:36:04 1051

原创 网络I/O与Select、Poll、Epoll(上篇)

网络I/O,select,poll,epoll

2022-01-11 19:54:03 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除