ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:50.16KB ,
资源ID:12263045      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12263045.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机科学与技术毕业实习报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机科学与技术毕业实习报告.docx

1、计算机科学与技术毕业实习报告西南科技大学计算机学院本科(毕业)校外实习报告院 (系):计算机科学与技术 专业班级 :计算机 1104 学生姓名 :学长学 号 : 20111639成 绩 :指导老师 : 高小明 提交日期:一、实习的目的和意义 毕业实习是学生大学本科教学实践的主要环节, 对学生的实践能力的培养具 有十分重要的意义。 学生通过本次实习, 能够了解计算机专业的相关新技术, 了 解理论知识在实际应用中的作用, 了解计算机技术的新发展, 体验计算机专业的 工作内容和工作特点,拓宽知识面,增强人际沟通能力,加强团队协作精神,为 走向社会打下基础。Android 以 Linux 为核心的 A

2、ndroid 运行平台,使用 Java 作为编程语言。 本次实习是在学习 java 语言程序设计的基础上进行的一次综合实践。通过综合 训练,要求学生掌握 java 语言程序设计的基本技能和 Android 编程的应用,并 较系统地掌握 JAVA 语言程序设计开发方法以及帮助文件的使用等, 使学生通过 本次实训,能够进行独立的 Android 应用程序开发,能够在实际操作中得到进 一步的提高,为以后的学习和工作打下良好的基础。1.1 实习目的1. 了解公司,熟悉办公流程及环境2. 培养学生运用所学课程 Java 语言程序设计的理论知识和技能,分析解决计算 机实际应用中的问题的能力。3. 培养学生

3、在 Java 语言程序设计的基础上,开发 Android 应用程序的思想和方 法。4. 培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。5. 掌握 MTK Android 源码1.2 实习意义1.锻炼自己的动手能力,将学习的理论知识运用于实践当中,反过来检验书本上 理论的正确性。将自己的理论知识与实践融合, 进一步巩固、深化已经学过的理 论知识,提高综合运用所学过的知识,并且培养自己发现问题、解决问题的能力,加强对市场营销过程的认识;2更广泛的直接接触社会,了解社会需要,加深对社会的认识,增强对社会的适 应性,将自己融合到社会中去,培养自己的实践能力,缩短我们从一名大学生到

4、一名工作人员之间的思想与业务距离。为以后进一步走向社会打下坚实的基 础;3.了解公司部门的构成和职能,整个工作流程,从而确立自己在公司里最擅长的工作岗位。为自己未来的职业生涯规划起到关键的指导作用。二、实习内容2.1系统学习java语言(1)Java语言特点面向对象:与C+相比,JAVA是纯的面向对象的语言,C+为了向下兼容C,保留了很多C 里面的特性,而C,众所周知是面向过程的语言,这就使 C+成为一个混血儿 。而JAVA语法中取消了 C+里为兼容C所保留的特性,如取消了头文件、 指针算法、结构、单元等。可移植(平台无关性):生成中间字节码指令,与其他编程语言不同,Java并不生成可执行文件

5、(.exe文 件),而是生成一种中间字节码文件(.class文件)。任何操作系统,只要装有Java 虚拟机(JVM ),就可以解释并执行这个中间字节码文件。 这正是Java实现可移 植的机制-原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。 比如,在任何机器上,整型都是32 位,而C+里整型是依赖于目标机器的,对 16位处理器(比如8086),整数 用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表 示。在Intel Pentium 处理器上,整数类型由具体的操作系统决定:对于 DOS 和 Win32来说,整数是2个字节;对于 Wind

6、ows 9x 、NT和2000,整数是4 个字节。当然,使整数类型平台无关之后,性能必然有所下降,但就 Java来说, 这个代价是值得的。Java的字符串,则采用标准的Uni code格式保存。可以说, 没有这个特性,Java的可移植性也不可能实现。AVA在语法上与C+类似JAVA的语法与C+很接近,有过C或者C+编程经验的程序员很容易就 可以学会JAVA语法;取消了 C+的一些复杂而低效的特性比如:用接口技术代替了 C+的多重继 承。C+ +中,一个类允许有多个超类,这个特性叫做 多重继承,多重继承使 得编译器非常复杂且效率不高; JAVA的类只允许有一个超类,而用接口(Interface

7、)技术实现与C+ +的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等JAVA的基本解释器和类支持模块大概仅 40K即使加入基本的标准库和支持线程的模块,也才 220K左右。与GUI (图形 用户界面)相比,明显小很多取消了指针算法C的最关键的一个特性是它的强大指针算法,比如可以用指针访问字符串、 数组甚至文件,很容易产生指针溢出,意外地改写内存和损毁数据。 JAVA 里有 一个指针模型,对于普通的任务,如访问字符串、数组,根本不用指针,而一旦 需要,比如访问对象、文件时,也可以获得指针的强大能力,但 JAVA 同时有高 度的指针安全保障, 用户永远不可能访问一个坏掉的指针、

