当前位置:  编程技术>综合
本页文章导读:
    ▪第十三章 报表引擎API及报表API      13.1报表引擎详解,API结构 BIRT包含几个引擎。一个引擎是一个提供一个特定领域的功能的一套Java API。例如,数据引擎包含管理数据的API,图表引擎包含生成一个图表的API。一般而言,BIRT包.........
    ▪数据的网络传输学习笔记      两台主机通信,数据从一台主机传到另一台主机主要有以下三步工作: 1、主机A发送的数据进入线路 2、数据在线路中传输 3、数据从线路的另一端进入主机B中 其实第3步与第1步所做的事正好.........
    ▪数码管重影问题              最近在用单片机做多功能电子钟,在用数码管动态显示时间的时候遇到了重影问题。现在已经解决,正确的步骤应该为: 1、消除重影         如果数码.........

[1]第十三章 报表引擎API及报表API
    来源: 互联网  发布时间: 2013-11-19
13.1报表引擎详解,API结构

BIRT包含几个引擎。一个引擎是一个提供一个特定领域的功能的一套Java API。例如,数据引擎包含管理数据的API,图表引擎包含生成一个图表的API。一般而言,BIRT包含四个引擎,报表设计引擎(design Engine),报表引擎(report engine),图表引擎(chat engine),数据引擎(data engine)。

a) 关于报表设计引擎

报表设计引擎包含验证一个报表设计文件的有效性和生成一个报表设计文件的API。报表设计引擎被BIRT Report Designer和任何定制的生成一个BIRT报表设计的Java应用程序所使用。生成引擎在创建一个报表文档时也使用报表设计引擎。报表设计引擎包含使用ROM技术规范来验证设计文件的元素和结构的有效性的API。

b) 关于报表引擎

报表引擎包含两部分:生成引擎和展示引擎。BIRT Report Viewer和定制的Java应用程序使用报表引擎来处理一个报表设计并按照设计中指定的格式生成报表。生成引擎包含读取和解释一个报表设计的API。生成引擎使用数据引擎来读取和转换来自由报表设计标识的数据源。生成引擎的输出是一个报表文档,这是一个报表产品中的一个中间文档。展示引擎处理由生成引擎创建的报表文档并按设计中指定的格式产生报表。和生成引擎一样,展示引擎也使用数据引擎。但是,在展示阶段,数据引擎从报表文件而不是数据源中获取数据。展示引擎它需要的任何一个报表发射器按照设计中指定的格式生成一个报表。BIRT有两个标准的发射器,HTML和PDF。BIRT也支持不是HTML和PDF格式的定制的发射器。图表报表项和定制的报表项扩展展示引擎来提供这些报表项的展示功能。

c) 关于图表引擎

图标引擎包含生成图表及将图表与来自数据源的数据关联起来的API。图表引擎的使用不仅限于BIRT应用程序。任何Java程序都可以使用图表引擎来创建和现实一个图表。BIRT Report Viewer 解释报表设计中的图标设计信息并使用图表引擎来生成图表。

d) 关于数据引擎

数据引擎包含获取和转换数据的API。当被生成引擎使用时,数据引擎直接从数据源中获取数据。当被展示引擎使用时,数据引擎从报表文档中获取数据。

1) 关于数据引擎组件

数据引擎包含两个主要组件:数据访问组件和数据转换组件。数据访问组件与ODA框架通信来获取数据。数据引擎的数据转换组件执行像排序、分组、累计和过滤来自数据访问组件的数据的操作。

2) 关于ODA框架

ODA框架管理ODA和本地驱动、装载驱动、打开连接并管理数据请求。ODA框架使用Eclipse Data Tools Platform项目来管理连接。ODA框架包含扩展点,籍此可以添加一个定制的ODA驱动。数据引擎扩展用于数据源的连接方法和驱动。如果有一个BIRT不支持的数据源就需要一个定制的ODA驱动。创建一个定制的ODA驱动时可能不仅需要扩展数据引擎而且还需要扩展BIRT Report Designer。如果数据源需要一个GUI组件来制定数据集,那么还需要一个BIRT Report Designer扩展。

 

