專訪劉偉:軟件開發人員的內功修煉之道

摘要:數學修養對軟件開發之路起著什么作用?碼農如何修煉自己的內功并成長為優秀的軟件開發員?帶著相關思考,社區之星第10期采訪了中南大學副教授——劉偉。他對數學修養、設計模式、軟件架構和重構方面的獨特見解,相信會給眾多碼農和技術大牛帶來新的收獲。

導語:他雖然是一名大學老師,但卻有著十多年軟件開發和項目管理經驗,他曾任職于湖南移動、創智軟件園、NIIT(印度國家信息技術學院)和長沙創智新程教育技術有限公司等機構,也曾為多所高校、軟件培訓機構擔任講師和多家公司提供企業內訓服務。另外他還主持和參與了30多個軟件項目的開發工作,涉及教育、電子商務(政務)、企業EAI、移動通信等領域,此外他還致力于科研研究。正是這種復雜的多重經歷,讓他對軟件開發有著獨到的見解和心得,為此CSDN記者對這位學者兼技術人進行了專訪,希望大家看完后能夠對軟件開發之路有全新的認識,尤其是對軟件開發人員至關重要的設計模式、數學修養、軟件架構和重構方面(文章內容有點長,請耐心看下去,會對你有所啟發)。

劉偉,中南大學軟件學院副教授,博士。中國計算機學會會員,美國計算機學會(ACM)會員,希賽教育集團企業內訓講師,新程教育集團顧問兼高級講師,CSAI顧問團專業顧問及內訓講師。具有十多年軟件開發、項目管理及IT教育培訓經驗,曾擔任項目經理、系統架構師、軟件工程師、IT培訓講師和高級講師等職位。研究方向為軟件工程與數據挖掘,目前正從事相關算法的研究與CASE工具的開發工作。著有:《設計模式》、《設計模式實訓教程》、《設計模式的藝術——軟件開發人員內功修煉之道》等書。同時也在編著新書《UML實用教程》和《C#設計模式》。

我與計算機的故事

CSDN:請和大家介紹下你及所從事的工作

劉偉:我現在主要從事軟件工程和數據挖掘等領域的科研、教學和研發工作。具體工作包括:

  • 軟件工程專業課程的教學工作:主要講授《軟件工程》、《設計模式》、《軟件體系結構》和《電子商務與數據挖掘》等課程。
  • 軟件工程和數據挖掘等領域的科研工作:注重理論研究與實際應用的結合,目前主要研究課題包括源代碼自動重構、CASE工具研發、源代碼中設計模式挖掘、軟件度量等,目前承擔的幾項科研項目的研究工作,已得到包括華為在內的多家企業的關注并愿意參與其中。
  • 企業培訓與支持工作:在周末和寒暑假,我會給一些企業提供需求分析、UML、設計模式和重構等技術培訓,密切與企業聯系,為企業項目開發提供一些指導,同時也為高校教學工作添加更多真實的企業案例,已經給多家公司提供過企業內訓,反響都還不錯。
  • 軟件研發工作:時間允許的話我會承擔一些軟件項目的研發工作,目前正在從事一些CASE工具的研發工作。

CSDN:你并非計算機出身,是什么緣故促使你自學計算機課程?在學習上有什么心得可分享?

劉偉:嚴格來講大學期間我并不是一名好學生,因為我沒把時間和精力放在專業學習上,現在從事的工作也與大學所學專業沒有關系,但我并不后悔,反而覺得大學四年讓我更加清楚地知道自己想要什么,樹立了更長遠的目標,那幾年也過得很充實,為之后的學習和工作奠定了很好的基礎。

我大學本科學的是化學專業,不過從大一(1999年)開始就對計算機產生了極大興趣,然后自學了所有計算機課程,大二開始在一些校辦網站和軟件公司兼職。在本科和研究生學習期間,我利用課余時間在多家軟件公司兼職,也組織過團隊在外面接一些項目。軟件開發是極富挑戰的創造性工作,我很享受那個集體力和腦力勞動于一體的過程,我想最根本的原因應該還是興趣所在吧。

