saf (saf application framework) 是一个高并发的c++应用程序框架,它以RPC为基础,提供了动态载入模块的特性,为服务端开发人员只用关注于程序的业务逻辑,就可以实现远程方法调用,而不会关心底层的通信细节,另外,它还内置了一个简单的http server,用来查看服务器的运行状态。
1:基于 google protobuf 的 RPC 框架
2:内置简单的http server用于查看系统状态
3:模块化的管理,只用在lib中增加动态库就可以达到增加rpc service的目的
+--------------+ +-----------+ +------------+ /| | | | | | / | Handle Thread| --->- |Net Thread \----->| Decode |\ / +--------------+ | +-----------+\ +------------+ \ +-----------------+ / +--------------+ | \ \>| |/ | | | \ />|Dispacher Thread +-----+ Handle Thread+---->+ +-----------+ \ +------------+ / +-----------------+\ +--------------+ | | | \ | |/ \ +--------------+ | |Net Thread +----+>+ Decode / \ | | | +-----------+ \+------------+ \ | Handle Thread| | \ \ +---------+----+ | \ \ | | \ \ | | \ +--\---------+ | | \ | |<-------------------------------------+ | \ | Encode | | \ +------------+ | \ +------------+ | \| | | \ Encode +<------------------------------------------------+ +------------+
1:下载源码,它依赖与sails公共库:
git clone --recursive https://github.com/sails/saf.git
2:执行编辑脚本:
./build.sh
3:编译测试样例:
cd example ./build_test.sh
4:运行测试,比如运行echo_sync:
./src/server ./example/echo_sync/client
5:增加子模块,配置conf/sails.json:在modules里增加一行,name是子模块名,path是子模块动态库的路径
笔记本: T6400 @ 2.00GHz, cpu num:1, cpu cores:2服务端和客户端都运行在这台电脑上
| server handle threads | client call threads | earch threads call num | run time | |-----------------------+---------------------+------------------------+-----------| | 1 | 1 | 100000 | 0m14.674s | | 1 | 5 | 100000 | 0m30.896s | | 1 | 10 | 100000 | 1m0.848s | | 2 | 1 | 100000 | 0m14.409s | | 2 | 5 | 100000 | 0m27.911s | | 2 | 10 | 100000 | 0m50.760s |
2w tps.因为客户端和服务器在同一台电脑上,所以测试结果会比实际更低.
内置http服务器的默认绑定在端口8001上,所以可以通过输入localhost:8001/stat来查看统计信息:
7.01原生支持SAF ,原來在6.X開發的項目只能升級到7.01。 7.1開始不支持SAF,設計頁面打不開。 7.2安装不含SAF,但官方网站已提供插件下载,只支持7.2,所以7.1直接跳过。 http://plugins.netbeans.org/plugin/43836/swing-application-framework-support
Sun已经决定在Java 7中放弃JSR 296:Swing Application Framework(SAF)。规范的领导者Alexander Potochkin在其博客中写到:\ 在多次讨论后,大家并没有就Swing Application Framework API达成共识,我们觉得还需要进一步设计才行。 \我们已经将SAF API提交至JDK 7 M5了,进度就在那摆着呢,时间太紧了,所
SAF 中抽象工厂的实现 引言 本文是《Developing Application Frameworks in .NET》的读书笔记。SAF 是书中的一个范例框架,意为 Simple Application Framework(简单应用程序框架)。这篇文章主要向大家说明了SAF中抽象工厂模式的实现方式。 设计思想概述 抽象工厂是很常用的一种创建型模式,它的主要作用在于向程序员屏蔽了创建对象的复杂
本文是《Developing Application Frameworks in .NET》的读书笔记。SAF 是书中的一个范例框架,意为 Simple Application Framework(简单应用程序框架)。这篇文章主要向大家说明了SAF中抽象工厂模式的实现方式。 设计思想概述 抽象工厂是很常用的一种创建型模式,它的主要作用在于向程序员屏蔽了创建对象的复杂细节,在获取对象时,只需要在工厂
SAF是4.4(API 19)开始使用的数据访问机制。包含以下几个部分: 1. Document Provider:是DocumentsProvider的字类,用来让存储设备显示内容,Android自带Downloads,Images,Videos等这几种。 2. 客户端app:使用ACTION_OPEN_DOCUMENT和ACTION_CREATE_DOCUMENT的intent以及获取返回内容
主要内容:1.Disruptor介绍,2.Disruptor 的核心概念,3.demo1.Disruptor介绍 Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 其实Disruptor与其说是一个框架,不
一个应用程序开发框架。作者实现了很多控件效果,方便其他开发者各取所需。所实现的效果包括:打分星星、响应点击动作、旋转按钮效果、根据文字多少改变大小的UILabel等等效果。 [Code4App.com]
2.5.应用程序框架 应用程序框架是Android程序的执行环境,也是开发者的强大工具箱。另外,它也拥有Android平台中最全面最完善的文档。良好的文档可以激发广大开发人员的创意,也可以为他们构建优秀的应用程序提供有力的支持。 在应用程序框架中,你可以发现很多为Android设计的Java库。除此之外,也有系统服务的支持,比位置、传感器、WiFi、电话等等。 在后面的学习与实践中,将把我们的主要
我使用Hadoop构建了一个在分布式环境中搜索类似图像存储的应用程序。但是Hadoop不支持实时处理,这就是响应时间长的原因。我知道Storm是另一个大数据分析应用程序的框架。但是我很困惑我们是否可以使用Storm来实现这种应用程序。 有没有人建议什么样的应用程序可以有效地使用Storm框架。
为啥最后打印类似100475,100425之类的值? 我看写这个的人说会打印200000.
问题内容: 我正在设计和构建桌面应用程序。我正在考虑使用eclipse或netbeans作为此应用程序的基础。但是,我从未在这两个平台上构建过。我个人倾向于使用netbeans,因为它像该平台一样容易学习。但是,我想问一下实际上已经在这些平台上构建的人员,在此之前哪个更易于使用? 我对easyr的个人定义如下: 易于上手 一致的逻辑API 好的文档 易于构建和部署 非常感谢, 乔希 问题答案: 关
作为对《C++ Concurrency in Action》的中文翻译。
我想知道这种情况下的最佳实践是什么: 我正在模拟一个电梯系统,该系统目前正在将所有输出转储到控制台。这不容易追踪,而且很难想象每层楼的问题状态以及当前算法的效率。设置如下: 一对人-生产者/消费者创建随机的人,并将他们放置在每个楼层的特定目的地。每一层都有供人们上下活动的问讯处。电梯与每层楼和一个调度器交互,以决定下一步去哪里以及接谁。 将此设置表示为gui时,将每个线程/对象的当前状态转换为gu