8、不可能造成内存分配 错误,也用不着专门提防可能出现的内存漏洞。强大的多线程能力多线程可以使程序有更好的交互性和实时性,并可以最大限度地利用多处理器系 统。 JAVA 有着强大的多线程处理能力,因为各主流操作系统平台在线程的实施方面有 重大的差异,所以 JAVA 为不同的操作系统实现了专门的多线程机制。在这点上来说, JAVA 没有做到平台无关。(2)面向对象基础static 称为静态修饰符,它可以修饰类中的属性和方法。1静态属性被 static 修饰的属性称为静态属性, 这类属性一个最本质的特点是: 它们是 类的属性,而不属于任何一个类的具体对象。 换句话说, 对于该类的任何一个具 体对象而言

9、, 静态属性是一个公共的存储单元, 任何一个类的对象访问它时, 取 到的都是相同的数值, 同样任何一个类的对象去修改它时, 也都是在对同一个内 存单元做操作。静态属性节省空间;静态属性保持类对象的一致性修改 举例:总和、基本工资等2静态方法static 修饰符修饰的属性是属于类的公共属性:与之相仿,用 static 修饰符 修饰的方法,是属于整个类的类方法;而不用 static 至少有三重含义:(1) 调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名;(2) 非 static 的方法是属于某个对象的方法,在这个对象创建时对象的方法 在内存中拥有自己专用的代码段; 而 static

10、的方法是属于整个类的, 它在内存中 的代码段将随着类的定义而分配和装载,不被任何一个对象专有:(3) 由于 static 方法是属于整个类的, 所以它不能操纵和处理属于某个对象 的成员变量,而只能处理属于整个类的成员变量。也即, static 方法只能处理 static 的数据。3静态初始化器静态初始化器是由关键字 static 引导的一对大括号括起的语句组。 它的作用 与类的构造函数有些相似, 都用来完成初始化的工作, 但是静态初始化器与构造 函数有三点根本的不同:(1)构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进 行初始化;(2) 构造函数是在用 new 运算符产生新对象

11、时由系统自动执行,而静态初始 化器则是在它所属的类加载入内存时由系统调用运行的;(3) 不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数 列表。让我们考虑如下的问题, 所以考虑由系统自动为新雇员对象生成编号变量的 值,将 Employee 类的属性定义改写为:class Employee / 定义雇员类private double m_EmpSalary;static double m_MinSalary;static int m_NextEmpNo;构造函数为:Employee(String name,char sex,double sal)/ 构造函数,完成初始化工作m_Em

12、pNo=m_NextEmpNo+; / 新雇员使用了新编号之后, 再产生另一个新编号m_EmpName=new String(name);m_EmpGender=sex;if(sal=m_MinSalary) / 工资额不合理时使用最低工资 m_EmpSalary=sal;elsem_EmpSalary=m_MinSalary;这里,为实现编号不重复地自动生成,引入一个类成员 m_NextEmpNo ,它的 值是下一个新创建的雇员对象的编号。 每当有新对象生成时, 系统调用构造函数, 将 m_NextEmpNo 的当前值赋给新雇员的编号变量 m_EmpNo ,然后让类静态 属性 m_NextE

13、mpNo 自动加一,这样新对象的编号就不会与已有对象的编号相 重复。表面看来整个问题似已解决, 但实际上还有很关键的一步没有完成: 那就 是 static 的类属性 m_NextEmpNo 的初始化问题。总之,静态初始化器的作用是对整个类完成初始化操作,包括给 static 类 成员赋初值等,它在系统向内存加载时自动完成。( 3) java 线程基础一、线程概述线程是程序运行的基本执行单元。当操作系统 (不包括单线程的操作系统, 如微软早期的 DOS) 在执行一个程序时,会在系统中建立一个进程,而在这个进 程中,必须至少建立一个线程 (这个线程被称为主线程) 来作为这个程序运行的 入口点。因此

