文档库 最新最全的文档下载
当前位置:文档库 › protobuf的安装和使用

protobuf的安装和使用

protobuf的安装和使用
protobuf的安装和使用

最近领导分配了一个任务,这个工程挺高端的,主要以前从没有搞过,其中里面有protobuf,以前从来没有听说过这个东西,最近在网上看了一些高人的帖子,才知道protobuf是什么云云了,我的理解是,例如我们要用C++写个什么工程,C++是面向对象的,我们要写很多类,估计都得写上上百行,上千行的代码,但是现在用这个protobuf,就可以省很多是,我们只需要写消息包,然后编译,protobuf就会根据这个消息包自动生成两个文件.cc和.h,.h这两个文件中就有很多类,供我们调用。

现在说明怎样在Ubuntu下安装protobuf。网上有人说,他用了很多版本的protobuf 都没有成功,最终用的2.5.0版本才成功,于是我就直接安装了这个版本,至于其他版本成不成功,我就不知道了。首先下载protobuf源码包

在Ubuntu的终端里输入:$ wget https://www.wendangku.net/doc/858451539.html,/files/protobuf-2.5.0.tar.gz 这是在官网下载,但是我等了很长时间都没有下载下来,最后我在CSDN上下载下来了

下载之后解压:$ tar xvzf protobuf-2.5.0.tar.gz

进入到解压后的目录:$ cd protobuf-2.5.0

进行执行:$ ./configure

在执行./configure这个命令之前最好把vim ,g++,make安装好,不然在执行./configure的时候可能会出现错误,上面三个安装的命令:$sudo apt-get install vim$sudo apt-get install g++$sudo apt-get install make

./configure成功之后,接下来是如下几步:

$make

$make check

$make install //在执行这一步的时候,我出现了错误,错误的意思是执行的权限不够,如果是这样的话,$make install 这条命名就换成$sudo make install

下面我们要修改一下配置文件:$ vim ~/.profile

在打开的文件中,在文件末尾添加如下代码:

export LD_LIBRARY_PA TH=$LD_LIBRARY_PA TH:/usr/local/lib

然后保存退出,接下来执行: $ source ~/.profile

使刚才修改的配置文件生效,接下来执行:$protoc --version

如果上面的步骤一切顺利的话,那么就会在终端显示protobuf的版本号,如下

下面我们来测试一下,在测试之前我们最好先建立一个文件夹,例如上面的proto,接下的操作都在这个文件夹下进行。

我们先用vim创建并编辑.proto文件,例如:$ vim msg.proto

内容如下:

然后执行下面的命令:$ protoc -I=. --cpp_out=. msg.proto

执行这条命名之后,在当前目录下就会生成如下的两个文件:

这两个文件就是根据上面的那个msg.proto文件生成了,里面有类的声明和类的实现,我们可以进入这两个文件。研究一下,这里就不在说明了。然后我们就可以调用类和里面的函数实现自己的功能了,下面是两个简单的测试文件:

我们先创建: $ vim https://www.wendangku.net/doc/858451539.html,

内容如下:

然后编译https://www.wendangku.net/doc/858451539.html,,命名如下:

$ g++ https://www.wendangku.net/doc/858451539.html, https://www.wendangku.net/doc/858451539.html, -o write `pkg-config --cflags --libs protobuf` -lpthread

执行生成的write文件,命令为:

$ ./write

可看到生成的msg.pb文件,这个文件是由fstream output(“./msg.pb”,ios::out|ios::trunc|ios::binary)函数生成的

下面在创建一个文件:$ vim https://www.wendangku.net/doc/858451539.html,

内容如下:

编译https://www.wendangku.net/doc/858451539.html,文件:命令为:

$ g++ https://www.wendangku.net/doc/858451539.html, https://www.wendangku.net/doc/858451539.html, -o reader `pkg-config --cflags --libs protobuf` -lpthread

然后执行生成的reader文件。命令如下:

./reader

在终端就会打印出:

101

Hello

上面在生成可执行文件的过程,都是我们一条一条命令的输入,我们可以写Makefile,然后执行一条make命令,就可以自动生成可执行文件,

编写Makefile文件:$ vim Makefile

内容如下:

编写完之后,执行:$make

就会自动生成可执行文件write和reader

Protobuffer语言详解:

Defined A Message Type

message SearchRequest

{

required string query = 1;

oprional int32 page_number = 2;

optional int32 result_per_page = 3;

}

上面SearchRequest消息定义了三个fileds,每一个fileds都包含着该filed的name 和type。Message里面的每一个field都有一个unique numbered tag(也就是那些1 2 3 4)。这些tags用来在message binary format用来标识filed序号,如果这个message一旦被使用,建议必要轻易更改。需要注意的是,如果标记是1-15,那么当标记编码成二进制流的时候他们仅占一个字节,如果标记处于16-2047,标记将会占据两个字节,所以这里建议,对于那些需要频繁传输的数据尽量把他们放在前15位,这时编码key的时候就会尽量减少key的数据的大小,那么我们也应该留一些15因内的标记,以便将来可能会添加更频繁使用的filed。

最小的标记是1,最大的是2^29-1,但是从19000到19999这些被protobuf 实现保留。

Specifying Field Rules

你必须声明你所声明的filed是如下一种:

required:在你使用该消息时必须存在这种类型的filed

optional:在你使用该消息时该中filed可以不存在,但如果存在的只能存在一种repeated:该中类型的filed可以被重复使用任意从(包括0次),而且protobuf会保存设置的次序。

Adding more message types

在一个.proto文件中可以定义多个message。例如你想定义多个相关联的message,如下例在一个proto文件中有一个reques message和一个reponse message message SearchRequest

{

required string query = 1;

optional int32 page_number = 2;

optional int32 result_per_page = 3;

}

message SearchResponse

{

……

}

我们可以直接使用//在.proto文件中添加注释

message SearchRequest

{

required string query = 1;

optional int32 page_number = 2; //which page number do we want?

optional int32 result_per_page = 3;

}

What's Generated From Your .proto?

当我们使用protocol buffer compiler编译一个.proto文件,编译器会生成与你所选语言(由编译选项决定--Java_Out 或者--Cpp_Out)相对应的代码。例如会生成所有字段的getter/setter,向输出流序列化你的messages以及从一个输入流中解析messages

For C++,,编译器会生成一个 .h 和.cc文件, proto文件里每一个message都会对应生成一个class.

