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

二叉堆瞎折腾记录

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

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

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

新梦战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日
个快快(木东)
喜欢记录文字的码农

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

博文
50
朋友
10
评论
341

最新评论

匿名
发布于 2019年11月09日
alert("不听不听,王八念经!!")
耀中窥人
天门圣皇
发布于 2019年11月07日
初识不知曲中意, 再听已是曲中人。只有参与者才能体会到快快的价值,如果明珠蒙尘,期待未来亲手挖出。
梦战杂记
天门圣皇
发布于 2019年11月07日
谢谢快快,这是快快最美好的回忆,也是分享给我们的最宝贵的财富。
匿名
发布于 2019年11月07日
快快长大了,加油!
关于
匿名
发布于 2019年11月05日
求发邮箱 weilikepop@yeah.net
致所有梦战玩家
匿名
发布于 2019年11月02日
求发邮箱1140021372@qq.com
致所有梦战玩家
匿名
发布于 2019年10月27日
个快快 你是最棒的 永远支持你
致所有梦战玩家
匿名
发布于 2019年10月26日
我和作者一样大
lzq
发布于 2019年09月27日
求发邮箱862812375@qq.com
致所有梦战玩家
匿名
发布于 2019年09月18日
382934033@qq.com 也给我发个最新的谢谢
致所有梦战玩家
© 2018 MoodBlog 0.2 个快快 作品 | 参考主题: mathilda by fuzzz. | 鲁ICP备16047814号