精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

細數Java十宗罪

開發 后端
Java開發人員還喜歡說:這個不應該由JDK或某某框架完成,而應該是由勇敢、勤勞、智慧的您來編寫實現的。以下都是我在開發Java項目時,遇到的一些問題,可能也有寫得不對的地方,望指正。遇到很多問題,一時間無法全部拿出來討論,就隨便列舉了幾條。

【糾正】非常抱歉,第1點關于"abc"=="abc"返回false是我搞錯了,在java里是返回true的,我沒有經過實驗就這么說了,非常抱歉。之所以會這么說,是因為不記得是哪一種,因為我使用了==進行了字符串的比較,結果并沒有返回我相要的結果,然后請教老人,老人們就訓誡道:***使用equals進行比較,而不要使用==,故有此感慨。

【正文】好吧,我知道看這標題很多人就忍不住要拍磚或表示不贊同了,我都接受。

我在遇到問題時,找一些搞Java朋友求助,有能解決的,我想說的是不能解決的情況下,他們大多會說:“你怎么能這么弄呢?這么搞是不行的,你首先在思路上就錯誤了,我們從來就不這么做。”,比如“我們一般很少用存儲過程,你用這么多存儲過程,我建議你使用hibernate代碼實現你的業務,而不是用存儲過程”,這個問題是在我遇到用hibernate調存儲過程時發生一些狀況后,我一個搞Java的朋友也無法解決時,他如此說道。

Java開發人員還喜歡說:這個不應該由JDK或某某框架完成,而應該是由勇敢、勤勞、智慧的您來編寫實現的。

以下都是我在開發Java項目時,遇到的一些問題,可能也有寫得不對的地方,望指正。

遇到很多問題,一時間無法全部拿出來討論,就隨便列舉了幾條。

[[33461]] 

Top 1:"abc"=="abc"返回的結果是False,很多初學Java的都要在這個問題很浪費很多時間,因為會非常自信的以為這里會返回true,根本不會想到原來問題出在這里。網上看到有貼子討論過這個問題,說什么Java是純面向對象的語言,==操作符是比較地址什么的,而"abc"是引用,所以不能使用==操作符進行比較,而應該使用Equals方法來進行比較,會犯這種錯誤的,多半是因為自己基礎不牢,卻還來說Java的不是。我看到一個人說的一個例子,很能表示我的感想,是這么說的:有一天我去到一個餐廳,因為餐廳門口有一灘水,導致路面很滑,我不小心摔倒了,于是我找來餐廳經理,追究其責任,結果餐廳經理告訴我,這是因為我自己走路的姿勢不對,所以滑倒了,與餐廳無關。

Top 2:為什么沒有get;set;屬性,而是使用getXX();setXX()方法來代替,反射難道不要成本嗎?

我所了解到的Struts\Spring\Hibernate里都大量用到這種方式,比如Struts中的VO對象,里面若有個getUsername(),在頁面里可以用來取值,這中間我想應該是用反射來找到getUsername()方法,再取得其值的吧,同樣的Spring\Hibernate中也大量用到這種方式,我想問,反射不是說很低效的嗎?

Top 3:做個自定義標簽還要自己寫個TLD配置文件,有時在看一些Java的相關書籍上面提到零配置時,我就覺得非常可笑,不知道所謂零配置的精神到底體現在哪里?也許寫個配置文件也并沒有那么難,但關鍵問題在于,從技術上來講這個TLD明顯是可以不要的啊,TLD里面主要就描述了這個tag叫什么名字有哪些屬性,分別是什么類型,這些信息完全可以在類里面表示,只要是實現Tag接口的類就被自動識別為自定義標簽這樣不好嗎?通過識別類里有哪些getXX();setXX();(更好的方案是有get;set;屬性)來確定這個自定義標簽有哪些屬性,又分別是什么類型這樣不好嗎?為什么還要多此一舉搞個TLD配置文件?

還有個問題是,如果我寫了個MyTag的類,繼承了某個自定義標簽類,我還要為MyTag寫個相應的TLD配置,我不知道將來還有沒有其他開發人員會繼承我的MyTag,也許就算我熱烈歡迎別人來繼承我的MyTag,但當別人看到我MyTag里近三四十個getXX();setXX();之后,想到要為其寫上相應的TLD配置文件而望而生怯吧。