For Java,编译器会生成一个java文件.在该java文件中会有N个由messages对应生成的内部类,以及一个Builder内部类.Builder用来创建其他messages生成的类的实例

Optional Fields And Default Values

如果一个optional field已经被手动地设置过默认值,那么在解析该messages时,发现该field 没有被使用,那么该field会被设置成默认值.如下例

optional int32 result_per_page = 3 [default = 10];

那么如果没有手动地被设置过默认值那么就会采用系统默认值:string->"", bool->false, numeric->0 ,enums ->enums第一个value的默认值

Enumerations

在message中,可以使用枚举。Protobuf中的枚举以name/value形式出现。例如下例:VNIVERSAL = 0可以看出其value不是field_number

你可以对一个枚举类型的filed指定默认值,但是如果你指定的的值不在枚举列表中,那么解析器会认为这个字段为不可识别的字段。

message SearchRequest {

required string query = 1;

optional int32 page_number = 2;

optional int32 result_per_page = 3 [default = 10];

enum Corpus {

UNIVERSAL = 0;

WEB = 1;

IMAGES = 2;

LOCAL = 3;

NEWS = 4;

PRODUCTS = 5;

VIDEO = 6;

}

optional Corpus corpus = 4 [default = UNIVERSAL];

}

Using Other Message Types

我们可以采用其他的message作为我们的field类型.例如在下例中我们在同一.proto文件中定义了俩个messages,然后SearchResponse中使用Result作为field的类型.

message SearchResponse {

repeated Result result = 1;

}

message Result {

required string url = 1;

optional string title = 2;

repeated string snippets = 3;

}

Importing Definitions

在上例中Result 和SearchResponse 都定义在同一个.proto 文件,那么如果俩个messages不在同一个.proto 文件中怎么办呢?

我们采用在文件顶部import其他.proto文件来访问其他proto文件中的messages.

import "myproject/other_protos.proto";

你可以在messageA里定义一个新的messageB,然后在messageA里使用messageB.例如下例:message SearchResponse {

message Result {

required string url = 1;

optional string title = 2;

repeated string snippets = 3;

}

repeated Result result = 1;

}

当message不再满足你的需求,例如你想要添加一个字段,但是你仍想使用原来生成的代码,不想破坏现存的代码,只要记住如下规则,你就可以实现这个需求了

不要改变原有fields的标记(序号).

新添加的fields要设置成optional or repeated. 这意味着你的新代码可以解析由原有的message序列化而成的messages,而且不会丢失那些required 元素.你应该对新的fields设置上明显的default values以便新的代码可以和由旧代码生成的message交互.

标准方法:

解析和序列化:

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列在恢复为对象。

把对象转换为字节序列的过程称为对象的序列化。

把字节序列恢复为对象的过程称为对象的反序列化。

Message PhoneNumber

{

required string number = 1;

optional PhoneTyep type = 2 [default HOME]; //是默认值

}

Repeated PhoneNumber phone = 4; //repeated是重复的意思

Protobuf消息的定义:

消息由至少一个字段组合而成,类似于C语言中的结构体,每个字段都有一定的格式。

字段格式:限定修饰符1 数据类型2 字段名称3 = 字段编码值4 [字段默认值5]

1限定修饰符包括required\optional\repeated

Required:表示一个必须的字段,必须相当于发送方,在发送消息之前必须设置该字段的值,对于接收方,必须能够识别该字段的意思。发送之前的没有设置required字段或者无法识别required字段都会引起编码异常,导致消息被丢弃。就好比你(发送方)去面试的时候,填

写个人信息表,一个人必须要有身份证号,那么在表中身份证号这一栏必须的填。如果你不填那么HR(接收方)就会说,不行,你这张表无效,因为你的身份证号没有填写。Optional:表示一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或不设置该字段的值。对于接收方,如果能够识别可选字段则进行相应的处理,如果无法识别,则忽略该字段,消息中的其他字段正常处理。--因为optional字段的特征,很多接口在升级版本中都把后来添加的字段够统一的设置为optional,这样老的版本无需升级程序也可以正常的域新的软件进行通信,只不过新的字段无法识别而已,因为并不是每个节点都需要新的功能,因此可以做到按需升级和平滑过渡。就好比个人信息表中家庭成员一栏,你(发送方)可以填,也可以不填,如果你填的话,HR(接收方)就把栏信息登记一下,你不填的话,HR就不登记了,不影响HR登记其他的信息。

Repeated:表示该字段可以包含0-n个元素,其特性和optional一样,但是一次可以包含多个值,可以看做是在传递一个数组的值。就好比你的教育经历,你可以只填你的大学经历这一项,也可以填大学和高中的经历,这两项,还可以填写大学、高中和初中,这三项经历。也就是桌教育经历可以填一个经历,也可以填多个经历。

2.数据类型:protobuf定义了一套基本数据类型,几乎都可以映射到C++/Java等语言的基础数据类型:

N表示打包的字节并不是固定的。而是根据数据的大小或者长度

例如Int32 ,你在发送消息的时候,设置的值比较小,在0—127之间,那么就使用一个字节打包。

关于枚举的打包方式和uint32相同。

关于message,类似于C语言中结构体包含另一个结构体作为数据成员一样。

关于fixed32 和int32的区别。fixed32的打包效率比int32的效率高,但是使用的空间一般比int32多。因此一个属于时间效率高,一个属于空间效率高。根据项目的实际情况,一般选择fixed32,如果遇到对传输数据量要求比较苛刻的环境,可以选择int32

3.字段名称:字段名称的命名和C。C++灯语言的变量命名方式几乎是相同的。

4.字段编码值

有了该值,通信双方才能互相识别对方的字段。当然相同的编码值,其限定修饰符和数据类型必须相同。

编码值的取值范围为1~2^32(4294967296)。

其中1~15的编码时间和空间效率都是最高的,编码值越大,其编码的时间和空间效率就越低(相对于1-15),当然一般情况下相邻的2个值编码效率的是相同的,除非2个值恰好实在4字节,12字节,20字节等的临界区。比如15和16.

1900~2000编码值为Google protobuf 系统内部保留值,建议不要在自己的项目中使用。protobuf 还建议把经常要传递的值把其字段编码设置为1-15之间的值。

消息中的字段的编码值无需连续,只要是合法的,并且不能在同一个消息中有字段包含相同的编码值。