在大學期間,我對軟件教育和技術推廣也具有極大熱情,2001年(19歲)開始在一些IT培訓機構擔任網頁制作、SQL Server數據庫等課程的兼職講師,同時考取了高級程序員等證書,還獲得了微軟認證系統工程師和微軟認證數據庫管理員。

對于軟件知識和技術的學習,我有以下幾點建議,供參考:

  • 最重要的是興趣:興趣是可以慢慢培養,作為一名軟件專業老師,我也有意識發掘并培養學生的興趣,讓學生喜歡上這個專業,然后再努力去學習研究,進而全面學習和掌握相關專業知識;
  • 其次是學習能力:IT知識更新速度非常快,一定要培養自學能力,我經常跟學生說:真正成功的大學教育并不在于教會學生多少東西,而是教會學習的能力,這種能力讓大家終身受用。俗話說:授人魚,不如授人以漁!只有不斷學習,才能真正成為行業領袖和專家。在學習過程中,要善于利用互聯網資源,不要把電腦和網絡當做娛樂工具,而應該作為學習工具,經常訪問一些IT網站,看一些行業新聞、博客和論壇等,多交流、多討論和多虛心學習。
  • 多思考,多實踐:軟件工程是工程應用類專業,一定要多實踐,有條件可以參與一些老師牽頭的橫向項目(企業項目),或者在不影響學習的情況下接點企業小項目做做(例如小網站或者小型的MIS系統之類),這樣能力提升會更快,而且能夠學到很多在課堂上學不到的知識和經驗。

2010年我在CSDN博客上發表了一篇文章,《寫給明天的軟件工程師——感悟篇》,大家如果感興趣的話可以看看。

CSDN:你微博中用“軟件興邦,教育利民!致力于中國軟件教育“作為座右銘,想傳達什么?

劉偉:這包含了我的人生理想,我現在的目標是成為一名一流的IT教育工作者,這里的IT教育是廣義的,除了高校教育、企業培訓外,還包括職業教育等,我覺得一個行業要能得到更好的發展,應該有一套成熟、科學、合理的人才培養體系。現在軟件行業的地位和重要性毋庸置疑,前段時間我在博客中轉載了一篇文章《軟件應用無所不在 正吞噬整個世界》,現在軟件已滲入到各行各業,而且很多傳統行業已經離不開軟件的支持,例如:零售、交通、出版、醫療、招聘、娛樂、電信、教育等等,還有很多行業本身就是依托于軟件的,例如電子商務、在線游戲等。網景公司創始人、硅谷著名投資人馬克·安德森的這篇文章中,他列舉我們所面臨的三大挑戰第二條就是人才問題,軟件行業缺乏大量能夠勝任的軟件工程師、經理、營銷人員和銷售人員,他指出只有教育才能解決這個問題。正因為如此,我覺得自己的選擇是非常正確的,我也希望自己能夠通過努力,成為一名優秀的軟件教育工作者。“軟件興邦,教育利民!致力于中國軟件教育”這句話也是用來勉勵自己,希望自己能夠不斷研究和探索軟件人才培養的規律和模式,以便更好地從事軟件教育工作。

數學之美:程序員應有的數學修養

CSDN:一名優秀的程序員和他的數學修養有沒有什么聯系?它給程序員帶來的最大幫助是什么?

劉偉:我個人覺得是有聯系,而且關系很密切。數學作為自然科學之母,更多的是培養人的邏輯思維能力,是思維的體操。

我們要區別一下合格程序員和優秀程序員,合格程序員可以完成一些常規的代碼編寫工作,例如CRUD,這里確實用不到太多的數學知識,但是如果希望能寫出高質量的代碼(例如具有良好的時間復雜度和空間復雜度),或者參與一些技術難度較大的軟件開發工作(例如涉及到構建數學模型的軟件,如交通調度系統、與電子商務有關的數據挖掘系統、計算機模擬藥物設計軟件等),良好的邏輯思維能力是必須的,而數學正可以培養這種能力。

良好的數學修養將讓程序員在設計和實現軟件時思維更嚴謹、思路更開闊、考慮也會更縝密,有助于寫出高質量的軟件,還有利于參與一些技術復雜度較高的軟件,這對于個人綜合素質的提高和職業發展都很有幫助。我建議大家有時間看看數學書,做做數學題,你能夠從中找到快樂!

