- @[toc]曾经有个人,问我对无锁队列的实现是怎么想的。我想了一会儿,还是纳闷儿,无锁,也能做消息队列吗?然后他让我回去好好查查。没错,他就是面试官。 atomic在有些场景里面,是需要对一些资源进行锁定的。但是有些资源实在是太小了,锁定的粒度也太小了,不免显得上锁解锁倒成了繁琐。比方说:_mlock.lock();count++;_mlock.unlock();CAS,是基于硬件层面的无锁... @[toc]曾经有个人,问我对无锁队列的实现是怎么想的。我想了一会儿,还是纳闷儿,无锁,也能做消息队列吗?然后他让我回去好好查查。没错,他就是面试官。 atomic在有些场景里面,是需要对一些资源进行锁定的。但是有些资源实在是太小了,锁定的粒度也太小了,不免显得上锁解锁倒成了繁琐。比方说:_mlock.lock();count++;_mlock.unlock();CAS,是基于硬件层面的无锁...
- 天天说,new一个对象,但是有想过要如何写出更高效的对象操作代码吗?动手试过吗?这里是一个用来示例的类,代码很简单,稍微瞟一眼就好:#include<iostream>using namespace std;class test {public: test(int a = 10) :ma(a) { cout << "test()" << endl; } ~test() { cout << "... 天天说,new一个对象,但是有想过要如何写出更高效的对象操作代码吗?动手试过吗?这里是一个用来示例的类,代码很简单,稍微瞟一眼就好:#include<iostream>using namespace std;class test {public: test(int a = 10) :ma(a) { cout << "test()" << endl; } ~test() { cout << "...
- Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
- CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
- @[toc] 环境配置与基本知识C++搭建集群聊天室(十七):ngnix简介及tcp负载均衡配置Redis环境搭建与配置hiredis从安装到实操,一条龙服务redis事务处理机制,但当涉猎了解更多 redis 相关知识:我的redis专栏上面该看的看完了,咱往下可就直接上码啦!!!这次的改动会有有点大。 redis.hpp愿意放哪儿放哪儿,我觉着吧,怎么说redis也是个数据库,就放 db... @[toc] 环境配置与基本知识C++搭建集群聊天室(十七):ngnix简介及tcp负载均衡配置Redis环境搭建与配置hiredis从安装到实操,一条龙服务redis事务处理机制,但当涉猎了解更多 redis 相关知识:我的redis专栏上面该看的看完了,咱往下可就直接上码啦!!!这次的改动会有有点大。 redis.hpp愿意放哪儿放哪儿,我觉着吧,怎么说redis也是个数据库,就放 db...
- @[toc] nginx简介单台服务器受限于硬件资源,其性能是有上限的,当单台服务器不能满足应用场景的并发需求量时,就需要考虑部署多个服务器共同处理客户端的并发请求,此时就需要一台负载均衡器,通过预设的负载算法,指导客户端连接服务器。从1.9版本开始以后,nginx开始支持tcp的长连接负载均衡,但是nginx默认并没有编译tcp负载均衡模块,编写它时,需要加入–with-stream参数来... @[toc] nginx简介单台服务器受限于硬件资源,其性能是有上限的,当单台服务器不能满足应用场景的并发需求量时,就需要考虑部署多个服务器共同处理客户端的并发请求,此时就需要一台负载均衡器,通过预设的负载算法,指导客户端连接服务器。从1.9版本开始以后,nginx开始支持tcp的长连接负载均衡,但是nginx默认并没有编译tcp负载均衡模块,编写它时,需要加入–with-stream参数来...
- 既然客户端都发出来了,总得开始测试一下了,虽然说在整集群,两手抓嘛。测出来一些问题,还有不少问题潜在着。持续更新中@[toc] bug 1:bug:登录、测试皆失败寻病:debug调试病灶:char sql[128] = {0};sprintf("insert into User(name,password,state) values('%s','%s','%s')", use... 既然客户端都发出来了,总得开始测试一下了,虽然说在整集群,两手抓嘛。测出来一些问题,还有不少问题潜在着。持续更新中@[toc] bug 1:bug:登录、测试皆失败寻病:debug调试病灶:char sql[128] = {0};sprintf("insert into User(name,password,state) values('%s','%s','%s')", use...
- 直接塞一个文件里面。 client.cpp#include "json.hpp"#include <iostream>#include <thread>#include <string>#include <vector>#include <chrono>#include <ctime>#include <unordered_map>#include <functional>using nam... 直接塞一个文件里面。 client.cpp#include "json.hpp"#include <iostream>#include <thread>#include <string>#include <vector>#include <chrono>#include <ctime>#include <unordered_map>#include <functional>using nam...
- @[toc] 群聊功能思路1、创建群聊,提交群信息,返回群号2、拉取群人员基本信息,包括昵称、ID。3、群发消息时,如果成员在线则直接推送,成员不在线则存储相应群员的离线消息。 放码过来照例先修改一下 public.hpp 文件。#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOG... @[toc] 群聊功能思路1、创建群聊,提交群信息,返回群号2、拉取群人员基本信息,包括昵称、ID。3、群发消息时,如果成员在线则直接推送,成员不在线则存储相应群员的离线消息。 放码过来照例先修改一下 public.hpp 文件。#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOG...
- 添加好友又是一个新模块,好友功能。所以,照旧,先在public中写上,然后写上一个model类,再绑定一下,并在service中调用即可。最后重新编译,轻车熟路了。 public.hpp#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOGIN_MSG_ACK, //登录相应消息... 添加好友又是一个新模块,好友功能。所以,照旧,先在public中写上,然后写上一个model类,再绑定一下,并在service中调用即可。最后重新编译,轻车熟路了。 public.hpp#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOGIN_MSG_ACK, //登录相应消息...
- 单聊单聊功能其实很简单的,就是数据包的发送,接收。public.h 现状:#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOGIN_MSG_ACK, //登录相应消息 REG_TYPE, //正常注册 REG_MSG_ACK, //注册相应消息 ... 单聊单聊功能其实很简单的,就是数据包的发送,接收。public.h 现状:#ifndef PUBLIC_H_#define PUBLIC_H_enum EnMsgType{ LOGIN_TYPE = 1, //正常登录 LOGIN_MSG_ACK, //登录相应消息 REG_TYPE, //正常注册 REG_MSG_ACK, //注册相应消息 ...
- @[toc] 客户端异常退出此前我们对客户端退出的操作仅仅就是将连接释放掉,但是既然加入了新的业务,受业务影响,客户端的退出就不能是这么简单的处理了。打开 chatserver.cpp ,原先是这样的:void ChatServer::onConnection(const TcpConnectionPtr &conn){ if(!conn->connected()){ //用户断开连接... @[toc] 客户端异常退出此前我们对客户端退出的操作仅仅就是将连接释放掉,但是既然加入了新的业务,受业务影响,客户端的退出就不能是这么简单的处理了。打开 chatserver.cpp ,原先是这样的:void ChatServer::onConnection(const TcpConnectionPtr &conn){ if(!conn->connected()){ //用户断开连接...
- 前面准备了那么多,这里就直接是水到渠成了。该讲的前面都讲的差不多了,剩下还没讲的都在代码里面。不过由于文档Telnet一直是发送不了数据的状态,就一直没法进一步的测试,等后面写了客户端再说。 chatservice.hpp#ifndef CHATSERVICE_H_#define CHATSERVICE_H_#include<muduo/net/TcpConnection.h>#includ... 前面准备了那么多,这里就直接是水到渠成了。该讲的前面都讲的差不多了,剩下还没讲的都在代码里面。不过由于文档Telnet一直是发送不了数据的状态,就一直没法进一步的测试,等后面写了客户端再说。 chatservice.hpp#ifndef CHATSERVICE_H_#define CHATSERVICE_H_#include<muduo/net/TcpConnection.h>#includ...
- 数据库模块 db.hpp首先,在 include/server 目录下新增文件夹 db,用于存放数据库相关文件。在 db 文件夹下新增文件:db.hpp#ifndef DB_H_#define DB_H_#include<string>#include<mysql/mysql.h>#include<muduo/base/Logging.h>using namespace std;// 数据... 数据库模块 db.hpp首先,在 include/server 目录下新增文件夹 db,用于存放数据库相关文件。在 db 文件夹下新增文件:db.hpp#ifndef DB_H_#define DB_H_#include<string>#include<mysql/mysql.h>#include<muduo/base/Logging.h>using namespace std;// 数据...
- 安装MySQL如果是跟我一样使用CentOS8的话,那就自信点:CentOS 三分钟快速安装MySQL mysql建表数据库叫 chat User字段名称字段类型字段说明约束idINT用户idPRIMARY KEY、AUTO_INCREMENTnameVARCHAR(50)用户名NOT NULL, UNIQUEpasswordVARCHAR(50)用户密码NOT NULLstateENUM... 安装MySQL如果是跟我一样使用CentOS8的话,那就自信点:CentOS 三分钟快速安装MySQL mysql建表数据库叫 chat User字段名称字段类型字段说明约束idINT用户idPRIMARY KEY、AUTO_INCREMENTnameVARCHAR(50)用户名NOT NULL, UNIQUEpasswordVARCHAR(50)用户密码NOT NULLstateENUM...
上滑加载中
推荐直播
-
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中 -
华为云码道:零代码股票智能决策平台全功能实战2026/04/18 周六 10:00-12:00
秦拳德-中软国际教育卓越研究院研究员、华为云金牌讲师、云原生技术专家
利用Tushare接口获取实时行情数据,采用Transformer算法进行时序预测与涨跌分析,并集成DeepSeek API提供智能解读。同时,项目深度结合华为云CodeArts(码道)的代码智能体能力,实现代码一键推送至云端代码仓库,建立起高效、可协作的团队开发新范式。开发者可快速上手,从零打造功能完整的个股筛选、智能分析与风险管控产品。
回顾中 -
华为云码道全新升级,多会话并行与多智能体协作2026/05/08 周五 19:00-21:00
王一男-华为云码道产品专家;张嘉冉-华为云码道工程师;胡琦-华为云HCDE;程诗杰-华为云HCDG
华为云码道4月份版本全新升级,此次直播深度解读4月份产品特性,通过“特性解读+实操演示+实战案例+设计创新”的组合,全方位展现码道在多会话并行与多智能体协作方面的能力,赋能开发者提升效率
正在直播
热门标签