建议:项目投入运营以后涉及到版本升级时的新增消息字段全部使用optional或者repeated,尽量不实用required。如果使用了required,需要全网统一升级,如果使用optional或者repeated 可以平滑升级。就好比在编码信息的时候,年龄是30 ,大学里开了30门课,然后就将将这个两个30编码了,发送给接收方了,但是当接受方收到之后,不知道这两个30是什么意思。然后你就必须给这两个30编一下序,2号表示年龄,为30,15,课程数,30。其实这个编码值可以表示发送一帧数据,第一字节,第二字节,第三字节……

ID age classes

⑤.默认值。当在传递数据时,对于required数据类型,如果用户没有设置值,则使用默认值传递到对端。当接受数据时,对于optional字段,如果没有接收到optional字段,则设置为默认值。

关于import

Protobuf接口文件可以像C语言的.h文件一样,在需要的时候通过import导入需要的文件,和include的行为大致想相同。

关于package

避免名称冲突,可以给每个文件指定一个package名称,对于C++则解析为命名空间。

DOSBOX使用手册

首先下载DOSBOX,它的作用就是让你在64位下使用32、16位的软件。如果不使用DOSBOX就会出现程序不兼容的对话框。 开始安装:双击打开DOSBox软件,按步骤进行安装,安装目录任选,不过由于C盘是系统盘,所以最好安装在其他盘里; 安装成功后打开DOSBox, 我们就可以看到一个非常熟悉的界面了,和电脑里的命令提示符DOS窗口差不多:(注意:由于它的两个窗口是在一起作用的,所以使用的时候不要关掉其中的任一个窗口) 安装完DOSBox后,我们就能运行汇编后的程序了 打开DOSBox后,我们可以看到Z : \ >,这是DOSBox里的虚拟盘,我们可以采用mount命令将其转变到自己的D盘:mount d d:\masm 这里,我在D盘建立了一个文件夹masm,作为自己做汇编实验的文件存放位置;使用该命令后,d符号也就虚拟成了自己本地电脑的d:\masm目录;这时候在DOSBOX里面输入d:\其实是打开电脑里面的D:\masm 但是每次打开DOSBOX都要输入太麻烦,所以:开始——>所有程序——>DOSBox文件——> 打开DOSBox 0.74 Options,在打开的文本里找到[autoexec](应该会在文本的最后位置),根据你自己做汇编实验的文件夹所在路径进行相应的设置,在;[autoexec]项的末尾写上上面的两条命令:以我的文件路径为例:

mount d: d:\masm d: 2、然后将自己在网上下载的DEBUG32.exe和masm5.0中的所有东西(包括masm.exe,link.exe等等)都放在d:\masm 文件夹下。这时候打开DOSBOX就可以直接输入:DEBUG32 使用DEBUG 了。直接输入masm 就可以用MASM进行编译了,Link也一样。 3、一些人在使用这种方法使用MASM的时候会出现unable to open input file 这个错误,是汇编时找不到源文件。 以我的为例,我将我的1.ASM文件放在D:\MASM\WYX这个文件夹下。如果编译的时候用 Object Modules [.OBJ]:D:\MASM\WYX\1 就会出现上面的错误提示。 正确的应该是 Object Modules [.OBJ]:D:\wyx\1 这是因为DOSBOX虚拟D:\masm盘为系统盘,在DOSBOX直接输入D:\其实是进入了你电脑的D:\masm

drozer使用详解

Mercury(Android APP 应用安全评估) Mercury 是一款优秀的开源Android APP应用安全评估框架,它最赞的功能是可以动态的与android设备中的应用进行IPC(组件通信)交互。 一、安装与启动 1. 安装 (1)windows安装 第一步:下载Mercury 2.2.2 (Windows Installer) 第二步:在Android设备中安装agent.apk adb install agent.apk (2)*inux安装(Debian/Mac) apt-get install build-essential python-dev python-setuptools #以下步骤mac也适合 easy_install --allow-hosts https://www.wendangku.net/doc/858451539.html, protobuf==2.4.1 easy_install twisted==10.2.0 (为了支持Infrastructure模式) wget https://www.wendangku.net/doc/858451539.html,/assets/415/mercury-2.2.2.tar.gz tar zxvf mercury-2.2.2.tar.gz easy_install mercury-2.0.0-py2.7.egg 2. 启动 有三种方式 (1)USB方式的 第一步:在PC上使用adb进行端口转发,转发到Mercury使用的端口31415 adb forward tcp:31415 tcp:31415 第二步:在Android设备上开启Mercury Agent 选择embedded server-enable

zheng-环境搭建及系统部署文档20170213(三版)

1Een 项目描述 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构:内容管理系统(门户、博客、论坛、问答等)、统一支付中心(微信、支付宝、在线网银等)、用户权限管理系统(RBAC细粒度用户权限、统一后台、单点登录、会话管理)、微信管理系统、第三方登录系统、会员系统、存储系统 https://www.wendangku.net/doc/858451539.html,/zhengAdmin/src/ 2项目组织结构

3项目模块图 4项目使用到的技术4.1后端技术 Spring Framework SpringMVC: MVC框架

Spring secutity|Shiro: 安全框架 Spring session: 分布式Session管理MyBatis: ORM框架 MyBatis Generator: 代码生成 Druid: 数据库连接池 Jsp|Velocity|Thymeleaf: 模板引擎ZooKeeper: 协调服务 Dubbo: 分布式服务框架 TBSchedule|elastic-job: 分布式调度框架Redis: 分布式缓存数据库 Quartz: 作业调度框架 Ehcache: 缓存框架 ActiveMQ: 消息队列 Solr|Elasticsearch: 分布式全文搜索引擎FastDFS: 分布式文件系统 Log4J: 日志管理 Swagger2: 接口文档 sequence: 分布式高效ID生产 https://www.wendangku.net/doc/858451539.html,/yu120/sequence AliOSS|Qiniu: 云存储 Protobuf|json: 数据传输 Jenkins: 持续集成工具 Maven|Gradle: 项目构建管理

DOSBox 在Linux中的使用

