自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注于网络编程,游戏后台,高并发

天天积累,天天成长,喜欢开源 https://github.com/shonm520

  • 博客(14)
  • 资源 (3)
  • 收藏
  • 关注

原创 一个故事读懂git基本工作方式

快毕业了,张小明要完成毕业论文,限期3个月完成。负责论文的李老师会定期要学生上交论文,抽查论文完成的情况。而且还规定要保留原稿,以证明论文不是抄袭的。由于论文篇幅很长,内容繁杂,而且那时候还没有计算机,不能写电子文档,修修改改是避免不了的,所以张小明自己想了一个法子,来对付论文。张小明每次写一段论文时,都先在草稿本上写,哪怕修修改改写的很乱也没有关系,因为只有他一个人看得到。在草稿本上修改...

2018-07-31 10:26:35 532 1

原创 lua 迭代器的实现

lua迭代器的用法为:for k, v in (i)pairs(t) do  print(k,v)end我们搞懂for...in做了什么的就明白上面代码的实现了。其实for..in后面需要一个迭代函数,该函数可以有两个参数,一个是状态常量,一个是控制变量。例如:local ipairsIter = function(t, i) i = i + 1 local ...

2018-07-20 12:34:36 417

原创 一个典型reactor网络模型实现

这些天一直在研究网络编程源码,发现很多开源项目都用到了reactor网络模式,例如libevent,skynet,muduo等等。现在对reactor模式也有了一定的认识。Reactor模式是编写高性能网络服务器的必备技术之一,它具有如下的优点:1)响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的;2)编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免了多...

2018-07-16 23:40:03 2544 3

原创 skynet网络部分剖析(三) socket消息的转换

skynet所有的消息最终会被lua层捕获,socket消息也不例外。上篇讲到了skynet的网络模型及epoll,所有的消息都是在epoll中发出的。那么网络消息又是如何转换为skynet服务间的消息的呢?skynet将不同的网络消息分类,例如连接消息,socket读数据消息等等。socket消息转换为skynet服务间的消息在skynet_socket_poll函数中体现:int ...

2018-07-13 15:19:36 2013

原创 skynet网络部分剖析(二) reactor模型

skynet是基于reactor网络模型的,并且他的网络层使用单线程。因为云风大大认为即使是代码量稍大一些的单线程程序,也会比代码量较小的多线程程序更容易理解,出 bug 的机会也更少。而且经典的网络服务程序,如 redis nginx 并没有因为单线程处理网络 IO 而变现得不堪,反而有不错的口碑。既然是reactor模式,就必然有同步事件分离器Synchronous Event Demul...

2018-07-12 18:27:06 1729

原创 skynet网络部分剖析(一) socket的状态

最近看了一些开源的网络库源码,有libevent,muduo,redis,类nginx等等。再看skynet网络部分就觉得很容易了,因为他们都是基于reactor模式,套路都差不多。不过skynet的网络部分要稍微复杂点,因为他最终要面向的是lua逻辑端。为了让lua socket api这块设计的合理,好用,整个网络架构上相比前面介绍的网络框架会有点绕,比方说socket的状态,比其他框架要多出...

2018-07-12 13:31:42 2211 5

原创 白话TCP运输控制(二) -- TCP的流量控制

上篇讲的是拥塞控制,这篇讲流量控制。还是以运输粮食为场景。虽然运输的拥塞控制能够在运输效率和拥塞之间达到平衡,但是运输粮食的整体效率还受一个关键因数影响,那就是对岸西村粮食的卸货能力。假设粮食运送到对岸后,要卸放在一个仓库里,随后被运往其他地方。如果运输的太快,仓库载货能力有限,粮食又没有及时被消耗,工人们只好等待仓库腾出地方来卸下新的粮食。显然这样会影响这个工程的效率。后来工人们又想了一...

2018-07-11 15:58:27 623 5

原创 白话TCP运输控制(一) -- TCP的拥塞控制

