⑴ 程序員的職業困境
老虎、Bill、自己,中國程序員的困境也來自三個方面
困境之一:老虎的威脅。程序員要面對的餓老虎實在不少,比如說老闆,好象就是程序員的天敵,什麼「不懂技術卻指手畫腳」、什麼「得到與付出不相當」似乎是程序員最常見的牢騷,這個問題不可能得到真正的解決。
困境之二:Bill的競爭。一般說來中國的程序員大都是吃「青春飯」的,大部分程序員的黃金時代是24~28歲。到了30歲左右,一批又一批年輕程序員會給你帶來巨大的競爭壓力。首先由於軟體行業的飛速發展,很多自己以前學的東西逐漸升級換代,而許多程序員由於長期於工作,學習新知識的效率必然下降。其次自己幹了幾年,薪水要求自然就高了,而年輕程序員工資又低、幹活又快,當然會成為老闆的首選;第三,30歲基本都已經成家了,要支撐家庭的生活負擔,幾乎連從頭再來的勇氣都不會有了。中國的老話說「長江後浪推前浪、前浪死在沙灘上」,這個歷史的規律在軟體開發行業體現的尤其明顯和殘酷,很多程序員必然要面對的結果就是降薪乃至失業。
困境之三:自我的實力。都知道人最難戰勝的是自己,所以自我也就是程序員需要超越的最大障礙。大多程序員都把系統分析員和項目經理作為自己的職業目標,但這些目標的達成,需要個人素質、市場機遇等多個方面的條件,太多的程序員就是在高不成、低不就的狀態中蹉跎了歲月。對於系統分析員,特別需要以下幾方面的素質:客戶需求分析能力、系統架構與設計能力、模塊分解設計能力、項目流程式控制制能力、項目風險評估能力等,而對於項目經理則更注重項目管理方面的能力如團隊組織能力、溝通協調能力、分析問題解決問題的能力以及良好的職業道德等,而這些素質和能力往往只能依靠程序員個人的學習和努力。看到越來越多的程序員開始學習項目管理的課程,真的有點為他們擔心,因為現在的項目管理培訓只能停留在理論和考證的程度,既沒有素質方面的訓練,又缺少實際軟體開發項目的案例,學習的結果遠遠不能達到預期的效果。
⑵ 有人說做程序員容易禿,是真的嗎為什麼
程序員的確容易禿頭脫發,因為頭發在中醫里稱作血餘,有一味中葯叫血餘炭,就是頭發燒的炭。
其次一個就是腎,其華在發。淺顯一點理解就是,腎影響人的頭發生長,人年紀大了腎精虛弱,頭發就開始白了,也更容易掉頭發了。而貧血的人頭發容易枯黃。
再從血的角度來說,肝主藏血,大家都知道熬夜傷肝,而從各方面的信息來看996已經要成為程序員的標配了,甚至後半夜都友人還在加班。長期的加班,熬夜損耗肝血。
而長期盯著屏幕,繼續在「傷血「的路上助力一把,有一句話叫做久視傷血,就是長期的用眼,耗傷人體血氣。
特別在改BUG的時候,有時候翻來覆去盯著幾行字母,不停地檢查,修改,檢查修改。傷腦,傷肝,傷眼睛。還可能憋尿。按照我自己作為入門者的習慣,中間是不會離開的,好不容易理出了頭緒,一離開感覺等回來後一臉懵逼,前面的都白幹了,又要重頭再來。
說完肝再來說說腎,我們又有肝腎同源之說,這個暫且不提,主要來講講腎主骨,生髓,藏於腦,腦為髓之海,程序員作為一個腦力勞動者,不知不覺中消耗了大量腦細胞,(魔幻點的說法也就是消耗了大量精神力,正式點的說法叫做勞心過度,屬於五勞七傷的一種。)加上長時間工作,熬夜,壓力等等原因。在相對高的薪資下,也也付出了相對的代價,所以經常把程序員比作搬磚,當然Ctrl+C, Ctrl+V也在其中起了作用。
當然,不禿頭的程序員也是有的,有些人天生發量,這是優秀的基因,沒有辦法,但是強健的體魄,也是對抗的方式,適當的運動,適當的飲食,如果想從事程序員的工作,也可以提前預防啊!
⑶ 當程序員有哪些危害和後果
對眼睛傷害大,長時間坐著對身體不好,不過現在都有升降桌子了,當程序員只有極少數像樓上說的那樣,相反一名真正得程序員表情一點都不木訥,由於大腦不停的思考,所以會有一種程序員獨特的氣質,這種氣質絕不是木訥,現在得程序員都怕死,所以健身是必不可少的,語言表達能力特別強,因為程序員的邏輯能力很強,工作的時候也需要和同時進行溝通,況且現在的公司越來越注重溝通成本,所以語言表達能力是絕對ok的,人際交往能力看你怎麼理解吧,不同的程序員都有自己的圈子,可能他們的朋友是通過業余愛好認識的,可能是程序員或者程序媛,現在生活質量提高了,哪個人沒有除了工作以外業余愛好?至於那些一新做程序員的,人家絕對不缺朋友,至於難找女朋友,這不僅僅是程序員吧,只能說情商低的人可能會過得不如意,這點再任何領域都適用,並不僅限於程序員,再來說說直男和生活邋遢還有加班,
我認識的程序員,只有極少數是生活邋遢,直男,還一直加班,真實情況是這樣的,這種人有兩種情況,一種是再生活上受了極大的打擊,另一種是技術太差,又不肯繼續學習,最後的結果就是被解僱
⑷ 為什麼當程序員,敲代碼敲長了,表達能力直線下降。與人社交能力直線下降。該怎麼彌補自己的短板。
你經常不說話,肯定了啊!因為你潛意識里忘記了,怎麼表達,你可以多出去旅遊,把工作全部都忘掉,也許和人交流的那種力量就會回來,你也可以去網上多認識些朋友,多和他們交流交流,也許你也會變得更加的有社交能力,千萬不要這樣憋自己,很容易得抑鬱症
⑸ 長期做程序員會失去什麼
會失去健康,會失去生活的熱愛
⑹ 請高手解答!木馬是什麼它有多少種有什麼辦法去防預它被木馬入侵後有什麼現象
什麼是木馬?
特洛伊木馬(以下簡稱木馬),英文叫做「Trojan house」,其名稱取自希臘神話的特洛伊木馬記。
它是一種基於遠程式控制制的黑客工具,具有隱蔽性和非授權性的特點。
所謂隱蔽性是指木馬的設計者為了防止木馬被發現,會採用多種手段隱藏木馬,這樣服務端即使發現感染了木馬,由於不能確定其具體位置,往往只能望「馬」興嘆。
所謂非授權性是指一旦控制端與服務端連接後,控制端將享有服務端的大部分操作許可權,包括修改文件,修改注冊表,控制滑鼠,鍵盤等等,而這些權力並不是服務端賦予的,而是通過木馬程序竊取的。
從木馬的發展來看,基本上可以分為兩個階段。
最初網路還處於以UNIX平台為主的時期,木馬就產生了,當時的木馬程序的功能相對簡單,往往是將一段程序嵌入到系統文件中,用跳轉指令來執行一些木馬的功能,在這個時期木馬的設計者和使用者大都是些技術人員,必須具備相當的網路和編程知識。
而後隨著WINDOWS平台的日益普及,一些基於圖形操作的木馬程序出現了,用戶界面的改善,使使用者不用懂太多的專業知識就可以熟練的操作木馬,相對的木馬入侵事件也頻繁出現,而且由於這個時期木馬的功能已日趨完善,因此對服務端的破壞也更大了。
所以所木馬發展到今天,已經無所不用其極,一旦被木馬控制,你的電腦將毫無秘密可言。
參考資料:http://bbs.51ww.com/365000/ShowPost.aspx
回答者:完顏康康 - 探花 十一級 9-18 12:40
--------------------------------------------------------------------------------
DLL 木馬揭秘
相信經常玩木馬的朋友們都會知道一些木馬的特性,也會有自己最喜愛的木馬,不過,很多朋友依然不知道近年興起的「DLL木馬」為何物。什麼是「DLL木馬」呢?它與一般的木馬有什麼不同?
一、從DLL技術說起
要了解DLL木馬,就必須知道這個「DLL」是什麼意思,所以,讓我們追溯到幾年前,DOS系統大行其道的日子裡。在那時候,寫程序是一件繁瑣的事情,因為每個程序的代碼都是獨立的,有時候為了實現一個功能,就要為此寫很多代碼,後來隨著編程技術發展,程序員們把很多常用的代碼集合(通用代碼)放進一個獨立的文件里,並把這個文件稱為「庫」(Library),在寫程序的時候,把這個庫文件加入編譯器,就能使用這個庫包含的所有功能而不必自己再去寫一大堆代碼,這個技術被稱為「靜態鏈接」(Static Link)。靜態鏈接技術讓勞累的程序員鬆了口氣,一切似乎都很美好。可是事實證明,美好的事物不會存在太久,因為靜態鏈接就像一個粗魯的推銷員,不管你想不想要宣傳單,他都全部塞到你的手上來。寫一個程序只想用到一個庫文件包含的某個圖形效果,就因為這個,你不得不把這個庫文件攜帶的所有的圖形效果都加入程序,留著它們當花瓶擺設,這倒沒什麼重要,可是這些花瓶卻把道路都阻塞了——靜態鏈接技術讓最終的程序成了大塊頭,因為編譯器把整個庫文件也算進去了。
時代在發展,靜態鏈接技術由於天生的弊端,不能滿足程序員的願望,人們開始尋找一種更好的方法來解決代碼重復的難題。後來,Windows系統出現了,時代的分水嶺終於出現。Windows系統使用一種新的鏈接技術,這種被稱為「動態鏈接」(Dynamic Link)的新技術同樣也是使用庫文件,微軟稱它們為「動態鏈接庫」——Dynamic Link Library,DLL的名字就是這樣來的。動態鏈接本身和靜態鏈接沒什麼區別,也是把通用代碼寫進一些獨立文件里,但是在編譯方面,微軟繞了個圈子,並沒有採取把庫文件加進程序的方法,而是把庫文件做成已經編譯好的程序文件,給它們開個交換數據的介面,程序員寫程序的時候,一旦要使用某個庫文件的一個功能函數,系統就把這個庫文件調入內存,連接上這個程序佔有的任務進程,然後執行程序要用的功能函數,並把結果返回給程序顯示出來,在我們看來,就像是程序自己帶有的功能一樣。完成需要的功能後,這個DLL停止運行,整個調用過程結束。微軟讓這些庫文件能被多個程序調用,實現了比較完美的共享,程序員無論要寫什麼程序,只要在代碼里加入對相關DLL的調用聲明就能使用它的全部功能。最重要的是,DLL絕對不會讓你多拿一個花瓶,你要什麼它就給你什麼,你不要的東西它才不會給你。這樣,寫出來的程序就不能再攜帶一大堆垃圾了——絕對不會讓你把吃剩的東西帶回家,否則罰款,這是自助餐。
DLL技術的誕生,使編寫程序變成一件簡單的事情,Windows為我們提供了幾千個函數介面,足以滿足大多數程序員的需要。而且,Windows系統自身就是由幾千個DLL文件組成,這些DLL相互扶持,組成了強大的Windows系統。如果Windows使用靜態鏈接技術,它的體積會有多大?我不敢想。
二、應用程序介面API
上面我們對DLL技術做了個大概分析,在裡面我提到了「介面」,這又是什麼呢?因為DLL不能像靜態庫文件那樣塞進程序里,所以,如何讓程序知道實現功能的代碼和文件成了問題,微軟就為DLL技術做了標准規范,讓一個DLL文件像乳酪一樣開了許多小洞,每個洞口都註明裡面存放的功能的名字,程序只要根據標准規范找到相關洞口就可以取得它要的美味了,這個洞口就是「應用程序介面」(Application Programming Interface),每個DLL帶的介面都不相同,盡最大可能的減少了代碼的重復。用Steven的一句話:API就是一個工具箱,你根據需要取出螺絲刀、扳手,用完後再把它們放回原處。在Windows里,最基本的3個DLL文件是kernel32.dll、user32.dll、gdi32.dll。它們共同構成了基本的系統框架。
三、DLL與木馬
DLL是編譯好的代碼,與一般程序沒什麼大差別,只是它不能獨立運行,需要程序調用。那麼,DLL與木馬能扯上什麼關系呢?如果你學過編程並且寫過DLL,就會發現,其實DLL的代碼和其他程序幾乎沒什麼兩樣,僅僅是介面和啟動模式不同,只要改動一下代碼入口,DLL就變成一個獨立的程序了。當然,DLL文件是沒有程序邏輯的,這里並不是說DLL=EXE,不過,依然可以把DLL看做缺少了main入口的EXE,DLL帶的各個功能函數可以看作一個程序的幾個函數模塊。DLL木馬就是把一個實現了木馬功能的代碼,加上一些特殊代碼寫成DLL文件,導出相關的API,在別人看來,這只是一個普通的DLL,但是這個DLL卻攜帶了完整的木馬功能,這就是DLL木馬的概念。也許有人會問,既然同樣的代碼就可以實現木馬功能,那麼直接做程序就可以,為什麼還要多此一舉寫成DLL呢?這是為了隱藏,因為DLL運行時是直接掛在調用它的程序的進程里的,並不會另外產生進程,所以相對於傳統EXE木馬來說,它很難被查到。
四、DLL的運行
雖然DLL不能自己運行,可是Windows在載入DLL的時候,需要一個入口函數,就如同EXE的main一樣,否則系統無法引用DLL。所以根據編寫規范,Windows必須查找並執行DLL里的一個函數DllMain作為載入DLL的依據,這個函數不作為API導出,而是內部函數。DllMain函數使DLL得以保留在內存里,有的DLL裡面沒有DllMain函數,可是依然能使用,這是因為Windows在找不到DllMain的時候,會從其它運行庫中找一個不做任何操作的預設DllMain函數啟動這個DLL使它能被載入,並不是說DLL可以放棄DllMain函數。
五、DLL木馬技術分析
到了這里,您也許會想,既然DLL木馬有那麼多好處,以後寫木馬都採用DLL方式不就好了嗎?話雖然是這么說沒錯,但是DLL木馬並不是一些人想像的那麼容易寫的。要寫一個能用的DLL木馬,你需要了解更多知識。
1.木馬的主體
千萬別把木馬模塊寫得真的像個API庫一樣,這不是開發WINAPI。DLL木馬可以導出幾個輔助函數,但是必須有一個過程負責主要執行代碼,否則這個DLL只能是一堆零碎API函數,別提工作了。
如果涉及一些通用代碼,可以在DLL里寫一些內部函數,供自己的代碼使用,而不是把所有代碼都開放成介面,這樣它自己本身都難調用了,更不可能發揮作用。
DLL木馬的標准執行入口為DllMain,所以必須在DllMain里寫好DLL木馬運行的代碼,或者指向DLL木馬的執行模塊。
2.動態嵌入技術
Windows中,每個進程都有自己的私有內存空間,別的進程是不允許對這個私人領地進行操作的,但是,實際上我們仍然可以利用種種方法進入並操作進程的私有內存,這就是動態嵌入,它是將自己的代碼嵌入正在運行的進程中的技術。動態嵌入有很多種,最常見的是鉤子、API以及遠程線程技術,現在的大多數DLL木馬都採用遠程線程技術把自己掛在一個正常系統進程中。其實動態嵌入並不少見,羅技的MouseWare驅動就掛著每一個系統進程-_-
遠程線程技術就是通過在另一個進程中創建遠程線程(RemoteThread)的方法進入那個進程的內存地址空間。在DLL木馬的范疇里,這個技術也叫做「注入」,當載體在那個被注入的進程里創建了遠程線程並命令它載入DLL時,木馬就掛上去執行了,沒有新進程產生,要想讓木馬停止惟有讓掛接這個木馬DLL的進程退出運行。但是,很多時候我們只能束手無策——它和Explorer.exe掛在一起了,你確定要關閉Windows嗎?
3.木馬的啟動
有人也許會迫不及待的說,直接把這個DLL加入系統啟動項目不就可以了。答案是NO,前面說過,DLL不能獨立運行,所以無法在啟動項目里直接啟動它。要想讓木馬跑起來,就需要一個EXE使用動態嵌入技術讓DLL搭上其他正常進程的車,讓被嵌入的進程調用這個DLL的DllMain函數,激發木馬運行,最後啟動木馬的EXE結束運行,木馬啟動完畢。
啟動DLL木馬的EXE是個重要角色,它被稱為Loader,如果沒有Loader,DLL木馬就是破爛一堆,因此,一個算得上成熟的DLL木馬會想辦法保護它的Loader不會那麼容易被毀滅。記得狼狽為奸的故事嗎?DLL木馬就是爬在狼Loader上的狽。
Loader可以是多種多樣的,Windows的rundll32.exe也被一些DLL木馬用來做了Loader,這種木馬一般不帶動態嵌入技術,它直接掛著rundll32進程運行,用rundll32的方法(rundll32.exe [DLL名],[函數] [參數])像調用API一樣去引用這個DLL的啟動函數激發木馬模塊開始執行,即使你殺了rundll32,木馬本體還是在的,一個最常見的例子就是3721中文實名,雖然它不是木馬。
注冊表的AppInit_DLLs鍵也被一些木馬用來啟動自己,如求職信病毒。利用注冊表啟動,就是讓系統執行DllMain來達到啟動木馬的目的。因為它是kernel調入的,對這個DLL的穩定性有很大要求,稍有錯誤就會導致系統崩潰,所以很少看到這種木馬。
有一些更復雜點的DLL木馬通過svchost.exe啟動,這種DLL木馬必須寫成NT-Service,入口函數是ServiceMain,一般很少見,但是這種木馬的隱蔽性也不錯,而且Loader有保障。
4.其它
到這里大家也應該對DLL木馬有個了解了,是不是很想寫一個?別急,不知道大家想過沒有,既然DLL木馬這么好,為什麼到現在能找到的DLL木馬寥寥無幾?現在讓我來潑冷水,最重要的原因只有一個:由於DLL木馬掛著系統進程運行,如果它本身寫得不好,例如沒有防止運行錯誤的代碼或者沒有嚴格規范用戶的輸入,DLL就會出錯崩潰。別緊張,一般的EXE也是這樣完蛋的,但是DLL崩潰會導致它掛著的程序跟著遭殃,別忘記它掛接的是系統進程哦,結局就是……慘不忍睹。所以寫一個能公布的DLL木馬,在排錯檢查方面做的工作要比一般的EXE木馬多,寫得多了自己都煩躁……
六、DLL木馬的發現和查殺
經常看看啟動項有沒有多出莫名其妙的項目,這是Loader的所在,只要殺了狼,狽就不能再狂了。而DLL木馬本體比較難發現,需要你有一定編程知識和分析能力,在Loader里查找DLL名稱,或者從進程里看多掛接了什麼陌生的DLL,可是對新手來說……總之就是比較難啊比較難,所以,最簡單的方法:殺毒軟體和防火牆(不是萬能葯,切忌長期服用)。
⑺ 程序員應該注意哪些身體健康他們容易患什麼職業病
沒吃過泡麵不算程序員,沒加過班的不是程序員,久而久之各種健康問題就來了,當然小編也知道要要因人而異,不同的職業會引發不同的毛病。據國外的一項調查表明,頭發的變化與相應人群在年齡,性別甚至職業上都有明顯的特徵,程序員的脫發現象,很有可能是因為長時間工作壓力大,長期加班和睡眠障礙,作息混亂等等原因造成的亞健康。
如何很快的淘汰一個人,是讓他太忙,忙到沒有時間休息,沒有時間創造思維,沒有時間學習,才為可怕。所以,請擁有好心態,技術學不完,時間是自己的。有些關於身體上的一些疾病自己要注重,畢竟身體是自己的,別人無法與你一起承受疼痛。