精华内容
下载资源
问答
  • pointer_default属性只在发生跨进程或跨机器通讯时起作用,这时组件客户与组件不在同一个地址空间。客户调用组件方法指针参数时,不能只传指针值,还要把指针所指向内容一起传到组件端。如果组件修改了指针...
    pointer_default属性只在发生跨进程或跨机器通讯时起作用,这时组件的客户与组件不在同一个地址空间。客户调用组件方法的指针参数时,不能只传指针的值,还要把指针所指向的内容一起传到组件端。如果组件修改了指针所指的内容,则还要把指针所指的内容传回客户端。为了减少在进程边界间或网络(不同机器)间的传输量,COM把指针归纳为三类:   
    ref:这类指针总是指向一个合法的已申请来的内存,不能为NULL值;无论在调用前后,指针都指向同一个地址;组件服务器端返回的数据总能写到指针所指的已存在的内存;指针所指的内存不能同时被其它指针和变量引用着。   
    unique:它可以是NULL值;它可以在调用前后由NULL变为非NULL,这时系统为你申请内存;它可以在调用前后由非NULL变为NULL,这时客户端必须负责释放原来的内存;指针值在调用前后可以被改变;指针指向的内存不能同时被其它指针和变量引用着;如果指针值非空,则组件方返回的数据写入已经存在的内存。   
    pointer:与unique相同,但是指针指向的内存可以被其它指针和变量引用。   
    这三种类型一个比一个复杂,对于ref,COM的proxy/stub在marshalling时处理最简单,而pointer最复杂。   
    接口中涉及指针的地方都可以设置ref/unique/pointer属性,就象in/out属性一样。如果指针没设置属性,则不同的情况有不同的缺省值:   
    方法的参数中的一级指针是ref   

    结构体中的指针或指向指针的指针,由pointer_default的设置决定。


    http://hi.baidu.com/ilotus_y/blog/item/b5826713cd75ee055baf5332.html

    展开全文
  • thrift IDL笔记

    2017-11-24 11:12:22
    1. 生成代码-r 什么意思? -o 输出文件目录thrift.exe -o [directory] -gen cpp [source.thrift]2. optional、required required是必须数据,optional标记数据若为空则不序列化struct Person{ 1:require ...

    1. 生成代码

    -r 什么意思?
    -o 输出文件目录

    thrift.exe -o [directory] -gen cpp [source.thrift]
    

    2. optional、required

    required是必须的数据,optional标记的数据若为空则不序列化,若有默认值,则optional未赋值时为默认值。

    struct Person{
    	1:require string name;
    	2:optional string photo
    }
    

    3. 常量、枚举类型、默认值

    const i32 INT_CONST = 1234;
    const map<string,string> MAP_CONST = {"hello": "world", "goodnight": "moon"}
    
    enum TweetType {
    TWEET,
    RETWEET = 2,
    DM = 0xa,
    REPLY
    }
    
    struct Tweet {
     
    1: required i32 userId;
     
    2: required string userName;
     
    3: required string text;
     
    4: optional Location loc;
     
    5: optional TweetType tweetType = TweetType.TWEET;
     
    16: optional string language = "english"
     
    }
    

    4. 命名空间

    namespace csharp thrift_test
    

    5. 服务可以被继承、结构体不能被继承

    6. 名称与序号

    在TBinaryProtocol协议中:

    1. 参数名(包括结构体字段名)不会被编码到协议中
    2. 参数序号会被编码到协议中
    3. 参数类型会被编码到协议中
    4. 接口名称会被编码到协议中

    所以在编写IDL时,可以不考虑参数名的长度;为了减小传输的数据量,可以考虑将接口名称尽量简化。

    展开全文
  • 最近在搞语言转换,真是个体力活~额~体力...IDL中,号对数组操作的意思和matlab中不一样,详情,看帮助文档吧,自己试试也成。 所以以上语句的转换是这样的: idplcd_tmp1=NDSI lt 0.8 idplcd_tmp2=NDVI lt 0.8 idpl

    最近在搞语言转换,真是个体力活~额~体力活~~

    这个问题是MATLAB中有这样的语句:

    idplcd=NDSI<0.8&NDVI<0.8&data(:,:,6)>300&Temp<2700

    意思是满足条件(NDSI<0.8&NDVI<0.8&data(:,:,6)>300&Temp<2700)的赋为1,不满足赋0.

    IDL中,<,>号对数组操作的意思和matlab中不一样,详情,看帮助文档吧,自己试试也成。

    所以以上语句的转换是这样的:

    idplcd_tmp1=NDSI lt 0.8
    idplcd_tmp2=NDVI lt 0.8
    idplcd_tmp3=data[5] gt 300
    idplcd_tmp4=Temp lt 2700
    idplcd=(idplcd_tmp1+idplcd_tmp2+idplcd_tmp3+idplcd_tmp4) gt 3
    idplcd_tmp1=TEMPORARY(idplcd_tmp1)
    idplcd_tmp2=TEMPORARY(idplcd_tmp2)
    idplcd_tmp3=TEMPORARY(idplcd_tmp3)
    idplcd_tmp4=TEMPORARY(idplcd_tmp4)

    简单的例子:
    data=[1,2,3,4,5]
    data2=[5,6,2,1,9]
    data3=[0,11,12,13,14]
    result1=data2 gt data
    result2=data3 gt 0
    result=(result1+result2) gt 0 |
    result=(result1+result2) gt 1 &

    这就是:

    result=data2>data | (&) data3 > 0

    可以总结规律,有N个&,就是大于N;有N个|,就是大于0

    另外记得释放不用的空间


    展开全文
  • 接口定义语言(IDL)简介

    千次阅读 2013-07-04 14:59:20
    1.ATL不为实现类创建虚函数表,因此初始化成员放在一个公共函数中(啥意思?!). 2.IDL(接口定义语言) 3.IDL文件由MIDL编译器编译。 4.IDL基础: 接口定义语言是一种方法,通过这种方法,可以定义COM对象所支持...

     

    接口定义语言(IDL)简介

    1.ATL不为实现类创建虚函数表,因此初始化成员放在一个公共的函数中(啥意思?!).
    2.IDL(
    接口定义语言
    )
    3.IDL
    文件由MIDL编译器编译。
    4.IDL基础:
    接口定义语言是一种方法,通过这种方法,可以定义COM对象所支持的接口。

    一个COM对象的IDL文件主要包括两个主要的元素:接口声明和类型库声明。
    5.接口
    接口是COM组件的一个关键部分,由关键字interface定义。

    接口的属性包括:object,   uuid(),    helpstring(),     pointer_default()


    <1>object
    object
    属性是指定接口是COM接口的方法。没有object属性,接口被认为是DCE

     RPC(分布式计算环境远程过程调用

    )微软因此增加了object属性,作为为了支持COM。所有你定义的COM接口将有object标志。即所有的COM接口必须

    要有object属性。


    <2>uuid
    这指定了接口的GUID,使接口被唯一的标示。

    <3>helpstring
    最大长度255字节


    <4>pointer_default
    服务器程序可以在不同的地址空间或不同的机器上运行。这防止客户端程序直接访问服务器程序的内存,反之亦

    然。因此,当传递指针参数时,指针的地址需要被转换到服务器程序的地址空间中去。pointer_default属性表明

    这种转换如何发生,对于指针什么样的值是允许的。当指定参数为一个指针是,几个含糊不清的地方需要解决,

    以确定指针该如何处理。pointer_default()属性指定了默认怎样处理在接口中所有方法的参数。因此除非在参

    数中显式的指定,pointer_default()值将被应用于这个接口所有方法和属性中所有的指针参数。

    pointer_default()可能的值为ref,unique,ptr。默认为unique

         ref(引用)属性指定NULL不是一个有效的指针和指针必须是一个有效的值。而且指针值是一个常量;指针必须不能改变成内存中的另一个位置,最后你不能改变指针引用的那块分配内存结构的大小。

        unique允许空指针,并且它可以从空转到非空,反之依然。这样由于可能为空,就不能用于指定结构的大小,如数组。

        ptr属性页被作为完全指针引用(full

     pointer),这是闲置最小的指针选项。


    <5>接口声明:(类似于C++
    指令_declspec(uuid(x)),这条指令将使接口被打上GUID的烙印,所以,后来如果你指定_uuidof(interface),与接口相关联的GUID将自动被返回。这样很容易访问GUID

    例如
    声明_declspec(uuid())

    struct _declspec(uuid("C552B896-F10C-480A-871D-0FD926D1C872" http://www.blogcn.com/images/wink.gif)
    Istopwatch : public IUnknown
    {
    ...
    }
    以后无论那里使用uuidof(IStopwatch)即可,例如
    hr = 

    CoCreateInstance(_uuidof(TIMERSlib::Stopwatch,NULL,CLSCTX_INPROC_SERVER,_uuifof(IStopwatch),void**&

    pStopwatch));
    将返回与接口相关联的GUID
    _declspec(novtable)是微软专用的,用作防止创建虚函数表的优化。

    6.方法:
    COM方法的一般形式为:[attributes]HRESULT name(param_list)


    7.参
    主要分析3个参数in,out,retval。这三个参数中in,out是最重要的,这些属性表示了参数传递数据的方向。

    retval属性是一种方便的将数据返回给客户端程序的方法。
    <1>inin属性说明了参数是从客户端传递给服务器程序。
    <2>out,out属性表明参数京被返回给客户端程序。但是没有任何信息将从客户端程序传递给服务器程序,因此。服务器程序不能期望标有这种属性的参数包含任何有效的信息,相反,应该把它看成是未初始化的变量。
    注意:in和out可以同时使用。
    <3>retval,out参数经常与retval属性一起使用,表明这是一个函数的返回值。
    注意:每个函数仅可以有一个返回值,因此每个方法只能有一个retval。

    而且,IDL语法要求:如果一个函数有多个参数,retval参数(如果有的话)必须总是所有参数的最后一个参数。

    8.属性(略)
    属性是存储在对象中得值,属性是通过存取函数访问的。
    属性所特有的3IDL标志:
    propget,propput,proprofref.
    <1>porpget
    :指定了一个读取函数,存取函数必须有一个返回值,某个参数必须设值为
    out
    <2>porpput
    :设置参数,不许有in属性
    <3>proproref

    http://www.blogcn.com/images/tongue.giforpputproproref的区别在于:后者传递是指针或引用,而不是值。
    9.定义类型库(略)
    一旦定义了所有的接口,就是定义类型库和属于这个类型库的组件类的时候了。

     

     

    展开全文
  • 我在使用IDL定义接口返回String时报错 IOP02400001: (DATA_CONVERSION) Character does not map to negotiated transmis 意思是,返回String有中文,需要转码。 在server端代码properties段添加代码 java.util...
  • 开始学习ENVI/IDL开发时,要先明白常用关键字,常用函数的意思: 一.常用关键字介绍: 1.FID: 文件 ID(FID)是一个长整型的标量。FID 为 ENVI 的程序员提供了一个命名变量,可以被数个 ENVI 程序所使用,来打开或...
  • 【此处为雷坑】idl where 语句排雷

    千次阅读 2017-10-30 17:50:58
    代码的坑真是无处不在,今儿又遇到一个,真是~~坑 Matlab转IDL语句有这样...where语句的意思是找到b为0的所有位置的索引值,使用这样一个语句,理论上是可以实现之前的结果的~~结果就在此时~~雷区出现了。 当b中没有
  • IDL调用FLAASH大气校正,不启动ENVI,显示自带进度条

    千次阅读 热门讨论 2018-05-16 15:33:22
    自从ENVI官博放出了IDL调用FLAASH大气校正的代码,相信不少人已经在批处理业务或者系统建设... 因为ENVI5.0后,发布了ENVI面向对象开发新方式,启动ENVI就是 e=envi(/headless),/headless的意思就是不启动ENVI软...
  • 附:ENVI/IDL关键字及关键函数的意思可参考:https://blog.csdn.net/weixin_43955546/article/details/104745753 1.读取tif图像: 1)IDL读取: pro read_tif file='D:\F\corona\test\mosaic_match\mosaic.tif' data...
  • 主要表达的意思的是--组件内部在某种条件下将调用该接口,向外界传递信息。如果你对此信息感兴趣,就要自己实现这个接口,并向该组件注册并连接。这样当组件调用该接口时,会向你及时传递你感兴趣的信息。例如: ...
  • 一些RPC技术资料

    千次阅读 2012-08-17 16:21:25
    在课本里都说过,是远程过程调用的意思,是指分布在不同主机上的接口,RPC client可以调用RPC server端定义的一些接口,毕业的时候对于RPC也就了解这些。   在了解有哪些RPC技术之前,先来看看IDL。 什么是IDL?...
  •  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
  • atl atladvise解析

    千次阅读 2013-01-22 11:39:49
    IDL中提供的[source]属性,是为了让实现类宣扬它支持哪几个对外接口注册。...主要表达的意思的是--组件内部在某种条件下将调用该接口,向外界传递信息。如果你对此信息感兴趣,就要自己实现这个接口,并向该组件
  • 至于一些关于python的介绍,各位自己再百度,至于代码的意思,注解的也相对很详细了。当然啦,写法有很多,各不相同!我就用贼笨贼low但贼一目了然的那种!各位看官共勉! 因为我是新手,看网上教程说推荐新手使用...
  • AIDL与stub

    2019-10-07 07:08:49
    Stub翻译成中文是存根的意思,注意Stub对象是在被调用端进程,也就是服务端进程,至此,服务端aidl服务端得编码完成了。 stub是为了方便client,service交互而生成出来的代码。AIDL(android 接口描述语言)是一个...
  • 参见mdsplus官网tutorial:Accessing mdsplus data in fortan,idl,matlab and c 1.首先需要启动数据库服务端mdsip: 命令是: mdsip -p num -m -h filename ,其中 p代表端口号,m我还不知道是什么意思,但是没它会...
  • 项目命名为ancients,字面意思是“远古,旧”,实际上这个主题也算是旧了。原本打算命名为C++ Remoting,不过想了一下,还是换个名字,免得让人一看就想拿去跟java, c#remoting比较。取这个名字主要是因为...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    87.UNIX中QT是什么意思? 88.在软件开发生命周期中哪个阶段开始测试? 89.dotnet与J2EE比较? 90.什么是ActiveX? 91.Java中IDL是什么? 92.ISO9000和CMM是什么?IS09000和CMM(软件能力成熟度模型)认证是国际上...
  • java 面试题 总结

    2009-09-16 08:45:34
     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

idl的意思