Thrift基础知识汇总--------------(从官网资料中总结的)

翻译 2013年12月05日 20:41:08

一、简介

a)        Thrift是一个跨语言的,高效的序列化的传输框架,内置代码生成引擎,用来在不同的语言之间创建高效无缝的服务接口,支持的语言有:C++,JAVA,PYTHON,PHP,C#等。

二、入门

a)        去thrift官网下载thrift框架;

b)        如果在linux下使用,需要编译安装thrift;如果在window上使用,则直接在命令行中使用即可;

c)        编写一个thrift的idl文件;里面写好命名空间、数据类型和接口;

d)        在命令行下调用thrift –gen java –gen py test.thrift即可;无需考虑哪个做客户端,哪个做服务端;命令完成后,会在当前目录下,生成gen-java和gen-py文件;

e)        命令格式:thrift --gen <language> <Thrift filename>

三、基本类型:Base Types

a)        基本类型的的选择以简洁、清晰为目标,重点关注在所有编程语言中的关键类型;

b)        基本类型介绍:

                        i.             bool:布尔值,真和假;

                      ii.             byte:一个8位的有符号整数;

                     iii.             i16:一个16位的有符号整数;

                     iv.             i32:一个32位的有符号整数;

                      v.             i64:一个64位的有符号整数;

                     vi.             double:一个64位的浮点数;

                   vii.             string:使用utf-8编码的字符串;

c)        注意,基本类型中没有无符号整数,这是因为很多编程语言中都没有无符号数。

d)        特殊类型:

                        i.             binary:二进制序列;

e)        容器类型:

                        i.             list:有序列表;

                      ii.             set:无序列表,元素具有惟一性;

                     iii.             map:键值对;映射类型;

f)         list: An ordered list ofelements. Translates to an STL vector, Java ArrayList, native arrays inscripting languages, etc. set: An unordered set of unique elements.Translates to an STL set, Java HashSet, set in Python, etc. Note: PHP does notsupport sets, so it is treated similar to a List map: A map of strictlyunique keys to values. Translates to an STL map, Java HashMap, PHP associativearray, Python/Ruby dictionary, etc. While defaults are provided, the typemappings are not explicitly fixed. Custom code generator directives have beenadded to allow substitution of custom types in various destination languages.

g)        注意map的key,尽量用基本类型,不要用容器类型;

四、异常

a)        为了同本地语言的异常无缝集成,thrift异常,通常会继承于本地语言的合适的异常类,除此之外,在功能上等价于thrift的结构体;

五、服务接口:

a)        Thrift接口通常要用到thrift的类型,定义一个service在语义上等同于定义一个interface,或者一个抽象类,thrift编译器会自动帮你生成相应的客户端和服务端的存根;在服务端,你需要继承这个stub,实现自己的业务代码;

b)        一个service由一系列的方法组成,每个方法可能有参数和返回类型;

c)        方法的修饰符:

                        i.             async:异步请求,不等待结果即返回;

                      ii.             oneway:好像和上面一样啊

六、其它

a)        关于命名空间:

                        i.             namespace cpp tutorial

                      ii.             namespace d tutorial

                     iii.             namespace java tutorial

                     iv.             namespace php tutorial

                      v.             namespace perl tutorial

                     vi.             还支持*号

b)        关于Include

                        i.             支持C++文件的包含

                      ii.             include "shared.thrift",引入thrift文件

c)        关于注视

                        i.             支持c语言的单行和多行注释

                      ii.             支持#号的单行注视

d)        关于typedef

                        i.             类似于别名的效果

e)        支持const常量定义,支持enum枚举定义

f)         Struts、exception、方法异常参数和方法的形式参数前,记得有编号(一个整型标识)

g)        变量的定义

                        i.             可以有默认值,比如:  i32 num1=0

                      ii.             可以设置为“选择性的”,比如: optional string comment

NFC 基础知识(NFC Basics) 根据官网个人翻译

此文为我一时兴起花费将近两天翻译,肯定问题多多,慢慢完善,敬请谅解。 官网原文链接:https://developer.android.com/guide/topics/connectivity/nf...
  • lyankj
  • lyankj
  • 2016年09月20日 18:34
  • 484

博弈论的一些基础知识(参考网络资料,学习总结,很好,分享并保存)

(一)巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 显然,如果n=m+1,那么由于一次最多只能取m个...

博弈论的一些基础知识(参考网络资料,学习总结,很好,分享并保存)

原作者地址:http://blog.csdn.net/wche1990/article/details/6944696 (一)巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流...
  • yibcs
  • yibcs
  • 2013年08月08日 19:13
  • 530

java基础知识总结资料

  • 2013年12月07日 20:40
  • 70KB
  • 下载

计算机网络基础知识学习资料

1.1.1 什么是计算机网络 计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和...

程序员笔试面试基础知识资料整理

1. 数据结构与算法 1.1 书籍 (1)算法导论 (2)编程之美 (3)编程珠玑 (4)数据结构(C语言版) (5)CareerCup.Cracking.the....

第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备

相信很多人或多或少听说了微信公众平台的火热。但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结。 所以下面给大家分享一下我的经验:     第一部分   介绍微信...

【资料分享】地图基础知识

1、什么是地图?   地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球(或其它星球)若干现象的图形或图像,它具有严格的数学基础、符号系统、文字注记,并能用地图概括原则,科学...

2016广东事业单位公共基础知识复习资料:物理学常识

1.哥白尼的日心地动说:是波兰天文学家哥白尼在《天体运行论》中阐述的观点。他认为,太阳是宇宙的中心,所有行星围绕太阳旋转,地球也是一颗普通的行星。指出,太阳的东升西落是地球自转的表现;天球上恒星位置每...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Thrift基础知识汇总--------------(从官网资料中总结的)
举报原因:
原因补充:

(最多只允许输入30个字)