11 2011 档案

摘要:例子一单个源文件 main.c例子二==>分解成多个 main.c hello.h hello.c例子三==>先生成一个静态库,链接该库例子四==>将源文件放置到不同的目录例子五==>控制生成的程序和库所在的目录例子六==>使用动态库而不是静态库例子一一个经典的C程序,如何用cmake来进行构建程序呢?//main.c#include <stdio.h>int main(){ printf("Hello World!/n"); return 0;}编写一个 CMakeList.txt 文件(可看做cmake的工程文件):projec 阅读全文
posted @ 2011-11-24 14:15 tangr206 阅读(298) 评论(0) 推荐(0)
摘要:1 // 工程名 2 PROJECT (HELLO) 3 4 // 设置变量 5 SET(SRC_LIST main.c) 6 7 // 打印变量 8 MESSAGE(STATUS "This is BINARY dir " ${PROJECT_BINARY_DIR}) 9 MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})10 11 // 生成可执行程序 12 ADD_EXECUTABLE(hello SRC_LIST)13 // 生成库14 add_library(hello static 阅读全文
posted @ 2011-11-24 14:14 tangr206 阅读(402) 评论(0) 推荐(0)
摘要:linux中.o,.a,.o,.so文件的意义和编程实现 linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la*.la: ASCII English text所以可以用vi来查看其内容。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@创建.a库.. 阅读全文
posted @ 2011-11-23 21:36 tangr206 阅读(312) 评论(0) 推荐(0)
摘要:1ICE中间件简介2平台核心功能2.1接口描述语言(Slice)2.2ICE运行时2.2.1通信器2.2.2对象适配器2.2.3位置透明性2.3异步编程模型2.3.1异步方法调用2.3.2异步方法分派2.4订阅/发布编程模型2.5动态服务管理(IceBox)2.6ICE网格计算2.6.1分布式部署2.6.2负载均衡2.6.3注册中心集群2.7IceSSL应用2.8持久化存储(IceFreeze)3ICE平台功能研究小结1ICE中间件简介Ice是Internet Communications Engine的简称,是一种面向对象的中间件平台,支持面向对象的RPC编程,其最初的目的是为了提供类似CO 阅读全文
posted @ 2011-11-23 20:50 tangr206 阅读(1271) 评论(0) 推荐(0)
摘要:作为一个技术人员,你是否在为不断增长的数据量和日益复杂的业务逻辑而头疼不已,杂乱堆砌在一起的庞大业务让系统越来越脆弱,于是你想到了网格,想到了利用分布式来重组一个健壮的系统架构。 随 后,RMI,EJB, WebService,Hessian,http invoke…..一堆名词铺天盖地的向你袭来。面对这么多的技术实现,我们似乎有点难以抉择。EJB太过笨重,webservice的性能似乎有待商 榷。http invoker似乎还不如webservice,Hession的功能似乎又太过简单…. 一个面向对象的,性能极高的,平台和语言无关的分布式应用中间件平台,ICE就是这么一个应该被收入我们技. 阅读全文
posted @ 2011-11-23 20:47 tangr206 阅读(351) 评论(0) 推荐(0)
摘要:ice是一个对象中间件,可用多系统间通信。1. 它提供了slice语言机制,将x.ice映射成各种语言,以消除各编辑语言之间的差别。多语言系统可用。2. 提供了rpc远程调用机制。3. 组件化, 提供了icegrid, icebox, icepack等更为方便 。机制与原理 一、communicator连接器。是ice run time最为主要的, 它包含了一些主要信息: a. 线程池(server, client) b. 日志记录(Ice.Logger) c. 统计(Ice.Stats) d. 对象适配器(Ice.Adapter) e. Ice.Router f. Ice.ServantLo 阅读全文
posted @ 2011-11-23 16:10 tangr206 阅读(717) 评论(0) 推荐(0)
摘要:这一篇我们试试IceBox的简单使用。那先介绍一下 IceBox,IceBox 是一种简单的应用服务器,可用于协调许多应用组件的启动和停止。应用组件可以作为动态库、而不是进程进行部署。例如,你可以在单个Java 虚拟机中运行若干应用组件,而无需使用多个拥有自己的虚拟机的进程,从而减轻整个系统的负担。具体应用可以参考官方文档。首先,我们要改造一样Server类,以实现让IceBox服务接管你的应用。文件名:ServerByBox.javapublic class ServerByBox implements IceBox.Service { private Ice.ObjectAdapter _ 阅读全文
posted @ 2011-11-23 16:08 tangr206 阅读(962) 评论(0) 推荐(0)
摘要:配置文件格式,比如 # Example config file for IceIce.MessageSizeMax = 2048# Largest message size is 2MB Ice.Trace.Network=3 # Highest level of tracing for network Ice.Trace.Protocol= # Disable protocol tracing加载配置方式一: ./server --Ice.Config=/opt/Ice/default_config 这种需要带命令行参数 ./server --Ice.UDP.SndSize = 65535 阅读全文
posted @ 2011-11-22 16:10 tangr206 阅读(2515) 评论(0) 推荐(0)
摘要:PPT1 运行时环境Ice作为一个中间件产品,其使用过程中,有运行时(也称mn time)环境和开发环境两部分。图 Ice核心功能的模块组成图可见,Ice核心功能实际上由六大子系统模块共同分担,分别是通信模块、对象适配模块、线程模块、调用/分派模块、桩和框架模块和插件模块。PPT2 通信模块Icc的通信子系统主要负责对网络连接的管理,涉及范围包括端点、引用、连接及它们的相互关系。利用端点信息可寻址一台主机,端点信息包括协议类型、寻址信息等。引用包含了servant的标识:Identity+facet。一个引用包含一个Identity,但可包含多个端点,这意味着,可以选择任意一个满足要求的端点定 阅读全文
posted @ 2011-11-21 12:03 tangr206 阅读(1200) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/moxiaomomo/article/details/67641801.Ice Run Time 概述 按照个人暂时的理解,Icerun Time具体是指Ice封装好了大部分的API,通过这些API实现分布式应用程序运行时的各种功能。 首先,其中一个重要的部分是通信器,它是Ice run time的主句柄,也是Ice run time的主进入点。另外Ice一个重要的机制是servant定位器,用于控制性能和内存消耗之间的平衡。其他一些同样不可缺少的组成部分接下来将会进行介绍。2.通信器 Icerun time 的主进入点由本地接口Ice::Commun 阅读全文
posted @ 2011-11-21 11:56 tangr206 阅读(795) 评论(0) 推荐(0)
摘要:熟练使用gdb是一个linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。一.gdb简单介绍名称gdb - GNU 调试器提要gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps][-tty=dev] [-s symfile] [-e prog] [-se prog] [-ccore] [-x cmds] [-d dir] [prog[core|procID]]描述 调试器(如GDB)的目的是允许你在程序运行时进入到某个程序内部去看看该程序在做什么,或者在该程序崩溃时它在做什么。GDB主要可以做4大类事(加上一些其他 阅读全文
posted @ 2011-11-21 11:46 tangr206 阅读(505) 评论(0) 推荐(0)
摘要:http://www.cppprog.com/2009/0612/125.html第17章《异步程序设计》网上摘录比较清晰的解释:“AMI是客户端的功能,I = Invoke,客户端调用完后马上返回,保证客户端不阻塞。 AMD是服务器端功能,D= Dispatch, 服务器端相应客户调用过程中,使用AMD可以在处理还没有完成时就提前返回结果,就像在函数中间加个return语句一样,不同的是这个return下面 的语句会接着执行。 还有一点很有特色的是,AMI和AMD是完全互相独立的,也就是说对于同一个interface,客户端不会知道服务器是否用AMD方式相应请求,服务器 端也不会知道客户端是 阅读全文
posted @ 2011-11-21 11:26 tangr206 阅读(1773) 评论(0) 推荐(0)
摘要:服务器端:服务器端通常只有一个通信器(Ice::Communicator),通信器包含了一系列的资源:如线程池、配置属性、对象工厂、日志记录、统计对象、路由器、定位器、插件管理器、对象适配器在通信器内,包含有一个或更多的对象适配器(Ice::ObjectAdapter),对象适配器负责提供一个或多个传输端点,并且把进入的请求分派到对应的servant中去执行。具体实现的部分称为servant,它们为客户端发来的调用提供服务。servant向对象适配器注册以后,由对象适配器依据客户请求调用相应方法。客户端:客户端直接通过代理进行远程调用,就象本地调用一样简单。 通信器Ice::Communica 阅读全文
posted @ 2011-11-21 11:14 tangr206 阅读(967) 评论(0) 推荐(0)
摘要:2009-07-12 13:53:30 作者:毛毛 来源:www.cppprog.com =本文介绍了如何通过命令行参数或配置文件设置ICE的行为在前一篇文章中,大家可能都注意到了一个细节,Ice的初始化函数initialize的输入参数正好是主函数的输入参数,也就是命令行参数(注:辅助类Ice::Application也调用了initialize函数)。Ice的初始化函数得到命令行参数后,抽取出Ice专有参数,并把分析后的配置存入到Ice的属性表中。假设命令行为:MyProg.exe --myoption --Ice.Config=config\ -x a --Ice.Trace.N... 阅读全文
posted @ 2011-11-21 10:44 tangr206 阅读(730) 评论(0) 推荐(0)
摘要:解释: 注册器是指运行注册器的主机,可以是主/从模式的容灾系统;节点1,节点2是指服务器主机,注册器记录和管理多台节点;每个节点上可以运行多个服务器软件Server<xx>这样构成了整个ICEGrid。1. IceGrid的优势: a. Location Service b. On-demand Server activation 按需启动,对于配置的节点(node)无需启动,在客户端向icegrid请求一个服务代理时,icegrid发现这个服务存在但没有被启动,会激活这个adapter所属的server或者让这个apapter向其注册。 c. Application distri 阅读全文
posted @ 2011-11-21 10:32 tangr206 阅读(2580) 评论(1) 推荐(0)
摘要:Ice 提供了一个简单的线程抽象层,用以编写可移植的多线程程序。通过同步原语可以实现不同粒度的并发控制。 1、互斥体 IceUtil::Mutex类和IceUtil::StaticMutex提供了简单的非递归互斥机制。两者完全类似,只是StaticMutex可以静态声明,如下所示: static IceUtil::StaticMutex myStaticMutex =ICE_STATIC_MUTEX_INITIALIZER; 成员函数: • lock:尝试锁定互斥体。如果已锁定,就会挂起直到获得互斥体。 • tryLock:尝试锁定互斥体。如果已被当前线程锁定就返回true,否则返回fa... 阅读全文
posted @ 2011-11-21 09:52 tangr206 阅读(775) 评论(0) 推荐(0)
摘要:按:摘编自DPWI第30章 通过配置文件可以设置Ice应用程序的各个方面,Ice运行时能够识别配置文件中规定的属性集。Ice只会在创建通信器时读入属性配置。也就是说,若要设置属性的话,必须在创建通讯器以前设置,否则不起作用。 1、配置文件: 以#开头部分为注释。属性单词之间可以有空格。属性前、后空格自动清除,中间的空格会保留。 属性格式:<应用程序名>.<类别名>[.<子类别名>]。 以Ice,IceBox,IceGrid,IcePatch2,IceSSL,IceStorm,Freeze,Glacier2 为前缀的属性专用于Ice运行时,不能用于用户程序和配 阅读全文
posted @ 2011-11-20 16:54 tangr206 阅读(875) 评论(0) 推荐(0)
摘要:本文介绍了比较完整的Ice应用程序,它实现了简单文件系统。本程序位于ICE发布的$ICE_HOME/demo/book /simple_filesystem目录。本文内容涉及DPWI第5,7,9章。通过这个程序的学习,读者应该掌握了Ice应用程序开发的基本方法、步 骤。此后要通过深入学习Ice知识来提高Ice应用程序的开发水平。到本文为止,Ice for C++ 应用程序开发的基础部分就介绍完了。 1、系统需求 该系统为层次结构,由目录和文件组成。目录是子目录、文件的容器,顶层为根目录。同级各个目录、文件不能同名。 该系统包含固定数目的目录、文件。不能创建、销毁目录、文件。只能一次读写文件.. 阅读全文
posted @ 2011-11-20 16:41 tangr206 阅读(298) 评论(0) 推荐(0)
摘要:本文将介绍服务器端的Slice到C++ 映射。客户端Slice到C++映射的内容也适用于服务器端。 1、服务器端的主要流程 从ICE的Hello World应用程序中可以看到,Ice运行时的主入口点为Ice::Communicator。程序必须首先调用Ice::initialize,对 Ice运行时进行初始化。Ice::initialize 返回一个指向Ice::Communicator实例的智能指针。根据该指针调用Ice提供的各种服务,实现各项功能。 当关闭Ice程序时,必须调用Communicator::destroy。destroy会确保还在执行的操作完成调用,收回操作系统资源,如... 阅读全文
posted @ 2011-11-20 16:10 tangr206 阅读(551) 评论(0) 推荐(0)
摘要:在编写Ice相关应用时,无论是Client还是Server端,都必须进行一些必要的动作,如:Ice通信器初始化、异常捕获,以及应用终止后的销毁。鉴于每个应用都需要,Ice运行时库提供了Ice::Application类来解放用户,避免重复劳动,消除繁琐的初始化和销毁细节。Ice::Application虽然实用,但总体来说是个比较简单的类,主要提供了Ice通信器初始化和信号捕获处理两大功能。下面将从功能和实现两方面进行阐述,并给出常见用法和注意事项。源码版本为Ice-3.2.1。一.Ice::Application概述Ice::Application本身是一个抽象类,其run()函数为纯虚函数 阅读全文
posted @ 2011-11-20 16:08 tangr206 阅读(761) 评论(0) 推荐(0)
摘要:【 colorado 】 按:本文是DPWI第6章的笔记。 客户端Slice到C++映射定义的是:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作、传递参数、处理错误。C++映射线程安全,不存在内存管理问题。不建议查看slice2cpp生成的C++映射文件,但建议掌握C++映射规则。 1、模块映射 module M{...} 映射为 namespace M{...} 2、类型映射 ⑴基本类型 Slice C++ bool → boolbyte → Ice::Byteshort → Ice::Shortint → Ice::Intlong → Ice::Longfloat... 阅读全文
posted @ 2011-11-20 15:17 tangr206 阅读(663) 评论(0) 推荐(0)
摘要:说明文档位于DPWI第3章,程序位于Ice 3.3.1发布${ICE_HOME}/demo/book/printer。 1、Slice文件 Printer.ice 定义如下: #ifndef SIMPLE_ICE #define SIMPLE_ICE module Demo { interface Printer { void printString(string s); }; }; #endif 本Slice文件定义了模块Demo,它含有Printer接口,定义了printString操作,printString 操作接受一个字符串。程序功能是客户端调用printSt... 阅读全文
posted @ 2011-11-20 15:01 tangr206 阅读(508) 评论(0) 推荐(0)
摘要:按语:本文是DPWI第4章的笔记。在3.3.1版的1~9章中与1.3.0版马维达先生中译本相应章节的内容基本相同,变化比较小,可以参考马维达 先生的译本。Slice 在客户与服务器之间建立合约,描述应用程序所使用的各种类型及对象接口。这种描述与语言实现无关。Slice 定义由编译器编译到特定的实现语言,编译算法称之为语言映射。编译器把与语言无关的定义翻译成针对特定语言的类型定义和API。开发者使用这些类型和 API 来提供应用功能,并与Ice 交互。Ice 目前支持C++,Java, C#, Python,PHP,Ruby的语言映射。 例如: /* Printer Slice */ #... 阅读全文
posted @ 2011-11-20 14:54 tangr206 阅读(702) 评论(0) 推荐(0)
摘要:我在过去一段时间中,大体学习了ICE的基本知识,根据个人体会,ICE的学习应该结合ICE发布程序的实例代码进行,才会有较大收获。目前,我对ICE的认识仍然相当粗浅。就我所认识到的基础学习谈一下个人看法。 关于Ice实例程序的学习,目前所采用的软件系统为:Ice 3.3.1和Visual C++ 2008 Express 版,只采取C++语言版本。主要是通过阅读${ICE_HOME}/demo/book,${ICE_HOME}/demo/Ice 两个目录的代码来体验Ice的开发。 最初的学习,以${ICE_HOME}/demo/book目录中的代码为主,book目录存贯穿Distributed. 阅读全文
posted @ 2011-11-20 14:39 tangr206 阅读(3292) 评论(1) 推荐(0)
摘要:程池模式一般分为两种:L/F领导者与跟随者模式、HS/HA半同步/半异步模式。 HS/HA 半同步/ 半异步模式 :分为三层,同步层、队列层、异步层,又称为生产者消费者模式,主线程处理I/O事件并解析然后再往队列丢数据,然后消费者读出数据进行应用逻辑处理; 优点:简化编程将低层的异步I/O和高层同步应用服务分离,且没有降低低层服务性能。集中层间通信。 缺点:需要线程间传输数据,因此而带来的动态内存分配,数据拷贝,语境切换带来开销。高层服务不可能从底层异步服务效率中获益。 L/F 领导者跟随者模式 :在LF线程池中,线程可处在3种线程状态之一: leader、follower或proce... 阅读全文
posted @ 2011-11-20 13:48 tangr206 阅读(494) 评论(0) 推荐(0)