IT技术博客大学习 共学习 共进步
首页 / godorz
IT 2015-10-04 23:07:00 / 累计浏览 2,660

行为树及其实现

在游戏AI中, 常见的实现有决策树、状态机等, 它们各自存在着不足. 以状态机FSM为例, 它非常难以通用和扩展, 状态转化的复杂度随着每个新增状态将变得越发缭乱. 考虑到可能存在多个并行的状态机, 它们之间的交互更是复杂交错, 难解难分. 于是大神们创造了行为树(BehaviourTree),

IT 2013-07-08 22:53:02 / 累计浏览 3,000

kmemcache源码浅析

kmemcache是memcache的linux内核移植版, 这两天断断续续的看了其网络方面的实现. 简单来说, kmemcache不落窠臼, 摈弃了epoll通知机制. 它借助skb的回调函数, 实现packet级别的调度. 在网路模型上, kmemcache分为一个dispatcher和多个workers(均为workqueue线程). dispatcher服务于TCP和unix domain sockets, 它将新建的连接丢给某个worker. 除此之外, workers还处理UDP请求.

IT 2013-05-21 23:00:51 / 累计浏览 5,960

fatcache源码浅析

fatcache是twitter开源的缓存服务, 可以认为是SSD版的memcache(索引还是在内存). 本文简单分析下, 做个备忘。代码虽然很短, 还是能学到一点知识, 尤其是随机写转为顺序写的思路. 最牛逼的是对删除请求, 只删索引不改数据的机制真是简单高效.

IT 2012-01-29 20:21:31 / 累计浏览 6,060

libevent源码浅析: http库

libevent自带了一个http库,用它可以很简单的实现一个http服务器,本文非常简单地分析之. evhttp evhttp库有几个主要的结构体,它们之间的联系非常龌龊: 其中,结构体event, min_heap, evsignal_info, eventop, event_base在前面几篇文章中已经介绍过了,这里不再啰嗦. evbuffer evbuffer用于读或写缓冲,图示为: 和evbuffer有关的外露接口主要是: //从文件读数据到缓冲,读取量为max(howmuch, 4096) int evbuffer_read(struct evbuffer *buf, int fd, int howmuch); //把缓冲写出文件 int evbuffer_write(struct evbuffer *buffer, int fd) evbuffer比较简单,不多介绍. evh

IT 2012-01-29 20:20:00 / 累计浏览 3,540

libevent源码浅析: 定时器和信号

这篇文章将讲讲libevent对定时器和信号事件的处理. Timer事件 反应堆event_base包含了一个最小堆min_heap结构体的实例,以此维护注册到这个反应堆实例的定时器事件: struct event_base { //其他成员 struct min_heap timeheap; }; 回顾一下最小堆min_heap: typedef struct min_heap { //p指向一个动态分配的数组,数组元素是event指针. struct event** p; unsigned n, a; // n表示目前保存了多少元素,a表示p指向的内存能够存储event指针的个数 } min_heap_t; 可以看到,它包含一个连续的内存块用于存储定时器事件.针对min_heap的操作主要有: static inline int mi

IT 2012-01-29 20:19:09 / 累计浏览 3,400

我的大学

这是一篇很诚实很man show但却毫无营养的自述文,慎入. 也许很少有高中同学知道,尽管成绩一向不错,但实际上我对数学充满了厌恶.高中3年机械式的训练,让我实在无法忍受,于是高考填报志愿时选了一个文科的方向,自以为从此天高云厚,憧憬着大学生活的我完全没有意识到此后的命运弄人带来的打击会有多大. 一分之差被选择了计算机专业,大学的傻逼生涯就此埋下了伏笔.整个大一都是在迷茫中度过,对于在大学第一学期,本应是最有干劲的新生来说,高等代数62分和数学分析60分已经足以说明了我的自暴自弃,虽然如此,此后的我居然一直没在数学之上挂科,这是很难想象的,唯一可能的答案也许是尚有一点点不甘吧.维系着成绩上的苟延残喘之余,所有的郁闷都被我发泄在读书上,我阅读了各种名人的传记,从曹操到希特勒,从艾森豪威尔到巴顿,从切格瓦拉到卡斯特罗,原来,所有人都在自己的方向一步步的努力,这个发现便是大一最大的收获了. 让人

IT 2012-01-29 20:18:37 / 累计浏览 3,520

初探Linux网络协议栈

译者注: 原文写于2003年,文中描述的不少内容已经发生了改变,在不影响愿意的情况下,我擅自增删了一些内容. 翻译过程中找到的好资料: How SKBs Work Evaluation of TCP retransmission delays Congestion Control in Linux TCP Anatomy of the Linux networking stack — From sockets to device drivers Guide to IP Layer Network Administration with Linux Linux内核源码剖析 —TCP/IP实现 Understand Linu

IT 2012-01-29 20:12:40 / 累计浏览 10,620

vim入门,进阶与折腾

作为编辑器之神,vim一直是我编辑文本的不二选择,哪怕其坎坷的学习曲线让人头疼不已.末学总结一下经验教训,以作备忘.