应用开发者只需要了解公用的API,这些API包含在以下的几个包内:

a) org.eclipse.birt.report.model.api:这个包内包含了93个class,两个接口和一个exception,这个包是为那些想要定制report designer的开发者使用的,报表设计引擎包含这个包

b) org.eclipse.birt.report.engine.api:这个包包含了一个类,17个接口和四个exception,是给那些想要定制一个report generator的开发者使用的,报表引擎包含这个包

c) org.eclipse.birt.charthierarchy:这个包是给想定制一个chartgenerator的开发者使用的,图表引擎包含这个包


BIRT报表引擎(BIRT report engine)在几个环境提供了报表生成和翻译服务,包含在以下组件中:

a) Stand-alone engine:这个engine可以让开发者使用一个命令行程序来从一个report design文件(.rptdesign)中得到Html或PDF格式的report

b) BIRT report viewer:BIRT Report Designer使用它来预览report。这个程序是一个web程序,它运行在一个Eclipse内嵌的Tomcat中,这个Tomcat中有一个内嵌的report engine

c) Custom report designer with an embedded engine:一个定制的桌面报表应用集成BIRT report engine来预览报表

d) Web application that embeds the engine:一个类似于BIRT report viewer的Web程序,可以产生基于web的报表。

 

如下图所示:


另外,用户还能定制报表引擎,除了通常是集成到一个Web应用或者一个独立的Java应用程序外,定制的Java报表生成器质性和BIRT报表生成器相同的功能。和BIRT 报表浏览器Web应用一样,定制的Java报表生成器使用报表引擎的API来读取报表设计文件并生成一个报表。一个定制的业务逻辑来管理安全事宜、控制目录和确定输出的格式。

 

Report engine的核心engine运行并实施报表,而将其他的环境相关的任务留给运行该引擎的应用程序,比如:URLconstruction, image storage, and design file caching

BIRT report engine的API可以做以下几件事情:

a) 发现一组为报表定义的参数(包括动态参数和级联参数)

b) 获得参数的默认值

c) 产生任务(task)实施操作的应用

d)包含1到2个操作阶段((RunTask 然后 Render Task 或者RunAndRenderTask)

d) 为报表产生图片或chart

e) 产生报表文档

f) 运行报表产生HTML或PDF格式的输出



EngineConfig –设置报表引擎可选的参数.

ReportEngine – 用于运行一到多个报表任务

IReportRunnable –用于打开报表设计文档,并把句柄传给报表任务

IReportDocument – 用于打开报表文档,并把句柄传给报表任务,同时包含很多方法用于获TOC,数据等等

HTMLRenderContext – 定义展示HTML的环境,例如设置HTML图片地址,事件处理

PDFRenderContext – 定义展示PDF的环境,例如设置字体的地址,事件处理

HTMLRenderOption – 用于设置html的可选选项,比如导出时的路径



报表设计引擎(Design Engine)需要完成的事情:

1、用于产生或者修改报表设计文档,报表模板文档,报表库文档

2、有时候报表引擎需要修改报表设计文档,这个时候就需要调用报表设计引擎

3、如果报表引擎在运行时,事件机制和脚本机制中本身就包含修改报表设计的代码,这个时候也要调用报表设计引擎

4、用于获取和设置报表参数

5、可以用于获取报表设计的种种属性和参数



    
[2]数据的网络传输学习笔记
    来源: 互联网  发布时间: 2013-11-19

两台主机通信,数据从一台主机传到另一台主机主要有以下三步工作:

1、主机A发送的数据进入线路

2、数据在线路中传输

3、数据从线路的另一端进入主机B中

其实第3步与第1步所做的事正好相反,先来看第1步中数据是怎么流动的?这个过程主要经过了以下步骤:

1、应用程序将要发送的数据写到进程的地址空间(用户态内存区);

2、应用程序通过系统调用将数据从用户态的内存区复制到内核维护的一段内核缓冲区中,由于内核缓冲区通常是有限的,所以这个过程需要排队。内核缓冲区的数据可能来自于多个进程;

