<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Courage is grace under pressure

    用我一輩子去追求

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    • 隨筆 - 17
    • 文章 - 1
    • 評論 - 2
    • 引用 - 0

    常用鏈接

    留言簿(43)

    隨筆檔案

    文章檔案

    相冊

    XML的Blog

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    2006年9月14日 #

    全國省市縣無刷新多級聯動菜單

         摘要: 全國省市縣無刷新多級聯動菜單 <html><head><title>省市縣關聯菜單</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style>body,select{font-size:9pt;fon...  閱讀全文

    posted @ 2006-09-14 18:14 xyh 閱讀(2887) | 評論 (0)編輯 收藏

    2006年9月8日 #

    一場感動四千人的報告(轉載)

    ??????? 同學們,在這個世界上,在成功者的隊伍里面,很多人并不見得很聰明,在失敗者的隊伍里面很多人并不見得愚笨。其實,有一樣東西比聰明的腦袋更重要,那就是人的心靈和意志,一個人的貧窮很大的程度是心靈的貧窮,一個人的成功很大程度是意志的成功!

    ??????? 去年發生的馬加爵事件,大家都知道,他最致命的弱點是什么呢?就是心靈有問題,斗志有問題。在做案前,他花了很多時候很多精力上網查資料:用什么工具殺人最隱蔽,逃跑時走什么路線等等,他都花了很多心思去考慮,但是,整個過程他都沒為父母考慮過,馬加爵他沒有想到,當自己的父母以負罪的心情,給那些被殘暴殺害大學生的父母們下跪時,那些老人會操起棍棒就想——這是心靈也了問題呀!另外,他的意志很薄弱,別人一句話就能把他打倒,就起了殺人的念頭。馬加爵很聰明,在大家與同學玩撲克的時候總是贏,他的同學跟他開玩笑,你這小子為人有問題,打撲克總是搞假總是贏牌,所以,大家都不喜歡你,過生日聚會都不想喊你這個為人虛假的人——為了這句話,馬加爵就生出殺人的歹心……

    ?????? 一個嬰兒生下來,沒有人會問是生下一個國家主席還是一個部長;是生下一個老板還是一個打工仔;是生下一個教授還是一個流浪漢,人們只會問:是個男孩還是個女孩?是個少爺還是個千金?對一個剛生下來的孩子來說,將來的一切都未知數,沒有誰知道也不可能知道他將來會成為什么樣的人。由此說來,人剛生下都是一樣的,要有差別那大體上就只有男女之別。然而,隨著時間的推移,環境的改變,學習的艱難,世道的艱辛,人情的冷暖,人們的心靈和意志就會慢慢地發生改變,這樣的改變將會導致人與人之間的差距,于是,有些人很成功,有些人很失敗;有些人很出色,有些人很平庸;有些人很幸福,有些人很痛苦。

    ?????? 你想在這個激烈競爭的社會成為一個很成功、出色、幸福的人,關鍵在于你有沒有一顆永遠不冷不死的心!有沒有一股不很管是主觀因素還是客觀因素都打不垮的意志!(輕柔的音樂響起)在這個美好的下午,讓我們聽著音樂好好地享受,讓我們打開心門,進入我們的心靈世界,與自己的心靈對話。讓我們回憶從幼兒園開始回憶,把我們丟失的東西找回來……會場寂靜,與會者肅然。)人活世上,誰不希望能有作為于社會,回報于家庭,慰藉于自己?可是,歲月的風霜,世事的艱辛,人情的冷暖,使許許多多的人變得麻木世幫,心無愛恨,漠然無情,不思進取,怯于奮爭...

    ?????? 這些年來,在你最需要幫助的時候,是誰向你伸出援助之手?
    ?????? 在茫茫的人海中,是誰是哪幾個人最關心你最疼愛你?
    ?????? 你出門在外,是誰是總在牽掛你惦念著你?
    ?????? 是誰總是盼著你回家等著你吃飯?
    ?????? 在你生病的時候是誰最緊張最著急?
    ?????? 在你最高興的時候是誰比你更高興?
    ???? ? 在你最痛苦的時候又是誰比你更痛苦?
    ?????? 在你最失落無助的時候,是誰來安慰你鼓勵你?
    ?????? 在你最孤獨寂寞的時候又是誰來陪伴你?
    ?????? 是誰對你的生命影響最大?
    ?????? 在你的心目中誰占的位置最多?
    ?????? 你或許在鄉村長大,你們家世世代代都是農民,為了生存為了你也能象別人的孩子一樣體體面面地生活讀成長,你的爸爸媽媽艱難度日終年勞作,但只要自己的孩子能有書讀肯上進,再苦再累他們都心甘情愿無怨無悔。夜幕隆臨,每當你上教室上晚自習的時候,你爸爸媽媽或許都還沒回到家晚飯,要是他們離家在外漂泊在外做生意打工撿破爛,也許因為貸不出手工錢未得到身無分文常常不知道晚飯在哪里;當你進入夢鄉的進修,你的爸爸媽媽還常常為帶來為生活為人欠一家老小你的學費和生活費發愁,常常中整夜整夜睡不著覺......他們知道現在的社會要靠本事吃飯,你雖然讀了書,可是社會上競爭的人很多飯碗很少,競爭很激烈,孩子能存在能夠照顧自己已經是很不容易了,所以他們的后半輩子也不敢對你抱有太大的指望,他們晚年生活也許還得靠他們自己。其實你的爸爸媽媽累死累活無非就是希望自己的孩子能篚成人成為對社會有用的人,受人尊敬讓人看得起,不白費他們的一番心血!想想你自己,能做到了嗎?作為農民或作為民工的爸爸媽媽到他們真正老了實在做不動的時候,他們的生活將沒有任何依托,在很大的程度上將要依靠他們的孩子才能度過他們生命中最恩格斯最凄涼的歲月,而傾注了他們一輩子心血又是他們生命中唯一可以依靠的你,能給他們帶來什么呢?

    ???? 你一天天長大,可是你的父母卻一天天變老了。你平時有沒有看過他們的模樣?你有沒有仔細打量過他們?他們的模樣已經老到什么程度了呢?你知道不知道?他們或許已經變得很老了,由于新陳代謝的緣故,人總會自然變老的,但如果老得太快衰老得太早那就不政黨了。這些年來,他們為生活奔奔波波,為工作勞勞碌碌,為孩子憂心忡忡。你或許還常常跟他們頂嘴、吵架,惹他們生氣傷心,你的學習又不怎么理想,你的行為總讓他們很不放心,他們常常為你;將來的前途和出路擔憂發愁,他們還能年輕到哪里去?況且他們身上可能還有很多病痛,他們又舍不得上醫院看醫生,怕檢查怕住院,老這么硬撐著,他們的生命有沒有危險?他們能活多久?無論如何你都要抽點時間,給自己一個機會好好看一看你的爸爸媽媽!是時候了!如果你沒有了父母你的學習和生活將會發生什么樣的變化呢?人鐵父母是以什么樣的方式掙錢供你讀書的?他們過得好不好?他們對你好不好?你常惦記他們嗎?你常問候他們嗎?你還時常跟他們有說有笑嗎?你還常常牽著他們的手上街嗎?你很樂意讓他們來學校看你嗎?在同學面前你能很自豪地介紹他們嗎?你知道他們的生日嗎?你記住他們的生日嗎?

    ?????? 你現在還是個學生,是個未成年人,是個消費者,還不需要為父母承擔什么責任,如果你的父母生病住院,你去看一下他們,他們就很高興了,甚至別人還夸你是個很懂事的孩子。可是,在你長大成人,自立成家,你也有自己的孩子的時候,你的父母生病住院,你去看一下就行了嗎?如果,需要開刀,需要幾成幾十萬,才能治好他們的病,甚至才能保證他們的生命的時候,你將怎么辦?你能拿得出多少?你肯不肯去借別人?為了他們健康和生命,你能不能全力以赴?就象當年他們對你一樣?萬一有一天,你的父母突然撒手離開了你,你哭一下,流幾滴眼淚,別人或許也會夸你是個孝順的孩子。可是,在很多后的將來,你回想起來,回想起父母的疼愛父母的恩情父母的容顏,你僅僅哭就行了嗎就夠了嗎?

    ??????? 我在鄉下農村長大,父母都是農民。父親只讀到小學四年級,母親是個文盲。小時候,因兄弟姐妹太多,家里又只有父母兩個勞動力,日子過得十分艱難。寒冷的冬天,放學回家,吃的常常是稀得可見人影的粥......家庭的貧困最讓我刻骨銘心的是,1979年,也就是高中畢業的那一年,我那79歲的爺爺病重需要住院,可是,家里貧窮沒有錢呀,抬去醫院第二次醫院才勉強收下,也還只是住在醫院的走廊下,那時正值寒冬臘月,七老八十的爺爺就在這樣的地方度過了他生命的最后時日。他在臨死前還吃力地問我媽媽家里還有多少錢?辛苦了一世的老人,準備失去生命的老人,還擔心死了以后家里有沒有錢料理他的后事,死了以后會不會給子孫帶來麻煩。人世間這種悲慘的場面就活生生地展現在我面前了,當時我的眼淚不知不覺地淌下來了,但是,我的拳頭握得很緊,我在心里默默發誓:無論如何,一定要奮斗!一定要沖出去活出個人樣來!至少讓你的父母在臨死前用不著為錢擔心,我不要他們再問跟爺你這同樣的話。

    ????? 這是這個信念,在我高考落榜的那些辛酸的歲月,在被很多人嘲笑和諷剌的時候,我還是充滿信心不屈不找,終于在高考接連失敗了5次后的第六年也就是1984年我考上大學!從此改寫人生,從此改變命運!

    ???? 前不久在廣東沿海的一個中學演講的時候,聽那里的教師說以前他們中學有個男孩子,他的爸爸在政府當高官,他的媽媽也在某一部門手握大權。這個男孩子,總以為能靠著老爸老媽,整天養尊處優,有學習懶散,生活放蕩,仗著萬貫家財,出手大方,揮金如土。他的爸爸媽媽各自都忙于官事和應酬,也沒有時間管他,他變本加厲。

    ???????? ?原本就是個紈绔子弟,老爸又是市里的頭號人物,他根本不把老師放在眼里,本來基礎就差,又無心向學,又目空無人,學習自然越來越差勁了。很多高官紛紛送孩子出國留學,這個男孩子的爸爸也把他送了出去。在國內的學校本來心就不放在學習上,英語更是學不下了,一下子到了歐美的英語國家讀書,怎么能讀得下,雖然也先上了語言學校,但終究無濟于事。遠離家鄉,遠離同學,書又坊不懂也不想讀,加上語言的障礙,與人交流甚至上街購物都困難,在孤獨苦悶百無聊賴之中的兩年后的一天,他回了國。;可是到了家,一切都改變了。家門已被公安法院貼上封條了,好心的鄰居告訴他,你的爸爸媽媽出大事了!被關起來了,看情況性命都難保了。一向不知苦難是何物的他,突然心里空落,腦子一片白,癱坐在地。清醒過來之后,他去了看守所。先前紅光滿面、精神煥發的爸爸,已變得十分憔悴。問他爸爸,他說:爸,你怎么會變成這樣?你不是叫我放心嗎?;;他的爸爸說:“孩子,爸爸做錯事了,原本想跟你鋪好路,但沒想到害了你,也害了自己。爸爸估計活不了多久了,你的媽媽少說也要被關上十幾年,家里的財產全被沒收,我們這個家全完了,爸爸媽媽不能幫人我了,樹倒藤枯,我們的處境如此,你也別指望會有哪個親戚或那個朋友幫你了,往后要全靠你自己了,好好努力,好好活著,路有多遠你就走多遠吧!”為了生活,幾天后,這個男孩子在菜市場的一個角落里擺攤賣著凍魚,以前每天花上百塊錢,現在一斤凍魚賺的就幾毛錢,一天從下來凈賺的最多不過二三十元,在這些錢里面,還要交房租,還要吃飯,所剩無幾。以前花父母貪來的不義之財,花多少都不心疼,現在靠自己掐來的錢,每開支一塊錢都要思來想去。過去路過菜市場見賣魚的人,視同螞蟻,連看都不看他們一眼,甚至被阻路的時候還大罵他們。如今,跟他們在一起說話得又小心又客氣,總怕得罪人家

    ????? 所以,同學們呀,你或許常常為爸爸媽媽當大官做大生意而沾沾自喜引以為榮,認為這輩子可以穩靠地過上好日子,于是高枕無憂有恃無恐,學習松松垮垮,生活隨隨便便,行為放放蕩蕩,整天逍遙自在得過且過,大把大把挖錢整夜整夜不歸......當你養尊處優揮金如土的時候,你有沒有想過,以你爸爸媽媽現在的職位和工資收入或者他們的生意狀況,他們正當所得到底能有多少?他們的錢來得很容易嗎?當你心情地揮霍和享受的時候,你有沒有問問和店量這些錢的來路?他們為了你準備了大把鈔票和鋪好的前程安全不安全有沒有危險?他們為了你是否會斷送自己的政治前途和身家性命?你的爸爸媽媽準備把一切都給了你,可你有沒有設身處地為他們想過?在這個世界上幾乎沒有什么是永恒的,你把自己的將來全部仰靠和托付都放在你父母的身上,你認為能有多大的勝算和把握呢?你為什么就不努力學會;和設法依靠你自己呢?

    ?????? 同學們,不管你的父母是在城市還是在鄉村,是貧窮還是富有,是處在社會的上層還是處在社會的最底層,但他們日夜都渴望他們的孩子——你,將來能有出息,能體體面面堂堂正正地活在這個世界上,成為對社會有用的人!不管你情不情愿來學校讀書,學得好還是不好,也不管你將來從事什么工作以什么方式謀生,在你的內心深處在你的骨子里面你都一直渴望著將來做一個在別人面前能讓別人看得起的人!做一個父母永遠為你感到驕傲和自豪的人

    ????? 可是呀,同學們,這些年來你一直在追求什么?在期待什么?是什么力量在支持著你,讓你顯得那堅強,那么自信,那么發奮?又是什么原因,是什么東西在迷惑和誘惑著你總讓你顯得身不由己,心神不定,坐立不安?有時候,你在游戲室、在網吧里一坐就是幾個小時;有時候,你莫名其妙地想打人罵人;有時候,你又無端地折騰、傷害和糟蹋你自己,你為什么會變成這樣?到底是什么原因造成的?在夜深人靜的時候,你有沒有勇氣面對你自己?在光天化日之下,你敢不敢正視別人?是什么最讓你的良心感到無愧?又是什么最讓你的良心感到不安?你還能必自內心的微笑嗎?你還會感動得落淚嗎?你還屬于你自己嗎?你還是你嗎?;;這些年來,你都是怎么走過來的?你的每一步都留下什么腳印?你有沒有努力過?你有沒有成功過?你做過哪幾件事情最讓你感到驕傲和自豪?你小時候那些美好的夢想現在還剩下多少?你對自己還有多少信心?你對將來還抱多大的希望?每一天都在充實都在進步中度過嗎?在做人、讀書和做事上,你都盡盡力了嗎?你還敢說自己很想說的話嗎?你還敢做自己喜歡做的事嗎?你的父母還能為你感到驕傲嗎?你是否能捫心自問理直氣壯地說:爸爸媽媽,你的兒子很用功!你的女兒很優秀!你的獨生子不會讓你們白生白養的!你的女兒不會給你們丟臉的!你的兒子不會讓你們失望的!你的女兒一定會讓你們幸福的!

    ????? 每天,天剛朦朦亮,你就很耐煩地睜開雙眼,一腳踏進這個的世界,又以一臉的茫然無奈走進學校跨進教室,然后木然地坐在座位上,呆呆地望著黑板,對你來說一切都是那樣的枯燥乏味,一切都是那機關報無可奈何沒有法子。你常常聽不進一句話,看不進一個字,心里不知道都想些什么,也不知道自己要做什么要怎么做,課時一節節下來,日子一天天過去內外沒有什么收獲也沒有什么感受,心里依然是空空的,可是又不知道拿什么來充實。你就常常在這樣空虛迷惘無所事事中耗費時日虎度年華,任由環境的左右命運的擺布,讓生命的小船漫無目的地漂流搖晃。這就是青春年少風華正茂的你嗎?這就是小時候充滿幻想充滿希望的你嗎?這就是滿懷親人希望肩負父母重托的你嗎?這就是拿家人省吃儉用靠花費父母的血汗錢來讀書上大學奔前程的你嗎?

    ?????? 處在社會的底層、人生的低谷,特別是在理想和前途都很渺茫的時候,往往有兩種力量能從人的骨子里面把人激起,催人奮進讓人走向成功走向發達。第一種力量就是:親情的力量,即父母和親人的關愛和為了報答父母親人的恩情;第二種力量就是:無情的力量,即別人的冷眼、漠視、看低、看扁,為了做出來給別人看證明自己并不比別人差的雄心壯志!

    ???????? 當我站在講臺上,面對著數千人滔滔不絕演講的時候,當一場成功的演講帶給人們震撼和敬佩的時候,很少有人會想到我曾經是一個嚴重的口吃者。但這是真的!少年時的我口吃很嚴重,講話結結巴巴,那時候說話對我來說是一件很痛苦的事。但理痛苦的是,讀高中,輪到我當值日生,按規定要在上課前在老師走上講臺的時候,要站起來領大家喊“起立!老師好!”這五個字,可是為了要喊這止個字,我常常要丫起來好幾分鐘都說不出話來,嘴巴張開,話就是出不來,為此,同學經常哄堂大笑。那時我覺得很難過很自卑很羞愧,因為我連正常人普通人都達不到。一直到上了大學,我那口吃的毛病都還很嚴重,上課從來不敢主動回答老師的提問。連說話都很困難,畢業后怎么工作怎么做國家干部?(那時候讀大學不花錢,畢業又有分配,出來都是國家干部)我時常聽到教師和同學這樣議論我,當時我這樣想,他們在對我抱以同情和擔憂的同時,心里不無、嘲笑和蔑視。我想,人家能行我為什么就不能行?難道自己一輩子連個普通人都做不到嗎?在隨著巨大的痛苦和壓力的同時,我在心里默默地發狠心:有朝一日,我一定要說出一口流利的普通話,一定要靠自己這張嘴巴吃飯!為了克服自己的心理障礙,早讀節,在很多同學都在沉默不讀書的時候,我一個人在那里旁若無人放聲朗讀大喊大叫,那時在別人看來我就象個狂徒和瘋子,但是,不管別人怎么議論,我都毫不在乎,堅持了一年下來,我的膽子變得越來越大,底氣越來越來足,張口就說話,提筆就文章,經過一番的奮斗,沒想原來的缺陷卻被奮斗改變成了長項和優勢,大二的時候就被選學生會宣傳部長,當上了靠嘴巴和筆桿子支撐起來的“官”。.現在,我以演講為自己的職業,變當年的痛苦為快樂,變往日的恥辱為榮譽,活出了自我,活出了價值!

    ?????? 何必為自己的欠缺自己的失敗而沮喪呢,何必為別人的嘲笑別人的諷剌而痛苦呢,這些其實是上天賜給你的福分。我們應該把人生一切不幸的遭遇照單全收,我們要感謝上蒼對我們所做的一切不合理的安排!感謝社會的殘酷!感謝世態的炎涼!感謝人生的痛苦!

    ???????? 人的大徹大悟多半來自大災大難。由此看來,讓自己走投無路一回又何妨?!

    ???????? 建設家鄉報效祖國,話說得很響亮很堂皇,但是絕不是每個人都有這個機會和資格的。生活在社會最邊緣最底層的人,很多都想為建設家鄉報效祖國出一份國,可是家鄉和祖國卻不給他們機會,因為他們或許沒有這個能力和資格,他們可能沒有什么文化沒有什么本事沒有什么技能.
    ???????
    ??????? 你如果有心要為家鄉為國家出力,你就必須全心全意先為你自己出力,全力以赴為你自己奮斗,如果你連自己都不愛不理,那么家鄉和祖國就會懶得愛你懶得理你,你就將永遠被社會所遺忘和拋棄!

    ????? 你訂的計劃和目標總是堅持不了幾天;你連一個人獨處一個人走路都不自在,總是很違心地跟在別人的屁股后面轉,白白消磨了大好時光;困一點,累一點,你就把今天該做的事推到了明天——所有這些,你能說努力了嗎?全力以赴了嗎?雖然付出未必就有回報,努力和成功不能劃等號,但是,不付出就絕不會有回報!不努力就絕不會成功!同學們,不要擔心努力后的結果如何,得不得到回報,請你記住一句話:盡心就是優秀,盡力就是成功!
    ??????
    ??????? 人生在世,什么都可以沒有,但就是不能沒有勇氣。英雄和偉人最富有的就是勇氣,一般人內心有時也會充滿激情,但是骨子里卻常常缺乏勇氣,常常在最關鍵的時候,在最需要勇氣的時候,猶猶、豫豫畏畏縮縮,以致錯過了有利時機耽誤了大好前程。其實,勇氣這個東西,不需要花錢買,很多時候,你想有它就有。

    ?????? 同學們,今天的這個下午是個特殊的下午,希望你拿出勇氣,來到臺上來,講述你的故事,表達你此刻的心情,抒發你今后的打算。同學們,拿出勇氣,來吧,到臺上來表達吧,這是一個新的開始,這是你走向自新走向奮發走向未來的最果敢最能顯示你對今后態度的第一步很重要很關鍵的一步。

    ????? (過了幾分鐘,陸陸續續有學生走上臺來發言)生1(女):“在我很小的時候,父母就到廣東打工了,家里只有我、妹妹和奶奶三個人,每年春節都只有我們三個人過。”(淚流滿面,泣不成聲)……有一次,爸爸媽媽回來,我滿腹的怨氣地對他們發匯。就在他們要走的那天晚上,我還跟媽媽頂嘴,媽媽哭了。……后來,來到學校,想給他們打電話,也沒勇氣。……今天,我想對他們說:‘爸爸,媽媽,我對不起你們,但以后我會努力地,會努力成為你們的驕傲的,我發誓!’“(掌聲雷動)

    ?????? 黃老師:“是啊,媽媽要出門打工了,我們還跟她頂嘴,讓她帶著眼淚出門……同學們,你呢,你有話對父母說嗎?有什么話要表達嗎?”
    ?????
    ????? 生2(男):“我是一個高四的學生,我很感謝我的父母,我想對他們說,我一定好好努力報答他們。”(掌聲)

    ???? 生3(男):“我的父母很平常,每月也只有幾百元的收入,每月給我吃、穿、用,但我學習不好,有時候很迷茫,但現在我想通了,我會用勤奮來回報他們的,我會用自己的豐碩成果來回報他們的。”(掌聲雷動)

    ????? 生4(女):“我要說的話很多,我來自橋業(那是一個很窮的山區鄉,飲水得到幾里外去挑的),從小父母就帶我去廣東打工。我家有3個女孩,父母賭博花光了所有的積蓄,我只好回到橋業讀初中。回到橋業,我連個家都沒有,寄居在伯父家。(帶著哭腔)后來,來了志愿者,我很謝謝他們(泣不成聲)……后來,我是......靠著上海一位姐姐的支助讀完初中的。……但是,上了高中以后,我的成績很差,我沒信心,我也不再努力,我沒有什么可拿來報答他們。……(頭一揚,很堅定地)不過,以后,我會用努力回報他們的,我會用行動證明的。”(掌聲雷動) 

    ?????? 黃老師:“偉人之所以成為偉人,成功者之所以成功者,別無他樣,他們所不同的是:百般磨難心不死,屢經窮困志不窮!”

    ??????? 生4(男):“今天我聽了演講,雖然眼淚沒有從眼里流出來,但我心里在流動。我太對不起我班主任和科任老師了。我學習成績不好,老師經常開導我,可我總是聽不進去,還經常跟老師頂嘴。聽了演講,我想對老師們說:老師,以后我會努力的,請大家記住我今天當著幾千人的面所發誓的話,我一定會以全新的模樣回報父母,報答老師的!”

    ?????? 黃老師:“老師既是父母的孩子又是孩子的父母,他們身上壓著三副重擔,既贍養自己的父母又要撫養自己的孩子,還要培養自己的學生,工作的壓力,生活的艱辛,過多的付出,他們或許也象你的父母一樣過早地失支了美麗的容顏。他們從事著高尚的職業,卻沒有很高薪酬;他們做著很體面的工作,卻常沒有很體面的衣服;他們也有很需要照顧和輔導的孩子,卻常常把看書所有的時候和精力用到了別人的孩子身上。在學校,在父母不在你身邊的日子,是哪個像;父母一樣關愛你?在你身體不舒服生活有困難的時候,是哪個來關心和幫助你?在很多同學冷落你甚至連你自己都冷落自己的時候,是哪個還主動靠近你給你信心和勇氣?在你無心向學虛度年華的時候,是哪個常常為你心疼為你難過?在你上課看小說打瞌睡甚至考試還在呼呼大睡的時候,是哪個常常來提醒你?在你被別人‘打倒’甚至被你自己‘打倒’自己都不想爬起來的時候,是哪個拉你一把助你一力?你在人生十字路口辨不清方向找不到目標的時候,是哪個給你點拔給你指路?”

    ???

    posted @ 2006-09-08 12:02 xyh 閱讀(253) | 評論 (0)編輯 收藏

    一盞濁燈

    ???? ?人的成長是絕對的,有的時候只是量變,有的時候是質變。在這個充滿誘惑、充斥著一切的世界里,我們要做的,不是擁有多少物質,而是有自己的一片天空,有和睦的親情、友情......
    ????? 忙碌的我們,是否感到在都市的落寞,在這里,環境的壓力,工作的壓力,使得我們很少有時間來審視自己,在這里,每個人的空間、時間是被嚴格限制的,就如井底之蛙(frog?in the well)。
    ???? 我曾閱讀過一句經典的話:
    ? ?? There are two ways to see growth,one is product,and the other is the process.
    ??? 我不由想到,我曾經做過錯誤的決定,但我還是執行錯誤的決定,痛苦的是,沒有比這個決定更好的辦法,人,總是為周圍的一切所困,總是掌握不了自己的命脈。
    ??? 在漫漫的時間里,當自己失去動力以后,一切都變的無所謂,一切都變的不重要,一切都是所謂的裝飾。一個,默默的,做著重復的工作,一遍又一遍........
    ??? 一站過去了,而另外一站又奔來,沿途的風景,使忙碌的我們忽略了周圍........
    ????一個人上網的時候很喜歡進西安信息資源網,在那里讀著一些勵志的文章,每當我疲憊的時候,想起了一起生活在這個世界的大多數人們,他們有自己的生存原則.......
    ???? 每個人都有兩個天使陪伴著他,一個是善良的,一個是邪惡的,
    ???? 在這個世界的現實里,我學會了更多的是理性,而不是感性,世界的悲劇,太多是由感性戰勝理性引起的,一時的沖動引起的,而在喪失理性之后,他們不得不面對理性........
    ????
    ?

    posted @ 2006-09-08 11:44 xyh 閱讀(256) | 評論 (0)編輯 收藏

    三道簡單算法題

    第一題
    /*
    ?求兩個字符串的最大公共子串
    ?String s1 = "abcdefghigj";
    ?String s2 = "xyzabcdeigj";
    ?則輸出abcde
    */

    第二題
    /*
    輸出楊輝三角形
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    */

    第三題
    /*
    String[] a = {"a","b","c","d","e","f","g","h","i","j","",""};
    String[] b = {"f","a","c","f","e","k","l","y","p","o"};

    如果b里面的數據在a里面沒有,則把沒有的數據放到""里面,超過的話,則報"已經滿了,無法插入"~~
    */

    解析:
    第一題:
    public class first
    {
    ? public String search(String s1,String s2)
    ? {
    ? String max = "";
    ? for(int i=0; i<s1.length(); i++)
    ? {
    ??? for(int j=i; j<s1.length(); j++)
    ??? {
    ????? String sub = s1.substring(i,j);
    ????? if((s2.indexOf(sub)!=-1)&&sub.length()>max.length())
    ????? {
    ??????? max = sub;
    ????? }
    ??? }
    ? }?
    ? return max;
    ? }
    ?
    ? public static void main(String[] args)
    ? {
    ??? String s1 = "abcdefghigj";
    ??? String s2 = "xyzabcdefigj";
    ??? String output = new first().search(s1,s2);
    ??? System.out.println(output);
    ? }
    }

    第二題:
    public class second
    {
    ? public static int[] general(int[] data)
    ? {
    ??? int[] fanhui = new int[data.length+1];?
    ??? fanhui[0] = data[0];
    ??? for(int i=1,j=1; j<data.length; i++,j++)
    ??? {
    ????? fanhui[i] = data[j-1] + data[j];
    ??? }?????????
    ??? fanhui[fanhui.length-1] = data[data.length-1];
    ??? for(int k=0; k<fanhui.length; k++)
    ??? {
    ????? System.out.print(fanhui[k] + "\t");
    ??? }
    ??? System.out.print("\n");
    ??? return fanhui;
    ? }
    ? public static void main(String[] args)
    ? {
    ??? int times = 5;
    ??? int[] chushizhi = {1};
    ??? System.out.println(chushizhi[0]);
    ??? for(int i=0; i<times; i++)
    ??? {
    ??? chushizhi = second.general(chushizhi);???
    ??? }
    ? }
    }

    第三題:

    import java.util.ArrayList ;

    public class Third
    {
    public static void main(String[] args)
    {
    ??? String[] a = {"a","b","c","d","e","f","g","h","i","j","k","",""};
    ??? String[] b ={"f","a","c","f","e","k","l"};
    ??? Third third = new Third();
    ??? third.compareAndReplace(a,b);
    ??? StringBuffer output = new StringBuffer();
    ??? for(int i=0; i<a.length; i++)
    ??? output.append(a[i]);?
    ??? System.out.println("a已變成" + output.toString());
    ? }
    ?public void compareAndReplace(String[] a,String[] b)
    ?{
    ?? for(int i=0; i<b.length; i++)
    ?? {
    ????? outer:
    ???? for(int j=0; j<a.length; j++)
    ???? {
    ?????? if(b[i].equals(a[j]))
    ?????? break outer;
    ?????? if(j==a.length-1)
    ?????? {
    ?????? if(findFirstSpace(a)!=-1)
    ?????? {
    ???????? a[findFirstSpace(a)] = b[i];
    ?????? }
    ?????? else
    ?????? {
    ???????? System.out.println("已經滿了,無法插入" + b[i]);
    ?????? }??????
    ???? }
    ?? }
    ?}
    ?}
    ?
    ?public int findFirstSpace(String[] arg)
    ?{
    ?? for(int m=0; m<arg.length; m++)
    ?? {
    ???? if(arg[m].equals(""))
    ???? return m;????
    ?? }
    ?? return -1;
    ?}
    }

    posted @ 2006-09-08 10:40 xyh 閱讀(1598) | 評論 (0)編輯 收藏

    2006年9月6日 #

    JS表單驗證討論

    無論在提交按鈕,即<input type="submit" onclick="return 函數名()">,
    或者在form表單上,即<form onsubmite-"return 函數名()">
    都能夠,驗證表單,然后提交

    需要注意的事項有
    1.
    <form>中的name屬性,最好制定一下,
    否則無法使用document.ID號定制,
    但是可以使用document.getElementById(string id)獲取對象,
    建議同時設置id與name為相同的名稱

    2.
    調用的時候,建議使用return 函數名()這樣的方法,否則可能無效
    ?P.S. 我使用了像<input type="submit" onclick="return false">
    結果證實函數得到了運行,但是攔截表單提交失敗

    3.
    驗證函數中,建議明確返回bool值

    4.
    設置的函數名不要和JS的內置函數重名,否則會導致整個函數失效
    P.S. 我就犯了這個錯誤,我定義了一個submit()函數

    5. *****
    即使設置了<form onsubmit="return false;">,或者等價的表達式
    但是如果調用form.submit()函數,表單仍然會得到提交
    換句話說,form.submit()具有強制提交表單的功能

    6.
    如果在JS中更改了form.action的值,則提交目標以JS設置的為標準
    因為JS的設置永遠發生在HTML設置之后 即使是使用
    <form onsubmit="this.action='test.html'" action="orin.html">
    這樣的表示法

    7.實驗發現無論是form的onsubmit還是submit按鈕的onclick
    都不能丟掉"return",否則無論返回的值ture or false,表單數據都會提交出去

    posted @ 2006-09-06 18:18 xyh 閱讀(1025) | 評論 (0)編輯 收藏

    常用的SQL語句技法總結(來自CSDN)

    ? 下列語句部分是Mssql語句,不可以在access中使用。

    ? SQL分類:

    ? DDL-數據定義語言(CREATE,ALTER,DROP,DECLARE)
    ? DML-數據操縱語言(SELECT,DELETE,UPDATE,INSERT)
    ? DCL-數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)

    ? 首先,簡要介紹基礎語句:

    ? 1、說明:創建數據庫: CREATE DATABASE database-name

    ? 2、說明:刪除數據庫: drop database dbname

    ? 3、說明:備份sql server

    ? --- 創建 備份數據的 device

    USE master
    EXEC sp_addumpdevice 'disk', 'testBack',
    'c:\mssql7backup\MyNwind_1.dat'

    ? --- 開始 備份

    BACKUP DATABASE pubs TO testBack

    ? 4、說明:創建新表

    create table tabname(col1 type1 [not null] [primary key],col2 type2
    [not null],..)

    ? 根據已有的表創建新表:

    A:create table tab_new like tab_old (使用舊表創建新表)
    B:create table tab_new as select col1,col2... from tab_old definition
    only

    ? 5、說明:

    ? 刪除新表:drop table tabname

    ? 6、說明:

    ? 增加一個列:Alter table tabname add column col type

    ? 注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。

    ? 7、說明:

    ? 添加主鍵:Alter table tabname add primary key(col)

    ? 說明:

    ? 刪除主鍵:Alter table tabname drop primary key(col)

    ? 8、說明:

    ? 創建索引:create [unique] index idxname on tabname(col....)

    ? 刪除索引:drop index idxname

    ? 注:索引是不可更改的,想更改必須刪除重新建。

    ? 9、說明:

    ? 創建視圖:create view viewname as select statement

    ? 刪除視圖:drop view viewname

    ? 10、說明:幾個簡單的基本的sql語句

    ? 選擇:select * from table1 where 范圍

    ? 插入:insert into table1(field1,field2) values(value1,value2)

    ? 刪除:delete from table1 where 范圍

    ? 更新:update table1 set field1=value1 where 范圍

    ? 查找:select * from table1 where field1 like '%value1%'
    ---like的語法很精妙,查資料!

    ? 排序:select * from table1 order by field1,field2 [desc]

    ? 總數:select count * as totalcount from table1

    ? 求和:select sum(field1) as sumvalue from table1

    ? 平均:select avg(field1) as avgvalue from table1

    ? 最大:select max(field1) as maxvalue from table1

    ? 最小:select min(field1) as minvalue from table1

    ? 11、說明:幾個高級查詢運算詞

    ? A: UNION 運算符

    ? UNION 運算符通過組合其他兩個結果表(例如 TABLE1

    TABLE2)并消去表中任何重復行而派生出一個結果表。當
    ALL 隨 UNION 一起使用時(即 UNION
    ALL),不消除重復行。兩種情況下,派生表的每一行不是來自
    TABLE1 就是來自 TABLE2。

    ? B: EXCEPT 運算符

    ? EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2
    中的行并消除所有重復行而派生出一個結果表。當 ALL
    隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。

    ? C: INTERSECT 運算符

    ? INTERSECT 運算符通過只包括 TABLE1 和 TABLE2
    中都有的行并消除所有重復行而派生出一個結果表。當
    ALL 隨 INTERSECT 一起使用時 (INTERSECT
    ALL),不消除重復行。

    ? 注:使用運算詞的幾個查詢結果行必須是一致的。

    ? 12、說明:使用外連接

    ? A、left outer join:

    ? 左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。

    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    ? B:right outer join:

    ? 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

    ? C:full outer join:

    ? 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

    ? 其次,大家來看一些不錯的sql語句

    ? 1、說明:復制表(只復制結構,源表名:a
    新表名:b) (Access可用)

    ? 法一:select * into b from a where 1<>1

    ? 法二:select top 0 * into b from a

    ? 2、說明:拷貝表(拷貝數據,源表名:a
    目標表名:b) (Access可用)

    insert into b(a, b, c) select d,e,f from b;

    ? 3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑)
    (Access可用)

    insert into b(a, b, c) select d,e,f from b in '具體數據庫' where 條件

    ? 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"'
    where..

    ? 4、說明:子查詢(表名1:a 表名2:b)

    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

    ? 5、說明:顯示文章、提交人和最后回復時間

    select a.title,a.username,b.adddate from table a,(select max(adddate)
    adddate from table where table.title=a.title) b

    ? 6、說明:外連接查詢(表名1:a 表名2:b)

    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    ? 7、說明:在線視圖查詢(表名1:a )

    select * from (SELECT a,b,c FROM a) T where t.a > 1;

    ? 8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not
    between不包括

    select * from table1 where time between time1 and time2

    select a,b,c, from table1 where a not between 數值1 and 數值2

    ? 9、說明:in 的使用方法

    select * from table1 where a [not] in
    ('值1','值2','值4','值6')

    ? 10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息

    delete from table1 where not exists ( select * from table2 where
    table1.field1=table2.field1 )

    ? 11、說明:四表聯查問題:

    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

    ? 12、說明:日程安排提前五分鐘提醒

    SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

    ? 13、說明:一條sql 語句搞定數據庫分頁

    select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 =
    a.主鍵字段 order by a.排序字段

    ? 14、說明:前10條記錄

    select top 10 * form table1 where 范圍

    ? 15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)

    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    ? 16、說明:包括所有在 TableA 中但不在 TableB和TableC
    中的行并消除所有重復行而派生出一個結果表

    (select a from tableA ) except (select a from tableB) except (select a from tableC)

    ? 17、說明:隨機取出10條數據

    select top 10 * from tablename order by newid()

    ? 18、說明:隨機選擇記錄

    select newid()

    ? 19、說明:刪除重復記錄

    Delete from tablename where id not in (select max(id) from tablename
    group by col1,col2,...)

    ? 20、說明:列出數據庫里所有的表名

    select name from sysobjects where type='U'

    ? 21、說明:列出表里的所有的

    select name from syscolumns where id=object_id('TableName')

    ? 22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select
    中的case。

    select type,sum(case vender when 'A' then pcs else 0 end),sum(case
    vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs
    else 0 end) FROM tablename group by type

    ? 顯示結果:

    type ? ?vender pcs
    電腦 A 1
    電腦 A 1
    光盤 B 2
    光盤 A 2
    手機 B 3
    手機 C 3

    ? 23、說明:初始化表table1

    TRUNCATE TABLE table1

    ? 24、說明:選擇從10到15的記錄

    select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc

    ? 隨機選擇數據庫記錄的方法(使用Randomize函數,通過SQL語句實現)

    ? 對存儲在數據庫中的數據來說,隨機數特性能給出上面的效果,但它們可能太慢了些。你不能要求ASP"找個隨機數"然后打印出來。實際上常見的解決方案是建立如下-所示的循環:

    Randomize RNumber = Int(Rnd*499) +1

    While Not objRec.EOF
    If objRec("ID") = RNumber THEN
    ... 這里是執行腳本 ...
    end if
    objRec.MoveNext
    Wend

    ? 這很容易理解。首先,你取出1到500范圍之內的一個隨機數(假設500就是數據庫內記錄的總數)。然后,你遍歷每一記錄來測試ID
    的值、檢查其是否匹配RNumber。滿足條件的話就執行由THEN
    關鍵字開始的那一塊代碼。假如你的RNumber
    等于495,那么要循環一遍數據庫花的時間可就長了。雖然500這個數字看起來大了些,但相比更為穩固的企業解決方案這還是個小型數據庫了,后者通常在一個數據-庫內就包含了成千上萬條記錄。這時候不就死定了?

    ? 采用SQL,你就可以很快地找出準確的記錄并且打開一個只包含該記錄的recordset,如下所示:

    Randomize RNumber = Int(Rnd*499) + 1

    SQL = "SELECT * FROM Customers WHERE ID = " & RNumber

    set objRec = ObjConn.Execute(SQL)
    Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")

    ? 不必寫出RNumber
    和ID,你只需要檢查匹配情況即可。只要你對以上代碼的工作滿意,你自可按需操作"隨機"記錄。Recordset沒有包含其他內容,因此你很快就能找到你需要-的記錄這樣就大大降低了處理時間。

    ? 再談隨機數

    ? 現在你下定決心要榨干Random
    函數的最后一滴油,那么你可能會一次取出多條隨機記錄或者想采用一定隨機范圍內的記錄。把上面的標準Random
    示例擴展一下就可以用SQL應對上面兩種情況了。

    ? 為了取出幾條隨機選擇的記錄并存放在同一recordset內,你可以存儲三個隨機數,然后查詢數據庫獲得匹配這些數字的記錄:

    ? SQL = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3

    ? 假如你想選出10條記錄(也許是每次頁面裝載時的10條鏈接的列表),你可以用BETWEEN
    或者數學等式選出第一條記錄和適當數量的遞增記錄。這一操作可以通過好幾種方式來完成,但是
    SELECT 語句只顯示一種可能(這里的ID
    是自動生成的號碼):
    SQL = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " &
    RNumber & "+ 9"

    ? 注意:以上代碼的執行目的不是檢查數據庫內是否有9條并發記錄。

    ? 隨機讀取若干條記錄,測試過

    Access語法:SELECT top 10 * From 表名 ORDER BY Rnd(id)
    Sql server:select top n * from 表名 order by newid()
    mysql select * From 表名 Order By rand() Limit n

    ? Access左連接語法(最近開發要用左連接,Access幫助什么都沒有,網上沒有Access的SQL說明,只有自己測試,
    現在記下以備后查)

    ? 語法 select table1.fd1,table1,fd2,table2.fd2 From table1 left
    join table2 on table1.fd1,table2.fd1 where ...

    ? 使用SQL語句 用...代替過長的字符串顯示

    ? 語法:

    ? SQL數據庫:select case when len(field)>10 then
    left(field,10)+'...' else field end as news_name,news_id from tablename
    ? Access數據庫:SELECT
    iif(len(field)>2,left(field,2)+'...',field) FROM tablename;

    ? Conn.Execute說明

    ? Execute方法

    ? 該方法用于執行SQL語句。根據SQL語句執行后是否返回記錄集,該方法的使用格式分為以下兩種:

    ? 1.執行SQL查詢語句時,將返回查詢得到的記錄集。用法為:

    ? Set 對象變量名=連接對象.Execute("SQL 查詢語言")

    ? Execute方法調用后,會自動創建記錄集對象,并將查詢結果存儲在該記錄對象中,通過Set方法,將記錄集賦給指定的對象保存,以后對象變量就代表了該記錄-集對象。

    ? 2.執行SQL的操作性語言時,沒有記錄集的返回。此時用法為:

    ? 連接對象.Execute "SQL 操作性語句" [, RecordAffected][,
    Option]

    ? ·RecordAffected
    為可選項,此出可放置一個變量,SQL語句執行后,所生效的記錄數會自動保存到該變量中。通過訪問該變量,就可知道SQL語句隊多少條記錄進行了操作。

    ? ·Option
    可選項,該參數的取值通常為adCMDText,它用于告訴ADO,應該將Execute方法之后的第一個字符解釋為命令文本。通過指定該參數,可使執行更高效-。

    ? ·BeginTrans、RollbackTrans、CommitTrans方法

    ? 這三個方法是連接對象提供的用于事務處理的方法。BeginTrans用于開始一個事物;RollbackTrans用于回滾事務;CommitTrans用于-提交所有的事務處理結果,即確認事務的處理。

    ? 事務處理可以將一組操作視為一個整體,只有全部語句都成功執行后,事務處理才算成功;若其中有一個語句執行失敗,則整個處理就算失敗,并恢復到處里前的狀態。

    ? BeginTrans和CommitTrans用于標記事務的開始和結束,在這兩個之間的語句,就是作為事務處理的語句。判斷事務處理是否成功,可通過連接對象-的Error集合來實現,若Error集合的成員個數不為0,則說明有錯誤發生,事務處理失敗。Error集合中的每一個Error對象,代表一個錯誤信息。

    posted @ 2006-09-06 18:11 xyh 閱讀(367) | 評論 (0)編輯 收藏

    讓innerHTML的標簽執行起來

    在我們使用AJAX的時候,經常要用到innetHTML來更新對象的內容,但是對于更新的<script>腳本程序瀏覽器卻無法執行,它不執行的原因是:<s-cript>標簽只在瀏覽器第一次文檔加載中被解析,下面介紹怎么樣讓<script>跑起來。

    分析問題

    既然<script>只在文檔加載中才被解析,那么我就得調用document.write()方法來重新加載一次,但是這樣的話原來頁面的內容也會被覆蓋掉了-,所以不得不用IFRAME把document.write()裝載起來。

    解決問題

    var jsCode = 需要執行的JS代碼
    var jsIframe = document.createElement("iframe");
    jsIframe.style.display = "none";//把jsIframe隱藏起來
    document.body.appendChild(jsIframe);
    with(window.frames[window.frames.length - 1]){
    document.open();
    document.write(jsCode); //執行JS代碼
    document.close();

    }

    jsIframe.outerHTML="";//執行后刪除iframe對象

    這里需要注意一個問題,因為jsCode是在iframe中運行,所以所有的頁面元素都在iframe父對象之下,要調用頁面元素對象必須得用 parent.obj 這種方式。

    posted @ 2006-09-06 17:58 xyh 閱讀(380) | 評論 (0)編輯 收藏

    怎樣實現一種特殊的布局---采用

    [][]
    ? []
    ? []
    要求:
    1.每個[]的最里層是個div.
    2.整體靠左,右面三個[]上下對齊,每個[]里的文字仍然靠左。
    3.不要用table和layer來組織,更不要考慮什么空白的gif之類。
    4.用javascript操作DOM來實現,最好符合W3C標準。

    用css,<style type="text/css"> body{ text-algin:left;}
    div.div1{width:10%;height:180px;float:left;}
    div#Contantdiv2{width:10%;height:180px;float:left; line-height:60px;}
    div.subdiv1,.subdiv2,.subdiv3{width:100%;height:auto;float:left;}
    </style>

    html代碼中如下:
    <div class="div1">內容</div>
    <div id="Contantdiv2">
    <div class="subdiv1">內容</div>
    <div class="subdiv2">內容</div>
    <div class="subdiv2">內容</div>
    </div>

    ?

    posted @ 2006-09-06 17:56 xyh 閱讀(191) | 評論 (0)編輯 收藏

    2006年9月5日 #

    JVM簡介

    Java虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上,就能保證經過編譯的任何Java代碼能夠在-該系統上運行。本文首先簡要介紹從Java文件的編譯到最終執行的過程,隨后對JVM規格描述作一說明。
      
      一.Java源文件的編譯、下載、解釋和執行
      Java應用程序的開發周期包括編譯、下載、解釋和執行幾個部分。Java編譯程序將Java源程序翻譯為JVM可執行代碼?字節碼。這一編譯過程同C/C++-的編譯有些不同。當C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬件平臺運行而產生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉-換為特定的內存偏移量,以保證程序運行。Java編譯器卻不將對變量和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將這些符號引用信息保-留在字節碼中,由解釋器在運行過程中創立內存布局,然后再通過查表來確定一個方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。
      
      運行JVM字節碼的工作是由解釋器來完成的。解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由"類裝載器"(class
    loader)完成。類裝載器負責裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調用的類。當類裝載器裝入一個類時,該類被放在自己-的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本臺計算機上的所有類都在同一地址空間內,而所有從外部引進的類,-都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入了運行程序需要的所-有類后,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這一階段確定代碼的內存布局,Java很好地-解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。
      
      隨后,被裝入的代碼由字節碼校驗器進行檢查。校驗器可發現操作數棧溢出,非法數據類型轉化等多種錯誤。通過校驗后,代碼便開始執行了。
      
      Java字節碼的執行有兩種方式:
      1.即時編譯方式:解釋器先將字節碼編譯成機器碼,然后再執行該機器碼。
      2.解釋執行方式:解釋器通過每次解釋并執行一小段代碼來完成Java字節碼程
    序的所有操作。
      通常采用的是第二種方法。由于JVM規格描述具有足夠的靈活性,這使得將字節碼翻譯為機器代碼的工作
      
      具有較高的效率。對于那些對運行速度要求較高的應用程序,解釋器可將Java字節碼即時編譯為機器碼,從而很好地保證了Java代碼的可移植性和高性能。
      
      二.JVM規格描述
      JVM的設計目標是提供一個基于抽象規格描述的計算機模型,為解釋程序開發人員提很好的靈活性,同時也確保Java代碼可在符合該規范的任何系統上運行。JVM-對其實現的某些方面給出了具體的定義,特別是對Java可執行代碼,即字節碼(Bytecode)的格式給出了明確的規格。這一規格包括操作碼和操作數的語法和-數值、標識符的數值表示方式、以及Java類文件中的Java對象、常量緩沖池在JVM的存儲映象。這些定義為JVM解釋器開發人員提供了所需的信息和開發環境-。Java的設計者希望給開發人員以隨心所欲使用Java的自由。
      
      JVM定義了控制Java代碼解釋執行和具體實現的五種規格,它們是:
      JVM指令系統
      JVM寄存器
      JVM棧結構
      JVM碎片回收堆
      JVM存儲區
      
      2.1JVM指令系統
      
      JVM指令系統同其他計算機的指令系統極其相似。Java指令也是由
    操作碼和操作數兩部分組成。操作碼為8位二進制數,操作數進緊隨在操作碼的后面,其長度根據需要而不同。操作碼用于指定一條指令操作的性質(在這里我們采用匯編-符號的形式進行說明),如iload表示從存儲器中裝入一個整數,anewarray表示為一個新數組分配空間,iand表示兩個整數的"與",ret用于流程-控制,表示從對某一方法的調用中返回。當長度大于8位時,操作數被分為兩個以上字節存放。JVM采用了"big
    endian"的編碼方式來處理這種情況,即高位bits存放在低字節中。這同
    Motorola及其他的RISC
    CPU采用的編碼方式是一致的,而與Intel采用的"little
    endian
    "的編碼方式即低位bits存放在低位字節的方法不同。
      
      Java指令系統是以Java語言的實現為目的設計的,其中包含了用于調用方法和監視多先程系統的指令。Java的8位操作碼的長度使得JVM最多有256種指-令,目前已使用了160多種操作碼。
      
      2.2JVM指令系統
      
      所有的CPU均包含用于保存系統狀態和處理器所需信息的寄存器組。如果虛擬機定義較多的寄存器,便可以從中得到更多的信息而不必對棧或內存進行訪問,這有利于提-高運行速度。然而,如果虛擬機中的寄存器比實際CPU的寄存器多,在實現虛擬機時就會占用處理器大量的時間來用常規存儲器模擬寄存器,這反而會降低虛擬機的效率-。針對這種情況,JVM只設置了4個最為常用的寄存器。它們是:
      pc程序計數器
      optop操作數棧頂指針
      frame當前執行環境指針
      vars指向當前執行環境中第一個局部變量的指針
      所有寄存器均為32位。pc用于記錄程序的執行。optop,frame和vars用于記錄指向Java棧區的指針。
      
      2.3JVM棧結構
      
      作為基于棧結構的計算機,Java棧是JVM存儲信息的主要方法。當JVM得到一個Java字節碼應用程序后,便為該代碼中一個類的每一個方法創建一個棧框架,-以保存該方法的狀態信息。每個棧框架包括以下三類信息:
      局部變量
      執行環境
      操作數棧
      
      局部變量用于存儲一個類的方法中所用到的局部變量。vars寄存器指向該變量表中的第一個局部變量。
      執行環境用于保存解釋器對Java字節碼進行解釋過程中所需的信息。它們是:上次調用的方法、局部變量指針和操作數棧的棧頂和棧底指針。執行環境是一個執行一個-方法的控制中心。例如:如果解釋器要執行iadd(整數加法),首先要從frame寄存器中找到當前執行環境,而后便從執行環境中找到操作數棧,從棧頂彈出兩個-整數進行加法運算,最后將結果壓入棧頂。
      操作數棧用于存儲運算所需操作數及運算的結果。
      
      2.4JVM碎片回收堆
      
      Java類的實例所需的存儲空間是在堆上分配的。解釋器具體承擔為類實例分配空間的工作。解釋器在為一個實例分配完存儲空間后,便開始記錄對該實例所占用的內存-區域的使用。一旦對象使用完畢,便將其回收到堆中。
      在Java語言中,除了new語句外沒有其他方法為一對象申請和釋放內存。對內存進行釋放和回收的工作是由Java運行系統承擔的。這允許Java運行系統的設-計者自己決定碎片回收的方法。在SUN公司開發的Java解釋器和Hot
    Java環境中,碎片回收用后臺線程的方式來執行。這不但為運行系統提供了良好的性能,而且使程序設計人員擺脫了自己控制內存使用的風險。
      
      2.5JVM存儲區
      
      JVM有兩類存儲區:常量緩沖池和方法區。常量緩沖池用于存儲類名稱、方法和字段名稱以及串常量。方法區則用于存儲Java方法的字節碼。對于這兩種存儲區域具-體實現方式在JVM規格中沒有明確規定。這使得Java應用程序的存儲布局必須在運行過程中確定,依賴于具體平臺的實現方式。
      
      JVM是為Java字節碼定義的一種獨立于具體平臺的規格描述,是Java平臺獨立性的基礎。目前的JVM還存在一些限制和不足,有待于進一步的完善,但無論如-何,JVM的思想是成功的。
      
      對比分析:如果把Java原程序想象成我們的C++原程序,Java原程序編譯后生成的字節碼就相當于C++原程序編譯后的80x86的機器碼(二進制程序文件-),JVM虛擬機相當于80x86計算機系統,Java解釋器相當于80x86CPU。在80x86CPU上運行的是機器碼,在Java解釋器上運行的是Jav-a字節碼。
      
      Java解釋器相當于運行Java字節碼的“CPU”,但該“CPU”不是通過硬件實現的,而是用軟件實現的。Java解釋器實際上就是特定的平臺下的一個應用-程序。只要實現了特定平臺下的解釋器程序,Java字節碼就能通過解釋器程序在該平臺下運行,這是Java跨平臺的根本。當前,并不是在所有的平臺下都有相應J-ava解釋器程序,這也是Java并不能在所有的平臺下都能運行的原因,它只能在已實現了Java解釋器程序的平臺下運行。

    posted @ 2006-09-05 22:39 xyh 閱讀(310) | 評論 (0)編輯 收藏

    國人為什么這么輕視技術?

    盧彥 </blogs/linkin/default.aspx>

    http://www.agilelabs.cn/blogs/linkin/archive/2006/07/14/1460.aspx

    網上搜索一下,到處都是"過來人"的諄諄教導我們不要過分重視技術。技術的確不是創業成功的唯一原因,也的確是不能太把技術的重要性過分強調。假如目前國內是一-種技術至上的現狀,技術人員的地位虛高,那么這些言論的確有助于業內整體的協調發展。但是現狀是,目前國內普遍的認識并沒有很抬高技術的地位。恰恰相反,技術被-過低的估計了其應有的價值,網上強調技術重要性的文章幾乎沒有。技術人員的地位已經是低得不能再低,在許多公司內部,已經到處都是對技術人員的輕蔑的眼光。在重-要的技術幾乎都由國外主導,而目前中國已經幾乎喪失了任何技術主導權的今天,還在一直繼續強調切不可技術主導,將會給國家的IT產業的自強發展造成嚴重的影響。

    比如今天看到的這篇關于創業團隊的思考:切不可技術主導
    <
    http://sd.csdn.net/n/20060714/92602.html >,又是一篇典型文章。其實整篇看下來,作者說的有一定道理,只不過他其實考慮的只是有關Web 2.0網站的創業,卻又強扣了一頂技術無用論的大帽子。他的文章標題假如是:"關于Web 2.0網站創業的思考:切不可技術主導"的話,倒也較少可辯駁之處。可惜他文章標題的范圍說的是整個創業團隊,那這篇文章就完全是在誤導人了。

    IT業技術主導創業成功的例子比比皆是,著名的有:

    Borland公司。就只有兩個人,談不上管理,沒有資金,沒有關系,沒有背景,也沒有市場,要不是Anders
    Hejlesberg擁有高超的技術,寫出了當時世界上最塊的Borland Turbo Pascal編譯器,他們怎么成功?他們的創業團隊是靠什么主導的?

    ID公司。也只有兩窮小子,John Carmark和John Romero。要不是John Carmark利用天才的3D技術寫出了Doom,他們怎么成功?他們的創業團隊是靠什么主導的?

    微軟公司。還是只有兩個人。要不是Bill和Allen利用高超的技術,在4K內存的Atali 4004計算機上寫出了Basic語言的解釋器,他們怎么成功?他們的創業團隊是靠什么主導的?

    另外Apple,Oracle,Intel等等著名的公司都有類似的經歷。

    你也許會說這些都是以前的例子,現在不會有這種情況。OK,那么現在最紅火的Google,他們的幾個創始人都是技術沙文主義者,要不是他們能創造出可以支持幾-億人同時訪問只用毫秒級時間的搜索引擎,他們能成功么?另外,Linux,Firefox,MySQL,JBoss這些東西,哪個創業團隊不是靠技術主導成功的-?

    最后,我還想知道,對一個創業團隊來說,如果你不靠技術主導?那么靠什么主導?

    靠市場主導?剛創業就有市場?你用什么東西占領市場?

    靠管理主導?Come on,我們正在談論的是"創業"團隊,你認為哪個創業團隊會有幾百號人讓你來管理?

    靠Idea?有這種想法的人一般是空想家。就像不會在人群擁擠的大街上撿到一百萬一樣,容易實現的Idea早被n多人發現并且做了。哪有什么你可以想到別人沒有-想到的點子。除非你想到并且可以做到的點子別人無法做到。那你在資金,關系,地位什么都沒有的情況下,靠什么來拉高這個門檻讓別人夠不著?我能想到的只有技術。

    靠關系?如果你是國家主席的兒子,那么沒什么好談的了。這篇文章不是給你看的。

    靠鉆法律空子,政策空子?這也是需要高超的技術的,你至少在法律政策上要很熟悉。

    偷錢,搶銀行?對不起,我認為這還是需要技術,同樣是技術主導。

    靠。。。?我實在是想不出來了,如果你想到什么可以不用靠技術來主導的成功創業方法,請麻煩告訴我一下。

    posted @ 2006-09-05 22:35 xyh 閱讀(227) | 評論 (0)編輯 收藏

    設為首頁 加入收藏 與我聯系 您的瀏覽器:

    主站蜘蛛池模板: 成年人免费视频观看| 国产精品成人免费观看| 亚洲a∨国产av综合av下载 | 亚洲日韩国产二区无码| 亚洲成a人无码亚洲成av无码| 亚洲日韩久久综合中文字幕| 亚洲综合小说另类图片动图 | 亚洲精品无码久久久久久| 亚洲国产精品久久久久秋霞小| 亚洲色中文字幕在线播放| 久久精品国产亚洲AV电影网| 免费人成年轻人电影| 亚洲一卡二卡三卡| av永久免费网站在线观看| 成人av免费电影| 亚洲精品免费视频| 国产精品亚洲一区二区三区久久| 免费国产成人α片| 免费一级肉体全黄毛片| 亚洲熟女乱色一区二区三区| 国产高清不卡免费视频| 亚洲午夜成人精品电影在线观看| 亚洲男人天堂2018av| 日韩精品久久久久久免费| 国产午夜亚洲精品午夜鲁丝片| 亚洲丁香婷婷综合久久| 最近高清中文字幕无吗免费看| 久久亚洲精品视频| 天黑黑影院在线观看视频高清免费| 国产最新凸凹视频免费| 亚洲午夜福利在线视频| 最新黄色免费网站| 亚洲精品综合久久中文字幕 | 亚洲一卡2卡4卡5卡6卡在线99| 久草福利资源网站免费| 国产亚洲综合成人91精品 | 日韩精品免费视频| 亚洲成AV人片一区二区| a级午夜毛片免费一区二区| 亚洲色成人WWW永久网站| 中国精品一级毛片免费播放|
    <tt id="kkgjq"></tt>
      <var id="kkgjq"></var>

        <sup id="kkgjq"></sup>
        <video id="kkgjq"><td id="kkgjq"><i id="kkgjq"></i></td></video>
      1.