Top 4:數據訪問在我看來,應該是個很簡單的事情,簡單來就,就是執行SQL語句,復雜一點,就再加上實體映射,所有框架解決的問題,首先就是要易于使用,在使用過Hibernate之后,我感覺它太復雜了,我在.NET里有一個數據訪問層,只需要在指定的配置文件中配置連接字符串,就可以在程序中的任何地方調用DbHelper.Execute(sql)、DbHelper.ExecuteDataSet(sql)、DbHelper.ExecuteDataTable(sql)了,使用起來非常簡單,當然也有實體映射,DbHelper.save(entity)、DbHelper.delete(entity or key)、DbHelper.select(條件)這一組方法就可以操作實體對象,Select返回的是實體列表,實體通過元屬性設置其關聯的表和字段,這中間除了連接字符串之外,是沒有任何其它配置文件的。相比之下,Hibernate咋需要這么多配置文件?我知道Hibernate也可以配置注解,就不需了HBM配置文件了,但即使這樣,據我了解依舊還是需要很多除連接字符串之外的其它的相關配置文件。

Top 5:話說Java也有這么多年了,Hibernate也有這么多年了,到底是我不會用,還是它真的就是這樣的,Hibernate對于存儲過程的支持,實在讓我抓狂,居然不支持存儲過程,在網上尋找Hibernate調用存儲過程,得到的答案多數就是越過Hibernate,而僅僅從Hibernate中取得一個Connection,再使用JDBC的方式調用存儲過程,這樣做存在一個問題,事務不能得到控制了,由于我還比較水,Hibernate的事務控制又是暗箱操作的,好像是只要在Service層中寫的業務代碼就都在一個事務中,所以我無法讓我的存儲過程調用和Hibernate業務代碼串在一個事務當中,而很多情況下,我是想要讓它們一個失敗就全部失敗的。

除此之外,也有不越過Hibernate而調用存儲過程的辦法,有兩個,也是要寫配置文件,一個是必須要有返回的結果集,我就很納悶,為什么一定要有結果集,我的很多存儲過程就只是處理一些數據,不需要返回結果集的,最難受的是Oracle的存儲過程其實不支持返回結果集,必須使用一種變態的游標方式返回,這么做我會感覺到極其反胃。另一個辦法是通過修改實體在Insert\Update\Delete時的默認行為,比如我在Insert一個員工時,本來應該是執行SQL語句insert into employee values (?,?,?,?)的,我可以通過配置文件修改這個默認行為,改成{call myproc(?,?,?,?)},這種方式顯然也不是我想要的,我只想調用一個存儲過程,執行一個業務的處理。以上兩種方式是會被暗箱操作的事務所管理的,但并不能滿足我的需求,我要怎么辦?

Top 6數據訪問的結果集對象ResultSet、RowSet、CachedRowSet等沒有得到廣泛的應用,各個框架更多的是傾向于支持實體列表,這么做導致出現一個問題,那就是我只能返回已知結構的結果集,若想要臨時返回個東西還必須要在實體中添加相應的屬性getXX();setXX();方法,比如在Hibernate中,要訪問員工表,員工表中本來只有部門ID,沒有部門名稱,你想要有部門名稱,就必須在員工實體中添加一個deptName的屬性,要所有的結果都是已知結構的,這樣很痛苦,如果不返回到實體列表中,也可以返回到 ArrayList 中,但這樣的數據沒有列名稱,不明白為什么不直接查詢到ResultSet中,然后讓更多的框架支持ResultSet,比如Struts,在寫頁面使用Struts標簽時,可以像操作實體列表一樣操作ResultSet。

...,(還是本來就支持,只是我不會?那就不好意思啦!)只是希望讓更多的框架支持未知結構的結果集,讓程序員事先設計好結果集的結構是很累人的,就算是代碼生成,也只能生成數據庫里的每一張表對應的實體,但往往我們需要select unkownSchema from myTable得到未知結構的結果集,并不是每次都Select *。

