总结

java项目经验总结

时间:2021-02-02 19:36:41 总结 我要投稿

java项目经验总结

  java项目经验总结是什么?怎么写?以下是小编带来的java项目经验总结,希望对你有帮助!

java项目经验总结

  java项目经验总结【1】

  这是一次比较完整的团队合作项目,它要求团队各成员对系统的主体设计搭成一定的共识,这包括数据库设计,需求分析,以及其它一些细节,因此在编码之前的准备工作一定要充分。

  在设计之前,我们两组对于数据库的设计进行了激烈的讨论,最后在一些关键的问题上统一了意见。

  接下来的工作便是需求分析,具体结构设计,并制订小组项目详细计划,项目的进行将严格按照所制订的计划执行。

  然后小组成员对各自的数据库进行了设计,并且以数据字典的形式进行了共享。

  企业级人力资源系统分为十个子系统:机构编制管理、人员信息管理、人事档案管理、考勤管理、薪资福利管理、社会保障管理、招聘管理、合同管理、查询统计管理、系统管理。

  我负责人员信息管理子系统,这方面需要处理的业务逻辑比较少,表单比较多,要把握好与其它子系统的关联。

  员工基本信息表是与其它子系统关联的桥梁,大部分表都涉及到与基本信息表的外键关联。

  其中,职员编号(employeeId)是作为外键关联的字段,我给它设置了自增长。

  有人认为在企业里,职员编号应该是有一定规律的数字,而不应该设置自增长。

  这样的是想法很符合实际情况,后来我和两个组长讨论,认为自增长可以保证数据的唯一性,非自增长的主键在增加时可能遇到不可知的问题,并且其他组员的数据库已经设计好,改起来就麻烦了。

  因此最终职员编号采用了自增长。

  有了上面的共识,接下来的重要工作便是依次完成表的增删改查、数据校验。

  其中,分页和批量删除是我计划最后完成的部分,并且一定要完成。

  基本数据校验按各数据格式进行,例如手机号、e-mail等。

  另一方面要对职员编号与姓名的一致性,职员编号的存进行验证,这些通过DAO里面的方法实现,针对出错,用JS给出友好的提示。

  在做好基本功能的前提下,争取做出特色。

  我尝试写了Hibernate分页、批量删除的代码,最后都测试成功。

  同时加入了JS控件,对于一些有特殊格式要求的字段,防止用户填写错误(比如日期的填写格式为yyyy-mm-dd),使系统更加人性化。

  经过讨论,对员工基本信息主表及与其关联的所有表,配置级联删除。

  当主表信息被删除时,与之外键关联的子表信息同时被删除。

  回顾这段历程,遇到了一些瓶颈,例如批量删除时如何有效的处理选中的id,要明白它得到的是一个String[],需要转化成int[]就好办了。

  关于分页,我也是琢磨了好久。

  在网上看了不少实例,具体实现起来还是一头雾水。

  就在项目验收的前两天晚上,我决定自己写的试试。

  第一个方法是需要获取表里面总记录数count,按照套路执行hql,我这样处理了结果:

  count = list.size();结果出了问题。

  数据库里有6条记录,结果打印出count为1。

  在这里折腾了好久,后来打印list为[6],这下才明白list.size()得到的是list里元素的个数,这个元素是6 ,我需要获取的是元素的是值(基础知识薄弱)。

  明白这点就好办了,最后我是这样处理的

  String a = list.get(0).toString(); //获取list第一个元素(对象),并转换成String

  count = Integer.parseInt(a); //将a转换成int,得到count 这样做分页的第一步就完成了。

  第二天早上比较顺利的完成了剩下的代码并测试成功。

  相比网上的分页代码,总的来说我写的很容易看懂,至于它有什么问题目前还不知道。

  通过这次项目经验,我明白了只要想到了,就一定可以做到。

  不要畏惧,困难并不像想像中的那么可怕。

  一味的逃避将得不到真正的锻炼。

  要时刻和队友交流,分享成果。

  两个人总比一个人知道的多。

  java项目经验总结【2】

  一:学会如何读一个JavaWeb项目源代码

  步骤:表结构->web.xml->mvc->db->spring ioc->log->代码

  1、先了解项目数据库的表结构,这个方面是最容易忘记的,有时候我们只顾着看每一个方法是怎么进行的,却没有去了解数据库之间的主外键关联。

  其实如果先了解数据库表结构,再去看一个方法的实现会更加容易。

  2、然后需要过一遍web.xml,知道项目中用到了什么阻拦器,过滤器,拥有哪些配置文件。

  如果是阻拦器,一般负责过滤请求,进行AOP等;如果是监听机,可能是定时任务,初始化任务;配置文件有如 使用了spring后的读取mvc相关,db相关,service相关,aop相关的文件。

  3、查看拦截机,监听机代码,知道拦截了什么请求,这个类完成了怎样的工作。

  有的人就是因为缺少了这一步,自己写了一个action,配置文件也没有写错,但是却怎么调试也无法进入这个action,直到别人告诉他,请求被拦截了。

  4、接下来,看配置文件,首先一定是mvc相关的,如springmvc中,要请求哪些请求是静态资源,使用了哪些view策略,controller注解放在

  哪个包下等。

  然后是db相关配置文件,看使用了什么数据库,使用了什么orm框架,是否开启了二级缓存,使用哪种产品作为二级缓存,事务管理的处理,需要扫描的实体类放在什么位置。

  最后是spring核心的ioc功能相关的配置文件,知道接口与具体类的注入大致是怎样的。

  当然还有一些如apectj等的配

  置文件,也是在这个步骤中完成

  5、log相关文件,日志的各个级别是如何处理的,在哪些地方使用了log记录日志

  6、从上面几点后知道了整个开源项目的整体框架,阅读每个方法就不再那么难了。

  7、当然如果有项目配套的开发文档也是要阅读的。

  二:爬虫是如何实现的:

  获取规则url(正则表达式) -> 模拟请求(如httpclient get请求)-> 获取列表页html -> 获取信息页

  -> 发送请求 -> 信息页html -> 根据规则截取相应的字段信息 -> 对字段进行清理(如图片压缩) ->

  静态化(存储到数据库)

  三:架构文档

  开发项目是需要学会写架构文档,而不是只是做一个码农

  包含以下内容:

  1、模块分级,各模块关系,各模块负责人

  2、各模块时序图

  3、各模块表结构

  4、协议文档(接口文档)

  5、每个负责人工作计划

  下发任务后每个模块的负责人用开发工具画出自己的时序图,表结构和接口文档,最后汇总到总项目负责人处。

  四:其它

  1、数据库是否分表问题:用分表的方式管理表有时并不合理,如果读的压力高是不值得的,可能更慢。

  如果写并发高就行(以千万级别为准)。

  读是按缓存的,缓存密度在95%以上是比较保险的。

  读的优化:读单条信息,只需搜到这个id,然后直接从缓存中拿,缓存用id做缓存,查id的效率是很高的。

  2、CMS=模板+数据:可以通过只有一套自己的`模板(如用freemarker),发送请求获取json数据填入信息。

  CMS有模板通过把数据填入模板即形成一个网页。

  3、计算机浏览器的网页内容要在手机上查看,需要做到响应式HTML。

  4、如通过抓取网页内容放到app上显示,需要做的内容:图片大小自适应,内容尽量保真,校验内容是否丢失,链接需要替换的需要进行替换,html标签替换

  5、爬虫的核心是多线程的任务管理,抓取分页列表内容。

  6、微信公众平台上是如何绑定用户让用户只登录一次,下次不用登陆?

  java项目经验总结【3】

  Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:

  1、掌握项目开发的基本步骤

  2、具备极强的面向对象的分析与设计技巧

  3、掌握用例驱动、以架构为核心的主流开发方法

  没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法!

  关于基础知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。

  JavaSE

  ----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while

  ----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this、super

  ----异常处理:理解编译期错误和运行期错误的区别、Exception、RuntimeException、checked exception、unchecked exception、try、catch、finally、throw new XXXException、throws XXXException、异常处理的基本原则

  ----数组与集合:数组的定义和使用方法、Collection、List、Set、Map、ArrayList、HashSet、HashMap、Iterator、equals、hashCode、Comparable、Comparator

  ----常用类:String、intern、常量池、StringBuffer、java.util.Date、SimpleDateFormat、Regex(正则表达式)

  ----反射机制:Class、Method、Field、invoke、newInstance、BeanUtils(apache-commons)、PropertyUtils(apache-commons)

  ----输入输出流:InputStream、OutputStream、Reader、Writer、Adapter设计模式与原始流类、Decorator设计模式与包装流类、对象序列化和反序列化

  ----多线程:Thread、Runnable、sleep、wait、notify、synchronized、lock

  Servlet和JSP

  ----HttpServlet、doGet、doPost、HttpServletRequest、HttpServletResponse、request.getParameter()、request.setAttribute()、request.getAttribute()、request.getSession()、ServletContext、Filter、web.xml、tomcat、forward与redirect、http协议的无状态性、cookie、JSP Scope Object、、

  HTML与JavaScript

  ----你需要能够理解常见的网页标签、理解在网页中引入JavaScript的方法、以及JavaScript的基本语法与使用方法

  以上,就是你进一步学习Java所必备的基本知识。

  特别是一些个专业术语和名词,看到这些名词,如果你像看到亲爹一样亲切,那么说明你对Java的基础知识就很熟悉了。

  接下来是SSH:

  对于初学者来说,这三大框架被赋予了太多神秘的色彩,似乎它们是重中之重的知识!但是对于拥有多年Java开发经验的专业技术人员来说,对于那些Java牛人来说,却对这三大框架不太感冒!难道它们不重要吗?

  现在很多企业都在用这三大框架,所以很多企业也把掌握这三大框架作为招聘的必备条件。

  不可否认的是,也有很多大型企业没有用这三大框架,这些企业经过多年发展,自身已经有一定的技术积累,也形成了自己独特的技术框架体系。

  这三大框架既可以说很重要,也可以说不重要。

  说重要的原因在于:这三大框架对JavaEE开发中所存在的普遍的问题,提供了优美的解决方案,它们蕴含了这个行业中最NB的开发人员的努力和想法,所以,学习这三大框架,你就可以窥探到这些处于技术巅峰的牛人们究竟对一个问题是怎么想的,通过一种什么样的设计思路去解决问题的。

  所以,对于你来说,你没有太多项目开发的经验,经验是什么?经验就是你知道可能会遇到哪些问题,针对哪个问题可以有哪些解决方法,在某个情景下,哪种解决方法是较好的,哪种方法不太好等等!如果你没做过什么项目,你根本就不会去意识到你可能会遇到哪些问题,而这些问题往往又是非常关键的!解决得不好,会影响到你的程序的稳定性、可扩展性等等!三大框架就给初学者提供了了解你以后可能会遇到哪些问题,以及针对这些问题的解决方案!

  当你了解了这三大框架为什么是重要的,那么你也就能理解,为什么这三大框架也可以说是不重要的。

  如果你曾经开发过很多项目,你碰到了各种各样的问题,凭着你的技术功底,逐个击破了这些问题,在这些人眼里,三大框架(是不是还有N个框架?呵呵)都是浮云!

  你属于哪一种人呢?如果你没有太多项目开发经验,那么三大框架对于你来说就是非常重要的!而且,由此你也知道了该怎么去学这三大框架。

  对于三大框架的学习而言,着力点在于给你展示问题,并触发你自己主动的思考,我们鼓励你提出自己的想法,也许你的想法很白痴,但那毕竟是你自己的想法,如果你不知道牛人的想法,那你怎么知道自己的想法是很白痴的呢?在这种思想的碰撞过程中,你就会逐渐提高自己!所以,三大框架学完之后,你不应该只是看到一大堆配置文件,你不应该只是看到了一些Action,一些Service,一些映射文件,你不应该只知道session.save/update/,你不应该只是知道struts2中有一堆interceptor,你不应该只是看到一堆jar包……

  如果你只是知道拷贝一堆jar包,定义一系列配置文件之后,SSH三大框架就能够运行起来了,也可以给你干活了,那么,很悲哀的是,你仍然没有掌握三大框架的精粹!请你回答以下问题:

  Struts2:

  为什么每次请求都要创建一个Action对象?

  ModelDriven阻拦器的配置中refreshModelBeforeResult解决了什么问题?

  为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?

  请你给我谈谈ValueStack?

  Struts2是如何实现MVC设计模式的?

  Spring:

  你为什么要用Spring?

  请你聊一聊IOC/DI?

  什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理?

  把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行查询任务的方法定义为read-only?

  Hibernate:

  请你谈谈你对OR映射的理解?

  很多人说Hibernate不适合大项目,性能有问题,你是如何理解的?

  Hibernate为什么一定要定义一个数据库标识?

  为什么Hibernate建议你的实体类实现hashCode和equals方法?

  谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?

  谈谈你对Hibernate关联映射与数据库外键之间关系的认识?

  调用session.save()方法,hibernate一定会发出语句吗?谈谈你的理解

  调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解

  请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size

  配置了lazy=”true”一定会实现懒加载吗?

  请你谈谈Hibernate中的“N+1”问题

  请你谈谈Hibernate有哪些最佳实践?

  以上并非SSH中全部重点的问题,但它们能考察你能否灵活运用SSH框架!如果你能深刻理解这些问题,再配以合适的实战项目训练,你也会逐渐成为牛人!

  最后是项目开发能力:

  不管你是学Java还是别的技术,你的根本目的在于给客户创造价值!否则,你下大力气学习的东西,随着技术的进步和更新,很快就会过时!所以,技术的核心在于用技术创造有价值的成果!也就是说,客户需要什么,你就要用技术把客户需要的东西给他造出来!一个公司之所以要用各种福利条件极力挽留你,是因为你能够给公司带来极高的利益!那么,你有什么可以给公司利用的呢?公司最看重你的哪方面的能力呢?

  做项目需要的能力很多,其中最核心最基础的就是建模能力(现在最主流的就是面向对象建模!)。

  什么是建模能力呢?

  我给大家一个面试题:

  一个保险公司的保险卡管理模块:销售人员领取保险卡信息(保险卡数量、卡号、领取日期),然后直接销售给客户,销售完毕后,将保险卡信息录入保险公司系统内部(销售人员信息、购买人信息、购买的保险卡数量、卡号等),客户登录保险公司网站激活保险卡,需要填写(保险卡卡号、激活密码、被保险人信息、受益人信息)

  要求就是:如果这个模块交给你来做,你要怎么做?你要解决哪些问题?你可否画个图,给我描述一下你的想法是什么吗?

  这只是一个面试题而已,因为只有简单几句话,所以我把它放到这里,让大家感受一下所谓建模要解决什么问题。

  而业务领域的问题实在是太多了!也许一个几十上百页的需求文档才能把某个业务领域的问题描述清楚,而你的职责就是要把它们实现出来!

  某个公司要开发一个考勤管理系统,要求与现有的人力资源系统对接,你是主要的技术负责人,那么,你要做哪些工作呢?

  某ERP项目要实现一个排班管理模块,交给你去完成,你如何去完成呢?

  不要抱怨项目经理给你的信息太少(只有几句话),不要抱怨客户没有描述清楚他们的需求……你的价值就在于理顺所有的问题,用各种手段获得你想要的信息,按照一定的思路汇总,并在特定的时间里逐个解决它!

  你应该意识到学Java不是一个坦克大战、一个网络飞车、一个CMS、一个DRP、一个OA那么简单,你不要沉迷于那些技术细节(虽然也是有必要的,但不要转牛角尖),不要满足于实现了CRUD式的项目需求(虽然这是基础中的基础),在你的前方,永远有一个目标在那里,需要你去努力追赶!

  今后你将面对更加繁杂的需求,你学习项目的唯一目的,就是:学习如何将需求转化为实现,如何对需求进行分析,如何建立概念模型,如何理顺各种概念之间的关系,如何进行设计,如何选择合适的技术来实现你的设计方案,如何对你的实现进行测试,如何解决你所遇到的形形色色的问题(性能、需求变更等)。

  当你真正到公司里面从事了几年开发之后,你就会同意我的说法!

  利用Java找工作,需要的就是项目经验,项目经验就是理解项目开发的基本过程,理解项目的分析方法,理解项目的设计思路,理解项目的实现技巧,理解项目的测试方法,理解项目中各种问题的解决方案!

  所以,你该清楚你的目标了!

【java项目经验总结】相关文章:

java项目开发总结02-26

java实训项目总结报告02-26

学习经验总结08-26

java简历封面10-04

英语学习经验总结11-26

java离职证明精选09-28

java实习心得总结12-15

java简历自我评价12-07

java实践报告总结02-26