http://www.jianshu.com/p/37281543f506

而描述事物的有限状态机模型的元素由以下组成:

  • 状态(State):事物的状态,包括初始状态和所有事件触发后的状态
  • 事件(Event):触发状态变化或者保持原状态的事件
  • 行为或转换(Action/Transition):执行状态转换的过程
  • 检测器(Guard):检测某种状态要转换成另一种状态的条件是否满足

在demo中做了简单的状态机,我做的工作被这篇几个组成部分彻底包含了,这些还考虑了更多。

http://www.linkedkeeper.com/detail/blog[……]

Read more

2017年7月16日:

http://blog.csdn.net/w174504744/article/details/50560892

大量在线的游戏服务架构的设计:

Gate:负责客户端连接以及将消息转发至GameServer

GameServer:主要的游戏进程,文中说做逻辑功能的话单线程就够了。

DBManager:实现数据库的读写,方便异步读写。

GameManager:负责管理所有的GameServer,GameServer之间的消息转发,提供广播到所有Game的功能。

客户端连接Gate,Gate连接GameServer,GameSer[……]

Read more

以为是挺重要的一章,虽然有硬件部分,但抽象出来之后提供的API是软件开发常用的基础API,做笔记可以让我读的更细,详细了解一下,也许以后用到了呢。

Linux有一部分固定内存分配给内核,这部分属于保留内存,其余的内存被分为两类,连续内存和非连续内存,两种内存分配算法不同。“页框管理”和“内存管理”描述两种处理连续内存的不同技术,“非连续内存区管理”介绍了非连续内存的第三种技术。

页框管理

Linux在不同的架构上统一采用4KB页框大小作为标准的内存分配单元

页描述符

内核必须记录每个页框当前的状态,例如需要区分哪些页框属于用户进程,哪些页框属于内核代码或者数据;还要区分哪[……]

Read more

2017年6月25日

架构设计

http://blog.sina.com.cn/s/blog_5921d51f0101r7e3.html

小软件开发和大软件开发确实不同,自己一个人开发独立产品很简单,会忽略很多事情。

这篇文章倒让我认识到大公司里团队集体开发的软件迭代要求周期短的同时,更新代码量大,维护人数多,架构层面一定要解耦合理。

并且,架构也是要经常迭代更新的,虽然过程肯定会很痛苦,但不迭代总会导致产品越来越大越来越难改动。

http://blog.csdn.net/a1259109679/article/details/48088793:[……]

Read more

当小说读吧,争取两天看完。

——2017年6月25日

编程是注重实效(pragmatism)的,不应该局限于任意特定的技术,而是应该拥有足够广博的背景和经验基础。注重实效的程序员不仅要完成工作,更要完成的漂亮。

注重实效的程序员有以下特征:

  • 早期的采纳者/快速修改者,具有技术和技巧上的直觉,喜欢试验各种新技术。
  • 好奇
  • 批判的思考者
  • 有现实感
  • 多才多艺。

要保持学习,每天坚持。

注重实效的哲学

根据职业发展、项目和每天的工作,为自己和自己的行为负责,不害怕承认无知和错误,这一点一定要诚实。

要防止破窗效应,低劣的设计,错[……]

Read more

1、就像google test那类,使用案例如下,TEST本身是一个宏。

具体实现方法见博文:传送门

每个TEST宏会建立一个新的对象,并且在构造函数中把新对象注册进全局对象。

2、取自redis,使用代码如下:

其实run_with_period其实就是替代if(xxx)的宏,但我们很多时候都习惯使用condition作为宏定义,使用方法:if(condition(xxx))

和例子相比就在多了一个if,第一次见到有点新奇,又觉得是个[……]

Read more

苏菲的世界

书中书,很有意思的构思,算作我欧洲历史的启蒙书籍吧,读后感传送门

雾都孤儿

最开始是在《About Love》的电影里,Time的爸爸说喜欢狄更斯,留了第一个印象;

再其次是在图书馆又偶然看到,便借过来了。

不了解成为名篇的原因,觉得亮点…只有作者的反讽?对盗贼这个行业,对济贫院,还有对某种社会现象。

…但私以为这个真的构不成足够成为名篇的理由。

中国历史常识(9.6%-2017年6月26日):

急功近利的社会稀缺两样东西,一是常识认识,二是历史反思。

读完第一部分感觉更多是小故事,确实扣书名。

人类的群星闪耀时(5[……]

Read more

哲学书的话,读过叔本华的作为意志和表象的世界,但那本对当时的我太晦涩了,没读完,对哲学产生过一点感觉,但就一点。

这一次读苏菲的世界感触倒挺多的,书里没有宣扬哪一种主张,而是把哲学发展过程向你徐徐展开。看到最初说世界万物可以由“空气,火,土”组成,从现在的角度来看真的是很蠢很蠢的观点,但在当时没有化学没有有物理学科的年代里,倒还真是一个挺大胆的想法,前半部分的哲学观念对我没有太多冲击,但是那种批判的精神和大胆的思考真的是很值得学习的。

随着书本的深入,书本作为小说的剧情引人入胜,但作为哲学史书,读完了我还是不能区分苏格拉底和莫克里特斯的差异,只是匆匆的过了一遍,还是不太会读书,胡乱[……]

Read more

其实本文也是深入理解Linux内核的读书笔记后续

调度基础

很多书中将进程分为CPU密集型和I/O密集型,另外还有一种分法:

  • 交互式进程
    这些进程与用户进行交互,因此会花很多时间等待鼠标键盘的输入,当接受输入之后,必须很快得到相应,否则系统会显得很迟钝。
  • 批处理进程
    不必与用户交互,常运行于后台。
  • 实时进程
    典型的是视频音频应用程序、机器人控制程序等,这些进程有很强的调度需要,不应该被低优先级的进程阻塞,应该有很短的响应时间。

Linux中调度算法可以明确所有实时程序的身份,但没法区分交互式程序和批处理程序。Linux实现了基于进程过去行为的启发式算法以确[……]

Read more

曾经有个问题一直在困惑我,分布式程序如何在宿舍调试和测试。扩容缩容是否正确,灾害发生时容灾能不能自动启动。当然对现阶段的我来说最重要的还是功能本身的验证。

这两天百步梯那群怪人又在群里讨论后台开发的一些问题,因为大牛多讨论就很吸引人很有意思,忽然就有好多点子想写一些好玩的程序,可怎么用一台机器模拟千百台机器来开发和测试分布式程序呢?

我会用zookeeper,但不愿意用java阵营的利器,想先用python造轮子实现一些分布式的服务管理和同步原语做第一个有意思的程序,可是写了怎么测试呢?
然后我刚刚才忽然想到,用docker啊!
(为什么以前从没想到过…浪费那么多好时光)[……]

Read more