DOSBox 出自Linux社区Wiki By Startmenu 很有幸...我能在这里编写教程.... 目录 [隐藏] 1 好啦,切入正题.. 2 我们就以枫之舞为例,来讲讲它如何使用: 2.1 安装后的配置: 2.1.1 附加内容(适合老版本的DosBox,0.74版在当前测试环境中不需要这样的操作): 2.2 释放鼠标 2.3 如果你要玩仙剑,Dos恐怕不能实现,需要装windows 3.x 2.3.1 Windows 3.2 的安装 2.3.2 widows 3.2的基本操作 2.3.3 后续补充 2.3.3.1 改变内存大小 2.3.3.2 从一个镜像启动(以PowerOS为例) 3 Qomo风波——Qomo可能装不上之解决方法 好啦,切入正题.. Step1 下载DosBox ,目前最新版:0.74 去https://www.wendangku.net/doc/858451539.html,/download.php?main=1下载。找到Source ...点击...下载。

Step2 用root登录,然后,把下载后的文件放到root目录,再两次解压,象这样“/root/dosbox-0.74/dosbox-0.74” (用图形方式,不推荐用命令。你解压完下载的那个包后,还有一个包,再解压) Step3 安装... cd /root/dosbox-0.74/dosbox-0.74 sh configure make make install

Step4 启动 在运行或终端中运行dosbox (注意区分大小写)

好了...可以使用了。 先挂载 命令:mount [DOS盘符(冒号可有可无)] [目录路径] 如mount C /root/VD/C

GoogleProtoBuf开发者指南

ProtoBuf开发指南 - 非官方不完整版 这个文档用于指导开发的,属于非官方发布版本进行选译的,并不完整。供参考使用。 1 概览 欢迎来到protocol buffer的开发者指南文档,一种语言无关、平台无关、扩展性好的用于通信协议、数据存储的结构化数据串行化方法。 本文档面向希望使用protocol buffer的Java、C++或Python开发者。这个概览介绍了protocol buffer,并告诉你如何开始,你随后可以跟随编程指导 ( https://www.wendangku.net/doc/858451539.html,/apis/protocolbuffers/docs/tutorials.html )深入了解protocol buffer编码方式 ( https://www.wendangku.net/doc/858451539.html,/apis/protocolbuffers/docs/encoding.html)。API 参考文档 ( https://www.wendangku.net/doc/858451539.html,/apis/protocolbuffers/docs/reference/overview .html )同样也是提供了这三种编程语言的版本,不够协议语言 ( https://www.wendangku.net/doc/858451539.html,/apis/protocolbuffers/docs/proto.html )和样式( https://www.wendangku.net/doc/858451539.html,/apis/protocolbuffers/docs/style.html )指导都是编写 .proto 文件。 1.1 什么是protocol buffer ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。 1.2 他们如何工作 你首先需要在一个 .proto 文件中定义你需要做串行化的数据结构信息。每个ProtocolBuffer信息是一小段逻辑记录,包含一系列的键值对。这里有个非常简单的 .proto 文件定义了个人信息: message Person { required string name=1; required int32 id=2; optional string email=3; enum PhoneType {

Ubuntu14.04的caffe编译及安装

Caffe Caffe CaffecuDNNAlexNetK40 1.17ms. Caffe BSD-2

sudo apt-get install build-essential # sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libop encv-dev libhdf5-serial-dev protobuf-com sudo apt-get install --no-install-recommends libboost-all-dev CUDA7.5 Nvidia Ubuntudeb , sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb sudo apt-get update

sudo apt-get install cuda sudo ldconfig /usr/local/cuda/lib64 660 sudo apt-get install nvidia-cuda-toolkit sudo apt-get install nvidia-352 sudo reboot Atlas sudo apt-get install libatlas-base-dev pythonpipeasy_install wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py sudo python ez_setup.py --insecure wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py python sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortr an python-numpy

汇编实验指导(2016)

汇编语言程序设计实验指导书 实验一DOS常用命令及8088指令使用 (1) 实验二内存操作数及寻址方法 (4) 实验三数据串传送和查表程序 (6) 实验四屏幕字符显示程序 (8) 实验五条件转移指令 (10) 实验六汇编语言程序上机过程 (13) 实验七分枝程序 (15) 实验八多重循环程序 (17) 实验九子程序 (18) 实验十音乐程序 (21) 实验十一数码转换程序 (23) 实验十二键盘和窗口程序 (26) 实验十三活动图形显示程序 (28)

实验一 DOS常用命令及8088指令使用 实验目的: 通过实验掌握下列知识: 1、DOS命令: DIR,CD。 2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD码,ASCII码及用16进制数表示二进制码的方法。 5、8088寄存器: AX,BX,CX,DX,F,IP。 内容及步骤: 一、DOSBOX的使用: 1、把Masm5.0文件复制到F盘的根目录下; 2、打开DOSBOX程序; 3、在窗口下输入:MOUNT C F:\Masm5.0 回车; 4. 输入C: 回车,把E:\Masm 5.0当作C盘使用; 4、输入dir 回车,是否看到masm5.0文件夹下面的文件,如果看到,说明当前的路径是在masm5.0文件夹下; 二、DEBUG 命令使用: 1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存 单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 思考并自己实现: 1、要在当前段偏移量为120处开始连续存放8个8,请用命令实现; 2、要在当前段偏移量为130处开始连续存放abcdefghijklmnop等字符,请用命令实现; 三、8088常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,35 MOV AL,48 MOV DX,75AB XCHG AX,DX 2)用U命令检查键入的程序并记录,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。

comake使用详解