CSDN:那程序員如何培養自己的數學修養?應該培養哪些數學修養?

劉偉:2012年有三本書賣得很火,它們是:騰訊副總裁吳軍先生的《數學之美》、日本資深技術作家結城浩的《程序員的數學》和北大高材生顧森的《思考的樂趣:Matrix67數學筆記》。而購買者絕大部分都是IT相關人士,當然最多的還是程序員。由此可見,很多一線程序員都意識到有時間應該學學數學,看看數學書,培養自己的數學修養。這是好事,說明大家都在努力求進步,都在努力提升自己的綜合水平。我也讀完這三本書,收益頗豐。

2006年我在CSDN博客上發表了一篇題為《淺談程序員的數學修養》文章,很多人發表了一些不同的看法和意見,當然我在這篇文章中所寫的很多都是個人觀點,難免會存在一些考慮欠周全的地方,但對于一名優秀程序員是否應該具備一定的數學修養這個觀點我還是堅持自己意見,我認為是肯定的。那么如何培養自己的數學修養,我在《淺談程序員的數學修養》一文中有提到,大家感興趣的話可以看看這篇文章,另外我還轉載了幾篇與之相關的文章:《數學是成就卓越開發人員的必備技能》和《編程需要知道多少數學知識》,有一些不同的聲音,大家都可以看看。

需要指出的是這里所說的數學修養并不是指數學知識,不是指你各種解題能力,這里所指的數學修養更多的是平時對數學知識的積累。比如適當做數學題來訓練自己的思維、看有關數學書來豐富自己的知識體系,當你需要在工作中具體用到一些數學知識時,你可以很快地學習。數學修養的培養更多的是培養自己的邏輯思維能力,這對于一個優秀程序員是非常重要的能力,數學修養不等于數學知識,并不是看幾本高深的數學書就能有好的數學修養,真正的數學修養的培養并不需要我們一定要掌握多少高深的數學知識,而是在平常的學習和工作中能夠將數學知識和正在解決的問題聯系起來。例如當你在設計一個電子商務系統時,除了傳統的CRUD,你還應該考慮一下顧客行為分析、商品推薦、網站鏈接結構優化、廣告投入策略、信息檢索模型構建等,這里面也許就需要用到貝葉斯網絡、粒子群優化、圖論、 聚類和分類等與數學相關的知識,如果你具備很好的數學修養,平時也注意數學知識的積累,那么即使從頭開始學這里的某些知識也不是難事。由此可見,對于一名優秀程序員而言,數學修養是必備的。

具體來說,數學修養的培養可以從算法分析和設計開始,深入理解一些經典算法的設計原理和實現機制,我認為算法是數學的一部分,是數學在計算機領域的應用,就像數學應用在材料、力學、經濟學一樣。另外,有空的話可以多做數學題和邏輯題,把這些習題當做一種邏輯思維練習,讓自己思維更加活躍一點,Bob大叔(Robert C. Martin)稱這種練習為卡塔(Kata),我建議大家有時間每天也做一兩個卡塔,有些數學題可以不在紙上寫,直接用程序實現也可以。另外,前面提到的那三本書也挺不錯,建議大家有時間可以看看,權當一個入門,總之一定要認識到數學修養的重要性。對于那些正在或有志于數據挖掘、信號處理、圖像處理和搜索引擎等工作的朋友,那數學的重要性就不多言了,大家都懂的。

IT人才培養

CSDN:在大學計算機專業課中哪些課程最難?你又是通過什么方式簡單地講解難點?

劉偉:大學計算機專業課中比較難的課包括離散數學、數據結構、編譯原理、算法分析與設計等(來自同學反映),當然有的學校還開設了信息論與編碼、數字圖像處理、計算機圖形學、計算機密碼學、數據挖掘等,這些課跟數學以及邏輯思維能力或多或少有點關系,當然也因人而異。上述這些課程對于有些同學而言也并不難,但是跟軟件工程、操作系統、計算機網絡、計算機組成原理等課程相比,很多同學在學習這些課程時相對更加吃力。