Top 7:再說ResultSet,之所以不直接用這個,而使用實體列表來代替,我想是不是也間接的說明了,ResultSet這個類不方便使用,.NET中的DataSet和DataTable就得到大量使用,因為它們方便好用實用。可能***差別的地方就在于,DataSet是斷開式的存在于內存中的微型數據庫,而ResultSet只是連接式的數據庫讀取器,相當于.NET中的DataReader,必須保持連接才能讀數據,我知道有CachedRowSet可以斷開式的存儲數據在內存中,好吧,這個就不是問題了。但另一個問題在滋擾著我,做為存儲結果集的容器,提供給我們操作這個結果集的方法太少了,甚至取得該結果集的總行數的方法,我們都需要開動小腦筋,這么寫:rs.last(); int count = rs.getRow(); rs.first() 負責的話,它需要至少三句代碼才能取到總行數。也許這只是小問題,這個或許應該由勇敢、勤勞、智慧的我們來實現。

Top 8在我看來,Struts***的意義在于,它使得每個JSP頁面都有了一個與之對應的Java類的方法,也就是那個Action方法。你一定會跟我說,Struts的功能并不只如此,但我說,我見過的很多(小公司)的項目,Struts的意義就只是這樣的,我想像在我們國家,還有成千上萬的使用Java技術的公司,Struts對于他們的意義,也就是讓JSP有了后臺代碼。如果僅僅只是如此,為何不由官方提供,直接讓JDK支持,讓Struts的先進來彌補JDK的落后嗎?只會欲蓋彌彰。

或者你會說,即便Struts就是提供了讓每個JSP頁面都有一個與之對應的Action方法,這也非常偉大了,做到這一點,已經徹底改變了人們開發Web項目的方式,由原來的業務代碼和頁面混在一起,變成解偶分離,非常成功了。我想說,不要拿你十年前的榮耀到今天再來說了,已經Out的不行了。

Top 9再說MyEclipse,這個IDE在Java體系中幾乎成為標準,我見過的所有Java開發人員都是使用這個IDE,但相比之下,它與Visual Studio就相差太多了,性能就不說了,如果不做優化,那是慢得想死,話說為什么不能在其一發布出來的默認設置就是***化的呢?如果我們需要什么插件組件,再自己加載,這樣不是更清楚明白嗎?

另外MyEclipse的插件安裝方式實在讓我汗顏,6.x,7.x,8.x這幾個版本的插件安裝方式各不相同,我在想,為什么不能直接雙擊安裝?VS2005就是直接雙擊安裝。至今我還沒搞清楚svn插件怎么安裝的,好吧,我是很水,那個插件的安裝有時要復制文件到指定目錄,有時要啟動MyEclipse之后,選擇Help菜單下的Software Updates,有時候又要選擇什么MyEclipse configuration center,有時候要連接互聯網在線操作,更甚者,給你個Java文件,要你編譯成Class文件,再按步驟操作,我是服了。

Top 10Out輸出參數,部分類,擴展方法,LAMUDA表達式這些非常好的東西,Java都沒有,還是我不會嗎?望指正。

我的罪:Spring,其實我現在還不知道它是干嘛的,好吧,這是我的罪。

原文鏈接:http://www.cnblogs.com/zhouyou96/archive/2011/06/17/2083566.html

【編輯推薦】

  1. Java輕量級中間件服務器:SIwpas
  2. Java編程語言基礎JSP基本語法的詳細介紹
  3. 如何用Java操作MongoDB
  4. Java泛型簡明教程
  5. 向Java開戰?別搞錯了對象
責任編輯:艾婧 來源: zhouyou96的博客
相關推薦

2011-06-01 10:09:49

Ubuntu

2013-05-10 10:49:53

2018-12-19 15:30:27

Python編程語言

2010-04-06 15:14:08

2012-09-03 10:06:32

云計算IT云服務

2010-09-08 11:34:36

2024-07-31 16:48:31

2015-10-27 15:41:32

twitter開發者錯誤策略

2011-07-08 09:43:51

Chromebook

2023-01-12 08:01:11

接口突然超時數據庫

2023-05-08 10:54:39

IT管理CIO

2021-03-01 18:48:21

Go管理工具

2024-06-19 19:28:51

2018-03-20 13:56:12

數據庫MySQL枚舉類型

2011-02-21 09:04:25

2018-02-05 23:14:35