Comake2使用详解 1、适用用户范围: 第一次使用comake2工具 使用comake2搭建环境:这时用户不需要关心COMAKE文件细节,和第一次使用comake2工具时的情形差不多,第一次使用comake2工具初始化环境 $mkdir --parent ps/se/ac/make $cd ps/se/ac/make $comake2 -S $comake2 -UB comake2 -S //初始化COMAKE文件 comake2 -S表示从平台最新基线版本获取依赖列表;comake2 -S -r 1.0.1.0表示从平台1.0.1.0版本获取依赖列表友情提示:如果你的代码库里已有COMAKE文件,可跳过这一步;如果你的模块路径是ps/se/ac/make,请cd ps/se/ac/make再执行comake2 -S命令 comake2 -UB //下载并编译依赖代码 2、comake2命令 $ comake2 -h comake[com make]能够自动帮助用户搭建环境,并且生成Makefile工具. 程序会读取目录下面的COMAKE文件,产生Makefile和环境.用户需要提供这个COMAKE文件. 参数: -h --help 查看帮助 -D --debug 开启debug选项[默认不打开].-D -D可以查看更多调试信息. -S --scratch 创建一个默认的COMAKE文件 -r --revision 从平台检出模块cvspath指定的TAG对应的依赖列表,配合-S使用,如-S -r 1.0.0.0 -E --export-configs 导出模块的4位版本依赖,存放在COMAKE.CONFIGS下面.比如-E public/ub@1.0.0.0 -W --watch-configs 查看本地依赖模块.-W -W可以查看模块引入来源.-W -W -W可以查看依赖模块的依赖. -I --import-files 在解释COMAKE文件之前导入模块 -C --change directory 切换到directory下面执行[默认当前目录] -Q --quiet 安静模式[默认不打开] -U --update-configs 更新环境 -B --build-configs 构建环境 -F --force 构建环境时强制进行[默认不进行] -e --export-local-configs 导出本地环境到CONFIGS.SCM文件 -f --scmfile= 重现编译环境 -d --devdiff 存在本地修改的共同开发依赖列表(多模块共同开发时适用) -J --make-thread-number= 如果模块使用COMAKE生成的Makefile的话,编译线程数[默认是4] -j --modules-thread-number= 并发下载、编译模块的线程数[默认是1] -K --keep-going 构建/更新环境中途出错的话,忽略错误继续[已废弃] -P --pretreatment 生成Makefile时不进行预处理[默认进行预处理] -O --quot-all-deps 生成Makefile时引用所有头文件依赖[默认过滤目录外依赖]

Protobuf编码详解

prtotocol buffer是google于2008年开源的一款非常优秀的序列化反序列化工具,它最突出的特点是轻便简介,而且有很多语言的接口(官方的支持C++,Java,Python,C,以及第三方的Erlang, Perl等)。本文从protobuf如何将特定结构体序列化为二进制流的角度,看看为什么Protobuf如此之快。 一,示例 从例子入手是学习一门新工具的最佳方法。下面我们通过一个简单的例子看看我们如何用protobuf 的C++接口序列化反序列化一个结构体。 1,编辑您将要序列化的结构体描述文件Hello.proto 每个结构体必须用message来描述,其中的每个字段的修饰符有required, repeated和optional 三种,required表示该字段是必须的,repeated表示该字段可以重复出现,它描述的字段可以看做C语言中的数组,optional表示该字段可有可无。 同时,必须人为地为每个字段赋予一个标号field_number,如上图中的1,2,3,4所示。更详细的proto文件的编写规则见这里。 2,用protoc工具“编译”Hello.proto protoc工具使用的一般格式是: protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto 其中SRC_DIR是proto文件所在的目录,DST_DIR是编译proto文件后生成的结构体处理文件的目录 之后会生成对结构体Hello.proto中描述的各字段做序列化反序列化的类 3, 编写序列化进程https://www.wendangku.net/doc/858451539.html,

我们用set方法为结构体中的每个成员赋值,然后调用SerializeToOstream将结构体序列化到文件log中。 并编译它: 4,编写反序列化进程https://www.wendangku.net/doc/858451539.html, 用ParseFromIstream将文件中的内容序列化到类Hello的对象msg中。 并编译它: , 5,做序列化和反序列化操作 上面只是一个简单的例子,并没有对protobuf的性能做测试,protobuf的性能测试详见这里。

Ubuntu下安装Caffe

Ubuntu下安装Caffe 安装需要的软件: 1. Ubuntu14.0.4 2. cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64 3. caffe-master 安装Ubuntu的过程在这里不做介绍。系统安装好了之后,执行下面的操作。 在线安装的步骤,在此之前将更新源换成163的,下载速度会快很多: 1. sudo apt-get update 2. sudo apt-get upgrade 以上更新系统相关软件 3. sudo apt-get install build-essential 4. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev 5. sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler 6. sudo apt-get install libatlas-base-dev python-dev vim 以上为在线安装的依赖项需要按顺序执行 7. 切换到cuda安装包的目录下,执行sudo dpkg -i cuda-repo-ubuntu1504-7-5- local_7.5-18_amd64 8. sudo apt-get update 9. sudo apt-get install -y cuda 以上为安装CUDA驱动。(Nvidia驱动在这个过程也会自动装好) 10. vim ~/.bashrc 11. 按i进入编辑状态,将光标移到最下面一行。输入export PATH=/usr/local/cuda- 7.5/bin:$PATH 12. 输入export LD_LIBRARY_PATH=/usr/local/cuda- 7.5/lib64:$LD_LIBRARY_PATH,按:wq保存并退出 13. source ~/.bashrc 以上为配置环境变量 14. 将下载好的caffe源文件解压缩,即caffe-master然后切到那个目录中执行cp Makefile.config.example Makefile.config 15. vim Makefile.config 16. 按i进入编辑状态,修改:CUDA_DIR :=/usr/local/cuda-7.5 17. 如果使用了MATLAB或者Python需要按照Makefile.config文件中的提示在 Makefile.config进行相应的路径修改即可。 以上为配置Caffe相关路径 18. make all 19. make test 20. make runtest

dosbox安装方法

Win7/win10 下安装dosbox的方法 注:学习汇编语言时要使用masm/debug等软件,这些软件在win7/10下不能直接使用,必须先安装dosbox虚拟机软件,然后在dosbox中使用masm/debug。 安装dosbox方法如下: 1.双击DOSBox0.74-win32-installer.exe ,按”next”, 可以选择任意的安装目录,如下图 2、安装完毕后,在桌面会生成DOSBox快捷图标。双击桌面的DOSBox,启动软件如下图: 3. 将压缩包中MASM文件夹解压拷贝到任意盘,比如D:\masm,然后将这个目录挂载为DOSBox的一个盘符,挂载命令如下:

mount x D:\masm x: 如下图所示: 输入x: , 按回车键,就可以切换到已挂载的x盘。 执行dir命令,显示一下DOSbox中x盘下的文件。 x:\> dir 之后就可以运行x盘中的MASM, LINK, debug了。 注1:挂载x盘后,如果使用其它编辑软件在x盘中存入了新文件,有时没有刷新,看不见新文件名。此时可按ctrl+ f4刷新x盘,然后再执行dir命令,就可看见新文件名。 注2:做汇编实验时应将源程序保存在x盘对应的目录下(例如d:\masm), 以便于用masm 和link 处理源程序。 注:如果不想每次启动dosbox时,都手工挂载x盘,可以将挂载命令写入dosbox的配置文件。修改配置文件的方法如下: 1.右键单击桌面上的dosbox快捷图标,查看其“属性”。在弹出的属性窗口中选择“打开 文件所在的位置”,如下图:

