java项⽬开发经验总结,值得收藏!
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、Parameter()、
request.setAttribute()、Attribute()、Session()、ServletContext、Filter、l、tomcat、forward与redirect、http协议的⽆状态性、cookie、JSP Scope Object、<c:out …/>、<c:forEach …>
HTML与JavaScript
----你需要能够理解常见的⽹页标签、理解在⽹页中引⼊JavaScript的⽅法、以及JavaScript的基本语法与使⽤⽅法
以上,就是你进⼀步学习Java所必备的基本知识。特别是⼀些个专业术语和名词,看到这些名词,如果你像看到亲爹⼀样亲切,那么说明你对Java的基础知识就很熟悉了。
接下来是SSH:
对于初学者来说,这三⼤框架被赋予了太多神秘的⾊彩,似乎它们是重中之重的知识!但是对于拥有多年Java开发经验的专业技术⼈员来说,对于那些Java⽜⼈来说,却对这三⼤框架不太感冒!难道它们不重要吗?
现在很多企业都在⽤这三⼤框架,所以很多企业也把掌握这三⼤框架作为招聘的必备条件。不可否认的是,也有很多⼤型企业没有⽤这三⼤框架,这些企业经过多年发展,⾃⾝已经有⼀定的技术积累,也形成了⾃⼰独特的技术框架体系。这三⼤框架既可以说很重要,也可以说不重要。
说重要的原因在于:这三⼤框架对JavaEE开发中所存在的普遍的问题,提供了优美的解决⽅案,它们蕴含了这个⾏业中最NB的开发⼈员的努⼒和想法,所以,学习这三⼤框架,你就可以窥探到这些处于技术巅峰的⽜⼈们究竟对⼀个问题是怎么想的,通过⼀种什么样的设计思路去解决问题的。所以,对于你来说,你没有太多项⽬开发的经验,经验是什么?经验就是你知道可能会遇到哪些问题,针对哪个问题可以有哪些解决⽅法,在某个情景下,哪种解决⽅法是较好的,哪种⽅法不太好等等!如果你没做过什么项⽬,你根本就不会去意识到你可能会遇到哪些问题,⽽这些问题往往⼜是⾮常关键的!解决得不好,会影响到你的程序的稳定性、可扩展性等等!三⼤框架就给初学者提供了了解你以后可能会遇到哪些问题,以及针对这些问题的解决⽅案!
当你了解了这三⼤框架为什么是重要的,那么你也就能理解,为什么这三⼤框架也可以说是不重要的。
如果你曾经开发过很多项⽬,你碰到了各种各样的问题,凭着你的技术功底,逐个击破了这些问题,在这些⼈眼⾥,三⼤框架(是不是还有N个框架?呵呵)都是浮云!
你属于哪⼀种⼈呢?如果你没有太多项⽬开发经验,那么三⼤框架对于你来说就是⾮常重要的!⽽且,由此你也知道了该怎么去学这三⼤框架。对于三⼤框架的学习⽽⾔,着⼒点在于给你展⽰问题,并触发你⾃⼰主动的思考,我们⿎励你提出⾃⼰的想法,也许你的想法很⽩痴,但那毕竟是你⾃⼰的想法,如果你不知道⽜⼈的想法,那你怎么知道⾃⼰的想法是很⽩痴的呢?在这种思想的碰撞过程中,你就会逐渐提⾼⾃⼰!所以,三⼤框架学完之后,你不应该只是看到⼀⼤堆配置⽂件,你不应该只是看到了⼀些Action,⼀些Service,⼀些映射⽂件,你不应该只知道session.save/update/delete,你不应该只是知道struts2中有⼀堆interceptor,你不应该只是看到⼀堆jar包……
如果你只是知道拷贝⼀堆jar包,定义⼀系列配置⽂件之后,SSH三⼤框架就能够运⾏起来了,也可以给你⼲活了,那么,很悲哀的是,你仍然没有掌握三⼤框架的精粹!请你回答以下问题:
Struts2:
为什么每次请求都要创建⼀个Action对象?
ModelDriven的配置中refreshModelBeforeResult解决了什么问题?
为什么在l中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?
请你给我谈谈ValueStack?
Struts2是如何实现MVC设计模式的?
Spring:
你为什么要⽤Spring?
请你聊⼀聊IOC/DI?
什么是声明式的事务管理?为什么要使⽤声明式的事务管理?Spring如何实现声明式的事务管理?
把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的⽅法,即主要执⾏查询任务的⽅法定义为read-only?
Hibernate:
请你谈谈你对ORM映射的理解?
很多⼈说Hibernate不适合⼤项⽬,性能有问题,你是如何理解的?
Hibernate为什么⼀定要定义⼀个数据库标识?
为什么Hibernate建议你的实体类实现hashCode和equals⽅法?
谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?
谈谈你对Hibernate关联映射与数据库外键之间关系的认识?
调⽤session.save()⽅法,hibernate⼀定会发出insert语句吗?谈谈你的理解
调⽤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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论