木东驿站 - Powered by MoodBlog
最新博文

又一年

小时候,折出各种纸飞机,喜欢他们飞在空中的样子,虽然几秒后就会掉落。我想,总有一天,我会飞向我的理想,真正自由的活在这天地间。高考最后一科考完,回家的路上,满脑子想的是:终于结束了,我要让世界看到我的热情与天赋。我会向所有的人证明,是你们错了。我从高一开始计划制作一款...

发布于 2019年12月29日

二叉堆瞎折腾记录

最近看到一个叫"滑动窗口的最大值"的题目,题意就是给定一个序列,然后给一个窗口值,这个窗口向右进行滑动,类似于tcp的滑动窗口,然后求每次滑动后当前窗口内元素的最大值。这种题第一眼看到的思路是O(n*m)的方法,从第一个元素开始遍历,然后内循环在窗口范围内查找最大值,这种方法...

发布于 2019年06月29日
评论(4)

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

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

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

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日
评论(3)

新梦战0.26 userdata 报错分析

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

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

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

博文
51
朋友
10
评论
395

最新评论

匿名
发布于 2020年05月25日
请问快快 现在还做游戏吗?更新一下博客内容吧,说点梦战的消息
又一年
匿名
发布于 2020年05月19日
刚了解到梦战 十几年的梦幻老玩家了 真的很怀念一群队友抓鬼聊天吹牛逼的日子 现在已经找到不到了
梦战杂记
匿名
发布于 2020年05月08日
90后(92)、山东人、梦幻、梦单、编程、许嵩、人在北京 期待成为属于你自己游戏的玩家
又一年
13328758297
发布于 2020年04月29日
学习过程,日记,我也是刚毕业没多久的,小公司做安卓开发,群主我是你的粉
又一年
13328758297
发布于 2020年04月29日
群主牛批,大佬,有空多写写日记
又一年
匿名
发布于 2020年04月29日
泪目
zzxz12
发布于 2020年04月25日
有事一年,希望有一天能够看到旭梦魔心的剧情完结,也祝你诸事顺心
又一年
w1248517085
发布于 2020年04月15日
看来你已经有段时间没来过了呀
关于
匿名
发布于 2020年04月07日
598266328@qq.com 求大神给我一个梦战随便一个版本吧 ,老玩家
致所有梦战玩家
ADIS
发布于 2020年03月31日
断断续续玩了两年你的梦单,不知不觉你都走上社会了,祝诸事顺利!
又一年
© 2018 MoodBlog 0.2 个快快 作品 | 参考主题: mathilda by fuzzz. | 鲁ICP备16047814号