這些課有些我也沒有教過,在以前講授數據結構、算法分析與設計等課時,如果遇到比較難的地方,我會首先利用一些圖形和動畫來分析其原理,先形成一個感性的認識,然后引入一些比較容易理解和通俗的實例來講解,通過對具體問題的分析來逐步深入。特別是算法,不能為講算法而講算法,最好能夠結合一些具體問題來分析,對于算法的本質需要講透徹一點,但通常數學基礎較好的學生可以快速消化這些知識,而數學基礎相對較差的在學習過程中遇到的困難更大。因此,我有時候也會要求學生在課后做邏輯思維題,例如數字找規律、圖形找規律、邏輯推理、簡單的數學證明題等來訓練一下思維能力,這其實也是在無形中培養自己的數學修養,通過一段時間的訓練,有些同學確實有所進步,在思考問題時思路更開闊、更嚴謹,對算法的理解也更深入。

CSDN:你曾做過幾年開發,后來為什么從技術人轉為IT教育工作者?之前的工作對你現在有何幫助?在給高校學生上課之外,你還喜歡與企業交流,為什么?

劉偉:我個人對教育事業可以說是情有獨鐘,我出生于一個教師家庭,祖父、父親、母親都是教師,祖父和父親是一所中學教師(祖父是老校長,父親是現任校長),母親是小學教師。從小就在學校長大,一直很喜歡把自己學到的東西傳授給別人,這很快樂。在大三(19歲)時我就在IT培訓機構擔任網頁制作、SQL Server數據庫等課程的講師,那時學生基本上比我大,但學習完之后,大家反應都還挺好,說我講課思路清晰、內容很豐富、信息量大,能夠學到很多東西,我想這方面還有點遺傳基因吧。研究生階段也在職業培訓機構擔任兼職講師,碩士畢業(2006年)后在湖南移動、創智軟件園上班,主要從事軟件研發工作,還在NIIT(印度國家信息技術學院)、創智新程教育技術有限公司(原創智集團教育事業部)擔任高級講師,同時也擔任幾所高校的企業兼職教師,之后讀博并在中南大學軟件學院任教。從2001年開始都從事與IT教育相關的工作,之前是兼職,現在是全職。對于軟件研發、軟件職業教育、軟件高校教育我都有涉足,正是這種特殊的工作經歷,讓我對IT人才的培養有更深刻的理解和認識。

在有過幾年一線開發經驗后,我發現自己最大的長處還是在于將一些知識用較為通俗的語言和實例傳遞給他人,這也是一名好教師,特別是IT相關教師應該具備的能力,因此,我陸續拒絕了很多國內外知名企業的Offer和多家獵頭公司的邀約,在經過慎重思考后我已逐步將工作重心轉移到軟件教育上。另外我覺得中國的軟件教育需要一批有過企業背景,也具有較好表達能力和感染力的老師,我自認為還是具備這些條件的。看到我的學生們能夠進入一些一流的軟件公司、做出一些優秀的軟件,所帶給我的成就和愉悅感,遠比自己收獲這些要大。

企業工作背景對我的教學工作非常有幫助,在教學過程中,我會結合一些企業真實項目實例來進行知識講解,會結合我之前的一些工作經歷講授一些書本之外的知識,例如在講解軟件需求工程時,我會告訴學生我曾參與開發的一些項目是如何來獲取需求的、對于不同的需求源我們做了哪些分析和考慮、采用了哪些需求獲取手段、如何記錄需求以及如何確認需求,跟學生講我們當時遇到了哪些問題以及最后怎么解決的,還會穿插一些真實的小故事,讓大家的學習過程不那么枯燥無味,而是充滿好奇感和趣味性。正因為之前參與過那么多實際的項目,親身經歷過很多軟件的成功與失敗,也充分體會到過程的快樂與艱辛,才讓我現在能夠自信滿滿地站在講臺上,與學生們分享我的知識與經驗。

