11 2023 档案
摘要:一、客户端异常退出处理 在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
阅读全文
摘要: 先给出整个项目的结构图: 一、环境搭建 施磊的c++聊天项目。相信已经到了这部分内容就已经能够自行搭建环境了,这里主要给出搭建的具体内容,方法自行百度。下面给出环境要求。 1.json-cpp 2.muduo库 3.cmake 4.mysql 二、CMake编写 主目
阅读全文
摘要:一、CMake简介 使用简单方便,可以跨平台,构建项目编译环境。尤其比直接写Makefile简单(在构建大型工程编译 时,需要写大量的文件依赖关系),可以通过简单的CMake生成负责的Makefile文件。 二、CMake安装 ubuntu上直接执行 sudo apt install cma
阅读全文
摘要:一、使三个字符串相等 给你三个字符串 s1、s2 和 s3。 你可以根据需要对这三个字符串执行以下操作 任意次数 。 在每次操作中,你可以选择其中一个长度至少为 2 的字符串 并删除其 最右位置上 的字符。 如果存在某种方法能够使这三个字符串相等,请返回使它们相等所需的 最小 操作次数;否则,返回
阅读全文
摘要:一、Reactor模式 Reactor 翻译过来的意思是「反应堆」,这里的反应指的是「对事件反应」,也就是来了一个事件,Reactor 就有相对应的反应/响应。 事实上,Reactor 模式也叫 Dispatcher 模式,我觉得这个名字更贴合该模式的含义,即 I/O 多路复用监听事件,收到
阅读全文
摘要:一、互斥锁和自旋锁 互斥锁: 最底层的两种就是会「互斥锁和自旋锁」,有很多高级的锁都是基于它们实现的,可以认为它们是各种锁的地基,所以我们必须清楚它俩之间的区别和应用。 加锁的目的就是保证共享资源在任意时间里,只有一个线程访问,这样就可以避免多线程导致共享数据错乱的问题。 当已经有一个线
阅读全文
摘要:一、管道 一个进程: 所谓的管道,就是内核里面的一串缓存。从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。另外,管道传输的数据是无格式的流且大小受限。 父子进程: 创建的子进程会复制父进程的文件描述符,这样就做到了两个进程各有两个「 f
阅读全文
摘要:今天来解析一下一道中等的leetcode题,题目如下: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 1
阅读全文
摘要:一、进程 我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」(Process)。 当进程要从硬盘读取数据时,CPU 不需要阻塞等待数据的
阅读全文
摘要:一.IP基本认识 IP在TCP/IP模型中处于第三层,也就是网络层。 网络层的主要作用:实现主机与主机之间的通信,也叫点对点通信。 网络层与数据链路层有什么关系? 在上面我们知道IP的作用是主机之间通信用的。而MAC的作用则是直连的两个设备之间通信,而IP则负责在没有直连的两个网络之间进
阅读全文
摘要:100115.找到冠军Ⅰ 一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 <= i, j <= n - 1 且 i != j 的所有 i, j :如果 grid[i][j] == 1,那么 i
阅读全文
摘要:一、TCP三次握手过程? TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图: 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号(client_isn),
阅读全文

浙公网安备 33010602011771号