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开发笔记二的更多相关文章

  1. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  2. SDL开发笔记(二):音频基础介绍、使用SDL播放音频

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. EasyUI 开发笔记(二)

    接上篇 :EasyUI 开发笔记(一)  (http://www.cnblogs.com/yiayi/p/3485258.html) 这期就简单介绍下, easyui 的 list 展示, 在easy ...

  4. RBL开发笔记一

    从这个系列开始  陆续记录整个RBL开发的过程   废话不多说   直入主题 10:54:53   2014-08-25 今天开发任务: RBL.h  的框架搭建出来   包括RBLServer RB ...

  5. RBL开发笔记三

    2014-08-26 20:06:24 今天就是在开发这个EPOLL来处理网络事件 封装较为健壮的EPOLL模型来处理基本的网络IO 1) 超时这个主题先没有弄 在开发EPOLL包括select/po ...

  6. Vue-cli开发笔记二----------接口调用、配置全局变量

    我做的一个项目,本身是没用任何框架,纯手写的前端及数据交互,项目已经完结.最近学Vue,于是借用这个项目,改装成vue项目. (一)接口问题:使用axios的调用方法,proxyTable解决开发环境 ...

  7. openwrt开发笔记二:树莓派刷openwrt

    前言及准备 本笔记适用于第一次给树莓派刷openwrt系统的玩家,对刷机过程及注意事项进行了记录,刷机之后对openwrt进行一些简单配置. 使用openwrt源码制作固件需要花费一点时间. 平台环境 ...

  8. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  9. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

随机推荐

  1. code异常处理

    private void copyPrivateRawResuorceToPubliclyAccessibleFile() { InputStream inputStream = null; File ...

  2. sql函数PadLeft与PadRight代码实例

    1.PadLeft函数向已知字符串左边补充字符,使整个字符串到达指定长度 CREATE FUNCTION PadLeft ( ),/*原始字符*/ @TotalLength int,/*总长度*/ ) ...

  3. 【leetcode❤python】 190. Reverse Bits

    #-*- coding: UTF-8 -*- class Solution:    # @param n, an integer    # @return an integer    def reve ...

  4. 关于token的杂记

    http://www.cnblogs.com/xiekeli/p/5607107.html https://www.oschina.net/question/1264088_220768 token作 ...

  5. 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 ...

  6. ThinkPHP 3.2 模板中的Angularjs 的变量{{$first}} 无法被解析

    ThinkPHP 3.2 模板中的Angularjs 的变量"{{$first}}" 无法被解析, 模板解析冲突,例如在angularjs 的变量"{{$first}}& ...

  7. PLS-00221: 'function' 不是过程或尚未定义

    直接调用addOrgunitInfoByBatch(r_user_batch.seq_id,'01');   报错PLS-00221: 'function' 不是过程或尚未定义   原因是在调用函数时 ...

  8. jQuery改变兄弟元素样式,及:not([class="allclassname"])筛选小结

    以前一直对于jquery感到很畏惧,最近做点击图表变色,将其他元素图片复位的小需求,总结了一下一点小心得. 主要两点是:1.将所有兄弟元素的样式设置为一样,对于子元素的遍历: 2.对于特殊不需要变化的 ...

  9. Debian 上面五分钟搭建 WordPress - 博客/网站平台

    没有废话,步骤如下: 下载安装软件,MySQL Apache PHP sudo aptitude install mysql-server mysql-client ##安装 MySQLsudo ap ...

  10. 递归算法(三)——不借助四则运算实现加法

    问题 求两个整型变量的和,不能使用四则运算,但可以使用位运算. 思路 以二进制形式,考虑两个整数相加: a = 01101001b b = 11100111b s =  ???????? 一个常见的结 ...