看板 Soft_Job 關於我們 聯絡資訊
※ 引述《gname ((′口‵)↗︴<><...<><)》之銘言: : ※ 引述《zanyking (遙遠的旅人)》之銘言: : 光是看到第1點就很有感觸了... : 打著快速開發的口號,讓很多人誤以為會用點AJAX,JQuery,ExtJs 之類 : 的API,就能在WEB上吃透透,結果反而忽略了很多基本的東西... : 經常就是看到拿牛刀來殺雞... : 舉個使用記憶體的例子... : 蠻多半途出家的工程師根本就不懂得什麼叫作演算法,資料結構之類的東西... : 要做一些資料運算時,就通通一次拉到記憶體裡面就對了... : 反正記憶體很大用免驚的啦~ : 一個陣列裡面拉了幾十萬筆資料,在運作時會稍微有點LAG... : 但是當一個陣列裡面拉了百萬筆資料時,會發生什麼事? : 是的,運氣差一點就當掉而已嘛,沒什麼啊... : 然後花了大把的時間在DEBUG為什麼會當掉? 明明程式就沒錯啊... : 我很想講, 老兄~ 你要不要考慮把整個DB通通倒進來記憶體會不會方便一點? : 一個select 就 left join 6張表, 資料量大到一整個誇張... 在LV4 還有很多東西算是我個人主觀的東西所以我沒有提,例如: 『百步法則(hundred step role)』還有『如何吝嗇的管理Java記憶體』 Java PG在編寫程式的時候常常只從OO抽象的角度去看如何實做,而不能從整個系統 (VM, OS, network)的角度去看『該怎麼選擇solution』。 如果你是Java developer,你的工作包括全局的程式架構設計,那你可不是只有 Spring + Hibernate 看個幾下會用就可以乒乒乓乓寫程式了。 光只是開JPA 的 EntityBean 而已,你就應該得要去思考: Entity的讀跟寫。只讀物件需要每次用還重新跟資料庫拿嗎? EntityManager的生命週期大小。EntityManager該活多久?每次Transaction完就重抓 還是一個Request內都用同一個? ORM one to many時該lazy還是Eager?話說回來one-to-many真的該用嗎?你是不是 常常做出『弱水三千只取一瓢飲』的傻事,只因為map.get(pk);程式碼很短? Query發生的多頻繁?有多少地方因為架構所以你會做出: Foreach detail in A(while A = select * from orderdetail last year) Sum += detail.getPrice(); 這種令人髮指的事情? 光這個小題目能夠繼續列下去就還有很多,包括Session Serialization 如何對Bean 做didActivate, doPassivate、Transaction Critical Section的確保、 JPA Provider的選擇、second cache 的設定與優化等種種議題... 寫程式考慮太多可能會寫不下去,不過,如果你想做重要的東西、錢想領的不錯, 這些事情就要訓練自己去考慮。 : 之前公司有位愛用AJAX的同事,對於AJAX已經是到完全濫用的境界... : 資料量少時還OK,等程式到了客戶那裡所有的資料都import進來時, : 每次執行就是必當機,後來又得麻煩其它同事去改寫架構... : 要建萬丈高樓,地基就要挖的深,打的好... : 只是現在很多人都是地面上疊了磚塊就在蓋樓... 一個系統依據使用者的原始需求、預算、新技術產生的新門檻、Production環境 硬體規格,設計上就會有所不同。 AJAX從2005年到現在也快5個年頭了。 Ajax要不要使用、用哪一種Framework、用在哪裡是得要先評估的,例如: 這是個CPU Bound的系統,還是IO Bound的系統? 這個系統會對外開放、還是單純對內? 使用人數是什麼等級? 系統本質是Content Base 的還是Application Base的? 要不要SEO? 屆時per Session會佔多少記憶體? UI要快還是要滿? (以下10項略)... 有的人跟我說,做網頁很簡單,大家都去做賺不了幾個錢。 我說『觀念清楚確實也沒什麼,只不過你所謂的網頁很有可能跟我所想的東西 差很遠就是了。』 -- 我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧 弱的知覺上留下來的痕跡。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.177.110
achii:這些都是很基本的東西吧 .... 11/07 03:46
Ting1024:好強阿!!考慮到這麼多。看來你真的經驗很豐富! 11/07 04:21
Ting1024:超級佩服的啦............. 11/07 04:21
bondalin:好強,好強...但遇到不懂技術的老闆你一樣只值22K 11/07 08:27
TonyQ:這些基本上都是一個正常的jsp工程師在工作上最多兩年的時間 11/07 08:45
TonyQ:就會學到的 , 至於bondalin 說得 , 基本上啊 當老闆發現這些 11/07 08:45
TonyQ:問題一般人來做個報表要跑四個小時還會當掉 , 你來修正之後 11/07 08:46
TonyQ:只要80秒 , 他就會願意付你錢了......:p 11/07 08:46
TonyQ:很多時候品質是要碰到 bound 的時候才能夠顯現出來的... 11/07 08:46
TonyQ:素質參差也就是為什麼到處都需要救火隊的原因......-_-;;; 11/07 08:47
TonyQ:話說回來 , ORM 的 relation 管理真的是門學問 :( 11/07 08:48
qrtt1:上別太灰心啊, "那本書" 有講, Conversation 在 part III 11/07 09:14
qrtt1:最佳化與資料讀取策略(含 n+1 Problem)也是在 part III 11/07 09:15
qrtt1:讀書可以輔助很多經驗上的不足 :D 11/07 09:15
qrtt1:唔, 本來要打樓上,少了樓orz。那就給五樓好了 :D 11/07 09:16
gname:推... 11/07 10:09
polo16860:利害~~~我需要多加努力了! 11/07 13:09
ottokang:跟JSP真是非常不熟啊XD 11/08 21:32