网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个Base IO thread负责accept新的连接,接收到新的连接以后,使用轮询的方式在reactor pool中找到合适的sub reactor将这个连接挂载上去,这个连接上的所有任务都在这个sub reactor上完成。
如果有过多的耗费CPU I/O的计算任务,可以提交到创建的ThreadPool线程池中专门处理耗时的计算任务。
【方案5】 : reactors in process - one loop pre process
nginx服务器的网络模块设计,基于进程设计,采用多个Reactors充当I/O进程和工作进程,通过一把 accept 锁,完美解决多个Reactors的“惊群现象”。
图在上面。有图的话我就不想多哔哔,一图胜千言。
从图中,我们可以看出:
XXXXXXXXX,妙啊!!!!
废话不多说,上手。
写一个回显数据库,你写啥进去就回显啥出来,运行的时候加上6000端口
#include"json.hpp"
using json = nlohmann::json;
#include
#include
#include
#include<string.h>
#include
using namespace std;
void func(){
// 先来个最基本的
json js;
map<string,string> mss;
mss.insert({“name”,“wlf”}); //呦呵,pair也插不了
mss.insert({“age”,“21”}); //不过这样倒是比用pair要方便
vector vc = {1,2,3,4,5,6,7,8,9};
js[“name”] = “wlf”;
js[“age”] = “21”;
js[“path”] = mss;
js[“vc”] = vc;
string s = js.dump(); //和Python里面的一样
json js2 = json::parse(s); //先解析,这里和Python不太一样
//返回一个JSON的对象,可以看做一个容器
cout<<js2<<endl;
// 直接取key-value
string name = js2[“name”];
cout << “name:” << name << endl;
// 直接反序列化vector容器
vector v = js2[“vc”];
for(int val : v) {
cout << val << " ";
}
cout << endl;
// 直接反序列化map容器
map<string, string>
m2 = js2[“path”];
for(auto p : m2) {
cout << p.first << " " << p.second << endl;
}
cout << endl;
}
int main(){
func();
return 0;
}
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新