14、,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。 在操作系统中可以 有多个进程, 这些进程包括系统进程 (由操作系统内部建立的进程) 和用户进程 (由用户程序建立的进程) ;一个进程中可以有一个或多个线程。进程和进程之 间不共享内存, 也就是说系统中的进程是在各自独立的内存空间中运行的。 而一 个进程中的线可以共享系统分派给这个进程的内存空间。线程不仅可以共享进程的内存, 而且还拥有一个属于自己的内存空间, 这段 内存空间也叫做线程栈 , 是在建立线程时由系统分配的,主要用来保存线程内部 所使用的数据,如线程执行函数中所定义的变量。 注意:任何

15、一个线程在建立 时都会执行一个函数, 这个函数叫做线程执行函数。 也可以将这个函数看做线程 的入口点(类似于程序中的 main 函数)。无论使用什么语言或技术来建立线程, 都必须执行这个函数 (这个函数的表现形式可能不一样, 但都会有一个这样的函 数)。如在 Windows 中用于建立线程的 API 函数 CreateThread 的第三个参数 就是这个执行函数的指针。在操作系统将进程分成多个线程后, 这些线程可以在操作系统的管理下并发 执行,从而大大提高了程序的运行效率。 虽然线程的执行从宏观上看是多个线程 同时执行,但实际上这只是操作系统的障眼法。由于一块 CPU 同时只能执行一 条指令,

16、因此,在拥有一块 CPU 的计算机上不可能同时执行两个任务。而操作 系统为了能提高程序的运行效率, 在一个线程空闲时会撤下这个线程, 并且会让 其他的线程来执行, 这种方式叫做线程调度。 我们之所以从表面上看是多个线程 同时执行, 是因为不同线程之间切换的时间非常短, 而且在一般情况下切换非常 频繁。假设我们有线程 A和B。在运行时,可能是A执行了 1毫秒后,切换到 B 后, B 又执行了 1 毫秒,然后又切换到了 A, A 又执行 1 毫秒。由于 1 毫秒的 时间对于普通人来说是很难感知的,因此,从表面看上去就象 A 和 B 同时执行 一样,但实际上 A 和 B 是交替执行的。二、线程给我们

17、带来的好处如果能合理地使用线程, 将会减少开发和维护成本, 甚至可以改善复杂应用 程序的性能。如在 GUI 应用程序中,还以通过线程的异步特性来更好地处理事 件;在应用服务器程序中可以通过建立多个线程来处理客户端的请求。 线程甚至 还可以简化虚拟机的实现,如 Java 虚拟机 (JVM) 的垃圾回收器( garbage collector )通常运行在一个或多个线程中。因此,使用线程将会从以下五个方 面来改善我们的应用程序:1. 充分利用CPU资源 现在世界上大多数计算机只有一块 CPU。因此,充分利用 CPU 资源显得尤为重要。当执行单线程程序时,由于在程序发生阻塞 时 CPU 可能会处于空

18、闲状态。这将造成大量的计算资源的浪费。而在程序中使 用多线程可以在某一个线程处于休眠或阻塞时,而 CPU 又恰好处于空闲状态时 来运行其他的线程。这样 CPU 就很难有空闲的时候。因此, CPU 资源就得到了 充分地利用。2. 简化编程模型 如果程序只完成一项任务,那只要写一个单线程的程 序,并且按着执行这个任务的步骤编写代码即可。 但要完成多项任务, 如果还使 用单线程的话,那就得在在程序中判断每项任务是否应该执行以及什么时候执 行。如显示一个时钟的时、分、秒三个指针。使用单线程就得在循环中逐一判断 这三个指针的转动时间和角度。如果使用三个线程分另来处理这三个指针的显 示,那么对于每个线程来

19、说就是指行一个单独的任务。 这样有助于开发人员对程 序的理解和维护。3. 简化异步事件的处理 当一个服务器应用程序在接收不同的客户端连 接时最简单地处理方法就是为每一个客户端连接建立一个线程。 然后监听线程仍 然负责监听来自客户端的请求。 如果这种应用程序采用单线程来处理, 当监听线 程接收到一个客户端请求后, 开始读取客户端发来的数据, 在读完数据后, read 方法处于阻塞状态, 也就是说, 这个线程将无法再监听客户端请求了。 而要想在 单线程中处理多个客户端请求,就必须使用非阻塞的 Socket 连接和异步 I/O 。 但使用异步 I/O 方式比使用同步 I/O 更难以控制,也更容易出错