tcp的运输控制分为tcp流量控制和tcp拥塞控制,这里先讲tcp的拥塞控制。为了讲清楚tcp的拥塞控制,还是利用那个渡河的场景。为了更好的说明问题,这里把渡人换成搬粮食。话说东村要往西村运输粮食,只能走水路。每天都会有大量的粮食从东村经码头运往西村。由于工作量繁重,运输工人们都希望能尽快把粮食运输到西村。加上水面交通繁忙,各式各样的商船客船往来络绎不绝,更加加大了搬运的困难性。在开始...

2018-07-11 12:27:13 1076 2

原创 白话讲解Nagle算法和延迟确认

以前对nagle算法有耳闻,利用TCP_NODELAY选项可以禁止他。然后看到延迟ack时,心想TCP_NODELAY选项与他有没有关系呢。其实没有,TCP_NODELAY只是用来禁用nagle算法的。关于他们之间的关系倒可以好好研究下。有以下一个场景,村东和村西隔着一条大河,有几条船在两岸摆渡。由于每次要求过河的人只有一个,如果来一个人就将那个人摆渡过去(假设船只足够多),那势必运输效率非常低,...

2018-07-10 21:39:55 7657 1

原创 一个muduo的简单实现

前篇大致介绍了一下muduo,这篇探讨一下大致的代码实现。muduo是基于反应堆reactor,且one loop per thread模式的。网络服务器两大类型的socket是监听socket和连接socket,我们可以在两种各自的线程里面对他们进行操作,每个线程里有事件循环来处理各种io事件。我们知道reactor模式是基于事件回调的,为了处理好每个事件的回调,我们先构造一个事件结构体...

2018-07-10 13:32:45 5076 3

原创 linux网络编程惊群现象模拟

对于linux服务器的惊群现象早有耳闻,只是不知道他的具体场景,如今在学linux网络编程多进程模型下,正好遇到这个问题。如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程、多线程、异步事件驱动常用的三种模型。最经典的模型就是Nginx中所用的Master-Worker多进程异步驱动模型。今天和大家一起讨论一下网络开发中遇到的“惊群”现象。今天周末,结合自己的理解和网上的资料,彻...

2018-07-07 14:34:15 303

原创 listen,accept的思考

在网络编程调用listen,accept的时候,我时不时会有这样的疑问:究竟listen函数的第二个参数指的是什么,虽然大致知道是连接队列的意思。但是面对错综复杂的网络环境,特别是在高并发编程中,完全搞清楚他的真实含义很有必要,不至于担心连接跟不上,导致连接这块出问题,至少出了问题能做到心中有数。服务器建立socket连接要调用listen监听socket。listen的第二个参数backlog是...

2018-07-06 22:31:54 308

原创 redis 源码学习笔记--跳跃表简单编码实现

要理解SkipList,得先从LinkedList说起。LinkedList 增删查改的时间复杂度都是O(N),它最大的问题就是通过一个节点只能reach到下一个节点(Double LinkedList 是一种改进方案),那么改进的思路就是通过一个节点reach到多个节点,例如下图:这种情况下便可将复杂度减小为O(N/2)。这是一种典型的空间换时间的优化思路。SkipList则 更进一步,采用了分...

2018-07-04 12:25:08 292

原创 redis 学习笔记--hash表的渐进式rehash

关于hash表,前面有文章介绍过,其原理并不难。redis的数据库使用字典来作为底层实现的,对数据库的增删查改操作也是构建在对字典的操作之上。redis的字典使用hash表作为底层实现。redis作为一个广泛使用的内存数据库,时间和空间效率都是至关重要的。为了使时间效率和空间效率达到最大化,redis中的hash表设计普通的hash表又有什么区别呢?我们知道当hash表满员时(或负载因...

2018-07-02 18:41:33 4842 4

windows 小游戏代码

包含,两个经典的游戏代码 俄罗斯方块 扫雷 很好的windows 编程学习资料

2010-08-04

Windows程序设计中文版.rar

学习windows编程经典的资料! 原 作 者:Charles Petzold 译 者:余孟学

2010-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除