3、内核通知网卡控制器来取数据,网卡驱动器根据网卡驱动程序得到内核缓冲的地址,并将数据复制到网卡缓冲区,这个过程按连接两端的内部总线宽度来复制,比如32位总线每次复制32位比特;

4、网卡缓冲区将数据发送到线路中,释放缓冲区准备下一轮复制,这些数据在这步都会转为2进制,因为只有2进制的数字信号才可以在线路中传输。发送时,网卡会根据介质产生各种信号。

数据在线路中的传播速度取决于传播介质,光纤的速度快于铜线,一般接近光速。

并不是进入线路有多少数据,介质中就传播多少数据,这里有出口带宽的限制。众所周知,运营商在所有的基础交换节点上会设置关卡,用于限制数据从主机流入路由器转发队列的速度,只要流入路由器转发队列的数据,都会按路由器的出口带宽,流入其他网络。这种关卡设置实际上限制了你的主机发送数据的速度,也就是限制了主机的出口带宽。所以虽然主机发送数据的速度很快,但由于出口带宽的限制,这些数据要分批发送出去。

这些数据不会直接到达目的地,而是要通过多次排队转发到达目的地,转发之前可能要先排队。如果两主机在同一个城市或者接入的是同一个运营商,转发的次数或许会少一点。如果城市不同,会进入骨干网进行转发;如果接入不同的运营商(电信或者网通),这些数据必须进入骨干网再进入互联互通网络,由互联互通网络的交换机进行转发。

什么是带宽

带宽一般指出口带宽或者入口带宽,指的是路由器或者交换机接收数据的能力,往往受运营商控制,价格昂贵。如果拿高速公路来做比喻,带宽类似调整公路的收费站,要知道收费人员也不是免费干活的。

共享带宽与独享带宽

共享带宽,顾名思义,多台主机共用一定量的带宽。比如小区共享10M带宽,如果只有一台主机接入,这台主机数据出口速度理论上可达到10Mbit/s,换算成字节是1.25MB/s,即便只有一台主机接入,交换机对于共享带宽也会限制最高峰值的,所以实际速度要低于1.25MB/s。如果多台主机接入,这些主机输出数据之和接近1.25MB/s,这些数据不分你我地夹杂在一起从主机进入路由器,分别前往不同的目的地。

如果使用的是独享带宽,交换机会以这个速度(比如1Mbit/s)来接收来自主机的数据。这个交换机上的数据都来自同一主机,当然这些数据也是要排队的。

互联互通

如果把互联网比做高速公路,电信和网络是两条不相连的高速公路,两大运营商早实现了互联互通,但是带宽少得可怜,所以如果你是网通用户在下载资源的时候选择网通服务站点下载,理论上速度会快点。

响应时间

响应时间=发送时间+传播时间+处理时间

发送时间取决于带宽=数据量/带宽,比如发送100Mbit的数据,带宽为10Mbit/s,大约需要10s;

传播时间取决于主机间的距离=传播距离/传播速度;

处理时间包括排队转发时间(包括运营商互联互通的排队转发时间,骨干网上的排队转发时间,交换机排队转发时间等)



作者:aesop_wubo 发表于2013-1-13 18:32:02 原文链接
阅读:33 评论:0 查看评论

    
[3]数码管重影问题
    来源: 互联网  发布时间: 2013-11-19

        最近在用单片机做多功能电子钟,在用数码管动态显示时间的时候遇到了重影问题。现在已经解决,正确的步骤应该为:

1、消除重影

        如果数码段选端连接P0,则共阴极数码管消除重影为:P0 = 0;

2、数码管位选

       如果数码管用138芯片进行位选,代码如下:

// 实现数码管位选
LS138A = (i) & 0x01;
LS138B = (i>>1) & 0x01;
LS138C = (i>>2) & 0x01;

 

3、送入段选数据

        根据需要利用P0引脚送入段选数据。


作者:zcube 发表于2013-1-13 18:26:08 原文链接
阅读:30 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3