20、。 因此,使用多 线程和同步 I/O 可以更容易地处理类似于多请求的异步事件。4. 使 GUI 更有效率 使用单线程来处理 GUI 事件时,必须使用循环来对 随时可能发生的 GUI 事件进行扫描,在循环内部除了扫描 GUI 事件外,还得来 执行其他的程序代码。如果这些代码太长,那么 GUI 事件就会被“冻结”,直到这些代码被执行完为止在现代的 GUI 框架(如 SWING 、AWT 和 SWT )中都使用了一个单独的事件分派线程(eve nt dispatch thread , EDT)来对GUI 事件进行扫描。 当我们按下一个按钮时, 按钮的单击事件函数会在这个事件分派 线程中被调用。由于

21、EDT 的任务只是对 GUI 事件进行扫描,因此,这种方式对 事件的反映是非常快的。5. 节约成本提高程序的执行效率一般有三种方法:( 1)增加计算机的 CPU 个数。( 2)为一个程序启动多个进程( 3)在程序中使用多进程。第一种方法是最容易做到的,但同时也是最昂贵的。这种方法不需要修改 程序,从理论上说, 任何程序都可以使用这种方法来提高执行效率。 第二种方法 虽然不用购买新的硬件, 但这种方式不容易共享数据, 如果这个程序要完成的任 务需要必须要共享数据的话, 这种方式就不太方便, 而且启动多个线程会消耗大 量的系统资源。 第三种方法恰好弥补了第一种方法的缺点, 而又继承了它们的优 点。

22、也就是说,既不需要购买 CPU,也不会因为启太多的线程而占用大量的系 统资源(在默认情况下, 一个线程所占的内存空间要远比一个进程所占的内存空 间小得多),并且多线程可以模拟多块 CPU 的运行方式, 因此,使用多线程是提 高程序执行效率的最廉价的方式。2.2 系统学习 Android 语言2.2.1 历史背景:2007 年 11 月 5 日, Google 发布基于 Linux 平台的开源移动手机平台 Android 。该平台由操作系统、中间件、用户界面和应用软件等组成,号称是 首个为移动终端打造的真正开放的移动开发平台。 2008 年 9 月 22 日,美国 运营商T Mobile USA

23、 在纽约正式发布第一款 Google手机 T -Mobile G1 。 该款手机为中国台湾 HTC (宏达电)代工制造,是世界上第一部使用 An droid操作系统的手机,支持 WCDMA/HSPA 网络,理论下载速率为 7.2Mbit/s ,并 支持 Wi -Fi 无线局域网络。 Android 的特性 Android 的主要特性如下:应用程序框架,支持组建的重用与替换。Dalvik虚拟机,专门为移动设备做了优化。内部集成浏览器,该浏览器基于开源的 WibKit 引擎。优化的图形库,包括 2D 和 3D 图形库, 3D 图形库基于 OpenGL ES 1.0(硬 件加速可 选)。 SQLit

24、e 数据库,是一套开放性源代码的关系型数据库, 其特点在于轻量级的设 计结 构,更适合在手机上使用。GSM 电话(依赖于硬件) 。蓝牙( Bluetooth ), EDGE, 3G 和 Wi -Fi (依赖于硬件) 。多媒体支持,包括常见的音频、视频和静态图像文件格式。照相机、GPS、指南针和加速度计等丰富的传感器(依赖于硬件)。丰富的开发环境,包括设备模拟器、调试工具、内存及性能分析图表,以及 Eclipse 集成开发环境插件。1 )程序应用Android 连同一个核心应用程序包发布,该应用程序包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序等。所以的应用程

25、序都是用 Java 编写的。2) 应用程序框架开发者完全可以访问核心应用程序所使用的 API 框架。该应用程序框架架 构用来简化组件的软件的重用, 任何一个应用程序都可以发布它的模块功能并且 任何其他的应用程序都可以使用其所发布的功能块 (不过要遵循框架的安全性限 制)。该应用程序重用机制使得组件可以被用户替换。 以下所有的应用程序都由一系列的服务和系统组成,包括:1. 一个可扩展的视图( Views )可以用来创建应用程序,包括列表( lists )、网络 ( grids )、文本框( text boxes )、按钮( buttons ),甚至是一个可嵌入的 Web 浏览器。2. 内容管理器

