![](https://img-blog.csdnimg.cn/84e3166b18e9488caa13170c6a6bcbd1.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CodeCrafters
文章平均质量分 72
无论你是刚踏入编程世界,还是经验丰富的开发者,这里都会有适合你的内容。我将讨论编程技巧、框架介绍、实战项目等,让我们一起用code创造出令人惊叹的作品!Write the Code , Change the world!
for_everyoung01
穷且益坚,不坠青云之志。
展开
-
C++项目:网络版五子棋对战(收官总结篇)
本项目主要实现一个网页版的五子棋对战游戏,其主要支持以下核心功能:(一)用户管理实现用户注册,用户登录、获取用户信息、用户天梯分数记录、用户比赛场次记录等。(二)匹配对战实现两个玩家在网页端根据天梯分数匹配游戏对手,并进行五子棋游戏对战的功能。(三)聊天功能实现两个玩家在下棋的同时可以进行实时聊天的功能。原创 2023-10-26 10:43:15 · 372 阅读 · 2 评论 -
2.9.C++项目:网络版五子棋对战之业务处理模块的设计
服务器模块,是对当前所实现的所有模块的⼀个整合,并进行服务器搭建的一个模块,最终封装实现出⼀个gobang_server的服务器模块类,向外提供搭建五⼦棋对战服务器的接口。通过实例化的对象可以简便的完成服务器的搭建。将所有的模块整合在一起,通过网络通信获取到客户端的请求,提供不同的业务处理。原创 2023-10-25 22:09:47 · 329 阅读 · 2 评论 -
2.8.C++项目:网络版五子棋对战之对战玩家匹配管理模块的设计
今天是10月24日,一年一度的程序员节。 心之所向,一往无前,每跨越一次1024,技术人又向前迈进一步。 心怀梦想,坚守技术,技术人的脚下之路,也将更加坚定。 在今天这个日子,祝福所有的技术人节日快乐!原创 2023-10-24 21:51:18 · 165 阅读 · 1 评论 -
2.7.C++项目:网络版五子棋对战之session模块的设计
在WEB开发中,HTTP协议是⼀种无状态短链接的协议,这就导致⼀个客户端连接到服务器上之后,服务器不知道当前的连接对应的是哪个用户,也不知道客户端是否登录成功,这时候为客户端提所有服务是不合理的。因此,服务器为每个用户浏览器创建⼀个会话对象(session对象)。原创 2023-10-24 21:37:41 · 111 阅读 · 2 评论 -
2.6.C++项目:网络版五子棋对战之数据管理模块-游戏房间管理模块的设计
对匹配成功的玩家创建房间,建立起一个小范围的玩家之间的关联关系!房间里一个玩家产生的动作将会广播给房间里的其他用户。将这些房间管理起来,以便于进行房间生命周期的控制!原创 2023-10-23 20:40:32 · 265 阅读 · 1 评论 -
2.5.C++项目:网络版五子棋对战之数据管理模块-在线用户管理模块的设计
在线用户管理,是对于当前游戏大厅和游戏房间中的用户进行管理,主要是建立起用户与Socket连接的映射关系。原创 2023-10-23 20:33:53 · 115 阅读 · 2 评论 -
2.3.C++项目:网络版五子棋对战之实用工具类模块的设计
实用工具类模块主要是负责提前实现一些项目中会用到的边缘功能代码,提前实现好了就可以在项目中用到的时候直接使用了。原创 2023-10-22 21:38:25 · 453 阅读 · 1 评论 -
2.2.C++项目:网络版五子棋对战之数据管理模块-数据库的设计
数据库中有可能存在很多张表,每张表中管理的数据又有不同,要进⾏的数据操作也各不相同,因此我们可以为每⼀张表中的数据操作都设计⼀个类,通过类实例化的对象来访问这张数据库表中的数据,这样的话当我们要访问哪张表的时候,使用哪个类实例化的对象即可。数据管理模块主要负责对于数据库中数据进行统一的增删改查管理,其他模块要对数据操作都必须通过数据管理模块完成。创建user_table类, 该类的作用是负责通过 MySQL 接口管理用户数据。创建user表, 用来表示用户信息及积分信息。原创 2023-10-22 21:27:04 · 274 阅读 · 1 评论 -
2.1.C++项目:网络版五子棋对战之前置知识
WebSocketpp是⼀个跨平台的开源(BSD许可证)头部专用C++库,它实现了RFC6455(WebSocket协议)和RFC7692(WebSocketCompression Extensions)。它允许将WebSocket客户端和服务器功能集成到C++程序中。在最常见的配置中,全功能网络I/O由Asio网络库提供。事件驱动的接口支持HTTP/HTTPS、WS/WSS、IPv6灵活的依赖管理 — Boost库/C++11标准库。原创 2023-10-21 22:02:11 · 497 阅读 · 1 评论 -
1.16.C++项目:仿muduo库实现并发服务器之HttpContext以及HttpServer模块的设计
有可能出现接收的数据并不是一条完整的HTTP请求数据,也就是请求的处理需要在多次受到数据之后才能处理完成,因此在每次处理的时候,就需要将进度处理记录下来,以便于下次从当前进度继续向下处理。记录HTTP请求的接受和处理进度。原创 2023-10-17 09:04:23 · 873 阅读 · 2 评论 -
1.15.C++项目:仿muduo库实现并发服务器之HttpRequest和HttpResponse模块的设计
【代码】1.15.C++项目:仿muduo库实现并发服务器之HttpRequest和HttpResponse模块的设计。原创 2023-10-17 08:54:15 · 556 阅读 · 1 评论 -
1.14.C++项目:仿muduo库实现并发服务器之Util模块的设计
在HTTP协议支持模块中,当需要某些零碎功能的时候,便于使用!原创 2023-10-15 18:10:31 · 425 阅读 · 2 评论 -
1.13.C++项目:仿muduo库实现并发服务器之TcpServer模块的设计
8. 一旦Connection对应的链接就绪了可读事件,则这个时候执行读事件回调函数,读取数据,读取完毕后调用TcpServer设置的消息回调!7. 将新连接对应的Connection 挂到 LoopThreadPool 中的丛书线程对应的Eventloop 中进行事件监控!TcpServer模块: 对所有模块的整合,通过 tcpserver 模块实例化的对象,可以非常简单的完成一个服务器的搭建。5. 对新连接对应的 Connection 设置功能回调 (连接完成回调,消息回调,关闭回调,任意事件监控!原创 2023-10-14 20:43:55 · 639 阅读 · 2 评论 -
1.12.C++项目:仿muduo库实现并发服务器之LoopThreadPool模块的设计
1.线程数量可配置(0或多个)2. 对所有的线程进行管理,其实也就是管理0个或多个LoopThread对象!3. 提供线程分配的功能!原创 2023-10-14 20:25:14 · 573 阅读 · 2 评论 -
1.11.C++项目:仿muduo库实现并发服务器之LoopThread的设计
目标:将eventloop模块和线程整合起来!eventloop 和 线程是一一对应的!eventloop 模块实例化的对象,在构造的时候就会吃实话!_thread_id;而后面当运行一个操作的时候判断是否运行在eventloop所对应的线程中,就是将线程ID与EventLoop模块中的thread_id 进行一个比较,相同就表示在同一个线程,不同就表示当前运行线程并不是eventloop线程!eventloop 模块在实例化对象的时候,必须在线程内部!原创 2023-10-14 20:10:14 · 305 阅读 · 2 评论 -
1.1.C++项目:仿muduo库实现并发服务器之any类的设计
每⼀个Connection对连接进行管理,最终都不可避免需要涉及到应用层协议的处理,因此在Connection中需要设置协议处理的上下文来控制处理节奏。但是应用层协议千千万,为了降低耦度,这个协议接收解析上下文就不能有明显的协议倾向,它可以是任意协议的上下文信息,因此就需要⼀个通⽤的类型来保存各种不同的数据结构。原创 2023-10-11 14:56:11 · 282 阅读 · 2 评论 -
1.10.C++项目:仿muduo库实现并发服务器之Acceptor模块的设计
Acceptor模块是对Socket模块,Channel模块的⼀个整体封装,实现了对⼀个监听套接字的整体的管理。原创 2023-10-08 15:11:57 · 432 阅读 · 2 评论 -
1.9.C++项目:仿muduo库实现并发服务器之Connection模块的设计
Connection模块,一个连接有任何的事件怎么处理都是有这个模块来进行处理的,因为组件的设计也不知道使用者要如何处理事件,因此只能是提供一些事件回调函数由使用者设置。保存了一分share_ptr,因此就算其他地方进行了释放,也只是对share_ptr的计数器-1,而不会导致Connection的实际释放!解决方案:使用智能指针share_ptr 对Connect 对象进行管理,这样可以保证任意一个地方对Connect对象进行操作的时候,这个模块本身不是一个单独的功能模块,是一个对连接做管理的模块。原创 2023-10-06 21:36:15 · 1152 阅读 · 2 评论 -
1.8.C++项目:仿muduo库实现并发服务器之eventloop模块的设计
每一个Connection连接,都会绑定一个EventLoop模块和线程,因为外界对于连接的所有操作,都要放到同一个线程中进行!因此我们需要将一个链接的事件监控, 以及连接事件处理,以及其他操作都放在同一个线程中!但是如果这个描述符,在多个线程中都触发了了事件,进行处理,就会存在线程安全问题!如何保证一个连接的所有操作都在eventloop对应的线程中!监听了一个链接,如果这个连接一旦就绪,就要进行事件处理!对于服务器的所有事件都是由EventLoop模块来完成。这个模块和线程是一一对应的!原创 2023-10-02 17:54:51 · 665 阅读 · 2 评论 -
1.7.C++项目:仿muduo库实现并发服务器之Poller模块的设计
对任意的描述符进行IO事件监控。原创 2023-10-02 17:45:32 · 585 阅读 · 2 评论 -
1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计
对socket套接字的操作进行封装。对socket套接字的操作进行封装。设置对于不同事件的回调处理函数。设置对于不同事件的回调处理函数。明确触发了某个事件该如何处理。明确触发了某个事件该如何处理。2.对监控事件触发后的处理。2.对监控事件触发后的处理。1.对监控事件的管理。1.对监控事件的管理。原创 2023-09-30 20:32:22 · 915 阅读 · 4 评论 -
1.5.C++项目:仿muduo库实现并发服务器之socket模块的设计
Socket模块是对套接字操作封装的一个模块,主要实现的socket的各项操作。原创 2023-09-30 16:23:03 · 754 阅读 · 2 评论 -
1.4.C++项目:仿muduo库实现并发服务器之buffer模块的设计
Buffer模块是一个缓冲区模块,用于实现通信中用户态的接收缓冲区和发送缓冲区功能。原创 2023-09-30 11:27:32 · 867 阅读 · 2 评论 -
1.2.C++项目:仿muduo库实现并发服务器之时间轮的设计
同样的道理,如果我们定义了一个数组,并且有一个指针,指向数组起始位置,这个指针每秒钟向后走动一步,走到哪里,则代表哪里的任务该被执行了,那么如果我们想要定一个3s后的任务,则只需要将任务添加到tick+3位置,则每秒中走一步,三秒钟后tick走到对应位置,这时候执行对应位置的任务即可。这时候大家就会想到,我们可以针对所有的连接,根据每个连接最近⼀次通信的系统时间建立⼀个小根堆,这样只需要每次针对堆顶部分的连接逐个释放,直到没有超时的连接为止,这样也可以大大提高处理的效率。原创 2023-09-28 21:58:31 · 659 阅读 · 2 评论 -
一、C++项目:仿muduo库实现高性能高并发服务器
简单理解就是使用 I/O多路复用 统⼀监听事件,收到事件后分发给处理进程或线程,是编写高性能网络服务器的必备技术之⼀。当然准确来说,因为我们要实现的服务器本身并不存在业务,咱们要实现的应该算是⼀个高性能服务器基础库,是⼀个基础组件。并且,通过组件内提供的不同应⽤层协议支持,也可以快速完成⼀个高性能应⽤服务器的搭建(当前。在这里,要明确的是咱们要实现的是⼀个高并发服务器组件,因此当前的项目中并不包含实际的业务。通过咱们实现的高并发服务器组件,可以简洁快速的完成⼀个高性能的服务器搭建。原创 2023-09-21 22:03:05 · 1814 阅读 · 3 评论 -
二、C++项目:在线五子棋对战(网页版)
本项目主要实现⼀个网页版的五⼦棋对战游戏,其主要支持以下核心功能:实现用户注册,用户登录、获取用户信息、用户天梯分数记录、用户比赛场次记录等。实现两个玩家在网页端根据天梯分数匹配游戏对手,并进行五子棋游戏对战的功能。实现两个玩家在下棋的同时可以进⾏实时聊天的功能。原创 2023-09-12 20:04:28 · 588 阅读 · 3 评论