proto type是什么意思
proto type 词典 原型,样机,试制型 双语例句 In fact, this is a proto type. 现实上它是试着制做型.
javascript中_proto_和__proto__的区别?左边是一条下划线,右边是
在javascript中,一个对象就是任何无序键值对的集合,如果它不是一个主数据类型(undefined,null,boolean,number,array,string),那它就是一个对象。
那么如何查看一个对象的原型是啥呢?又如何给一个对象设置原型呢?
标准对象原型访问器Object.getPrototype(object),到目前为止只有Firefox和chrome实现了此访问器。除了IE,其他的浏览器支持非标准的访问器__proto__,而prototype则是一个只有函数才具有的属性,
也就是说,如果这个对象不是函数,那么它就没有prototype这个属性。
下面代码证实了以上结论。
var a={name:'derek'};
var b=function(name){
name=this.name;
};
document.write(a.prototype+"
");//undefined 对象a显然不是一个函数,所以没有prototype这个属性。
document.write(Object.getPrototypeOf(a)+"
");//[object Object]
document.write(Object.getPrototypeOf(b)+"
");//function Empty() {}
document.write(Object.getPrototypeOf(b)==b.__proto__);//true 这两个的是等价的,只不过浏览器的兼容型不同。
再说一下javascript的构造函数
1、构造函数和普通的函数一样,但是具有以下两个特殊性质。
2、通常构造函数的首字母是大写的(让识别构造函数变得更容易)。构造函数通常要和 new 操作符结合,用来构造新对象。
下面这个例子很厉害~
基于所知道的知识,请想象创建一个新的对象,并让新对象表现地像数组的过程。一种方法是使用下面的代码。
// 创建一个新的空对象
varo = {};
// 继承自同一个原型,一个数组对象
o.__proto__ = Array.prototype;
// 现在我们可以调用数组的任何方法…
o.push(3);
虽然这段代码很有趣,也能工作,可问题在于,并不是每一个 JavaScript 环境都支持可写的 __proto__ 对象属性。幸运的是,JavaScript 确实有一个创建对象内建的标准机制,只需要一个操作符,就可以创建新对象,并且设置新对象的 __proto__ 引用 – 那就是“new”操作符。
varo =newArray();
o.push(3);
JavaScript 中的 new 操作符有三个基本任务。首先,它创建新的空对象。接下来,它将设置新对象的 __proto__ 属性,以匹配所调用函数的原型属性。最后,操作符调用函数,将新对象作为“this”引用传递。如果要扩展最后两行代码,就会变成如下情况:
varo = {};
o.__proto__ = Array.prototype;
Array.call(o);
o.push(3);
函数的 call 方法允许你在调用函数的情况下在函数内部指定“this”所引用的对象。当然,函数的作者在这种情况下需要实现这样的函数。一旦作者创建了这样的函数,就可以将其称之为构造函数。
我们来测试一下,
var Person=function(name,age){
this.name=name;
this.age=age;
document.write(“hello,I’m “+name+” and “+age+” years old”+”
“);
}
var p1=new Person(‘derek’,23);
document.write(Object.getPrototypeOf(p1)==Person.prototype);//true
document.write(p1.__proto__==Person.prototype);//true 两种访问对象原型的方式会得到相同的结果,前提是非IE6、7、8浏览器。。
可以上面的理论是正确的~
我们接着做实验,看一下继承是怎么实现的~
var Person=function(name,age){
this.name=name;
this.age=age;
document.write(“hello,I’m “+name+” and “+age+” years old”+”
“);
}
Person.prototype.smile=function(){
document.write(“O(∩_∩)O~”+”
“);
}
var p1=new Person(‘derek’,23);
p1.smile();
输出: hello,I’m derek and 23 years old
O(∩_∩)O~
首先,p1这个对象没有smile这个函数,于是去__proto__属性上去找,因为p1.__proto__==Person.prototype,而Person.prototype上恰好有这个函数,因此就会出现上面的运行结果。这个是最简单的原型链,如果Person.prototype上还没有smile()这个函数,那么就会去Person.__proto__去继续找,依次类推。
怎么将protobuf string类型
展开全部
2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同)
然后就开始开发了。
步骤:
1.用记事本编写一个.proto文件:
}如:编写的是test.proto
package protobuf;
option java_package = “com.sq.protobuf”;
option java_outer_classname = “FirstProtobuf”;
message testBuf {
required int32 ID = 1;
required string Url = 2;
}
将其放在与刚解压的protoc.exe同级目录中。
2.在cmd中,到protoc-2.4.1-win32文件夹下,
执行
E:\protoc-2.4.1-win32> protoc.exe –java_out=./ test.proto
则可以找到的一个生成的FirstProtobuf.java文件。
3.在MyEclipse中新建一个java project,建立包com.sq.protobuf,然后将刚才生成的FirstProtobuf.java文件放在其下面。
此时会报错,因为没有引入jar包,在package视图下,将protobuf-java-2.4.1.jar引入,即可解决问题。
汇编语言中的proc伪指令和proto伪指令的区别?
PROTO系子程序/过程声明伪指令,子程序/过程经PROTO声明、方可使用INVOKE伪指令调用 PROC系子程序/过程定义伪指令,正确定义的子程序/过程,即可由CALL指令调用 子程序/过程的声明与定义必须一致. 16位汇编没有INVOKE伪指令,也不需要PROTO伪指令 32位汇编增加了PROTO-INVOKE组合,也兼容PROC-CALL组合
protobuf repeated 怎么用的
protobuf repeated类型的使用
protobuf是Google开发的一个序列化框架,类似XML,JSON,基于二进制,比传统的XML表示同样一段内容要短小得多。通过protobuf,可以很轻松的调用相关方法来完成业务数据的序列化与反序列化。protobuf repeated类型相当于std的vector,可以用来存放N个相同类型的内容,文章将简单介绍protobuf repeated的使用。
首先定义一个protobuf结构,如下:
message Person {
required int32 age = 1;
required string name = 2;
}
message Family {
repeated Person person = 1;
}
下面以例子简单说明如何使用:
int main(int argc, char* argv[])
{
GOOGLE_PROTOBUF_VERIFY_VERSION;
Family family;
Person* person;
// 添加一个家庭成员,John
person = family.add_person();
person->set_age(25);
person->set_name(“John”);
// 添加一个家庭成员,Lucy
person = family.add_person();
person->set_age(23);
person->set_name(“Lucy”);
// 添加一个家庭成员,Tony
person = family.add_person();
person->set_age(2);
person->set_name(“Tony”);
// 显示所有家庭成员
int size = family.person_size();
cout << "这个家庭有 " << size << " 个成员,如下:" << endl;
for(int i=0; i{ Person psn = family.person(i); cout << i+1 << ". " << psn.name() << ", 年龄 " << psn.age() << endl; } getchar(); return 0; }
Xist基因是什么?
Xist基因的非编码性RNA是真哺乳亚纲哺乳动物(eutherian mammal)中X染色体失活过程的关键性起始物,然而它的精确功能和起源仍然不清楚。尽管Xist在真哺乳亚纲保守性较好,但在其他的哺乳动物动物中还未找到它的同源物。作者显示Xist至少部分上是从一个编码蛋白的基因进化而来的,而Xist原始类型(proto-Xist)的蛋白编码功能的丢失与Xist两端存在着四个蛋白编码的假基因相一致。这一事件在真哺乳亚纲动物和有袋动物(marsupial)进化上分开后发生,这就表明这两个世系(lineage)的剂量补偿进化机制是独立的。
当哺乳动物从其他的羊膜动物(amniote)中分化出来后不久,哺乳动物的X和Y染色体便从一对常染色体中进化而来[1]。在哺乳亚纲动物和有袋动物中,雄性的XY染色体和雌性的XX染色体之间的基因剂量上的不平衡通过沉默雌性中的一条X染色体而得以弥补[2-4]。在哺乳亚纲动物里,这种沉默作用涉及Xist基因,该基因位于X染色体失活中心(X inactivation center,Xic),编码一个长的非翻译性的RNA[5]。Xic位于人类X染色体的长臂上,这与哺乳动物最后一个共同祖先(cenancestor)(6,7)原始的X染色体上的情形吻合。这种观察也也这一假设相一致,即在哺乳动物进化早期,X染色体的失活可能与染色体的性别决定机制同时进行[8]。
为了研究X染色体失活的进化机制,作者在14脊椎动物基因组中搜索了14个Xist同源物,发现在真哺乳亚纲动物的最后一个共同祖先上已经存在,然而在非真哺乳亚纲的脊椎动物里不能检测Xist的明显序列相似性。
在人类位于Xist基因附近的基因组区域含有3个蛋白编码基因(Cdx4, Chic1和Xpct),在三个基因的垂直同源序列在所有的脊椎动物种类中存在。在鸡和爪蟾中这些基因之间的连锁性质也是保守的。作者因此推断非真哺乳亚纲动物种类中Chic1和Xpct在基因组上的间隔作为Xic的同源区域(XicHR)。在真哺乳亚纲中,除了Xict基因外,Xic还含有两个RNA基因(Jpx和Ftx)和两个蛋白编码基因(Tsx和Cnbp2)[9]。Cnbp2是一个逆转座基因(retrotransposed gene),且在真哺乳亚纲中是特异性的。在非真哺乳亚纲脊椎动物中不能检测检测到Tsx,Jpx和Ttx的任何同源物。在鸡和爪蟾中,XicHR含有5个蛋白基因(Fip1l2, Lnx3, Rasl11c, UspL和Wave4),而在真哺乳亚纲动物基因组中不能检测这些基因的垂直同源物。此外,在鸡和爪蟾中XicHR中的基因内容、次序和定向都非常保守,表明在鸡的一个常染色体上的XicHR符合它的四脚动物最后一个祖先的原始状态。
为了搜索XicHR基因在真哺乳亚纲中可能存在的痕迹,作者将鸡基因组序列与代表真哺乳亚纲动物不同目(人类、老鼠、狗和牛)的基因组序列进行比较。在鸡中XicHR序列覆盖162kb(而人类中为998kb),由5%的外显子(人类中为2%)和3%的重复序列(人类中为59%)组成。人类和鸡基因组序列的比较还显示在非重复性序列里存在22个比对序列。尽管这些比对序列较短(在平均62bp序列有72%的同源性),但是其中8个与鸡中已知的外显子重叠,而与人类中的已知外显子重叠的只有5个。这些比对是由于偶然性产生的概率非常低,表明它们属于保守性区域,在人类和鸡中保守。作者在鸡中总共检测63个明显不同的片段,覆盖3.4kb,能与真哺乳亚纲这四种种类的至少一种比对上,其中这些比对序列中的12与来自鸡,,Lnx3和Rasl11c的外显子重叠。
Fipll2的六个外显子与人类或老鼠的序列有同源性,其中的3个外显子人类Tsx外显子同源。蛋白质的比对结果表明老鼠的Tsx是一个被截断的基因,编码一个与Fip1l2的编码蛋白的氨基端垂直同源的蛋白。Tsx(不论是转录物还是翻译物)在大鼠和小鼠中都是功能性的,但是进化速度比较快[10]。Tsx在人类、狗和牛中都是假基因[9]。作者在牛和狗中鉴定出Rasl11c基因的四个外显子同源物,人中也有一个,而老鼠中没有。然而在这些物种中,Rasl11c已经成为假基因。Lnx3的两个外显子与Xist同源,其中第一个与Xist中在真哺乳亚纲动物比较保守的h4/m4外显子同源,第二个则与Xist的h5/m6外显子同源,而在真哺乳亚纲动物中h5/m6外显子在人和老鼠中保守,但在狗和牛差别较大。由于存在两个独立的比对序列在狗和牛中的外显子重叠的可能性非常低,表明RNA基因Xist的这些外显子是Lnx3蛋白基因的同源物。
在有袋动物中,XicHR位于X染色体上[7,12]。作者已经测序含有Rasl11c和5’端Lnx3的负鼠(opossum)的基因组克隆,同时也测序了Lnx3的mRNA序列。在基因序列数据库中,作者已经鉴定出Wave4基因。系统进化树分析表明这三个基因在负鼠中是有功能性的。因此,在真哺乳亚纲动物世系中发生的Lnx3的编码蛋白功能的丧失,至少同时伴随着XicHR的四个其他基因中的两个的假基因化。
Lnx3在所有脊椎动物纲中保守,且与其平行同源的Lnx1和Lnx2非常类似[11]。Xist保守的外显子与两个PDZ基序相似,且两者都含有移框突变。通过筛选表达序列标签(EST),作者发现在鸡和爪蟾中,Lnx3在不同的组织和发育阶段转录。在负鼠中,Lnx3在雄性和雌性中都表达,这一情形与真哺乳亚纲动物中的Xist很不相同。在老鼠中,尽管Xist的h4/m4外显子(与Lnx3同源)对X染色体的失活不是必需的[12],但是已经表明该外显子影响Xist RNA的转录和(或)加工[12]。这就暗示Xist起着Lnx3转录单位的某种调控成分的作用。
作者的结果显示Xist的两个外显子起源于Lnx3。然而,Lnx3和Xist分别含有11个和6个其他的外显子,因此,不能检测到显著的相似性。此外,作者也没有检测到Xist中A-重复序列(A-repeat)的同源序列,而该序列是不连续的序列元件,暗含着沉默X染色体的功能[13]。这种缺乏可能是由于RNA基因和蛋白基因遭受着极其不同选择性限制和快速分歧开来。也有可能Xist的前几个外显子与Lnx3不同源,由于某个序列(如转座元件)的插入而获得的,而插入的序列被利用而形成proto-Xist。作者还分析了Rasl11c和Lnx3在负鼠基因组上间隔以便搜寻到潜在的proto-Xist基因的标志,然而还是不能检测与Xist存在显著相似性的序列。考虑到Xist外显子在真哺乳亚纲动物之间高度保守,负鼠中这种相似性的缺乏强烈地表明有袋动物在这个位点上不含有任何proto-Xist,因此Xist是特异性地存在于真哺乳亚纲动物中。
在有袋动物和真哺乳亚纲动物中的剂量补偿机制都涉及到染色体范围内的X染色体失活(XCI),不过存在一些显著性的差别。在有袋动物中,总是来自父本的X染色体失活,而且这种失活是不完全性的组织特异性的失活,而且似乎不涉及DNA甲基化[4]。此外,作者的结果表明在有袋动物中,XCI不需要Xist的参与。在单孔类动物(monotreme)中,XicHR转位到常染色体上,表明剂量补偿也不需要XicHR在染色体所处的位点[6]。因此,没有证据表明在真哺乳亚纲动物、有袋动物和单孔类动物中的剂量补偿效应是保守性的。可能的情况是Xist独立的XCI哺乳动物的最后一个共同的祖先存在,而在真哺乳亚纲动物中Xist替代了该机制发挥作用。然而,也应该强调X染色体和Y染色体进化分开的早期阶段中,大多数X染色体连锁的基因仍然拥有活性的Y染色体同源物,因而不需要剂量补偿。只有当Y染色体丢失掉大多数基因后才可能是通过失活整个染色体而进行剂量补偿得机制具有优越性。因此。作者提出,XCI可能是性染色体进化后期出现的。(翻译:David Towersimper)
protobuf import路径怎么写
Protobuf语言指南
l 定义一个消息(message)类型
l 标量值类型
l Optional 的字段及默认值
l 枚举
l 使用其他消息类型
l 嵌套类型
l 更新一个消息类型
l 扩展
l 包(package)
l 定义服务(service)
l 选项(option)
l 生成访问类
本指南描述了怎样使用protocolbuffer语言来构造你的protocol buffer数据,包括.proto文件语法以及怎样生成.proto文件的数据访问类。
本文是一个参考指南——如果要查看如何使用本文中描述的多个特性的循序渐进的例子,请在
l 定义一个消息类型
先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了:
java 怎么讲java类写成proto文件
步骤一, 书写 .proto 文件,这里直接上google官方实例,并存储为addressbook.proto
package tutorial;
option java_package = “com.example.tutorial”;
option java_outer_classname = “AddressBookProtos”;
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message AddressBook {
repeated Person person = 1;
}
int32类型的数组用protobuf怎么表示
1 /* Generated by the protocol buffer compiler. DO NOT EDIT! */
2
3 #ifndef PROTOBUF_C_student_2eproto__INCLUDED
4 #define PROTOBUF_C_student_2eproto__INCLUDED
5
6 #include 7 8 PROTOBUF_C_BEGIN_DECLS 9 10 11 typedef struct _Student Student; 12 13 14 /* — enums — */ 15 16 17 /* — messages — */ 18 19 struct _Student 20 { 21 ProtobufCMessage base; 22 char *id; 23 char *name; 24 char *gender; 25 int32_t age; 26 char *object; 27 char *home_address; 28 char *phone; 29 }; 30 #define STUDENT__INIT \ 31 { PROTOBUF_C_MESSAGE_INIT (&student__descriptor) \
为什么protobuf不支持int8这样的类型
1 protobuf不是专为c、cplusplus而生的,它还得为java、python等语言服务,而这些语言中没有int16的概念.2 另protobuf采用变长整型编码,字节的最高位用于标识后头还有无一体字节(表示同一个整数),低七位存储实际值.可几乎不增加时间复杂度,有效提高压缩率.