26、( Content Providers )使得应用程序可以访问另一个应用程序的 数据(如联系人数据库) ,或者共享它们自己的数据。3. 一个资源管理器( Resource Manager )提供非代码资源的访问,如本地字符 串、图形和分层文件( layout files )。4. 一个通知管理器 ( Notification Manager )使得应用程序可以在状态栏中显示 客户通知信息。5. 一个活动类管理器 (Activity Manager )用来管理应用程序生命周期并提供常 用的导航回退功能。3) Android 程序库Android 包括一个被 Android 系统中各种不同组件所使

27、用的 C/C+ 集库。该库 通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:1.系统C库:一个从BSD继承来的标准C系统函数 库( libc ),专门为基于 Embedded Linux 的设备定制2.媒体库:基于Packet Video Open CORE;该库支持录放,并且可以录制许 多流行的音频视频格式, 还有静态映像文件包括 MPEG4 、H.264 、MP3、AAC、 JPG、PNG。3.Surface Manager :对显示子系统的管理,并且为多个应用程序提供 2D 和 3D 图层的无缝融合。4.LibWebCore :一个最新的 Web 浏览器引擎,

28、用来支持 Android 浏览器和一 个可嵌入的 Web 视图。5.SGL: 个内置的2D图形引擎。6.3D libraries :基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D 加速(如 果可用)或者使用高度优化的 3D 软加速。7.FreeType :位图(bitmap )和向量(vector )字体显示。8.SQLite : 个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。4) Android 运行库Android 包括了一个核心库,该核心库提供了 Java 编程语言核心库的大多数功 能。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个

29、独立的 Dalvik 虚拟机实例。 Dalvik 是针对同时高效地运行多个 VMs 实现的。 Dalvik 虚拟机执行 .dex 的 Dalvik 可执行文件,该格式文件针对最小内存使用做了优化。 该虚拟机是基于寄存器的,所有的类都是经由 Java汇编器编译,然后通过SDK 中的 DX 工具转化成 .dex 格式由虚拟机执行。 Dalvik 虚拟机依赖于 Linux 的一 些功能,比如线程机制和底层内存管理机制。5) Linux 内核Android 的核心系统服务依赖于 Linux2.6 内核,如安全性、内存管理、进程管 理、网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件之间的硬

30、件抽象 层。6) service 以及 service 的生命周期两种用处 :后台运行和跨进程访问两种模式: startService()/bindService()模式场合: 调用者与服务之间没有关连, 即使调用者退出了, 服务仍然运行即用 startService() ,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止 则用 bindService() 生命周期: service 的生命周期没有像 activity 里的 onstop ,主要经历创建、开始、销毁三个阶段,由于有两种模式的存在,其生 命周期有两种体现方式如果打算采用 Context.startService() 方法启

31、动服务,在服务未被创建时,系统 会先调 用服 务的 onCreate() 方 法, 接着 调用 onStart() 方 法, 如果 调用 startService() 方法前服务已经被创建, 多次调用 startService() 方法并不会导致 多次创建服务, 但会导致多次调用 onStart() 方法。采用 startService() 方法启动 的服务,只能调用 Context.stopService() 方法结束服务,服务结束时会调用 onDestroy() 方法。 onBind() 只有采用 Context.bindService() 方法启动服务时 才会回调该方法。 该方法在调用者

32、与服务绑定时被调用, 当调用者与服务已经绑 定,多次调用 Context.bindService() 方法并不会导致该方法被多次调用。采用 Context.bindService() 方法启动服务时只能调用 onUnbind() 方法解除调用者 与服务解除,服务结束时会调用 onDestroy() 方法。2.3系统学习Github知识Git是一个分布式的版本控制系统,最初由 Linus Torvalds编写,用作Linux内核代码的管理。 在推岀后,Git在其它项目中也取得了很大成功,尤其是在 Ruby社区中。目前,包括 Rubinius、Merb和Bitcoin在内的很多知名项目都使用了 Git。Git同样可以被诸如 Capistrano 和Vlad the Deployer这样的部署工具所使

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1