随笔分类 -  fflib

C++类库fflib的相关示例
摘要:出于个人爱好和某种需求,我再16年对python的解释器产生了浓厚兴趣,并且下定决心重新实现一个版本。我个人再游戏服务器开发中,对c++嵌入lua和python都有着丰富应用经验,自认为对二者的优劣有着深刻的理解。python针对lua的最大优势是python是完备的程序语言,类、模块包括丰富的库和方便好用的字符串操作,可以说python用来实现功能会优雅很多,而lua最大的优势就是小巧高效,另外lua的lua_state是可以有多个实例的,这样就可以多线程使用lua(一个线程单独一个lua_state),而python解释器因为有全局解释器锁,所以无法实现多python解释器实例。考虑到在嵌入python的应用场景中,所用到python的功能都是比较简单通用的功能,比如类、模块,函数,一些复杂的类库也不常用,所以我就想实现一个不使用全局解释器锁,可以有多个python解释器锁的解释器。所以16年底,我自己实现了一下python解释器第一版,第一版是使用AST虚拟语法树直接解析的,虽然做了必要的优化,但是性能。。。。仍然不忍直视。平常我一直吐槽python跑的没有lua快,但是吐槽是一 阅读全文
posted @ 2017-02-27 19:21 知然 阅读(2203) 评论(2) 推荐(1) 编辑
摘要:fflua 发布了有段时间了,很多网友都用了,并且提供了一些很好的反馈。其中一个就是c++接口注册到lua中时,对引用的支持。这样使用起来更加方便。 阅读全文
posted @ 2015-06-12 14:56 知然 阅读(1219) 评论(0) 推荐(1) 编辑
摘要:frpc是c++ 网络通信库 全异步 + 回调函数 机制,支持普通二进制协议、protobuf、thrift,基于Broker模式设计,设计精巧,代码量小,核心ffrpc的代码只有1000行 接口的性能监控是集成式的,使用者自动获得了接口性能数据,方便优化接口 阅读全文
posted @ 2013-11-24 17:00 知然 阅读(2980) 评论(0) 推荐(2) 编辑
摘要:ffpython is a C++ lib, which is to simplify tasks that embed Python and extend Python. 阅读全文
posted @ 2013-09-29 14:01 知然 阅读(1137) 评论(0) 推荐(0) 编辑
摘要:游戏服务器程序中,经常需要生成全局的唯一ID号,这个功能很常用,本文将介绍一种通用ID生成组件。游戏服务器程序中使用此组件的场景有:创建角色时,为其分配唯一ID;创建物品时,每个物品需要唯一ID;创建宝宝、灵兽时需要唯一ID 阅读全文
posted @ 2013-09-05 12:22 知然 阅读(6648) 评论(8) 推荐(0) 编辑
摘要:节点之间通信采用异步消息、回调模式 Server必须很容易注册到Broker上 C++/EPOOL实现网络通信,保证实时性,支持逻辑层python实现,支持热更新 该框架能够容易的构建单个区组的构架 该框架支持跨区组通信,这也是Broker模式的优势,节点之间通信不需要知道对方的位置,只需要知道对方的名称 这个框架的名字叫RedRabbit。 阅读全文
posted @ 2013-07-07 18:52 知然 阅读(3658) 评论(6) 推荐(3) 编辑
摘要:FFRPC 已经陆陆续续开发了1年,6月6日这天终于完成了我比较满意的版本,暂称之为 V0.2,FFRPC实现了一个C++版本 的异步进程间通讯库。我本身是做游戏服务器程序的,在服务器程序领域,系统是分布式的,各个节点需要异步的进行通信, 我的初衷是开发一个易用、易测试的进程间socket通信组件。实际上FFRPC 已经是一个框架。 阅读全文
posted @ 2013-06-06 09:42 知然 阅读(7267) 评论(17) 推荐(1) 编辑
摘要:在服务器编程中,经常会用到python脚本技术。Python是最流行的脚本之一,并且python拥有定义良好的C API接口,同时又有丰富的文档,与C++结合非常的适合。通常情况下使用C++封装机制,而用python脚本实现策略或者是控制。使用python和C++结合的技术拥有如下优势:  主体系统使用C++实现,保持系统的高效。  控制部分使用python,增加开发效率,python的内存垃圾回收,丰富的类库都使C++开发者获益匪浅。  Python脚本可以运行期重载,可以实现控制部分不停机热更新。 C++与python的编程范式有很大不同,当使用python C API调用python时,python中的一些特有机制会给C++开发者带来很多困惑。常常使用python C API时需要注意如下几点:  Python 使用引用计数管理内存,调用python C API时对于返回值返回的是借用的引用还是新的引用,需要根据文档仔细确认。否则轻则出现内存泄露,重则程序崩溃。  Python中的数据结构与C++的有很大不同。Python常用的有tuple,list,dic 阅读全文
posted @ 2013-05-09 20:36 知然 阅读(5384) 评论(0) 推荐(3) 编辑
摘要:ffpython is a c++ lib,which is to simplify task that embed python and extend python. For example, call python function, register c++ function to python, register c++ class to python. Only one implement c++ header file. 阅读全文
posted @ 2013-05-04 14:36 知然 阅读(2290) 评论(0) 推荐(3) 编辑
摘要:近来在完成通用的数据分析系统ffcount时,使用了ffrpc完成了事件源和service的通信。顺便对ffrpc进行了优化和精简,接口也更易用一些。在跟一个朋友讨论多线程和多进程的问题时,引发了如何才能是系统更加scalability的思考。把自己的一些想法用ffrpc写了一个demo。无论是使用多线程还是多进程,并发都是为了使系统在吞吐量或响应延迟等特性上达到更佳的效果。那么什么样的设计能够尽量保证scalability呢? 如何更好的使用多线程,或者说使用多线程应该遵循什么样的原则才能避免麻烦。 如果线程的资源不足以满足要求,那么如何利用多进程的资源但却不至于大范围的修改系统实现。 阅读全文
posted @ 2013-03-03 18:13 知然 阅读(2168) 评论(0) 推荐(2) 编辑
摘要:FFLIB框架拥有如下的特点:使用多进程并发。Broker 把Client 和Service 的位置透明化, Service 的接口要注册到Broker, 所有连接Broker的Client 都可以调用(publisher/ subscriber),远程调用必须绑定回调函数,利用future 模式实现同步,从而支持单元测试,消息定义规范简单直接高效,所有service的接口性能监控数据自动生成,免费的午餐,Service 单线程话,更simplicity 阅读全文
posted @ 2012-07-30 19:52 知然 阅读(31199) 评论(15) 推荐(4) 编辑