2.双击下图的“DOSBOX 0.74 Options.bat”, 将打开配置文件编辑窗口 3.在弹出的编辑窗口中,定位到文件末尾的[autoexec]部分,在最后添加两行命令 mount x D:\masm X: 保存即可。这样下次双击桌面的”DOSBOX”快捷图标后,将自动挂载x盘,无需手工挂载。

Unity3D客户端和Java服务端使用Protobuf

Unity3D客户端和Java服务端使用Protobuf 本文测试环境: 系统:WINDOWS 7(第3、6步)、OS X 10.9(第4步)软件:VS 2012(第3、6步)、Eclipse(第5、6步) 硬件:iPad 2(第4步)、Macbook Pro Mid 2012(第4步)文章目录: 1、关于Protobuf的C#实现 2、为什么有些Protobuf发布到iOS就用不了,甚至有些在PC都用不了? 3、手动处理C#版本的Protobuf 3.1、创建一个C#工程,先手动创建每一个要通过Protobuf序列化或反序列化的数据模型类,然后导出dll 3.2、创建一个用于序列化的C#工程,然后运行生成dll 3.3、将上面两个工程生成的dll拖到unity中 4、在Unity中反序列化Protobuf 5、服务端Java也用Protobuf 6、太烦了?!客户端也要自动处理Protobuf1、关于Protobuf 的C#实现 首先,U3D里面Protobuf使用的是C#的实现,那么目前有几个可选的C#实现:

C#: https://www.wendangku.net/doc/858451539.html,/p/protobuf-csharp-port C#: https://www.wendangku.net/doc/858451539.html,/p/protosharp/ C#: https://https://www.wendangku.net/doc/858451539.html,/protobuf/ C#/.NET/WCF/VB: https://www.wendangku.net/doc/858451539.html,/p/protobuf-net/我这里选用的是https://www.wendangku.net/doc/858451539.html,/p/protobuf-net/(你可以在 https://https://www.wendangku.net/doc/858451539.html,/p/protobuf-net/downloads/list 这里下载到他的代码和工具),它比较好的一点是,提供了各种平台的支持,解压后在“Full”目录中可以看到各个平台的支持看到里面的unity了吗,它里面的protobuf-net.dll将是我们准备用到的。2、为什么有些Protobuf发布到iOS就用不了,甚至有些在PC都用不了? a、Protobuf使用了JIT,即在运行时动态编译,而这个特性在Unity发布到iOS时候是不支持的。因此,会导致你在PC 上可以正常运行,发布到iOS就有问题。 b、Protobuf是基于.net 2.0以上框架写的,而Unity仅支持.net 2.0,或者有些使用2.0中比较多的特性,而你在Unity 中发布设置了.net 2.0的子集。后者你只需要在Player setting中修改设置就可以了。 上面两项也可适用于其它第三方类库,如果你自己下载了一个在PC上或C#里面能正常使用的类库,在U3D里面就不能用了,那么请检查是否是上面两条原因导致的。3、手动

win7 64位 汇编环境搭建 DOSbox

win7 64位汇编环境搭建(一) 最近在学习汇编与接口技术,但是在自己的机子上实验的时候,尴尬地发现我们的win 7 64位环境下,在DOS下竟然没有debug.exe,好不容易找到一个debu.exe,在DOS环境下调用,竟然是下面的结果: win7 64位和32位的debug.exe 不兼容。 就到网上找相关的解决办法,终于找到了一个很好的工具:DOSBOX。 一,下面就介绍下DOSBOX如何进入debug环境下: 1,DOSBOX本来是用来在windows环境下运行DOS游戏的一款游戏工具,但是我们用来在win7环境下进行汇编的学习。 2,在网上下载并安装,打开后就是DOSBOX的界面,有点与DOS的界面不一样,但是没有关系,能达到我们的目的就好 安装好它后,不用做什么,你就可以开始在其上用debug进行简单的汇编的操作了 3,在网上找到debug并下载,并将其放在你喜欢的任意的一个目录下

4,在上面输入: mount A B:\ A : cd ...\.. debug 此时,你已经进入debug环境下,可以进行基本的汇编操作了。 解释下上面的基本的命令的意义: mount:是Linux下的一个命令,它可以将Windows分区作为Linux的一个“文件”挂接到Linux 的一个空文件夹下,从而将Windows的分区和/mnt这个目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了,后面的参数A是指linux下的文件,B是你在本地的实际的磁盘。根据你自己的喜好,可以自己选择。 后面的A: , cd:..\.. ,debug,相信大家都是知道的,所以就不解释了。 以上介绍了如何在win7环境下进入debug进行汇编,写这篇随笔的主要的目的是给大家介绍如何在win7 环境下如何建立汇编源码的分立的上机环境,就是把程序的编译,连接,生成exe,一步一步进行的分离环境。 二,利用DOSBOX进行分立汇编环境搭建 在我的第一篇博文win7 64位汇编环境搭建(一)中我介绍了如何利用DOSBOX在win7 64位环境中进入debug环境中进行汇编相关指令的练习,今天就把我如何搭建分立的开发汇编程序的环境。 1,准备汇编基本的编译与连接的程序:masm.exe与link.exe 这两个软件是最常用的两个,也是开发汇编程序必须的两个。这两个在masm5.0或者更高的版本中可以找到,我现在用的是masm5.0.这里面还有我们可能在汇编的时候还会用到的其他的一些工具。 2,着手搭建分离环境 将在网上找到的masm5.0解压到一个你喜欢的地方,然后按照win7 64位汇编环境搭建(一)所说的方法进入masm5.0目录下,此时你的分立的环境就基本搭建好了。 3,将昨天所说的debug.exe也拷贝到masm5.0的目录下,这是你不仅可以在这个环境下生成可以直接运行的exe文件,还可以在其下进行debug了。 4,现在就在我们新搭建起来的汇编环境编写一个入门程序hello ,world!来练练手吧!(1)编写源码,并将文件保存为xxx.asm,这里我就保存为hello.asm吧。 在编写源码的时候,你可以采用一般的文本编辑器,并另存为hello.asm,并该文件拷贝 到masm5.0目录下,就可以进行编译、链接了。 如果你想更有感觉点,像老师那样,输入edit就调用汇编程序编辑器来编辑你的源代 码,那就在网上找一个https://www.wendangku.net/doc/858451539.html,,并将其拷贝到masm5.0目录下,那样就可以在DOS界面