為了不脫離企業,我現在仍然會經常與企業進行交流,我一直認為,一旦脫離企業實際需求,IT教育不可能培養出真正優秀實用的人才。一方面,我會在工作之余參與一些企業項目的開發工作,主要以顧問的形式參與需求分析、系統架構設計、技術評審等,盡自己的能力給一些企業提供指導,例如教企業如何實施Scrum、如何使用UML構建軟件模型、如何對源代碼進行優化和重構等。在提供指導的同時,我又可以將這些知識和經驗傳遞給在校學生,讓學生知道現在企業正在做什么、他們是怎么做的、遇到了什么困難、應該具備哪些知識才能勝任這些工作,我覺得這是一個良性循環,學生們學習了這些知識和技能之后在實際開發中就能夠用上,而且學習過程本身也很好地切合了企業的需求,在一定程度上解決高校人才培養和企業實際需求脫節的問題。當然,我現在所做的還是一個探索性的工作,也希望這項工作對于我國高校軟件人才的培養有一定的參考價值。另一方面,我也在分析企業的一些需求,例如,有些企業員工因為工作壓力大、項目進度緊等原因,無法靜下心來學習一些新知識,于是我會將這些知識整理好,用較短的時間和較為通俗生動的方式傳授給他們,我覺得這也是IT教育很重要的一個組成部分,教育是貫穿一生的,活到老,學到老。

與企業交流讓我了解到企業對人才的需求,能夠為我的教學工作提供更多真實案例,同時我也能夠為企業開發人員提供一些指導和培訓,此外,我個人的知識和經驗也在不斷累積,有助于我更好地從事軟件教育工作。

CSDN:現行的軟件人才培養體制有哪些缺陷?你認為該如何改進?

劉偉:關于現行軟件人才培養體制,我個人也有一些自己的意見和建議,下面我談幾點自己的看法吧。

  • 培養目標問題。做科學家好還是工程師好?研究型大學是不是不應該培養工程師?研究型大學如何培養工程師?現在很多985和211高校的口號都是建設國內一流的研究型大學,老師們都全力去做科研,而工程類專業,特別是軟件工程又是以培養工程應用型人才為主,如果老師們都將精力用于做科研了,誰來培養工程師?怎么培養工程師?而且沒有實際的項目開發經驗,只是照本宣科,停留在純理論的教學中,如何能夠培養出合格的工程師?我個人覺得工科大學本科教育(工程類專業)應該還是以面向應用工程型為主,如果希望當科學家,應該是在碩士,特別是博士教育中。隨著工程碩士規模的擴大,很多人碩士畢業之后還是當工程師。如果有志于當科學家的同學,應該從本科就做好準備,打下良好研究基礎,學好數學、英語和一些基礎理論課程,最好能夠把算法、計算理論、編譯原理、形式化方法、數據挖掘、計算機圖形學等知識學好,為做科學研究打下基礎,如果有機會的話,可以提前和老師們一起參與一下科研項目的研究,了解一下科研的流程,說不定還能夠做出點啥科研成果。而對于大部分想做工程師的同學而言,軟件開發類課程就非常重要了,無論是編程、分析設計、架構還是測試,以及數據庫、操作系統、數據結構等基礎課都是成為一名優秀工程師的基礎,如果有機會,做做實際的應用型項目(不是停留在課程設計或者項目實訓等模擬項目上),那幫助就更大了。在大學階段有一個比較明確的職業規劃,對于同學們的成長確實有很有幫助,雖然這個做起來有點難度。
  • 課程體系的建設問題。這也是軟件工程教育的一個核心問題,它對應于一個怎么做的問題,軟件工程專業的課程體系要兼顧多方面,因此一套完善合理的課程體系需要不斷調整和優化,這樣難免會有一些同學會成小白鼠,但是這是人才培養道路上必經的一個過程,還望做過小白鼠、正在做小白鼠和即將成為小白鼠的同學們理解。一套科學合理的軟件工程課程體系,我認為至少要考慮如下兩個方面:用人企業的需求(分析用人企業所需的技能和技術,結合企業的招聘啟事,請企業專家參與評審課程體系,包括課程的培養目標、先后順序、教學大綱和實驗安排等)、人才的長遠發展(我們不能只是培養碼農,需要培養出能夠具有更好發展前景的軟件人才,因此除了編碼類課程,還需要開設需求、分析、設計、架構、測試和項目管理等課程)。對于教育工作者,人才是產品,用人單位是客戶。我們都希望能夠培養出高質量的產品,滿足客戶的需求,做到三方共贏!
  • ?教學與實踐課時分配的問題。軟件工程是一個重實踐的專業,必須要多實踐,重點培養實踐能力,許多高校都在壓縮教學課時,大量增加實踐課時。但是現在有一個很重要的問題是很多學校的教學資源不足,不可能所有的課都在機房上。大家經常會提到一個“做中學”的問題,對于軟件人才的培養,確實需要增加實踐課時,我個人覺得如果網速足夠快并提供合適的在線項目開發和管理平臺,有些練習和項目完全可以在宿舍完成。教學課時沒有必要開設那么多,我始終還是堅信那句話:大學教育更多是培養大家學習能力,而不是學習知識本身。
  • 師資問題。作為軟件工程專業的教師,必須不斷更新自己的知識體系,需要至少在某一個或幾個領域與最新技術接軌,每年應該也要實時充電,讓學生們能夠在學校就學到一些前沿知識。對于有些知識的學習,老師的理解能力和消化能力還是要強于學生,畢竟對行業和專業的了解更為全面和系統。我個人的觀點是,作為從事軟件工程一線教學的教師,應該有目的地提升自己的實際項目開發能力,不斷學習新知識,“一門課上到退休”對我們來說并不適用,也不應該是這樣。作為一名軟件教育從業者,我要求學生要努力學習,學會自學新知識與技能,同時我也需要不斷學習,只有這樣,我自己也才能實現成為一流IT教育工作者的夢想。
  • 高校與企業聯合辦學的問題。與企業聯合辦學是目前很多高校在培養軟件人才時采用的一個重要的手段,這樣一方面可以讓學生學到一些企業實用技術,另一方面可以緩解師資不足的問題。學生也特別希望能夠有一些企業老師來講課,學習到更多實用的技術和經驗。我想我的課之所有學生們喜歡,跟我之前有過幾年項目開發經驗有很大關系。但是在校企聯合辦學過程中,地域因素也不得不考慮,例如在北京,如果要找一流的測試專家給某個高校上軟件測試的一些課程,可以找中國軟件評測中心或國家信息中心軟件評測中心,但是有很多二線、三線城市的高校就沒有這么便利的企業教學資源,應該建立一個校企合作的平臺。我覺得校企合作是一個對三方有利的方式,對于學生和學校的好處不用多說,對于企業而言,可以從中選拔優秀的潛在員工,還可以宣傳自己的企業和產品,同時帶來新的贏利點。很多國內外知名軟件公司就成立了專門的校企合作部門,已經嵌入到師資培訓、學生培養、實習生安排和社團活動等多個環節,并取得了不錯的效果。

