编程 - 木东驿站 - 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)

我对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)

我对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)

前向声明还是include?

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

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

新梦战0.26 userdata 报错分析

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

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

【JAVA】如何实现对象的深度克隆

在JAVA中,一个对象拥有自身的属性,如果我们把对象A赋予另一个对象变量B,并不会把对象A的内容传给对象变量B,而是在那个对象变量B里标记上对象A的地址,再次调用时,还是调用的对象A本来的属性和方法。有时候,我们需要复制一份和对象A完全一样的对象B,然后在操作B的同时不影响A。比如在我之...

发布于 2017年11月09日
评论(3)
1
个快快(木东)
喜欢记录文字的码农

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

博文
50
朋友
10
评论
333

最新评论

lzq
发布于 2019年09月27日
求发邮箱862812375@qq.com
致所有梦战玩家
匿名
发布于 2019年09月18日
382934033@qq.com 也给我发个最新的谢谢
致所有梦战玩家
匿名
发布于 2019年09月12日
290162011@qq.com大佬求个最新版本,特想玩啊
致所有梦战玩家
匿名
发布于 2019年09月10日
冒个泡
数据结构:二叉查找树
匿名
发布于 2019年09月06日
虽然知道梦终归会醒,但真的希望哪天发现梦战又更新了
致所有梦战玩家
吖远zzy
发布于 2019年08月19日
就一个字表达,牛
二叉堆瞎折腾记录
吖远zzy
发布于 2019年08月19日
越长大发现时间越来越不够用了,人际关系越来越复杂....
stxiyouqiyuan
发布于 2019年08月08日
好久不见,YGD,我是st,还记得我么.
致所有梦战玩家
匿名
发布于 2019年08月07日
最早玩梦幻单机还是神剑系列,过玩快快你之前参与制作的很多个版本的游戏,一直以为你很早就放弃了,没想到后面还有这个最符合我心中最初的梦幻-梦战。然后就看到你无法再更新的消息...心里十分遗憾。 但梦终归会醒,看你免费为大家辛苦这么久,总算有个好的结局,祝你在网易工作顺利!
致所有梦战玩家
bb014160233
发布于 2019年08月06日
大佬给个源码,刚学编程半年纯学习用,硬盘坏了网盘也没备份
关于
© 2018 MoodBlog 0.2 个快快 作品 | 参考主题: mathilda by fuzzz. | 鲁ICP备16047814号