RBL开发笔记二
17:13:55 2014-08-25
有以下几个点:
第一 :怎么在预处理阶段能够做到识别某个宏是否给定义了 这里就定义了一个SystemConfig.h 专门做这个事情 当然是需要makefile来配合的
http://blog.csdn.net/chaoqunz/article/details/6033663 这篇博文已经提到相应的方法 在makefile里加一个-D 参数 这相当于就是Makefile一个补充参数吧。
第2: 因为我的计划写这个RBL的时候 可以通过配置文件写成 3种底层模式:
a 单进程单线程服务模式
b 单进程多线程服务模式【正常锁】
c 单进程多线程服务模式 【rw_lock锁】
对于第1 没有啥问题
对于第2 :
需要开发以下几个东西 1)怎么类似的可配置的安全的部分 就好似Linux内核关于是否是SMP_处理模式
2) 单线程服务模式: 采用类似redis服务模式来搞定 这点还是比较命令 epoll+单进程 这种不会发挥多核优势 但拥有不会超过的CPU 100%这种
3) 多线程服务模式:多线程+epoll 这种模式 是epoll线程监听到IO事件立即放在任务队列中 而其他的线程做相应的操作处理 这点会考虑到锁的种类 是用spin_lcok还是mutex_lock 所以需要考虑细致。【编程技术上 目前来看 这点是最难的】
………… 还有若干点 在后面的开发中慢慢写出来
22:01:27 2014-08-25
今天进度有点慢 简单封装了一个Socket.h EventLoop.h 但是我现在在想怎么更好的把EventLoop和Epoll封装起来 另外需要封装IO读写操作。【**】
明天开发任务: 1 把EPOLL嵌入到EventLoop这个类中 并且写出相应的测试程序
2 完成相应的操作 bloomfilter 读和写 并且进行单元测试
#ifndef _SOCKET_
#define _SOCKET_ #include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string>
#include <arpa/inet.h>
//TCP服务
class Socket
{
public:
Socket(int ServerPort)
{
soketfd=socket(AF_INET,SOCK_STREAM,0);
seraddr.sin_family=AF_INET;
seraddr.sin_addr.s_addr=htonl(INADDR_ANY);
seraddr.sin_port=htons(ServerPort);
}
int Getfd()
{
return soketfd;
}
struct sockaddr_in* GetSeraddr()
{
return &seraddr;
}
private:
int soketfd;
struct sockaddr_in seraddr;
}; //客户端建立
class ClientConnection
{
public:
ClientConnection(int port,const std::string& ip_):sock(port),ip(ip_)
{
inet_pton(AF_INET,ip.c_str(),&sock.GetSeraddr()->sin_addr);
}
void Connect(void)
{
connect(sock.Getfd(),(struct sockaddr*)sock.GetSeraddr(),sizeof(struct sockaddr));
}
private:
Socket sock;
std::string ip;
};
//服务器端建立
class ServerConnection
{
public:
ServerConnection(int port):sock(port)
{
bind(sock.Getfd(),(struct sockaddr*)sock.GetSeraddr(),sizeof(struct sockaddr_in));
//监听队列暂时随便定义一个值 8
listen(sock.Getfd(),8);
}
Socket& GetSock()
{
return sock;
}
private:
Socket sock;
}; #endif
RBL开发笔记二的更多相关文章
- Django开发笔记二
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...
- SDL开发笔记(二):音频基础介绍、使用SDL播放音频
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- EasyUI 开发笔记(二)
接上篇 :EasyUI 开发笔记(一) (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...
- RBL开发笔记一
从这个系列开始 陆续记录整个RBL开发的过程 废话不多说 直入主题 10:54:53 2014-08-25 今天开发任务: RBL.h 的框架搭建出来 包括RBLServer RB ...
- RBL开发笔记三
2014-08-26 20:06:24 今天就是在开发这个EPOLL来处理网络事件 封装较为健壮的EPOLL模型来处理基本的网络IO 1) 超时这个主题先没有弄 在开发EPOLL包括select/po ...
- Vue-cli开发笔记二----------接口调用、配置全局变量
我做的一个项目,本身是没用任何框架,纯手写的前端及数据交互,项目已经完结.最近学Vue,于是借用这个项目,改装成vue项目. (一)接口问题:使用axios的调用方法,proxyTable解决开发环境 ...
- openwrt开发笔记二:树莓派刷openwrt
前言及准备 本笔记适用于第一次给树莓派刷openwrt系统的玩家,对刷机过程及注意事项进行了记录,刷机之后对openwrt进行一些简单配置. 使用openwrt源码制作固件需要花费一点时间. 平台环境 ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- Django开发笔记五
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...
随机推荐
- code异常处理
private void copyPrivateRawResuorceToPubliclyAccessibleFile() { InputStream inputStream = null; File ...
- sql函数PadLeft与PadRight代码实例
1.PadLeft函数向已知字符串左边补充字符,使整个字符串到达指定长度 CREATE FUNCTION PadLeft ( ),/*原始字符*/ @TotalLength int,/*总长度*/ ) ...
- 【leetcode❤python】 190. Reverse Bits
#-*- coding: UTF-8 -*- class Solution: # @param n, an integer # @return an integer def reve ...
- 关于token的杂记
http://www.cnblogs.com/xiekeli/p/5607107.html https://www.oschina.net/question/1264088_220768 token作 ...
- Install Google Pinyin on Ubuntu 14.04
Install Google Pinyin on Ubuntu 14.04 I've been spending more and more time on Ubuntu and I'm not us ...
- ThinkPHP 3.2 模板中的Angularjs 的变量{{$first}} 无法被解析
ThinkPHP 3.2 模板中的Angularjs 的变量"{{$first}}" 无法被解析, 模板解析冲突,例如在angularjs 的变量"{{$first}}& ...
- PLS-00221: 'function' 不是过程或尚未定义
直接调用addOrgunitInfoByBatch(r_user_batch.seq_id,'01'); 报错PLS-00221: 'function' 不是过程或尚未定义 原因是在调用函数时 ...
- jQuery改变兄弟元素样式,及:not([class="allclassname"])筛选小结
以前一直对于jquery感到很畏惧,最近做点击图表变色,将其他元素图片复位的小需求,总结了一下一点小心得. 主要两点是:1.将所有兄弟元素的样式设置为一样,对于子元素的遍历: 2.对于特殊不需要变化的 ...
- Debian 上面五分钟搭建 WordPress - 博客/网站平台
没有废话,步骤如下: 下载安装软件,MySQL Apache PHP sudo aptitude install mysql-server mysql-client ##安装 MySQLsudo ap ...
- 递归算法(三)——不借助四则运算实现加法
问题 求两个整型变量的和,不能使用四则运算,但可以使用位运算. 思路 以二进制形式,考虑两个整数相加: a = 01101001b b = 11100111b s = ???????? 一个常见的结 ...