當然,還包括不同層次的學校人才培養的差異性問題、軟件工程碩士培養問題、不同方向(開發、測試、互聯網營銷等)的軟件人才培養問題等。每一個問題都可以作為一個專題討論,恕本人才疏學淺,也不妄加評論了,以后有機會再跟大家進一步交流。以上很多觀點都來自我2012年12月份寫的一篇博文《如何培養軟件工程人才——參加“第一屆高等學校軟件工程人才培養高峰論壇”有感》,歡迎大家一起交流和討論。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449700.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多線程數據下載(akshare)

import akshare as ak import pandas as pd from multiprocessing.dummy import Pool as ThreadPool import datetime import timedef get_hs300_stock_codes():獲取滬深300股票代碼列表:return:hs300ak.index_stock_cons_sina("000300")codeshs300[code]codescodes.…

MongoDB 4.6.1 c++ driver 編譯

版權聲明:本文為博主原創文章,未經博主同意不得轉載。https://blog.csdn.net/sheismylife/article/details/25512251 這個版本號已經和之前不一樣了。有專門的github的項目。https://github.com/mongodb/mongo-cxx-driver首先獲取源碼:git cl…

地址解析協議 (ARP) 是什么

地址解析協議 (ARP) 是通過解析網路層地址來找尋數據鏈路層地址的一個在網絡協議包中極其重要的網絡傳輸協議。 ARP是通過網絡地址(例:IPv4)來定位MAC地址 (也稱為乙太地址)。 ARP已經在很多網路層和數據鏈接層之間得以實現,包括IPv4,Chaosn…

04.React事件 方法、 React定義方法的幾種方式 獲取數據 改變數據 執行方法傳值...

