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 ...
随机推荐
- Hadoop笔记HDFS(1)
环境:Hadoop2.7.3 1.Benchmarking HDFS 1.1测试集群的写入 运行基准测试是检测HDFS集群是否正确安装以及表现是否符合预期的好方法.DFSIO是Hadoop自带的一个基 ...
- 【leetcode❤python】 190. Reverse Bits
#-*- coding: UTF-8 -*- class Solution: # @param n, an integer # @return an integer def reve ...
- Populating Tree Item With Record Group In Oracle Forms
The below plsql program unit could be used in a WHEN-NEW-FORM-INSTANCE trigger to initially populate ...
- 关于F12的有效利用
1.之前仅用F12查看页面的代码: 2.现在发现用F12可以查看css文件: 3.比如看到页面背景为黑色,然后在css里面把背景从黑色调成白色:
- eclipse https git
open preferences via application menu Window => Preferences (or on OSX Eclipse => Settings). N ...
- ITerm2下使用ssh访问Linux
通常情况下,iTerm2访问远程Linux使用ssh,与Termial基本一样,方法如下: ssh <用户名>@<ip> 然后输入访问的密码即可.当然还有的时候需要指定访问端口 ...
- 关于Dagger 2 的使用方式
什么是Dagger2 Dagger是为Android和Java平台提供的一个完全静态的,在编译时进行依赖注入的框架,原来是由Square公司维护,现在由Google维护. 我们知道Dagger是一个依 ...
- Ubuntu 16.04 更新源
1/ 在修改source.list前,最好先备份一份 执行备份命令 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old 2/ 执行命令打开s ...
- MyEclipse常用设置
中文乱码设置:1.window-->preference-->general-->content type然后在<Content Types>中展开每一颗子项,并在< ...
- JAVA学习之路(环境配置,)
最近过去的寒假我就开始看一些JAVA的学习视频了,视频是毕向东老师的,讲得还不错,东北口音,欧了没? 首先是一些基础概念. 1.JAVA的三种技术架构 企业版 J2EE 标准版 J2SE 小型版 J2 ...