开发经验_开发经验总结 - CSDN
精华内容
参与话题
  • java开发三年,总结一些经历与经验

    万次阅读 多人点赞 2017-01-10 11:32:41
    很多人都说开发三年是程序员第一个门槛,学到了基本的开发技术,熟悉了一些常用的软件。接下来怎么选择,方向很多,是专心做技术,还是做管理,或者是测试、运维、前端,更或者说换一行,回家卖卖红薯。 首先 要...

            不知不觉,毕业三年。

            很多人都说开发三年是程序员第一个门槛,学到了基本的开发技术,熟悉了一些常用的软件。接下来怎么选择,方向很多,是专心做技术,还是做管理,或者是测试、运维、前端,更或者说换一行,回家卖卖红薯。


            首先

            要总结下这三年的经历与学到的东西。

            14年毕业,进入公司后至今未换过工作,大概也算是很少见的了,公司是外包,工资低学不到技术,和我一批入职的100号人基本一个不剩了。我算是运气比较好的吧,被卖到北京,有出差补助,基本是活的了了。刚刚到北京的时候,真是啥都不会的感觉。大学混了四年,学习不好不坏,大概大部分人都一样,实际做程序和基本知识还是有一定的差距。


            第一个项目,做的是涉密的项目,做开发没有互联网,不知道多少人顶不住。自己不会,上网查又太麻烦,那就只能抄了,毕竟刚刚毕业都是些基础的增删改查,上传下载的技术,有例子就能学习,进过悲惨的两个月加班,终于是慢慢稳定了基本的开发工作。项目是接手的,不大不小,开发的时候有5、6个人,后期剩下我和经理还有个小伙伴。印象中,框架应该是SpringMVC+MyBatis,服务器是tomcat6,国家支持国产化的项目,用的是浪潮的服务器,麒麟的系统,达梦的数据库,用的过程中还是有好多的问题,国产还是得提高。刚刚上手的时候,我是第一个人,没人教,悲剧到找不到sql在哪写,真是黑暗啊。然后悲催的做了下数据的上传下载,完全没做过啊。像这样的问题,现在一百度就好了,但刚刚毕业没人带,自己在涉密环境傻兮兮的看,真是暗无天日,当时都准备回家种红薯了。但问题总会解决,经过努力还是熟悉了框架的使用。军队的项目一个表100多个字段,新增做的时候很是蛋疼。然后做过数据传输,和大连东软的做了下集成,新启动一个传输服务器,上下级的IP、mac、名称等属性,转换成一个文本文件,做数据流发送。这样又涉及到发送时以1M的包为大小,包前加头,包后加尾,收到后再处理合包。然后又涉及到了文件的校验,MD5的方法百度。那么接下来呢,数据加密,分为文件的加密和传输的加密。文件加密则是文件上传下载的过程中,对文件像传输一样分包,然后做位移,下载的时候一样做反位移,这样在服务器上落地的文件是无法直接打开的,文件是加密文件。传输加密则是在网络链路上,数据流是加密处理过的,这样,即使有人截包,依然无法得到传输的内容。唉,我想象中的开发的活也就这了,然后。。。自己测试,自己去现场,自己安装环境,自己和客户对接讨论,自己回来修改bug,再去发布新版本,制作安装手册,制作用户手册。貌似整个项目的活基本都做过了。做了的东西不少,学到的东西不少,过了两年现在就只剩下印象了。

            总结:这个项目学到了很多的东西,熟悉了一整个项目的开发、测试的流程。对相关的很多软件有了熟练的操作,包括数据库、服务器、系统、相关网络的搭建。不足的地方是,大部分开发都是在copy别人的代码,知其然不知其所以然,离开了项目自己就基本不会写代码了。


            第二个项目,是政府的项目,用的应该是SSH的,很正常的管理系统,包括正常的OA以及一系列的系统。在基础开发的技术难题不多,大都增删改查。难度在与UKey的集成,统一认证的集成,门户网站的建立,以及一些相关的插件集成。时间有一年左右,包括各种子项目的开发,以及后期常驻现场,用户测试、需求变更、系统维护、bug修改等。

            总结:第二个项目的开发,比第一个好了很多,会自己去实现功能,查询方法,使用api。不足的地方在于,对于一些技术实现,常遇问题没有很条理的整理记录,有些问题会多次查训,没有记住也没有记录。而且,对于框架的使用,仅仅是使用,对整个框架结构的把握及理解不是很透彻。


            第三个项目,是深圳市政府的项目,项目比较大,目标是全市机关单位的无纸化办公系统。可能由于项目经理经验的问题,或者项目前期的一些问题,项目做的不是很顺利,越做东西越多,人员流动很大。功能是一方面,公文、政务、督查,业务逻辑比较复杂,并且各单位需求不同,用统一的流程有些复杂。协调是一方面,整个项目参与方已经超过了10家,作为主导的中软,和各家开发协调很有难度。最重要的,我觉得是项目开始没有一个很好的规划设计,需求的不明确,没有软件设计,项目做起来没有安全感。这个项目在我看来是很有前途的一个项目,但是项目周期太短了,同时进行的东西太多了,导致连续多个月的加班。同时,开发人员的不稳定,能力问题,导致整个项目开发进程不理想。再加上平台是第三方,很多东西都得修改,平台的支持毕竟还是有限制的。平台封装比较高,在可视化界面可以直接操作数据库,写js等,并且语句都存储在数据库中,导致没有办法实现很好的代码版本控制,使得很多问题反复出现。项目现在还在进行中,基本功能的东西已经实现,但接口的东西太多了,套红、签章、正文编辑、文件导入导出、移动办公(pad)、邮件系统、短信通知系统、二维码打印、CA认证、即时通信、数据迁移等等。需要多方支持,觉得进度缓慢,实现困难。

            总结:第三个项目还没做完,给我的最大感觉就是乱,因为人员问题,我是在最忙乱的时候加入的,做了一个月的需求、两个月的测试、一个月的数据迁移,从这就可以看出组织者无法让人员固定在一个岗位,这样很影响工作的效率。身为一个开发人员,该系统框架无法给我安全感,做出来的东西被人改动很多都无法发现,因为svn无法控制数据库的版本。我在这个项目寻找一个上升的方向,在项目组各个小组体验后,对今后的项目管理可能会有很大的提升。项目虽然肯定有无法预料的问题,但应该条理清晰,做好任务分解,人员调配。基本的项目规范,制度都应该在项目开始时定好,需求更是重中之重。项目虽然不能说失败,但从项目中很多的坑,可以学习到很多的经验,在以后的开发工作中,可以避免很多的问题。


            其次

            总结下当前个人遇到的问题。

            个人属于比较纠结的,应该算是有选择恐惧症。现在想的问题很是纠结,看不到未来的方向。


            1、这个行业是否能干下去,是不是应该回家。

            软件这行能做几年,可以一辈子干下去么,对于今后的发展是否合适,自己是不是应该回家,是不是应该去创业等等的问题,纠结着我。


            2、开发是否适合自己一直干下去,这行是否有上升的空间。

            虽然是开发出身,但是知道自己有几斤几两。正常的开发肯定是没有问题的,一些简单的技术问题还是能解决的,但是对于技术的深度,技术的学习,没有很强烈的兴趣,没有追求技术的心,那么意味着在干几年依然还是开发,没有什么前途。那么是不是就的寻找自己的方向,第一个肯定就是项目管理了,经过多年的开发,在开发中有很多的问题让我很不爽,需求的反复变更,项目初始没有规范导致后期难以维护,身为有强迫症的我,简直无法忍受。虽然自己也不一定能做到,但是总想挑战下。第二就是设计了,作为开发,做了两年其实基本没见过啥是设计,基本都是直接拿着需求就开发了,框架的结构是项目定好的,功能的设计基本都是自己搞的,作为科班出身,一直认为设计很重要,并且对于自己的思维有一定的信心。第三就是需求了,与人交流,不仅仅看的是表面的功能,关键看的是他们要实现什么。第四软件测试,经过快两个月,觉得不是很适合我,多次重复的工作对于我来说是坚持不下来的。那么就应该朝着多交流、多总结的方向去努力。


            3、跳槽的问题。

            来这做外包已经快三年了,在这待得比自己公司长的多,关系网基本全在这,公司的各种领导也多次让我跳槽入职,但我一直纠结与在不在北京待、要不要回家、辞职太麻烦的事情,以及北京公司有很多麻烦的事情,外协都可以不用参加,工资方面的差距也大都体现在五险一金上。工作快三年没有跳槽,在周围人中绝对是奇葩,同学大概不少都是我两倍工资了,我还是不知道应该怎么办。而且做了三年的政府、军队管理,跳槽互联网的工作觉得难度很大,继续又觉得没什么前途,纠结中。


            最后

            今后的我,要多总结日常工作中的问题、经验,努力找到自己的定位,多学习努力。虽然不知道乱七八糟写了一堆啥,但是感触还是比较多的,难得,以后要多回忆了。

    展开全文
  • 明确入行的目的 很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为...

    在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。

    明确入行的目的

      很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS学习群727474737,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路



       如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心了。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本,大部分公司都会在需要的时候才招聘这类人员;在没有订单的时候,一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。


    而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应届毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应届生可以节约成本。

           所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。

    选择合适的工具

      JAVA、C#、PHP、C++、VB……10多种热门的开发语言,哪一种最有发展潜力呢?其实开发语言只不过是一个工具,“与其分散进攻,不如全力一击”,无论是哪一种开发语言,只要您全力地去学习,到有了一定的熟悉程度的时候,要学习另一种的语言也是轻而易举的事情。开发语言主要分为三大类:

      1. 网络开发

      现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。

      2. 企业软件开发

      JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。

      3. 系统软件

      C语言、C++、Objective-C这些软件更多是用在系统软件开发,嵌入式开发的方面。


      当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。但所以在刚入门的时候,建议您先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。

    明确发展方向

      当您对某种开发语言已经有了一定的了解,开始觉得自己如同“行尸走肉”,成为一个开发工具的时候,那您就应该要明确一下自己的发展方向了。


      平常在公司,您可以看到做UI层的开发人员大多数都有20多岁,他们充满干劲,而且没有家庭负担,在两年前ASP.NET MVC 、Silverlight等刚出现的时候,他们可以在晚上回家的时候买几本书或者直接上网看看,研究三五个星期以后,对需要用到的技术就已经有一定的了解了。

    而年过30的人多数是已经成家了,他们每天9:00点上班唯一的希望就是快些到6:00点,能回家吃饭。吃完饭只想陪孩子玩一下,看看孩子的功课,对新增的技术缺乏了学习的欲望。


    所以很多接近30岁的程序员都有着一种逼迫感(包括30岁时候的我自己),再过几年应该怎么办?这时候,您就更应该明确一下目标,努力向自己的发展方向前进了。归纳一下,可从下面几项里选择适合自己的一条道路:

    1. 从技术向业务过渡

      在国外,很多发达国家都很重视人才,一个高级的程序员与一个Project Manager收入相差一般不超过15%。但中国是世界上人口最多的国家,国内人才众多,所以人才滥用的情况经常可以看到。


    一个小公司的开发部里面经常会见到新面孔,但PM却不会常换。因为做老板的对技术是一窍不通,依他们看来只到拉住PM的心,那技术方面方面就能搞得定,至于技术部要换人,他们根本不需要费力气去管。


    所以从一个技术员过渡到一个PM是向前发展的一个选择,但开发人员也需要知道,要成为一个PM不单单是使用技术,而更重要的是对管理方面的认识。一个PM主要的工作是组织团队,控制成本,管理业务,控制项目进度,与客户进行沟通,协调工作,定期进行工作报告等。


    所以要成为一个成功的PM更要重视组织能力,PM必须能提高团队的积极性,发挥团队所长,在有限的开发资源前提下为公司得到最大程度上的利润。成为一个PM后,通常不需要直接接触技术开发,而着重管理的是业务发展,但PM对技术也需要有一定的了解(在下曾经为PM对技术了解的必要性写过一篇文章,得到很多支持但也惹来不少的争议)。


    在这里我还是要强调自己的观点:要成为一个成功的PM最重视的是管理能力,但对技术也应该有足够的了解,因为这是与团队成员沟通的桥梁,只有这样才能与整个团队的成员有着紧密的结合,让团队成员感觉到他们自己存在的意义,从而调动团队的积极性,而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件!

    2. 从程序员向技术管理发展

      其实一个Team Leader的职责与Project Manager相像,但Team Leader更着重于技术开发方面,通常一个大型项目都会有一两个开发团队由Team Leader带领,负责开发核心部分,而其它部分分派给不同开发小组或者分派给外包公司。


    在网上常看到几句话,贴切地形容了PM与TL的区别:“技术人员乐于被领导;但他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。


    管理是客观的,没有个人感情因素,它假定被管理者没有思想和感受,被告知要做什么和该如何做。领导是引领、引导,它激励人们达成目标。领导力是带有强烈个人感情色彩的,它不是你能命令的,也不是你能测量评估和测试的。”


      无论是PM与TL,对业务与技术都要有深入的了解,只是PM更侧重于业务的管理,盈利的多少,风险的大小等等,而TL则侧重于项目的成本,开发的难度,软件的架构等技术方面的问题。在某些人眼中,技术与管理就像鱼与熊掌,不可兼得,但依在下看来,两者却是秤不离砣,密不可分。只要及时提升自己对技术与管理的认识,不断地向深一层发展,要从程序员提升到技术管理人员只是时间的问题。


    打个比方,一个普通的.NET程序员,开始可能限制于ASP.NET的页面开发,但一旦他有了发展之心,他自然会对ASP.NET MVC、Silverlight、WinForm、WPF这些UI的开发手法感到兴趣,学习不需要多少时间,他可能就会认识这些UI开发只不过是一些工具,其实在开发原理上没什么区别。


    接着他就会向深一层的通讯模式进行了解,认识TCP/IP、Web Service、WCF、Remoting这些常用到的通讯方式,这时候他可能已经感觉到自己对开发技术有了进一步的了解。进而向工作流、设计模式、面向对象设计、领域驱动设计、面向服务开发等高层次进发,最后成为技术的领导者。


    上面只是一个比喻,但要注意的是,在学习的时期必须注意的是与同事之间沟通,很多的开发人员喜欢独来独往,开发的项目总想一个人搞定,不受外界的干扰。但要明白,就算你有天大的本事,一项大型的项目也不可能由你一个人全扛着。所以团队的合作性与同事间的沟通是必要的,这也是成功一个TL的必要条件。

    3. 单方面向技术发展

      能成功进行技术开发的尖端人才,这是在下最向往的工作,却也没本事登上这个位置。很多从事开发的人都会认为,业务总会带着“金钱的味道”,老板从来不管开发是否合符开发原则,是否经过必要测试,他们只会在客户面前无尽地吹嘘,项目到期能成功交货,只要不出什么大问题那这个项目就算成功了。


    其实我们也要明白:开发项目最终目标是为了赚钱,在开发过程中对项目成本的限制和效率的控制这也是必须,所以这才需要管理人员对项目进行管理。


    但开发人员也很想避开这“金钱的尘嚣”,全心投入到技术的世界当中。所以对技术有着浓厚兴趣的人,往往会深入地研究某一项技术,成为技术上的精英。


    但在这里说一句令人心淡的话:中国已经属于是世界上第二大经济体同盟国,但国民生产总值主要来源于第三方加工产业方面。中国可以说是人才济济,但却在高新产业上却比发达国家落后。


    这几年的确看到我们国家在高新科技上有着质的飞跃,但跟欧美发达国家还有着一段距离。所以想在中国成为尖端技术的人才,无可否定比在国外要难。依在下看来,要想成为尖端的开发者,必须对C、C++、汇编语言、嵌入式开发、Windows API、Linux API这些底层技术有着深入的了解。


    要知道解JAVA、.NET……等这些之所以称为高级开发语言,并不是指它们比C、C++、汇编语言更高级,而是指它们封装了C、C++等等的功能,更适合用于企业软件的开发,使开发变得简单。但如果要开发一些底层的软件,大型的系统的时候,就必须用到C、C++、汇编等开发语言,这是成功尖端人才的一个条件。


    确定未来的目标

      人是从历练中成长的,古人云:三十而立,形容的不是一个人的社会地位,经济来源,而是形容一个人对未来的目标,对人生的意向。要成为一个成功人,就应该早日为自己定下长期的发展目标,作为一个开发者也当如此。随着人的性格,取向各有不同,大家为自己所选择的路也有不同:

    1. 自立门户,勇敢创业

      快30岁了,很多人会认为要想真正赚得了钱,就应该自立门户,为自己创业建立一个基础。像北京、上海、广州这些一级城市,要买房子,一手楼基本要在2万~4万元/平方米左右,而在一家普通的IT公司当上一个项目经理,基本收入一般都在1.5万~3万之间(除非在大型的跨国企业内工作,那另当别论)


    要买一间100平方米左右的房子,就算不吃不喝也几乎要10年的年薪,所以选择自主创业,是很多IT开发人员的一个未来目标,想要达到这个目标,就应该更多地把业务作为重点。


    不可否认的一件事,在中国社会里很多时候讲的是“关系”,即使这30年的改革开放使中国的经济蓬勃地发展起来,但几千年来留下的歪风还是不能完全的磨灭。所以想要创业的人事建议你要多跟客户打好关系,与合作伙伴保持互利互动的模式,这将有利于日后事业的发展。

    2. 急流勇退,退居二线

      这也是不少人的选择。很多人在有了家庭以后,感觉到压力太大,人的一生并非只有事业,他们想把更多时间用于对亲人的照顾,对孩子的关心上。所以很多人会选择一份像系统分析、系统维护、高校教师、专业学院讲师这一类的工作。收入稳定,而且往往没有一线开发人员那么大的压力。

    3. 不懈努力,更进一步

      无论你是一个Project Manager或者是Team Leader,如果你想继续晋升一级,那还是会两极分化的。从一个PM到一间公司的管理层,那所面对的事件会有很多变化。


    一个公司的总经理,要管理的不再是一到两个项目的成本,而是整个部门的运作,整间公司的业务流程,所以要肩负的任务会更重。在下曾经有一位上司彭博士,他是企业的最高领导人,年薪超过三百万,而且在报纸杂志上也曾经亮过相。


    平常只会在某些会议上轻轻地亮下相,说两句讲词,平常的公司运作与业务管理都不需要他直接执行。这并不是说一个作为管理层很清闲,因为他们要面对的是更多的社会关系,与公司合作企业的联系上。这跟一个PM的工作有很大的区别,所以要从一个PM晋升到管理层,那可是要付出更多的努力与汗水。


      如果要从Team Leader上升为一个技术总监,那工作的方向也有所改变。像之前所说:一个TL可能更重视的是技术层面,讲求与团队之间的互动合作性,更注重的是开发的完善。而一个技术总监就无需要直接参加某个项目的开发,而注意的是开发的效率与成果,如何合理使用有限的开发资源,控制开发的风险和可能带来的效果。

    发展感受

      经历了8年多时间,在下从一个程序员到一个项目经理,之间经过很多的曲折,但因为每一个人的际遇都有所不同,所走的路也有不同,正所谓条条大路通罗马,成功的路不止一条,在下也不想令各位误解,而只想为大家说一下我的发展方向。


    如果您是一位开发人员,“程序员->架构师->Team Leader(Project Manager)->技术总监”是一条不错路,这也是在下选择的路。在我国,想要进一步提升自己,无论你想是以技术为重点还是以业务为重点,都离不开管理二字。


    在一些大型的企业,一个团队往往会配备一个PM与一个架构师,尽管两个人负责的任务各有不同,但你会看到一个架构师的收入往往不如一个PM,PM往往是这个团队的核心领导者,是关键人物。因为公司能否赚钱,PM有着重要的作用。


    PM与TL并没有绝对的区别,而且在一些中小型企业,一个开发团队只有3~5人,一个TL往往会兼备业务处理、成本控件、架构设计、开发管理等多项任务。所以在下会把Team Leader与Project Manager定于同一层次,一个公司的老板往往不会知道团队的架构师、程序员是何人,而只会向PM询问项目的进度,所以只有晋升到这个层次,才有机会进一步提升管理能力,让自己有上升的空间。


    至于要成为一个技术总监,那要求就不再单单是对单个项目的管理,而应该更则重于新兴技术的引用,开发资源的合理利用,对开发项目敏捷性的处理等等,对此在下也在试探当中,未敢多言。


    与编程牵手 和代码共眠 从程序员到技术总监

    从业IT十年,从程序员成为技术总监,现在回头看一看,这条路也伴随国内的IT一起风雨兼程10年,对IT技术由其是IT的纯软件开发这一块,向即将要从事软件技术研发的朋友谈一谈我的看法:


    一.认清当前IT形势,选择合适的技术方向和技术起点

    估计大家都多多少少知道,这个IT行业知识的更新很快,竞争很急烈.

    如果你对自己以后发展的方向在从业前有一个清析的计划或认识,相信你会比别人走得更好,走得更远,赚的钱也更多...呵呵

    IT软件从业的方向,一般都会有这些机会:产品售前(市场,业务),产品开发(编码,设计,测试),产品售后(支持,实施),产品管理(项目管理等)


    A.产品售前(市场,业务)

    要从事这一块的工作,主要是在软件开发的前期(无产品),或者合同签订前期(有产品).

    一般要求对相关的业务和技术都要求很高,这可不仅仅是要求人际关系,交际能力.

    要想别人买你的产品,你得以专业的产品品质为后台,以专业的谈吐,专业的技术和专业的业务理解能力来取胜.

    从业者要求:


    要求从业者要有一定的社会经验,技术经验或业务经历,或一定的社会圈子和交际能力.

    建议:

    刚刚从学校毕业的朋友或不符合上面条件的朋友最好要考虑清楚了.当然这世上没有什么绝对的东西,就看你自己了.

    现实情况:


    据我所了解的,作这一块的都会是公司一些高层(有关系,有经验)和业务专家或特殊背景的人员等.

    B.产品开发(编码,设计,测试)

    这一块的工作,当然是IT从业大军的主力了,但也得要考虑清楚.

    如果你要作设计师,或测试,最好先作一段时间的编码,

    一个好的设计师是不可能不精通相关技术平台的!

    国外好的测试人员也几乎是从开发人员中选出来的,基至是软件开发高手.


    a.代码编写

    在这一个职业选择范围内最好是从代码编写开始.当然你也可以先作测试,看看人家是怎么写代码的是如何来作这个软件的,

    借用人家的测试经验也可以,以后有机会再来编一段时间的代码也行.


    有时自己去写一个软件也可以,所以作编码和测试都是一个双向交互的.而不是编码在前测试在后的.

    作代码的编写最好自己先看看别人的软件,或由一些高手带着指导一下,现在技术的学习都不成问题,关健是要连成一条线来学习和思考就会有一定的局限了.


    所以要熟悉整个的项目流程或业务流程不是靠个人编码或在培训班学一下就能解决的,个人的技术学习和培训班大部分只能解决技术的学习问题,但作软件不仅是要技术呀


    三分技术七分业务说得不为过,业务的学习也是一个开发人员所要必备的,如果你在不熟悉业务细节之前建议你不要急着去写代码,那样肯定会是对以后软件的影响很大.先要熟悉一下业务.


    所以软件开发人员掌握一门技术平台和语言是必备条件但同时也必须要有一定的业务知识,这样才是一个合格的软件开发人员.当然精通软件编码,懂设计,熟悉业务,熟悉软件项目开发流程的软件开发人员是优秀的,那是高级研发人员的必备条件.

    如果你才入门或转行或刚毕业,建议从基础的代码编写开始,跟着高手或找一些成熟的项目多学习,


    b.软件设计

    当然这个职业要求行业的经验,技术经验都要有一定的基础,薪水一般也会高很多,所以也是一些开发人员热烈追逐的目标.但一个好的设计师不是一二年所能练就的,精通编码,熟练设计模式和公司所采用的技术平台,熟练一些设计理论并实际多运用,熟练公司业务,其实这个层面的压力也最大,一个好的软件在设计上的比重几乎要占到七成.

    建议刚毕业的朋友或软件初学者不要在这一块来凑热闹,即使你作成了设计师,但在我眼中看来你也不是一个合格的设计师...当然你有这个能力来作设计师就要恭喜你了.


    c.软件测试

    熟练软件测试的各种理论或实际运用,也要熟悉编码技术及相关的技术平台,熟练掌握业务.

    软件测试中一般都会有:

    单元测试,要求你熟练开发技术进行跟踪调试,也就是白盒测试了

    集成测试,对整个项目流程的测试,要求掌握业务知识,对设计的软件能作功能上的测试或压力测试等 ,属黑盒测试

    确认测试,对业务要很熟悉,测试软件是否完全满足了客户的业务需求.


    总体建议:

    1.熟练一种技术平台,熟悉一种业务

    刚入门的朋友很容易犯的一个毛病是,熟练:VB,VC,.NET,JAVA,C++,C,Dephi,PB,几乎市场上要用的他全部会,唉,如果我看到他的简历上有这么一句话,这个人肯定不会在我考虑的范围了.

    现在全球用得最广最多的技术平台体系也就三大体系:

    sun的J2EE技术体系(JAVA):在高安全性,高性能上更胜一步,中高端市场上用得多

    微软件的技术体系(C++,.NET,c#,VB):在中,低端市场占绝对优势,也是全球个人电脑操作平台用户最多的.

    CORBA技术体系统(一种分布式技术体系和标准),


    全称:Common Object Request Broker Architecture:公共对象请求代理结构,可以用不同的编程语言写成,运行在不同的操作系统上,存在于不同的机器上。

    一般介于底层和上层管理软件之间,

    其他的还会包括底层开发:C,汇编,属纯底层的开发,当然要求技术的起点和业务背景更强,最好是学的专业:电子电气,嵌入式行业,机械制造,数据采集等...


    看中你想要从事的技术体系,选好一门语言工具,好好上路吧...:)

    永远要记住:你什么都想学,你什么都学不精

    2.从基础入手,不要好高鹜远,眼高手低,要与实际结合

    B.产品售后(支持,实施)

    这一块对于开发技术的要求来讲不是那么明显,主要工作会在软件开发后的工作,跟客户打交道多,但更多要求体现在对业务的把握和客户的交际上.


    有些软件产品业务比较成熟,如果参与这一阶段的工作,可以快速学习很多的业务知识,积累客户交往的经验

    建议:刚入门或刚毕业的朋友,可以在这个工作上多选择,等待时机成熟,立马杀入软件的开发或设计阶段,当然,这一块的工作作得好也不容易,如果适合你作,

    工作环境或工资都不错你就大可不必多想了...

    C.产品管理(项目管理等)

    这一块的工作主要体现在管理上,当然适合有一定经验或管理能力的人员来担当,

    最后的技术从业方向总结:

    技术型:先选择好一种技术平台,熟练一种开发语言和数据库...专业专注的搞几年再说

    技术+管理型:如果你有一定的技术经验了,并且人际交往,管理能力不错,你就可以向这个方向发展

    技术+业务型:精通一种技术平台,精通一种业务,好好搞,这种人才最受欢迎...


    管理型: 如果你有一定的社会经验,从业经验,如果人际交往,管理能力还可以,老板也喜欢,就搞这个

    业务型(市场):如果你对业务很感兴趣,跟客户的交往等也不错,你可以选择了,有适合的专业技术就更能锦上添花。

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS学习群:727474737,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。







    展开全文
  • 开发经验(一)

    2019-05-20 11:02:31
    最近开发一个小系统,遇到了一下点自己没有处理好,在这里记录下来。 第一个就是在设计系统的时候先提供一个业务接口A,在提供一个查询接口B。接口B的功能是查询接口A的执行结果的。开始的设计中当其他系统在调用A...

    最近开发一个小系统,遇到了一下点自己没有处理好,在这里记录下来。

    • 第一个就是在设计系统的时候先提供一个业务接口A,在提供一个查询接口B。接口B的功能是查询接口A的执行结果的。开始的设计中当其他系统在调用A接口的时候会返回我自己平台的流水,然后凭此流水来调用B接口。可是这样会有一个问题,就是我自己平台在在返回信息的时候网络出现异常了,调用方收不到我返回的信息,就没法查询了,只能再调用一次A接口。这样其实不好的。应该让调用方在调用A接口的时候将他们平台的流水上送过来,然后凭调用方平台流水来查询。这样就算出现上面情况也能查询,类似于银联接口、人行接口、政通连连等都是如此。使用第二种情况需要我自己这边判断一下调用方流水重复性,这里会有并发问题,可以通过数据库的唯一性索引处理,让它报错。当然可以用redis或者直接在查询的Java 方法上加锁。
    • 在实体类上有统计字段,比如某一个实体类上有总次数,成功率,平均耗时等字段。这些字段按理说应该是从流水表里查询出来的。但是我当时用的 jpa ,这种查询不好处理,所以我把这些信息定义在了实体中,然后每调一次业务就做一次更新操作,但是这样在一个tomcat线程中数据库操作会比较多比较耗时,然后在代码中用单独一个线程池来处理这样tomcat线程可以立即释放。但是这样处理还有一个问题就是并发的时候多个线程来更新数据库同一条记录。这样的话就只能在Java方法上加同步锁了,因为如果使用数据库事务的隔离级别,我担心查询实体方法也会被阻塞,而查询实体方法是在tomcat线程中的。可就算是这样处理了,在多机的情况下依然会有问题。因为Java加锁只在一个jvm里面有用。
    展开全文
  • java开发经验分享

    2017-12-11 12:03:53
    参考《开发管理规范》 "看上去"专业能促进代码质量。越是难看的代码,在它的演化过程中会越来越差。因为当你看到你要bugfix的代码很乱,那么在bugfix的时候一般也会草草了事。一个方法有400行,在修改这个方法的...

    一、 编码


    1. 约束自己,规范编码习惯

    充足的代码注释、标准缩进的格式、注意命名规范。参考《开发管理规范》

    "看上去"专业能促进代码质量。越是难看的代码,在它的演化过程中会越来越差。因为当你看到你要bugfix的代码很乱,那么在bugfix的时候一般也会草草了事。一个方法有400行,在修改这个方法的时候大家不会在意再加上几十行代码。因为它看起来很差,它就是很差,我没必要美化它。反过来说,如果待改的代码很整洁很规范,那么修改者也会比较小心。

    2. 避免冗长的方法和类

    应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。

    3. 不要向标准输出写无用数据

    System.out.println(); 此语句在程序中随处可见,都是在调试时使用的,在程序正式运行时也没有将其去掉,结果就是日志中有大量的无用数据,不仅使得日志不易分析,也增加了系统的开销。

    如要调试可用LogWriter,将WEB-INF/ini/merpserver.iniloglevel设为4

    4. 调用方法前注意参数校验,判断参数是否为空或无意义的值

    5. 使用对象前,检查对象是否为空

    if(names!=null&&names.length>0){

    String[] nameArray = names.split(‘,’);

    }

    if(userEn!=null){

    String name = userEn.getName();

    }

    6. 避免过多过常的创建Java对象

    尽量避免在经常调用的方法、循环中new对象,由于系统不仅要花费时间来创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围内,最大限度的重用对象,最好能用基本的数据类型或数组来替代对象。

    7. 尽量避免随意使用类成员变量

    当某个对象被定义为stataic变量所引用,那么gc通常是不会回收这个对象所占有的内存的。此时类成员变量的生命周期与类同步,如果类不卸载,那么该对象会常驻内存,直到程序终止

    8. 减少对变量的重复计算

    for(int i=0;i<list.size();i++)

    应该改为

    for(int i=0,len=list.size();i<len;i++)

    并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快

    9. 避免不必要的创建对象

    A a = new A();

    if(i==1){

    list.add(a);

    }

    应该改为

    if(i==1){

    A a = new A();

    list.add(a);

    }

    10. 原则上循环里面不要声明对象,一律在循环外面声明

    for(int i=0;i<size;i++){

    String title = “标题”;

    }

    改为

    String title = null;

    for(int i=0;i<size;i++){

    title = “标题”;

    }

    11. 尽量在finally块中释放资源

    程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。

    12. 使用StringBuilderStringBuffer进行字符串连接

    StringBuffer提供了同步机制,所以并发线程访问是线程安全的,适合多线程。

    StringBuilder没有提同步机制,所以线程不安全,适合单线程,但如果是单线程的话,要比StringBuffer快。

    13. 遍历HashMap使用entrySet

    当需要遍历HashMap的时候,请尽量使用entrySet,而不要用keySetentrySet的效率要比keySet高,实际上使用entrySet是只需要遍历一次hash,即将keyvalue的映射关系放入到entry中,再取之;而keySet需要两次遍历hash,第一次取所有的key,第二次用key去取出对应的value

    Iterator iter = hashMap.entrySet().iterator();

    while (iter.hasNext()) {

    Map.Entry entry = (Map.Entry) iter.next();

    String key = String.valueOf(entry.getKey());

    String val = String.valueOf(entry.getValue());

    }

    14. 尽量缓存经常使用的对象

    尽可能将经常使用的对象进行缓存,可以使用数组,或HashMap的容器来进行缓存,但这种方式可能导致系统占用过多的缓存,性能下降。

    推荐参考《开发指南》,使用EHCache

    15. 使用统一的工具类

    使用hanwebcommon.jar中的通用方法,具体参考《开发指南》

    使用项目中已经存在的工具类,不要重复创造功能近似的类和方法,如果必要可进行扩展

    如:接收参数使用Convert.getParameter(request, 参数名);

    16. 减少不必要的空格和空行,参考《开发管理规范》

    17. java代码中不要出现黄色警告。注释或删除未使用的变量;保存时去掉多余的import

    18. 前台接收Stirng类型参数,要进行跨站脚本和sql注入过滤

    Convert.getParameter(request,"keyword","",true,true);

    19. 不要在jsp中实现业务逻辑,放到类中去完成

    分层设计实现了软件之间的解耦;便于进行分工;便于维护;提高软件组件的重用;便于替换某种产品,比如持久层用的是hibernate,需要更换产品用toplink,就不用改其他业务代码,直接把配置一改;便于产品功能的扩展;便于适用用户需求的不断变化。

    20. 避免在循环体中使用try-catch ,最好在循环体外使用try--catch 块以提高系统性

    21. oracle大字段操作

    先插入一个空的clob类型 empty_clob(),然后再单独更新clob字段

    InsertSql insql = new InsertSql( strTableName ); 

        insql.addString("vc_name", name);

        if (("oracle").equals(SysInit.getM_strDB_Type())){

         insql.addClob("vc_adress");

         insql.addClob("vc_path");

        }else{

            insql.addString("vc_adress", address);

            insql.addString("vc_path", path);

    }

    boolean bl = Manager.doExcute(strAppID , insql.getSql());

    if(bl){

    if (("oracle").equals(SysInit.getM_strDB_Type())){

    String[] strFieldValue = {address, path};

    String[] strFieldName ={"vc_adress","vc_path"};

    Manager.doClob(strAppID, strFieldName, strFieldValue, strTableName, " WHERE i_id = " + getMaxId());

    }

    }

    22. 使用统一的<!DOCTYPE>,保证不同浏览器下的页面兼容

    建议使用:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    23. HTML结构要完整、正确

    标准的HTML文档结构:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <title>Insert title here</title>

    ……

    </head>

    <body>

    ……

    </body>

    </html>

    其它:

    <ul>

    <li>……</li>

    <li>……</li>

    </ul>

    <table>

    <tr>

    <td>……</td>

    </tr>

    </table>

    24. HTML标签要完整

    标签名称及属性统一使用小写,标签要成对出现,如:

    <div id=”search”>………</div>

    不用于包含内容的标签,可在标签结尾使用“/”标记结束,如:

    <input type=”text” name=”username” value=”tony” />

    <br/> 

    25. 标签属性值必须用双引号包住

    26. HTML代码使用标准缩进

    27. 脚本每一条语句都要以分号结尾

    28. 具有独特性、不需要重复使用的样式,使用内嵌样式:

    <div style=”title”>标题<div>

    能够重复使用的样式,在样式表中定义:

    <li class=”menu”>菜单</li>

    页面内使用的样式,使用内嵌样式表:

    <style type="text/css">

    .menu{

    color:black;

    font-size:13px;

    }

    </style>

    多个页面公用的样式使用链入外部样式表:

    <link href="../global.css" rel="stylesheet" type="text/css" />

    29. 页面内使用的脚本函数,在head中定义:

    <script type=”text/JavaScript”>

    function checkForm(){

    ……

    }

    </script>

    重复使用的脚本函数或代码较多的脚本,写到外本脚本文件中,在head中链接:

    <script type=”text/javascript” src=”../checkform.js” />

    不影响页面本身展示的脚本可考虑放在body结束的位置调用,如广告代码:

    ……

    <script type=”text/javascript” src=”../adv.js” />

    </body>

    30. 风格统一,保存时要对代码进行格式化,Ctrl+Shift+F

    31. 养成程序优化的意识

    现在我们经常遇到的一个问题是,程序在开发阶段,执行的完全正常,找测试人员测试也没问题,但是一到上线后,性能马上出问题了,运行速度像蜗牛,客户不堪忍受,为什么?简单的说,开发人员自测,估计也就几条数据,测试人员测试,估计也就几十上百条数据,一般的程序代码,在这个数量级,性能瓶颈根本就表现不出来。但是上线后,客户的数据一般都上升到10000级别的,如果程序代码中没有做到细微之处都很严谨的话,问题就马上暴露出来了。

     

    二、 数据库


    1. SQL语句中保留字、函数名要大写,表明、字段名全部小写

    如:SELECT vc_name,vc_sex,i_age FROM user WHERE i_id = 100 AND i_type = 2

    2. 使用标准SQL语句,防止数据库兼容问题

    3. 循环里面(包括循环调用方法内)避免过多操作数据库

    4. 选择最有效率的表名顺序

    ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询那就需要选择交叉表(intersection table)作为基础表交叉表是指那个被其他表所引用的表

    5. 注意WHERE子句中的连接顺序

    ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾

    6. SELECT子句中避免使用*

    ORACLE在解析的过程中会将'*' 依次转换成所有的列名这个工作是通过查询数据字典完成的这意味着将耗费更多的时间

    7. 减少访问数据库的次数,尽量批量操作数据库,如批量删除

    ORACLE在内部执行了许多工作解析SQL语句估算索引的利用率绑定变量 读数据块等

    8. 避免在WHERE子句中使用innot  inor 或者having

    可以使用 exist not exist代替 innot in

    9. 用WHERE子句替换HAVING子句

    避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤这个处理需要排序,总计等操作如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。

    10. 用好数据库事务

    事务是指作为单个逻辑工作单元执行的一系列操作。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

    Transaction ts = null;

    try{

    ts = new Transaction(appId);

    boolean bl = ts.execute(sql);

    if(bl){

    bl = ts.commit();

    }

    if(!bl){

    throw new Exception();

    }

    }catch(Exception e){

    if(ts!=null)

    ts.roolback();

    bl = false;

    }

    11. 注意SQL执行效率,考虑单表记录10W以上的运行效果

    setup中,日志显示级别为警告以上时,执行时间超过300msSQL语句,会在日志中输出warning

    12. 索引

    参考《开发管理规范》

     

    三、 项目开发


    1. 需求:

    1) 需求最终需要开发人员在产品中实现,开发不合理的设计会浪费时间,开发技术无法实现的设计带来最大的痛苦:失败。所以,开发人员要重视需求以及需求评审,提出自己能够想到的所有异议;

    2) 开发人员不但要做好需求分析,还要做出精确的估计。因为编码工作保质保量的按时完成需要多方的准备工作,技术难点需要进行充分的技术预言,不熟悉的依赖平台或类库要进行熟悉;

    2. 计划:一栋楼很难估算重量,但是一块砖头可以精确估算重量。一个项目的时间很难准确的估计,但把项目开发划分为不能再进行分割的模块功能点,对每个点的估计是可以更精准的估时的,由此由上至下,由下至上,可以得出近乎准确的开发时间。

    3. 设计:

    1) 一图胜万言,模块结构以及流程等很难用用文字描述,即使用文字描述出来也很难看懂,所以在设计中,要善用用图;

    2) 详细设计过程中有思考的痛苦,繁琐的痛苦,但是绕过这些痛苦,编码期间将会面临更大的痛苦,要以快乐的心态面对。

    4. 编码:

    1) 对于一个实现可以有很多解决方案,花些时间精力选取你认为最好的解决方案可以总体上提高工作成效,往往还可以得到用户更好的体验效果;

    2) 细致认真严谨的工作即是对工作负责,更是对自己负责,让这些成为习惯。任何一次,任何时候所进行的编码工作,在逻辑、风格、简单有效等方面都尽可能的做到最好,既能更好为公司实现价值,同时更有利自己在技能,岗位的进步;

    3) 简单是美,在有效的前提下,越是简单的处理方法越是珍贵的,代码编写也是,简单的代码便于理解维护,同时不容易产生错误

    4) 慎做改动,当然不是说不做改动或不鼓励改动,而是不做仓促、草率的代码改动。没有洞察全局,考虑全面,而仓促进行的改动往往没有达到改动的目的却带来了其他问题

    5) 模块的性能不是减少一行或几行执行代码所能提高的,性能的优化首先是从算法上考虑,降低时间复杂度,然后从执行逻辑入手,减少循环执行代码的执行次数

    6) 关键地方要打印日志输出到文件中,在运行过程中不断检查日志,发现任何异常都要检查原因并修改

    5. 测试:

    1) 事出有因,任何bug都是由于代码的疏漏造成的,利用排除法或跟踪调试代码等方法找到疏漏所在;

    2) 遇到自身模块相关问题首先检查自己,相互推诿只会浪费时间以及减弱在其他同事对你的信任;

    3) 站的高看得远,不同的视角有不同的风景。遇到比较难解决的问题而苦苦没有思路时,转换思路或把问题的考虑范围放的更广一点,往往可以找到解决方案

    4) 功能提交测试前或bug修复提交验证前,开发人员都要自己详细的测试一下,验证无误再提交。(参考附录2--测试常见问题)

    6. 其它:

    1) 善于及时的沟通。在项目的整个流程过程中,遇到他人的问题或自己解决不了的问题,切忌堆在自己心里,要及时找问题解决方进行沟通,寻求解决方案

    2) 善于发现并学习别人的长处。作为开发人员,我们在追求接近完美的同时,也需要学会欣赏别人的长处,发现别人的优点,并学习别人的优点,转化为自己的潜质,这样,我们才可以进步的更快,更全面

    3) 善于帮助他人解决问题以及进行知识经验的分享,更有利于自己的提高,同时还可以获得他人的尊重


    四、 关于测试


    1. 在整个项目计划中,测试时间安排的合理性,对测试阶段的情况应作充分预计,不可为了赶发布点而忽略质量。

    2. 务必清楚产品包、更新包、bug包的提交规范。具体请参照《开发规范手册》。不要出现测试过程中提交多个bug包,或者提交安装包给测试人员更新的情况。

    3. 提包时请先检查,路径是否正确、文件是否完整、配置文件是否应该提交,源代码修改记录描述是否完善。之前经常出现,提包不检查就直接提交来测试,导致出错后环境不断地还原或者重建新的环境。CVS使用不熟悉,提交文件反复出错。

    4. 产品质量需要严格控制,自己承认是问题的情况下,请不要试图和测试商谈希望可以不被追究。

    5. 请注意提高修改bug的质量,目前,修改一个bug而引发更多的bug的情况特别多。

    6. bug修改完成后,在提交测试前请自己先验证通过后再提交,请不要修改完成后不验证就直接提交给测试人员,防止导致bug被反复reopen的情况。

    7. 原则上不允许不通过CVS而直接提交文件给测试人员调试问题、寻找原因。如果确有必要,测试人员可以协助调试,但次数不宜过多,防止测试环境版本难以控制。

    8. bug是否存在的衡量标准以测试环境为准,不建议出现“我这边是好的”这样的解释。

    9. 修改bug时请修改完整,可能会有多个小问题提交在一个BUG里面,BUG修改时多个小问题的地方均需修改。

    10. 更新文件必须通过配置发布,无论是否经过测试都不允许直接发给项目或直接更新客户服务器

     

    五、 开发环境


    1. Eclipse内存溢出、崩溃、无响应、启动慢

    1) 建立多个workspace

    2) 将workspace中暂时不用的工程close

    3) 修改eclipse配置文件eclipse.ini,参考知识库:

    -Xms512m

    -Xmx512m

    -XX:PermSize=96m

    -XX:MaxPermSize=96m

    2. Eclipse统一字符集为UTF-8

    1) 进入Eclipse->Window->Preferences->General->Workspace界面,在“Text file encoding”中选择“other”并在下拉列表中选择“UTF-8”,并点击【Apply】后,点击【OK】确认保存

     

    2) 修改jsp文件头部

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

    将字符集改为“UTF-8

    3) 进入Eclipse->Window->Preferences->Web->JSP Files界面,将“Encoding”属性修改为“ISO 10646/Unicode(UTF-8)

     

    4) 已建立的项目,右键点击项目名称,进入Properties->Resource界面,选择“Text file encoding”编码为“UTF-8

    3. 打开Eclipse内存监视及回收插件

    进入Eclipse->Window->Preferences->General界面,勾选“Show heap status”,点击【Apply】后,点击【OK】确认保存。Eclipse右下角,会显示JVM内存使用情况。

     

    点击垃圾桶图标,可进行手动回收

    4. 设置断点,进行调试

    1) 行断点

    行断点是最普通的断点。只要在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止

     

    2) 条件断点

    条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。

    在断点处点击鼠标右键,选择最后一个"Breakpoint Properties"

    断点的属性界面及各个选项的意思如下图,

    3) 变量断点

    断点不仅能打在语句上,变量也可以接受断点

    下图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和条件断点的设置是一样的

    4) 方法断点

    方法断点就是将断点打在方法的入口处,方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈

    5) 类型载入断点

    可以查看什么时候载入的类

     

    6) 异常断点

    当异常发生时,代码会停在异常发生处,定位问题时应该比较有帮助

    打开Breakpoints视图,点击按钮,增加异常断点

    5. 修改代码字体

    进入Eclipse->Window->Preferences->General->Appearance->Colors and Fonts界面,选择Basic->Text Font,点击右侧Edit…】,选择。点击【Apply】后,点击【OK】确认保存

     

    6. Eclipse快捷键,见“附录1—Eclipse快捷键”

     

    六、 Linux


    见《Linux_命令详解》

    常用命令:

    cd 变换工作目录

    cd / 返回根目录 cd ../ 返回上层目录

    ls 显示指定工作目录下的内容

    mv 将一个档案移至另一个档案,或将数个档案移至另一个目录

    mv /data/m3 /root 将/data/m3转移到/root目录下

    mkdir 创建指定的目录名

    mkdir /root/temp 在root目录下创建temp目录

    rm 删除档案及目录

    rm –rf 文件/文件夹 彻底删除文件/文件夹

    rmdir 删除空的目录

    kill 终止进程

    kill -9 2342 杀掉进程标识号PID2342的进程

    ps 报告进程状况

    ps –ef|grep java 查看java进程

    tail 从指定点开始将指定的文件写到标准输出

    tail –f nohup.out 实时读取日志nohup.out的更新内容

    su 变更为其它使用者的身份

    su – user1 切换到用户user1

    cp 复制

    cp config.xml /data/ 将config.xml文件复制到/data/目录下

    reboot 重启服务器

    halt 关闭服务器

    top 显示目前正在系统中执行的程序

    free 显示系统内存与swap使用的情况

    java –version 查看JDK版本

    chromd 777 /temp/runthread.sh 赋予用户/temp/runthread.sh最大权限

    cat /dev/null > nohup.out 清空日志nohup.out文件内容

    df –hl 查看磁盘空间与使用情况

    du 显示目录下所有文件并列出文件大小

    pwd 查看当前所在路径

    export lang=zh_CN 修改环境变量lang值,解决linux乱码

    ./startup.sh tomcat启动

    nohup ./startWeblogic.sh & weblogic启动(不挂断运行,防止注销后weblogic停止)

    ./startServer.sh server1  websphere启动

     

    七、 常见问题


    1. jsp出现getOutputStream() has already been called for this response

    jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好造成的。

    jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后有一段这样的代码

    finally {

        if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);

    }

    这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的!所以会出现以上这个异常。

    out.clear();

    out = pageContext.pushBody();

    2. xml加载错误

    1) weblogic下,xml没有以xml文档方式加载,而是按照文本方式展现,导致出错,例如高级编辑器或树会出现加载错误

    解决方法:在web.xml文件中增加

    <mime-mapping>

        <extension>xml</extension>

        <mime-type>text/xml</mime-type>

    </mime-mapping>

    2) 网络问题,导致无法访问DTD(文档类型定义,作用是定义 XML 文档的合法构建模块)

    解决方法:删除DTD声明,或者指向服务器本地DTD

    3) XML 声明通常在 XML 文档的第一行出现。XML 声明不是必选项,但是如果使用 XML 声明,必须在文档的第一行,前面不得包含任何其他内容或空白。动态产生的xml文档,开头产生了空白行,造成错误

    解决方法:输出xml内容之前,用 out.clear(); 清空缓存

    3. 中文乱码

    1) jsp页面乱码,头部指定字符集为UTF-8

    <%@page language="java" contentType="text/xml; charset=utf-8"%>

    2) 数据库乱码,指定数据库字符集为UTF-8,同时dbconfig.xml的连接字符串中设置字符集为UTF-8

    3) 中文参数乱码。tomcat下修改server.xmlHTTP的Connector的URIEncoding属性为UTF-8js传递中文参数,用encodeURI() 进行编码

    4. jPage脚本错误,检查proxyUrl指定的jsp页面的输出内容。输出的内容为脚本片段,要符合javascript语法。

    dataStore为字符串数组,需要过滤dataStore中元素里的单引号

    replaceAll("\'","\\\\'").replaceAll("\r\n","");

    输出形式如下:

    dataStore = ['第一条\'记录\'内容', '第二条”记录”内容', '第三条记录内容'];

    5. ApacheTomcat整合,session丢失

    参考知识库:

    http://km.hanweb.com/viewthread.php?tid=1515&highlight=tomcat%2B%E5%80%AA%E7%87%95%E9%9C%9E

    http://km.hanweb.com/viewthread.php?tid=978&highlight=tomcat

    http://km.hanweb.com/viewthread.php?tid=1127&highlight=%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

    6. zip文件解压错误,提示找不到方法

    应用中的ant.jar同中间件自带的文件冲突,将/WEB-INF/lib/ant-1.7.0.jar改名为ant.jar 覆盖到中间件的目录下

    weblogicweblogic/bea/weblogic81/server/lib/ant

    websphereWebSphere/AppServer/lib

    7. 脚本错误,使用浏览器调试工具

    IE8及以上版本,使用浏览器自带的开发人员工具,按F12进行脚本调试

    FireFox使用Firebug插件进行调试,按F12进行脚本调试

    8. 中间件报错如下:java.sql.SQLException: IO异常:The Network Adapter could not establish the connection,先后重启数据库和中间件无效

    1) 用“telnet 数据库IP 数据库端口”命令检查网络是否畅通

    2) 检查是否超过了数据库最大连接数

    参考http://km.hanweb.com/viewthread.php?tid=1448&highlight=%E8%BF%9E%E6%8E%A5%E6%95%B0

    3) 检查是否有防火墙

    4) 数据库监听日志大小是否超过2G/data/oracle/product/版本号/network/log/listener.ora

    9. 日志中报too many open files错误

    linux默认打开文件的最大数是1024,解决方法:

    cat /proc/sys/fs/file-max 命令查看打开文件的最大限制数

    用echo 65536 > /proc/sys/fs/file-max 命令修改

    编辑/etc/sysctl.conf文件,编辑行fs.file-max=65536

    编辑/etc/security/limits.conf,增加行* - nofile 65536

    10. 导入XML文件失败

    Editplus检查xml文件是否是UTF-8编码


    八、 附录1Eclipse快捷键)


    快捷键

    功能

    Ctrl+1

    快速修复

    Ctrl+D

    删除当前行

    Ctrl+Alt+

    复制当前行到下一行(复制增加)

    Ctrl+Alt+

    复制当前行到上一行(复制增加)

    Alt+

    当前行和下面一行交换位置

    Alt+

    当前行和上面一行交换位置

    Alt+

    前一个编辑的页面

    Alt+

    下一个编辑的页面

    Alt+Enter

    显示当前选择资源的属性

    Shift+Enter

    在当前行的下一行插入空行

    Shift+Ctrl+Enter

    在当前行插入空行

    Ctrl+Q

    定位到最后编辑的地方

    Ctrl+L

    定位到某行

    Ctrl+M

    最大化当前的EditView

    Ctrl+/

    注释当前行,再按则取消注释

    Ctrl+O

    快速显示 OutLine

    Ctrl+T

    快速显示当前类的继承结构

    Ctrl+W

    关闭当前Editer

    Ctrl+K

    参照选中的Word快速定位到下一个

    Ctrl+E

    快速显示当前Editer的下拉列表

    Ctrl+/(小键盘)

    折叠当前类中的所有代码

    Ctrl+×(小键盘)

    展开当前类中的所有代码

    Ctrl+Space

    代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)

    Ctrl+Shift+E

    显示管理当前打开的所有的View的管理器

    Ctrl+J

    正向增量查找(按下Ctrl+J,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)

    Ctrl+Shift+J

    反向增量查找

    Ctrl+Shift+F4

    关闭所有打开的Editer

    Ctrl+Shift+X

    把当前选中的文本全部变为大写

    Ctrl+Shift+Y

    把当前选中的文本全部变为小写

    Ctrl+Shift+F

    格式化当前代码

    Ctrl+Shift+P

    定位到对应的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

    Alt+Shift+R

    重命名

    Alt+Shift+M

    抽取方法

    Alt+Shift+C

    修改函数结构

    Alt+Shift+L

    抽取本地变量(可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)

    Alt+Shift+F

    Class中的local变量变为field变量

    Alt+Shift+I

    合并变量

    Alt+Shift+V

    移动函数和变量

    Alt+Shift+Z

    重构的后悔药

     

    编辑

    快捷键

    功能

    作用域

    Ctrl+F

    查找并替换

    全局

    Ctrl+Shift+K

    查找上一个

    文本编辑器

    Ctrl+K

    查找下一个

    文本编辑器

    Ctrl+Z

    撤销

    全局

    Ctrl+C

    复制

    全局

    Alt+Shift+

    恢复上一个选择

    全局

    Ctrl+X

    剪切

    全局

    Ctrl1+1

    快速修正

    全局

    Alt+/

    内容辅助

    全局

    Ctrl+A

    全部选中

    全局

    Delete

    删除

    全局

    Alt+?

    Alt+Shift+?

    Ctrl+Shift+Space

    上下文信息

    全局

    F2

    显示工具提示描述

    Java编辑器

    Alt+Shift+

    选择封装元素

    Java编辑器

    Alt+Shift+

    选择上一个元素

    Java编辑器

    Alt+Shift+

    选择下一个元素

    Java编辑器

    Ctrl+J

    增量查找

    文本编辑器

    Ctrl+Shift+J

    增量逆向查找

    文本编辑器

    Ctrl+V

    粘贴

    全局

    Ctrl+Y

    重做

    全局

    查看

    快捷键

    功能

    作用域

    Ctrl+=

    放大

    全局

    Ctrl+-

    缩小

    全局

    窗口

    快捷键

    功能

    作用域

    F12

    激活编辑器

    全局

    Ctrl+Shift+W

    切换编辑器

    全局

    Ctrl+Shift+F6

    上一个编辑器

    全局

    Ctrl+Shift+F7

    上一个视图

    全局

    Ctrl+Shift+F8

    上一个透视图

    全局

    Ctrl+F6

    下一个编辑器

    全局

    Ctrl+F7

    下一个视图

    全局

    Ctrl+F8

    下一个透视图

    全局

    Ctrl+W

    显示标尺上下文菜单

    文本编辑器

    Ctrl+F10

    显示视图菜单

    全局

    Alt+-

    显示系统菜单

    全局

    导航

    快捷键

    功能

    作用域

    Ctrl+F3

    打开结构

    Java编辑器

    Ctrl+Shift+T

    打开类型

    全局

    F4

    打开类型层次结构

    全局

    F3

    打开声明

    全局

    Shift+F2

    打开外部javadoc

    全局

    Ctrl+Shift+R

    打开资源

    全局

    Alt+

    后退历史记录

    全局

    Alt+

    前进历史记录

    全局

    Ctrl+,

    上一个

    全局

    Ctrl+.

    下一个

    全局

    Ctrl+O

    显示大纲

    Java编辑器

    Ctrl+Shift+H

    在层次结构中打开类型

    全局

    Ctrl+Shift+P

    转至匹配的括号

    全局

    Ctrl+Q

    转至上一个编辑位置

    全局

    Ctrl+Shift+

    转至上一个成员

    Java编辑器

    Ctrl+Shift+

    转至下一个成员

    Java编辑器

    Ctrl+L

    转至行

    文本编辑器

    搜索

    快捷键

    功能

    作用域

    Ctrl+Shift+U

    出现在文件中

    全局

    Ctrl+H

    打开搜索对话框

    全局

    Ctrl+G

    工作区中的声明

    全局

    Ctrl+Shift+G

    工作区中的引用

    全局

    文本编辑

    快捷键

    功能

    作用域

    Insert

    改写切换

    文本编辑器

    Ctrl+

    上滚行

    文本编辑器

    Ctrl+

    下滚行

    文本编辑器

    文件

    快捷键

    功能

    作用域

    Ctrl+S

    保存

    全局

    Ctrl+P

    打印

    全局

    Ctrl+F4

    关闭

    全局

    Ctrl+Shift+S

    全部保存

    全局

    Ctrl+Shift+F4

    全部关闭

    全局

    Alt+Enter

    属性

    全局

    Ctrl+N

    新建

    全局

    项目

    快捷键

    功能

    作用域

    Ctrl+B

    全部构建

    全局

    源代码

    快捷键

    功能

    作用域

    Ctrl+Shift+F

    格式化

    Java编辑器

    Ctrl+\

    取消注释

    Java编辑器

    Ctrl+/

    注释

    Java编辑器

    Ctrl+Shift+M

    添加导入

    Java编辑器

    Ctrl+Shift+O

    组织导入

    Java编辑器

    运行

    快捷键

    功能

    作用域

    F7

    单步返回

    全局

    F6

    单步跳过

    全局

    F5

    单步跳入

    全局

    Ctrl+F5

    单步跳入选择

    全局

    F11

    调试上次启动

    全局

    F8

    继续

    全局

    Shift+F5

    使用过滤器单步执行

    全局

    Ctrl+Shift+B

    添加/去除断点

    全局

    Ctrl+D

    显示

    全局

    Ctrl+F11

    运行上次启动

    全局

    Ctrl+R

    运行至行

    全局

    Ctrl+U

    执行

    全局

    重构

    快捷键

    功能

    作用域

    Alt+Shift+Z

    撤销重构

    全局

    Alt+Shift+M

    抽取方法

    全局

    Alt+Shift+L

    抽取局部变量

    全局

    Alt+Shift+I

    内联

    全局

    Alt+Shift+V

    移动

    全局

    Alt+Shift+R

    重命名

    全局

    Alt+Shift+Y

    重做

    全局


    九、 附录2(测试常见问题)


    1. 表和触发器的创建等sql语句更新执行问题,即sql语句不正确;

    2. 新增、编辑信息时,对字段输入的类型(数字、字母、日期等)、长度、范围不作校验,如果校验不对需要在处理之前要有相关的提示信息;

    3. 新增、编辑信息时,当某一字段输入有问题,提交时,系统作出错误提示,但是其他正确的字段信息均被清空;

    4. 新增和编辑修改信息的要求不一致;例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.

    5. 对新建完成的信息记录打开编辑时显示不正确;

    6. 新建信息时新增的空记录错误地保存成功;

    7. 新增信息列表后,信息列表排序没有规律,如正序或者倒序,而是无序地插入;

    8. 录入后自动计算的字段要随着别的字段修改更新(如单科成绩变后,总成绩也变);

    9. 输入较长的信息后,导致界面变形,浏览器分辨率大小撑大或者内容被遮挡

    10. 信息输入开头、结尾的空格、null值判断显示;

    11. 删除信息时,勾选部分信息记录进行删除时,系统错误删除了其他未勾选的信息记录;选择性删除一条信息记录和删除所有信息记录效果一样;

    12. 删除信息时,没有“删除确认”对话框直接删除了所有信息记录;

    13. 没有选择记录直接点击删除/修改按钮需要提示“请先选择记录”;

    14. 需要考虑删除的关联性,即删除某一个内容需要同时删除其关联的某些内容;

    15. 高级检索中的条件检索无论什么条件均可以检索出所有信息列表;

    16. 高级检索完成后条件仍然存在,影响了外面的空检索不能正确检索出所有信息;

    17. 查询条件名称与信息列表及信息编辑页面相应的字段名称完全统一;

    18. 一个模块的excel表格错误地被导入另一个模块;

    19. 新增和导入的文件内容字段判断不一致,或者导入时不作判断;

    20. 功能实现时,隐性需求未能实现,例如:用户输入四科成绩后,总成绩还是需要用户手动输入; 

    21. 返回按钮不能实现返回功能;

    22. 信息保存提交后系统给出“保存/提交成功”提示信息,但是系统不能自动更新列表显示;

    23. 上传图片、文件系统未正确更新;

    24. 上传文件、图片时,对文件、图片的类型、大小系统没有正确作控制;

    25. 对于范围的查询应该采用全闭的形式,例如选择范围是1-3,应该表示大于等于1并且小于等于3

    26. 操作完成后系统没有正确提示,不知道是成功了还是失败了,不知道操作完成的情况;

    27. 系统显示的提示信息描述不正确、与实际结果不一致;例如系统弹出错误提示信息但是操作成功;

    28. 信息列表中如果某个字段显示过长用“…”或者分行显示;

    29. 大文本框输入应该可以自动换行显示、控制字数等;

    30. 界面只读的时候(查询、统计、导入)等,应当不能编辑;

    31. 对于添加的时间控件,未根据实际情况作出控制,即选择的时间应当符合实际条件;并且从****时间控件选择时没有先后顺序;

    32. 文本框等控件的控制禁止了键盘的输入,但是没有阻止鼠标及快捷键的操作,例如测试的时候可以将一段代码或非法输入使用鼠标操作进行复制粘贴操作;

    33. 用户注销或者cookie失效后,有页面正常显示导致的错误操作;

    34. 与实际常识逻辑上不符合;例如:大小月、二月各自的实际天数;

    35. 多种条件冲突而导致结果矛盾,例如:考勤系统中出现过的,又缺勤又迟到的情况;

    36. 调试信息遗留(后台打印与文件开发环境配置,多余文件等)

    37. 用户、机构与角色的关联关系没有控制正确,例如系统没有给用户a分配相应角色权限时,但是此用户a在系统中错误地有操作权限;

    38. 用户登录后自己可以错误地删除自己的账号;

    39. 时间控件需作判断时以服务器时间为基准界面显示,字体样式、对齐方式、按钮风格和布局,和公司其他产品统一;

    40. 界面风格、布局和公司其他产品保持统一,遵守以下规则:易用性、规范性、帮助设施、合理性、美观与协调性、菜单位置、快捷键组合、安全性考虑,例如:

    1) 按钮风格、对齐方式不一致;

    2) 文本框的样式、对齐方式不整齐;

    3) 界面排版上下不对齐、左右按钮大小不一致;

    4) “当前位置”界面中显示的模块名称和实际模块名称不一致;

    5) 界面中信息列表新增、删除、排序后,左侧栏目树不能自动刷新;

    6) “当前位置”界面中显示的当前模块位置不正确,模块层次丢失,表示上下层关系的箭头多个界面不一致;

    7) 界面风格、样式不一致;

    8) 界面完全展现后,滚动条使用的不恰当;

    41. 功能按钮名称与其页面中的导航要一致,如图8-1中这种显示是错误的,应该两处的叫法一致。

     

    42. 弹出对话框的背景色不能是白色,如图8-2中这种显示是错误的。

     

    43. 滚动条的显示,如图8-3所示,有横着的滚动条,却没有竖着的滚动条,是错误的。

     

    44. 页面样式显示,如图8-4所示,是错误的录入日期列所占宽度应该减小,标题列加宽,录入日期只需显示日期不需显示时间,显示内容与实际描述不一致。

     

    45. 页面折行显示,如图8-5所示,。是错误的

    46. 边框线条粗细一致,如图8-6所示,是错误的,整体效果中线条有粗有细。

     

    47. 页面中的空行过多,如图8-7所示,错误的。

     

    48. 页面中的中英文状态下的符号混用,如图8-8所示,是错误的。

     

    49. 页面中的文本框尽量对齐显示,文字部分尽量对齐显示,如图8-8所示,是错误的。

    50. 两行内容不要靠太紧凑,如图8-9所示,是错误的。

     

    51. 前台固定必须要显示的图片,当后台未上传图片时,需要默认给一个图片显示。

    52. 随着分辨率不同页面不折行显示。

    53. 表格框上下要对齐,如图8-10所示,是不正确的。

     

    54. 页面按钮显示名称,与鼠标放在按钮上显示的名称要一致。

    55. 按钮位置要对齐,如图8-11所示,是错误的。

     

    56. 必填项要用红色的*标注。

    57. tab键对文本框有效。

    58. 查询结果为空时,如图8-12显示是错误的。建议有友好提示信息。

     

    59. 页面文字描述,如图*.zip文件描述不准确。正确描述为: zip压缩文件

     

    60. 两层滚动条,如图8-14所示,是错误的

     

    61. 如图8-15的表现方式是正确的。


    展开全文
  • 上个月的实训课程是需要我们小组组队完成一个和区块链相关的积分链项目,涉及区块链,智能合约编写,后端,前端,大家开发经验都不是很多,踩坑很多,在此记录一下项目开发过程遇到的坑。自己是负责前端部分,所以就...
  • 软件开发项目管理经验总结

    万次阅读 多人点赞 2019-04-18 17:37:12
    这是我从事软件外包工作以来的项目管理经验的总结,编写文章的目的是为了回顾和总结自己的一些想法,如果其中有不足的地方大家可以一起讨论交流。 项目经理的职责 关于项目经理的工作职责有很多种说法,我自己是...
  • 开发经验

    2019-06-18 00:29:35
    1.确保数据的正确。错误的数据会导致很多意想不到的错误。
  • 项目上线总结记录 1. 需求评审与确认 当一个项目拿到手中,首先要了解的就是:这个项目是要做什么?实现哪些功能?面向的使用者是谁?它的实现的业务范围是什么?一般来讲,项目需求是由客户提出,作为开发者,...
  • java开发三年,总结一些经历与经验

    万次阅读 多人点赞 2018-05-09 03:51:09
    我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪个知识点今天又问了等等。四月中旬的时候,我就在构思要写一篇面经,...
  • 开发经验(漫谈)

    千次阅读 2016-07-29 07:43:52
    我没有快速学习的能力,我不得不在时间花费上非常谨慎。我希望尽可能地学习到有持久生命力的技能,即不会在几年内就过时的技术。只要占主导地位的计算模型体系不变,我们如今使用的数据结构与算法在未来也会以另外的...
  • 开发工具: Java 项目描述: 核高基重大专项课题该课题旨在建立国产中间件标准体系,进而在该标准体系指导下构建国产中间件参考实现与平台,从技术、产品与产业运作机制等方面探索适合国产中间件发展的一体化方案。...
  • 软件开发人员的简历项目经验怎么写?

    万次阅读 多人点赞 2012-10-14 12:46:13
    许多学习软件开发的学员不知道如何在个人简历中如何填写“项目经验”或“项目描述”,最近接触的一些学习Java的学生在简历中,往往项目经验及描述都只能寥寥几笔完事,这样的简历肯定是不吸引招聘企业HR的。...
  • 大数据开发工程师岗位分析

    万次阅读 多人点赞 2017-01-20 23:37:06
    最近一年大数据火爆异常,各种培训班开课广告满天飞,很多做开发的朋友也想转到大数据这一行,在投递简历的时候进场被几个岗位搞迷糊,他们是大数据分析师,大数据研发工程师,大数据建模工程师,大数据挖掘工程师。...
  • C++程序员发展方向

    万次阅读 多人点赞 2016-05-12 23:01:14
    笔者就近几年的互联网发展发展,通过在各大就业招聘网站上检索到C++职位的相关要求,归纳总结出几大发展方向。给正在成长的C++程序员一条指引,当然也只是个人整理,仅供参考
  • 开发经验和屁股的关系

    万次阅读 多人点赞 2014-10-26 11:53:55
    昨晚为CSDN俱乐部的同学们做了一个讲座《微博开发、云平台及一个微博...按照预先的准备,要讲如何在校积累开发经验,突然冒出了批评某些官员“屁股决定脑袋”的观点,也就将屁股和开发经验放在一起发挥了一下。  当
  • Linux开发的一些个人经验

    万次阅读 2017-11-04 20:51:43
    Linux开发的一些个人经验
  • Unity3D移动端实战经验分享

    万人学习 2018-10-22 21:38:02
    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。
  • 这篇博客是我在持续的开发以及维护项目中遇到的坑,并总结出做法,以备需要立项新项目需要注意的点。 1.字符串一定能提到语言包中就提到语言包,不要贪图方便写死在代码中或者写死在美术资源中 很多程序员喜欢...
  • C++程序员的职业生涯规划

    万次阅读 多人点赞 2017-03-07 18:58:25
    一、C++服务器程序员(流媒体后台,游戏后台,高性能服务器后台)  ...3. 对多线程环境编程有一定的理解,能独立完成服务器端模块的开发、维护和优化; 4. 熟练掌握MySQL数据库的开发维护、性能优化;
  • 软件开发人员的简历项目经验

    万次阅读 2016-12-22 18:05:27
    软件开发人员如何才能写好个人简历中的项目经验及描述呢?   首先你要知道招聘企业想从你的项目经验里的描述中获得什么信息?他们真的在乎你的项目用在了那一行业?为这个行业提高了多少效率吗?实际上对方...
1 2 3 4 5 ... 20
收藏数 772,355
精华内容 308,942
关键字:

开发经验