自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (4)
  • 收藏
  • 关注

原创 muduo库的学习---中间遇到的问题

本帖测试用,一旦问题全部解决,将不复存在。1.channel中有个tie方法,是用来保证持有channel对象的生命周期的但是它是如何作用的?2.TcpConnection::handleClose在这个函数中为什么要调用connectionCallback?3.在TcpConnection中有1个成员context以及若干个操作它的函数这是干什么用的?

2016-02-29 20:58:02 440

原创 muduo库的学习9---TcpServer与TcpClient的基本设计---TcpConnection成员

TcpConnection是muduo库里面最复杂的类。其复杂性来自于TCP连接固有的复杂性,包括连接建立、连接断开、数据发送、数据接收。后面的章节会针对这4个内容详细讲解。1.类的结构class TcpConnection {/*********************Function Member***********************************

2016-02-29 16:39:15 441

原创 muduo库的学习11---TcpServer与TcpClient的基本设计---TcpConnection接收与发送

aaa

2016-02-29 11:35:43 369

原创 muduo库的学习10---TcpServer与TcpClient的基本设计---TcpConnection建立与关闭

aa

2016-02-29 11:34:50 1520 1

原创 muduo库的学习8---TcpServer与TcpClient的基本设计---TcpServer

aa

2016-02-29 11:33:00 506

原创 muduo库的学习7---TcpServer与TcpClient的基本设计---总论

这里所涉及的新文件包括:Connector,TcpConnction,Acceptor,TcpServer,TcpClient1.程序的组织

2016-02-29 11:32:06 475

原创 muduo库的学习6---Buffer的基本设计

1.使用应用层buffer的原因这个陈硕对应的书里面讲地很清楚,见书P205 7.4.2分为两点①为什么需要output buffer②为什么需要input buffer2.Class Bufferclass Buffer : public muduo::copyable{/*******Function Member***********///genera

2016-02-28 16:51:44 732

原创 muduo库的学习5---loop的基本设计---Channel细节

类似于EventLoop的分析,忽略一些次要成员。1.类定义class Channel{typedef boost::function EventCallback;typedef boost::function ReadEventCallback;/***************Function Member******************///bind with loop

2016-02-28 10:36:39 427

原创 muduo库的学习4---loop的基本设计---EventLoop细节

除了一些测使用的函数,返回数据成员的函数,以及标志位变量,循环变量,这里会简单描述所有其他的数据成员以及函数成员的功能。不区分public与privateclass EventLoop:{/**********Function Memeber**************/typedef boost::function Functor;EventLoop();~EventLoo

2016-02-27 16:39:51 490

原创 Libev库学习3---watcher与loop的操作

1.watcher①init(初始化)作用:将watcher与cb关联②set(设置)作用:将watcher与fd关联,并设置关注的具体事件(读,写)注:这个函数可以作为最初设置,也可以作为设置更新。③start(注册)作用:将watcher与loop关联④stop(注销)作用:将watcher与loop取消关联2.loop①run作用:

2016-02-27 11:07:06 421

原创 网络编程4---poll与epoll的区别

之前在我的文章:网络编程1---select poll epoll中总结了这3个函数的接口,但是对于epoll为什么比poll好,知之甚少。今天在网上查了一些,进行了一些总结。这篇文章总结自:①linux内核poll/select/epoll实现剖析②在Linux上开发网络服务器的一些相关细节(1)---poll与epoll其中第2篇文章在网络上流传甚广,我没有

2016-02-26 10:10:15 2286

原创 muduo库的学习3---loop基本设计---总论

这里所涉及的文件包括(1)loop用的:Callbacks,Poller,EventLoop,EventLoopThread,EventLoopThreadPool(2)IO用的:Channel(3)Timer用的:Timer,TimerQueue,TimerId1.关系图与功能可以用于libev的对比来很好滴表达(1)Poller就是实现了libev的loop循环(2

2016-02-25 15:33:35 521

原创 muduo库的学习1---socket基本设计---总论

这个部分涉及最底层的一些文件,包括Endian,SocketsOps,InetAddress,Socket这几个文件。1.基本关系与内容它们的关系我用一个图来表示如图所示,Endian是封装了各种大端---小端转换的函数,SocketsOps实现了许多例如socket的各种操作。这两个文件都是位于Sockets空间命名空间之下的,它们都是直接调用linux系统函数来实现

2016-02-25 13:48:28 452

原创 muduo库的学习0---总论

恩,muduo库用的版本是v1.0.8。听说下一版本会支持C++11,感觉非常地激动。毕竟当前muduo库需要boost库的支持,而据我目前看的内容来看,所有这里需要用到的boost库的内容用C++11标准都能很方便地实现。

2016-02-25 09:25:23 292

原创 muduo库的学习2--Socket的基本设计---代码细节

1.作用封装了,像socket,connect,bind,accept,listen,read,write,close,以及一些地址转换的函数。加入了出错控制信息,并且定义的操作均为非阻塞的。并且同意控制在一个muduo::net::sockets的命名空间之下。2.细节①关于VALGRIND以及NO_ACCEPT4这两个宏,它们在C++标准库里面是没有的,我用grep -

2016-02-24 21:08:07 515

原创 Ubuntu文件搜索路径

1.头文件主要有4种方式按顺序依次为①编译时指定编译的时候加上-I 指定这个I是大写的i②GCC/G++环境变量由C_INCLUDE_PATHCPLUS_INCLUDE_PATH分别指定③系统默认/usr/include    /usr/local/include等等④当前路径#include"xxxxx"2.静态库文件按

2016-02-24 11:19:37 543

原创 Ubuntu的目录与第三方库

1.Ubuntu目录结构在Ubuntu使用记录(常用命令与目录树)中我总结了一些关于Ubuntu/Linux的目录的一些知识,这里回顾一下。软件主要分为3类,可以用which命令查看,一个软件/命令的位置①/sbin表示系统的一些程序,比如shutdown②/bin表示一些可以用在bash上面的命令,比如ps,ls等③/usr/bin表示其他安装的软件,比如我们需要

2016-02-24 10:05:15 3932

原创 网络编程3---常用服务器编程模型

本文的内容主要总结自:《Linux多线程服务端编程---使用muduo C++网络库》,作者是陈硕1.单线程服务器编程模型(Reactor模型)non-blocking IO + IO multiplexing(1)基本运作方式:①event loop②event-driven③call-back(2)伪代码示意while(!done){    int ti

2016-02-23 21:25:03 612

原创 网络编程2---select poll epoll

其实linux自带的man是非常好的学习工具。select, poll, epoll都能直接通过man得到很详细的解释,当然具体的栗子就需要在网上找找或者看看书了。1.select#include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *ti

2016-02-23 19:09:04 417

原创 Libev库学习2---简单的IO多路复用服务器

1.用到的库①libev使用它的对于select,epoll等等的封装来实现IO多路复用②csapp使用的是csapp书中的socket函数,以及包装函数来实现一些socket的函数2.功能server关注的事件有两个。①listenfd有连接请求到来的时候,accept,并且将建立的新的socket连接建立为监听事件,加入loop之中。②在connfd上面有信

2016-02-23 16:49:50 721

原创 《深入理解计算机系统》P652页的select程序

程序是一个server的程序,主要是使用select来IO多路复用STDIN和套接字的连接请求即listenfd。重点注意line 23-34①监听到listenfd这个时候就accept产生connfd,并且调用echo函数。echo函数的作用是,一直阻塞接收对面的消息,收到消息就echo完全一样的消息给对方。②监听到有STDIN这个时候就调用command函数。

2016-02-23 09:47:41 291

原创 Libev库学习1---安装

准备看一下libev这个库,由于这个库很小,所以安装来先跑一跑。1.源码下载直接百度libev进入官网就能下载源文件具体的网址为:http://dist.schmorp.de/libev/2.库的编译解压文件,进入文件目录编译的时候需要首先切换为管理员权限#./configure#make#make install编译好后,它是被放在了/usr/

2016-02-22 15:55:45 3225 4

原创 JAVA学习笔记6--加载从网上下载的类文件到自己的工程

主要有两个难点:导入库的自动import,重新配置包名1.自动import用到的库比如说我在使用从网上下载的Algorithms 4th的答案的时候,因为会用到这本书自己的第三方库,但是源文件又没有给出import语句。所以需要自己添加。这个其实也很简单,选中包名,右键--》Source--》Organize Imports即可。2.重新配置包名比如说我想将一个

2016-02-04 09:19:33 384

Leetcode-cpp 2015.5更新

这是leetcode,一个开源项目,可以用于求职找工作,里面的算法尽量背诵,愿大家学到东西啦。

2015-07-04

Pointers in C

一本详细介绍C指针的书籍。完全是介绍C的指针的。有需要的朋友欢迎下载。

2014-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除