linux 服务器

io多路复用

概念:用一个线程管理多个socket就是io多路复用。一个线程就可以处理多个socket/io。
io多路复用技术,select poll epoll  数据库一般使用select因为select可以支持跨平台。而epoll则不行。

epoll封装reactor

epoll的几个函数功能介绍:

创建epoll epoll_creat
删除  
增加socket	epoll_
移除socket
检测socket事件 epoll_wait

标记socket 相关信息的结构体。
socketitem


线程池的设计

执行队列:
任务队列:
管理组件:

封装API:	接口设计1.初始化   2.增减线程	3.

消息队列






linux下使用protobuf 具体步骤

1. 安装protobuf
在Linux上安装protobuf,可以使用以下命令:

```
sudo apt-get install protobuf-compiler
```

2. 编写.proto文件

在使用protobuf之前,需要先编写.proto文件。这是一种用于定义数据结构的语言,类似于XML和JSON。以下是一个简单的.proto文件示例:

```
syntax = "proto3";

message Person {
  string name = 1;
  int32 age = 2;
  string email = 3;
}
```

3. 编译.proto文件

使用protobuf编译器将.proto文件编译成可执行文件。以下是一个示例命令:

```
protoc --cpp_out=. person.proto
```

这将生成一个名为person.pb.cc的C++文件和一个名为person.pb.h的头文件。

4. 编写代码

在编写代码之前,需要将protobuf库添加到项目中。以下是一个示例命令:

```
g++ -std=c++11 -I/usr/local/include -L/usr/local/lib -lprotobuf mycode.cpp person.pb.cc -o mycode
```

然后,可以使用protobuf库中的类来序列化和反序列化数据。以下是一个示例代码:

```
#include <iostream>
#include <fstream>
#include "person.pb.h"

using namespace std;

int main() {
  Person person;
  person.set_name("John Doe");
  person.set_age(30);
  person.set_email("johndoe@example.com");

  fstream output("person.pb", ios::out | ios::binary);
  person.SerializeToOstream(&output);
  output.close();

  fstream input("person.pb", ios::in | ios::binary);
  Person new_person;
  new_person.ParseFromIstream(&input);
  input.close();

  cout << "Name: " << new_person.name() << endl;
  cout << "Age: " << new_person.age() << endl;
  cout << "Email: " << new_person.email() << endl;

  return 0;
}
```

5. 编译代码

使用以下命令编译代码:

```
g++ -std=c++11 -I/usr/local/include -L/usr/local/lib -lprotobuf mycode.cpp person.pb.cc -o mycode
```

6. 运行代码

使用以下命令运行代码:

```
./mycode
```

这将输出以下内容:

```
Name: John Doe
Age: 30
Email: johndoe@example.com
```

C++中的结构体 与类的区别

	在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有。注意,C++中的结构体是可以有析构函数和构造函数,而C则不允许。而共用体,它是不可能有析构函数和构造函数的。结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。即它是一种内存覆盖,也就是说,同一块内存在不同的时刻存储不同的值(可以是不同的类型)。

读取配置




协议的创建+协议注册(消息的订阅)

1	.lua   		修改/添加协议内容   工具生成到文件___Msg.h  ./command


2	注册协议   在./Common    CmdInfoCheck.cpp  
	DEfRegCmdLua(RQ_PETEQUIP_RECASTCMD,rqPet___,TOSESSION);

3	接收消息   

4	发送消息
	Cmd::rt____ cmd;
	
	ower_->sendCmdToMe(cmd);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值