MyException - 我的异常网
当前位置:我的异常网» Java面试 » 工作一年了,感到技术该更新了,可一时迷茫不知从何

工作一年了,感到技术该更新了,可一时迷茫不知从何做起,该怎么处理(2)

www.MyException.Cn  网友分享于:2015-08-26  浏览:10次

我不迷茫 就是感觉力不从心 尤其刚看到 TopCoder 高中生夺冠的新闻 无限感慨啊...
------解决方案--------------------
up
------解决方案--------------------
还是用到啥学啥吧,刻意的去学到时候也会忘


------解决方案--------------------
小弟 是一直慢慢的学习java+JSP 很多时候不用 就忘得也快
关键是 工作里面没有用到 很郁闷
------解决方案--------------------
送你一篇我正在写的一本电子书的第一张吧,仅供参考
序言言:步履江湖观大略
――从宏观上了解Web应用程序
现实因素是改变一切的根源――王兴刚。
进入九十年代中后期,随着互联网的兴起,人们强烈希望应用程序的使用,能够像浏览网页一样愉快。而传统的C/S结构应用程序,要求每一个使用者,必须在自己的计算机上安装一个客户端软件,没有这个软件,就没有办法访问位于服务器上的应用程序。因此C/S结构的笨拙,与广大人民群众日以增长的简单需求之间,产生了深刻的现形矛盾,因此,也就无法适应这个时代的历练,从而,渐渐地退出了程序开发的历史舞台。
应用程序与C/S结构一揖而别,转而投向了B/S的怀抱。应用程序的开发迎来了Web时代。作为Web应用程序领头雁的java,最开始的web应用,是以Applet(小应用程序)的方式出现的。当时的应用形式是,在服务器上发布的小应用程序,当被浏览器访问时,被下载到客户的计算机上运行。这就造成了安全上的隐患。比如,如果Applet(小应用程序)内部包含有数据库的Url,用户名,密码等敏感信息,当Applet被下载到本地以后,随便找个反编译工具,很容易地就能获取到Applet的原代码,甚至比一些垃圾程序员书写的程序更符合编码规范。当此之时,只要不是傻子都能看明白数据库的连接信息。这就等于告诉小偷:“我刚取了50万银子在家里放着呢,家里没有人,门没有锁,我也没有养狗的习惯!”。如果小偷不到你家去做客,那是他人品有问题。
仔细分析Applet的不安全性,我们发现,原因在于Applet是在客户端运行的。基于安全性考虑,人们希望java程序能从客户端走向服务器端。程序在服务器上运行,不被下载到客户端计算机上。此时出现的第一门技术是Servlet,它很好地满足了人们对java安全性的要求。但是接下来的问题是,由于Servlet对所有用于客户端显示的网页代码,都要在服务器端完成,也就是Servlet不但要完成服务器端流程的调度,还要负责页面的实现,而原本简洁的Html一旦在Servlet内部完成,就变得极其繁琐,这给开发过程带来了新的麻烦,严重影响了开发效率,从而影响了Servlet的大面积推广使用。
此后不久,Sun也终于认识到自己有点太CNN了,于是出于简化Servlet应用的目的,推出了新一代Web应用技术规范,这就是JSP规范。JSP通过在html内部嵌入java代码的方式,很好的解决了Servlet对页面显示的实现过于复杂这个难题,让web程序开发进入了一个崭新的时代。然而,倒霉的Sun公司又陷入了新的问题之中。什么问题哪,我们需要好好地思考软件开发过程中的“逻辑问题”。
就个人观点而言,一个web应用程序应该包括三个方面的逻辑,这就是:显示逻辑――负责页面的展现;控制逻辑――负责流程的调度,也就是调用哪个类进行数据处理,数据运算,调用哪个页面,将运算生成的数据显示出来。业务逻辑――这里指的就是复杂繁琐的商业运算和数据处理了。
通过对JSP的分析,我们发现,其Html部分应该负责的是页面显示的内容,属于显示逻辑的范畴,而java脚本,主要负责的是数据运算以及数据处理,应该是属于业务逻辑的范畴。而Jsp没有对这两种逻辑进行很好的划分,从而造成显示逻辑与业务逻辑交织在了一起(这就是所谓的耦合度过高),给程序的测试过程以及后期的维护造成了很大的不便。于是,Sun公司的伟大程序员们,开始伴随着使用者的抱怨和缭绕的烟雾,进行了深刻且细腻的思考。
后来有一天,当一群程序员在苹果树下放松神经的时候,忽然间,来了一阵大风,满树的苹果像冰雹一样砸到了他们的脑袋上,也砸开了他们的视野,新的应用方式诞生了,从此真正开始了java在web应用程序开发过程中的辉煌之旅,并且一直到今天,依然笑傲江湖,环球不败!那么他们思考的是什么哪?
他们发现,针对三种逻辑,JSP的强项在于页面显示,可以用于处理显示逻辑;Servlet的强项是流程调度,可以将JSP中大量用于流程调度的语句提取出来,转而交给Servlet来处理,这样控制逻辑的问题也很好地解决了;那么业务逻辑怎么办哪?JavaBean除了用来封装数据,也可以有方法的啊,为什么不用JavaBean的方法来处理业务逻辑哪,没有理由啊!那就用呗。于是乎,业务逻辑的处理问题,也找到了合适的解决方案(后来,随着编程思想和变成艺术的提高,JavaBean与普通java类之间的关系日渐模糊,人们也更提倡使用没有任何规范的普通java类来处理业务逻辑,并且给他起了个名字,以便更好地提倡这种思想,这就是POJO――普通java类)。于是三种逻辑,各得其所。此后,围绕三种逻辑,在不同复杂程度的业务系统中的应用,产生了两种模式:Model1(JSP+JavaBean)和Model2(JSP+Servlet+JavaBean)。Model1比较适合于小规模的系统,比如网站等。而针对复杂的企业级应用(比如金融系统,社保系统等),Sun公司推荐使用Model2。
Model2出现以后,人们于实际应用过程中发现,其中的jsp关注的是页面显示,Servlet关注的是流程控制,而JavaBean关注的是业务处理。这与传统的MVC非常类似,传统的MVC包括了三个方面的内容,模型,视图,控制器。模型:关注数据处理;视图:关注数据显示和报表处理;控制器:负责协调模型和视图。因此,人们开始认为,Model2是基于MVC的。就个人观点而言,如果只是进行网站的开发,还是Model1方便。原因是什么哪?Model2有些复杂。
随着现代社会的发展,商业规则的复杂程度,已经超过了人们的想象。而刁瞒的客户是不管这些的,他们给我们的时间总量是固定的。而软件公司在与客户相处的过程中始终处于弱势地位,是没有太多发言权的,原因很简单,因为公司要盈利,我们要赚客户的钱!
客户限定了时间,也就限定了项目的周期。针对一个复杂的系统,在总量一定的情况下,我们总是在寻求技术时间与业务设计时间的最佳配比。在项目周期固定的情况下,技术时间与业务设计时间是成反比的。两者此消彼长,如果用于技术处理的时间长了,那么业务设计的时间必然就要缩短,同理,如果用于业务处理的时间要增加,就必须缩短技术处理的时间。而在两者的选择过程中,我们不得不选择缩短技术时间,原因很简单,业务规则越来越麻烦,客户并不跟你摆事实,讲道理。而Model2,虽然很好地解决了三种逻辑的划分,可以应用于企业应用程序开发,但是过于繁琐,实现的手法过于粗略。好多基础性的服务没有为我们提供。比如,请求的分发,请求过程中数据的获取等等。于是人们希望应用新的方式替换Model2,或是简化Model2的应用。基于此,大量基于Model2的web框架,如雨后春笋般诞生出来。其中最优秀的就是Struts1和WebWork。后来,两者实现了新的融合,形成了Struts2。由于他们都是基于Model2的,而Model2是基于MVC的,于是人们认为,他们都是基于MVC思想而产生的。
Struts1是第一个成熟的基于MVC的web框架。他的出现使Model2的应用得到了大大的简化,我们将在此后的章节中学习它,并且会发现他的简洁和优美。Struts1简化了Model2的应用,但是只是解决了企业级应用系统的Web层问题。那么企业应用系统还有那些层哪,为什么要有这些层哪,这些层又是用什么方式解决更好哪?
MVC的出现,到今天,已经有40年的历史了,面对复杂的现代商业规则,他已经有些苍老,而用它来解决今天的问题,就好像把秦始皇从地下扣出来,然后给他一个遥控器,说一句:“哥们,把电视机闭了!”。估计这哥们肯定龙颜大怒,回敬你一句:“拖出去,毙了!”。那么既然MVC苍老了,谁还年富力强哪,答案就是分层体系架构!
下面我们来看看贯穿后继章节的分层思想。
一个好的应用系统,一般都是基于分层体系结构来完成的。分层体系结构大致如下图所示:

其中的显示层,对应于MVC的视图(V),控制层对应的是MVC的控制器(C),在后继的章节中,我们将其合并到一起,统称Web层(也有的书上称为展示层)。而Struts只是解决了这里的WEB层的技术实现。其它层又是些什么哪,应用那些技术来实现哪?

文章评论

编程语言是女人
编程语言是女人
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
一个程序员的时间管理
一个程序员的时间管理
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
那些争议最大的编程观点
那些争议最大的编程观点
为什么程序员都是夜猫子
为什么程序员都是夜猫子
如何成为一名黑客
如何成为一名黑客
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员都该阅读的书
程序员都该阅读的书
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
代码女神横空出世
代码女神横空出世
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
我的丈夫是个程序员
我的丈夫是个程序员
 程序员的样子
程序员的样子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老程序员的下场
老程序员的下场
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Java程序员必看电影
Java程序员必看电影
10个调试和排错的小建议
10个调试和排错的小建议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
我是如何打败拖延症的
我是如何打败拖延症的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员的鄙视链
程序员的鄙视链
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
漫画:程序员的工作
漫画:程序员的工作
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
旅行,写作,编程
旅行,写作,编程
中美印日四国程序员比较
中美印日四国程序员比较
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有