這篇文章是我在知乎上的高贊,我稍微改了下細節,分享給大家。
![]()
你見過,大學本科畢業答辯的時候,把老師弄的不知道問什么問題的體驗么?
大學期間,我是軟件工程專業 的
畢業設計的時候,抽到了”數據壓縮算法 “的課題,那一年是2005年。
當時只知道這個課題是系里的十大難題之一,沒想過到底會難成什么程度。
晚上小組幾個人圍坐在一起,打電話問課題老師,應該做什么方向的軟件
老師告訴我,做個簡單的吧,模仿WINRAR做一個軟件好了,具體是壓縮文檔還是照片,你們自己決定
納尼?WINRAR,世界上最流行的壓縮軟件 ?要我做一個這個簡化版?這是大學本科的畢業設計?
聽到老師這么說,我們整個小組3個人都傻眼了,這怎么做?本科的課程里,你讓我做個進銷存管理軟件 ,做個傅里葉級數的算法,甚至做個貪吃蛇游戲 ,我都能做出來,模仿WINRAR做一個軟件,真沒想過啊,什么算法都不知道。
同組的2個女生都要哭了,拿起電話哽咽著就要給家里打電話。
我一看,趕緊說”別別別,應該能搞定,你們還不相信我么?“
聽我這么說,兩個女人也暫時停止了抽泣,瞪著霧蒙蒙的眼睛看著我”哥,真的就靠你了,我們一點忙都幫不上“
”廢話,你們要是能自己搞定,會特意找我搭伙么?要不然看在老鄉的份上,我真不愿意帶2個什么都不懂的女生“,我心里誹惻。
”行了,離畢業答辯還有3個多月,我這幾天先查查資料,然后我們碰頭,過幾天還得向老師報備畢業答辯的報告“。
當晚我就去網吧通宵查資料,不查不知道,查了后欲哭無淚。
當時查到的資料中,壓縮算法有很多種,但是相對來說比較簡單的只有---RLE行程編碼 (剛上網查了好久,才想起這個名字),但是中文網頁介紹的很簡單,看不明白,只能谷歌 ,2005年,還是隨便可以用的。
于是,看到滿屏的英文后,那個晚上在網吧,我抽了一包煙。
RLE行程編碼算法 說簡單也簡單,說復雜也復雜,簡單是因為理解起來簡單,就是現實中在一幅圖像中具有許多顏色相同的圖塊。在這些圖塊中,許多行上都具有相同的顏色,或者在一行上有許多連續的像素都具有相同的顏色值。在這種情況下就不需要存儲每一個像素的顏色值,而僅僅存儲一個像素的顏色值,以及具有相同顏色的像素數目就可以,或者存儲像素的顏色值,以及具有相同顏色值的行數。本來是用100個字節來記錄顏色的,現在只需要用20個字節來記錄,因為人的眼睛是存在視覺冗余的,所以如果不是壓縮的很過分,是看不出來圖片的變化或變化不明顯,不會影響使用,但是對于計算機來說,這個圖片就從8M變成了500k,極大的解決了存儲空間,從而實現了壓縮。
搞清楚理論后,就開始瘋狂的在網上找相關的代碼,悲哀的是,根本找不到一個完整的帶代碼的案例做研究,幾乎都是函數的表達(而且還不完整)。
于是,在未來的一個多月里,我除了在宿舍睡覺,就是白天在機房,晚上在網吧里度過。
2個妹子倒是有良心,知道自己幫不上忙,就天天早飯、飲料幫我帶到機房,看著我敲代碼,中午或者晚上就帶著他們的男朋友請我吃飯!!!
經過2個多月的研究,畢業軟件最終被我搞定,不過我只搞定了圖片壓縮的功能,文檔壓縮的功能實在來不及了,給2個妹子分了下軟件里的答辯任務,因為畢業答辯3人一組,按照規定每個人都要完成一部分,等到答辯的時候,自己講自己負責的那部分,所以給她們倆分配的幾乎都是交互頁面 和基礎的一些功能代碼,得保證她們倆答辯的時候能說明白。
我記得每個人打印出來的畢業文檔里光呈現交互頁面和核心代碼都用了40多張A4紙,3份130頁,狠狠一摞拿給老師的時候,老師也嚇了一跳。
那2個多月現在回想起來都很難,難的是啥,其實我還答應了另外2個同宿舍的室友幫他們搞定畢設,一個是用動畫的形式展示流水線,一個是做進銷存軟件 ,進銷存軟件,我基本一周時間幫他搞定(后來還賣給了一個小醫院,1500元),但是那個用動畫的形式展示流水線也搞的我頭大,這個就用到了另外一個技術,游戲引擎 OpenGL,最后雖然做出來的很丑陋,好歹那啤酒在水流線上能動,還能把瓶蓋蓋上,哈哈,也算是圓滿完成了,說起這個來,因為研究這個OpenGL,我竟然還找到了當時非常流行的CS的早期源代碼,自己搭建起來后,竟然是可以運行的,可惜那個時候覺得游戲太害人,沒有往這方面研究,要不然......
終于到了要答辯的那天。
2個妹子在我突擊培訓了一周后,對于軟件怎么操作,怎么回答自己負責那塊功能,也爛熟于心,只是真正看到答辯的現場,即便是我,都感覺到非常緊張。
12個老師+系里的2個領導圍成一個弧形,演示講臺上一張桌子+一張凳子+一臺電腦+投影幕布 就是全部,站在臺上,一股強大的壓迫感迎面而來。
三個人中,因為我畢業報告上寫的自己是主研發人,自然整個軟件的介紹和研發思路以及用到的算法說明就由我來講解了。
講述算法思路簡單,各位老師和校領導都是專業人士,一聽就明白。
在我演示了幾張隨機圖片的壓縮效果后,老師們很滿意。
我到現在都記得,當時為了表現沒有作弊,我是打開百度,隨便搜索了幾張大圖片下載下來,給老師看了圖片的分辨率和存儲大小后,通過軟件將平均4-6M的圖片都壓縮在了200-400k之間,分辨率不變,在投影上面看不出噪點。
短暫的掌聲過后,輪到老師們開始發問,其中一個老師就問道,具體是怎么實現的,講一講核心代碼的工作流程?
于是我就打開代碼頁面,從一個函數一個函數開始講,講每個函數起到的作用,用到了哪些公式,怎么樣對每個像素點做記號,壓縮有的數據怎么存儲,如果解壓縮又怎么根據記號恢復像素點的數據,巴拉巴拉的講了快10分鐘,那是我活到22歲最漫長的10分鐘。
講完后,我看著各位老板,等他們繼續提問,這個時候比較搞笑的地方就來了。
10幾位老師,相互看了看,沒有一個人提問,等了差不多有20秒,我主動開口說”各位老師還有什么要問的么?“
還是沒人說話,最后還是我們系里的領導說了幾句,比如軟件現在穩定不穩定啊?是不是所有的圖片都可以壓縮啊?等沒什么技術含量的問題,得到肯定回復后,系里領導左右看了一眼其他老師接著說。
”要不我們先這樣?時間比較趕,還有很多同學都在排隊等著答辯,讓他們這組的另外2個同學趕緊也講下,咱們加快進程,怎么樣?“
”好“
”好“
一片附和聲。
于是我下臺,兩個妹子輪流上進行講解。
一切順利,等最后一個妹子講好,老師們也問好問題,我們即將下臺的時候,系里領導說了一句話,”你把你的軟件刻錄到光盤里,明天送到我辦公室來。記得寫上名字“
”好的,老師“。
那一年,我們小組三個人都獲得了優秀畢業生的稱號。
身邊有很多朋友想從小培養自家孩子的邏輯能力,問我怎么鍛煉,我想了想,挑了一個便宜、實用的分享給大家,總的來說,對于幼兒園的小孩比較適合,可以試試,邏輯能力,一定要學會動手才能鍛煉出來。
就下面這個,需要的,自己點進去購買就行
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.