分布式数据库原理及应用实验10-redis与hbase安装

《分布式数据库原理及应用》 实验报告 实验10:redis与hbase安装

一、实验目的 1.掌握redis与hbase的特点。 2.掌握redis与hbase的安装。 二、实验环境 操作系统自定 三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果) 实验内容: 1.梳理mongodb,neo4j,memcache,redis,hbase的异同 2.完成redis的安装与测试 3.完成hbase的安装与测试 实验步骤: 1.梳理mongodb,neo4j,memcache,redis,hbase的异同 Redis 所用语言:C/C++ 特点:运行异常快使用许可: BSD 协议:类 Telnet 有硬盘存储支持的内存数据库 Master-slave复制 虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作。 Redis支持事务,支持哈希表,支持排序sets,支持队列(阻塞/非阻塞),支持将数据设置成过期数据(类似快速缓冲区设计) Pub/Sub允许用户实现消息机制。最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。 例如:股票价格、数据分析、实时数据搜集、实时通讯。 Master-slave复制:如果同一时刻只有一台服务器处理所有的复制请求,这被称为Master-slave复制,通常应用在需要提供高可用性的服务器集群。 MongoDB 所用语言:C++ 特点:保留了SQL一些友好的特性(查询,索引) 使用许可: AGPL(发起者: Apache)协议: Custom binary( BSON) Master/slave复制(支持自动错误恢复,使用 sets 复制)内建分片机制 支持javascript表达式查询可在服务器端执行任意的 javascript函数 update-in-place支持比CouchDB更好。在数据存储时采用内存到文件映射对性能的关注超过对功能的要求建议最好打开日志功能(参数–journal) 最佳应用场景:适用于需要动态查询支持;需要使用索引而不是 map/reduce功能;需要对

ganntrader3.1使用说明书部分

Ganntrader(江恩交易者)3.1使用说明及江恩理论 Zcp9624 特别声明: 一、本人写关于ganntrader的使用方法的初衷一是宣传ganntrader这款精致的江恩软件,他集成了江恩理论的大部分分析工具,二是通过ganntrader的使用同时也可以学习江恩理论的内容和精髓! 二、ganntrader的版权归软件公司,本人不提供任何软件的下载和破解。购买请咨询相应代理机构或软件公司。 第一章:ganntrader3简介 Ganntrader(江恩交易者)软件包对于W. D. Gann交易方法的忠实信徒而言,无疑是一个强大的分析工具。它作为一种图表分析与研究的工具主要用于测试市场走势,从而最终将Gann技术与自己的交易系统融为一体。尽管江恩著作中所揭示的知识十分有益,但对于Gannrader的用户来说,这不是他们操作这一软件的先决条件;而使用Gannrader更不需要具备先进的电脑知识,我们的观点在于电脑系统本身已经涵盖了这一切。电脑的实际力学和特性应当通过程序体现出来,而不是软件用户,其结果就是Ganntrader软件的简单易用,绝大多数指令只需按下一个键或点击一下鼠标就能够完成,多数出错信息也可以按同一方式解决,软件程序及其用户指南全无任何电脑的行话,你只要插入磁盘打开机器,接下来的一切看起来是多么的简单。 对于那些潜力苦读Gann著作或钻研以W. D. Gann命名交易课程的交易者而言,江恩的成就名震天下,以下这些简要的交易记载早已耳熟能详。 Gann被认为是历史上最成功的商品期货炒家之一,在超过50年的职业生涯中,他据称在股票和商品期货上赚取超过5000万美元的巨大利润。尽管这一数字的精确程度无从考究,但江恩先生一生享尽富贵却是有目共睹的。 有几家杂志和报纸这样著文描绘其成果;在众目睽睽之下,江恩曾在1909年10月的一个月内,完成286个来回的股票交易,其中的264次也就是92%是获利的;另一次,他在不到一个月的时间内,将一个130美元的帐户变成12,000美元。他拥有测算一天价格波动转折点的魔力,其中的最高价和最低价误差不超过八分之一点。所有这一切都是有公开记录记载的。 江恩的交易哲学可以透过他本人的论述得到: “在变动法则作用下,市场中每一个股票和商品期货都具有其自身独特的活动特性,并以波动强度、成交量和走向方式表现出来;所有这些评估其状况的基本特质,均通过与其相关的独特变动比率反映出来。 股票和商品期货就象原子一样,属于能量的真实中心,所以它们是可以通过数学方式加以控制的,它们能够产生波动和能量的自有空间,吸引和排斥能量,这样就可以解释,为什么总有股票和商品期货有时引领市场,有时则反其道行之。要想进行科学的投机交易,你绝对需要遵从自然法则。 变动法则是基石,没有任何东西能够规避这一法则,它又是宇宙法则,所以适用于这一星球上任何类型的事物。 所以,我敢断言,任何类型的东西无论它身处大自然还是投资市场,都必须遵从这一万物之源的宇宙法则,和谐与共振。”

win7离线安装tensorflow和keras

Win7_64离线安装tensorflow+keras 亲测安装成功 1. 安装Anaconda 安装包选择:Anaconda3-4.2.0-windows-x86_64(内置python3.5编译环境) 安装目录:C:\ Anaconda3。 注意最后应将路径加入Path的选项勾上,否则可能会导致无法启动Anaconda。 安装好后要检查一下python是否正确使用。如果设置环境变量后仍不能正常使用,则重新安装Anaconda3-4.2.0-windows-x86_64。 2. 下载并解压protoc- 3.1.0-win32,将bin文件夹中的protoc.exe拷贝到C:\windows\system32中; 3.进入到C:\Anaconda3\Lib\site-packages目录下,新建tensorflow文件夹用来存放tensorflow 的安装文件; 4. 下载并解压protobuf-3.1.0.tar,将解压后的文件protobuf-3.1.0拷贝到新建的tensorflow 文件夹中,并且将protoc.exe文件拷贝到protobuf-3.1.0\src文件中; 5. 通过cmd命令进入到protobuf-3.1.0\python的目录下,执行命令python setup.py install; 6. 安装tensorflow:将安装包tensorflow-1.0.1-cp35-cp35m-win_amd64.whl复制到Anaconda3\Lib\site-packages\tensorflow文件中,然后通过cmd命令进入到Anaconda3\Lib\site-packages\tensorflow目录下,执行命令pip install tensorflow-1.0.1-cp35-cp35m-win_amd64.whl进行安装,待安装结束后,在Ipython命令行下输入import tensorflow as tf,若不报错则说明tensorflow安装成功。 7.下载keras源文件,并cd到下载的keras 文件夹的路径,执行命令:sudo python setup.py install。可能重复几次即可。 8.出现”sudo 不是内部命令”错误,可以将sudo文件粘贴在C:\Anaconda3下,并增至到环境变量中“;C:\Anaconda3” 9.sudo文件制作: 将下面的代码全部粘贴在新建文本文件中,并重命名文本文件为sudo.vbs (注意后缀改成了.vbs)。将sudo.vbs 所在路径添加到环境变量PATH 中 'ShellExecute 方法 '作用: 用于运行一个程序或脚本。 '语法 ' .ShellExecute "application", "parameters", "dir", "verb", window

