(完整word版)Mstar理论及实践篇
- 格式:doc
- 大小:3.62 MB
- 文档页数:77
CSMAR实训报告
这次实习,除了让我对商业企业的基本业务有了一定了解,并且能进行基本操作外,我觉得自己在其他方面的收获也是挺大的。
作为一名一直生活在单纯的大学校园的我,这次的实习无疑成为了我踏入社会前的一个平台,为我今后踏入社会奠定了基础。
首先,我觉得在学校和单位的很大一个不同就是进入社会以后必须要有很强的责任心。
在工作岗位上,我们必须要有强烈的责任感,要对自己的岗位负责,要对自己办理的业务负责。
如果没有完成当天应该完成的工作,那职员必须得加班;如果不小心出现了错误,也必须负责纠正。
其次,我觉得工作后每个人都必须要坚守自己的职业道德和努力提高自己的职业素养,正所谓做一行就要懂一行的行规。
在这一点上我从实习单位同事那里深有体会。
比如,有的事务办理需要工作证可能是自己认识的人,他们也会要求对方出示证有所微词时,他们也总是耐心的解释为什么必须得这么做。
现在商业企业已经纳入正规化管理,所以职员的工作态度问题尤为重要,这点我有亲身感受。
最后,我觉得到了实际工作中以后,学历并不显得最重要,主要看的是个人的业务能力和交际能力。
任何工作,做得时间久了是谁都会做的,在实际工作中动手能力更重要。
因此,我体会到,如果将我们在大学里所学的知识与更多的实践结合在一起,用实践来检验真理,使一个本科生具备较强的处理基本实务的能力与比较系统的专业知识,这才是我们实习的真正目的。
很感谢实习单位给我这个这么好的实习机会,让我学习很多、成长很多、收获很多。
MSTR开发入门教程目录一、最简单项目开发流程 (4)0.介绍元数据库 (4)1.准备空的RDB,并定义ODBC (4)2.配置元数据库 (4)3.连接项目源 (9)4.创建项目 (10)5.定义数据库实例 (11)6.选择数据仓库表 (13)7.定义事实 (14)8.定义实体 (19)(1)定义Item实体 (20)(2)定义Day实体 (25)(3)定义Year实体 (27)9.更新框架 (30)10.创建度量 (30)11.创建报表 (33)12.设置I-SERVER (36)13.Web浏览 (40)二、完整项目开发 (40)0.Tutorial DW及项目介绍 (40)1.以服务器方式连接元数据库 (41)2.添加数据仓库表 (41)3.修改事实 (42)(1)修改QTY(销售数量)事实 (42)(2)修改AMT(销售金额)事实 (45)(3)修改COST(成本)事实 (48)4.修改实体 (50)(1)Item(商品)实体 (50)(2)Day(日期)实体 (50)(3)Year(年)实体 (52)5.创建新实体 (54)用实体创建向导创建实体 (54)修改Customer实体 (67)修改Emp实体 (68)6.创建0 base report (79)7.报表 1 derived metric (81)8.报表 2 阈值 (82)9.Filter(筛选) (84)10.Prompt(提示) (84)11.Metric(度量) (84)12.Drill Map(钻取图) (84)13.Hierachy(层系) (84)14.Customer Group(自定义组)、Consolidation(合并) (84)15.Document(文档) (84)16.DataMarting(数据集市) (84)17.Schedule(调度) (85)18.用户管理 (85)19.Partition Mapping(分区映射) (85)三.其它 (85)1.合作开发 (85)2.Narrowcast intro (85)3.MDX (85)4.Cust Web (85)5.universal (85)附录 (85)手动和自动的区别 (85)参考文档 (86)一、最简单项目开发流程背景:已经有一个数据仓库,有一个最简单需求(一张报表,按年查看销售信息),用MSTR 如何实现。
14.5 实验4:MST1.实验目的通过本实验,读者可以掌握如下技能:①理解MST的工作原理;②掌握MST的配置。
2.实验拓扑实验拓扑图如图14-1所示。
图14-1 实验1、实验2、实验4拓扑图3.实验步骤我们在网中创建4个VLAN,VLAN1和VLAN2使用MST实例1,VLAN3和VLAN4使用MST实例2 。
(1)步骤1:VTP在交换机上创建VLAN,在S1和S2之间的链路配置TrunkS1(config)#vtp domain VTP-TESTChanging VTP domain name from NULLto VTP-TESTS1(config)#vlan 2S1(config)#vlan 3S1(config)#vlan 4S1(config)#int f0/14S1(config-if)#shutdown//关闭该接口,以免影响我们的实验S1(config)#int f0/13S1(config-if)#switchport trunk encapsulation dot1qS1(config-if)#switchport mode trunkS2(config)#int f0/13S2(config-if)#switchport trunk encapsulation dot1qS2(config-if)#switchport mode trunk(2)步骤2:配置MST只有S1和S2才能支持MST。
S1(config)#spanning-tree mode mst//以上把生成树的模式改为MST,默认时是PVSTS1(config)#spanning-tree mst configuration//以上是进入MST的配置模式下S1(config-mst)#name TEST-MST//以上命名MST的名字S1(config-mst)#revision 1//以上配置MST的revision号,只有名字和revision号相同的交换机才是同一个MST区域S1(config-mst)#interface 1 vlan 1-2//以上是把VLAN 1和VLAN 2的生成树映射到实例1S1(config-mst)#interface 3 vlan 3-4//以上是把VLAN 3和VLAN 4的生成树映射到实例2,这里一共有3个MST实例,实例0是系统要使用的S1(config-mst)#exit要退出,配置才能生效S1(config)#spanning-tree mst 1 priority 8192S1(config)#spanning-tree mst 2 priority 12288//以上配置S1为MST实例1的根桥S2(config)#spanning-tree mode mstS2(config)#spanning-tree mst configurationS2(config-mst)#name TEST-MSTS2(config-mst)#revision 1S2(config-mst)#interface 1 vlan 1-2S2(config-mst)#interface 3 vlan 3-4S2(config-mst)#exitS2(config)#spanning-tree mst 1 priority 12288S2(config)#spanning-tree mst 2 priority 8192//以上配置S2为MST实例2的根桥(3)步骤3:检查生成树S1#show spanning-treeMST00Spanning tree enabled protocol mstpRoot ID Priority 32768Address 0009.b7a4.b181Cost 200000Port 15(FastEthernet0/13)Hello Time 2 sec Max Age 20 sec Forward Delay 15 secBridge ID Priority 32768(priority 32768 sys-id-ext 0)Address 0018.ba11.f500Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type----------------------------------------------------Fa0/13 Root BLK 19 200000 128.15 P2PFa0/15 Altn FWD 19 200000 128.17 P2P Bound(PVST)//以上的MST00是系统要使用的实例,BPDU是通过它来发送的MST01Spanning tree enabled protocol mstpRoot ID Priority 8193Address 0018.ba11.f500This bridge is the rootHello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 8193(priority 8192 sys-id-ext 1)Address 0018.ba11.f500Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type----------------------------------------------------Fa0/13 Desg FWD 200000 128.15 P2PFa0/15 Boun BLK 200000 128.17 P2P Bound(PVST)MST02Spanning tree enabled protocol mstpRoot ID Priority 8194Address 0018.ba11.eb80Cost 200000Port 15(FastEthernet0/13)Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 122290(priority 12288 sys-id-ext 2)Address 0018.ba11.f500Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type----------------------------------------------------Fa0/13 Root FWD 200000 128.15 P2PFa0/15 Boun BLK 200000 128.17 P2P Bound(PVST)//以上显示的是S1上的MST实例情况S3#show spanning-tree briefVLAN1Spanning tree enabled protocol ieeeRoot ID Priority 32768Address 0009.b7a4.b181This bredge is the rootHello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32768Address 0009.b7a4.b181Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300Interface DesignatedName Port ID Prio Cost Sts Cost Bridge ID Port ID-------------------------------------------------------------------------- FastEthernet0/1 128.1 128 19 FWD 0 32768 0009.b7a4.b181 128.1 FastEthernet0/2 128.2 128 19 FWD 0 32768 0009.b7a4.b181 128.2 (此处省略)//以上表明S3成为了所有VLAN的根桥,f0/1和f0/2都处于转发状态,这不是我样想要的(4)步骤4:控制S1成为根桥S1(config)#spanning-tree mst 0 priority 4096//注意这里应该配置MST 0的优先级,只有MST 0才发送BPDUS3#show spanning-tree briefVLAN1Spanning tree enabled protocol ieeeRoot ID Priority 4096Address 0018.ba11.f500Cost 19Port 1(FastEthernet0/1)Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec //以上表明S1是VLAN 1的根桥Bridge ID Priority 32768Address 0009.b7a4.b181Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300Interface DesignatedName Port ID Prio Cost Sts Cost Bridge ID Port ID-------------------------------------------------------------------------- FastEthernet0/1 128.1 128 19 FWD 0 4096 0018.ba11.f500 128.17 FastEthernet0/2 128.2 128 19 BLK 0 32768 0009.b7a4.b181 128.17 (此处省略)//对于S3上所有的VLAN来说,f0/2都是阻断的,无法取得负载平衡(5)步骤5:控制负载平衡S3(cofng)#int f0/2S3(config-if)spanning-tree vlan 3 cost 10S3(config-if)spanning-tree vlan 4 cost 10//以上改变VLAN 3和VLAN 4在f0/2接口上的Cost值。
[说明]MSTAR运用及问题汇总_整理MSTAR运用及问题汇总_整理应用总结:1 6M68 gamma 调试注意用工具写入时为 12bit,加入 code 时要变为10bit。
老工具才可以转。
2 ADC 矫正条件矫正 YPbPR 的 ADC 时需要在全彩条下进行, VGA 时在棋盘格下矫正。
3 部分屏的暗场斑太重,改善方法调校 gamma,或者适当更改暗场色温,将暗场彩斑偏一个色,或者降低 color 引起的颜色噪声。
4.在调试 gamma 时的一些影响因素将其他附加功能都关掉调出一组过渡好,符合坐标的曲线。
当加载入程序后发现暗的第二阶偏色一样,关掉 DLC 后 ok,证明 DLC 调的过陡峭,导致第二阶和第三阶过渡不好,此时要矫正 2,3,4 点的值达到最佳。
以上同时说明, gamma 一定要在关掉 DLC 下进行。
5. HBC 功能 10bank 2C 对提高光泽有效。
一般选择 29,39,49 三个档。
6. DNR 的设定做弱点可以减小动态模糊的状况,主要是改 table 的下半部分。
7.DMS 功能 bank26 20 0bit,关了清晰度会高,但动态马赛克也大,要适当。
8. ATV 的增益控制 AFEC 35bank 的 43 设置 14 为自动增益, 74 为手动,此时 40 就可以设置。
(30x 自动)9. 背光调整寄存器 Xdata 下 209 在 18bank 的 92,94 是调整背光 PWM 和使能。
309 则是在 32bank 的 12 (clk) ,13(脉宽) 。
首先需要先在 00 置 1 切换过去。
181 则是在 32bank 的 04(微调频率) 06(脉宽) 08 (粗调) 。
10.做 peaking 时,19bank 的 33,37 的影响过强会出现边缘失真产生横线条,值不能超过 14.FRC 设定位置在 bank24 的 7E(设置为 07) ,而 209 在 10 的 36。
MSTR官方培训教程v1.4简介MSTR(MicroStrategy)是一家美国的商业智能(Business Intelligence,简称BI)和分析软件公司,其产品被广泛应用于数据挖掘、数据仓库、在线分析处理(OLAP)等领域。
MSTR官方培训教程v1.4是其最新版本的培训教程,覆盖了MSTR的基本概念、原理、应用场景等方面。
本文将对该培训教程做一个简要的介绍。
目录•入门篇–第一章 MSTR产品介绍–第二章 MSTR安装与配置–第三章 MSTR界面介绍•基础篇–第四章 MSTR报表设计–第五章 MSTR报表高级功能–第六章 MSTR报表发布与共享•进阶篇–第七章 MSTR Cube设计–第八章 MSTR数据挖掘–第九章 MSTR API与SDK•高级篇–第十章 MSTR性能优化–第十一章 MSTR集群与部署–第十二章 MSTR安全与管理内容概述MSTR官方培训教程v1.4共分为四个篇章,共计12章。
其中,入门篇主要介绍MSTR的产品介绍、安装与配置、界面介绍等内容,属于MSTR的基础入门部分。
基础篇涉及MSTR的报表设计、高级功能、发布与共享等内容,对于MSTR 的基本用法有了更深入的了解。
进阶篇主要介绍MSTR的Cube设计、数据挖掘、API与SDK等内容,是对MSTR进一步深层次使用的介绍。
高级篇则主要向用户介绍如何更好地进行MSTR性能优化、集群与部署和安全与管理等方面的使用。
在MSTR官方培训教程v1.4中,用户将通过输入指令、对界面操控、定制菜单等方式来实现对数据进行分析和管理。
在入门篇中,用户将学习到MSTR BI系统的基本操作,包括从不同角度查看数据的方式、轻松创建多个可视化项目以及在BI中查找和组织数据的方法。
在基础篇中,学习的内容会更加深入。
用户将学习到如何构建基本报表,了解基本UI设计和如何开发单个和多个文档。
在进阶篇中,用户将掌握一些高级技能,例如Cube设计、数据挖掘并从输入到分析过程中掌握如何制作和使用高级功能。
mstar方案【正文】mstar方案一、方案概述mstar方案是一个针对智能家居领域的解决方案,旨在为用户提供全面的智能化家居设备和应用服务。
该方案包括硬件设备、软件平台和数据服务三个层面,通过技术创新和用户需求驱动,为用户打造便捷、智能、安全、舒适的智能家居生活体验。
二、硬件设备1. 智能门锁mstar方案提供高安全性的智能门锁产品,支持密码、指纹、人脸识别等多种开锁方式,有效保障家居安全。
2. 智能灯具mstar方案提供智能灯具产品,具有定时开关、调光、情景模式等功能,满足用户的照明需求,提升家居舒适度。
3. 智能家电mstar方案支持智能家电对接,包括智能电视、智能音箱、智能空调等,用户可以通过手机App或语音控制实现远程操作,实现智能化的家居管理。
4. 传感器设备mstar方案提供各种传感器设备,如温湿度传感器、烟雾传感器、人体感应器等,用于监测家居环境,提供安全和舒适的居住条件。
三、软件平台1. 智能家居Appmstar方案提供智能家居App,用户可以通过该平台实现对智能设备的控制和管理,包括设备配对、场景设置、远程控制等功能,提升用户的智能化体验。
2. 数据分析与优化mstar方案通过云端数据分析和人工智能算法,对用户的家居数据进行收集和分析,提供智能优化建议,如能源节约、舒适度提升等,为用户提供更便捷、智能的家居服务。
四、数据服务1. 用户数据隐私保护mstar方案非常重视用户的数据隐私保护,通过采用安全加密技术和严格的数据权限管理制度,确保用户个人信息和家居数据的安全性和隐私性。
2. 定制化服务mstar方案根据用户的需求定制化提供家居服务,如智能场景设置、远程监控等,为用户提供个性化的智能家居解决方案。
3. 远程升级与维护mstar方案通过云端技术,实现对智能设备的远程升级和维护,及时修复漏洞和故障,确保智能家居系统的稳定性和安全性。
结语mstar方案致力于为用户打造便捷、智能、安全、舒适的智能家居生活体验。
mstar方案目录:1. 简介2. 方案背景3. 方案设计4. 方案实施5. 方案评估与总结1. 简介本文将对mstar方案进行详细介绍。
mstar方案是在市场竞争激烈的情况下,为满足客户需求而设计的一种解决方案。
本方案不仅能够增加产品的竞争力,还能提高产品的质量和用户体验。
2. 方案背景在市场竞争日益激烈的情况下,企业需要不断创新和改进产品以满足客户需求。
mstar方案的提出就是为了应对这一挑战。
通过该方案,企业可以提供更具竞争力的产品,并确保产品质量和用户体验得到提升。
3. 方案设计mstar方案的设计基于对市场需求和竞争情况的深入调研。
下面将对该方案的设计要点进行逐一介绍。
3.1 产品定位mstar方案的核心是将产品定位于高端市场。
通过提供高质量的产品和卓越的用户体验,企业能够吸引更多有高端需求的客户,并与竞争对手形成差异化竞争。
3.2 技术创新mstar方案注重技术创新,力求在产品功能和性能上达到行业领先水平。
通过研发新的技术和应用,企业能够提供更多样化、更具竞争力的产品,从而满足不同客户的需求。
3.3 质量管控mstar方案强调质量管控的重要性。
企业需要建立完善的质量管理体系,严格把关产品的生产过程和质量控制,确保产品的质量符合标准并能够满足客户的期望。
4. 方案实施在确定了mstar方案的设计之后,企业需要制定具体的实施计划并进行落地执行。
下面是方案实施的几个关键步骤。
4.1 资源调配企业需要调配资源,包括人力、物力和财力等方面的资源,以支持mstar方案的实施。
同时,还需要建立团队并明确各个团队成员的职责,确保实施过程的顺利进行。
4.2 项目管理mstar方案的实施过程中需要进行有效的项目管理,包括制定计划、分配任务、跟踪进展等。
通过有效的项目管理,可以及时解决问题和风险,并保证实施过程的效率和质量。
4.3 测试与改进实施mstar方案后,企业需要进行产品的测试与改进。
通过对产品进行测试,可以发现问题并及时进行改进,以提高产品的质量和用户体验。
1、在选择约束的时候,对于后面的操作中有一项是“约束信息”中的“约束条件”,先选择“其它”,即不约束,等在后面的操作中添加完荷载后再在合适的地方施加约束。
原应是程序中的“约束信息”中的“约束条件”都是周边约束,当你选择这个的时候会发现,程序在周边每个网格的节点上都给你加了支左,这肯定是不合适的。
因为有的时候可能你是几个独立柱支撑,而且支撑的点并不是那么标准都在周边,所以最好的办法就是先不加约束,先选择“其它”,等你填加完荷载的时候再根据你网架的外型及现场能给你的约束条件来加约束。
2、建立/约束,在相应节点上施加约束,有4个选项,分别是固定约束/弹性约束/强迫位移/斜边界,下面就详细分析一下这4个选项的区别:A、固定约束,意思是在网架的支座处的X/Y/Z方向的线位移为0,而角位移自由。
这种约束是认为支座处的刚度无穷大以至于支座处的X/Y/Z方向的线位移为0,这是在真实物理世界中是不可能的事情,因为真实物理世界中就不存在绝对刚体,当然就不存在刚度无穷大,所以支座的地方肯定有位移,而且在地震的时候,支座之间可能会有相对位移,但是如果你选择了“固定约束”,那么你将会在后面的震形显示中,你会发现“固定约束”的支座就象钉在石板上的钉子一样一动不动-----可能吗?B、弹性约束,意思是在网架的支座处的X/Y/Z方向的线位移不是0,但是也不是自由移动,而是用3个方向的弹簧来模拟支座的性能,需要我们计算的是弹簧刚度K,这是弹性力学中的概念。
因为既然世界中不存在绝对刚体,那自然一切物体在一定变形的范围内它就是弹性的,因此弹性约束才是最接近物理世界中的真实约束,而固定约束是不存在的。
C、强迫位移,它是模拟支座的的不均匀沉降的。
有的人讲网架对支座的的不均匀沉降有良好的适应性,不需要考虑,有的人则认为既然存在为什么不考虑,而且认为当地基是软弱地基的时候且不是桩基础并且在支座附近有不均匀的堆载的时候,就一定要考虑。
意见分歧较大,罗尧治教授的建议是谨慎使用,最好你们别用,因为他自己也很少用,我问了他的学生,他们告诉我这个功能很少用。
理论篇############################################################################### sp<ITvManager> TvManager::mTvManager; 强指针sp智能指针在Android的源代码中,经常会看到形如:sp<xxx>、wp<xxx>这样的类型定义,这其实是Android中的智能指针。
智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。
在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。
程序员往往需要花费很大精力进行精心设计,以避免这些问题的出现。
在使用智能指针后,动态申请的内存将会被自动释放(有点类似Java的垃圾回收),不需要再使用delete来释放对象,也不需要考虑一个对象是否已经在其它地方被释放了,从而使程序编写工作减轻不少,而程序的稳定性大大提高。
Android的智能指针相关的源代码在下面两个文件中:frameworks/base/include/utils/RefBase.hframeworks/base/libs/utils/RefBase.cpp涉及的类以及类之间的关系如下图所示:Android中定义了两种智能指针类型,一种是强指针sp(strong pointer),一种是弱指针(weak pointer)。
其实成为强引用和弱引用更合适一些。
强指针与一般意义的智能指针概念相同,通过引用计数来记录有多少使用者在使用一个对象,如果所有使用者都放弃了对该对象的引用,则该对象将被自动销毁。
弱指针也指向一个对象,但是弱指针仅仅记录该对象的地址,不能通过弱指针来访问该对象,也就是说不能通过弱智真来调用对象的成员函数或访问对象的成员变量。
要想访问弱指针所指向的对象,需首先将弱指针升级为强指针(通过wp类所提供的promote()方法)。
弱指针所指向的对象是有可能在其它地方被销毁的,如果对象已经被销毁,wp的promote()方法将返回空指针,这样就能避免出现地址访问错的情况。
是不是很神奇?弱指针是怎么做到这一点的呢?其实说穿了一点也不复杂,原因就在于每一个可以被智能指针引用的对象都同时被附加了另外一个weakref_impl类型的对象,这个对象中负责记录对象的强指针引用计数和弱指针引用计数。
这个对象是智能指针的实现内部使用的,智能指针的使用者看不到这个对象。
弱指针操作的就是这个对象,只有当强引用计数和弱引用计数都为0时,这个对象才会被销毁。
说了这么多原理,下面该看看到底智能指针该怎么使用了。
假设现在有一个类MyClass,如果要使用智能指针来引用这个类的对象,那么这个类需满足下列两个前提条件:(1)这个类是基类RefBase的子类或间接子类;(2)这个类必须定义虚构造函数,即它的构造函数需要这样定义:virtual ~MyClass();满足了上述条件的类就可以定义智能指针了,定义方法和普通指针类似。
比如普通指针是这样定义:MyClass* p_obj;智能指针是这样定义:sp<MyClass> p_obj;注意不要定义成sp<MyClass>* p_obj。
初学者容易犯这种错误,这样实际上相当于定义了一个指针的指针。
尽管在语法上没有问题,但是最好永远不要使用这样的定义。
定义了一个智能指针的变量,就可以象普通指针那样使用它,包括赋值、访问对象成员、作为函数的返回值、作为函数的参数等。
比如:p_obj = new MyClass(); // 注意不要写成p_obj = new sp<MyClass>sp<MyClass> p_obj2 = p_obj;p_obj->func();p_obj = create_obj();some_func(p_obj);注意不要试图delete一个智能指针,即delete p_obj。
不要担心对象的销毁问题,智能指针的最大作用就是自动销毁不再使用的对象。
不需要再使用一个对象后,直接将指针赋值为NULL即可:p_obj = NULL;上面说的都是强指针,弱指针的定义方法和强指针类似,但是不能通过弱指针来访问对象的成员。
下面是弱指针的示例:wp<MyClass> wp_obj = new MyClass();p_obj = wp_obj.promote(); // 升级为强指针。
不过这里要用.而不是->,真是有负其指针之名啊wp_obj = NULL;智能指针用起来是很方便,在一般情况下最好使用智能指针来代替普通指针。
但是需要知道一个智能指针其实是一个对象,而不是一个真正的指针,因此其运行效率是远远比不上普通指针的。
所以在对运行效率敏感的地方,最好还是不要使用智能指针为好。
###############################################################################认识理解Java中native方法[摘要] Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
[关键字] Java nativeJava不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java 无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
可以将native方法比作Java程序同C程序的接口,其实现步骤:1、在Java中声明native()方法,然后编译;2、用javah产生一个.h文件;3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);4、将第三步的.cpp文件编译成动态链接库文件;5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
JAVA本地方法适用的情况1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
首先写好JAVA文件/** Created on 2005-12-19 Author shaoqi*/package com.hode.hodeframework.modelupdate;public class CheckFile{public native void displayHelloWorld();static{System.loadLibrary("test");}public static void main(String[] args) {new CheckFile().displayHelloWorld();}}然后根据写好的文件编译成CLASS文件然后在classes或bin之类的class根目录下执行javah -jni com.hode.hodeframework.modelupdate.CheckFile,就会在根目录下得到一个com_hode_hodeframework_modelupdate_CheckFile.h的文件然后根据头文件的内容编写com_hode_hodeframework_modelupdate_CheckFile.c文件#include "CheckFile.h"#include#includeJNIEXPORT void JNICALL Java_com_hode_hodeframework_modelupdate_CheckFile_displayHelloWorld(JNIEnv *env, jobject obj){printf("Hello world!\n");return;}之后编译生成DLL文件如“test.dll”,名称与System.loadLibrary("test")中的名称一致vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll最后在运行时加参数-Djava.library.path=[dll存放的路径]############################################################################### MStar Android网络机代码组成从代码结构上分,MStar Android网络电视包含MBoot、PM、Kernel、Supernova、ICS、TvApp和Local MM这7个部分,以MSD6A801的代码包为例,如图所示:上面7个部分跟Android架构的关系图:下面针对这7个模块进行详细描述,内容主要涉及启动流程和代码结构等,最后将对各模块的相互关联做个总结。
MBoot概述MBoot是MStar Boot Loader的缩写,由SBoot和UBoot两部分组成。
MBoot用于系统的启动引导,它会初始化硬件,然后从NAND flash加载Linux内核(kernel)和应用程序(applications)到DRAM。
(说明:其实标准的UBoot程序已经做了MBoot的全部工作,MStar 引入SBoot的概念,是沿用了MStar非网络机的用法)以下是上面提到的几个名词的对比:Acronym DescriptionMBoot MStar Boot loaderSBoot Small Boot loaderUBoot Universal Boot loaderMBoot存储在flash,该flash一般采用16M/32M bit容量的spi flash,里面存放系统的引导程序及部分系统、用户数据。
系统上电后首先通过Mboot引导启动,Mboot完成启动后再启动系统主程序。
系统的主程序存放在NAND Flash中。
不管是spi flash还是Nand flash,任何一个有故障,都会导致整机无法启动。