第一篇:英語(yǔ)初學(xué)者50條方法必看
1.I think of relationships between what I already know and new things I learn in English.思考新學(xué)的與已學(xué)過(guò)的英文有何關(guān)聯(lián)。
2.I use new English words in a sentence so I can remember them.用新學(xué)單字造句以便牢記生字。
3.I connect the sound of a new English word and an image or picture of the word to help me remember the word.記生字時(shí),將字的發(fā)音與其圖像做鏈接。
4.I remember a new English word by making a mental picture of a situation in which the word might be used.記生字時(shí),在腦中想象一個(gè)這個(gè)字可以被運(yùn)用的情境。
5.I use rhymes to remember new English words.使用詩(shī)歌韻文記憶生字。
6.I use flashcards to remember new English words.使用有圖有字的閃卡記憶生字。7.I physically act out new English words.以肢體表演所學(xué)的生字。
8.I review English lessons often.經(jīng)常復(fù)習(xí)課文。
9.I remember new English words or phrases by remembering their location on the page, on the board, or on a street sign.記生字或詞組時(shí),會(huì)去記這些生字或詞組出現(xiàn)的位置,在哪一頁(yè)、哪一個(gè)看板、或哪一個(gè)街道的標(biāo)示上。
10.I say or write new English words several times.學(xué)生字時(shí),多說(shuō)或多寫(xiě)幾次。
11.I try to talk like native English speakers.試著說(shuō)地道的英語(yǔ)。
12.I practice the sounds of English.練習(xí)英語(yǔ)發(fā)音。13.I use the English words I know in different ways.以不同方式使用所知的英文單字。
14.I start conversations in English.主動(dòng)使用英語(yǔ)與人交談。
15.I watch English language TV shows spoken in English or go to movies spoken in English.觀看英語(yǔ)發(fā)音的英語(yǔ)電視節(jié)目或電影。
16.I read for pleasure in English.以閱讀英文為樂(lè)。
17.I write notes, messages, letters, or reports in English.使用英文留紙條、留話(huà)、寫(xiě)信、或?qū)憟?bào)告。
18.I first skim an English passage(read over the passage quickly), then go back and read carefully.先快速瀏覽一段英文,然后再重新細(xì)讀它。
19.I look for words in my own language that are similar to new words in English.在母語(yǔ)里,找英文生字的同義字詞。
20.I try to find patterns in English.試著找出英文的規(guī)則。
21.I find the meaning of an English word by dividing it into parts that I understand.將一個(gè)生字拆成一些我所知道的部份來(lái)了解其含義。
22.I try not to translate word-for-word.嘗試不逐字翻譯。23.I make summaries of information that I hear or read in English.將所聽(tīng)所讀的信息,以英文做摘要。
24.To understand unfamiliar English words, I make guesses.對(duì)不熟悉的英文單字,去猜它的意思。
25.When I can’t think of a word during a conversation in English, I use gestures.與人英語(yǔ)對(duì)話(huà),有一個(gè)字忘了怎么說(shuō)時(shí),以動(dòng)作來(lái)表達(dá)。不知道正確的英文單字時(shí),會(huì)自己編造。
27.I read English without looking up every new word.讀英文時(shí)不會(huì)每逢生字便查字典。
28.I try to guess what the other person will say next in English.嘗試猜猜別人接下來(lái)要說(shuō)的英文是什么。
29.If I can't think of an English word, I use a word or phrase that means the same thing.想不起一個(gè)英文單字時(shí)以一個(gè)同義字或同義詞替代。
30.I try to find as many ways as I can to use my English.想辦法以各種方式來(lái)使用所學(xué)到的英文。
31.I notice my English mistakes and use that information to help me do better.知道自己所犯的英文錯(cuò)誤并能善用它來(lái)幫助自己學(xué)得更好。
32.I pay attention when someone is speaking English.每當(dāng)有人說(shuō)英語(yǔ)時(shí), 注意聽(tīng)。33.I try to find out how to be a better learner of English.想辦法找出把英文學(xué)得更好的方法。
34.I plan my schedule so I will have enough time to study English.做好規(guī)劃,找出足夠的時(shí)間學(xué)英文。
35.I look for people I can talk to in English.找尋可以英語(yǔ)會(huì)話(huà)的對(duì)象。
36.I look for opportunities to read as much as possible in English.找尋機(jī)會(huì)盡可能讀英文。
37.I have clear goals for improving my English skills.確立明確目標(biāo),不斷增進(jìn)英文聽(tīng)說(shuō)讀寫(xiě)能力。
38.I think about my progress in learning English.思考自己英文學(xué)習(xí)的進(jìn)展。
39.I try to relax whenever I feel afraid of using English.每當(dāng)覺(jué)得害怕使用英文時(shí),想辦法放松自己。
40.I encourage myself to speak English even when I am afraid of making a mistake.甚至當(dāng)害怕會(huì)犯錯(cuò)時(shí),仍鼓勵(lì)自己說(shuō)英語(yǔ)。
41.I give myself a reward or treat when I do well in English.當(dāng)自己的英文表現(xiàn)不錯(cuò)時(shí),給自己獎(jiǎng)賞或好好吃一頓。
42.I notice if I am tense or nervous when I am studying or using English.注意自己學(xué)習(xí)或使用英文時(shí)會(huì)不會(huì)緊張。
43.I write down my feelings in a language learning diary.寫(xiě)日記,記錄學(xué)習(xí)英文的感想。
44.I talk to someone else about how I feel when I am learning English.與別人分享學(xué)英文的感想。
45.If I do not understand something in English, I ask the other person to slow down or say it again.聽(tīng)不懂英文時(shí),請(qǐng)他人放慢速度或再說(shuō)一次。
46.I ask English speakers to correct me when I talk.說(shuō)英語(yǔ)時(shí),請(qǐng)英語(yǔ)為母語(yǔ)人士幫你更正錯(cuò)誤。
47.I practice English with other students.與同學(xué)一起練習(xí)說(shuō)英語(yǔ)。
48.I ask for help from English speakers.求助于英語(yǔ)為母語(yǔ)人士。
49.I ask questions in English.用英語(yǔ)發(fā)問(wèn)。
50.I try to learn about the culture of English speakers.嘗試學(xué)習(xí)了解英語(yǔ)文化。
34.I plan my schedule so I will have enough time to study English.做好規(guī)劃,找出足夠的時(shí)間學(xué)英文。
35.I look for people I can talk to in English.找尋可以英語(yǔ)會(huì)話(huà)的對(duì)象。
36.I look for opportunities to read as much as possible in English.找尋機(jī)會(huì)盡可能讀英文。
37.I have clear goals for improving my English skills.確立明確目標(biāo),不斷增進(jìn)英文聽(tīng)說(shuō)讀寫(xiě)能力。
38.I think about my progress in learning English.思考自己英文學(xué)習(xí)的進(jìn)展。
39.I try to relax whenever I feel afraid of using English.每當(dāng)覺(jué)得害怕使用英文時(shí),想辦法放松自己。
40.I encourage myself to speak English even when I am afraid of making a mistake.甚至當(dāng)害怕會(huì)犯錯(cuò)時(shí),仍鼓勵(lì)自己說(shuō)英語(yǔ)。
41.I give myself a reward or treat when I do well in English.當(dāng)自己的英文表現(xiàn)不錯(cuò)時(shí),給自己獎(jiǎng)賞或好好吃一頓。
42.I notice if I am tense or nervous when I am studying or using English.注意自己學(xué)習(xí)或使用英文時(shí)會(huì)不會(huì)緊張。
43.I write down my feelings in a language learning diary.寫(xiě)日記,記錄學(xué)習(xí)英文的感想。
44.I talk to someone else about how I feel when I am learning English.與別人分享學(xué)英文的感想。
45.If I do not understand something in English, I ask the other person to slow down or say it again.聽(tīng)不懂英文時(shí),請(qǐng)他人放慢速度或再說(shuō)一次。
46.I ask English speakers to correct me when I talk.說(shuō)英語(yǔ)時(shí),請(qǐng)英語(yǔ)為母語(yǔ)人士幫你更正錯(cuò)誤。
47.I practice English with other students.與同學(xué)一起練習(xí)說(shuō)英語(yǔ)。
48.I ask for help from English speakers.求助于英語(yǔ)為母語(yǔ)人士。
49.I ask questions in English.用英語(yǔ)發(fā)問(wèn)。
50.I try to learn about the culture of English speakers.嘗試學(xué)習(xí)了解英語(yǔ)文化。
第二篇:初學(xué)者學(xué)英語(yǔ) 必看電影
The Sound of Music 《音樂(lè)之聲》; Titanic(泰坦尼克號(hào))
Gone With the Wind(亂世佳人)Jane Eyre 《簡(jiǎn)·愛(ài)》 Ice Age(冰河世紀(jì))The Lion King獅子王
Pride and Prejudice傲慢與偏見(jiàn) Roman Holiday(羅馬假日)Finding Nemo(海底總動(dòng)員)Sleepless In Seattle(西雅圖不眠夜)A Walk in clouds 《云中漫步》; You've got mail(電子情書(shū))Young Victoria(年輕的維多利亞)Love Actually(真愛(ài)至上)Shawshank Redemption肖申克的救贖 Kung Fu Panda(功夫熊貓)
Forrest Gump(阿甘正傳)A Beautiful Mind(美麗心靈)
Beauty And The Beast(美女與野獸)Legally Blonde(律政俏佳人)The Graduate(畢業(yè)生)Garfield(加菲貓)
Brave heart(勇敢的心)The Good Girl(好女孩)Happy Feet(歡樂(lè)的大腳)My Fair Lady(窈窕淑女)Runaway Bride(落跑新娘)
Night At The Museum(博物館驚魂夜)Philadelphia(費(fèi)城故事)
The Shawshank Redemption(肖申克的救贖)The Wizard of Oz(綠野仙蹤)
Ice Age 2:The Meltdown(冰河世紀(jì)2:消融)The Incredibles(超人特工隊(duì))Madagascar(馬達(dá)加斯加)Thirteen(十三歲)
Casino Royale(皇家賭場(chǎng))American Beauty(美國(guó)麗人)
To Kill a Mockingbird(殺死一只知更鳥(niǎo))Shrek(怪物史萊克)
Casablanca(卡薩布蘭卡)
The Bourne Ultimatum(諜影重重3)When Harry Met Sally(當(dāng)哈利遇上莎莉)A Mighty Wind(歌聲滿(mǎn)人間/風(fēng)載歌行)Rain Man(雨人)Wall Street(華爾街)
Meet the Parents(非常女婿拜見(jiàn)岳父母大人)A Walk in the Clouds(云中漫步)Apollo 13(阿波羅13號(hào))
The Sixth Sense(靈異第六感)Man On the Moon(月亮上的人)Ratatouille(料理鼠王)Firewall(防火墻)
The Fugitive(亡命天涯)Groundhog Day(偷天情緣)Dumb and Dumber(阿呆與阿瓜)In America(新美國(guó)夢(mèng))
You can count on Me(我可成為你的依靠)American Graffiti(美國(guó)風(fēng)情畫(huà))Erin Brockovich(永不妥協(xié))The Station Agent(心靈驛站)Elf(圣誕精靈)
Best In Show(愛(ài)犬大賽)
Almost Famous(成名在望/成名之路)
The Truman Show(楚門(mén)的世界)
Fantastic 4 Rise of the Silver Surfer(神奇四俠2:銀影俠)Animal House(動(dòng)物屋)Awakenings(無(wú)語(yǔ)問(wèn)蒼天)
Breakfast at Tiffany's(第凡內(nèi)早餐)A League Of Their Own(紅粉聯(lián)盟)
One Flew Over the Cuckoo's Nest(飛越瘋?cè)嗽海〥ead Poet's Society(死亡詩(shī)社)
My Big Fat Greek Wedding(我的盛大希臘婚禮)Witness(證人)
Stand By Me(伴我同行)Annie Hall(安妮·霍爾)
The Nutty Professor(肥佬教授)The Tao Of Steve(追女至尊)
Good Will Hunting(驕陽(yáng)似我心靈捕手)The Truth About Cats and Dogs(愛(ài)情叩應(yīng))American Splendor(美國(guó)奇觀)Sleeping Beauty(睡美人)
Ghost(人鬼情未了)
The Day After Tomorrow(后天)After the Sunset(日落之后/鬼膽神偷)Face Off(變臉/奪面雙雄)Oceans 13(十三羅漢)Hollow Man II(透明人2)
第三篇:Java初學(xué)者如何學(xué)習(xí)(必看)(本站推薦)
這篇文章是我無(wú)意中在網(wǎng)上看到的,很有感觸,感覺(jué)對(duì)初學(xué)者肯定會(huì)有幫助,打算整理一下再發(fā)出來(lái)的,可是改了半天,還是沒(méi)人家原本的內(nèi)容連貫,有邏輯性。所以直接拿過(guò)來(lái)了。希望想學(xué)習(xí)java朋友可以花點(diǎn)時(shí)間看看,看完肯定會(huì)有所收獲的,我不多說(shuō)了,趕緊看看牛人的建議吧。JAVA交流群四一八,三五五,加上五三一。給初學(xué)者之一:淺談java及應(yīng)用 學(xué)java不知不覺(jué)也已經(jīng)三年了
每次上網(wǎng),泡bbs逛論壇,沒(méi)少去java相關(guān)的版面 總體感覺(jué)初學(xué)者多,高手少,精通的更少
很多人對(duì)java感到茫然,不知所措,不懂java能做什么 即便知道了java很有用,也不清楚該從哪里入手 所以就有了 java入門(mén)難 這一說(shuō)法
ok,那我們就從java到底能做什么聊起 先說(shuō)什么是java java是一種面向?qū)ο笳Z(yǔ)言,真正的面向?qū)ο螅魏魏瘮?shù)和變量都以類(lèi)(class)封裝起來(lái) 至于什么是對(duì)象什么是類(lèi),我就不廢話(huà)了
關(guān)于這兩個(gè)概念的解釋任何一本面向?qū)ο笳Z(yǔ)言的教材里面都有 知道了什么是java,那自然就會(huì)對(duì)java能干什么感興趣
在說(shuō)java能做什么之前,先說(shuō)java作為一個(gè)真正面向?qū)ο笳Z(yǔ)言的優(yōu)點(diǎn) 首先第一個(gè),既然是真正的面向?qū)ο?,那就要做到徹底的封裝
這是java和c++最大的不同,java所有的源碼以及編譯后的文件都以類(lèi)的形式存在
java沒(méi)有所謂的類(lèi)外部定義,所有的函數(shù)(方法)以及變量(屬性)都必須在類(lèi)內(nèi)部定義 這樣就不會(huì)出現(xiàn)一個(gè)類(lèi)被切割成這里一塊那里一塊的情況,c++就可以,不是么? 這樣做使得整個(gè)程序的結(jié)構(gòu)異常清晰,明了
其次第二個(gè),最讓人歡呼雀躍的是完全屏蔽了指針,同時(shí)引入了垃圾回收機(jī)制 任何一個(gè)寫(xiě)過(guò)c/c++代碼的人,都會(huì)對(duì)內(nèi)存管理深?lèi)和唇^ 因?yàn)檫@使得我們不能把主要精力放在我們關(guān)心的事情上 而需要考慮計(jì)算機(jī)內(nèi)部的一些事情,作為一個(gè)軟件工程師
我想沒(méi)有一個(gè)人愿意把大量的時(shí)間花在內(nèi)存管理上,畢竟我們不是電子工程師 此時(shí)java的優(yōu)勢(shì)體現(xiàn)出來(lái)了,它完全屏蔽了內(nèi)存管理
也就是說(shuō),如果你用java寫(xiě)程序,寫(xiě)出來(lái)的任何一個(gè)程序內(nèi)存上的開(kāi)銷(xiāo),都不受你控制 乍一看,似乎你受到了束縛,但實(shí)際上不是這樣
因?yàn)殡m然你的程序無(wú)法對(duì)內(nèi)存進(jìn)行管理,降低了一定的速度 但你的程序會(huì)非常非常的安全,因?yàn)槟銦o(wú)法調(diào)用一個(gè)空指針 而不像以前寫(xiě)c的時(shí)候那樣,成天因?yàn)榭罩羔樁鴵?dān)驚受怕
當(dāng)然,如果你深入了解這一行,就會(huì)發(fā)現(xiàn)java其實(shí)也無(wú)法保證程序不去調(diào)用空的指針 但是它會(huì)在最大程度上避免空指針的調(diào)用
這已經(jīng)很好了,安全,這是java的最突出的優(yōu)點(diǎn)
第三個(gè),虛擬機(jī)跨平臺(tái),這是java最大的特點(diǎn),跨平臺(tái) 可能所有人都知道windows,但是不是所有人都知道unix 和java一樣,很多人都不知道unix這種操作系統(tǒng)干什么用
我不想多說(shuō)unix的應(yīng)用,這不是主要,但是我要說(shuō),大部分小型機(jī) 工作站,都跑在unix一族的操作系統(tǒng)上,比如linux/solaris unix比起windows有一個(gè)最顯著的特點(diǎn),穩(wěn)定,這就好比思科和華為 思科的機(jī)器慢但穩(wěn)定,華為的機(jī)器快但不穩(wěn)定,作為服務(wù)器這一端來(lái)說(shuō)還是非常有市場(chǎng)的 而且很重要的windows不安全,在ms的宣傳中我想所有人都很少看到安全二字 因?yàn)閣indows操作系統(tǒng)針對(duì)的是pc用戶(hù),pc死機(jī)就死機(jī)咯,大不了重啟 最經(jīng)常冒出來(lái)的就是藍(lán)屏,在服務(wù)器這一端上因?yàn)閙s沒(méi)有自己的芯片
所以要做系統(tǒng)有些力不從心啊。扯遠(yuǎn)了,那么java可以做到在windows上編譯 然后在unix上運(yùn)行,這是c/c++做不到的 那么說(shuō)到這里,java能做什么逐漸清晰起來(lái) 剛才說(shuō)到了,java程序有一個(gè)的特點(diǎn)是安全
這個(gè)安全是針對(duì)你的系統(tǒng)來(lái)說(shuō)得,系統(tǒng)在跑了java程序之后會(huì)特別地穩(wěn)定
而且還能跨平臺(tái),那么很明顯,java主要應(yīng)用于除了windows操作系統(tǒng)以外所有的平臺(tái) 比如手機(jī),服務(wù)器
想想看,如果你寫(xiě)的程序要跑在手機(jī)上,而手機(jī)有多少款用的是windows? 就算有,那如果你用c/c++,是不是要針對(duì)每一款手機(jī)寫(xiě)一套程序呢? 累死,那跨平臺(tái)的java就不用,做到編譯一次,隨時(shí)運(yùn)行
同樣,在服務(wù)器這一端,如果我想給一個(gè)網(wǎng)絡(luò)門(mén)戶(hù)站點(diǎn),比如sina 寫(xiě)一個(gè)應(yīng)用程序,pc的性能肯定無(wú)法滿(mǎn)足sina這樣大站點(diǎn)并發(fā)數(shù)量的要求 那么它就需要買(mǎi)服務(wù)器,那么服務(wù)器ms沒(méi)有市場(chǎng),而且windows很不安全 那么十之八九會(huì)買(mǎi)一個(gè)sun/ibm的機(jī)器,或者h(yuǎn)p,但不管是誰(shuí)的機(jī)器
它裝的操作系統(tǒng)也不會(huì)是windows,因?yàn)閣indows太不安全了,而且多核的支持太差了 這個(gè)有空再說(shuō),那么如果你要寫(xiě)一個(gè)程序在這樣的機(jī)器上跑
難道我們就在這個(gè)機(jī)器上做開(kāi)發(fā)么?當(dāng)然不可能,一般程序員開(kāi)發(fā)用的都是pc,windows 那么該怎么辦?寫(xiě)一個(gè)程序,然后再拿到服務(wù)器上去編譯,去調(diào)試? 肯定不可能,所以我們就希望找到一個(gè)語(yǔ)言,編譯完生成程序之后
在pc上調(diào)試,然后直接移植到服務(wù)器上去,那么此時(shí),我們就會(huì)毫不猶豫地選擇java 因?yàn)樵诳缙脚_(tái)以及安全性來(lái)說(shuō),java永遠(yuǎn)是第一選擇 ok,下面說(shuō)java的缺點(diǎn)
一慢,這其實(shí)是一種誤區(qū),這就好比goto語(yǔ)句一樣
java也拋棄了指針,雖然看上去似乎變慢了,但是在這個(gè)兩三年硬件性能就能翻番的年代 速度已經(jīng)不是我們關(guān)心的問(wèn)題了,而且對(duì)于企業(yè)級(jí)的應(yīng)用來(lái)說(shuō)
沒(méi)有什么比安全穩(wěn)定更重要的,換句話(huà)說(shuō),我們可以忍受慢,但是不能忍受死機(jī)和藍(lán)屏 而且越大型的應(yīng)用,這種慢的劣勢(shì)體現(xiàn)得越模糊
因?yàn)楫?dāng)系統(tǒng)項(xiàng)目越做越大,任何一個(gè)環(huán)節(jié)做不好都可能影響全局的情況下 安全尤其重要,而且就像goto語(yǔ)句一樣
這種過(guò)分追求速度的主張會(huì)給系統(tǒng)開(kāi)發(fā)和糾錯(cuò)以及維護(hù)帶來(lái)無(wú)可挽回甚至不可避免的損失 把內(nèi)存交給計(jì)算機(jī)去管理吧,這種代價(jià)值得
我們做的不是pc游戲,沒(méi)必要把內(nèi)存的那一點(diǎn)點(diǎn)消耗當(dāng)親爹
二難看,又是一個(gè)誤區(qū),很多人甚至拿出java swing控件畫(huà)出的界面來(lái)說(shuō) 呵呵,其實(shí)java不是不能畫(huà)得好看,IDEA就是java寫(xiě)的IDE,挺漂亮的
但為什么難看呢,是因?yàn)閟wing控件它本身就是unix時(shí)代的產(chǎn)物,swing控件貼近unix界面
老外看unix界面其實(shí)挺順眼的,他們就是吃u(píng)nix飯長(zhǎng)大的
而unix又是吃百家飯的,不像ms那么唯利是圖,所以不怎么對(duì)中國(guó)人友好 加上我國(guó)又沒(méi)有公司在做操作系統(tǒng),所以看上去是不怎么順眼 其實(shí)玩過(guò)unix的人都知道,unix對(duì)中文的支持一直不怎么好 給初學(xué)者之二:從JDK說(shuō)起
在知道了java有什么優(yōu)點(diǎn),能做什么之后 就該說(shuō)一下java該如何去學(xué)了
在說(shuō)java如何去學(xué)之前,有必要把java的幾個(gè)大方向做一個(gè)簡(jiǎn)單說(shuō)明 早在99年的時(shí)候
sun公司做出了一個(gè)決定,將java應(yīng)用平臺(tái)做一個(gè)劃分 畢竟在不同領(lǐng)域,語(yǔ)言應(yīng)用特性是有區(qū)別的
針對(duì)不同領(lǐng)域內(nèi)的應(yīng)用,sun公司可以發(fā)布相關(guān)高端標(biāo)準(zhǔn)來(lái)統(tǒng)一規(guī)范代碼 這三大塊就是J2SE,J2EE以及J2ME 這個(gè)舉措今天看來(lái)無(wú)疑是非常了不起的
正是由于這次革命性的發(fā)展,使java從一種小打小鬧游戲性的語(yǔ)言 發(fā)展成為今天企業(yè)級(jí)應(yīng)用的基礎(chǔ)
這里要特別說(shuō)明一下J2SE J2EE J2ME中2的意思 其實(shí)2就是英文單詞to的諧音,就是to的意思
而不是second edition,當(dāng)然java 2本身版本號(hào)就是1.2,也有點(diǎn)2nd edition的味道 說(shuō)點(diǎn)題外的,sun公司發(fā)布的java版本很有意思
雖然總是寫(xiě)是1.X但其實(shí)外界對(duì)這種版的說(shuō)法也就是X.0 比如java 2,其實(shí)就是java 1.2 1.3其實(shí)就是3.0,1.4就是4.0,現(xiàn)在所說(shuō)的5.0 其實(shí)就是1.5 只是以前我們更習(xí)慣叫1.X而已
可能到了5.0以后,就全改叫X.0而不是1.X了
所以以后聽(tīng)到別人說(shuō)java 5.0,千萬(wàn)別驚訝,其實(shí)就是1.5 在這三個(gè)J2*E中J2SE是基礎(chǔ),就是java 2的標(biāo)準(zhǔn)版(java 2 standard edition)也就是最基礎(chǔ)的java語(yǔ)言部分,無(wú)論學(xué)什么java技術(shù),J2SE都是必須掌握的 要使用J2SE就必須安裝JDK(java development kit)
JDK在sun公司的主頁(yè)上可以免費(fèi)下載,下載后需要安裝,具體安裝流程看教材 JDK包含有五個(gè)部分:核心API,集成API,用戶(hù)界面API,發(fā)布技術(shù)還有java虛擬機(jī)(JVM)先說(shuō)運(yùn)行環(huán)境,運(yùn)行環(huán)境最主要要說(shuō)的就是java虛擬機(jī)(JVM)
前面我們說(shuō)過(guò)java是跨平臺(tái)的語(yǔ)言,那么如何做到跨平臺(tái)呢?畢竟每種操作系統(tǒng)都是不同的
java的設(shè)計(jì)者們提出了一個(gè)虛擬機(jī)的概念
在操作系統(tǒng)之上建立一個(gè)統(tǒng)一的平臺(tái),這個(gè)平臺(tái)必須實(shí)現(xiàn)某些功能以支持程序的運(yùn)行 如下圖:
------| program |------| JVM |------| UNIX | Windows | Linux | Solaris |..------程序員所寫(xiě)的每一個(gè)程序都先運(yùn)行在虛擬機(jī)上 所有操作都必須經(jīng)過(guò)虛擬機(jī)才能和操作系統(tǒng)交互
這樣做不僅統(tǒng)一了所有操作系統(tǒng),同時(shí)也保證了操作系統(tǒng)的安全 要死機(jī)的話(huà),死的是虛擬機(jī)(JVM)而操作系統(tǒng)并不會(huì)受此影響 而我們所說(shuō)的java運(yùn)行環(huán)境指的主要是JVM,其他的不說(shuō)了,省略
下面說(shuō)說(shuō)JDK(java development kit)的API,其實(shí)用JDK來(lái)包括運(yùn)行環(huán)境以及開(kāi)發(fā)工具 個(gè)人感覺(jué)是不恰當(dāng)?shù)模驗(yàn)檫@三個(gè)單詞僅能說(shuō)明開(kāi)發(fā)工具,也就是幾個(gè)標(biāo)準(zhǔn)的API 而沒(méi)有讓人感覺(jué)到有運(yùn)行環(huán)境的意思在里面,這是題外 那么什么是API? 簡(jiǎn)單地說(shuō)就是Application Programming Interface,應(yīng)用程序編程接口 在java里面,就是一些已經(jīng)寫(xiě)好了的類(lèi)打成的包
這又要解釋什么是類(lèi)什么是包了,簡(jiǎn)單說(shuō)一下,包就是類(lèi)的集合 一個(gè)包包含零個(gè)或多個(gè)類(lèi),嗯,具體的可以去看書(shū)
這些類(lèi)是java的基礎(chǔ)類(lèi),常用的類(lèi),可以簡(jiǎn)單理解成java的工具集 最后說(shuō)一下JDK的發(fā)布技術(shù),其實(shí)按我的理解,講白了就是編譯器將.java文件轉(zhuǎn)換成.class文件的一種技術(shù)
這三部分組成了JDK,有了JDK,就可以開(kāi)發(fā)出J2SE應(yīng)用軟件了 最原始的只要用一個(gè)記事本寫(xiě)幾行代碼就可以了
但一般來(lái)說(shuō)我們會(huì)使用效果比較好的開(kāi)發(fā)工具,也就是IDE 在J2SE這一塊,特別推薦JCreator這款I(lǐng)DE sun公司的產(chǎn)品,與JDK結(jié)合得幾乎是天衣無(wú)縫,非常適合初學(xué)者使用
教材方面中文的推薦電子工業(yè)出版社出版的《java教程》初級(jí)與高級(jí)篇各一本 還有就是《21天學(xué)通java》雖然有人說(shuō)21天系列是爛書(shū),但個(gè)人感覺(jué)
對(duì)于j2se,這本書(shū)翻譯得已經(jīng)很不錯(cuò)了,基本沒(méi)有什么語(yǔ)法錯(cuò)誤,語(yǔ)句也很通順 最后要說(shuō)的就是《thinking in java》
這本書(shū)自然很經(jīng)典,說(shuō)得比較細(xì),只是我覺(jué)得不太適合初學(xué)者,其實(shí)也不難
初學(xué)者直接看也不成問(wèn)題,但個(gè)人感覺(jué)還是找本教材也就是前面推薦的兩款來(lái)看比較好 基本概念的理解還是用教材的,畢竟thinking in java有的版本翻譯得很爛 而且個(gè)人建議還是看原版比較好,當(dāng)然這幾本都看最好了,但如果沒(méi)時(shí)間 至少精讀其中一本,然后再看其他兩本就可以,其實(shí)三本書(shū)內(nèi)容也差不多
但看問(wèn)題的角度方式以及面向的讀者也都不同,嗯,怎么說(shuō)呢,找適合自己的吧 最后要說(shuō)的是
由于虛擬機(jī)的存在,J2SE的大多數(shù)軟件的使用會(huì)比一般桌面軟件慢一些 效果不盡如人意,現(xiàn)在大概只有swing控件還在使用吧,其它沒(méi)怎么聽(tīng)說(shuō) J2EE&J2ME 這是java應(yīng)用的重中之重,如果想拿高薪,最好把J2EE學(xué)好
記得以前在csdn上看過(guò)一個(gè)調(diào)查,月薪上萬(wàn)的程序員主要從事哪方面的工作 十個(gè)中有八個(gè)是做J2EE的,其他兩個(gè)一個(gè)做J2ME,還有一個(gè)做嵌入式 也許有些夸張,但也從某一方面說(shuō)明J2EE人才的稀缺以及應(yīng)用的廣泛
所以如果想學(xué)java,只精通j2se是永遠(yuǎn)不夠的,至少還需要時(shí)間去了解其它兩個(gè)J2*E
給初學(xué)者之三:java企業(yè)級(jí)應(yīng)用之硬件篇
總算講到企業(yè)級(jí)應(yīng)用了,內(nèi)容開(kāi)始逐漸有趣起來(lái) java企業(yè)級(jí)應(yīng)用分為硬件篇和軟件篇
重點(diǎn)在軟件,硬件是外延,嚴(yán)格地說(shuō)與java沒(méi)有必然聯(lián)系 但是,由于java是網(wǎng)絡(luò)語(yǔ)言,不了解硬件的一些基礎(chǔ)知識(shí)
軟件知道再多也沒(méi)什么用,不要上了戰(zhàn)場(chǎng)還不知道為什么而打仗
硬件是軟件的基礎(chǔ),在這個(gè)前提下,有必要專(zhuān)門(mén)花一點(diǎn)點(diǎn)篇幅來(lái)聊一下硬件 硬件,簡(jiǎn)單地說(shuō)就是我們實(shí)際生活中看得見(jiàn)摸得著的東西,也就是那些冰冷的機(jī)器,比如服務(wù)器,個(gè)人電腦還有網(wǎng)絡(luò)交換機(jī),路由器等等,那么先拋開(kāi)網(wǎng)絡(luò)設(shè)備不談,先來(lái)說(shuō)說(shuō)計(jì)算機(jī)電腦的歷史
在很早很早以前,人類(lèi)創(chuàng)造了第一臺(tái)電腦,那時(shí)候的電腦只是一臺(tái)用來(lái)計(jì)算的機(jī)器 無(wú)比大,無(wú)比重,無(wú)比傻,除了算其它屁事不會(huì)做,沒(méi)有所謂的人工智能與計(jì)算機(jī)網(wǎng)絡(luò) 但是總算是誕生了,雖然以今天的眼光去看那時(shí)候的機(jī)器巨傻無(wú)比 只配叫做計(jì)算器而不是電腦,沒(méi)有邏輯思維能力,只會(huì)死算 但千里之行,始于足下,反正是造出來(lái)了 然后隨著時(shí)間的推移,制造業(yè)發(fā)展發(fā)展發(fā)展
電腦性能逐漸得到提升,速度快了起來(lái),成本也逐漸低了下來(lái)
于是人們?cè)斐隽说诙_(tái),第三臺(tái),第四臺(tái),第五臺(tái)……第n臺(tái)計(jì)算機(jī) 人們就造出了無(wú)數(shù)臺(tái)計(jì)算機(jī)并使其成為一種產(chǎn)品
逐漸應(yīng)用于許多復(fù)雜計(jì)算領(lǐng)域,不僅僅是科研,許多生產(chǎn)領(lǐng)域也開(kāi)始出現(xiàn)計(jì)算機(jī)的影子 然后又隨著時(shí)間的推移,人們發(fā)現(xiàn)不可能把所有的計(jì)算機(jī)都做成一個(gè)樣子 因?yàn)楦餍懈鳂I(yè)對(duì)計(jì)算機(jī)性能的要求各不相同
于是開(kāi)始把計(jì)算機(jī)劃分檔次,最簡(jiǎn)單地是按照計(jì)算機(jī)的大小劃分 就是教科書(shū)上寫(xiě)的大型機(jī),中型機(jī),小型機(jī)
//個(gè)人感覺(jué)這樣分純粹扯淡,還以為是小孩子玩球,分為大球,中球和小球 但是不管怎樣,計(jì)算機(jī)不再是千篇一律一個(gè)樣子了
按照性能的不同,在不同領(lǐng)域,出現(xiàn)了滿(mǎn)足符合不同要求的計(jì)算機(jī) 幾乎在同時(shí),人們也開(kāi)始考慮計(jì)算機(jī)之間通訊問(wèn)題
人們開(kāi)始考慮將不同的計(jì)算機(jī)連接起來(lái),于是網(wǎng)線出現(xiàn)了,網(wǎng)絡(luò)出現(xiàn)了 又隨著網(wǎng)絡(luò)的發(fā)展,出現(xiàn)了一下專(zhuān)門(mén)為了尋址而存在的機(jī)器 這就是路由器和交換機(jī),然后又出現(xiàn)了一些公益性的組織或團(tuán)體 他們制定了一系列的標(biāo)準(zhǔn)來(lái)規(guī)范以及管理我們的網(wǎng)絡(luò) 于是3w出現(xiàn)了,計(jì)算機(jī)的網(wǎng)絡(luò)時(shí)代來(lái)臨了
嗯,說(shuō)到這里,計(jì)算機(jī)發(fā)展到今天的歷史大概說(shuō)完了,我們來(lái)詳細(xì)說(shuō)說(shuō)網(wǎng)絡(luò)時(shí)代的計(jì)算機(jī)以及各個(gè)硬件供應(yīng)商之間的關(guān)系
前面說(shuō)到了,計(jì)算機(jī)分為大型機(jī),中型機(jī)和小型機(jī)……
但是現(xiàn)在市場(chǎng)上沒(méi)有人這樣分,要是出去買(mǎi)機(jī)器,對(duì)硬件供應(yīng)商說(shuō)
我要買(mǎi)一款中型機(jī),或者說(shuō),我要買(mǎi)一款小型機(jī),硬件供應(yīng)商肯定會(huì)問(wèn)問(wèn)題
他們會(huì)問(wèn)你買(mǎi)機(jī)器干什么用的?科學(xué)計(jì)算啊還是居家用,是作服務(wù)器啊還是圖形設(shè)計(jì) 但不管怎樣,簡(jiǎn)單地說(shuō)大中小型機(jī)已經(jīng)沒(méi)有什么意義了 我們按照使用范疇來(lái)劃分 簡(jiǎn)單劃分為
服務(wù)器,工作站還有微機(jī) 服務(wù)器(server)
服務(wù)器涵蓋了幾乎所有的大型機(jī)以及大部分中型機(jī)甚至一些小型機(jī) 用通俗點(diǎn)話(huà)說(shuō)??衿骶褪悄掣齬??4小時(shí)不間斷運(yùn)行提供服務(wù)的機(jī)器 比如賣(mài)飛機(jī)票(中航信),比如酒店預(yù)定(攜程)
比如提供門(mén)戶(hù)站點(diǎn)相關(guān)服務(wù)(sina),比如電子商務(wù)(ebay,amazon,阿里巴巴)這些服務(wù)對(duì)機(jī)器都有一些特定的要求,尤其強(qiáng)調(diào)安全和穩(wěn)定 工作站(workstation)
工作站其實(shí)是圖形工作站的簡(jiǎn)稱(chēng),說(shuō)白了,就是某種功能極其強(qiáng)大的計(jì)算機(jī) 用于特定領(lǐng)域,比如工程設(shè)計(jì),動(dòng)畫(huà)制作,科學(xué)研究等 個(gè)人電腦/微機(jī)(pc)
計(jì)算機(jī)網(wǎng)絡(luò)的最末端,這個(gè)應(yīng)該不用我說(shuō)太多了 網(wǎng)絡(luò)時(shí)代的pc已經(jīng)普及到千家萬(wàn)戶(hù)
說(shuō)完了分類(lèi),我們就來(lái)說(shuō)說(shuō)各個(gè)硬件供應(yīng)商 首先是服務(wù)器還有工作站
這兩類(lèi)硬件供應(yīng)商主要是以下三家 Sun,IBM還有HP(惠普)然后是PC 以前IBM還有PC事業(yè)部,現(xiàn)在被聯(lián)想吞并了(蛇吞象)
現(xiàn)在國(guó)際市場(chǎng)上有聯(lián)想和DELL(戴爾),目前戴爾還是國(guó)際老大 還有HP康柏
然后是網(wǎng)絡(luò),也就是路由器和交換機(jī)
這塊市場(chǎng)嘛,Cisco(思科)Brocade(博科)還有McDATA三足鼎立 內(nèi)核(CPU)PC內(nèi)核
主要是AMD和Intel,前者最近與Sun公司合作,Sun也有一部分單雙核服務(wù)器用的是AMD的
服務(wù)器與工作站內(nèi)核 這一塊與硬件廠商綁定
還是Sun,IBM,HP三家自己生產(chǎn) 題外
在一些大型主機(jī)應(yīng)用市場(chǎng),比如賣(mài)飛機(jī)票
德國(guó)的漢莎,中國(guó)的中航信,香港的國(guó)泰用的都是尤利(美國(guó)的公司,英文名我忘了)其它用的是IBM的機(jī)器,現(xiàn)在能做大型機(jī)的感覺(jué)似乎只有IBM可以
尤利已經(jīng)快倒了,技術(shù)太落后了,現(xiàn)在他們的系統(tǒng)還是fortran寫(xiě)的,連c都不支持 要特別說(shuō)明的是,一個(gè)超大型主機(jī)然后多個(gè)小終端/pc的結(jié)構(gòu)現(xiàn)在越來(lái)越?jīng)]市場(chǎng)了 將來(lái)的趨勢(shì)是用一整個(gè)包含多個(gè)服務(wù)器的分布式操作系統(tǒng)來(lái)取代這些大型主機(jī) 因?yàn)榇笮椭鳈C(jī)更新?lián)Q代極其困難,一旦數(shù)據(jù)量超過(guò)了主機(jī)的處理能力 那么就要換主機(jī),這個(gè)成本是極大的,但是如果用分布式操作系統(tǒng) 那就只需要增加小服務(wù)器就行了
硬件就大概說(shuō)到這里,與大多數(shù)人沒(méi)什么關(guān)系
因?yàn)榇蠖鄶?shù)人壓根不可能進(jìn)入這些硬件領(lǐng)域,除非做銷(xiāo)售 說(shuō)了這么多,只是為了給軟件部分打基礎(chǔ)而已 //做嵌入式的除外
給初學(xué)者之四:java企業(yè)級(jí)應(yīng)用之軟件篇 嗯,說(shuō)過(guò)了硬件就該是軟件了 這篇是這個(gè)系列的重中之重
首先我們來(lái)說(shuō)說(shuō)什么是軟件,統(tǒng)一一下概念 所謂軟件通俗地說(shuō)就是一套計(jì)算機(jī)程序 實(shí)現(xiàn)了某些功能的計(jì)算機(jī)程序
在很早很早以前,一臺(tái)計(jì)算機(jī)的軟件是不分層次結(jié)構(gòu)的
一臺(tái)計(jì)算機(jī)只有一個(gè)系統(tǒng),這個(gè)系統(tǒng)既是操作系統(tǒng)又是應(yīng)用軟件,與硬件緊密綁定 后來(lái)經(jīng)過(guò)許多年的發(fā)展發(fā)展發(fā)展 人們把一些與硬件緊密相連的又經(jīng)常用到必不可少的功能做到一套程序中去 這一套程序就被人們稱(chēng)做操作系統(tǒng)
另外一些可有可無(wú)的,不同工作適應(yīng)不同環(huán)境的功能封裝到另外一套程序中去 而這一系列程序被人們稱(chēng)作應(yīng)用軟件 如下圖:
------------|應(yīng)用軟件:falshgat/IE/realplayer/winamp..|------------|操作系統(tǒng):UNIX/Windows/Linux/Solaris...|------------前一篇我們知道,硬件分為服務(wù)器工作站與pc 其實(shí)無(wú)論哪種硬件的軟件,都有操作系統(tǒng)與應(yīng)用軟件 ok,那下面我們來(lái)談應(yīng)用軟件
在現(xiàn)在企業(yè)級(jí)應(yīng)用中,我們的應(yīng)用軟件一般分為三層 三層分別是表示層,業(yè)務(wù)邏輯層,數(shù)據(jù)持久層------------------------------|表示層|業(yè)務(wù)邏輯層|數(shù)據(jù)持久層|------------------------------我們來(lái)說(shuō)說(shuō)三層中的代表軟件 表示層
這一層一般在客戶(hù)端pc機(jī)上,最常見(jiàn)的是IE瀏覽器,這就是表示層的軟件 表示層是直接與使用者交互的軟件 業(yè)務(wù)邏輯層
這一層一般在服務(wù)器端,顧名思義,所有業(yè)務(wù)邏輯處理都在這一層完成
最典型的是appserver,比如IBM的websphere,BEA的weblogic還有tomcat/jboss等 這一層也是三層中的重點(diǎn),我們要說(shuō)的大部分內(nèi)容都是關(guān)于這一層的,這個(gè)等會(huì)再說(shuō) 這一層就叫做中間層 數(shù)據(jù)持久層
這一層典型的就是數(shù)據(jù)庫(kù),一般也在服務(wù)器端 但該服務(wù)器一般與裝業(yè)務(wù)邏輯層軟件的服務(wù)器分開(kāi) 當(dāng)然你也可以用IO輸入輸出流往硬盤(pán)上寫(xiě)東西
但沒(méi)人會(huì)建議你這么做,因?yàn)檫@樣做你的數(shù)據(jù)缺乏管理,不管怎樣 這一層要做的就是保存數(shù)據(jù),業(yè)務(wù)邏輯層軟件一般不負(fù)責(zé)保留數(shù)據(jù)
或者說(shuō)業(yè)務(wù)邏輯層只負(fù)責(zé)暫時(shí)儲(chǔ)存數(shù)據(jù),一關(guān)機(jī),業(yè)務(wù)邏輯層數(shù)據(jù)全部over了 那么數(shù)據(jù)的持久化(也就是儲(chǔ)存數(shù)據(jù))就必須要在這一層完成下面放著這些概念不談,我們來(lái)說(shuō)說(shuō)將來(lái)的趨勢(shì) 趨勢(shì)一:
瘦客戶(hù)端,很早很早以前,當(dāng)時(shí)C/S模式也就是client/server 客戶(hù)端軟件大行其道的年代,一個(gè)pc用戶(hù),是采用一個(gè)傻終端連接到服務(wù)器上 然后進(jìn)行相應(yīng)的操作,最典型的就是我們上bbs經(jīng)常用的c-term 這就是那個(gè)時(shí)代的產(chǎn)物,同樣還有我國(guó)現(xiàn)行的機(jī)票定座用的e-term 后來(lái)呢,瀏覽器變得非常流行,人們發(fā)現(xiàn),瀏覽器也能傳遞一些數(shù)據(jù) 雖然這些數(shù)據(jù)并不像那些終端那樣準(zhǔn)確,但應(yīng)付大多數(shù)日常需求足夠了
于是人們就提出一個(gè)瘦客戶(hù)端概念,也就是說(shuō),將來(lái)表示層所有的其他軟件疾揮? 我們唯一需要的就是一個(gè)網(wǎng)頁(yè)瀏覽器,然后通過(guò)瀏覽器輸入ip地址連接到服務(wù)器 然后進(jìn)行相關(guān)的操作,由于網(wǎng)頁(yè)瀏覽器一般每個(gè)操作系統(tǒng)都有自帶一個(gè) 這樣做就達(dá)到了給我們客戶(hù)端瘦身的目的(不需要安裝額外軟件)這樣模式被稱(chēng)作B/S模式,也就是browser/server模式
但需要指出的是,雖然瘦客戶(hù)端是趨勢(shì),但并不代表胖客戶(hù)端沒(méi)有市場(chǎng) 尤其是一些復(fù)雜的業(yè)務(wù)操作,還是瀏覽器這種簡(jiǎn)單軟件無(wú)法勝任的趨勢(shì)二:
傻數(shù)據(jù)庫(kù),ok,首先,我承認(rèn),這個(gè)名詞是我發(fā)明的,但我實(shí)在無(wú)法找到一個(gè)更好的表達(dá) 什么是傻數(shù)據(jù)庫(kù),如果誰(shuí)對(duì)數(shù)據(jù)庫(kù)有所了解的話(huà),就知道,以前的數(shù)據(jù)庫(kù)
有自己的一套管理體系,甚至有自己的客戶(hù)端,比如oracle,mysql,sqlserver都有 在某個(gè)管理工具上寫(xiě)什么sql語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù)是我們以前常做的事 那么將來(lái)我們提倡的是:將所有的業(yè)務(wù)邏輯封裝到業(yè)務(wù)邏輯層去 管理的事情由軟件來(lái)做,由業(yè)務(wù)邏輯層的軟件來(lái)做 所謂傻數(shù)據(jù)庫(kù)就是說(shuō),將來(lái)的數(shù)據(jù)庫(kù)什么事都不用做
只用把數(shù)據(jù)給我保存好就行了,那些復(fù)雜的業(yè)務(wù)邏輯什么外鍵什么關(guān)聯(lián) 都沒(méi)數(shù)據(jù)庫(kù)什么事了,都交給業(yè)務(wù)邏輯層軟件來(lái)做
這樣做的好處就是:我們就不需要這些該死難懂又復(fù)雜的數(shù)據(jù)庫(kù)系列管理工具了 而且這些工具每個(gè)數(shù)據(jù)庫(kù)都有自己的工具,完全不一樣,亂七八糟,沒(méi)有人喜歡面對(duì)他們 除了數(shù)據(jù)庫(kù)維護(hù)人員,也就是DBA,我們是軟件工程師,維護(hù)的事讓他們?nèi)プ?/p>
而且嚴(yán)禁數(shù)據(jù)庫(kù)維護(hù)人員改動(dòng)數(shù)據(jù)庫(kù)的數(shù)據(jù),他們只做備份,必要時(shí)候恢復(fù)一下就是了 了解了這兩個(gè)趨勢(shì)之后,是不是有種砍頭去尾保中間的感覺(jué)?
沒(méi)錯(cuò),未來(lái)的趨勢(shì)就是中間件時(shí)代,中間件工程師將是未來(lái)計(jì)算機(jī)應(yīng)用的主流 那再次統(tǒng)一一下概念,什么是中間件?
記得我上學(xué)的時(shí)候,看ibm的教材,看了半天中間件定義,就看懂記住一句話(huà) 中間件是做別人不愿意去做的事情,現(xiàn)在想想,狗屁定義,呵呵 什么是中間件,中間件是業(yè)務(wù)邏輯層的應(yīng)用軟件 是處理業(yè)務(wù)數(shù)據(jù)與客戶(hù)端之間業(yè)務(wù)邏輯的一種應(yīng)用軟件 一種提供網(wǎng)絡(luò)服務(wù)的服務(wù)器端應(yīng)用軟件
舉個(gè)非常簡(jiǎn)單的例子,網(wǎng)上銀行,某個(gè)人想用IE進(jìn)入工行的賬戶(hù),然后轉(zhuǎn)帳 在這個(gè)例子中,客戶(hù)端表示層顯然是IE,數(shù)據(jù)持久層顯然是銀行的核心數(shù)據(jù)庫(kù) 那么中間件是什么?中間件就是提供這種服務(wù)的系統(tǒng) 這三層的劃分如下
------------------------------|表示層 | 業(yè)務(wù)邏輯層 | 數(shù)據(jù)持久層 |------------------------------| IE | 網(wǎng)上銀行 | 數(shù)據(jù)庫(kù) |------------------------------給初學(xué)者之五:企業(yè)級(jí)應(yīng)用之中間件 前面一篇簡(jiǎn)單介紹了一下應(yīng)用軟件的分層
下面重點(diǎn)介紹一下中間件,也就是業(yè)務(wù)邏輯層的軟件結(jié)構(gòu) 從本系列第二篇我們知道,java程序是跑在虛擬機(jī)之上的 大致結(jié)構(gòu)如下:------------| grogram |------------| 虛擬機(jī) |------------| 操作系統(tǒng) |------------也就是說(shuō)操作系統(tǒng)先運(yùn)行一個(gè)java虛擬機(jī),然后再在虛擬機(jī)之上運(yùn)行java程序 這樣做的好處前面也說(shuō)過(guò)了,就是安全,一旦出現(xiàn)病毒或是其他什么東西 掛掉的是虛擬機(jī),操作系統(tǒng)并不會(huì)受多大影響
這時(shí)候有人可能會(huì)問(wèn),為什么非要虛擬機(jī)?把操作系統(tǒng)當(dāng)成虛擬機(jī)為什么不行? 可以,當(dāng)然可以,但是這樣做某一個(gè)應(yīng)用軟件的bug就可能造成整個(gè)操作系統(tǒng)的死亡 比如說(shuō)我們?cè)谀硞€(gè)服務(wù)器上安裝了一個(gè)收發(fā)電子郵件的軟件和java虛擬機(jī) 那么一旦黑客通過(guò)收發(fā)電子郵件的軟件入侵系統(tǒng),那么操作系統(tǒng)就整個(gè)玩完 那么如果黑客通過(guò)java程序進(jìn)行攻擊的話(huà),那么死的將會(huì)是虛擬機(jī)而不是操作系統(tǒng) 大不了虛擬機(jī)崩潰,而操作系統(tǒng)正常運(yùn)行不受任何影響
舉個(gè)簡(jiǎn)單例子,比如說(shuō)最常見(jiàn)的是將數(shù)據(jù)庫(kù)(DB)與中間件放在同一臺(tái)服務(wù)器上------------------------| program | |-----------| DB | | 虛擬機(jī) | |------------------------| 操作系統(tǒng) |------------------------那么此時(shí)如果沒(méi)有虛擬機(jī),黑客病毒攻擊中間件系統(tǒng),就有可能造成操作系統(tǒng)的死亡 那此時(shí)數(shù)據(jù)庫(kù)也有可能跟著一起玩完,那損失可就大咯
那如果此時(shí)有虛擬機(jī),那么一旦被攻擊,死的是虛擬機(jī),操作系統(tǒng)與數(shù)據(jù)庫(kù)不受任何影響 嗯,回顧完虛擬機(jī),再來(lái)介紹中間件
在很早很早以前,任何一家企業(yè),想要搭建一個(gè)局域網(wǎng)系統(tǒng),他需要請(qǐng)?jiān)S多個(gè)工程師 比如說(shuō)我們想搭建一個(gè)網(wǎng)上銀行,客戶(hù)端用瀏覽器,后臺(tái)數(shù)據(jù)庫(kù)比如說(shuō)用oracle 那么搭建這樣一個(gè)網(wǎng)上銀行,可能需要用到多少個(gè)工程師,我們來(lái)算一算
首先,由于客戶(hù)端用的是瀏覽器,我們需要一些了解網(wǎng)絡(luò)通訊協(xié)議以及一些瀏覽器標(biāo)準(zhǔn)的網(wǎng)絡(luò)工程師
其次,由于后臺(tái)數(shù)據(jù)庫(kù)用的是oracle,那我們還需要請(qǐng)oracle的工程師,因?yàn)閿?shù)據(jù)庫(kù)這一層每個(gè)數(shù)據(jù)庫(kù)公司的接口什么都不 一樣
然后,我們還需要一些操作系統(tǒng)的工程師,因?yàn)槲覀兊南到y(tǒng)需要跟操作系統(tǒng)直接交互 最后,我們需要一些設(shè)計(jì)網(wǎng)上銀行系統(tǒng)及其相關(guān)業(yè)務(wù)的工程師
太多了太多了,這樣一個(gè)中間件隊(duì)伍實(shí)在太龐大了,制作維護(hù)成本實(shí)在太高了 不僅如此,這樣一個(gè)中間件就算做出來(lái),他們所寫(xiě)的代碼也只能滿(mǎn)足這一家公司使用 其它公司統(tǒng)統(tǒng)不能再用,代碼重用率極低,近乎不可能重用 畢竟這個(gè)系統(tǒng)中改動(dòng)任何一個(gè)部分都有可能涉及到整個(gè)系統(tǒng)的改動(dòng) 那么如何降低成本? 我舉出了四組的工程師:
網(wǎng)絡(luò)工程師,數(shù)據(jù)庫(kù)工程師,操作系統(tǒng)工程師以及設(shè)計(jì)網(wǎng)上銀行系統(tǒng)的業(yè)務(wù)工程師 除了最后一組設(shè)計(jì)網(wǎng)上銀行的業(yè)務(wù)工程師之外,前面三組工程師是不是每一個(gè)項(xiàng)目都需要的?
就算不是每一個(gè)項(xiàng)目都需要,至少也是絕大多數(shù)項(xiàng)目需要的吧?
哪個(gè)項(xiàng)目能夠脫離網(wǎng)絡(luò),數(shù)據(jù)庫(kù)和操作系統(tǒng)?不可能,在這個(gè)時(shí)代已經(jīng)很少很少了 好,那既然每個(gè)項(xiàng)目都需要,我們是不是可以用一個(gè)產(chǎn)品來(lái)取代這三組的工程師呢? 我們的業(yè)務(wù)工程師只需要遵循這個(gè)產(chǎn)品所提供的接口,進(jìn)行相應(yīng)的開(kāi)發(fā)就行了 人們提出了一種叫做appserver也就是應(yīng)用服務(wù)器的東西
應(yīng)用服務(wù)器是干什么的?按官方的說(shuō)法,應(yīng)用服務(wù)器是包括有多個(gè)容器的軟件服務(wù)器 那容器是什么?容器(Container)到底是個(gè)什么東西我想多數(shù)人還是不清楚 在說(shuō)這個(gè)之前,先介紹一下組件
什么是組件,組件是什么?組件其實(shí)就是一個(gè)應(yīng)用程序塊 但是它們不是完整的應(yīng)用程序,不能單獨(dú)運(yùn)行 就有如一輛汽車(chē),車(chē)門(mén)是一個(gè)組件,車(chē)燈也是一個(gè)組件 但是光有車(chē)燈車(chē)門(mén)沒(méi)有用,它們不能跑上公路
在java中這些組件就叫做javabean,有點(diǎn)像微軟以前的com組件 要特別說(shuō)明的是,由于任何一個(gè)java文件編譯以后都是以類(lèi)的形式存在 所以javabean肯定也是一個(gè)類(lèi),這是毫無(wú)疑問(wèn)的 好,那么容器里裝載的是什么呢?就是這些組件 而容器之外的程序需要和這些組件交互必須通過(guò)容器
舉個(gè)例子,IE發(fā)送了一個(gè)請(qǐng)求給容器,容器通過(guò)調(diào)用其中的一個(gè)組件進(jìn)行相關(guān)處理之后 將結(jié)果反饋給IE,這種與客戶(hù)端軟件交互的組件就叫做servlet 但是組件有很多種,那么如何區(qū)分這些組件呢?
有多種管理辦法,比如同是同樣是servlet,有些是通過(guò)jsp生成的
而有些是開(kāi)發(fā)人員自己寫(xiě)的,那么通過(guò)jsp生成的servlet集中放在一個(gè)地方 而開(kāi)發(fā)人員自己寫(xiě)的則需要在xml里面配置一些基本的參數(shù)
同時(shí),不同組件有可能還需要繼承一些特定的父類(lèi)或者接口,這也是容器管理的需要 還有其他的一些組件,這里就不一一說(shuō)明舉例了 那么容器有很多種,按照他們裝載的組件類(lèi)型劃分
比如有裝ejb的ejb容器,有裝servlet與jsp還有靜態(tài)頁(yè)面的web容器等等 //這種只含有web容器的應(yīng)用服務(wù)器也被叫做web服務(wù)器 當(dāng)表示層的應(yīng)用軟件通過(guò)網(wǎng)絡(luò)向appserver發(fā)送一個(gè)請(qǐng)求的時(shí)候
appserver自動(dòng)找到相應(yīng)容器中的組件,執(zhí)行組件中的程序塊,把得到結(jié)果返還給客戶(hù) 而我們要做的事就是寫(xiě)組件也就是javabean,然后放到appserver里面去就可以了 至于怎樣與IE通訊,怎樣截獲網(wǎng)絡(luò)上的請(qǐng)求,怎樣控制對(duì)象的數(shù)量等等
這些繁瑣而無(wú)味的工作我們都不管,都由appserver去做吧,把注意力集中在業(yè)務(wù)邏輯上 appserver與其他相關(guān)軟件的關(guān)系如下圖:
------------------------| 表示層 | 業(yè)務(wù)邏輯層 | 數(shù)據(jù)持久層 |------------------------| |-----------------| | | IE | | javabean | | | |->------------------> DB | | client <-appserver <-| | |-------------------------| | | | 虛擬機(jī) | | |--------------|-------------------------|------------| | Windows | Linux/Saloris |LinuxSaloris| |--------------|-------------------------|------------| 圖上可以看出:虛擬機(jī)負(fù)責(zé)處理中間件與操作系統(tǒng)之間的交互 appserver則負(fù)責(zé)組件的管理以及與其他兩層的業(yè)務(wù)交互
要說(shuō)明的是上圖中還包含有應(yīng)用程序客戶(hù)端容器(Application client container)管理應(yīng)用程序客戶(hù)端組件的運(yùn)行,應(yīng)用程序客戶(hù)端和它的容器運(yùn)行在客戶(hù)機(jī) 這種情況比較復(fù)雜一般說(shuō)的是兩個(gè)server之間的通訊
比如jsp/servlet容器在一個(gè)服務(wù)器上,而ejb容器在另外一個(gè)服務(wù)器上等等 這是分布式操作系統(tǒng)大面積應(yīng)用的基礎(chǔ),這個(gè)以后再說(shuō) 嗯,那么話(huà)題再回到中間件上去,什么是中間件?
appserver就是所謂的中間件,但是中間件不僅有appserver,還有其他的東西 換句話(huà)說(shuō),appserver只是中間件的一種
而關(guān)于中間件有諸多規(guī)范以及遵循這些規(guī)范的模型 最流行的規(guī)范無(wú)非兩種,一個(gè)是j2ee還有一個(gè)是.net 但是.net幾乎只有微軟在用,所以很多人把.net這個(gè)規(guī)范就當(dāng)成是微軟的中間件產(chǎn)品 也不為過(guò),畢竟沒(méi)幾個(gè)公司喜歡跟著微軟屁股后面跑的 給初學(xué)者之六:java企業(yè)級(jí)應(yīng)用之綜合篇 我們知道中間件有很多種規(guī)范以及相關(guān)的模型 最流行的一個(gè)是j2ee還有一個(gè)是.net 那么各大公司關(guān)于這兩套規(guī)范各有什么產(chǎn)品以及周邊呢? j2ee: 黃金組合
操作系統(tǒng):Solaris 應(yīng)用服務(wù)器:Weblogic 數(shù)據(jù)庫(kù):Oracle 開(kāi)發(fā)工具:JBuilider/IntelliJ IDEA 優(yōu)點(diǎn):性能一級(jí)棒,大企業(yè)大公司做系統(tǒng)的首選,世界五百?gòu)?qiáng)幾乎都是這套組合 缺點(diǎn):極貴 超級(jí)組合,也是最安全最酷的黃金組合,硬件采用SUN公司的機(jī)器 但是SUN的服務(wù)器很貴,同等價(jià)格不如去買(mǎi)IBM的機(jī)器
SUN的服務(wù)器支持Solaris的效果自然不用說(shuō),Solaris號(hào)稱(chēng)是世界上最安全的操作系統(tǒng) Oracle也是世界上最安全,性能最優(yōu)的數(shù)據(jù)庫(kù),Weblogic是當(dāng)今性能最優(yōu)的appserver JBuilder和IDEA各有所長(zhǎng),JBuilder是Borland公司的招牌之一
是當(dāng)今世界上最流行的java IDE,用delphi寫(xiě)的,但網(wǎng)絡(luò)上評(píng)價(jià)似乎不是很好 IDEA擁有插件功能,界面在所有java IDE中最為漂亮,東歐人開(kāi)發(fā)的產(chǎn)品 東歐人嚴(yán)謹(jǐn)?shù)淖黠L(fēng)在這個(gè)產(chǎn)品上體現(xiàn)得尤為突出,用java寫(xiě)的
IDEA甚至號(hào)稱(chēng)自己被業(yè)界公認(rèn)為是最好的IDE//個(gè)人保留意見(jiàn),沒(méi)有最好只有更好 但我用JBuilder的時(shí)候發(fā)現(xiàn)了不少bug,而至今還沒(méi)有在IDEA上發(fā)現(xiàn)什么bug 個(gè)人推薦IDEA 價(jià)格方面,Solaris開(kāi)源,但是SUN的服務(wù)器比較貴,Weblogic最高是34萬(wàn) oracle標(biāo)準(zhǔn)版要18.6萬(wàn),企業(yè)版要49萬(wàn),JBuilder要2.7萬(wàn)左右 IDEA零售價(jià)大概是500美金,也就是5000多元
另外,雖然理論上這些產(chǎn)品的綜合性能要高于其他選擇,但是必須看到
由于產(chǎn)商之間的利益沖突,比如oracle也有自己的appserver,但是性能不怎樣 使得這幾種產(chǎn)品之間協(xié)作的性能要比預(yù)想中的要差一點(diǎn)點(diǎn)--開(kāi)源系列 操作系統(tǒng):-應(yīng)用服務(wù)器:JBoss 數(shù)據(jù)庫(kù):MySql 開(kāi)發(fā)工具:Netbeans 優(yōu)點(diǎn):便宜,性能未必最佳,但是對(duì)付中小企業(yè)足夠了 缺點(diǎn):出了問(wèn)題自己抗吧
嗯,這是java陣營(yíng)最大的特色,免費(fèi)免費(fèi),還有在開(kāi)發(fā)工具這一欄Eclipse也是免費(fèi)的 但后面要說(shuō),算了,換個(gè)有代表性的開(kāi)源產(chǎn)品來(lái)
tomcat僅有web容器而沒(méi)有ejb容器,而jboss已經(jīng)集成了tomcat 也就是說(shuō)下載了jboss之后,啟動(dòng)的同時(shí)也就啟動(dòng)了tomcat jboss在tomcat基礎(chǔ)之上多加了一個(gè)ejb容器,使得jboss+tomcat成為和weblogic websphere之外又一個(gè)得到廣泛應(yīng)用的appserver 現(xiàn)在大概是這樣,中小型企業(yè)多用jboss,如果應(yīng)用小一點(diǎn)就用tomcat 只有給那些大型企業(yè)做的項(xiàng)目,才會(huì)花錢(qián)去上一個(gè)weblogic或者websphere mysql也是開(kāi)源的數(shù)據(jù)庫(kù),做得非常不錯(cuò),如果系統(tǒng)對(duì)數(shù)據(jù)庫(kù)要求不高 或者安全要求不是非常嚴(yán)格,mysql是一個(gè)非常不錯(cuò)的選擇 開(kāi)發(fā)工具方面,netbeans是sun公司極力推廣的一種IDE 聽(tīng)說(shuō)在北美市場(chǎng)使用量已經(jīng)超過(guò)eclipse了
操作系統(tǒng),軟件再不用錢(qián),服務(wù)器也要錢(qián),看這臺(tái)機(jī)器上跑什么操作系統(tǒng)就用什么了--IBM套餐 操作系統(tǒng):Linux 應(yīng)用服務(wù)器:Websphere 數(shù)據(jù)庫(kù):DB2 開(kāi)發(fā)工具:Eclipse/WebSphere Studio 優(yōu)點(diǎn):服務(wù)好,IBM可以提供全套服務(wù),也可以替客戶(hù)承擔(dān)風(fēng)險(xiǎn) 缺點(diǎn):把機(jī)器數(shù)據(jù)全部交給IBM,安全什么的都由不得你了 呵呵,IBM全套產(chǎn)品,甚至包括硬件設(shè)備IBM的服務(wù)器 由于是一個(gè)公司的產(chǎn)品,各產(chǎn)品之間的協(xié)作自然不錯(cuò)
價(jià)格方面,Linux,DB2,Eclipse都是開(kāi)源產(chǎn)品,Websphere目前零售價(jià)是33.8萬(wàn)人民幣 IBM服務(wù)器不錯(cuò),可以考慮--.net: 微軟陣營(yíng)
操作系統(tǒng):Windows 應(yīng)用服務(wù)器:.net應(yīng)用服務(wù)器(好像叫IIS)數(shù)據(jù)庫(kù):SqlServer 開(kāi)發(fā)工具:MS Visual Studio 優(yōu)點(diǎn):客戶(hù)端的用戶(hù)體驗(yàn)良好,和客戶(hù)端諸多微軟產(chǎn)品的兼容性強(qiáng) 缺點(diǎn):離開(kāi)了微軟,寸步難行,和其他任何一家公司的產(chǎn)品都不兼容 微軟的東西,怎么說(shuō)呢,太專(zhuān)橫了 微軟所有的東西都是圍繞著windows來(lái)做的
.net其實(shí)已經(jīng)可以實(shí)現(xiàn)跨平臺(tái)了,但是微軟出于自身商業(yè)考慮 在其應(yīng)用服務(wù)器跨平臺(tái)的實(shí)現(xiàn)上設(shè)置了種種障礙 而且針對(duì)windows,微軟做了大量的優(yōu)化,可以這么看.net就是與windows捆綁的一套產(chǎn)品
所以有些人說(shuō),微軟的產(chǎn)品離開(kāi)了windows,就是渣
而且.net開(kāi)源選擇也少,安全性方面考慮,windows本身就有一堆補(bǔ)丁要打了 sqlserver也不安全,至于.net到底安全不安全我不清楚,畢竟我沒(méi)怎么用過(guò) 但整體考慮,感覺(jué).net不是大企業(yè)的首選,鑒于其濃厚的商業(yè)背景 也不是中小企業(yè)的首選,但是必須看到
客戶(hù)端也就是微機(jī)pc市場(chǎng)已經(jīng)完全被windows所壟斷
所以在一些快速開(kāi)發(fā),還有和微軟產(chǎn)品兼容性要求較高的領(lǐng)域,.net還是比較有市場(chǎng)的 最后一個(gè)visual studio對(duì)它之前的版本兼容,且支持c,c++,c#,vb等語(yǔ)言 在其傳統(tǒng)領(lǐng)域,比如寫(xiě)一些桌面軟件等客戶(hù)端應(yīng)用上,.net還是第一選擇--最后要說(shuō)明的是 這些組合不是固定不變的
由于J2EE得到了絕大多數(shù)IT企業(yè)的支持以及JAVA跨平臺(tái)的特性 我們可以自由地定制個(gè)性化的組合
比如我可以選擇windows+jboss+eclipse+oracle 也可以選擇solaris+websphere+IDEA+mysql 等等,這些自由組合都是可以的,但是有一點(diǎn)必須說(shuō)明 微軟的東西,一般來(lái)說(shuō)離開(kāi)了windows就不能用
比如你選擇了.net應(yīng)用服務(wù)器,那操作系統(tǒng)就必須是windows 你選擇了sqlserver,那就必須在windows上用
還有就是遵循j2ee規(guī)范的所有的組件都可以在不同的應(yīng)用服務(wù)器上互相移植 比如你可以在測(cè)試的時(shí)候用jboss 而在正式投產(chǎn)上線的時(shí)候使用websphere,只需要在配置文件中作相應(yīng)改動(dòng)即可 給初學(xué)者之七:java企業(yè)級(jí)應(yīng)用之術(shù)語(yǔ)篇
在了解完J2ee的相關(guān)周邊產(chǎn)品之后需要深入J2ee規(guī)范內(nèi)部去了解一下到底這些規(guī)范 這里介紹幾個(gè)最常用的規(guī)范 再繼續(xù)說(shuō)下去之前有必要說(shuō)幾個(gè)常識(shí)
下面進(jìn)入正題 再談容器
前面介紹過(guò)容器,我覺(jué)得有必要再補(bǔ)充一點(diǎn)
容器從某種意義上說(shuō)其實(shí)就是一個(gè)可運(yùn)行的java寫(xiě)的應(yīng)用程序 猶如c++/c編譯后生成的.exe文件
不同的是java編譯后的文件需要用命令行或者腳本啟動(dòng)執(zhí)行 由于容器是由java寫(xiě)的,所以容器都能夠跨平臺(tái)
雖說(shuō)如此,似乎大部分容器都針對(duì)不同的操作系統(tǒng)提供了不同的版本 但可以肯定的一點(diǎn)是,相同容器間的移植組件不需要重新編譯 Servlet web容器組件
Servlet確切地說(shuō),就是web容器運(yùn)行的java組件
與普通javabean不同的是,Servlet定義了一系列方法//比如init()和destroy()供容器調(diào)用,調(diào)用的主要目的是為了管理
當(dāng)一個(gè)request請(qǐng)求被web容器截獲之后,容器分析該請(qǐng)求地址 然后通過(guò)一個(gè)配置文件中的映射表//web.xml 調(diào)用相應(yīng)的Servlet組件處理后將結(jié)果返還給客戶(hù)端 JSP//Java Server Page web容器組件
Servlet出現(xiàn)了之后,人們發(fā)現(xiàn)幾乎沒(méi)有辦法用一個(gè)非常直觀的方式去編寫(xiě)頁(yè)面 畢竟頁(yè)面是html語(yǔ)言編寫(xiě)的
而讓我們用一種流程式的處理方式去逐行教計(jì)算機(jī)如何寫(xiě)html代碼太困難 在這種情況下JSP應(yīng)運(yùn)而生,JSP將java代碼嵌入html代碼內(nèi)部
然后存成.jsp文件,再由計(jì)算機(jī)編譯生成Servlet儲(chǔ)存起來(lái)//注意這個(gè)過(guò)程
所以JSP和Servlet對(duì)于web容器來(lái)說(shuō)其實(shí)是一種東西,雖然它們編寫(xiě)遵循的標(biāo)準(zhǔn)有所不同 極大地簡(jiǎn)化了代碼同時(shí)增加了代碼的可讀性,生產(chǎn)維護(hù)成本下降 值得一提的是,在制定JSP規(guī)范的過(guò)程中,借鑒了ASP的很多規(guī)范 寫(xiě)過(guò)ASP并熟悉Java語(yǔ)言的人應(yīng)該能很快掌握J(rèn)SP EJB//Enterprise JavaBean ejb容器組件
隨著時(shí)間的推移,人們發(fā)現(xiàn)普通的JavaBean似乎并不能滿(mǎn)足企業(yè)級(jí)應(yīng)用的需要 最典型的就是虛擬機(jī)提供的垃圾回收收集機(jī)制也就是GC不夠完善 可以?xún)?yōu)化的余地極大,在這種情況下,EJB應(yīng)運(yùn)而生 EJB和其它組件一樣,不過(guò)遵循了某些規(guī)范而已
但是這些規(guī)范更多的是為充分利用機(jī)器并提高性能為主要目的的 舉個(gè)簡(jiǎn)單例子
比如某個(gè)web服務(wù)器有100個(gè)用戶(hù)同時(shí)連接上
由于網(wǎng)絡(luò)連接是瞬時(shí)連接,所以很多時(shí)候并發(fā)數(shù)并沒(méi)有100那么大 前一秒有可能有30個(gè)請(qǐng)求被發(fā)送過(guò)來(lái)并被處理 后一秒可以只有10個(gè)請(qǐng)求被發(fā)送過(guò)來(lái)并被處理
只有在非常非常極端的情況下才有可能發(fā)生100個(gè)請(qǐng)求同時(shí)被發(fā)送過(guò)來(lái)并被處理的情況 那么我們是否需要保留100個(gè)那么多個(gè)對(duì)象在服務(wù)器的內(nèi)存里面去處理這些請(qǐng)求呢? 很顯然,不需要,大多數(shù)時(shí)候//甚至可以說(shuō)是所有時(shí)候,我不相信有那么極端的情況 我們只需要保存其中的10-30%就夠了,那么什么時(shí)候需要20%,什么時(shí)候需要50% 甚至100%,這個(gè)過(guò)程就交給容器去管理,這就是ejb容器每天在干的事 管理內(nèi)存中活躍的對(duì)象
恩,必須強(qiáng)調(diào)的一點(diǎn)是,由于使用的不成熟 我們經(jīng)常把規(guī)范以及具體的應(yīng)用兩個(gè)名詞混用
舉個(gè)簡(jiǎn)單例子,我們說(shuō)Servlet,極有可能說(shuō)的是Servlet規(guī)范 也有可能說(shuō)的是一個(gè)具體的Servlet,這個(gè)就要看情況而定了 EJB,JSP也是如此
JDBC 和數(shù)據(jù)庫(kù)的連接
這個(gè)嚴(yán)格說(shuō)來(lái)是數(shù)據(jù)庫(kù)產(chǎn)商需要關(guān)心的事 關(guān)于AppServer如何與數(shù)據(jù)庫(kù)的連接
但是也需要開(kāi)發(fā)人員做一點(diǎn)事,因?yàn)锳ppServer不知道什么時(shí)候組件需要用到數(shù)據(jù)庫(kù) 同時(shí)也需要開(kāi)發(fā)人員告訴AppServer他們使用的是什么數(shù)據(jù)庫(kù),ip地址等等 JDBC就是關(guān)于這一套東東的規(guī)范 包括數(shù)據(jù)庫(kù)的產(chǎn)商應(yīng)提供什么樣的接口 AppServer應(yīng)用服務(wù)器應(yīng)該如何去連接 開(kāi)發(fā)人員應(yīng)該如何去配置這些連接等等
還有一些數(shù)據(jù)源,連接池等概念參考相關(guān)數(shù)據(jù)在此就不再贅述 其它的規(guī)范比如JMX等確切地說(shuō)與開(kāi)發(fā)人員關(guān)聯(lián)并不大了 這類(lèi)高級(jí)應(yīng)用只對(duì)AppServer應(yīng)用服務(wù)器產(chǎn)商重要 也不再羅嗦了---------記得聽(tīng)說(shuō)過(guò)這樣一種說(shuō)法
大一時(shí)候不知道自己不知道 大二時(shí)候知道自己不知道 大三時(shí)候不知道自己知道 大四時(shí)候知道自己知道 為什么呢,因?yàn)榇?/p>
一時(shí)候剛進(jìn)大學(xué),什么都不懂,很正常,大家都一樣 大二或者大三時(shí)候開(kāi)始接觸知識(shí),雖然還是不懂,但慢慢地開(kāi)始學(xué)習(xí),開(kāi)始積累 過(guò)了一段時(shí)間,知道自己知道了//也就是前一種說(shuō)法的大四,后一種說(shuō)法的大三 開(kāi)始屁癲,開(kāi)始拽得不得了,覺(jué)得自己懷才不遇,千里馬難尋伯樂(lè)的那種感覺(jué) 有些人是大四畢業(yè)了以后開(kāi)始拽,悟性高一點(diǎn)的,大三就開(kāi)始拽,因人而異 這幾乎是每一個(gè)初學(xué)者經(jīng)過(guò)一段時(shí)間學(xué)習(xí)后的必然階段 不管如何,總之開(kāi)始入門(mén)了,這也不是壞事
但最后每個(gè)人都會(huì)知道自己不知道的,也就是后一種說(shuō)法的大四階段 //前一種說(shuō)法里面的那些家伙估計(jì)要到工作以后才能明白 因?yàn)槿魏我婚T(mén)學(xué)科都博大精深,要是能在兩三年之內(nèi)就統(tǒng)統(tǒng)搞懂 那不是在吹牛就是坐井觀天,java如此,c如此,c++也是如此 那么到了本系列的第七集,可愛(ài)的讀者應(yīng)該處在什么階段呢? 恭喜,在看完這篇文章之后,你就基本處于知道自己不知道的那種階段 離拽起來(lái)還有那么一段距離,因?yàn)槟銈儺吘惯€沒(méi)有學(xué)習(xí)和積累一定的基礎(chǔ)知識(shí) 但是騙騙外行,蒙蒙國(guó)企那些吃閑飯的管理人員問(wèn)題不大
給初學(xué)者之八:java高級(jí)應(yīng)用之框架篇 沒(méi)錯(cuò),我沒(méi)敲錯(cuò)
之所以不再聲稱(chēng)是企業(yè)級(jí)應(yīng)用而稱(chēng)之為高級(jí)應(yīng)用 是因?yàn)橄旅嬉v的東西屬于純民間性質(zhì) 是java具體應(yīng)用的上層建筑,可用可不用,沒(méi)有人強(qiáng)迫你用 首先給框架//framework 下一個(gè)定義
我想讀者你可能聽(tīng)說(shuō)過(guò).net framework這個(gè)概念
沒(méi)錯(cuò),我們將要說(shuō)的framework也和這個(gè)framework差不多 所不同的是.net framework的競(jìng)爭(zhēng)對(duì)象是j2ee那一系列標(biāo)準(zhǔn) 而我們將要說(shuō)到的幾個(gè)框架則應(yīng)用在j2ee的不同層面 單就單個(gè)框架而言,沒(méi)有.net framework管得那么多
但是卻要比它精專(zhuān)多了,而且總量加起來(lái),也遠(yuǎn)比微軟那一套框架要廣泛得多 回到正題,框架是什么?
軟件工程之所以被叫做軟件工程就是因?yàn)橛心敲匆慌擞X(jué)得可以用工程學(xué)里面 那些管理Project的方法來(lái)管理軟件從開(kāi)發(fā)到維護(hù)這一系列流程 那么在建筑工程里面框架是什么?
現(xiàn)在建筑多采用鋼筋混凝土結(jié)構(gòu),注意里面一個(gè)很重要的詞匯:鋼筋 托福閱讀中曾有一題聽(tīng)力就是關(guān)于鋼筋結(jié)構(gòu)的誕生,在美國(guó) 恩,現(xiàn)代建筑中多在建筑起來(lái)之前,先用鋼筋搭建出一個(gè)框架出來(lái) 然后往鋼筋中間填入混凝土,從而形成一個(gè)完成的建筑 而今天要說(shuō)到的框架就是這么一個(gè)東西在每一個(gè)軟件中間的實(shí)現(xiàn)
框架就是那么一個(gè)通過(guò)預(yù)先寫(xiě)好代碼從而幫我們建立起一個(gè)軟件結(jié)構(gòu)的這么一個(gè)東西 這里提一下框架與規(guī)范//主要指J2ee規(guī)范也就是官方標(biāo)準(zhǔn)的區(qū)別 從某種意義上說(shuō),J2ee規(guī)范本身就是一個(gè)框架 無(wú)論是web容器也好,還是ejb容器也好,它們都開(kāi)發(fā)了一部分通用的代碼 并且?guī)椭覀兇罱ㄆ饋?lái)了一個(gè)軟件結(jié)構(gòu),我們要做的就是往里面填入組件 比如ejb/servlet/jsp等等
沒(méi)錯(cuò),要這么理解也沒(méi)錯(cuò),但是為了避免混亂,我們還是嚴(yán)格區(qū)分開(kāi)來(lái) 本文中將要提到的框架如無(wú)特別說(shuō)明,就是指的是非官方標(biāo)準(zhǔn)的框架 規(guī)范是規(guī)范,而框架是建立在規(guī)范之上的一種東西
可以說(shuō)是標(biāo)準(zhǔn)的延續(xù),或者說(shuō)是民間的嘗試,總之是這么一個(gè)非官方的東西 說(shuō)到這里順便提一下JCP組織也就是Java Community Process/Java社區(qū) 當(dāng)初Sun公司在java發(fā)布之初,為了提倡開(kāi)源和共項(xiàng)
同時(shí)也出于一個(gè)提出合理的標(biāo)準(zhǔn)的目的,而讓廣大的開(kāi)發(fā)者參與標(biāo)準(zhǔn)的制定 而成立了這樣一個(gè)社區(qū),現(xiàn)在還健在,網(wǎng)址是jcp.org 每一個(gè)新的規(guī)范發(fā)布之前都會(huì)在這個(gè)社區(qū)廣泛討論,最終對(duì)規(guī)范的制定產(chǎn)生巨大的影響 其中就包括企業(yè)級(jí)的參與者,相當(dāng)有名的JBoss以及我國(guó)的金碟公司都是其中的成員 下面介紹一下幾個(gè)相當(dāng)著名的框架,必須要指出的是,雖然框架大多開(kāi)源 但并不代表所有的框架都開(kāi)源,比如.net framework,但是java框架大多數(shù)開(kāi)源 言歸正傳
Struts 表示層框架,名字來(lái)源于飛機(jī)的金屬框架 可能有讀者會(huì)提問(wèn)了 表示層不是客戶(hù)端么?
沒(méi)錯(cuò),但是語(yǔ)言這東西,眾口爍金,別人都這么說(shuō)你就不好不這么說(shuō)了 最早表示層說(shuō)的是客戶(hù)端,后來(lái)隨著時(shí)間的發(fā)展 人們也把服務(wù)器端直接與客戶(hù)端//比如IE 打交道的那部分也稱(chēng)為表示層//JSP+Servlet 那么表示層框架是干什么的呢?
早先大規(guī)模應(yīng)用JSP的時(shí)候,人們發(fā)現(xiàn),JSP里面充斥著邏輯代碼與數(shù)據(jù) 可讀性極差,于是人們借用很早很早以前的MVC模式的思想 把表示層組件分為V-Viewer,也就是JSP M-Model模型,一般來(lái)說(shuō)是一個(gè)JavaBean C-Controller控制器,一般來(lái)說(shuō)是一個(gè)Servlet 所有人通過(guò)JSP和服務(wù)器打交道,發(fā)送請(qǐng)求,Viewer把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給Controller Controller通過(guò)調(diào)用一個(gè)Model來(lái)處理該請(qǐng)求,然后返回?cái)?shù)據(jù)到Viewer 這么一個(gè)過(guò)程,從而達(dá)到數(shù)據(jù)與邏輯的剝離,增強(qiáng)代碼可讀性,降低維護(hù)成本 而幫助人們實(shí)現(xiàn)這一系列東西的就是Struts框架,就是這么一個(gè)東西 Struts的競(jìng)爭(zhēng)對(duì)手主要是產(chǎn)商們極力倡導(dǎo)的JSF也就是Java Server Faces 但是由于Struts出道時(shí)間早,所以應(yīng)用比較多 JSF則是產(chǎn)商們大力支持,前景看好
對(duì)于這一層來(lái)說(shuō),在JSP的html代碼中出現(xiàn)的java語(yǔ)句越少越好 因?yàn)閖ava代碼越少說(shuō)明頁(yè)面處理的業(yè)務(wù)邏輯越少,也越合理 這也是Struts最初的目的,記住這話(huà)
Spring 大名鼎鼎的Spring框架
有人曾說(shuō)2005年一片叫春之聲,指的就是該框架
Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一書(shū) Rod Johnson認(rèn)為,J2ee里面的那一套//尤其是ejb 太重了,對(duì)于單機(jī)的系統(tǒng)來(lái)說(shuō),沒(méi)有必要使用那么復(fù)雜的東西 于是就開(kāi)始設(shè)計(jì)并引導(dǎo)Spring小組開(kāi)發(fā)出這樣一個(gè)構(gòu)架
不能不說(shuō)他是個(gè)天才,因?yàn)榈牡拇_確不是所有的系統(tǒng)都是跨多服務(wù)器的 沒(méi)有必要把一個(gè)簡(jiǎn)單的系統(tǒng)設(shè)計(jì)得那么復(fù)雜//天才的那幾個(gè)共性又體現(xiàn)出來(lái)了 Spring從誕生之日起就是針對(duì)EJB的,力爭(zhēng)在不少應(yīng)用上取代EJB 而它也確實(shí)達(dá)到了這個(gè)目的
現(xiàn)在包括WebLogic等主流應(yīng)用服務(wù)器還有主流IDE都開(kāi)始逐漸接受該框架 并提供相應(yīng)支持
提到Spring就不能不說(shuō)控制反轉(zhuǎn)Ioc//Inversion of Control 和依賴(lài)注射DI//Dependency Injection 什么叫控制反轉(zhuǎn)呢?
套用好萊塢的一句名言就是:你呆著別動(dòng),到時(shí)我會(huì)找你。
Hibernate 名字取材自O(shè)RM最早的一句玩笑話(huà)//ORM就是OR-Mapping 說(shuō)用了ORM之后,程序員就可以去冬眠了,而不需要操心那么多事
這里不得不說(shuō)的是,該框架由于做得太好,以至于被J2ee招安,成為EJB3.0的一部分 替代原有EJB2.X里面關(guān)于Entity Bean而成為EJB ORM的工具 這里解釋一下ORM//OR-Mapping 中文名對(duì)象關(guān)系映射
什么意思呢?我們知道傳統(tǒng)的數(shù)據(jù)庫(kù)都是關(guān)系型的
一條條記錄以表格的形式儲(chǔ)存,而表與表之間充斥著是關(guān)系/關(guān)聯(lián)
比如說(shuō)一個(gè)人,名字zhaoce,性別男,年齡23那么數(shù)據(jù)庫(kù)中是這么儲(chǔ)存的 姓名 性別 年齡 zhaoce m 23 某女 f 22 而實(shí)際應(yīng)用服務(wù)器中的實(shí)體都是以對(duì)象的形式存在,一個(gè)個(gè)對(duì)象 zhaoce是以這種形式存在的 Human human=new Human();human.setName(“zhaoce”)human.setSex(“m”);human.setAge(23);這樣的,那么我們知道,傳統(tǒng)的JDBC是通過(guò)一個(gè)二維字符串將數(shù)據(jù)取出 需要我們自己將其包裝成對(duì)象,在存入的時(shí)候,我們還需要將對(duì)象拆開(kāi) 放入sql語(yǔ)句中//Insert into Huamn values('zhaoce','m',23)然后執(zhí)行該sql語(yǔ)句
太麻煩太麻煩,ORM理念的提出改變了這一切,ORM認(rèn)為,這些東西應(yīng)該由框架來(lái)做 而不是程序員,程序員做他該做的,不要為這種破事分心,還測(cè)試半天 于是就出現(xiàn)了Hibernate,JDO,TopLink等等,甚至.net里面也有ADO.net 過(guò)去一段時(shí)間是Hibernate和JDO爭(zhēng)風(fēng),現(xiàn)在看來(lái)Hibernate逐漸成為主流并被官方接納 成為規(guī)范標(biāo)準(zhǔn)之一,替代掉原來(lái)EJB2.X的ORM EntityBean TopLink則是Oracle公司推出和Oracle數(shù)據(jù)庫(kù)結(jié)合的一種ORM 商業(yè)用軟件,貴且復(fù)雜,不過(guò)正在逐漸開(kāi)放
而象表示層一樣,這一種專(zhuān)門(mén)面對(duì)數(shù)據(jù)層的代碼也被稱(chēng)為數(shù)據(jù)持久層 所以數(shù)據(jù)持久層這一概念有時(shí)不僅僅指代數(shù)據(jù)庫(kù)
關(guān)于ORM,最高的境界應(yīng)該是在java代碼中不出現(xiàn)任何一句的sql語(yǔ)句 注意,是不包括sql語(yǔ)句,Hibernate的hql以及ejb的ejb-ql不算在內(nèi)
至于出現(xiàn)不出現(xiàn)hql/ejb-ql等替代ql,這要視具體情況而定,不過(guò)最好也是不出現(xiàn) 當(dāng)然最后所說(shuō)的過(guò)分理想的情況往往不現(xiàn)實(shí),總之一句話(huà)
以sql為代表的ql/*還有hql,ejbql等*/語(yǔ)句在代碼中出現(xiàn)得越少越好 記住這話(huà),現(xiàn)在未必能夠理解,學(xué)了以后就懂了
這三個(gè)是目前最為常用的框架 而目前光已公布的框架就>500 還在不停增加中,不可能一一列舉,有興趣的可以去看相應(yīng)文檔 要指出的是框架不是應(yīng)用程序
只是一堆組件的有序復(fù)合,應(yīng)用時(shí)不能脫離于應(yīng)用服務(wù)器單獨(dú)存在給初學(xué)者之九:收尾 最后一篇介紹幾個(gè)常見(jiàn)的概念 設(shè)計(jì)模式
這可不僅是java獨(dú)有
我看的書(shū)就是c++和smalltalk例子的 先說(shuō)說(shuō)什么是設(shè)計(jì)模式
模式是什么?模式是經(jīng)驗(yàn)的總結(jié),潛規(guī)則的抽象
什么意思呢?比如說(shuō)我們坐飛機(jī),上飛機(jī)前需要經(jīng)過(guò)幾個(gè)步驟 什么安檢領(lǐng)取登機(jī)牌之類(lèi)的,這一套流程能不能改呢?
可以,但為什么幾乎全世界的航空公司登機(jī)前都是這一套流程呢? 因?yàn)楹娇展窘?jīng)過(guò)長(zhǎng)期實(shí)踐之后得出了一堆結(jié)論和經(jīng)驗(yàn) 并認(rèn)為這樣做才是最安全,或說(shuō)是最有效率的 這就是模式,模式是編程高手之間交流的橋梁 兩個(gè)編程高手通過(guò)統(tǒng)一命名的模式了解對(duì)方的思想
當(dāng)然不借助模式可不可以?當(dāng)然可以,只是模式無(wú)處不在,你不知道而已
又比如吃飯,每吃一口飯,我們要先端碗,拿筷子,張嘴,塞飯入口,咀嚼最后吞咽 這就是一套模式,我們給這套模式命名為吃飯 那么當(dāng)老爸叫吃飯的時(shí)候,我們就能明白什么意思
而不用老爸進(jìn)來(lái)囈囈啊啊并比畫(huà)上半天,啞語(yǔ)也不是這么用的 這就是模式,已知的模式有400多種//好象更多,不記得了 比如數(shù)據(jù)庫(kù)有數(shù)據(jù)庫(kù)的設(shè)計(jì)模式,編程有編程的模式等等
面向?qū)ο笥谐S玫?1種模式,需要掌握,主要分為創(chuàng)建,行為,結(jié)構(gòu)三類(lèi) J2ee有J2ee的模式,Sun公司出了一本書(shū)叫《J2EE核心模式》可以拿來(lái)看看 必需要指明的是,模式不是規(guī)范,比如吃飯模式
沒(méi)有人規(guī)定你吃飯非得要那么吃,你可以端碗,上拋,張嘴在下落后連碗一起吞咽 這也可以,只要你愿意,同樣,只要你愿意,你就可以不遵循模式
模式之外還有反模式,學(xué)模式不可定勢(shì),不要學(xué)死,活學(xué)活用,無(wú)招勝有招才是最高境界 JavaDoc 文檔工具,極其好用
可以根據(jù)注釋自動(dòng)生成HTML文檔 Ant 98年,有一位程序員在從歐洲飛回美國(guó)的飛機(jī)上想到了這么一個(gè)東西 從而改變了整個(gè)世界,他的名字叫James Duncan Davidson 組織管理工具,可以這么描述它
比如你想在編譯之后自動(dòng)再次生成JavaDoc 那么你只需要編輯Ant腳本//對(duì),就像Windows腳本那樣 然后批處理就可以了,不過(guò)現(xiàn)在Ant已經(jīng)廣泛集成到IDE中去 不需要自己手動(dòng)編寫(xiě),不過(guò)如果想要炫炫,據(jù)說(shuō)此招百試不爽 JUnit 測(cè)試工具,Unit家族可不只有JUnit 還有其它版本的,這個(gè)不細(xì)說(shuō),具體實(shí)踐一下就明白了 POJO //Plain Old Java Object 就是傳統(tǒng)的Java對(duì)象,也就是一個(gè)JavaBean 由虛擬機(jī)來(lái)掌握其生死
常用的兩個(gè)管理構(gòu)架/規(guī)范是Spring和EJB容器 命名由來(lái)是某人//名字我忘了
覺(jué)得我們使用了太多的規(guī)范,以至于我們都忘記了純粹的java對(duì)象 以至于我們都忽略了它的存在,所以叫了這么一個(gè)名字 以喚醒人們的記憶,這個(gè)意義上來(lái)說(shuō)EJB其實(shí)不能算是POJO 畢竟遵循了一堆的接口,但是不管怎樣,接口歸接口,還是沒(méi)有繼承類(lèi) 沒(méi)有被強(qiáng)加什么//遵循可以寫(xiě)空方法假遵循 所以說(shuō)還是POJO也對(duì) 但是由于這種東西缺乏管理,不象Servlet有專(zhuān)門(mén)的容器管理并繼承了一定的類(lèi) 而沒(méi)有管理的對(duì)象在虛擬機(jī)中是很危險(xiǎn)的,因?yàn)槔厥諜C(jī)制各個(gè)虛擬機(jī)不同 而且也不怎樣,極有可能長(zhǎng)時(shí)間不回收,這樣在企業(yè)級(jí)的應(yīng)用中呢 就有可能造成內(nèi)存大量被占用從而死機(jī),毫無(wú)疑問(wèn),這種機(jī)制需要優(yōu)化 這種優(yōu)化就是通過(guò)EJB容器或者Spring構(gòu)架來(lái)實(shí)現(xiàn) 這么做還有一個(gè)好處就是迫使程序員對(duì)每一個(gè)類(lèi)做封裝
強(qiáng)迫他做管理,以達(dá)到防止內(nèi)存泄露的目的,內(nèi)存泄露最經(jīng)常出現(xiàn)的錯(cuò)誤就是 引用未釋放,引用最典型體現(xiàn)在new這個(gè)關(guān)鍵字上,new得越多引用得越多 隨著時(shí)間地增長(zhǎng),有可能導(dǎo)致循環(huán),不停new new new new new.....其中哪怕只要有一個(gè)new處理不當(dāng),虛擬機(jī)無(wú)法回收內(nèi)存 那就極有可能完蛋,而且這種小bug越是在大的項(xiàng)目越是難以找到 有可能因?yàn)橐粋€(gè)人而影響整個(gè)項(xiàng)目組,所以不妨記住我的一條經(jīng)驗(yàn) 好的系統(tǒng)框架不應(yīng)該在業(yè)務(wù)邏輯流程中出現(xiàn)new關(guān)鍵字 現(xiàn)在不理解也無(wú)所謂,將來(lái)有一天會(huì)明白的 SOA 面向服務(wù)的構(gòu)架
不說(shuō)太多,這個(gè)屬于上上層建筑
不過(guò)不妨記住我的一句話(huà),可以幫助理解這個(gè)概念 面向什么就是對(duì)什么做封裝 面向?qū)ο缶褪菍?duì)對(duì)象做封裝 面向服務(wù)類(lèi)似,剩下的靠悟性 反射
1.4新增功能,非常強(qiáng)大
通過(guò)反射,程序可以解析出類(lèi)本身的屬性也就是變量
/注意這里說(shuō)的屬性不是.net里面的屬性,我不喜歡微軟造的新名詞,亂 還有行為也就是方法,然后通過(guò)invoke()方法調(diào)用該方法 甚至可以新增對(duì)象等,java首創(chuàng),本是其它語(yǔ)言所沒(méi)有的
后來(lái)被微軟抄了去,利用該功能,開(kāi)源框架廣泛受益并大量采用,近乎瘋狂地使用 具體就不說(shuō)了,最后要指出的是,有一種說(shuō)法是利用反射會(huì)降低效率 在早期的時(shí)候,的確是,現(xiàn)在不會(huì)了,放心使用 容器
5.0以后的版本在J2SE中都出現(xiàn)了容器 各位甚至可以自己嘗試用標(biāo)準(zhǔn)庫(kù)去使用容器 書(shū)籍
《Thinking in Java》 //實(shí)話(huà)說(shuō),一般,尤其是翻譯后的版本,原版還行 《Java教程》 //電子工業(yè)出版社出版的那本,上下冊(cè),很厚,但翻譯得不錯(cuò) 《21天學(xué)通Java》 //入門(mén)極好,但是《21天學(xué)通j2ee》極爛,不要買(mǎi) 《Mastering EJB》 //翻譯過(guò)的書(shū)質(zhì)量我不清楚,估計(jì)不怎樣,請(qǐng)看原版書(shū)籍 《精通Hibernate》 //看清楚作者,孫衛(wèi)琴,其它人的別買(mǎi)
其它的可以不用了,網(wǎng)絡(luò)上的遠(yuǎn)比書(shū)上來(lái)得多,來(lái)得好,雖然也來(lái)得雜 最后的建議 一,不要做一個(gè)浮躁的人 二,學(xué)好英語(yǔ),很重要 三,閱讀源代碼和文檔
四,共享源代碼,不要做一個(gè)功利的人 五,熱愛(ài)Java 相信能看到這里的朋友都是真心想學(xué)習(xí)java,在編程的路上你已經(jīng)成功的走出了第一步,接下來(lái)就是努力的走下去。。加Java學(xué)習(xí)群四一八,三五五,五三一。
第四篇:預(yù)算員崗位職責(zé)(初學(xué)者必看)
預(yù)算員崗位職責(zé)
①負(fù)責(zé)編制公司及項(xiàng)目部預(yù)算; ②負(fù)責(zé)編制公司及項(xiàng)目部結(jié)算;
③負(fù)責(zé)起草合同草案及合同管理(包括合同的修訂、存檔和執(zhí)行情況的跟蹤管理); ④負(fù)責(zé)公司招投標(biāo)工作;
⑤協(xié)助及指導(dǎo)項(xiàng)目部解決在施工過(guò)程中所遇到與工程預(yù)決算相關(guān)的問(wèn)題; ⑥提高自身業(yè)務(wù)素質(zhì)以提高公司風(fēng)險(xiǎn)防范能力等。
現(xiàn)就針對(duì)這以上幾個(gè)方面工作內(nèi)容制定我們的工作思路,并逐條做個(gè)簡(jiǎn)述: 1.預(yù)算編制需從各個(gè)方面入手保證預(yù)算的精確度及公司利潤(rùn):
①?gòu)V泛收集及長(zhǎng)期積累各種資料; ②深入現(xiàn)場(chǎng)熟悉施工過(guò)程; ③熟悉施工圖紙;
④熟悉和掌握定額規(guī)定準(zhǔn)確計(jì)算工程量、正確套用定額單價(jià)、合理編制補(bǔ)充定額;
⑤編制預(yù)算時(shí)必須要考慮到工程決算并為決算留下余地(包括:1.對(duì)能早期結(jié)帳收回工程款的項(xiàng)目(如土方、基礎(chǔ)等)的單價(jià)可報(bào)以較高價(jià),以利于資金周轉(zhuǎn),對(duì)后期項(xiàng)目(如裝飾、電氣設(shè)備安裝等)單價(jià)可適當(dāng)降低2.估計(jì)今后工程量可能增加的項(xiàng)目,其單價(jià)可提高,而工程量可能減少的項(xiàng)目,其單價(jià)可降低3.圖紙內(nèi)容不明確或有錯(cuò)誤,估計(jì)修改后工程量要增加的,其單價(jià)可提高,而工程內(nèi)容不明確的,其單價(jià)可降低4.對(duì)于暫定項(xiàng)目,其實(shí)施的可能性大的項(xiàng)目,價(jià)格可定高價(jià),估計(jì)該工程不一定實(shí)施的可定低價(jià));
⑥加強(qiáng)復(fù)核工作等。
2.工程決算是工程造價(jià)管理的重點(diǎn),工程決算的目的就是最大限度提高工程項(xiàng)目的利潤(rùn)空間。目前建筑業(yè)競(jìng)爭(zhēng)比較激烈,施工合同的條件對(duì)我們施工單位很是苛刻,如果公司想創(chuàng)造效益,必須保證決算的質(zhì)量。為了今后更好的開(kāi)展決算工作,給公司帶來(lái)效益必須做好以下幾點(diǎn):
①平時(shí)做好資料及聯(lián)系單的收集工作;
②督促項(xiàng)目經(jīng)理施工過(guò)程中的變更必須及時(shí)簽證; ③甲方反饋的簽證必須仔細(xì)審核;
④工程施工過(guò)程及與甲方核對(duì)工程量過(guò)程中必須多和項(xiàng)目經(jīng)理溝通; ⑤仔細(xì)研究合同及聯(lián)系單,找出其中的漏洞;
⑥充分了解原預(yù)算書(shū)中的所留下的余地并將其發(fā)揮作用等。
3.合同簽訂的內(nèi)容因項(xiàng)目情況和合同性質(zhì)、原招標(biāo)文件規(guī)定、發(fā)包人的要求而異。但是作為施工方來(lái)說(shuō)施工合同直接關(guān)系到公司的效益,所以合同的簽訂必須反復(fù)斟酌,盡量使施工合同能夠?yàn)楣緞?chuàng)造利潤(rùn)。我們經(jīng)營(yíng)預(yù)算科在合同起草、談判過(guò)程中必須注意以下幾個(gè)方面: ①認(rèn)真重新核實(shí)投標(biāo)報(bào)價(jià)的工程項(xiàng)目?jī)?nèi)容和范圍,盡量把對(duì)我們有利的東西反應(yīng)到合同中去;
②對(duì)于在談判討論中經(jīng)雙方確認(rèn)的內(nèi)容及范圍方面的修改或調(diào)整,應(yīng)和其他所有在談判中雙方達(dá)成一致的內(nèi)容一樣,以文字方式確定下來(lái),并以“合同補(bǔ)充”或“會(huì)議紀(jì)要”方式作為合同附件并說(shuō)明構(gòu)成合同一部分;
③發(fā)包人提出增減的工程項(xiàng)目或要求調(diào)整的工程量和工程內(nèi)容時(shí),務(wù)必在技術(shù)和商務(wù)等方面重新核實(shí),確有把握方可應(yīng)允。同時(shí)以書(shū)面文件及工程量表或圖紙予以確認(rèn);
④對(duì)于原招標(biāo)文件中的“可供選擇的項(xiàng)目”和“臨時(shí)項(xiàng)目”應(yīng)力爭(zhēng)說(shuō)服發(fā)包人在合同簽訂前予以確認(rèn),或商定一個(gè)確認(rèn)最后期限等。
4.招投標(biāo)工作的開(kāi)展是公司運(yùn)營(yíng)的核心部分,作為施工方為了中標(biāo)并獲得期望的效益,投標(biāo)程序全過(guò)程幾乎都要研究投標(biāo)報(bào)價(jià)技巧問(wèn)題,在投標(biāo)工作中我們必須注意以下幾點(diǎn):
①投標(biāo)前應(yīng)仔細(xì)閱讀招標(biāo)文件的所有內(nèi)容,按招標(biāo)文件的要求提供投標(biāo)文件,并盡量了解招標(biāo)人的意圖; ②“第1點(diǎn)中提到的為工程決算留余地”;
③所有投標(biāo)文件都必須按招標(biāo)方在投標(biāo)邀請(qǐng)中規(guī)定的投標(biāo)截止時(shí)間之前送至招標(biāo)方;
④在投標(biāo)過(guò)程中,還可以考慮其他許多重要因素,如縮短工期,提高工程質(zhì)量,降低支付條件要求,提出新技術(shù)和新設(shè)計(jì)方案,以及提供補(bǔ)充物資和設(shè)備等,以此優(yōu)惠條件爭(zhēng)取得到招標(biāo)人的贊許等。
5.在工程施工過(guò)程中常與項(xiàng)目經(jīng)理進(jìn)行溝通,了解工地施工情況。
6.目前我們的預(yù)算水平還存在不足之處。因此,我們應(yīng)該抓緊學(xué)習(xí),跟上時(shí)代的步伐。除了對(duì)本專(zhuān)業(yè)的知識(shí)進(jìn)行更新提高外,還應(yīng)該結(jié)合工作廣泛了解和初步掌握有關(guān)的工程技術(shù)專(zhuān)業(yè)知識(shí)。只有對(duì)工程內(nèi)容有比較全面的掌握,才能做好工程預(yù)決算工作。試想,如果我們對(duì)編制預(yù)決算的工程都不甚了解,對(duì)其專(zhuān)業(yè)知識(shí)非常模糊,又怎么能夠進(jìn)行工作呢?工程預(yù)決算從業(yè)人員首先應(yīng)該是本專(zhuān)業(yè)的專(zhuān)家,同時(shí)也應(yīng)該是工程方面的行家。只有高水平的人才才能夠編制出高水平的工程預(yù)決算。專(zhuān)業(yè)的地位與專(zhuān)業(yè)所起的作用是成正比的。我們應(yīng)該從提高個(gè)人的水平入手,逐步提高自身工作水平,為公司發(fā)展發(fā)揮我們應(yīng)有的作用。
第五篇:plc學(xué)習(xí)心得,初學(xué)者必看
1.不要看到別人的回復(fù)第一句話(huà)就說(shuō):給個(gè)代碼吧!你應(yīng)該想想為什么。當(dāng)你自己想 出來(lái)再參考別人的提示,你就知道自己和別人思路的差異。
2.別小家子氣,買(mǎi)本書(shū)幾十塊都舍不得,你還學(xué)個(gè)P。為了省錢(qián)看電子書(shū),浪費(fèi)的時(shí)間絕對(duì)超過(guò)書(shū)的價(jià)值。當(dāng)然如果查資料,只能看PDF。
3.學(xué)習(xí)新的開(kāi)發(fā)軟件時(shí),一定要看幫助手冊(cè)。買(mǎi)的書(shū)不夠全面。剛接觸一個(gè)軟件,什么都不懂,就盲目的問(wèn)東問(wèn)西,讓人看起來(lái)很幼稚。
4.不要蜻蜓點(diǎn)水,得過(guò)且過(guò),細(xì)微之處往往體現(xiàn)實(shí)力。
5.把時(shí)髦的技術(shù)掛在嘴邊,還不如把過(guò)時(shí)的技術(shù)記在心里。
6.看得懂的書(shū),請(qǐng)仔細(xì)看;看不懂的書(shū),請(qǐng)硬著頭皮看。別指望看第一遍書(shū)就能記住和掌握什么——請(qǐng)看第二遍、第三遍。
7.多實(shí)踐,調(diào)試,去寫(xiě)去調(diào),只用軟件模擬,是永遠(yuǎn)成不了高手的。
8.保存好你做過(guò)的所有的源程序、原理圖等----那是你最好的積累之一。
9.對(duì)于網(wǎng)絡(luò),還是希望大家能多利用一下,很多問(wèn)題不是非要到論壇來(lái)問(wèn)的,首先你要學(xué)會(huì)自己找答案,比如google、百度都是很好的搜索引擎,你只要輸入關(guān)鍵字就 能找到很多相關(guān)資料,別老是等待別人給你希望,看的出你平時(shí)一定也很懶!到一個(gè)論壇,你學(xué)會(huì)去看以前的帖子,不要什么都不看就發(fā)帖子問(wèn),也許你的問(wèn)題早就有人問(wèn)過(guò)了,你再問(wèn),別人已經(jīng)不想再重復(fù)了,做為初學(xué)者,誰(shuí)也不希望自己的帖子沒(méi)人回的。
引用 回復(fù) 舉報(bào) 評(píng)分
什么樣的人是浮躁的人
浮躁的人容易問(wèn):誰(shuí)有xxx程序嗎?--(你給人家多少錢(qián)啊?自己的勞動(dòng)白送你?)浮躁的人容易說(shuō):【男兒膝下有黃金】xxx ---(就算網(wǎng)絡(luò)也要點(diǎn)尊嚴(yán)吧?)浮躁的人容易說(shuō):緊急求救---(其實(shí)只是個(gè)簡(jiǎn)單的課程設(shè)計(jì))
浮躁的人容易說(shuō):有沒(méi)有xxx中文資料?---一個(gè)字:懶。別說(shuō)別的。E文不行?誰(shuí)不是從 ABC學(xué)起的???
浮躁的人容易說(shuō):求xxx,我的email是xxx@xxx.com,然后消失 ---- 你以為你是大爺啊,人 家請(qǐng)你吃飯,還要喂到你口里不成?
浮躁的人容易問(wèn):做PLC有錢(qián)途嗎----只是為了錢(qián),搞不好技術(shù)的,你去搶銀行好了。浮躁的人容易說(shuō):哪里有xxx資料?(其實(shí)大部分資料網(wǎng)絡(luò)上都有,但是偏偏來(lái)找人 問(wèn),懶?。└≡甑娜朔謨煞N:只觀望而不學(xué)的人;只學(xué)而不堅(jiān)持的人; 浮躁的人永遠(yuǎn)不是一個(gè)高手。