Hadoop2.4、Hbase0.98、Hive集群安装配置手册

Hadoop、Zookeeper、Hbase、Hive 集群安装配置手册?

运行环境?
? 机器配置 虚机 CPU?E5504*2?(4 核心)、内存 4G、硬盘 25G ? 进程说明 QuorumPeerMain DFSZKFailoverController JournalNode ZooKeeper?ensemble?member Hadoop?HA 进程,维持 NameNode 高可用 Hadoop HA 进程,JournalNode 存储 EditLog, 每次写数据操作有大多数(>=N+1)返回成功时 即认为该次写成功,保证数据高可用 Hadoop?HDFS 进程,名字节点 HadoopHDFS 进程, serves?blocks Hadoop YARN 进程,负责 Container 状态的 维护,并向 RM 保持心跳。 Hadoop?YARN 进程,资源管理 Hadoop?MR1 进程, 管理哪些程序应该跑在哪 些机器上,需要管理所有 job 失败、重启等 操作。 Hadoop?MR1 进程,manages?the?local?Childs Hive 进程 HBase 主节点 HBase?RegionServer,?serves?regions 可以通过该服务查看已经运行完的 mapreduce 作业记录?
NameNode DataNode NodeManager ResourceManager JobTracker?
TaskTracker RunJar HMaster HRegionServer JobHistoryServer 主机/hostname 10.12.34.14/https://www.wendangku.net/doc/858451539.html, 系统版 本 Centos 5.8?
应用 mysql mysqld?
服务进程?

dosbox使用方法

可以在任何WIN平台下运行DOS游戏,玩DOS的必备。 使用方法 1、安装 2、运行 3、在输入框状态下z:\> z:\>mount c d:\dos ===>“z:\>”这个是提示符“c”作为虚拟C盘"d:\dos"你要虚拟的文件夹位置。 简洁的讲,你把你要虚拟的文件夹位置换掉上面的D:\DOS 4、在刚才的提示符下输入c: ,这样就切换到虚拟的c盘,也就是你要的游戏目录 5、运行C目录下的游戏,以后操作按DOS命令。字串4 最简单的方法,把要运行的程序比如play.bat直接拖到dosbox的图标上。字串6 游戏运行问题汇总:字串1 (一)DOSBOX主要快捷键说明 字串2 Alt+Enter 全屏/窗口切换 Ctrl+F5 游戏截图 Ctrl+F6 游戏录音 Ctrl+F7 降低跳桢数 Ctrl+F8 提高跳桢数 Ctrl+F9 强制退出DOSBOX Ctrl+F10 显示/隐藏系统鼠标 Ctrl+F11 降低“DOS模拟CPU”速度 Ctrl+F12 提高“DOS模拟CPU”速度 字串6 (二)游戏运行问题解决方法: 字串1 1、“声音图像”不同步问题(先“Alt+Enter”切换至窗口,可以看到你的“模拟CPU速度”与“跳桢数”,如图): DOSBOX模拟CPU速度(Cpu Cycles: 3000)、跳桢数(Frameskip 0)、运行游戏主程序名称(Program: PAL) 字串8

----------------声音断续且游戏速度明显低于正常速度,使用“Crtl+F8”提高跳桢数(不要超过3) ----------------声音刺耳且游戏速度明显高于正常速度,使用“Ctrl+F7”降低跳桢数(不可能低于0) ----------------声音断续且游戏速度明显低于正常速度,但跳桢数已经为“3”(再增加跳桢数会影响游戏画面质量),使用“Crtl+F12”提高“DOSBOX模拟CPU”速度(不要超过3600) ----------------声音刺耳且游戏速度明显高于正常速度,但跳桢数已经为“0”,使用“Ctrl+F11”降低“DOSBOX模拟CPU”速度(不要低于2700) 字串8 2、进入游戏后如有“系统鼠标”干扰“游戏画面”,请使用“Ctrl+F10”隐藏“系统鼠标” 字串7 3、“游戏截图/游戏录音”时不能切换“全屏/窗口”,这是DOSBOX的BUG。 字串8 现在我们就来看看DOSBOX的使用方法。以WINDOWS版为例。 下载到的安装文件不大,安装也是标准的WIN式。安装好后运行,会出现两个COMMAND 样子的窗口,我们操作的是前方的那个。 字串7 假如你的枫之舞安装在"D:\dosgames\swda",那么我们可以输入: mount c D:\dosgames\swda来把swda目录虚拟成DosBox的C盘根目录。下面的操作就和真dos一样了。如果想虚拟光驱或软驱, 则要加参数-t cdrom或-t floppy。建议不要使用中文目录名和文件名,有可能出错。 每次都这样输入也太麻烦啦!好在还有一些快捷方法: 一、直接把可执行文件拖动到DosBox图标上放手。不过或许是软件还不完善,有时候这样做会出错。字串4 二、用记事本打开dosbox.conf文件,找到[AUTOEXEC]部分,把整条mount命令写在这里——DosBox把这部分当作AUTOEXEC.BAT。提示:我们在DosBox中可以使用大部分dos 内部命令。外部命令软件本身没包含,而且不一定能用。 例子:假如你的DOS游戏都在E:\dosgames\下,那么可以这样写: mount d "e:/dosgames/" 这样,每次启动DOSBOX后,你的e:/dosgames/就是DOSBOX的D盘。 cd swda swda.exe 玩吧~ 下面我们来优化一下DOSBOX。

相关文档
相关文档 最新文档