java程序员调查报告(精选6篇)
篇1:java程序员调查报告
java程序员述职报告
java程序员述职报告
先自我简介一下,本人从事java开发进一年,xx届毕业生,XX年11月开始上班,之前做asp,XX年2月后开始做java,由于公司转型,现在带十几个人在一起搞java开发,主要是关于准金融行业的行业管理软件。总结在会议上也写了,但仅限于对于工作总结及XX年工作计划,自我总结较少,因此今天专门做下自我的总结,主要从技术、管理、人生上面谈谈这一年的收获,前辈路过欢迎多多指正。
技术
我在学校里学的是电气自动化,程序基础仅限于c基础课程的一些知识,后来由vb、html转向asp,在asp上花费了不少时间,对asp比较熟悉,后来由于公司业务需要,将开发平台转向java,开始对java不是很感冒,以为就是asp的一点扩展(那时还不知道三层架构,数据数据访问全在页面里——!),后来招来几个北大青鸟的过来终于意识到java的强大之处,经过个人的努力已经逐步掌握了java,现在层次上只能讲个人觉得是入门而已,原因是多方面的,待会儿会讲到。
相信从面向过程转向面向对象的同学都有一种感觉:面向对象开始真的有点别扭,涉及到属性,尤其是类之间的各种关系,那时老想用面向过程传递参数多方面啊。于是老在想对象这种东西,从概念中跳中来,以自己的方式去理解才逐渐体会到页面对象的精华来,分层次展现、分级别访问、封装对象之间各种关系逐渐真正理解了,尤其是对象之间的关系,如对象a与对象b两者之间的关系,有些需要完全公开,有些需要隐藏,有些需要通过第三方传递,有些需要给自己的下级可见,有些需要让下级去完成具体操作——这不是现实的实际模型吗?应该这么理解,面向对象来源于现实,它不是一种凭空空想出来的理论,这些对象之间的关系可以将其还原为父子、夫妻、领导下属、同事、朋友之间的关系。相比之下,页面过程往往像是一股脑全部推给用户使用,其中的数据与数据访问方法层次不清晰,在模拟现实上它与面向对象相比更易于入门理解,实质上难于准确直接地表述。
面向对象上另一方面是它的设计模式,在之前的面向过程中 对这个设计模式并没有清晰地提出来,面向过程优秀的代码要求高内聚低耦合,从个人的理解上,这仅是对软件开发方法“技”上理论总结;设计模式是达到了“道”的层次,因为它从更大的方向、更抽象的层次来去表述具体的代码模块之间的关系,可以认为设计模式是完全从实际的应用来不断总结得来的经验,之间并没有这种术语,但相信前人肯定也使用到这种思想,它从实际应用于来,当然要应用于实际工作中,认真思考不断总结每个人都会有自己的“设计模式”,可以借鉴前人的思想来去提升自己,不可去为“设计模式”而设计模式。
具体到java的实现模型中,真正理解它的机制与方法也就不难理解,记住b/s中离不开post或get,所有的autopostback、selectedindexchanged……都是去调用form传值,加上runat=server的服务器控件打开它生成的源文件也是普通的html标签,微软的让软件开发更容易的思路是很好的,时代在前进,很多年前你使用c写出mis证明你很牛,很多年之后你不在使用c去写“学生管理系统”、“图书馆管理系统”那只能说明你的脑子少一根筋,开发语言都有长处与不足的地方,因为它们适用的场合不同,类似不能拿匕首去跟炮弹比,也不能拿c与php比,程序员都有一种偏执的心理,但一点要记住,你面对的用户才有最终发言权,程序能不能满足需要,易用性、稳定性、成本才是应当首先放到重要位置来去谈的。
管理
最开始担任管理一职时开发团队加我在内只有四个人,那时只是抱着接受挑战的心理去做管理,加上我本人比较重感情,团队之间关系相处都不错,但严重的问题逐渐显露出来:工作的随意性、团队精神薄弱、工作方式蛮干,印象深刻的是有几个开始承诺项目不能完工,于是最后天天加班,一直做到早上6点,睡一会7点半接着上班,几个同事都是年龄差不多的小伙子,干劲十足。后来随着时间的推进,问题越来越摆在眼前:项目迟迟不能完工,又由于公司待遇方面让新员工感觉不值得,于是形成了老板抱怨员工也抱怨的状况,我在中间两点都要去“消火”,这期间是我们部门相对最累的时间但也是相对感觉最充实的时候,后来,之前的员工跟我说“再也找不到那种感觉了”,这是我能想像的。这期间主要是老总对我十分信任,工作上主要是管理方法上对我指点了不少。后来我逐步体会到,管理应该是“大家定规则去遵守”,而不应该是“人管人”。
人管人很容易陷入一个误区:领导去时时刻刻关注每个员工,这样最后往往后造成员工对领导的敷衍了事,管理松了员工会责任下下降,管理紧了造成员工与领导关系紧张,另一方面领导时间精力有限必然耗费大量的精力在日常的监督中而不能投入到全局的管理中。
于是“定制度-定分工-定进度”,明确日常所有的规章制度,这期间除了公司主要的工作规章制度外其他的日常工作纪律、日常管理等规章制度都是我本人制订,然后征求大家意见最后去贯彻执行。中间也遇到了不少问题,比如开始我们内部是允许使用qq的,后来员工用qq闲聊的时间增多,大大影响了工作效率,最后决心禁止,开始阻力较大(貌似程序员都喜欢挂上几个qq去到群里搞个群主,虽然群里大多都是菜鸟),最后多次开会,逐个谈话,阐明道理,形势逐渐好转。
项目分工上针对技术水平明确分工,制订项目开发计划,由于开始技术都不是很成熟,不少时间我这边强势要求,使用野蛮方法,完不成加班——我陪着加班,这段时间能感觉到员工对我稍有怨言但总体还是认可的。
这期间公司新招人员,人员的增多更使我意识到团队管理的重要性,这期间版本控制、编码规范、文档管理、bug管理等诸多问题都得到一一解决,技术水平上主要是我个人利用空余时间学习新知识充电,然后展开各种培训,主要是photoshop、css、js、sql等方面,培训一方面提升了员工的技术水平,一方面我本人在学习培训的过程中得到的最多,因为这个时候个人要求去思考的会更多,加上我本人对技术兴趣比较深厚,所以后期工作慢慢踏入良性循环。
待遇低、条件艰苦、工作时间长、工作压力大是团队中最大的难题,这方面公司在某些方面决策层有着严重的错误思想,造成技术人员对公司埋怨增多,在这方面我本人只能以劝架婆的身价去安慰身边的兄弟,因为我明白现在公司的问题与当前中国软件行业的通病一样,盲目追求利益最大化,不求质量,但求速度,整个社会风气造成软件行业良莠不齐发展,整个中国三四个人的开发团队组成的公司数不胜数,整个程序员阶层生存状况可想而知,疯狂加班、代码质量低下、维护成本大、稳定性差、用户体验差……。
当然我们本身不能去逃避这个现状,对于个人来讲任何假大空的口号都是没有意义的,程序员作为技术人员最重要的是心态,以良好的心态去面对各种问题,发现问题、解决问题,发现问题抱怨是解决不了问题的(“it民工”是我个人认为it人最没有正确的自我定位的一个称谓,试想一个人连自己都看不起自己的职业,他能做好自己的工作吗?),最主要是解决问题。
我在面试员工时反复提到的三点是:工作态度、发展潜力、工作能力,由前向后排序,心态最重要,大公司大家都想削尖脑袋往里挤,但名额有限,所以广大的程序员同志绝大多数都集中在二流三流四流的软件公司,这个时候更应该做好个人职业定位。以我个人的经验,新员工选择一家公司往往最看重工资待遇跟发展潜力,程序员是一种不可以混日子的职业,工作能力很重要,但不是最主要的,工作态度是最重要的,工作态度往往跟个人的思想认识还有职业所在的环境有关,我个人的体会是绝不能太过于情绪化,情绪化无论是对工作还是对个人的发展都是不利的,就是说哪怕是明天你要辞职,你今天都要把今天要做的事情认真用心做好。
对于工作责任心不够的员工是尤其值得关注的,他们往往自我意识过于强烈,追求以自我为中心,很多时候伴随着工作得不到认可、工作感觉不充实不开心,我会主动找他谈话,我认识:你管理的是一个实实在在的人,他不是一台任你摆布的机器,人会有情绪往往是有心结,找到原因,多加开导,用心去关心每个成员。对于实在不适合在本团队发展的员工要做好最坏打算。程序员这个职业与现在的大学生具有一致的特征,一个是从天之骄子沦为多余人,一个是从高智商人士成为今天中国通行的”it民工“。另一方面是程序员往往年龄集中在20-25之间的男性中,情绪化、失落感、心理不成熟等一系列问题都会出现。但这个阶段的人往往也最易沟通,可塑性也较强,适当的引导、合理的方式会比野蛮的管理效果强上百倍。
java程序员述职报告
大家好,我是XXX项目组的XXX,我于20xx年7月进入公司做JAVA程序开发,至今已近快一年时间了。初来公司,曾经很担心不知该怎么与人共处,该如何做好工作;但是公司融洽的工作氛围、团结向上的企业文化让我较快适应了公司的工作环境。在本部的工作中,我一直严格要求自己,认真及时做好领导布置的每一项任务。不懂的问题虚心向同事请教,不断提高充实自己,希望可以为公司做出更大的贡献。
当然,刚做这个项目的时候,难免出现一些小差小错需领导指正;但前事之鉴,后事之师,这些经历也让我不断成熟,在处理各种问题时考虑得更全面,杜绝类似失误的发生。在此,我要特地感谢部门的领导和同事对我的指引和帮助,感谢他们对我工作中出现的失误的提醒和指正。总结经验是一个人迅速成长的有利催化剂,为了更快地成为一名优秀的员工,现将我20xx年上半年的学习、工作情况总结如下:
20xx年初时,我们进销存项目通过了一期客户验收。但是,随着客户业务的变化,项目需要做很大的改动和调整。现进销存系统进入了二期的设计开发阶段。
初入公司的时候,我只负责财务模块的存货核算开发工作。随着公司人员的变动,现在我负责财务管理整个模块的开发工作。很明显的能感觉的身上的压力越来越大,也许是因为我的个性使然吧,越挫越勇,迎难而上。不断的学习财务业务知识和本系统框架,现基本了解掌握了财务的整个业务逻辑及业务流程。因为没有参与一期的原型、需求、设计、数据库等文档的设计。
在开发过程中发现,有好多原型、需求文档、设计文档,只知其然,不知其所以然。总结一期经验,避免二期开发中遇到同样的问题和困难。从原型设计、谈二期需求、整理需求文档、数据库设计、开发,一条龙负责到底。这样对业务逻辑及业务流程有了更深的理解。从“我问”,到“我讲”,有了很大的个人提高。提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质。
我相信付出肯定会有收获,在我们的努力下,进销存系统一定会给客户及公司一个满意的答案。
在这一年里,我看到公司的迅速发展,各项制度的不断完善,我很庆幸我是公司的一员,我会用谦虚的态度和饱满的热情做好我的本职工作,为公司创造价值,同公司一起创造美好的未来。
篇2:java程序员调查报告
光阴如梭,半年的工作转瞬即将成为历史,伴随着新年钟声的临近,我们依依惜别硕果累累的2010年,满怀热情的迎来即将到来的2011年。在这年终之际,现对我来公司这几个月的时间里,总结自己所做的工作,分析在工作中的得与失,现汇报如下:
2010年的六月份,我带着好奇而欢快的心情来到我心目中向往的神圣之地---北京。这是我毕业后第一个目标,来北京发展。我离开了我上学的原始领域,和我的同学们踏入北京之地。说句好听的,我的技术生涯还是很幸运的,当然这是我相对于留守本地找工作的同学来说的,面对高昂的学费和残酷的社会现实,选择本专业就业还是有一定困难的,在北京中关村混了几个月后,幸运地找到了我人生的第一份工作,做Java程序的工作。也就是来到咱们公司—北京联合兴辰。
来到贵公司,学了半个皮毛的MVC和SSH的我有了份工作(感谢我的领导),我感到十分的庆幸,也承担了第一个项目,能一个人自主开发的项目(还得感谢领导)。在这里,终于能够将学到的那点东西派上用场。从技术的角度来讲,2010年我的关键词就是SSH,其次就是Hibernate。这几个月淡淡无奇,学到的东西很多,有框架上的、Mysql数据库的,等等,但是也都是在皮毛上的,掌握着能熟练使用而已。
首先,做程序员的要记住第一条经验:“学历代表过去、能力代表现在、学习代表未来。”我个人觉得学历并不代表全部,我们每天都可以学到新的知识,知识是可以一点点积累的,只要肯努力,一切皆有可能.其次,一定要确定自己的发展方向,并为此目的制定可行的计划。
不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先 在行业里面混混,过几年转行做点别的?这很重要,这是你值得深思的问题,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
软件开发团队中,技术不是万能的,但没有技术是万万不能的!
在技术型团队中,技术与人品同等重要,当然长相也比较重要么。在软件项目团队 中,技术水平是受人重视和尊重的重要砝码。无论你是做ERP、管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。但是你没有这方面的基础是万万不能胜任你的工作的详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。时间就像海绵里的水,多学一些技能对于我们来说亏不到自己,我们的工作从学而来,就是靠着每天的学习,交流,做人中得到
书籍是人类进步的阶梯,对软件开发人员尤其如此。
我的项目经理经常说,趁着自己还年轻,花几个钱买书看看,书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。只有通过自学将书本变成的自己智慧,才算是真正拥有了它。
不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。
对于一个做程序的,试试学习其领域的相关知识点,对各个平台都要了解,向什么Java EE,J2ME ,Java SE,VB ,VC C# ,C++ 这些程序啊,也要试着去了解他们,虽然程序的套路基本是差不多的,但是也各有千秋的,我是学Java的,当然Java很强大,我就很爱Google出的那个安卓系统,Java实在太牛啦!不得不惊叹,例如我没有事的时候也因该提醒自己学习一些JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着研究一下jar包,知道每个jar的功能和实现的方法,免得自己以后的工作遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
在一种语言上编程,但别为其束缚了思想。
“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由。有时候咱们会遇到一些问题,你单纯的用着一种方法有时候会解决不了问题,或者遇到问题卡在那里啦,这是你需要的是----灵感。灵感来自那里,你可以借鉴Spring、Hibernate、JBoss等等优秀的开源框架的设计思想,你可以参照Java的IoC、AOP的设计思路,你可以从其他语言的程序中借鉴他们的套路,这就是我们的灵感,俗话说“他山之石、可以攻玉”。
养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。
我们在做程序的时候,别人为什么要提示你 把每个方法都要写上注释,注释这段代码是干什么的,这是做好一个程序员基本的要诀,这就是你的基本功,当然在写代码的时候也不是都是有用的代码,有些功能是可以通用的,咱们为什么不可以给他打包封装jar,将来或者以后会用到呢,为什么会有那么多很牛的框架,这些都是程序员们提炼出来的,形成一整套的代码结构和体系,被人用的时候感觉非常好用,我们目前写不了这么牛的程序,但是还是可以形成自己的个人源码库的。
心态有多开放,视野就有多开阔。
不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果。例如你在网上看到别人遇到问题,这个问题可能你之前也遇到啦,不要抱着你那自私的心态,背后说“累死你,自己去找吧,小样“,建议大家,上你的CSDN号,我感觉这个东东很不错,技术交流。咱们“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大家都懂,但有多少人真正能做到呢?
我的反思
不要去做技术上的高手,学会做人。提高自己的专业技能,能胜任工作。
篇3:Java开发目录同步程序
Java语言是一种十分流行的程序开发语言。由SUN公司推出, 具有简易性、健壮性、安全性、可移值性等许多特性。可以用它开发各种应用程序, 是目前主流的开发语言。这里使用Java语言开发一个实用的目录同步程序, 通过实例讲解基本的Java程序开发技术。
2 开发思路
在网络环境中, 往往存在这样的需求。网络中的一台或几台计算机需要和网络中的某一台计算机中的目录文件保持一致。也就要同步的目录名和文件名以及文件内容要完全一样。如果文件发生变化, 变化后的文件将被实时更新。要实现这样的功能, 可以设置有目录同步要求的计算机为服务器, 要进行同步的计算机设置为客户端。双方通过套接字传递数据, 完成同步的功能。
服务器端设置要进行同步的目录名, 然后扫描该目录下的文件, 将要同步的文件名、文件校验码、文件时间、文件大小信息传给客户端;客户端检查要同步的文件, 如发现文件不一致, 就进行文件同步, 如果一致, 就确认同步完成。
3 程序代码
程序中有如下类, 用于搜索目录, 并将搜索到的文件放到一个Array List中:
服务端和客户端按以下规则传递数据, 如表1所示。
使用如下类, 用于读写服务端套接字:
使用如下类, 用于读写客户端套接字:
使用如下类, 用于进行文件校验, 以保证文件可靠传输:
4 结语
程序经过测试, 完成了目录同步的功能, 可以在实际环境中使用。希望本开发实例对从事Java语言开发的读者有所帮助。
参考文献
篇4:Java程序混淆技术综述
关键词:Java程序;混淆技术;软件水印;防篡改;软件版权保护
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 09-0000-02
人们对于计算机的依赖性随着软件技术的不断给人们带来便利和乐趣,使工作更富有主动性和操作性,但是任何事物在发展过程中都会有其负面效应与之相对,随着计算机软件应用量和种类的不断扩展,其使用安全问题便开始影响到人们的正确使用,并开始逐渐打击使用计算机的积极性,以及对于安全问题的无奈。主要攻击形式是通过对软件备份的破坏而直接将软件彻底摧毁,根据现有问题,当前的软件已经经过改良,重新调试,但是攻击则换角度也将攻击破解方式进行重组,使改良的部分无法发挥其作用,这样软件就不会得到应有的保护,依旧能够以非正规途径得到软件的任何数据,从而进行大面积的传播,这也就是为何当今软件盗版现象严重的途径之一。Java程序的出现,首先能够在网络上加快传播速度并且无客观條件可以轻松普及,但同时却能够通过无关性对产权进行有效的保护,不会轻易的被人盗用。
一、软件混淆技术基本原理
(一)基本释义
软件混淆技术是为了能够在软件受到侵害或是盗用时可以被保护的一种现代技术,软件技术首先咋1977年新西兰首次被提出,其实是将原有的程序的语言转换成一种密码语言,不能被一般的软件所识破的一种转换,并且研制出能够对这种转换进行评估的理论计算。转换的形式未变,只是在形式上保留原有的运行根组成,添加一些其他能够扰乱破坏和读取的程序代码。如今混淆技术开始不断的发展,诸多的被应用于产权的保护中,所谓的混淆就是通过语词的转变但保持其语义依然与之前相同,这就能保证软件在使用时功能是不变的,却能够防止逆向工程攻击和被静态分析。
(二)软件混淆技术的分类
当Java文件经过处理,在原有的基础上添加了其他程序代码成为类文件,这种类文件包括魔数( magic number) 、版本( version) 、常量池( constant pool ) 、访问标识( access flag s) 、(this)类、(super)类、接口( interfaces) 、域( fields) 、方法(methods) 和属性(attributes) 。
软件混淆主要通过类内混淆和类间混淆来根据不同的使用对象进行划分,类内混淆主要是克服(methods)中的code字段,而类间混淆却是针对多种类文件的综合体进行混淆处理,其主要的方式是合并和拆分相对的过程处理。
下面分别介绍两种混淆。
(1)、类内混淆
能够支持类内混淆的途径有数据混淆、控制混淆、切片混淆以及针对特定工具混淆四种。数据混淆是对数据的结构组成元素原有的书写方式进行修改,使其不再成为能够被认知的程序。主要有:变量存储和编码混淆、变量聚合混淆、顺序调整混淆、词法混淆以及移除注释和调试信息混淆。控制混淆是在信息传输过程中的保护,主要采取追踪定位等方式实时监测信息的状态,从而对其他袭击系统进行抵御。切片混淆,正常在一般的软件中问了能够让计算机更好的识读软件,所以增加了切片以帮助更好的理解,降低难度,而混淆了切片则能够使其首先无法有助于难度的下降,另外会造成对于程序的误导可能降低了或是更改了某些其他的程序,达到了增加难度混淆的目的。针对特定工具混淆软件为了能够起到保护作用,本身具有一定的反编译和反混淆的功能,会在一定的紧急时刻自动启动,而针对特定工具就是抑制了自动的传导,对于能够使软件本身内部之间的反编译都可以正常的进行,但是对于外部的反编译就不会在自动启动,这就是混淆的高级之处。相区别与前三者人的行为,针对特定工具混淆具有自动的功能针对的是自动化。如果能够与以上三种任意搭配就能够达到防住人机的共同目的。
(2)、类间混淆
类间混淆是合并拆分类文件而造成混淆的目的其中又有三种表现形式:类合并、类拆分、隐形类间混淆。类合并是要面对多个文件的自身组成的函数变量,通过将函数、变量的名称进行更改,注意在更改过程中一定不能同时出现两个或以上的名子,如果在合并中有参数同系统提示无法进行更改,则要为其中一个虚拟一个参数。另外如果合并文件中有继承关系的则需要在合并成功后加入一个布尔型的私有变量用于区分标识符相同的函数。类拆分则是观察现有的文件是否进行拆分,同时并作出相应的调整。对于结果是可拆分的类就是将A拆分为A1与A2,为了能够使A的要素都能够实现所以应该是A2处于继承A1关系。类型隐藏是通过接口来实现混淆,并且能够保证原文件并不需要改变接口,所以被称为隐形。相比类合并,类拆分和隐形类间混淆所用的时间相对较短。
二、软件混淆算法的攻击模式
(一)混淆算法的理论研究
混淆技术的提出者曾经试图将整个运行过程当做是一个虚拟黑箱来看,也就是说对于其他程序来说这就完全是另外一个软件和原软件无任何联系,从它的输入和输出的方式内容和代码都不同,这种在理论中是可以站的住的,但是在实际操作中会受到很多因素的限制,但在相对宽松的要求下还是可以实现混淆技术的使用。后来又根据该理论研究通过点函数来实现虚拟黑箱,总而言之其未来的研究空间还有很大,期待它的日益成熟。
(二)混淆算法的攻击模式
1.针对数据混淆算法的攻击
假定T 是对程序P 的一个单向的混淆变换,当且仅当从原始程序P 除去某些信息后,无法通过混淆后的程序Pc恢复出P。词法变换是最典型的不可逆混淆算法。虽然对于经过词法变换的程序进行攻击不可能恢复程序的原貌,但只要理解程序各个模块的含义就可能对程序产生威胁。例如根据无法被混淆的系统API 名称等关键字,攻击者可以推测出该模块的大致功能。
2.针对控制流混淆算法的攻击
目前,针对控制流混淆算法的主要攻击方法是动态分析。动态分析对大部分混淆算法的攻击作用,并阐述攻击模型. 对于控制流混淆而言, 变换后生成的程序中若存在始终不执行的分支,通过动态分析就能找到对破解程序有用的信息.针对控制流混淆,还有黑盒测试攻击, 该方法通过对程序进行黑盒测试,了解各个类及其函数的功能, 从而获取攻击者需要的信息. 这种方法对大多数的混淆变换均能加以攻击。同时,该方法也存在着一定的局限性: 黑盒测试缺乏自动分析工具,需要依靠大量的人力来完成分析工作。
三、对于混淆技术的未来预估
混淆技术是一种可用于抵制逆向工程和重组工程、对软件知识产权进行保护的程序变换技术。使用混淆技术虽然会使代码的效率有一定程度的降低,但是它的实现代价相对较小, 因而在近年引起了广泛的关注.由于混淆技术不改变程序功能的特性, 并且有些词法混淆算法甚至可以减小原程序的体积, 因此混淆技术得以在保护移动代码方面得到广泛的应用. 受移动平台资源的限制,今后混淆技术的研究方向一方面要加大混淆的力度,增加攻击者反编译的难度,另一方面也要考虑降低混淆算法对目标程序的运行负担。文献探讨了混淆技术在移动代理上的应用。目前保护软件知识产权的新技术主要有3种:混淆技术、软件水印技术和防篡改技术。这3种技术各有特长,将它们互相结合使用,可以给予目标软件更为可靠的保护,这也是目前研究的一个重要方向。对于混淆算法的评估、正确性验证以及如何研制高效可靠的混淆算法, 也是将来的发展方向之一。
四、总结
混淆技术是对软件进行的基础产权保护,为了能够增加破译的难度和代价,从而使产权盗版的情况发生率降低,同时还能提高软件水银的鲁棒性,有人提出将程序的编译混淆, 而不是混淆程序本身。但是该方法还有若干问题需要考虑。使软件的安全度进一步提升,给人们的使用带来了更多的福音,虽然该技术已经广泛运用也颇收到好评,在技术上依旧有大的发展前景,需要投入更多的研究力量。
参考文献:
[1]霍建雷,范训礼,房鼎益.Java标识符重命名混淆算法及其实现[J].计算机工程,2010,第1期
[2]咸星海.面向对象代码混淆技术研究及软件实现[J].中国科技博览,2010,第19期
[3]刁俊峰.软件安全中的若干关键技术研究[D],北京:北京邮电大学,2007
[4]李新良,罗戈夕.基于Java的代码混淆算法研究[J].湖南文理学院学报:自然科学版,2010,第3期
[5]霍建雷,范训礼.房鼎益,Java标识符重命名混淆算法及其实现[J].计算机工程,2010,第1期
[6]李婧.基于控制流混淆轉换的代码保护技术[J].计算机安全,2009,第8期
[7]袁征,冯雁,温巧燕,张华.构造一种新的混淆Java程序的不透明谓词[J].北京邮电大学学报,2007,第6期
篇5:java程序设计实习报告
《Java程序设计》
实习报 告
中原工学院信息商务学院
经济管理系 2010年6月20号
中原工学院信息商务学院
目录
一、实习题目...............................................................................................2
二、实习目的...............................................................................................2
1、社会需求.............................................................................................................2
2、专业需求.............................................................................................................2
三、开发环境...............................................................................................2
四、实习内容...............................................................................................3
1、系统功能需求..................................................................................................3
2、数据库需求........................................................................................................4
五、设计过程...............................................................................................4
1、总体设计.............................................................................................................4
2、详细设计.............................................................................................................5
六、调试过程...............................................................................................5
七、实习小结...............................................................................................5
八、参考资料...............................................................................................6
中原工学院信息商务学院
一、实习题目
学生信息管理系统的设计与开发
二、实习目的
1、社会需求
一直以来学生的成绩管理是学校工作中的一项重要内容,随着办学规模的扩大和招生人数的增加,学校工作繁杂、资料重多,普通的成绩管理已不能适应时代的发展,它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。虽然管理信息系统已进入高校,但还未普及而且对于学生成绩管理来说,还没有一套完整的、统一的系统,建立一个成绩维护系统是非常必要的。建立学生成绩管理系统,采用计算机对学生成绩进行管理,能进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
2、专业需求
《Java程序设计》课程是电子商务专业的一门专业必修课程,通过java实习不仅可以提升本专业我们对此课程中的理论知识的综合应用能力而且可以提高我们的逻辑思维能力、软件开发能力。我们通过Java技术在Windows平台下开发学生信息管理系统。能够切实提高我们的程序设计水平,在实践中掌握面向对象程序设计的开发思想。
三、开发环境
操作系统;Windows XP 编程环境:MyEclipse 6.0
中原工学院信息商务学院
主要技术:Java Swing实现窗体界面 JDBC实现数据库操作
系统架构:三层架构(MVC)+DAO设计模式 数据库:MySQL5.0
四、实习内容
1、系统功能需求
学生信息管理系统主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能。我们的目标就是为该系统提供前台用户界面设计以及后台连接数据库程序设计,系统程序界面采用Java Swing组件实现,数据库操作采用JDBC实现。
学生信息管理系统要面对教师和学生用户。对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。对于学生,不需要查询自己的基本信息,只需要查询成绩。为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩。
教师方面:教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。在查询功能里面,可以选择是查询学生基本信息,还是查询学生成绩信息。在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。在查找学生成绩信息时,只能依据学生姓名和学号进行查找。在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录。
学生方面:学生通过自己的用户名和密码登录此系统后,可以查询自己本学期的各科成绩信息。
中原工学院信息商务学院
2、数据库需求
依据功能需求,学生信息管理系统主要有三个表:student表、teacher表和score表
(1)student(学生信息表)
此表有六个属性,分别为:id(主键,自动递增),num(学号),sname(姓名),sex(性别),age(年龄),dept(系别)。(2)teacher(教师登录表)
此表有三个属性列,分别为:id(主键,自动递增),tname(教师账户),password(登录密码)。(3)score(教师登录表)
此表有六个属性列:分别为:id(主键,自动递增),num(学号),sname(学生姓名),course(课程名称),score(考试成绩),credit(学分)。
五、设计过程(包括总体设计和详细设计);
1、总体设计
这次java实习设计的学生信息管理系统,是对学生的个人信息,课程信息,成绩信息以信息化的方式进行管理,最大限度地减少各个环节可能出现的错误,有效减少因人力资源局限性导致的存储信息量大,信息存储错误,混淆等问题,合理进行信息存储,使学校能够合理录入学生的个人资料,学期成绩情况,以及课程安排,为学校师生的工作提供后方面。根据需求我们设计的学生信息管理系统教师可以查询、增添、删除学生信息,学生可以查询成绩信息。
中原工学院信息商务学院
2、详细设计
这次Java实习,首先,我们在机房装上了MyEclipse 6.0、navicat、MySQL等程序。其次,我们敲程序代码。源于程序的运行过程是进入提供用户输入机会的“视图层”,进而进入控制用户输入的“控制层”,最后到达“数据操作层”。我们新建工程,建立connection、dao、model、ui包,在connection包中建DBConnection类,在dao包中建ScoreDao、StudentDao、TeacherDao类,在model包中建Score、Student类,在包ui中建LoginUI、ScoreAddUI、ScoreDeleteUI、ScoreQueryUI、StudentAddUI、StudentDeleteUI、StudentQueryUI、StudentScoreUI、TeacherMainUI类。最后链接数据库。出现了主界面、教师登录、学生登录界面。
六、调试过程
在程序设计过程中出现了许多问题,现对我的经历做出以下论述:
1、编写程序时单词拼写错误,程序无法运行。
2、导入包时导错以至于下面的程序一直有错,最后只能重新导入包
3、出现了一些意外情况像只把工程剪切而没有剪切.metadata文件等导致文件无法再次打开导致重新做
4、链接数据库时曾出现驱动失败、链接失败的问题。驱动不成功原因是,第一次导入程序出错。第二次,导入程序时路径中含有中文字符。链接失败源于connection,主要是IP地址出错
七、实习小结(在整个课程设计过程中的总结和体会);
这次的java实习,我把所学的知识综合运用到开发过程中,使我获得了许多在课本中学不到的知识。当然,在实习中也遇到了许多的困难,在老师、同学的帮助下,问题终于被解决了。通过编写、调试程序我明白了许多。第一,不应该被未知的困难吓到,一切事情只要勇于一步步去做就会成功,想想当初害怕
中原工学院信息商务学院 的要命自己就觉得好笑。第二,态度要端正,摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。只有自己付出过,当程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。态度决定一切!第三,要细心,在对程序的过程中我锻炼了自己的耐力和毅力。
八、参考资料
1、邵丽萍,java语言程序设计。
2、李君芳,赵艳杰.电脑知识与技术马朝晖等.Java教程.(第4版)[M].北京:人民邮电出版社。
3、王毅.Internet与Java[J].电子与电脑。
篇6:Java语言程序设计实验报告1
学生姓名: 孙文琳
班级: 信息111
学号:201152275119 实验地点: 经管中心证券实验室
指导教师:赵利平实验日期:
2012.3.6
实验环境:Windows 2000+JDK1.6
1.实验目的(1)养成良好的编程风格;(2)掌握字符数据类型及其运算;
(3)熟悉从输入对话框获取输入和从控制台获取输入两种方法;(4)掌握布尔运算符;(5)掌握分支语句if和switch。
2.实验内容(1)在控制台下求两个实数的最大值:完成实验教材P22程序清单2-2;(2)
3.实验过程
报告撰写具体要求:上述实验内容要求写出源代码及运行结果。实验内容(1)://CompareTwoNumbersl.java
import java.util.Scanner;
public class CompareTwoNumbers1{
double number1,number2;
Scanner scanner;
public CompareTwoNumbers1(){
System.out.println(“请输入两个数字:”);
scanner=new Scanner(System.in);
number1=scanner.nextDouble();
number2=scanner.nextDouble();
System.out.println(“较大的数是:”+(number1>number2?number1:number2));
}
public static void main(String args[]){ CompareTwoNumbers1 ct=new CompareTwoNumbers1();System.exit(0);}
}
实验内容(2):
//DollarConvertor.java import java.util.Scanner;public class DollarConvertor{ public static void main(String args[]){ System.out.println(“请输入美元数:”);Scanner scanner=new Scanner(System.in);double i=scanner.nextDouble();double result=i*6.2875;System.out.println(“对应的人民币数:”+result);} }
实验内容(3): public class MultiplyList1{ public static void main(String args[]){ String output=“";for(int row=1;row<=9;row++){ for(int col=1;col<=row;col++)output+=col+”*“+row+”=“+(row*col)+” “;output+=”n";} System.out.println(output);System.exit(0);}}
4.实验总结
相关文章:
java程序员面试建议01-20
java程序员的进阶01-20
java程序员经典笔试题01-20
长沙java培训:java程序员面试题01-20
java程序员求职信01-20
java程序员的自我介绍01-20
java程序员要学习什么01-20
参加重庆Java培训学习好就业吗 重庆Java程序员月薪多少01-20
成为Java顶尖程序员01-20
java程序员面试笔试题01-20