1考研差 3 分,秋招零 offer,銀行卡余額 327 元 —— 距離畢業(yè),
還有 90 天。林舟盯著電腦屏幕上的考研成績查詢頁面,
那個刺眼的 337 分像根針,扎得他眼眶發(fā)酸。報考的 985 院校院線 340,
不多不少,正好差了 3 分。他手指懸在鼠標上,半天沒力氣點關閉,
宿舍里空蕩得能聽見自己的呼吸聲,另外三個室友要么回老家實習,
要么在準備最后的春招沖刺,只有他還困在原地。手機震了震,是母親的視頻電話。
林舟深吸一口氣,揉了揉臉,點了接聽。屏幕里母親的白發(fā)又多了些,
絮絮叨叨問著成績和工作的事,父親在旁邊搶過手機,嗓門洪亮:“沒事兒子,
大不了再來一年,爸還能供你!”“我……” 林舟張了張嘴,
把到嘴邊的 “沒考上” 咽下去,扯出個笑臉,“成績還沒完全出來呢,工作也在看,
有幾個不錯的在談。”掛了電話,那點強撐的笑意瞬間垮掉。他點開郵箱,
收件箱里躺著 50 封投遞失敗的自動回復,從大廠到小公司,
密密麻麻的 “抱歉” 像貼滿墻壁的封條,把所有出路都堵得死死的。林舟趴在桌上,
額頭抵著冰涼的鍵盤,聞到自己身上三天沒換的 T 恤散發(fā)的酸腐味,忽然覺得鼻子很堵。
深夜兩點,宿舍樓道的聲控燈滅了又亮。林舟摸出手機刷校園論壇,
想找點同齡人互相安慰的帖子,卻被一條熱帖刺中了眼睛 ——《吐槽一下某二手平臺,
買個臺燈翻到第 20 頁還全是廣告》。下面跟著一串控訴:“+1,上周賣專業(yè)課課本,
被騙子用假轉賬截圖騙走了,舉報還沒結果?!薄拔页鲩e置相機,一堆人上來就砍一半價,
還說‘學生黨不容易’,合著我買的時候是搶來的?
”“什么時候能有個只做咱們學校的平臺啊,至少能當面交易吧?”林舟指尖頓了頓,
劃過那些帶著怨氣的文字。他想起自己大一時買學長的考研資料,
在各種群里蹲了半個月才碰到靠譜的;想起上個月想賣掉舊筆記本,
被買家折騰了三回最終還是黃了。就在這時,手機頂部彈出條新聞推送,
標題紅得扎眼:《高校學子打造校園閑置平臺,畢業(yè)前月入過萬》。
林舟的心跳莫名漏了一拍,
點進去反復讀了三遍 —— 那個學生用的是最簡單的微信小程序,只服務本校,
卻靠精準匹配和當面交易解決了信任問題。他翻身坐起來,摸出計算器。
四年學費加住宿費一共 48600 元,除以 90 天,
每天要賺 540 元才能回本。如果做一個本校的二手小程序,抽成 1%,
只要每天有 5.4 萬元的交易額……林舟突然停住了,手指懸在計算器上。
窗外的月光斜斜照進來,落在他布滿紅血絲的眼睛里。那些挫敗和迷茫像被戳破的氣球,
慢慢癟下去,取而代之的是一種滾燙的東西,從胸口一直燒到天靈蓋。他點開空白文檔,
敲下第一行字:“校園二手交易小程序計劃書 —— 目標:90 天,賺回學費。
”鍵盤敲擊聲在空蕩的宿舍里響起,像在敲碎某種沉重的枷鎖。2“兄弟們,耽誤幾分鐘,
說個正事?!?林舟把打印好的計劃書往桌上一甩,
手指在 “校園二手小程序” 幾個字上重重敲了敲,“我想搞個咱們學校的二手交易平臺,
你們看這新聞 ——”王浩剛咬了口包子,含混不清地打斷:“創(chuàng)業(yè)?別扯了,
還有仨月就畢業(yè),不如跟我打游戲代練,上周剛接了個王者單子,三天賺了五百。
” 他把手機往桌上一扔,屏幕還亮著游戲界面。張遠正對著鏡子扯襯衫領口,
聞言轉過身:“開發(fā)小程序哪那么容易?畢業(yè)前能弄完?別到時候竹籃打水一場空。
”李哲推了推眼鏡,翻開專業(yè)書的手頓住了:“技術上,
微信小程序的云開發(fā)能省服務器成本,但用戶認證和支付接口對接需要資質,這是個問題。
”林舟早有準備,把計算器拍在桌上:“咱們學校三萬多學生,就算十分之一用,
每人年均交易五百,總流水一百五十萬。抽成百分之一就是一萬五,
覆蓋周邊高校的話……”“打住打住,” 王浩擺擺手,包子餡掉在褲子上也沒顧上擦,
“你這數(shù)據(jù)太虛了。服務器租賃、域名購買,哪樣不要錢?” 他往椅子上一靠,
塑料椅發(fā)出刺耳的 “吱呀” 聲。張遠跟著點頭:“現(xiàn)在做這個的不少,
咱們沒資源沒人脈,怎么跟別人搶?”林舟拿起筆在紙上畫著:“咱們做差異化。第一,
只做本校,支持線下驗貨;第二,按院系、宿舍樓分區(qū)。李哲,
用 uniapp 框架怎么樣?能同時適配微信和支付寶小程序。
”李哲皺起眉頭:“uniapp 能跨端開發(fā),但性能優(yōu)化是難點,
數(shù)據(jù)加載多了容易卡頓。” 他手指在桌面輕輕敲著,指節(jié)泛白。
王浩突然笑了:“說得再好聽,沒錢也是白搭。服務器至少得 2 核 4G,
一年小幾千跑不了?!薄板X的事我算過,” 林舟深吸一口氣,“初期用云開發(fā),
域名幾十塊就能搞定,備案自己弄。啟動資金五千,咱們湊一湊?
”張遠摸了摸下巴:“五千?我這個月生活費剛見底……”“我這有。
” 王浩突然從抽屜翻出個鐵盒,里面是一沓游戲點卡,“這賬號能賣一千五,
還有不少稀有皮膚?!?他捏著點卡的手指緊了緊,指節(jié)泛白。張遠眼睛一亮,
突然拍桌子:“我能拉到學生會資源!我女朋友是外聯(lián)部的,下個月畢業(yè)生跳蚤市場,
咱們能去宣傳!” 他掏出手機就要發(fā)消息,屏幕在陽光下反光。
李哲推了推眼鏡:“我負責后端開發(fā)和 API 接口設計,但需要臺好電腦,
我這臺跑開發(fā)環(huán)境吃力?!绷种哿⒖探釉挘骸拔矣螒虮窘枘?,配置夠。我搞架構和產(chǎn)品設計,
王浩你會 PS,UI 設計靠你,張遠負責商家對接和宣傳。
”王浩撇撇嘴:“UI 設計不是 P 圖,得考慮用戶體驗和交互邏輯,我只能說盡力。
” 他起身踱了兩步,又猛地轉身坐下。張遠已經(jīng)放下手機,搓著手:“剛跟女朋友說了,
她那邊沒問題。不過學生會有個副部長跟我有過節(jié),宣傳可能有阻力。
”林舟點頭:“先不管這些,錢湊得怎么樣?”王浩伸出三根手指:“賬號賣一千五,
生活費擠五百,共兩千。”張遠點開支付寶:“花唄套一千五,這個月省著過。
”李哲從錢包抽出幾張鈔票:“八百,這個月的獎學金。
”林舟數(shù)了數(shù)手里的零錢:“我七百,正好五千!” 他把錢往桌上一摞,
幾張鈔票在燈光下泛著毛邊。李哲突然皺眉:“用戶數(shù)據(jù)存儲得符合《個人信息保護法》,
得做數(shù)據(jù)加密,不然有法律風險。”王浩撓頭:“加密?聽著就復雜,別出岔子。
” 他坐回電腦前,開始登錄游戲賬號準備掛牌。張遠拍了下大腿:“對了,
學生會跳蚤市場之前有個校外商家贊助,錢給了一半就跑路了,跟他們合作得小心。
”林舟把錢收進信封:“放心,簽正規(guī)合同。明天開始,王浩設計 logo 和頁面原型,
李哲研究云開發(fā)文檔,張遠聯(lián)系商家,我寫需求文檔?!蓖鹾埔贿咟c鼠標一邊瞟計劃書,
張遠在手機備忘錄里記商家名單,手指飛快滑動。李哲打開電腦瀏覽開發(fā)文檔,
屏幕藍光映在臉上。林舟拿起筆在計劃書上補充,筆尖劃過紙張的聲音格外清晰。
宿舍里的空氣漸漸變了,質疑聲沒了,取而代之的是窸窸窣窣的忙碌聲。
林舟把裝錢的信封塞進抽屜鎖好,抬頭時正好對上三雙眼睛?!暗荣嶅X了,
先把王浩的游戲賬號贖回來!” 張遠突然笑出聲。王浩踹了他一腳,嘴角卻揚著:“少來,
先給我換個新鍵盤,這破鍵盤早該扔了。”李哲推了推眼鏡:“我想要套正版開發(fā)工具。
”林舟看著三個兄弟,突然覺得鼻子發(fā)酸。他知道前路肯定難走,但此刻攥緊的拳頭里,
好像握住了點什么滾燙的東西?!靶?,都安排上。” 他笑了笑,把計劃書折好塞進兜里。
王浩的敲擊鍵盤聲、張遠的語音備忘錄聲、李哲滑動鼠標的聲音混在一起,像支沒譜的曲子,
卻奇異地讓人心里發(fā)暖。3“李哲的鍵盤第三次被砸向墻壁時,
窗外的梧桐葉剛好飄落在實驗室窗臺 —— 那是我們熬的第 12 個通宵。
” 林舟撿起鍵盤上崩飛的按鍵,往李哲懷里一塞。
李哲喘著粗氣瞪屏幕:“用戶登錄接口又超時,負載均衡配置明明沒問題!
”“看 Nginx 日志,” 林舟指尖點著屏幕,“反向代理的緩存有效期沒設置對,
跟 CDN 節(jié)點沖突了?!蓖鹾仆蝗?“嘶” 一聲,鼻血滴在 UI 設計稿上,
暈開一小團紅?!鞍沧亢?iOS 的適配還沒弄完,” 他捏著紙巾堵鼻孔,
“這響應式布局的媒體查詢總出 bug?!睆堖h踹開門進來,
帆布包帶磨出了毛邊:“跑了十五家店,就兩家愿入駐。有家書店老板說,上周有人找過他,
也是做校園二手平臺,沒幾天就打不開了?!薄笆裁雌脚_?” 林舟抬頭?!皼]說名字,
就記得圖標是藍色的?!?張遠揉著磨破的腳后跟,“那老板說,
等咱們平臺能穩(wěn)定運行一個月再說?!崩钫芡蝗话咽髽怂ぴ谧郎希骸皵?shù)據(jù)庫死鎖了!
商品表和訂單表的事務隔離級別得調整,不然并發(fā)操作準崩。
”王浩湊過去:“那我這前端的狀態(tài)管理邏輯不就白寫了?
Vuex 的 Store 架構都是按原數(shù)據(jù)結構設計的。
”林舟嚼著速溶咖啡粉:“必須調,王浩你先用 Mock 數(shù)據(jù)頂著,等接口好了再聯(lián)調。
”凌晨四點,張遠驚醒時,發(fā)現(xiàn)自己趴在傳單上,口水把 “校園閑置” 四個字泡得發(fā)漲。
林舟正蹲在地上用馬克筆畫流程圖,李哲跪在椅子上敲代碼,王浩的腦袋直接擱在鍵盤上。
“測試支付!” 林舟拍醒三人。當 “支付成功” 彈窗跳出時,
李哲摟著王浩的脖子往墻上撞,張遠舉著手機拍照,照片里四個青黑著臉的人笑得露出牙床。
上線當天,張遠捏著傳單皺眉:“邊緣怎么有針孔?昨天取的時候還沒有。
”王浩搶過去塞進他手里:“管他呢,發(fā)了再說?!眲傔f出第一張,
保安舉著電棍沖過來:“不準發(fā)小廣告!” 林舟拽著王浩往樹林鉆,
傳單飛出來掛在考研海報上?!胺诸^跑!” 張遠喊著沖進圖書館,剛把傳單塞給個女生,
就聽見保安的呵斥,順著樓梯扶手滑到負一樓。傍晚,林舟指尖懸在后臺刷新鍵上。
“多少人?” 王浩的聲音發(fā)顫。李哲推眼鏡:“自己看?!睌?shù)字跳到 “37”,
前 20 個是測試小號。張遠念數(shù)據(jù):“兩家商鋪,流水 0,傳單花了三百,
服務器擴容一千二,余額剩八百。”王浩把設計稿摔桌上:“那書店老板肯定有問題,
說不定之前的平臺就是他搞黃的?!崩钫苤钢罩荆骸霸缟嫌胁幻?IP 發(fā)請求,
參數(shù)格式一樣,像腳本攻擊。”林舟踢到空咖啡罐,罐子滾到墻角:“打印店也怪,
老板盯著平臺名問了半天上線時間。”張遠拍大腿:“保安今天追得特別緊,
像提前接到通知。”李哲敲鍵盤:“先修復靜態(tài)資源加載慢的問題,調整緩存策略,
不然帶寬扛不住。”王浩鋪平設計稿:“我把商鋪入口提前,提高轉化率。
”林舟扯下窗上的紙條,上面寫著 “活不長”,轉身撞翻垃圾桶。“別管這個,
” 他把紙團扔進垃圾,“李哲換消息隊列緩解并發(fā),王浩加懶加載,張遠明天再去書店。
”張遠撿傳單:“那老板看我的眼神不對勁,說不定認識之前跑路的人。
”林舟點開用戶反饋,有條留言:“頁面清爽,
但沒想要的 —— 用戶 ID:20230615。
”李哲放大屏幕:“這 ID 格式不對,咱們的帶字母前綴,這個全是數(shù)字,
像手動錄入的,IP 還在校外?!蓖鹾拼蚬?,鼻血滴在鍵盤上:“有活用戶就不錯了。
”林舟給張遠發(fā)消息:“明天注意書店老板的電腦?!?發(fā)送成功時,燈管閃了閃,
四個人的影子在墻上晃得厲害。4“后臺注冊量破 1200 了!
” 張遠把手機拍在實驗室桌上,屏幕上的折線圖陡陡往上翹。
李哲推了推眼鏡:“但留存率掉了 15%,今早收到七個用戶投訴,
說有人私信發(fā)詐騙鏈接,頂著咱們平臺的名義?!蓖鹾普{試新的商品詳情頁,
聞言手一頓:“肯定是趙磊干的,他那個二手交易群都運營三年了,咱們搶了他的生意。
”林舟盯著用戶舉報截圖:“查 IP 地址了嗎?”“查了,全是虛擬撥號的動態(tài) IP,
” 李哲敲著鍵盤,“對方用了 VPN 跳轉,溯源不到真實地址。
”張遠突然站起來:“剛收到消息,上周入駐的四家商鋪全要退出,說有人跟他們說,
咱們平臺的支付通道不合規(guī),資金容易凍結。”“放屁!” 林舟攥緊拳頭,
“我們用的是微信官方的商戶平臺,資金結算走的是微信支付的備付金賬戶,合規(guī)性沒問題。
”“那文具店老板說,有人拿著咱們的平臺協(xié)議去找他,指出三個‘漏洞’,
說用戶信息加密等級不夠,違反《網(wǎng)絡安全法》?!?張遠踹了一腳椅子腿,
“我看他手里的協(xié)議復印件,蓋章的位置都跟咱們原件不一樣。
”王浩猛地扯掉耳機:“我剛在校園墻刷到個帖子,《扒一扒某野雞二手平臺》,
說咱們收了商家入駐費就跑路,配圖是 P 的轉賬記錄。
”李哲點開帖子:“發(fā)布者用的是匿名小號,但這個賬號的歷史發(fā)言記錄,
全是在趙磊的交易群里活躍的。”“去找他談談?!?林舟抓起合作方案往外走。
趙磊的宿舍門沒關,他正翹著二郎腿打游戲,把方案掃了一眼就扔進垃圾桶。
“窮學生還想搶飯碗?” 趙磊嗤笑一聲,“你們那破平臺的用戶畫像分析做了嗎?
知道什么品類的轉化率最高嗎?”林舟盯著他:“我們的數(shù)據(jù)看板顯示,
數(shù)碼產(chǎn)品和教材的交易量占 60%,用戶復購率 23%。”“呵,
” 趙磊往椅背上一靠,“上周有人找我合作,說能幫我搞垮你們,只要我把商戶資源給他。
” 他突然壓低聲音,“那人手里有你們平臺的漏洞報告,說是能讓支付系統(tǒng)瞬間癱瘓。
”張遠往前一步:“誰?”“憑你們也配知道?” 趙磊把煙灰彈在方案紙上,
“識相點就趕緊下架,不然下周你們的服務器就得被 DDoS 攻擊搞崩。
”林舟轉身要走,趙磊突然喊住他:“對了,你們的 SSL 證書快到期了吧?
想續(xù)期可沒那么容易,我認識 CA 機構的人。”回到實驗室,
李哲正對著屏幕皺眉:“剛檢測到有人嘗試注入 SQL 語句,攻擊用戶中心的接口,
還好我提前做了參數(shù)過濾?!蓖鹾浦钢@墻:“那帖子下面吵起來了,
有人說趙磊的群早就開始收高額手續(xù)費,還有人說看到上周退出的商鋪老板,
偷偷在趙磊的群里發(fā)廣告。”林舟點開商戶管理后臺:“退出的四家商鋪,
后臺數(shù)據(jù)顯示他們的商品瀏覽量突然漲了三倍,然后就集中申請下架,像有人在背后指揮。
”張遠突然想起什么:“趙磊宿舍桌上放著個綠色的 U 盤,
跟之前書店老板說的那個藍色圖標平臺,顏色有點像。
”李哲敲擊鍵盤的手指一頓:“我剛發(fā)現(xiàn),攻擊來源的 IP 段,
跟之前測試階段那個異常用戶 ID:20230615 的 IP,有重合的子網(wǎng)掩碼。
”林舟攥緊手機:“明天我去趟 CA 機構,查續(xù)期的事。
張遠你再去問問那幾家退出的商鋪,王浩盯著輿情,李哲加固防火墻,開啟 WAF 防護。
”王浩刷新著校園墻:“又有新匿名帖,說咱們的用戶協(xié)議是抄的,
連數(shù)據(jù)授權條款都一字不差。”林舟搶過手機,
屏幕的光映在他繃緊的下頜線上:“這不可能,
我們的協(xié)議是找法學院學長審過的 —— 除非有人拿到了我們的原始文檔。
”實驗室的燈管突然閃了兩下,張遠抬頭時,發(fā)現(xiàn)窗外有個黑影一閃而過,
手里似乎舉著相機。5“服務器崩了!” 李哲的吼聲撞在實驗室墻壁上,他猛拍鍵盤,
屏幕上滿是紅色的錯誤代碼。林舟沖過去時,后臺監(jiān)控面板已經(jīng)變成一片猩紅,
用戶登錄請求全部超時?!霸趺椿厥??”“不是簡單的宕機,” 李哲指尖發(fā)抖地指向日志,
“有人利用我們緩存系統(tǒng)的 LRU 算法漏洞,發(fā)起了緩存穿透攻擊,
數(shù)據(jù)庫連接池被耗盡了?!蓖鹾苿傇谛@墻刪完 “用戶信息泄露” 的謠言,
手機 “叮咚” 響個不停。“完了,有人發(fā)截圖說個人收貨地址被曝光,
現(xiàn)在注冊量掉得跟瀑布似的,從 1500 跌到 700 了!
”張遠攥著剛打印的服務器報價單,指節(jié)泛白:“IDC 服務商說,得升級到高防服務器,
再加購 DDoS 清洗服務,這兩項加起來要 3000 塊?!薄?000?
” 王浩突然拔高聲音,把鼠標摔在地上,“咱們賬戶里只剩 800 了!
我早說過趙磊不會善罷甘休,現(xiàn)在好了,錢花光了平臺也得黃!”“你嚷嚷什么?
” 林舟瞪他,“現(xiàn)在是吵架的時候嗎?”“那你說怎么辦?” 王浩紅著眼眶,
“我爸媽昨天還問我畢設做啥,我都不敢說在搞這個破平臺!
”張遠掏出手機:“我跟我姐說說,讓她先借點?”“不行?!?林舟立刻打斷,
“上次借的錢還沒還,再說這是咱們自己的事。” 他點開兼職群,
手指在 “高中數(shù)學家教” 的招聘信息上頓了頓。李哲突然 “啊” 了一聲,
屏幕上跳出新的攻擊日志?!皩Ψ介_始嘗試 SQL 注入了,
還好我提前部署了預編譯語句,不然用戶表真要被拖庫了?!?他抹了把臉,
胡茬上沾著咖啡漬,“但漏洞修復得重構緩存邏輯,至少需要兩天,這期間平臺只能停服。
”“停服?” 王浩冷笑,“現(xiàn)在停服,不就坐實了信息泄露的謠言?”林舟沒接話,
點開家教群私聊雇主:“今晚能上課嗎?時薪八十可以?!?對方秒回:“可以,
不過我兒子基礎差,得從函數(shù)單調性講起?!睆堖h突然想起什么:“昨天去打印店修電腦,
老板說他認識個‘高手’,能搞定服務器安全,還問我平臺用的是不是 Redis 緩存。
”“他怎么知道我們用 Redis?” 李哲皺眉,“這技術選型我們從沒對外說過。