摘要:
一、redis简介 Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,常用作数据库、缓存和消息中间件。它以高性能和丰富的数据结构支持而闻名,提供了字符串、哈希表、列表、集合、有序集合等多种数据结构。 Redis主要特点包括: 内存存储:Redis 阅读全文
摘要:
客户端如何处理注销登录问题? 问题描述: 在客户端登录后进行注销选择,然后重新登录刚才注销的账号,直接卡死。注意这是概率发生,因为是主线程和子线程抢服务器发送的信息,只有子线程抢到才会发生卡死 问题产生原因分析: 前置条件:主线程循环等待用户输入选择(第一张图是死循环,send后立马recv 阅读全文
摘要:
一、引入redis队列 在上一篇博客里我们已经为服务器配置了基于nginx的tcp负载均衡,提高了服务器的并发量,但是相应的之前也会存在一个问题,那就是多个客户端可能连接在不同的服务器,那这几个客户端如何通信呢?这就需要引入这次的内容:redis中间件,我们通过redis来作为一个中间消息转发者 阅读全文
摘要:
一、客户端开发 代码如下: #include "json.hpp" #include <iostream> #include <thread> #include <string> #include <vector> #include <chrono> #include <ctime> #includ 阅读全文
摘要:
第一章 一、什么是人工智能? 模拟、延申、和拓展人类技能。 强人工智能:具备与人类同等或者超越人类智慧,能根据自己意图展开行动。 弱人工智能:面向特定的问题或任务,根据人类的经验知识,达到模拟人的效果。 应用领域:计算机视觉、自然语言处理NLP、人机博弈、认知推理等。 主要软件技术:数据采集技术 阅读全文
摘要:
一、创建一个仓库 想要上传项目代码到github我们首先需要有一个GitHub账号,具体怎么注册自行搜索,然后我们需要创建一个仓库如图: 如图我们创建一个公共仓库,写完名字,描述,和增加一个readme文件 二、密钥 直接使用命令后面是你的注册邮箱,选项直接回车就好。 ssh-keyge 阅读全文
摘要:
一、服务器异常处理函数 这部分主要处理服务器异常退出时,用户的在线状态还是online不会改变,因此需要修改。由于是需要对用户进行操作,因此我们在user表的数据操作类添加重置用户状态函数。 在usermodel.hpp添加后: #ifndef USERMODEL_ #define USER 阅读全文
摘要:
一、客户端异常退出处理 在chatserviec层增加一个客户端异常退出的处理函数: 因为要保证userConnMap的线程安全,因此在这里用一个智能锁来处理,在作用域结束后会自动释放资源。然后,更新数据库里的在线状态,由online修改为offline,测试效果如图: 登录成功: 阅读全文
摘要:
这部分的主要业务逻辑是网络层获取到json文件解析后,调用注册好的登录事件回调函数login,然后获取id和密码,通过查询是否在数据库里判断下一步业务,然后更新其在数据库里的在线在线状态,处理错误。因此,需要在对user表操作的类添加查询以及更新函数。 一、用户登录代码 将chatservi 阅读全文
摘要:
总体项目结构如下: 一、数据库的封装 db.h如图代码量不多 db.cpp: #include "db.h" #include <muduo/base/Logging.h> // 数据库配置信息 static string server = "127.0.0.1"; static str 阅读全文