光纖網絡光纖施工

2009-06-25 12:32:02

節能成本CIO

2017-07-27 14:21:44

2021-09-10 13:23:57

數據閃存 磁盤

2012-04-29 10:40:23

APP
點贊
收藏

51CTO技術棧公眾號

免费av一级片| 久久精品三级视频| aa国产成人| 26uuu精品一区二区在线观看| 欧美亚洲成人精品| 国产午夜精品久久久久久久久| 99精品女人在线观看免费视频| 亚洲一区免费在线观看| 欧美激情一区二区三区在线视频| 中文字幕视频在线播放| 黄色成人91| 国产亚洲综合久久| 美女露出粉嫩尿囗让男人桶| 欧美暴力调教| 亚洲一区二区av在线| 日韩wuma| 五月婷婷六月色| 狠狠色狠狠色综合日日91app| 2019中文字幕在线免费观看| www.av成人| 国产乱码精品一区二区亚洲| 欧美大片在线观看一区| 爱情岛论坛亚洲首页入口章节| caoprom在线| 亚洲日本中文字幕区| 国产精品v欧美精品∨日韩| 免费av中文字幕| 亚洲区第一页| 欧美xxxx做受欧美| 黄色片在线观看免费| 日韩美女精品| 精品国产乱子伦一区| 午夜av中文字幕| 天然素人一区二区视频| 欧美特级www| 日韩伦理在线免费观看| 国产在线观看免费麻豆| 国产精品午夜春色av| 欧美日韩日本网| 蜜臀av中文字幕| 国产一区二区在线视频| 国产精品日韩一区| 在线观看国产区| 国产精品综合| 午夜精品一区二区三区在线视| 日韩欧美国产成人精品免费| av一区二区在线观看| 日韩精品视频免费专区在线播放 | 奇米影视首页 狠狠色丁香婷婷久久综合 | 欧美 日韩 国产一区二区在线视频| 亚洲日本成人女熟在线观看| 日本免费福利视频| 日韩av午夜| 日韩高清人体午夜| 内射中出日韩无国产剧情| 久久91在线| 亚洲国产精品一区二区久| 免费观看污网站| 第四色在线一区二区| 日韩久久免费av| 中文字幕视频观看| 老司机aⅴ在线精品导航| 亚洲精品成人久久| 亚洲国产精品女人| 亚洲欧美日韩一区二区三区四区| 亚洲性感美女99在线| 欧美午夜精品久久久| 日韩精品一区二区三区外面| 精品乱码一区内射人妻无码| 日本va欧美va欧美va精品| 青青草一区二区| 国产三级生活片| 国产在线精彩视频| 91蜜桃传媒精品久久久一区二区| 国产精品精品久久久久久| 国产传媒第一页| 九色视频在线观看免费播放| 欧美疯狂party性派对| 亚洲精品短视频| 综合久久国产| 在线观看亚洲欧美| 国产精品99久久免费| 99久久精品国产导航| 欧美成人亚洲成人| 久久久久久九九九九| 国产亚洲精品熟女国产成人| 免费**毛片在线| 91精品啪在线观看国产爱臀| 在线亚洲伦理| 欧美激情第10页| 青娱乐精品视频在线| 中文不卡在线| 亚洲高清影视| 亚洲午夜在线电影| 国产视频一视频二| 在线看欧美视频| 日韩欧美一区二区视频| 中文字幕在线国产| 精品一级毛片| 色与欲影视天天看综合网| 久久久久久91亚洲精品中文字幕| 久久国产视频网| 国产在线精品一区二区三区| 在线观看h片| 亚洲地区一二三色| 天天操狠狠操夜夜操| 色综合久久中文| 久久久电影免费观看完整版| 国产香蕉视频在线| 国产在线观看免费一区| 日本高清久久一区二区三区| 欧洲中文在线| 欧美日韩国产一级片| 日本一级片在线播放| 99国产**精品****| 日本亚洲欧洲色α| 六月丁香综合网| 综合久久久久综合| 日本成人在线免费视频| 福利片在线一区二区| 神马国产精品影院av| 精品免费囯产一区二区三区| 国产精品一二三四五| 亚洲高清视频一区二区| 亚洲综合电影| 亚洲精品720p| 久久高清无码视频| 久久9热精品视频| 日韩电影在线播放| 亚洲一二三四| 日韩av在线免费观看| 久久久久久久极品内射| 韩国av一区二区| 亚洲ai欧洲av| 91精品影视| 亚洲欧美国产视频| 国内精品福利视频| 91视频免费观看| 六月婷婷在线视频| 99re8这里有精品热视频8在线| 久久久精品国产亚洲| 91精品国产乱码久久久| 中文字幕乱码亚洲精品一区| 日本一极黄色片| 亚洲精品进入| 欧美在线一区二区视频| 天堂在线视频网站| 五月婷婷久久综合| 成人性生活免费看| 新67194成人永久网站| 免费一区二区三区| 超碰国产一区| 国产亚洲欧美aaaa| 中文字幕欧美人妻精品| 国产精品国产自产拍高清av| aaa一级黄色片| 亚洲免费二区| 国产精品 日韩| 国产精品13p| 亚洲免费av电影| 一级黄色av片| 国产精品久久久久久久久晋中 | 岛国av在线播放| 亚洲高清色综合| 亚洲AV无码成人精品区东京热| 久久久久免费观看| av污在线观看| 欧美一区精品| 国产麻豆日韩| 久久r热视频| 尤物yw午夜国产精品视频| 影音先锋国产在线| 亚洲色图视频免费播放| 野花视频免费在线观看| 99在线热播精品免费99热| 欧美二区三区在线| 日韩午夜视频在线| 欧美激情精品久久久久久久变态| 日韩一级免费毛片| 91久久免费观看| 欧美手机在线观看| 成人午夜又粗又硬又大| 无码日韩人妻精品久久蜜桃| 五月综合激情| 国产亚洲欧美另类一区二区三区| 欧美成人性网| 久久久成人的性感天堂| 少妇精品视频一区二区| 欧美在线影院一区二区| 高h视频免费观看| 91麻豆精品一区二区三区| 五月婷婷六月丁香激情| 黄色精品网站| 日韩欧美电影一区二区| 欧美午夜网站| 国产精品96久久久久久| 午夜小视频福利在线观看| 日韩电影第一页| a毛片在线免费观看| 欧美日韩国产在线看| 欧美精品久久久久久久久46p| 97精品国产露脸对白| 最新免费av网址| 国产日韩一区| 永久免费看av| 国产一区二区三区电影在线观看| av电影成人| 99久久伊人| 91大神福利视频在线| 国产在线高潮| 永久免费精品影视网站| 人妻妺妺窝人体色www聚色窝| 欧美日韩另类一区| 性色av免费观看| 亚洲成人综合网站| 亚洲天堂黄色片| 日本一区二区三区视频视频| 朝桐光av一区二区三区| 国产suv精品一区二区三区| 久热精品在线播放| 亚洲永久网站| 99在线免费视频观看| 五月天久久网站| 亚洲国产激情一区二区三区| 亚洲精品国模| 国内精品视频免费| 清纯唯美激情亚洲| 91精品久久久久久| av在线日韩| 欧美在线视频播放| 成人免费高清观看| 欧美高清视频一区二区| 超碰在线免费公开| 久久久国产精品x99av| 在线观看完整版免费| 一本色道久久88综合亚洲精品ⅰ| 日本福利午夜视频在线| 亚洲精品成a人在线观看| 黑人精品一区二区三区| 欧美zozozo| www.色视频| 日韩精品一区二区三区四区| 国产精品主播一区二区| 在线电影院国产精品| 中文字幕在线网站| 欧美日韩国产精选| 亚洲在线精品视频| 欧美高清dvd| a网站在线观看| 日韩欧美综合一区| 亚洲国产精彩视频| 欧美成人激情免费网| h狠狠躁死你h高h| 欧美成人精品3d动漫h| 俄罗斯嫩小性bbwbbw| 日韩欧美黄色影院| 农村少妇久久久久久久| 亚洲国产精品va在线观看黑人| 黄色aaa大片| 日韩高清中文字幕| 国产资源在线播放| 色狠狠av一区二区三区香蕉蜜桃| 生活片a∨在线观看| 久久综合伊人77777尤物| 18视频在线观看| 久久久久久久久久久免费精品| 天堂√8在线中文| 国产精品91在线观看| 日韩五码电影| 国产精品视频福利| 亚洲另类av| 一区不卡视频| 国产精品激情| 爱福利视频一区二区| 美女精品自拍一二三四| 亚洲精品乱码久久久久久动漫| 国产不卡视频一区| 人妻丰满熟妇av无码久久洗澡| 国产日韩av一区| 侵犯稚嫩小箩莉h文系列小说| 亚洲国产另类av| 人妻丰满熟妇av无码区| 欧美日韩成人在线| 嫩草影院一区二区| 在线观看国产精品91| 美女航空一级毛片在线播放| 欧美最近摘花xxxx摘花| 成人在线精品| 精品综合久久| 偷拍欧美精品| 国产黄页在线观看| 精品一区二区三区香蕉蜜桃 | 中文字幕乱码一区二区| 日韩一区二区在线播放| 蜜桃免费在线| 欧美成年人视频网站欧美| 92国产精品| 91亚洲一区精品| 亚洲欧洲色图| 一本大道东京热无码aⅴ| 日韩av中文字幕一区二区| aaaaa黄色片| 国产精品素人视频| 久久久午夜影院| 91精品国产91综合久久蜜臀| 亚洲欧美日韩动漫| 欧美乱大交xxxxx| 国产精品66| 麻豆成人av| 亚洲私人影院| 亚洲高清视频免费| 久久久国产综合精品女国产盗摄| 免费在线视频一区二区| 欧美美女直播网站| 看电影就来5566av视频在线播放| 欧美激情免费视频| 欧洲亚洲精品| 欧美色图亚洲自拍| 亚洲精品1区| 少妇性l交大片7724com| 国产精品亲子伦对白| 亚洲午夜18毛片在线看| 精品国产人成亚洲区| 免费在线看黄色| 国产精品丝袜白浆摸在线 | 国产成人一区在线| 成人无码精品1区2区3区免费看| 欧美日韩综合视频| 日本人妻丰满熟妇久久久久久| 欧美理论片在线观看| 欧美成人免费全部网站| 色播五月综合| 老司机久久99久久精品播放免费| 国产伦精品一区二区三区精品| 亚洲另类一区二区| 国产免费的av| 成人97在线观看视频| 四虎永久精品在线| 亚洲综合欧美日韩| 久久国产视频网| 日韩一卡二卡在线观看| 欧美日韩一区中文字幕| 搞黄视频免费在线观看| 国产精品视频免费观看www| 国产综合久久久| 超碰在线97免费| 国产欧美日韩一区二区三区在线观看| www毛片com| 亚洲美女中文字幕| 日韩av超清在线观看| 亚洲成人自拍视频| 麻豆精品一二三| 久久久精品少妇| 欧美一级电影网站| 黄页网站在线| 国产综合欧美在线看| 国产日韩一区二区三区在线播放| 中文字幕一区二区三区人妻不卡| 色婷婷综合久色| av色图一区| 亚洲自拍欧美色图| 国模 一区 二区 三区| caopor在线| 一本到一区二区三区| av国产在线观看| 亚洲va欧美va在线观看| 欧美日韩第一区| 色婷婷免费视频| 欧美系列在线观看| 九色porny丨首页在线| 国产91亚洲精品一区二区三区| 99日韩精品| 国产熟女一区二区| 制服丝袜亚洲精品中文字幕| 牛牛电影国产一区二区| 久久五月天婷婷| 蜜臀久久久久久久| 九九热视频精品| 亚洲欧美一区二区三区情侣bbw| 国产成人免费精品| 91精品国产毛片武则天| 99久久综合狠狠综合久久| 超碰在线观看91| 久久成人综合视频| 日韩欧美中文字幕电影| 欧美一区中文字幕| 免费**毛片在线| 国产成人亚洲欧美| 久久婷婷一区| 粉嫩av性色av蜜臀av网站| 日韩精品极品视频| 91精品视频一区二区| cao在线观看| 国产精品毛片大码女人| 丰满少妇被猛烈进入| 国产精品久久久久久久久借妻| 国内自拍一区| av在线播放中文字幕| 精品99久久久久久| 日韩一区二区三免费高清在线观看|