木东驿站 - 时光不语,静待花开 - 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
评论
376

最新评论

匿名
发布于 2020年02月19日
再相见,仍是少年。
又一年
星新一
发布于 2020年02月18日
加油了,我12年毕业,13年初就去北京至今,一直在中关村,上地那个地方我工作了4年,目前在地铁车道沟,当然现在常年出差了......北京值得好好去努力,有很多机会,加油了!相识梦战,感谢!
又一年
校友大毛
发布于 2020年02月18日
一直在关注你的更新,我也感觉你去字节跳动是一个最优选,也可能是因为同学在那经常跟我介绍有关。这是一家有活力的公司,就像你一样积极上进,也正如它的名字不断跳动、勇攀高峰。从你更新第一篇木东笔记,到如今你剑已配好初涉江湖,只相劝江湖不易,再相见,希望仍是少年。ps:同是烟大校友,好想和你交流一下啊。
又一年
匿名
发布于 2020年02月15日
125351684@qq.com求发最终版本
致所有梦战玩家
匿名
发布于 2020年02月15日
276588860@qq.com求发最终版本
致所有梦战玩家
550443195
发布于 2020年02月14日
怎么最后没选择在网易呢,感觉看你的人生经历很励志啊,让我都觉得自己不努力都不行了,哈哈。
又一年
550443195
发布于 2020年02月14日
一个游戏,一份坚持,也成就了你的一生,我想说,很多从学校学了四年出来的大学生什么都不会,而你靠这份坚持能自学到做一个单机游戏,我只能说佩服,有这份毅力,以后不管做什么事,你将都会成功。
关于
匿名
发布于 2020年02月12日
674687394@qq.com 求发
致所有梦战玩家
匿名
发布于 2020年02月10日
864720897@qq.com 求发最终版本
致所有梦战玩家
个快快
发布于 2020年02月10日
加油
又一年
© 2018 MoodBlog 0.2 个快快 作品 | 参考主题: mathilda by fuzzz. | 鲁ICP备16047814号