首先,你能想到平時(shí)找項(xiàng)目來進(jìn)行練手,說明你是一個(gè)在技術(shù)上面是一個(gè)非常上進(jìn)的同學(xué)。想要找到項(xiàng)目進(jìn)行練手,第一個(gè)想到的地方應(yīng)該是 Github。Github 上擁有全球最多的開源項(xiàng)目,你可以從其中找到自己感興趣的開源項(xiàng)目,然后參與到開源項(xiàng)目的開發(fā)中去。能夠參與開源社區(qū),這也是很多互聯(lián)網(wǎng)公司非??粗氐囊稽c(diǎn)。
其次現(xiàn)在也有很多舉辦計(jì)算機(jī)類比賽的平臺,比如阿里云的天池大數(shù)據(jù)、Kaggle、Datacasle等。你如果有時(shí)間,可以參與上面舉辦的比賽,進(jìn)行項(xiàng)目練手。
![]()
想要在 Github 上面找到自己想要參與的開源軟件,首先你要確定好自己對什么技術(shù)方向感興趣。比如對于我來說,我對實(shí)時(shí)計(jì)算非常感興趣,所以我找了很多開源的實(shí)時(shí)計(jì)算引擎,最后選擇了 Flink 開源項(xiàng)目,現(xiàn)在也在努力的參與到 Flink 的開發(fā)中去。想要使用開源項(xiàng)目來進(jìn)行練手,你一定要確定好自己的技術(shù)方向,找到感興趣的開源項(xiàng)目,接著就是嘗試參與到其中。
確定好自己感興趣的開源項(xiàng)目后,第一步就是去訂閱官方社區(qū)的郵件組,在社區(qū)的郵件組里面,你可以看到很多同學(xué)對于開源項(xiàng)目的問題以及解答,你未來有任何問題時(shí),也可以在開源項(xiàng)目郵件組中進(jìn)行提問。其次,你可以去開源項(xiàng)目的官方網(wǎng)站,將里面的官方文檔閱讀和理解一遍,這對于你未來 API 的使用和概念的理解,會有很大的幫助。
最后,你可以去開源項(xiàng)目的 JIRA(問題主頁),查看自己能解決哪些 JIRA,隨著你解決的問題越來越多,我相信你的能力也會提升的越來越快。
![]()
其他方面,你也可以去阿里云的天池大數(shù)據(jù)等平臺上面查找自己想要參與的比賽,上面的比賽主要以算法類比賽為主,但也有性能優(yōu)化相關(guān),編程類的比賽項(xiàng)目。我以前在上面參加過阿里中間件的比賽,但是還是和同學(xué)一起來進(jìn)行參加,一路跟著做下來,自己的能力也提升了很多,而且在校招的時(shí)候,面試官也問了很多這方面的問題。如果你能夠跟著比賽做下來,我相信你肯定能夠得到一定的收獲。
![]()
我是Lake,專注大數(shù)據(jù)技術(shù)原理、人工智能、數(shù)據(jù)庫技術(shù)、程序員經(jīng)驗(yàn)分享,如果我的問答對你有幫助的話,希望你能點(diǎn)贊關(guān)注我,感謝。
我會持續(xù)大數(shù)據(jù)、數(shù)據(jù)庫方面的內(nèi)容,如果你有任何問題,也歡迎關(guān)注私信我,我會認(rèn)真解答每一個(gè)問題。期待您的關(guān)注
給你推薦一些比較實(shí)用的小項(xiàng)目吧,另外千鋒也有很多實(shí)戰(zhàn)項(xiàng)目視頻教學(xué)。
文本操作
逆轉(zhuǎn)字符串——輸入一個(gè)字符串,將其逆轉(zhuǎn)并輸出。
拉丁豬文字游戲——這是一個(gè)英語語言游戲。基本規(guī)則是將一個(gè)英語單詞的第一個(gè)輔音音素的字母移動到詞尾并且加上后綴-ay(譬如“banana”會變成“anana-bay”)??梢栽诰S基百科上了解更多內(nèi)容。
統(tǒng)計(jì)元音字母——輸入一個(gè)字符串,統(tǒng)計(jì)處其中元音字母的數(shù)量。更復(fù)雜點(diǎn)的話統(tǒng)計(jì)出每個(gè)元音字母的數(shù)量。
判斷是否為回文——判斷用戶輸入的字符串是否為回文?;匚氖侵刚雌磳懶问蕉际且粯拥脑~,譬如“racecar”。
統(tǒng)計(jì)字符串中的單詞數(shù)目——統(tǒng)計(jì)字符串中單詞的數(shù)目,更復(fù)雜的話從一個(gè)文本中讀出字符串并生成單詞數(shù)目統(tǒng)計(jì)結(jié)果。
文本編輯器——記事本類型的應(yīng)用,可以打開、編輯、保存文本文檔。可以增加單詞高亮和其它的一些特性。
RSS源創(chuàng)建器——可以從其它來源讀取文本并將其以RSS或者Atom的格式發(fā)布出去。
實(shí)時(shí)股價(jià)——可以查詢股票當(dāng)前價(jià)格。用戶可以設(shè)定數(shù)據(jù)刷新頻率,程序會用綠色和紅色的箭頭表示股價(jià)走勢。
訪客留言簿/日志——允許人們添加評論或者日記,可以設(shè)置開啟/關(guān)閉評論,并且可以記錄下每一條目的時(shí)間。也可以做成喊話器。
新聞和比分播報(bào)器——一個(gè)桌面應(yīng)用,可以從網(wǎng)上收集新聞和比賽分?jǐn)?shù),將結(jié)果在屏幕上滾動播出。
占星羅盤——用占星術(shù)來預(yù)測每天的運(yùn)程。
密碼短信——可以將數(shù)據(jù)加密解密,并能將其發(fā)送給朋友。
幫你挑禮物——輸入一堆你可能會送的禮物,當(dāng)有人過生日時(shí),該程序會隨機(jī)選擇一樣禮物。也可以加上一個(gè)額外功能,可以告知哪里可以弄到這個(gè)禮物。
HTML生成器——將 TEXT 文檔轉(zhuǎn)換成HTML文件,對制作網(wǎng)頁HTML文檔很有用。
CD-Key生成器——利用某種算法生成一個(gè)唯一的key。軟件開發(fā)者可以用它來作為軟件的激活器。
正則表達(dá)式查詢工具——用戶可以輸入一段文本,在另外的控件里輸入一個(gè)正則表達(dá)式。運(yùn)行以后會返回匹配的內(nèi)容或者正則表達(dá)式中的錯(cuò)誤。
網(wǎng)絡(luò)
FTP工具——與遠(yuǎn)程網(wǎng)絡(luò)服務(wù)器交互文件。
原子鐘校時(shí)——從網(wǎng)上同步原子鐘時(shí)間。全世界有很多原子鐘,可以把它們都列出來。
聊天應(yīng)用(IRC或者M(jìn)SN風(fēng)格的)——像IRC那樣的聊天室軟件或者M(jìn)SN那樣的實(shí)時(shí)聊天軟件。更復(fù)雜一點(diǎn)的話,可以為聊天制定一套你自己的傳輸協(xié)議。
獲取當(dāng)前天氣——獲取某個(gè)地區(qū)當(dāng)前的天氣情況。
P2P文件共享應(yīng)用——像LimeWire、FrostWire、Bearshare或者torrent風(fēng)格的應(yīng)用。
端口掃描器——輸入某個(gè)ip地址和端口區(qū)間,程序會逐個(gè)嘗試區(qū)間內(nèi)的端口,如果能成功連接的話就將該端口標(biāo)記為open。
郵件檢查工具(POP3/IMAP)——用戶輸入一些賬號信息,包括服務(wù)器、ip、協(xié)議類型(POP3或者IMAP),應(yīng)用每隔一段時(shí)間就會檢查下該賬號下的郵箱。
數(shù)據(jù)包嗅探器——偵測電腦上進(jìn)出的數(shù)據(jù)包,獲取諸如目的地和大小之類的信息。
IP注冊地查詢——輸入ip地址,查詢該ip是在哪注冊的。
Whois查詢工具——輸入一個(gè)ip或者主機(jī)地址,通過whois查詢并將結(jié)果返回。
郵編查詢——輸入郵編,返回使用該郵編的地區(qū)名稱。
遠(yuǎn)程登入——遠(yuǎn)程登入桌面類型的應(yīng)用,可以查看和控制遠(yuǎn)程電腦(假如你已經(jīng)獲得權(quán)限)??赡苄枰阕约旱木W(wǎng)絡(luò)和兩臺電腦來進(jìn)行測試。
網(wǎng)站定時(shí)檢查器——每隔一段時(shí)間或者在預(yù)定的時(shí)間嘗試連接某個(gè)網(wǎng)站或者服務(wù)器,來檢查它是否可以連上,如果連不上了會通過郵件或者桌面通知來告知你。
小型網(wǎng)頁服務(wù)器——簡易版的網(wǎng)頁服務(wù)器,可以存放包含Javascript和其它形式代碼的HTML文件。復(fù)雜一點(diǎn)的話可以嘗試流媒體視頻、創(chuàng)建一種服務(wù)器端語言或者其它類型的流媒體。
網(wǎng)絡(luò)蜘蛛——一個(gè)可以自動執(zhí)行網(wǎng)頁上各種任務(wù)的程序,任務(wù)包括網(wǎng)站檢查、頁面抓取、數(shù)據(jù)摘要以及網(wǎng)絡(luò)郵務(wù)。
類
產(chǎn)品庫存管理——?jiǎng)?chuàng)建一個(gè)管理產(chǎn)品庫存的應(yīng)用。建立一個(gè)產(chǎn)品類,包含價(jià)格、id、庫存數(shù)量。然后建立一個(gè)庫存類,記錄各種產(chǎn)品并能計(jì)算庫存的總價(jià)值。
電影商店——管理錄像帶租借,記錄借出時(shí)間、到期時(shí)間、逾期費(fèi)用。復(fù)雜一點(diǎn)可以生成逾期用戶的賬號報(bào)告。
航空/酒店預(yù)訂系統(tǒng)——?jiǎng)?chuàng)建一套預(yù)訂航班或酒店的預(yù)訂系統(tǒng)。不同的航班座位和酒店房間收費(fèi)不一樣。譬如頭等艙要比經(jīng)濟(jì)艙貴。帶閣樓的套間要更貴些。記錄下何時(shí)有空房可供預(yù)訂。
學(xué)生成績管理器——記錄一個(gè)班級的學(xué)生(創(chuàng)建一個(gè)Student類,記錄他們的名字、平均分和考試分?jǐn)?shù))和他們的成績等級。根據(jù)學(xué)生的測驗(yàn)和作業(yè)的分?jǐn)?shù)計(jì)算出平均分和成績等級。復(fù)雜一點(diǎn)可以將數(shù)據(jù)畫在貝爾曲線上。
銀行賬戶管家——?jiǎng)?chuàng)建一個(gè)名為“Account”的抽象類,有三個(gè)為“CheckingAccount”、“SavingsAccount”和“BusinessAccount”的子類。通過類似ATM的程序來管理這些賬戶的借貸。
館藏目錄——?jiǎng)?chuàng)建一個(gè)圖書類,記錄書名、頁數(shù)、國際標(biāo)準(zhǔn)書號、是否借出。用它來管理各種書籍,允許用戶進(jìn)行借出和歸還操作。復(fù)雜一點(diǎn)的話,可以生成逾期圖書和逾期費(fèi)用的報(bào)告。也可以讓用戶進(jìn)行預(yù)約操作。
線程處理
下載進(jìn)度條——?jiǎng)?chuàng)建一個(gè)表示下載進(jìn)度的進(jìn)度條。進(jìn)度條由獨(dú)立的線程操作,通過委托來和主線程進(jìn)行通訊。
下載管理器——允許程序同時(shí)下載數(shù)個(gè)文件,每個(gè)都用單獨(dú)的線程進(jìn)行背景下載。主線程會關(guān)注下載進(jìn)度并且在下載完成時(shí)通知用戶。
聊天軟件(遠(yuǎn)程聊天)——做一個(gè)聊天軟件,允許你通過ip直接連接到另一臺電腦,也允許你的“服務(wù)器”程序處理多個(gè)請求連接。
批量縮略圖生成器——在進(jìn)行圖片轉(zhuǎn)換的處理時(shí)會需要很多時(shí)間,尤其是圖片很大時(shí)。做一個(gè)圖片處理程序,能讓你在做其它事的時(shí)候在后臺線程里將數(shù)百張圖片轉(zhuǎn)換成某個(gè)大小的圖片。復(fù)雜一點(diǎn)的話可以用一個(gè)線程來縮放,用另一個(gè)線程來為縮略圖重命名。
Web應(yīng)用
所見即所得編輯器——?jiǎng)?chuàng)建一個(gè)在線編輯器,允許用戶移動元素、創(chuàng)建表格、書寫文本、設(shè)置顏色,而用戶不必懂HTML。就像Dreamweaver或者FrontPage。如果需要例子的話,可以參看DIC。
分頁瀏覽器——?jiǎng)?chuàng)建一個(gè)可以分頁的小型網(wǎng)頁瀏覽器,可以同時(shí)瀏覽幾個(gè)網(wǎng)頁。簡化一點(diǎn)的話不要考慮Javascript或者其它客戶端代碼。
文件下載器——該程序可以從網(wǎng)頁上下載各種資源,包括視頻和其它文件。用于有很多下載鏈接的網(wǎng)頁。
遠(yuǎn)程登錄——?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程登錄的應(yīng)用,可以通過網(wǎng)絡(luò)登錄服務(wù)器并能執(zhí)行一些基本命令。
在線白板——做一個(gè)在線白板程序,你和朋友們可以一起在白板上進(jìn)行一些操作,畫圖、寫字等等。
帶寬監(jiān)視器——這個(gè)小工具可以記錄你已經(jīng)在網(wǎng)上上傳和下載多少數(shù)據(jù)流量了??梢栽囍龇輬?bào)告或者圖表來展示各時(shí)段的使用情況。
書簽搜集管理器——該程序可以讓用戶上傳書簽并將它們排序,去掉重復(fù)的,并能生成書簽文件以供Firefox/IE/Safari等使用。復(fù)雜一點(diǎn)的話可以試著將書簽整理進(jìn)不同的文件夾。
密碼保險(xiǎn)箱——用來記錄各種密碼,并且將它們加密,這樣別人就看不到了。
iGoogle媒體播放器小部件——做一個(gè)iGoogle小部件,可以用來播放本地音樂列表,也可以每天分享一首歌。也許還可以讓別人看到你最近聽了些什么歌。
基于文本的游戲——做一個(gè)像Utopia那樣的文本RPG,游戲中,你可以創(chuàng)建一個(gè)文明、收集資源、共鑄聯(lián)盟、施放法術(shù)、回合制系統(tǒng)??纯词欠衲軌蚪y(tǒng)一王國。
定時(shí)自動登錄——做一個(gè)程序可以在預(yù)定的時(shí)間登錄進(jìn)某個(gè)指定的網(wǎng)頁并且執(zhí)行特定的動作,然后在登出??梢杂脕頇z查郵箱、發(fā)布常規(guī)內(nèi)容、為其它程序獲取信息。
電子卡片生成器——可以讓用戶制作自己的電子卡片并發(fā)送給其他人??梢允褂胒lash也可以不用??梢允褂脠D片庫,也可以加上深刻的格言警句。
內(nèi)容管理系統(tǒng)——像Joomala、Drupal、PHP Nuke這樣的內(nèi)容管理系統(tǒng)。從簡單的做起,慢慢增加其它功能。
模板制作器——該網(wǎng)站應(yīng)用允許用戶輸入各種顏色代碼、元素、尺寸,來為PHPBB、Invision Board、MySpace之類的應(yīng)用創(chuàng)建模板文件。
驗(yàn)證碼生成器——應(yīng)該在登錄時(shí)見過有數(shù)字有字母的驗(yàn)證碼圖片吧?這可以防止自動登錄和垃圾廣告。試著自己做一個(gè),如果使用PHP的話,看下GD的圖片函數(shù)。
文件
試卷生成器——該程序可以從文件中隨機(jī)挑選出不同的題目生成一份試卷。每份試卷可以不一樣,通過讀取答案來給打分。
快速啟動——該工具可以添加各個(gè)程序的小圖標(biāo),點(diǎn)擊小圖標(biāo)就可以運(yùn)行程序。和Windows的快速啟動類似。
文件管理器——做一個(gè)文件管理器,要加些新特性,更佳的搜索功能、新圖標(biāo)、新外觀。
文件記錄排序工具——從文件中讀取記錄,將其排序并寫回文件中。允許用戶選擇排序風(fēng)格以及排序關(guān)鍵字。
生成財(cái)務(wù)交易文件并且算出平均值——將財(cái)務(wù)交易讀進(jìn)文件,按照賬戶分類、算出各項(xiàng)目的總量或平均值、理清各賬戶的借貸數(shù)據(jù)。
Zip文件生成器——用戶輸入不同文件夾的文件,也許還包括其他電腦中的文件,然后程序?qū)⑦@些文件打包成zip文件。復(fù)雜一點(diǎn)的話,打包時(shí)對這些文件進(jìn)行壓縮。
PDF生成器——從txt、html或其它文件中讀取數(shù)據(jù)生成PDF文件??梢宰龀梢粋€(gè)網(wǎng)頁服務(wù),用戶上傳文件,返回一個(gè)pdf版本。
批量文件命名器——程序批量處理一些文件,將根據(jù)用戶提供的過濾器為它們重命名。譬如用戶輸入的過濾器為myimage###.jpg,那么會生成至少包含3位數(shù)的文件名,譬如myimage001.jpg、myimage145.jpg,甚至是myimage1987.jpg,因?yàn)?987也滿足了至少包含3位數(shù)的條件。
MP3標(biāo)簽生成器——修改MP3文件的id3v1標(biāo)簽。還可以試著在MP3文件的頭部加入id3v2的標(biāo)簽,譬如album art標(biāo)簽。
日志文件生成器——該程序可以記錄指定事件的日志。譬如程序做了什么、系統(tǒng)在干什么、文件什么時(shí)候被修改了。
Excel分頁輸出器——做一個(gè)在線程序,可以讀取文件內(nèi)容生成一個(gè)excel分頁??梢酝ㄟ^CVS或者其它文件格式來做。復(fù)雜一點(diǎn)的話看看是否能創(chuàng)建公式字段。
RPG角色屬性生成器——做一個(gè)程序來給RPG角色隨機(jī)分配屬性點(diǎn)數(shù),可以由用戶制定一些分配規(guī)則。可以生成職業(yè)、性別、力量/魔法/敏捷點(diǎn)數(shù)、額外能力或者貿(mào)易技能。把結(jié)果保存成文件,這樣跑團(tuán)的時(shí)候地下城主可以把它打印出來。
文件復(fù)制工具——該工具可以批量處理文件復(fù)制和備份操作。
數(shù)據(jù)庫
SQL查詢分析器——該工具可以讓用戶輸入一條查詢命令,讓其運(yùn)行于本地?cái)?shù)據(jù)庫中。盡量讓它運(yùn)行得更高效。
遠(yuǎn)程SQL工具——該工具能讓你通過網(wǎng)絡(luò)在遠(yuǎn)程服務(wù)器上執(zhí)行查詢操作。它能接收遠(yuǎn)程主機(jī)地址、驗(yàn)證用戶名和密碼、執(zhí)行查詢并返回結(jié)果。
卡片整理器——?jiǎng)?chuàng)建一個(gè)在線應(yīng)用,用來記錄搜集到的卡片??梢宰層脩糨斎胝卓ㄆ?,查看哪些已經(jīng)有了,哪些還需要搜集。要增加復(fù)雜度的話,還可以讓用戶知道還差多少可以完成,或者已經(jīng)收集卡片的價(jià)值。
報(bào)告生成器——該工具可以根據(jù)數(shù)據(jù)庫中的表格生成一份報(bào)告。譬如根據(jù)訂單表格生成銷售報(bào)告。
數(shù)據(jù)庫備份腳本制作器——該程序可以讀取數(shù)據(jù)庫的對象、關(guān)系、記錄和步驟,生成一個(gè)sql文件,該文件可以導(dǎo)入另一個(gè)數(shù)據(jù)庫或者作為備份文件。
備忘錄——該程序可以讓用戶設(shè)置一個(gè)日期和某個(gè)事件的時(shí)間、事件備注并將它們放到日歷上。用戶可以查看日歷、搜索特定的事件。復(fù)雜一點(diǎn)的話,可以讓用戶設(shè)置重復(fù)發(fā)生的事件,譬如每天、每周、每月、每年等等。
預(yù)算記錄器——該程序可以記錄家庭預(yù)算。用戶可以添加支出、收入,計(jì)算一段時(shí)間內(nèi)的收入和支出。復(fù)雜一點(diǎn)的話,讓用戶指定一個(gè)時(shí)間段,顯示該時(shí)間段內(nèi)的家庭收支情況。
電話簿——記錄各種聯(lián)系人和他們的號碼、郵箱、備注。復(fù)雜一點(diǎn)的話可以讓用戶連上網(wǎng)將電話簿發(fā)布到設(shè)置好的網(wǎng)站上。
電視節(jié)目記錄器——你是否有不想錯(cuò)過的電視節(jié)目?但沒有錄像機(jī)或者想之后能找到該電視節(jié)目然后錄下來,那么可以做個(gè)程序?qū)ふ腋鞣N在線電視導(dǎo)航網(wǎng)站,記錄下電視節(jié)目名稱、播放時(shí)間、播放頻道,存在數(shù)據(jù)庫中。數(shù)據(jù)庫或者網(wǎng)站到時(shí)就會發(fā)郵件提醒你,節(jié)目就快在某個(gè)頻道開始了。
旅行計(jì)劃系統(tǒng)——該系統(tǒng)可以讓用戶管理旅行路線,記錄下航班和酒店安排、感興趣的地方、預(yù)算和時(shí)間表。
實(shí)體關(guān)系圖生成器——該程序可以讓用戶整合實(shí)體關(guān)系圖,并將其保存起來,也可以用它來生成一些基礎(chǔ)SQL語句。
數(shù)據(jù)庫翻譯器(MySQL<->SQL Server)——該工具可以從數(shù)據(jù)庫A讀取數(shù)據(jù),生成數(shù)據(jù)庫B使用的SQL語句,將數(shù)據(jù)存入數(shù)據(jù)庫B。比較常用的是SQL Server和Oracle使用的MySQL服務(wù)器。
BBS論壇——為你和小伙伴們做一個(gè)論壇,可以發(fā)帖、管理、分享想法和構(gòu)思。
圖像和多媒體
幻燈片——做一個(gè)以幻燈片形式顯示各種圖片的程序。為了增加難度可以做些額外的效果,譬如漸進(jìn)檢出、星型擦除、窗口漸隱。
思維導(dǎo)圖——允許用戶記錄下各種構(gòu)思并且快速地進(jìn)行頭腦風(fēng)暴將這些構(gòu)思整合到一張思維導(dǎo)圖中。越快越好,因此要讓用戶能迅速地寫下構(gòu)思,然后將其拖到可視的導(dǎo)圖中去,將構(gòu)思之間的關(guān)系展現(xiàn)出來。
導(dǎo)入圖片并存成灰度圖——該工具將圖片上的彩色除盡并保存??梢栽黾訉Ρ榷日{(diào)整、色化等額外功能以增加復(fù)雜度。
在線流媒體視頻——試著自己做一個(gè)在線流媒體視頻播放器。
MP3播放器(以及其他格式的音樂播放器)——該小程序用來播放你最愛的音樂文件。復(fù)雜一點(diǎn)的話看看能否加個(gè)播放列表功能和均衡器。
批量圖片處理——該程序可以將一個(gè)文件夾內(nèi)的圖片進(jìn)行統(tǒng)一的處理,譬如降低圖片色調(diào)、轉(zhuǎn)換格式或者修改文件屬性。還可以嘗試給圖片增加標(biāo)簽。
CD燒錄器——可以輕松燒錄CD的工具。
YouTube下載器——可以從Youtube.com上下載視頻到硬盤中,要支持包括FLV和AVI在內(nèi)的文件格式。
墻紙管理工具——做一個(gè)管理墻紙的程序,可以定時(shí)更換刷新墻紙,也可以針對分辨率進(jìn)行縮放。
截屏程序——做一個(gè)可以截屏的工具,復(fù)雜一點(diǎn)可以增加一個(gè)轉(zhuǎn)發(fā)郵件的功能。
圖片瀏覽器——該程序可以查看電腦上各種格式的圖片,譬如PNG、GIF、JPG、BMP、TIFF等等。
交通信號燈——試著做一個(gè)交通信號燈并且把它放到可以互動的場景中。不要讓汽車闖紅燈或者撞到其它車。
MP3-WAV轉(zhuǎn)換器——MP3格式本質(zhì)上就是壓縮版的WAV。試著將MP3轉(zhuǎn)換成WAV格式以供可以處理WAV格式的程序使用。請記住1MB的MP3大約等于10MB的WAV。
簽名生成器——是否在網(wǎng)上見過有人的留言后面有條生成的簽名?試著做個(gè)程序讓用戶可以指定背景、文字、顏色和對齊方式來定制一個(gè)簽名檔。
屏?!娔X空閑時(shí)會運(yùn)行的屏保程序。簡單版的可以使用一些標(biāo)準(zhǔn)圖片,復(fù)雜版的可以做出能在屏幕上轉(zhuǎn)來轉(zhuǎn)去的3D物體。
水印——你是否想保護(hù)你圖片的版權(quán)?在圖片上加上標(biāo)志或者文字,這樣別人就不能輕易地從你網(wǎng)站上盜圖了。做一個(gè)程序來給你的圖片加上水印吧。
海龜圖——?jiǎng)?chuàng)建一個(gè)20*20的格子,用命令讓一只海龜在格子上畫線??梢郧斑M(jìn)、左轉(zhuǎn)、右轉(zhuǎn),拿起或放下筆等等。復(fù)雜一點(diǎn)的話,允許程序從文件中讀取命令列表??梢栽诰W(wǎng)上了解到更多關(guān)于“海龜圖”的信息。
游戲
戰(zhàn)船——?jiǎng)?chuàng)建兩塊游戲面板,玩家各占一邊,在上面放置一些戰(zhàn)船,玩家看不到對方的面板。每艘船都占幾個(gè)格子,玩家輪流攻擊某個(gè)格子,如果格子上有船,那就命中目標(biāo),否則就是未命中。當(dāng)一艘船所占的所有格子都被攻擊命中了,那么船就被擊沉。誰先將對方戰(zhàn)船全部擊沉就獲勝。
象棋跳棋——象棋或者跳棋游戲??梢栽囍龀煽梢月?lián)網(wǎng)玩,用圖形用戶界面來實(shí)現(xiàn)悔棋、保存走棋過程并且可以回放。
劊子手——從文件中隨機(jī)選擇一個(gè)單詞,讓玩家猜單詞中的字母。旁邊是一幅隱藏的行絞刑的畫,猜錯(cuò)一個(gè)單詞,畫就顯示出一部分。畫全部顯示出來時(shí)還沒能猜全的話玩家就輸了。
填字游戲——?jiǎng)?chuàng)建一個(gè)填字游戲,并為每個(gè)詞提供一個(gè)提示信息,讓玩家填上所有正確的單詞。
青蛙跳——讓青蛙跳過河或者馬路,過河的話要跳在順流而下速度各異的木頭或者睡蓮葉子上,過馬路的話要避開速度各異的車子。
剛?cè)腴T可以在GitHub或者各個(gè)技術(shù)網(wǎng)站找一些基礎(chǔ)的DEMO,不需要很復(fù)雜,有幾個(gè)知識點(diǎn)就可以了,熟練了在學(xué)其他知識點(diǎn)。最后再找一些完整的DEMO練,理解各個(gè)知識點(diǎn)之間的聯(lián)系,熟練掌握常用的設(shè)計(jì)模式。
初級程序員可以拿公司的項(xiàng)目練手,從頭到尾熟悉代碼,然后跟著版本更新,鞏固掌握的技能,有新技術(shù)點(diǎn)多在網(wǎng)上查查資料,多理解,活學(xué)活用。
高級程序員可以對現(xiàn)有項(xiàng)目進(jìn)行重構(gòu),搭建框架,深入底層原理。
大神程序員一般都很神秘,是我膜拜的對象[呲牙]
想通過項(xiàng)目練手,這說明你有上進(jìn)心,非常值得鼓勵(lì)?;ヂ?lián)網(wǎng)上有不少資源,這些項(xiàng)目是比較成功的實(shí)踐案例,還有相應(yīng)的教程或者豐富的文檔,便于使用者理解,這類項(xiàng)目非常適合程序員練手實(shí)踐。這些寶藏級的資源在哪里最多呢,毫無疑問,在GitHub上最多。
有同學(xué)會問,GitHub上面這么多項(xiàng)目,我應(yīng)該如何找到合適自己的呢?
從自己的興趣出發(fā)
每個(gè)人喜歡做的項(xiàng)目都不一樣。有的人喜歡爬蟲,有的喜歡自己做些小游戲。從自己的興趣出發(fā)入手,這樣有利于保持學(xué)習(xí)的動力和熱情,肯花時(shí)間學(xué)習(xí),自然進(jìn)步就快。
從容易的項(xiàng)目入手
一開始不要選擇太難的項(xiàng)目,要從簡單容易的項(xiàng)目入手,再慢慢過渡到難得項(xiàng)目。就像打游戲一樣,先殺小怪積累經(jīng)驗(yàn),最后再跟boss單挑。順序不要搞反了。
想要找項(xiàng)目練熟的話,肯定是找已經(jīng)有人做出來的,有源程序的,如果你在項(xiàng)目中遇到問題不懂又沒有人指導(dǎo)那這時(shí)候源程序就是你最好的指導(dǎo)老師,找項(xiàng)目最好是找自己喜歡的,這樣你做起來就不會覺得累,即使做一天都不會感覺到累,特別是每一次中的小小的成功可以讓自己更興奮和開心。我以前就是這樣過來的。
任何項(xiàng)目都沒有實(shí)際項(xiàng)目練手快,各種進(jìn)度,各種bug,各種要求,想想就頭痛,剛解決了一個(gè)進(jìn)度,下一個(gè)又來了,下一個(gè)寫完了上一個(gè)又出bug了,沒玩沒了,這是練手最快學(xué)習(xí)最快,網(wǎng)上找的項(xiàng)目只能全是熟悉,要解決問題卻比不上實(shí)際項(xiàng)目來的快
不用刻意找項(xiàng)目練手,可以從興趣入手自己做一個(gè)項(xiàng)目,然后再不斷的用新技術(shù)重構(gòu)這個(gè)項(xiàng)目。![]()
從興趣入手
為什么說要從興趣入手呢?因?yàn)檫@個(gè)是一個(gè)需要長期進(jìn)行下去的項(xiàng)目,如果不是自己感興趣的東西,很難有動力堅(jiān)持下去。
有哪些方向可以參考呢?比如你喜歡動漫,那么可以做一個(gè)動漫圖片素材收集的網(wǎng)站;你喜歡足球,那么可以做一個(gè)歷史數(shù)據(jù)統(tǒng)計(jì)的網(wǎng)站,其實(shí)只要是你感興趣的都可以動手去做。
用新技術(shù)重構(gòu)
一個(gè)項(xiàng)目做成以后并不是一層不變的,因?yàn)榧夹g(shù)永遠(yuǎn)在更迭。當(dāng)我們學(xué)習(xí)了一個(gè)新技術(shù)時(shí),那么我們就可以用新技術(shù)把這個(gè)項(xiàng)目重構(gòu),順便練練手。
比如說原來項(xiàng)目里有一個(gè)用Java寫的用來抓取數(shù)據(jù)的爬蟲,現(xiàn)在你正好在學(xué)習(xí)Python語言,那么你就可以嘗試用Python語言將這個(gè)爬蟲重構(gòu)。
總結(jié)
我一直認(rèn)為一個(gè)好的程序員必定具備良好的產(chǎn)品思維,可以根據(jù)自身的興趣點(diǎn)做一個(gè)項(xiàng)目并長期維護(hù)下去,并不斷的用新技術(shù)重構(gòu)這個(gè)項(xiàng)目,在練手的同時(shí)還能兼顧興趣,可謂一舉兩得。
程序員的世界雖然是很精彩的,但是寫代碼本身是很枯燥的。
跟工作不一樣,練手的項(xiàng)目一般不會給你任何回報(bào),除了能夠提高你的水平之外不能帶給你其他東西。為了防止我們因枯燥的代碼過程放棄練手,要盡可能地去找熱門的東西,能夠與人交流才能使這個(gè)練手的過程豐富起來,來自同行或者愛好者的交流反饋能使我們在枯燥的代碼過程中更有目標(biāo),更能堅(jiān)持下去。一個(gè)人枯燥的壘代碼學(xué)到的東西比與同行在論壇上或者開源項(xiàng)目上的交流中要少得多。
所以說找項(xiàng)目練手最好是找自己感興趣的,并且最好是有很多用戶或者同行交流的,這樣才能學(xué)的更多并且不容易放棄。
可以去bilibili上找找相關(guān)的項(xiàng)目練習(xí),主要還是得跟著視頻老師講解多加練習(xí)才好,熟能生巧嘛。推薦你可以看看尚硅谷bilibili上的視頻,更新及時(shí)內(nèi)容也是貼合企業(yè)開發(fā)的需求呢。
「我的做法是,自己創(chuàng)造項(xiàng)目,然后哪里做不出來就去問,去搜。
童年接觸過很多fc游戲,我就把他們重新做一遍。
」
- - - - - - - - - - - - - - -
