一、实习目的
毕业实习是理论与实践相结合的重要环节,目的是提高学生的动手能力和综合实践能力,提高学生的学习兴趣,为提高学生的就业竞争力打好基础,使学生了解社会对计算机的应用现状及发展要求,进一步理解和领会所学的基本理论,了解计算机技术的发展与应用。同时,也是培养学生理论联系实际,将所学知识应用到实际工作中,培养学生发现问题、分析问题和解决问题的能力,从而提高学生从事实际工作的能力,巩固和发展所学理论知识,掌握正确的立项方法和基本技能。
通过本次毕业实习,了解计算机专业岗位工作流程,从而确立自己在最擅长的工作岗位,为自己未来的职业生涯规划起到关键的指导作用。通过实习过程,获得更多与自己专业相关的知识,扩宽知识面,增加社会阅历,接触更多的人,在实践中锻炼胆量,提升自己的沟通能力和其他社交能力,培养更好地职业道德,树立正确的职业道德观。另外,通过此次实习为毕业设计收集必要的资料,准备一些常用的知识、资料的收集、整理等工作,以使毕业设计能够顺利的进行。
二、实习单位及岗位介绍
实习单位:深圳优网科技有限公司
深圳市优网科技有限公司(简称优网科技)座落于深圳市南山区高新科技园中国科技开发院,是一家专业信息技术和服务提供的高新技术企业和双软企业。优网科技于2004年5月正式成立,注册资本6000万元。2015年12月A股上市公司亨通光电通过增资成为优网科技的股东,使优网科技在电信大数据的采集、处理、分析、应用和网络安全方面获取充足的资金支持,在市场方面,依靠亨通光电的渠道,从通信行业向政府、能源等行业扩展,获得更大的发展空间。作为年轻的高科技企业,优网科技对外始终坚持求实、创新,对内贯彻确保客户、员工、股东共赢的原则,使员工利益与公司利益达成协调、统一。
实习岗位:java开发人员
1、Java语言,负责核心模块的设计与代码编写;
2、编写单元测试用例并完成单元测试,集成测试;
3、参与新技术的调研和学习工作;
4、客户反馈的需要修改的内容;
5、经理安排的其它工作。
三、实习安排
2.29 参加毕业实习动员大会
3.9-2016.3.15 进行岗前培训
3.16-2016.3.22 进行网站的开发与设计
3.23-3.25 撰写实习报告、实习日志,为毕业设计做准备
四、实习内容及过程
3-1至3-6
第一天来公司报道,首先熟悉了公司周边的环境,了解目前在做的项目。经过跟总监的交流,我们制定了一个短时间的学习目录,其中有都要学习的linux系统的基本操作指令,环境配置。Github远程仓库,能够保存我们写的代码。做前端的同学学习jsp,jquery,css,html等语言,我们做后端的需要学习golang语言,
Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊于2007年9月开始设计Go语言,[2],稍后Ian Lance Taylor, Russ Cox加入项目中。Go语言是基于Inferno操作系统所开发的。[4]Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。
现在大多数的开发都是在linux环境下完成的,所以这短时间首先在电脑上安装了linux虚拟机,进行简单的linux命令学习。Linux系统是采用的命令操作的方式,这导致了linux有好多指令需要学习。
3-7至3-8
按照学习目录的进度,今天我看了java mvc开发模式。
MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts
只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂。但是,我们已经终结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。
了解一下MVC三个部分在J2EE架构中处于什么位置,这样有助于理解MVC模式的实现。MVC与J2EE架构的对应关系是:View处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于
Middle Tier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
3-8至2-9
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型J 菽P椭饕 甘堤宥韵蟮氖 ?保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示。
3-10至3-11
是对github进行学习,GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
GitHub进行分支就像在Myspace(或Facebook…)进行交友一样,在社会关系图的节点中不断的连线。
GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
是的,正是这么计划的。通过与客户的接洽,开发FamSpam,甚至是开发GitHub本身,GitHub的私有库已经被证明了物有所值。任何希望节省时间并希望和团队其它成员一样远离页面频繁转换之苦的人士都会从GitHub中获得他们真正想要的价值。
在GitHub,用户可以十分轻易地找到海量的开源代码。
3-14至3-15
今天了解学习了coding.net这个网站。Coding.net 是一个“云中云”平台,从2014 年 7 月份上线至今,服务着10多万开发者。这也是云计算产业从一开始人们口中的“虚无”变为可信任并且应用成熟的标志。
Coding 作为一个 SaaS 层服务商,提供代码托管以及一系列在线开发工具以及协作管理工具服务,高达 90% 以上的用户托管的都是私有项目,在平台系统安全性以及数据信息安全保障上更为人所关注。 端对端安全是 Coding 的长期关注点。 我们作为国内首家程序员服务提供商提供整站 SSL 加密,2-Factor Authentication (两步验证),危险操作审计等功能,未来还会增加手机QQ 等多账号绑定, 异常登录提醒等,最大限度提高E2E安全系数。
3-15至3-18
这几天是对go语言进行学习。
Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是著名的计算机工程师:Robert Griesemer,参与开发 Java HotSpot 虚拟机;Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan 9,Inferno 操作系统和 Limbo 编程语言;Ken Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范。2009 年 11 月 10 日,开发团队将 Go 语言项目以 BSD-style 授权(完全开源)正式公布了 Linux 和 Mac OS X 平台上的版本。Hector Chu 于同年 11 月 22 日公布了 Windows 版本。
作为一个开源项目,Go 语言借助开源社区的有生力量达到快速地发展,并吸引更多的开发者来使用并改善它。自该开源项目发布以来,超过 200 名非谷歌员工的贡献者对 Go 语言核心部分提交了超过 1000 个修改建议。在过去的 18 个月里,又有 150 开发者贡献了新的核心代码。这俨然形成了世界上最大的开源团队,并使该项目跻身 Ohloh 前 2% 的行列。大约在 2011 年 4 月 10 日,谷歌开始抽调员工进入全职开发 Go 语言项目。开源化的语言显然能够让更多的开发者参与其中并加速它的发展速度。在 Go 语言在 2010 年 1 月 8 日被 Tiobe(闻名于它的编程语言流行程度排名)宣布为“2009 年年度语言”后,引起各界很大的反响。目前 Go 语言在这项排名中的最高记录是在 2010 年 2 月创下的第13名,流行程度 1.778%。
Go 语言将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。因此,Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进行指针运算。
Go 语言对网络通信、并发和并行编程有着极佳的支持,这能更好地利用大量的多核计算机。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。这个特性是 Go 语言最强有力的部分,不仅支持了日益重要的多核与多处理器计算机,也弥补了现存编程语言在这方面所存在的不足。
Go 语言中另一个非常重要的特性就是它的构建速度(编译和链接到机器代码的速度),一般情况下构建一个程序的时间只需要数百毫秒到几秒。这不仅极大地提升了开发者的生产力,同时也使得软件开发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。
由于内存问题(通常称为内存泄漏)长期以来一直伴随着 C++ 的开发者们,Go 语言的设计者们认为内存管理不应该是开发人员所需要考虑的问题。因此尽管 Go 语言像其它静态语言一样执行本地代码,但它依旧运行在某种意义上的虚拟机,以此来实现高效快速的垃圾回收。
3-21至3-22
经过几天的go语言的学习,在去看项目已经不是那么困难,这两天对照着项目源码进行学习,并尝试这进行修改,项目主要是使用beego。
Beego是一个能够快速开发Go应用程序的Http框架。它可以用来迅速地开发API、网络App和后端服务。同时,它也可以作为RESTful 框架。其设计灵感主要来自Python和Rails流行的框架,借鉴了Python语言开发的框架Tornado和Flask以及Ruby开发的web框架Sinatra。
4-1至4-2
毕业实习还有三天就要结束了,我开始我的毕业设计课题--华科考试排座系统的设计与实现进行了初步构思和设计。
考试管理历来就是学校工作的重要组成部分,它作为检测学生掌握所学知识的熟练程度,考核学校的教学成果的一种手段,目的在于保障学校教育教学质量、培养学生良好的学习习惯,提高学生的创新思维能力。
在数字化的今天,越来越多的学校采用了教务软件,大量的工作由纯手工转变为半自动化,然而在这样的环境下仍然存在很多死角,需要我们花费大量的人力去完成,编排考试安排便是其中之一,传统的排考仍然要采用手工方式,专职教务人员往往需要花费几天的时间去完成考试的编排及核对工作,尽管大家工作的非常仔细、认真,但任难完全避免错误的发生,甚至有时候会在下发监考安排表的过程中发现错误,临时修改。针对以上教务管理中存在的尴尬情况,我们开发适合我们的考试排座系统。
4-3
今天是毕业实习的最后一天了,回想这实习的一个月,公司并没有让我马上投入工作,因为当时对项目不了解,要从学校的圈子走出来到社会商业模式去还是有点顾虑,但是当我接触到这商业化的东西,我忽然发现,现在要使用的东西并不是在学校学习的,几乎所有的东西都要重新学习,在学习的过程中接触的都是新的东西,我只能从网络上找相关的学习文档进行学习,遇到困难和同学一起商量,解决不了的问题问其他的老同事。只有代码编写的多了,才能够熟练运用所学的知识。我根据要求撰写了实习报告和实习日志。
五、实习总结及体会
本次毕业实习时间为期一个月,实习方式为分散实习,由自己找实习单位进行实习。在实习期间,公司的制度是,一周上五天班,休息两天。在公司主要学习了linux、github以及golang等
这一个月里,学会了怎样与人团队合作,这些都将会对我的成长有很大的帮助,将会在以后的学习、工作和生活中起到很大作用。
经过这次毕业实习,让我对自己有了新的认识,也学到了很多宝贵的知识。在实训中,我将在书本上学习过的很多理论知识付诸实践,实际运用,我体会到了其中的难度。
学会了当你遇到新的知识的时候应该怎么去学习,怎么去解决困难。实习的过程中让我了解到了自己的不足,我会继续努力,完善自我。
实习只是开始,在以后的工作中我遇到的只会比现在更难,但是我不会退缩,我会不断的努力学习,不断的完善自己的知识体系,我相信没有调试不了的bug,只有不努力的程序员。
我除了学会了一些工作的基本技能外,也学到了做人做事的道理,更让自己浮躁的心平静了下来,看清了自己的能力,明白了自己究竟想要的是什么。这些都是在学校中所学不到的宝贵的东西,更让我看到了这个社会竞争的残酷,所以只有保持进取心才能使自己不被淘汰 实习结束之后,当初对自己适合什么样的工作什么岗位的迷茫已渐渐消失,心理终于有了些轮廓,在现实生活中,走好人生第一步是重要性不言而喻,它会影响我们今后的道路,我会带着在实习中的收获,去争取去努力,把握好人生中的每一个机会,找到自己想要的生活。