2019獨角獸企業重金招聘Python工程師標準>>> 一.基本用法 在以類繼承的方式定義的組件中,為了能方便地調用當前組件的其他成員方法或屬性(如:this.state),通常需要將事件處理函數運行時的 this 指向當前組件…

代碼之美——Doom3源代碼賞析

摘要:Dyad作者、資深C工程師Shawn McGrathz在空閑時翻看了Doom3的源代碼,發出了這樣的驚嘆:“這是我見過的最整潔、最優美的代碼!”“Doom 3的源代碼讓我對那些優秀的程序員刮目相看。”因此有了本文。 背景介紹: Doom…

UDP:用戶數據報協議 是什么

用戶數據報協議(英語:User Datagram Protocol,縮寫為UDP),又稱用戶數據報文協議,是一個簡單的面向數據報的傳輸層協議,正式規范為RFC 768。在TCP/IP模型中,UDP為網絡層以上和應用層以…

隨想錄(程序員和收入)

距離上一次寫博客已經很長時間了,大約過了三個星期。這三個星期發生了很多事情,這中間也有我自己的思考積累,也有工作上的變故。總之,自己想了很多,也得到了很多。每到這個時候,畢業生朋友們都在尋找工作&a…

iOS進階之正則表達式

最近一直在弄正則表達式,于是在這里整理一下,便于日后查閱。 1、常用符號 ^:字符串的開始$:字符串的結束*:表示零個或若干個?:表示零個或一個:表示一個或若干個| :表示 或 操作. &a…

akshare分析漲停板股票數據

導入包,獲取日期數據 import pandas as pd import numpy as np import akshare as ak #畫圖 import matplotlib.pyplot as plt #正確顯示中文和負號 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #處理時間 from dateutil.parser…

DNS(域名系統) 是什么

域名系統(英文:Domain Name System,縮寫:DNS)是互聯網的一項服務。 它作為將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網。 DNS使用TCP和UDP端口53。當前,對于每一級域…

《The Art of Readable Code》學習筆記(一)

放寒假回家有些頹廢,就是不想看書。但是已經大三了,春節過后就要找實習了。哎,快樂的大學生活終于要過去了。 先從簡單的書看起吧!在圖書館借了本《The Art of Readable Code》,就是教你咋寫好優雅的代碼的&#xff0c…

文件基本處理

1 打開文件,將文件句柄賦值給一個變量 2 拿句柄對文件進行操作 3 關閉文件 將一個文件第一行寫道另外一個文件 f open("test","r",encoding"utf-8") # open找的是系統的編碼 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream詳細用法

ofstream是從內存到硬盤,ifstream是從硬盤到內存,其實所謂的流緩沖就是內存空間; 在C中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的文件I/O,stream這個類有兩個重要的運算符&…

如何將JAR包發布到Maven中央倉庫?

將jar包發布到Maven中央倉庫(Maven Central Repository)&#xff0c;這樣所有的Java開發者都可以使用Maven直接導入依賴&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL與HTTPS

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 關于加密 在解釋SSH、SSL與HTTPS協議之前我先介紹一下非對稱加密協議。在1976年以前&#xff0c;所有的加密都采用對稱加密&#xff0c…

北向資金運作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#獲取交易日歷 import datetime def get_cal_date(start,end):dates ak.to…

網絡性能測試工具iperf詳細使用圖文教程【轉載】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 轉載于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代碼審查:程序員內煉之道

摘要&#xff1a;“關注并弄清楚橋梁修建細節&#xff0c;否則你建起來的橋梁有可能坍塌。”代碼審查更重要的是一種技術分享或者代碼共享。程序員如何提升自我修煉之道&#xff0c;歡迎來支招。 代碼審查更重要的是一種技術分享或者代碼共享。在審查過程中&#xff0c;通過被…

扎實的基礎是成功的法寶

轉載鏈接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基礎是好成績的根本,無論做任何事情,基本功的訓練是成功的前提:“還沒有學會走,就想學跑,那不行,肯定會摔跟頭。”這是成功人士的經驗之談。要建成高樓大廈,地基必須打好。…

發送qq郵件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 寫成了一個通用的函數接口&#xff0c;想直接用的話&#xff0c;把參數…