木东驿站 - 时光不语,静待花开 - Powered by MoodBlog
最新博文

【linux源码分析】io复用之poll

在介绍poll系统调用之前,不得不提linux虚拟文件系统中poll机制的原理,在linux中万物皆是文件,比如一个驱动,一个网络套接字,一个磁盘文件。如果我们对文件的某种事件感兴趣,比如可读、可写事件,就可以通过poll机制异步的得到事件准备就绪的消息。具体方法是给文件建立一个等待队列,然后把...

发布于 2019年04月11日
评论(4)

c++里的SFINAE技巧

最近在重写一个网络库,当然还是参考muduo,这个库有太多可学习的地方了。在设计单例类时,muduo考虑了进程退出时的资源释放问题,虽然系统可以帮我们回收大部分资源,但如果我们主动调用析构方法会更保险。static void init()     {         value_ ...

发布于 2019年04月06日
评论(0)

c语言malloc底层实现

在使用c语言或者c++的时候,我们若要申请堆内存,都要和malloc打交道(c++ new的底层实现也是malloc)。malloc是实现在用户态的内存管理模块,并不是直接进行系统调用。malloc有多种实现,在linux环境下,malloc主要是采用ptmalloc。本文参考网上博文对ptmalloc原理进行一下总结。进程内存布局这是每一个linux进程拥...

发布于 2019年03月05日
评论(0)

TCP协议总结

今天面试tcp协议这方面答得磕磕绊绊,虽然懂得原理,但是没有很全面的表达出来,还是总结一下吧。TCP如何保证数据可靠性(1)应用数据被TCP切割成最合适发送的数据块。(2)TCP发出一个数据包后,启动一个定时器,等待对方发回ack报文,如果超时就重发这个报文段。(3)TCP有首部和数据的校验和,在数据到...

发布于 2019年02月28日
评论(2)

我对muduo c++网络库的理解(四)

io事件处理muduo支持poll和epoll,这里分析一下epoll。Timestamp EPollPoller::poll(int timeoutMs, ChannelList* activeChannels) {   int numEvents = ::epoll_wait(epollfd_,                             &nb...

发布于 2018年11月15日
评论(1)

我对muduo c++网络库的理解(三)

缓存设计muduo中的具体事件处理器并不直接对套接字进行读写,而是通过缓存来进行数据的读写。这个缓存是一个非固定大小的vector<char>。使用readIndex,writeIndex对缓存区域进行标识。整个缓存区域是这个样子的:prependable的区域就是提前准备好一块空间,这样我们可以方便的在待发送的数据前面增加...

发布于 2018年11月14日
评论(0)

【设计模式总结】设计原则

单一职责原则定义:应该有且只有一个原因引起类的变更。这个原则理解起来很简单,就是每个接口、类、方法只拥有一个职责,只负责一种类型的任务。比方说电脑制造过程中有个过程是组装,我们可以单独让一个类负责组装,而不是让把整个制造过程都放到一个类中。但是这个原则在实际开发中是很...

发布于 2018年11月14日
评论(0)

我对muduo c++网络库的理解(二)

开始运行muduo典型启动方式如下:Loop loop; Server server(&loop,addr); server.start(); loop.loop()(1)在主线程创建一个loop(2)在主线程创建server对象,绑定loop(3)调用server.start()(4)让loop开始循环那么start应该是完成了事件循环前的准备,start方法代码如下:void TcpServer::start() {   if (started_.getAndS...

发布于 2018年11月13日
评论(0)

我对muduo c++网络库的理解(一)

muduo网络库muduo(木铎)是陈硕巨神在业余时间(特喵的好强!)编写的一套网络支持库,目前只支持linux平台,最新版本提供了对ipv6的支持。muduo线程模型采用one loop per thread + thread pool,即每个线程拥有一个事件循环,这些线程会提前在线程池准备好,等待用户往里面添加任务。这种线程模型使用reactor模式实...

发布于 2018年11月12日
评论(0)

【设计模式总结】单例模式

单例模式定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供整个实例。简单点说,就是这个类在运行过程中只能初始化一次,只能产生一个对象。实现要点一、为了确保这个类只有一个实例,我们应该禁止用户创建实例化对象,即把构造方法设置为private。二、实现自行实例化有两种方...

发布于 2018年11月11日
评论(0)

前向声明还是include?

在c++开发中,如果我们有个类A要用到类B,类B的定义在其它文件中,通常情况下我们需要这样做:#include "B.h"这样当前文件就知道了类B的结构,我们就可以在类A中使用类B的,但是有些情况下,我们不需要知道类B的结构,只需要告知编译器,类B是一个确实存在的类型,这样可以减少编译工作...

发布于 2018年10月23日
评论(1)

数据结构:二叉查找树

二叉查找树二叉树是节点最多只有两个子树的树状结构,这两个子树可以称为左子树和右子树。可是对于普通的二叉树,并没有足够的信息来提示我们左子树和右子树存储的是什么,我们没有办法进行高效的信息查找。为了提高查找效率,我们会把二叉树升级为二叉查找树(Binary Search Tree)。二叉查找树是...

发布于 2018年09月11日
评论(2)

新梦战0.26 userdata 报错分析

今天很多玩家向我发email提交这个BUG。从这个错误的提示信息来看,是无法比较userdata与numberuserdata是什么呢?其实是lua与c交互的一种结构,userdata指向一块内存区域,一般和c中的结构体相关联。梦战保存游戏数据时使用的序列化方式是json,就是把数组转换为json格式,然后存放到文件。如果数组中存在n...

发布于 2018年08月20日
评论(2)

3D2Y

之所以喜欢看海贼王是因为总能找到一些共鸣路飞在前往新世界之前把集合时间从三天改成了两年3 Days —— 2 Years在过去的两年里我好像没有过什么改变依旧懒散 依旧拖延这样迟早会变成失败者写过很多的代码 不过是做着重复的无用功从梦战开始连载的那一刻我就错了错认为自己有时间去做一款完...

发布于 2018年07月14日

两年

昨天和达能聊到高考,才发现我们的高考已经过去两年了。2016年高考,英语是最后一个考试科目,写完作文后我开始回忆我的少年时代,毕竟,走出考场的那一刻,我就不能再自称为少年了吧?从2007年到2016年,一个个的记忆片段在脑海里呈现。从我第一次接触游戏,到后面接触网站,接触编程。在这条...

发布于 2018年06月06日
评论(6)
个快快(木东)
喜欢记录文字的码农

小时候,有人给我讲了一个美好的故事
十年来我苦苦寻找着故事的结局
如今才发现,这故事刚刚开始
也许我决定不了结果
但总能让过程更美丽一些吧

博文
49
朋友
9
评论
300

最新评论

个快快
发布于 2019年04月23日
哈哈,WP太臃肿了,好多功能我是用不到的,就写了个简单的。
【linux源码分析】io复用之poll
lj2333
发布于 2019年04月22日
我以为快快用的wordpress 快快厉害
【linux源码分析】io复用之poll
lj2333
发布于 2019年04月22日
快快 我想要你的wordpress主题可以吗 backyear.top 我的站点
【linux源码分析】io复用之poll
匿名
发布于 2019年04月22日
专业
【linux源码分析】io复用之poll
匿名
发布于 2019年04月10日
我什么我点右下角,好友的那个按钮和左边小铃铛的按钮直接出bug提示错误,谁知道什么原因
致所有梦战玩家
匿名
发布于 2019年03月22日
认识你这一年多,刚发现你和我的一个高中同学很像233,比赛名次这种没什么配不配的,蓝桥杯也是个人赛,你完全有这个实力。
两年
匿名
发布于 2019年03月22日
随着自己的长大重要的还是可以也需要去承担起自己的责任了。其实感觉随着需要承担责任的越来越重,也就没有那么天真那么充满童心了。
匿名
发布于 2019年03月02日
快快,分享一下呗,梦战还有更新吗?大半年了,一直没消息。也祝愿你,工作顺利
TCP协议总结
匿名
发布于 2019年03月02日
梦战玩了一遍又一遍,还是喜欢以前那种单纯娱乐的游戏。谢谢 个快快大佬。
TCP协议总结
个快快
发布于 2019年03月01日
啊哈,谢谢老哥。看来头条业务扩张十分迅猛啊,今年秋招的时候会考虑哈。
关于
© 2018 MoodBlog 0.2 个快快 作品 | 参考主题: mathilda by fuzzz. | 鲁ICP备16047814号