Categories
All 一點人生經驗

A Struggling Gap Year

去年年底我沒有寫年終總結,因爲那時還有諸多事項未處理好,忙得不可開交。今終得閒,姑且記錄一下去年中到今年中的 Gap Year 年終總結。

Contents

我該 gap 嗎?… 1

排解時間焦慮… 2

緣何 gap. 3

gap 前的一些臆想… 4

工作的桎梏… 5

吹得 gap year 天花亂墜的網友,説了點什麽… 6

1.旅遊… 6

2.志願者… 7

3.打工度假… 7

那麽我究竟做了些什麽… 8

1.第二外語… 8

2.健身… 9

3.閲讀… 9

4.練字… 10

5.提升學術背景… 11

6.翻譯… 11

7.調酒… 11

關於感情… 13

申請、簽證相關事宜… 14

我該 gap 嗎?

這絕對是一個年年必有人會問的年經問題。親身經歷了 Gap Year 之後,如果你在中國的社會規則中行事,我會給你的回答是:「不該。」哪怕你説你將要移民,你 gap 一年就是爲了準備「潤」,此時此身,你還在中國還是中國籍,這套社會規則都會强加於你,35嵗危機是中國社會的規則給你的,所以你會時間焦慮,Gap Year 無論如何都收益極低。一個容錯率極低的社會就是如此令人失望,所以當初聽到一位澳門朋友攻讀第二個本科的故事之後,至今讓我欽佩她有何等的魄力。

我透徹地領悟,人家拿的不是豬肝紅護照,才有這樣做的資本,即使有一個鮮活的例子已經立在身旁了,但它并不可複製。當然,闊少官二代不用考慮這些問題,他們早早地就把一年行程安排好了,「不要」的建議也只説給和我一樣的普通人。你在迷惘中,還毫無規劃又毫無退路之時,才會問出「我該 gap 嗎?」這個問題,問出的那一瞬間答案其實就明晰了——不該。或者説,gap 的原因是能分爲主動和被動的,和我一樣的被動 gap 實乃無奈之舉,而主動 gap 的人,早早就做好了規劃,他們的建議并沒有多大參考價值。

排解時間焦慮

我講「不該」時,似乎傳遞了某種焦慮,但當你真的面臨 gap 時,也不必太慌張,核心要義即是——走好你自己的路。

中國人會排斥 gap 的原因,就是來源一種落後別人的心態,你有一年沒在既定路線上,就等於浪費了一年、落後了別人一年。

這一年最讓我排解焦慮的一句話是:「人生沒有什麽進度,進度最快的已經進棺材了。」尤其是去年十一月時,一位叔父真的突然意外離世,然後又陸續聽到有好幾個上輩人罹患癌症的消息,似乎我的生命確實走入一個新階段了,以至於很多上輩人已經開始謝幕了。我好好審視了一次「人生」這個終極哲學話題,活著就有希望?

當然上述是一種極其消極的態度去看待時間焦慮。一年的作用,也許沒有想象中那麽大。母親在這一年内也退休了,即使是她的同期同事們,工齡也出現了1-3年的差異,我不太清楚具體原因。這1-3年的工齡,的確會導致幾百塊一千來塊的退休工資不同的現實影響,不過也僅此而已。對於一個退休的人,當他回顧前半生的生活,少上一年班多上一年班有那麽重要嗎?其實真的微不足道。

人生沒有既定路程,每個人的現狀都是不同的,專注於自己的道路就好了。不談上一輩人的事,環顧同齡人,背景業已截然不同。前室友小F,延畢;初中同學小Z,高中時曾復讀一年;高中同學小G,國防科大,當兵一年;朋友小M,醫學生,五年本科。上述同期四人,背景不盡相同,卻都法律意義上到今年才本科畢業,能説他們落後了嗎?顯然不能,每個人身處不同的規則之中。假如這一年延畢了?連假設都不願意去假設,這種情況是真正一年内毫無作爲,還浪費一筆 Continuing Fees。假如當年去復讀了?亦是我不可能考慮的情況,當初高考的確滑鐵盧,但打死都不想去復讀。一是風險太大,復讀一年并不等於提分;二是絕對不想在中國高三虛度一年光陰,如果我是其他國家的學生,也許會欣然接受,國籍一定程度上真的是 gap 問題的原罪,所以此文完全不適合中國人以外的人讀。國防科大當兵很正常,他們每個學生都這樣,而且以後要進入軍隊系統,醫生人人都五年本科,以後都在醫院圈子混,這兩個例子都屬於完全有一套獨立體系的情況,所以他們不必擔心任何「落後」的問題。沒辦法,我不投共,也不想學醫,這都是自己的選擇,是自己的路。

目前爲止都是接受本科教育的一類人,格局再放大點,看看各種其他同齡人。小學同學小C,專科生,早一年就畢業了,又去學了一些培訓課程,進入職場;初中同學小Y,沒讀高中,前兩年還在中山打工時叫我過去玩,現況不明;初中同學小L,沒讀高中,曾經初三打架被另一所學校開除來了我們班,使得重讀初一的他比我們大三嵗,高三那年就聽説他結婚了,現在看見QQ頭像已經抱娃,估計現今在那座小縣城裡過著和我父輩一樣的幸福小日子吧;某台灣友軍,服强制兵役;香港手足,暴動罪成,數年都將身陷囹圄。

繼續陳列別人的人生,沒有任何意義,你能去評價這些形形色色的人生的優劣嗎?沒人有這個資格。每個人至此都有天壤地別的差異了,可見人生絕無所謂的既定路程。不如養好身體,多活一年,那才是真正賺了一年, 只是要想通 gap year 也絕非虧了一年。再者,若你一帆風順,背景出衆,卷進大廠,996 幾年後猝死,值得嗎?時間焦慮從任何角度都是沒必要的。

緣何 gap

扯了這麽多,我爲何要 gap 呢?沒辦法,雅思成績不夠,21 Fall 加碩申請吃了全聚德,屬於自身能力有限的被動 gap,確實有些丟人。

一定要讀碩士嗎?當然不一定,同届生自然也有直接去參加工作的,至少拿著我一個無業游民眼中的高薪,好不快活。

一定要去加國嗎?當然不一定,我們這届所有申請加碩的人都吃全聚德了,不禁再次感嘆加國門檻真的世界一絕。只是他們後備方案去美國去英國的都有,獨留我一人死磕。

我死磕加國的目的很簡單,要留下來。所以一個人,一定要清楚自己想要什麽。

想要早點進入職場,不讀碩士也罷。近年來海内外碩士都擴招本身就是一個延緩就業的騙局,但還是架不住碩士數量井噴增長。身邊幾乎沒剩幾個不讀碩士的朋友,碩士多了確實也提高了進入企業的門檻,一種惡性循環的風氣在蔓延罷了。有實力搶到就業機會,不想搞學術,確實也沒必要去讀「研究生」,我姐交大本科畢業沒有深造,當時就在有衆多研究生競爭同一崗位的情況下仍然斬獲了某大廠 offer,在絕對的能力面前,學歷不值一提。

想要追求排名,當然還是澳洲香啊。有個背景一般(GPA不到3)的同學曾放話非美國不去,最後也拿到了一所 QS 700 多美校的 offer,最終還是發現新南威爾士更香,沒有兌現他的豪言。這種背景申加碩大概率也會吃全聚德,但在他的排名需求下,加碩這種門檻又高排名又低的項目,狗都不申,人家壓根就沒考慮過加拿大。貫徹了自己想要什麽,是一件好事。

我知道很多中國學生、中國家長,尤其看重排名。對於留在加拿大來説,排名真沒那麽重要,多大碩士和排名以外的碩士,加的分是一樣多。況且加拿大不是學歷社會,找工作更注重能力和經驗,也必非名校生就更好找工作。唯一能在教學上就體現出優勢的,大概只有 Co-op 了,本地人尤其鍾意帶 Co-op 的項目,有 Co-op 的 College 一向是熱門,當然實力足夠,申請帶 Co-op 的大學也是可以的。

加拿大排名普遍偏低,或者説,追求排名爲什麽要來加拿大?英澳門檻超低,有目共睹,我一向打趣的說,中介鼓吹什麽三本逆襲 Top 50 的案例,我不用點開都知道是澳洲。當然,他們也氣急敗壞地辯解,什麽嚴進寬出啦,拜托,澳洲小留們找人代課代作業代考人人皆知,有嚴出實力的人是你嗎?説實話,我確實對澳洲有一點點成見,我見過的留學回來一句英語都不會説的,全是澳洲小留,有些給了我極差的印象,讓我戾氣很重,爲此道歉。但我始終對靠自己能力學習的部分澳洲同學抱有敬意。你去打開 QS,看一眼大馬,再看一眼台灣,結論是大馬高等教育碾壓台灣。過於滑稽,大馬華人都是往台灣跑,沒見過反過來的,所謂用腳投票是也,一日排名上大馬繼續碾壓台灣,一日我是完全不信這個東西的。大學排名偏向於英語系國家,一些歐陸、日本名校排名不理想,也是共識。另外各個排名的算法都是公開的,根本談不上科學。它們不約而同用了一個「國際化」的指標,澳門某高校在國際化指標上直接拿了滿分(其實全是招的内地人),近幾年排名飛漲,我完全不懂此指標有什麽意義。這個東西本身誕生的時間并不長,不過20年,只是一門生意而已。

既然如此,排名真的一無是處嗎?當然不是。小留們要回國,上海有基於排名落戶的政策,英國最近也推出了 High Potential Individual Visa,吸引高潛力人才前往英國,依據的也是院校排名。所以,還是之前文章提到的老話,搞清楚你要的東西,你就是想回上海落戶,就是想拿英國 HPI Visa,那追求排名沒什麽問題。這是一門生意,故而有人消費,有人買單。

想要進體制,只爲夠着敲門磚的碩士要求,那隨便水一個也無妨。有個老哥就二戰考研,考上了某偏遠地區的二本碩士,他的目的就是有個碩士學位以便進體制。在我看來這就是完全知道自己想要什麽的人,堪稱吾輩楷模。

我已經説過,死磕加國,就是爲了留下而已。前幾年也許還有多個選擇,澳洲、NZ 都可以考慮,但它們近年紛紛都提高門檻,英語國家只剩加國一個窗口,故我一定要抓住它。否則,我也是有多條退路可走,比如去澳洲,但那於我而言毫無意義。爲了這個目標,gap 一年是我認爲值得的,所以我選擇了 gap。未來某日,當最終目標達成的話,自然證明此文一切都是對的。

gap 前的一些臆想

此段必須提一件事:中國的繼續教育、成人教育系統,完全等於零。這也算我抨擊中國不該 gap 的核心原因之一。

在本科畢業之前,我暢想過隨便學點什麽來度過這一年。澳門有一個「學士後」的教育層次,屬於介於學士和碩士之間的證書課程,大多一年,當時我就看中了它。我都已經對澳門管理學院的一項課程心動時,才發現很多學士後課程根本不招收内地生,澳大倒是有幾個可以招收内地生的學士後課程,一是太貴,二是不感興趣,無可奈何,收拾收拾行李,離開澳門。

中國人收入水平太低,是不該 gap 的另一核心原因,不然我可以去澳大的學士後課程修讀一年,甚至可以讀個英碩。我曾聽聞有人讀了三個英碩,典型的有錢人寫照,所以開頭我就寫明,有錢人你想怎麽玩就怎麽玩,不用考慮 gap year 造成的任何俗世顧忌。

悻悻而歸的我,對國内的繼續教育萌生了興趣,有沒有什麽在國内全職上一年課的方法?中國完全沒有對標學士後的課程,更沒有各種就課程描述而言看上去特別有意思的證書、文憑課程。中國的零容錯率社會,從繼續教育的體系就可以看出來端倪,繼續教育很多是爲了方便公民轉行而開設的,在中國,你就別想著轉行了。

中國的成人本科有自學考試、成人高考、網絡學歷教育、電大四種類型,看上去種類繁多,實際都沒什麽用處。最讓我覺得誇張的就是自考法學學位,2018年法考改革之後,非法學專業的學生不能再參加法考,我特意去核實自考法學學位是否有資格——答案是沒有!對於一個有意向轉法學的人來説,連參加法考的資格都沒有,這個法學學位有什麽用呢?看見了吧,中國的教育體系壓根沒打算讓你轉行。

2020年,中國重設了第二學士學位教育,似乎為想轉行的人帶來了一絲希望。但本質上,這也是為就業率下滑所施展的緩兵之計,一紙公文説得再好聽,也管不住一些企業已經白底黑字寫上了不要第二學士。「第一學歷」仍是中國的潛規則。況且第二學士學位需要兩年時間,并且只招收國内本科畢業生,這個想法也破滅了。

同理,也考慮過一些像是 Coursera 上的遠程學位,反正我不在乎是否能認證,只想獲得自我提升。但歸根結底放棄的原因都是太貴了,有錢那都不是事。值得一提,我竟然發現了美國一些機構提供免費學位課程,像是 University of the People,并且是要拿各種材料走正常申請流程的,修讀時間也要一到二年,後者成了我沒有嘗試它們的原因。算咯,回歸現實,別光想著學這學那了,打工吧。

工作的桎梏

工作與否,是我糾結最深的問題。老實説,基友真是坑了我一把。

他本來就是打工戰士,每逢假期都在打工,平日也有日常實習,於是他以很懂職場的身份對我説了這樣一番話:校招已經過了,正職不好找,況且你説一年後要去上學的話,沒人要你的,你只能瞞著這事,如果合同的不止一年可能還有違約風險。就算做了,以後下家背調,問你這一段經歷爲啥只有一年,也不太好聽。實習的話,確實好找一些,但你不是在校生了,法律意義上是不能實習的。

老實説,回頭看這段話,九成内容都沒毛病,事實如此。我便因爲聽信了這段話,直接提前打了退堂鼓,壓根沒考慮過找工作。後來我才知道,違約金根本不是事,能找到工作還是工作一年就靠譜,大多 gap 一年的同學都是這樣做的。對家境不寬裕的家庭來説,gap year 的唯一選擇只有打工,能掙點錢怎樣都是好的,不然像我完全是啃老,連我媽都知道了讀碩本質是新型啃老。

不過名義上,我還是在做事,總不能真的虛度光陰吧。我托一個本地某 985 的朋友,聯繫上了他的導師,擔任科研助理一職。只是教授自己名下的,不是大學正式招聘那種,説白了,沒錢。當時想的還是有助於申請那一套,在這畢竟有項目有論文有推薦信,也算收益嘛。畢竟中國人都把什麽付費實習、付費科研項目、付費推薦信搞成產業鏈了,我這兒正大光明。

私下名下受限也滿多的,衆所周知瘟疫期間中國大學幾乎都封校了,不能像以往隨意進出。教授本說徵得了系裡同意,爲我錄入系統,後來可能是懶得處理我一個外人的事,只讓我用他的校卡進出。再後來疫情嚴重,我又無法進入校園,只得 remote 做項目。最終做了幾個月不了了之,僅僅為簡歷加了幾行不知道有沒有用的字,不算是特別成功的經驗。

紈絝子弟總不能一直當下去吧,於是開始考慮有沒有 part time 工作可以做,高中時我的理想職業就是網吧網管,圓夢一把也挺不錯,我還滿想試試做點兼職工作的。只是前幾個月一直在用脫產學雅思當作怠惰的理由,雅思沒出分,心裡總是懸吊吊的,有一種會兩頭不討好的擔憂。可惜由奢入儉難,雅思出分以後,我依舊沒有去找份工做,一直在遊山玩水,屬實墮落。

Offer 收得有點晚,有了 Offer 之後,我嘗試去找實習,因爲某些公司承認拿 Offer 狀態學生的在校生身份,當然也有很多公司不承認,總之投簡歷試試吧。此時暑期實習已經太晚了,日常實習時間又太短,有家公司認爲我 Qualified 已經準備簽約時卻在確認我可實習時間之後就把我拒了。

實習碰壁之後,視野再次轉回 part time,靈機一動,乾脆教人英語好了,教育才是最賺錢的行業,我一直想進軍教育界。果不其然,廣告一打出,很多人來咨詢,有位學生家長自己開了 300/2h 的價格,我都不曾預想到會如此高,有些震撼。要知道澳門家教市場行情都沒這麽高,況且學簽做還非法。一個内卷社會,家長太捨得為孩子教育花錢了,教育永遠是投資風口,哪怕中國政策不穩定。要知道這幾乎是 30 CAD 的時薪,去加拿大打普通雜工都沒辦法拿這麽多。在瞭解了加拿大薪資水平之後,我甚至還動搖了一下子,比想象中低得多。不如美國是板上釘釘的事,甚至不如我曾經待過一個暑假的澳洲,真的略有些失望。但我看完一篇寫移居加拿大工資減半的香港夫婦的故事之後,重拾了初心,畢竟也不是爲了高薪酬才移民的。國内實習生更不用説了,廉價勞動力,純粹爲了混個經驗,根本別想賺錢。算了,實習不做也罷,最後一段時間靠家教賺點生活費也不錯。

另外,一點小插曲,我還找了一份 Remote 雜活,不是騙人的那種,各類繁瑣的資格考核都搞了兩三個月。薪酬就十來塊每小時,和樓下奶茶店打點 part time 雜工水平相當。

現在想來,我還是為沒找一份全職工作而後悔,聽説在加拿大找工作非常看重經驗,二來有一年海外經驗,在移民打分表上雖然不是什麽嶄露頭角的殺手鐧,總歸是能加上些分。爲了彌補經驗不足的缺憾,我也開始刷 Leetcode 了,此前也發過幾篇做題筆記,一切都是爲了未來能順利找到工作而鋪墊。中國人的身份,就是得步步爲營,人生如下棋,沒有奢談自由 gap 的資本。

吹得 gap year 天花亂墜的網友,説了點什麽

再重申一次,我的態度是能不 gap 還是別 gap,但網上也有很多把 gap year 生活鼓吹得繽紛多彩的帖子,上面都寫了些什麽?背後有什麽問題呢?

1.旅遊

呃,我就是旅遊狂熱者,LBS 遊戲玩家,幾天不出門都心癢癢。但我只問一個問題,錢呢?如果家底足夠殷實,我也想旅遊一整年,完全不反對。

只簡簡單單抛出「旅遊」二字,沒有一丁點現實意義。

不過既然我是不出門會死星人,也免不了在這一年中瘋狂出行,一個契機就是各大航空公司紛紛為刺激消費所推出的「隨心飛」產品——產品有效期内,可以無限次乘坐該航司的航班,當然還有一些提前預約、不可積分等細枝末節的小規則。我一個無業遊民,沒有錢能自費實現隨心飛,正好有時間,而且沒有單位、社區會管我,隨心飛簡直就是爲我量身定制的啊。

綜合航線、有效期、價格幾個因素之後,我最後購買了某家航空公司的隨心飛。截至今天小用隨心飛飛了三十來次,加上隨心飛前自己還自費去了幾個地方,今年也算是走遍全國了,航旅縱橫的數據顯示今年超越了 99.98% 的用戶。

往期的頂尖隨心飛用戶都能薅到上百次,要是沒被父母指責天天出去太浪了,三四月份航班幾乎每趟都取消,以及後期瘋漲的燃油附加費讓我覺得不再划算,估計我也能做到吧。

旅遊,本身我不反駁,量力而行。絕大多數普通人,做不到專用 gap year 來旅遊,甚至對我這種隨心飛用戶已經深感不可思議了,我是幸運的。

2.志願者

志願者,本身也是好的。至少我人還在澳門時,也隸屬於某個社工團體,我是願意去做這件事的。

不過網上説的那些諸如國際義工的計劃,説白了就是另類一點的旅行團罷了,順帶一點社交性質。比如什麽斯里蘭卡的保護海龜項目,中學就有同學去過,不過是玩幾天而已。當然,這些項目確實有一個名副其實的名字,「義工旅行」,正如我所説,旅行才是這些旅遊團的重點。何況網上都是舊文了,這兩年根本無法以參加義工活動爲由出境。

境内類似的活動,前任還給我發過幾個稱想去,其中一個印象中好像是長江源頭監測的項目,已經記不清細節。總之要到高原的某個監測站去住上兩三個月,前任也是看太多理想很豐滿的文章,說不想實習,對這種項目充滿神往。老實說,她只是想去玩罷了,長江源頭聽起來似乎是一個縹緲的仙境,最能騙小女生。在那樣一個物資匱乏的地方,真待上兩三個月,絕對會膩。我倒是許諾她父母同意的話我就跟著去,但她爸向來是天天查崗控制欲極强的類型,事實證明,普通父母不會輕易同意女兒去參加這類項目。

想玩和真的想當志願者,一定要區分開,後者比想象中枯燥得多。至於想玩的部分,與上一節旅遊,并無二致。

3.打工度假

打工度假,大餅畫的非常香,我都一度想要去嘗試一下。

這是旅游和 part time 的結合版,旅游的同時,也 cover 掉了開支,理論上確實可行。

但我試著四處查了一下,打工度假在國内不算特別成熟,一點都不好找。我也沒去過,不好多做太多評價。

有什麽發現嗎?

從此處,即可瞥見端倪了。義工旅行也好,打工度假也罷,都是海外發明的新奇事物,管中國人啥事?最早將相關内容帶入中文世界的人,估計只是在翻譯某篇 What should I do in gap year 的英文文章吧?引入 gap year 這個概念本身的同時,也把這些新鮮的玩物順手捎了進來。

這些都是發達國家,高容錯率的社會,有錢有閒的國民們,研究出的玩法,中國沒有滋生它的土壤,至今也沒有成熟的體系。也許現狀會在幾十年後改善吧,但我們已經錯過了,現在的你,最好別 gap。

那麽我究竟做了些什麽

其實前文已經為 gap year 在西方世界出現的原因抛磚引玉了,gap year 在西方語境中,就是利用如此大段的空閒時間,去做你想做的,以後可能不太容易做的任何事情。

那麽除了前文的備考、打工、旅行,我還做了些什麽事呢?

1.第二外語

首先是日語:

19年12月能力考出分日,許多當興趣自學的朋友紛紛出分,刺激到了我,原來天天刷「年年歲歲學日語,歲歲年年五十音」meme 的小丑竟是我自己,於是從那時起就確定未來要超越五十音水平。實際上也并沒有多系統地去學習,無非就是在 Duolingo 上每日打下卡而已,但包括 gap 的這一整年在内,竟然真的堅持了下來,到現在 Streak 已經有五百多天了。中途無可避免還是漏掉了幾天,有時是忘了,有時是過十二點了還在外面浪,五百多天的 Streak 是用補打卡的道具維持的,但漏掉的天數絕不超過十天。

那麽 Duolingo 到底有沒有用呢?作用必然還是有一丟丟的。畢竟是堅持五百多天的學習,不可能說完全沒用,只是 Duolingo 的知識密度比起系統學習天壤地別,五百多天下來只夠做 N4 的題。

7月能力考報名的時候,猶豫要不要試下 N3,那段時間想到可能要備考,準備了紅藍寶書,又單獨拿滬江詞場堅持背了一個多月單詞。奈何當時還沒收 offer,心懸吊吊的沒法分心,而且日專的朋友一直向我傳遞 N3 毫無用處這個觀念,最終還是沒報名。從功利的角度來説,我并沒有能夠客觀證明我當前日語水平的憑證,只能在此隨便説上兩句罷了。

其次是法語:

法語完全是出於一個極其功利的角度出發開始學的,因爲它也許能幫助我未來在移民池子中脫穎而出。有朋友下定決心要學,推波助瀾之下,我也開始了法語學習,不過也沒什麽特別的學習方案,只是刷刷 Duolingo 玩而已罷了。心底對法語為移民加分一事并沒有太大寄望,畢竟真正能加到分,法語至少要B2的程度,吊兒郎當地學習根本沒有可能達成。總歸是將學法語視爲一項安慰劑吧,況且本科時我曾修讀了一門法語I的課程,并非完全零基礎的背景。

2.健身

我是標準的體育廢人,從未考慮過有關「健身」二字的一丁點内容,凡是會出汗的行爲,一律避免。

不知道心血來潮抑或是覺得身體確實有些差了,我竟然決定向 Routine 中增加健身這一環,目標就是練腹肌吧。過程很簡單,下載了一款排名靠前的練腹肌的 Workout App,每天跟著做,爲此我還特地買了一張健身墊。根據 App 預設的初級、中級、高級模式,循序漸進,每一級都花一個月完成。就這樣三個月堅持了下來,然後發現一點效果都沒有!Literally 一點沒有,頓感十分沮喪,健身很難出效果誠不我欺,三個月算是有那麽長了,卻毫無效果,絲毫提供不了正反饋,健身計劃就此流產,後期沒再做過。

3.閲讀

趁擁有大段可支配的時間,這一年好好看了不少書,也算是彌補了前幾年幾乎沒怎麽看書的荒廢時光。作爲一名倉鼠囤積症患者,買書也喜歡喜加一,書架上 Kindle 裡過往都屯了不少書,然而一大半都沒看過。所以全年的閲讀計劃沒有去刻意買新書,首要任務是把曾經堆積的書消化掉。

其中有一部分輕小説這類的閒書,也有不少嚴肅作品,以下就是部分我有做筆記的書籍:

4.練字

本想以「書法」爲題,轉念一想練字就夠了。想練字其實也可以視爲為閲讀的衍生品,書架上本就有兩本字帖,以前用過的臨摹紙也還剩下厚厚一曡。自己并非完全沒有練字的經驗,目前的字跡呢至少可以稱得上「清晰」二字吧,但要配得上書法藝術的程度遠遠不夠,稍微比比爛,至少比九成同齡人和更年輕的人狗爬般的字好太多了。屢屢看到後者的字我都有一種無力感——尤其那些方塊字還是簡體字。

然而沒練多久,就步入了玩物喪志的圈套,開始琢磨起該買一隻哪個品牌哪個型號的鋼筆比較好。當時恰好打趣地跟朋友聊到,沒有什麽興趣愛好不花錢。我以爲寫字就是最經濟實惠的愛好了,粗略瞭解了鋼筆的價格之後,算了,我收回這句話……買了一隻百樂的入門筆,以供消遣。

練字老實説也沒堅持太久,也就兩個月左右,以記憶正體字字型爲主要目的。我從高中時就沒使用簡體字了,但是每當遇見筆尖落在紙面上的情景時,很多正體字寫不出來,氣氛非常尷尬,決心趁此機會解決問題。兩個月内將常用的將近一千個正體字來來回回寫了六七遍,現在提筆寫字,也基本可以保證不出差錯,這就是最大的成果。

後期買了顔體的典範《多寶塔碑》,想通過臨古帖提升美感,臨了兩三遍覺得并不太適合硬筆,選帖也得怪自己人云亦云了,此後練字一事也就逐漸荒廢。

5.提升學術背景

在鑽研移民政策之後萌生了讀 PhD 的想法,以前覺得讀博太花時間了而且前景也並不明朗,一直在猶豫。但自己確實是一個比較喜歡高校環境的人,有意向擔任高校教職,對工業界有那麽一點點排斥。PhD 也不是說讀就能讀,在有導師願意收你之後,你才有資格問自己到底要不要 PhD,否則你根本沒得選。所以我預計到時候聯絡一些教授試試,有教授表示感興趣再繼續考慮 PhD 的事,不然也只有進工業界一條路可走,沒有掙扎的餘地。瀏覽 PhD 申請要求的時候,恍然大悟「水碩」究竟是何意。授課碩那都是水碩啊,甭管是英澳兩個重災區,還是自詡門檻很高的加拿大;也甭管修讀年限,英國一年,澳洲一年半,加拿大兩年,都一樣,都只是 course-base。畢竟很多 PhD 明言不收 course-base 的碩士,只要 research-base。看看中文語境也不得不承認,不搞學術,哪好意思叫自己「研究生」?

無奈自己現在的學術背景太差了,估計申請 PhD 可能性不大,除了工作章節中提到了擔任 Research Assistant,也想了想其他方法來提升背景。其中一件就是聯絡了本科導師,在修改畢設的内容上完成了一篇論文,成功投稿了某中規中矩水平的國際會議。太水的期刊或者會議,像橙色軟體上就有一堆給版面費就能上的,反而對自己是弊大於利,投了不如不投。總之論文這件事完成了零的突破,算得上踏入學術界的敲門磚吧?

6.翻譯

與翻譯工作結有不解之緣的一年。

先是 TG 之前有過一次公開招募,我投了一個 Translator 的崗位,本以爲不會再有後文了,竟然在好幾個月後收到了通知,做了三次筆試。筆試後就真的石沉大海,不了了之。

今年四月份網海拾遺時,偶然遇見了一本書,是林語堂三個女兒所合著的,名爲 Dawn Over Chungking 。不知怎的,竟一股腦將全書翻譯了一遍。心路歷程可見這篇《翻譯嘗試暨譯者序》,便不在此處纍述。

翻譯完成之後,更是萌發了想要將其出版的念頭,還咨詢了某個出版社業者朋友,結論大概是不太現實。於是將其上架到了 Amazon,歡迎支持。

完成譯作之後,時不時就會想著去翻譯一些看到的自認有價值的文章,例如今年六四的時候,我就翻譯了一篇報導重慶當年示威情況的《來自重慶的示威聲浪》Voices from the Protest Movement, Chongqing, Sichuan)。

再多提一嘴吧,工作章節中提到的 Remote 工作,也試標了一個翻譯項目,暫時還沒後續。

7.調酒

調酒算得上是此中成果比較顯著的。

此前有一位學弟在宿舍調酒給我喝,讓我認識到了家庭調酒的可能性,於是買了一套相同的家庭調酒工具套裝,以及一套便利店調酒小樣。

直調基本沒什麽可講的,Shake 的話自己多搖幾次就好。最難的操作我覺得是 Stir,爲了達成標準手法練習了好幾天。

下面是已經嘗試過的部分酒譜:

這款 App 名叫 Mixel,是一個主營調酒内容的 YouTube 頻道 OOC 的推薦,兩者也都推薦給想要嘗試調酒的讀者,質量都挺不錯。

説在此段最後:

我拼命地陳列上面的條條框框,無非是想證明自己真的有做過點什麽,本質仍是一種焦慮的體現。焦慮可以被排解,但無法被根除,所以再回到文初我給的那個建議,不想輕易去嘗試 gap。

關於感情

感情方面,終於不用像往年一樣簡單許個願就跳過了。這一年感情并非零,有可以記下的内容,只是滿負面的。

這一年,我經歷了一段極其失敗的關係。

我想若隱若現中那不適的感覺,大概是自己竟然將寧缺毋濫這麽基本的原則給丟掉了,并且仍然不懂得何爲及時止損。類似一種精神潔癖的後置,每每想到,無一不頭皮發麻。

《與女利主義的共處》一文中,我已經提到過一些她的經典語錄了。我視此人為感情騙子,也就是說,我的心態和一個受騙者的心態,并無二致。同理,此番心態也打消了我和平看待這段關係的所有可能性,我的煩言碎語,從不是什麽放沒放下的陳腔濫調,而是爲了「維權」的執念。

我也因為這段關係完全 PTSD 了,所謂創傷後應激障礙。數年内我都不想再進入下一段關係,如今我完全不知道一段關係究竟能爲我帶來什麽,我對親密關係沒有任何實質性的需求,本就不婚主義我的,現在大概上升到恐婚,甚至是恐女的。這不是 PTSD 是什麽呢?

你能找到一個教科書式的渣女樣本。談過無數任,沒什麽空窗期;視男人為提款機;私下和其他追她的男人出去看電影或有其他越界行爲,她覺得沒問題就是沒問題,問就是你管太多,限制當代女性自由;包括但不限於 body shaming 在内的各種 PUA 行爲……一旦與她的利益相關,就不再是當代女性了,彩禮陋習馬上搬上臺面。長期忍受 PUA,很難不留下陰影吧,我已經是極力秉持理性在去分析到底發生過哪些事情了。況且你以爲她條件很好嗎?此人幾乎沒有能力高過我的方面,某些方面甚至我只能稱之爲常識匱乏,用一個新潮的詞來描述,典型的普信女。

這段關係一開始的閃光點,是我以爲她是個反賊,結果沒想到支得如此澈底,大翻船。許多支性,都是刻在骨子裡的思想鋼印,不是喊一句「光復香港」就可根除的。而我竟然還以此作爲擇偶標準,除了腦子進水,不知道還能作何解釋。端傳媒之前有一期廣場,討論的話題很有意思——不同政見的人能做情侶嗎?我的回答是,可以,除了小粉紅。小粉紅是常識匱乏的一批人,壓根不懂何爲「不同」政見,只有非我族類,其心必異的二元觀。我曾就對一位香港朋友聊起過,我跟她也叫政見不同,我算大中華膠,她可能偏本土派,但是我們交流甚歡。能夠溝通是一切的前提,政見相同與否只是一個小前提罷了。所以,我以後決定改變觀念,不再完全以反賊作爲社交前提,尤其是我意外發現一位以前鮮有接觸的目前身居加拿大的學姐在 FB 上轉了一則陳秋實的 post,恍然大悟,「沉默的大多數」也許是真的存在的。嵗靜是可以嘗試接觸的,也許還有機會啓蒙他們,完全避開小粉紅就好,這樣一來,社交圈子其實大了很多。

再講個完全相反的例子,一個朋友,她優秀到無可挑剔,高中信競大佬,我高中時 nginx 配不對是找她幫忙的;Top 2 醫學生;業餘愛好畫畫,畫得比好多科班生強;三個月就能過日語 N2;甚至在遊戲品味極佳的同時也能打得很好,我推黑魂3全靠她帶,這是很好的例子,優秀的人真的可以做到方方面面都優秀,打破玩物喪志的濫調。老實説,我一直視其為理想型。然而,她偏粉紅,許多年前我倆還對線過,基於這個原因,我就澈底放棄了對她的想法。大概也正是有她這麽一個標杆,我此前才會定下一定要找反賊當對象的信條,即使其他方方面面都完全是理想型,終究只是充分條件,而非必要條件。

爲何男人圍著普信女轉?而鮮有人去追後者呢?屬實是一個奇怪的現象。男人平均水準太差罷,看見優秀的女孩子只得望而卻步。

現在想想,過於 naive,似乎每次在感情方面無論經歷了什麽,最終結論總是這次又 naive 了。因此,我已完完全全審美疲勞。PTSD 加上審美疲勞,我極長一段時間都不會再踏入親密關係。我太難理解快餐愛情消費者追求的究竟是什麽?好在,我看起來並不缺那些東西,那就索性直接不消費了。

關於感情,大概就這些吧,沉重的教訓,倒也不妨使自己更靠近真理。

申請、簽證相關事宜

本文至此,分享生活爲主,已有萬字,亦完成年終總結之目的。限於篇幅,上述二者就暫時不談了。它們都是尤其重要的部分,也許還會寫很長,況且簽證的 timeline 目前還不能算澈底明朗,之後有機會,完全可以開一篇新文再詳細分享。

新文:《22 Fall 加碩申請紀實》。

Categories
All 譯作

罕見口罩、夜店爆滿的中國超大城市

原文來自 Bloomberg News

July 28, 2022 at 5:00 AM GMT+8Updated on July


  • 罕見口罩、夜店爆滿、旅遊業蓬勃發展。
  • 零星的 Covid 病例出現之後,封城的威脅籠罩著整個城市。

習近平主席的「清零」戰略因其嚴峻的封鎖措施而在國際上臭名昭著。但是在西南部的大城市重慶,很難找到中國標誌性的大流行政策擾亂日常生活的跡象。

本週,遊客們在一個古老的山寨前自拍,而數百名聚會者擠在一家 gay 吧裡,幾乎看不到一個口罩。與北京不同,網約車用戶無需掃描接觸者追踪應用程式,即可跳上滴滴公司的車輛,以逃避該市 40 攝氏度(104 華氏度)的熱浪。國內旅行者湧入這座城市,大多數人不需要在抵達時進行隔離。

自2021年2月以來,重慶只記錄了 165 起 Covid 病例,在所有省級行政區中排名第四低——這個面積為瑞士兩倍的製造業中心在行政上視爲一座直轄市,和北京、上海、天津相同。根據 Bloomberg 的封鎖追踪,自 2020 年初以來,儘管北京和上海仍處於高度戒備狀態,而且截至週一,兩市範圍內有超過 2800 萬人生活在限制之下,但這座城市自 2020 年初以來還沒有出現過大規模封鎖。

因此,遊客繼續湧向重慶,沉浸在其閃亮的天際線、辛辣的火鍋和二戰期間作為中國首都的歷史中。這個城市並不是獨一無二的,在中國各地,許多城市一切如常,因為執政的共產黨採取的邊境管制、大規模核酸檢測和封鎖阻止了病毒的跨國傳播——這個擁有近14億人口的國家週三僅報告了521個本地病例。

重慶清零

這種相對正常的狀態使習近平能夠在世界其他國家繼續前進的時候推進他的「清零」戰略,即使是在一個具有里程碑意義的政治年度——他正在尋求打破先例的第三個任期。官方的新華社週三報導說,習近平本週在北京的一次會議上告訴高級幹部,中國在協調經濟發展和應對大流行方面取得了世界上最好的成果。

像今年早些時候在上海發生的抗議活動,雖然因其公開反對而引人注目,但仍然是罕見的。

紐約外交關係委員會全球衛生高級研究員黃延忠(音)說:「只要大多數人仍然過著正常的生活,不受大流行的影響,就可以證明新冠病毒清零政策的延續是合理的。」

Friday night at a night club in Chongqing. Photographer: Colum Murphy/Bloomberg

黃補充說,這種免受清零這條最嚴苛原則影響的庇護所可能會在一夜之間因病例數量的突然激增而被打破。他說,在那種情況下,官員們將採取在上海看到的「高壓清零措施」。

中國推動消除 Covid,甚至使國內旅行也變得繁瑣,不同的省市製定了自己的政策,往往規定了一連串需要滿足的測試和隔離要求。由於 Covid 管制拖累了更廣範圍的經濟,中國整體經濟增長的預測已經下降到 4%。

相比之下,重慶是一個「小天堂」,當地居民、位於中央商務區的意大利餐廳 Suliven 的主廚 Nicola Sangiovanni 說,該餐廳夏季一半以上的客源是依靠外地人,「當遊客來到這裡時,新冠疫情的限制不會對來到這裡的遊客產生強烈影響」,並指出最近幾週遊客人數有所增加。

前往重慶的旅行者必須下載該市的健康碼應用程序,並出示48小時內進行的 Covid 檢測陰性結果。從中風險或高風險地區的城市入境的人應該在抵達後三天內進行兩次 PCR 測試——這是一個相當容易的要求,因為全市都有測試亭。只有那些直接從高風險地區來的人需要進行隔離。

一位重慶高官說,這個城市的吸引力很簡單,「人們來重慶是因為他們可以來。」這名男子說,在談到政治問題時,他只要求用自己的姓氏「何」來表示。他補充道:「重慶的做法更加親民。」

A QR code for Covid-19 contact tracing at a tourist site.Photographer: Colum Murphy/Bloomberg

重慶萊佛士醫院於 2019 年初開業,是該市第一家私立國際醫院,其總經理 Kelen Leong 表示,她注意到入境規定有所放寬。

「這次回重慶,他們輕鬆多了,」她說,本月早些時候從上海回來時,一些檢查點甚至沒有要求她掃描健康碼,這與幾個月前他們進入雲南昆明時的情況不同。

據官方的新華社報導,上週,重慶舉辦了中國西部國際投資貿易洽談會(西洽會),來自38個國家和地區的組織參加了這次洽談會,簽訂了2400億元人民幣(355億美元)的交易訂單。 「也許這一次他們覺得必須放寬規定,才能讓人們進來。」Leong 說。

近幾個月來,由於沒有採取封鎖措施,重慶避免了其同行遭遇的經濟困境。第二季度當地經濟同比增長2.9%,相比之下,天津增長0.7%,北京和上海下降。

更強勁的增長

在重慶一個熱鬧的後街社區,午餐時間的食客們沉浸在全國最新的美食熱潮中:拇指生煎包,一碗小的煎餃,上面放著一種口味的冷凍飲料。

如果 Covid 的情況發生變化,品嚐中國創新飲食的機會可能戛然而止。最近幾週,重慶在遊客眾多的市中心地區至少記錄了兩起病例。過去一周,該市郊區幾乎每天都有零星的感染記錄。

China’s latest food craze: zhimu shengjian bao, a bowl of small, fried dumplings, resting atop a flavored ice drink.  Source: Bloomberg

與此同時,以其充滿活力的創業環境和熱鬧的夜生活而聞名的鄰近城市成都,因過去一周發現100多起病例後,目前正實施廣泛的限制措施。

新加坡國立大學政治學系副教授 Chong Ja Ian 說,直到今年早些時候,上海還在「正常和可接受」的條件下運作——而且其政府也對零星病例採取了更自由和有針對性的措施。但是,傳染性更強的 Omicron 變種使上海進入了長達數月的封城狀態,並開展了大規模的常態化核酸檢測,城市仍在努力恢復面貌。

儘管這種威脅揮之不去,但在重慶,一種逞能的氣氛卻佔了上風。藝術策展人王遠凌(音)將此歸因於城市居民的樂觀情緒。

「當這座城市在二戰期間遭到轟炸時,重慶人能夠從防空洞裡出來,繼續他們的生活,」他說。

「這就是這座城市的精神,」他補充說。 「我們已經適應並找到了方法來應對新冠病毒。」

—— 由 Colum Murphy, Jing Li, James Mayger, Hayley Wong, Krystal Chia, and Rachel Chang 協助

Categories
密碼學 All

密碼學(2): Modern Block Ciphers

Block Ciphers 可以譯作分組加密或者分塊加密。

常用 Block Ciphers 相提并論的加密方式是 Stream Ciphers,可譯作串流加密法。兩者都是替換式密碼(Substitution ciphers),都應用了可逆映射(reversible mapping):

Stream Ciphers

串流加密法是一種對稱密鑰密碼,其中明文數字與偽隨機密碼數字流(密鑰流)相結合。在實踐中,一個數字通常是一個 bit,與異或 (XOR)組合操作,把明文訊息逐個 bit 轉換成密文。

典型的 Stream Ciphers 是自動加密的 Vigenère 密碼和 Vernam 密碼。

較有名的 Stream Ciphers 是 RC4。

RC4

RSA DSI 擁有的專有密碼,由 Ron Rivest 設計,簡單但有效。密鑰大小可變,是一種面向字節的串流加密法。在 SSL/TLS、無線 WEP 中廣泛使用。密鑰形成所有 8-bit 的隨機排列,使用該排列來打亂輸入信息,一次處理一個字節。

RC4 Key Schedule:

  • 以數字數組 S 開頭:0..255
  • 使用鍵來完全地打亂
  • S 形成密碼的內部狀態
  • 給定一個長度為 keylen 個字節的密鑰 K:
for i= 0 to 255 do
   S(i) = i
   T(i) = K(imod keylen)
   j = 0
for i= 0 to 255 do 
   j = (j + S(i) + T(i)) mod 256 
   swap (S(i), S(j))

RC4 加解密:

  • 加密繼續打亂數組值。
  • 已打亂的每對的總和選取 stream key 值。
  • 與要加密/解密的下一個消息字節進行異或(XOR)運算:
i= j = 0 
for each message byte Mi
   i= (i+ 1) mod 256
   j = (j + S(i)) mod 256
   swap(S(i), S(j)) //keep shuffling 
   S()t = (S(i) + S(j)) mod 256
   Ci= Mi⊕S(t)

RC4 的安全性:

  • 聲稱對已知攻擊安全(有一些分析,沒有實踐)。
  • 結果是非常非線性的。
  • 由於 RC4 是一種串流加密法,絕不能重複使用密鑰。
  • 對 WEP 有疑慮,但這部分由密鑰處理而不是 RC4 本身。

Block Ciphers

明文區塊被視為一個整體,用於生成等長(64 / 128 位)的密文區塊。

密鑰長度/區塊大小/輪數可變。

混合運算符,數據。

費斯妥密碼(Feistel cipher) 是一種用於構造 Block Ciphers 的對稱結構,以 Horst Feistel 命名。

Feistel 提出我們可以利用乘積密碼的概念來逼近理想的分組密碼,即依次執行兩個或多個簡單密碼。

替代:每個明文元素或元素組唯一地被相應的密文元素或元素組替換。

排列:明文元素的序列被該序列的不同排列替換。 也就是說,序列中沒有元素被添加、刪除或替換,而是元素在序列中出現的順序發生了變化。

Feistel 加解密:

數據加密標準 Data Encryption Standard (DES):

一種用於加密數字數據的對稱密鑰算法,於 1970 年代初在 IBM 開發。儘管其 56 bits 的短密鑰長度使其對應用程序來說太不安全,它對密碼學的進步產生了很大的影響。

Key size – 56 bits; Block size – 64 bits

DES 算法:

DES 加密:

Electronic Codebook (ECB):

消息被分成獨立的區塊,這些區塊被加密。每個區塊都是一個被替換的值,就像一個密碼本,因此得名。每個區塊都獨立於所有其他區塊。

Ci = De (Pi, K1)

ECB 的優劣:

  • 重複的消息可以反映在密文中。
  • 如果與消息區塊對齊,特別是與圖形等數據或變化很小的消息對齊,這將造成密碼書分析問題。
  • 加密消息區塊是獨立的,這是一個弱點。
  • 因此只有真正發送幾個數據區塊時很有用。

Cipher Block Chaining (CBC):

消息被分成多個區塊,但它們在加密操作中是聯繫在一起的。密碼區塊與明文鏈接,因此得名。

使用已知的初始向量 (IV) 開始流程:

  • Ci= En (Pi⊕Ci-1, K1)
  • C0= IV

CBC 的優劣:

  • 每個密文區塊依賴於它之前的所有消息區塊。
  • 最常見的使用模式,消息的更改會影響密文區塊以及原始區塊。
  • 爲了開始流程,需要一個初始值 (IV),發送方和接收方都必須知道它,IV 必須是一個固定值,或者它可以在消息的其餘部分之前以 ECB 模式加密發送。
  • 在消息的最後,必須處理一個可能出現的最後一個短區塊:用 pad 填充最後一個區塊(通常帶有填充大小的計數),Eg. [b1 b2 b3 0 0 0 0 5] ➔3 data bytes and 5 bytes pad+count

Cipher Feedback (CFB):

消息被視為添加到分組密碼輸出的比特流,結果是下一階段的反饋(因此得名)。標准允許反饋任意數量的 bit(1、8 或 64 或其他),表示為 CFB-1、CFB-8、CFB-64 等。

在實踐中,利用所有 64 位是最有效的,稱之為 CFB-64:

  • Ci= Pi⊕Sig(En(Pi, K1))
  • C0= IV

CFB 的優劣:

  • 當數據固有地以位/字節到達時適用。
  • 最常見的流模式。
  • 分組密碼在兩端都用於加密模式。
  • 錯誤在發生之後仍傳播了幾個區塊。

Output Feedback (OFB):

消息被視為比特流,分組密碼的輸出被添加到消息中, 然後反饋(因此得名)輸出,因此反饋與消息無關。

可以提前計算:

  • Ci= Pi⊕Oi
  • Oi= Si( En(Oi-1, K1))
  • O0= IV

OFB 的優劣:

  • 用於錯誤反饋有問題的地方。
  • 沒有錯誤傳播,或者在消息可用之前必須進行加密。
  • 與 CFB 類似,但反饋來自分組密碼的輸出,並且與消息無關。
  • 永遠不要重複使用相同的序列(key + IV),發送者和接收者必須保持同步,並且需要一些恢復方法來確保這種情況發生。
  • 雖然最初在標準中指定了 m-bit 的反饋,但隨後的研究表明,應該只使用 64 位 OFB,這是最有效的方式。

Categories
All 譯作

來自重慶的示威聲浪

譯者前言:在近年的普及下,很欣慰許多人已經開始意識到,六四時學運已經席捲全國各個主要城市,清場亦是全國性的命令,不單單只是北京的事,即使北京絕對是漩渦中心,但也不可因此忽視掉其他地方。過去幾年中,我陸續看見有人講述了上海、成都等地清場時的悲劇。重慶的歷史似乎鮮少有人提起過,不過老實説在時任市委書記的袒護下,重慶的結局確實還算全國不錯的。我找到了 Voices from the Protest Movement, Chongqing, Sichuan 這篇記錄重慶示威情況的文章,於六四33年之際翻譯並分享出來,以示世人勿忘歷史,原文刊於 The Australian Journal of Chinese Affairs 1990 年 7 月號,作者為澳洲國立大學的 Anita Chan 和 Jonathan Unger。


重慶是中國内陸的大城市之一,舊稱 Chungking 。這座城市在海外最廣爲人知的一點是二戰期間國民黨曾將此定爲戰時首都。二十世紀六十年代和七十年代,在毛澤東發動的將軍事設施向内陸省份轉移的「三線建設」運動下,重慶成爲一座生產軍事設備的主要中心。今天這兒的產業更加多樣化,集中了全國30%的摩托車和汽車製造業。[1]

與北京的民主示威和西安、長沙、成都的暴力衝突相比,1989年春天在重慶的動蕩溫和許多。儘管如此,過去五年來在民眾中積累的挫敗感在此與其他地方一樣爆發為大規模抗議。在接下來的幾頁中,我們將重點關注這些挫折,並展示它們在不同社會階層中的不同之處。 我們還將看到,相互誤解和不信任如何破壞重慶不同階層抗議者之間的合作。

我們不在現場,但我們採訪了兩位來自重慶的前民運人士, 他們來自兩個截然不同的社會背景,從不同的角度講述了這場運動。 他們從未見過面,但在北京大屠殺後,他們各自躲過追捕逃到了香港,我們在 1989 年 11 月和 12 月期間分別對他們進行了採訪。他們最近都獲得了西方國家的難民身份, 離開香港到國外生活。

第一位受訪者姓王,32嵗,在被迫逃離之前,他是重慶 19 所高等教育機構之一的初級教員。雖然他很年輕,沒有參加過1966-68 年的文化大革命,但他在那個時候年齡夠足以令他記住了當時的派系暴力。1989 年春,當他成為大學抗議運動的顧問和領導者時,他對紅衛兵的酸楚記憶使他對學生施加了適度的影響。他對其中一些學生主張極端紅衛兵式行動(下文討論)的描述應該提醒我們注意學生運動中的暗流,這些暗流有時會危及抗議活動的和平性質。

第二位受訪者姓侯,來自一個截然不同的社會和職業背景。在飛往香港之前,他是一名私人企業家,一個「個體戶」。個體戶這個詞,字面意思是「個人私有家庭」,在漢語中具有特別複雜的内涵。該術語包括自僱修理工、出售早餐煎餅或走私進口服裝的街頭小販,以及自己擁有出租車的出租車司機,但也包括工廠主和利用其關係腐敗地賤買貴賣的投機交易者。20世紀80年代初,大多數最初的城市個體戶出現在社會主義階級制度的邊緣:那些沒有能力在國家部門獲得穩定工作的人,當國門打開時,他們開始為自己的生活而奮鬥,作為脫離失業者行列的一種手段。因此,個體戶一詞帶有兩種相反的含義,它既讓人聯想到與英語「企業家」(entrepreneur)一詞相似的主動性和足智多謀,又帶有遭人反感的含義,即指代那些在社會上被懷疑用非生產性和不总是追求高价的手段來賺錢的人。知識分子和學生往往對個體戶不屑一顧,指責他們哄抬物價,如果他們做得很成功,則會被視為暴發戶而加以憎恨。[2]

直到 1989 年 6 月,侯先生都是典型的成功個體戶。他在一個貧困的工人階級家庭長大,家中六個孩子都不能吃飽穿暖,他的人生理想一直是賺大錢。高中畢業後,他成為了重慶一家大型軍工廠的工人,但他覺得那裡的所有主動權都被成批的官僚扼殺了。當鄧小平推行的經濟改革政策帶給他「做自己的事」的機會時,他湊了300元借來的錢,開了一家私人餐館。每天工作 12 小時,他很快就取得了成功,並利用收入繼續從事更有利的工作。到 1989 年,29 歲的他擁有兩家塑料廠,僱傭了幾十名來自農村的散工,以人民幣計算,他是百萬富翁。

我們會從這兩個人的兩種視角,輔以《重慶日報》的文獻資料,來關注重慶的民主運動。 從這三個不同位置,我們將試圖區分學生、侯先生等私營企業家和工人在抗議運動中的不滿和作用。

遠方的轟鳴

與北京和其他城市一樣,4月15日胡耀邦去世後,重慶的大學生是第一批集體行動的群體。 不過,起初他們的活動僅限於校園圍牆内,《重慶日報》完全沒有報導。 儘管如此,讀者還是有可能從當地報紙上感受到一場全國性的危機即將來臨。據官方新聞報導,在中國其他地方,北京新華門外、西安和湖南省省會長沙剛剛爆發了對抗和騷亂。[3]對胡耀邦在北京的葬禮的報導,其坦率的態度和生動的細節讓人聯想到1957年百花運動期間的報導。[4]善於閱讀報紙文章字裡行間的人可以看出,對於一個被廢黜的領導人來說,在一份城市報紙上出現這樣不同尋常的待遇,只能説明連該報社的黨支部也處於一種反叛的情緒中。[5]

儘管如此,在最初的幾周里,當地報紙也試圖阻止重慶的任何傳染性劇變。文章暗中指出,城市的治安可能處於崩潰的邊緣,嚴重威脅社會和政治穩定。去年,重慶被指控犯有嚴重刑事罪行的人數猛增了45.2%;被判處十年以上有期徒刑的人數猛增了62.8%;被處決的人數,增加了 50%。 這對人們的警告很明顯——任何抗議行動都會為進一步的犯罪和動盪打開大門。[6] 所有政府支持的「群眾組織」的領導都被召集,聽取市政當局關於如果事態失控就會回到十年「文化大革命」混亂局面的世界末日般的設想。[7]

個體戶登上舞臺

五月初,學生們確實湧上了重慶街頭,但具有諷刺意味的是,這是在兩個小個體戶的鼓動下發生的,這兩個人不太可能在學生面前發揮催化作用。據參與了這些活動的侯先生說,這兩個個體戶其中一個是21歲的理髮師,另一個是為一個私營企業家當跑腿女郎的青年。為了增加收入,這兩個年輕的個體戶經常帶著塞滿四川香煙的行李到北京去,因為首都的香煙比中國內地要貴很多,這種小買賣帶他們在四月來到了北京。他們在那裡看到的學生示威活動對他們產生了很大的影響,當他們回到重慶時,看到重慶學生溫順地順從當局,「只是在校園裡轉悠」,他們感到非常失望。兩位年輕的個體戶是侯先生的熟人,他們去找侯先生商量該怎麼做。當天晚上,他們決定去重慶大學發表公開演講,以喚醒學生。但他們意識到,如果他們以個體戶的身份去,學生們會反駁和嘲笑他們。因此,他們萌生了冒充北京師範大學學生的想法,以使他們具有來自中國中心的使者的可信度。他們聯繫了重慶大學的學生,包括侯先生在內的六位個體戶於5月4日前往該大學,幫助煽動學生。

2000多名渴望了解最新進展的學生齊聚一堂,聆聽這兩名「北京學生」動情地講述首都的學生運動以及官員的暴利和腐敗,當地電視台對這次集會進行了錄像。在聽眾中,王先生回憶說:「許多人相信他們,包括我自己。他們講得很好,很有說服力。」他們成功地喚起了學生上街遊行的熱情。據王先生說,在學生遊行隊伍興奮地回到校園後,這兩位發言者被選為五人領導委員會的成員。當天晚上,他們睡在學生宿舍,并於5月5日凌晨被公安人員逮捕。[8]兩名年輕的個體戶,熊長平(音)和段泉(音),兩天后被判處有期徒刑15年。

當地媒體立即對本案進行了大力宣傳。 王先生回憶說,這件事讓學生們感到非常尷尬。 媒體嘲笑他們:受過良好教育的大學生竟任由兩個冒牌貨操縱自己。 王先生觀察到,當學生們意識到這兩個「學生」是最糟糕的「個體戶」時,「他們覺得被騙了,不想再站起來示威了」。 另一方面,侯先生對他的兩個朋友被捕和他們的刑期公示深受影響。 在電視上他看到了他們的「反革命」演說和他們在拘留所的所謂「懺悔」的電影片段,他們的臉被打得青一塊紫一塊。不過,侯先生可以肯定,他只能在他們的臉上看到憤怒的反抗。 隨後,其中一位去監獄探望他們的母親告訴他,儘管遭受酷刑,他們實際上還是拒絕認罪。

重慶抗議運動的第一階段只是凸顯了學生和知識分子與這些自僱人士和小資本家之間的鴻溝。中國的學生和知識分子往往覺得,像過去幾個世紀的文人一樣,他們是任何道德正義事業的正當領袖。從王先生回憶的語氣中可以看出,讓卑微的個體戶偷走這個衣缽,對他們的自尊心造成了雙重打擊。

就個體戶,即侯先生和他的朋友們而言,對學生懷有復雜的自卑感和優越感。一方面,他們知道自己在社會中的地位。他們緊緊抓住學生運動,響應其口號,部分原因是他們意識到自己的地位太低,無法得到尊重。他們冒著風險擔任學生事業的領導,部分原因是他們覺得有必要證明,儘管他們的地位和聲譽很低,他們是正直地關心國家事務的。正如侯先生對我們說的:「當然,作爲個體戶,我們覺得我們也應該加入這種正義的運動。」

如果按照侯先生的說法,一些個體戶同時也覺得他們比學生和其他社會群體更優越。最重要的是他們有錢。他們的收入可能是普通工薪階層的兩倍、三倍或許多倍,而且他們為自己通過自己的聰明才智賺到的錢感到自豪。在運動期間,他們慷慨解囊。侯先生主動向他的個體戶朋友和熟人募集捐款。此外,在北京發生六四屠殺的第二天,他就捐錢給學生買了一台複印機,以加快新聞在重慶的傳播速度。在北京,作為另一個例子,高調的「飛虎 」摩托車隊作為新聞信使在城市中飛馳,許多人帶著無線頁面呼叫器,在抗議活動中發揮了關鍵作用。個體戶是現金和物質支持的重要來源——食品、通信設備、車輛等。他們的熱情和慷慨讓很多人感到驚訝,並為他們塑造了一個新的形象。正如一位曾是北京 「飛虎」車隊成員的個體戶後來在一份香港雜誌上寫的那樣:

每當個體戶經過其中一個學生的捐款點時,他們都會停下來捐錢——從十塊、幾十塊到一千甚至幾萬塊錢,以表明我們個體戶發自內心的真誠。 所有的學生,來自全國各地的學生,絕食的學生,都淚流滿面地向我們「飛虎」車隊打招呼:「北京的個體戶萬歲!」自從個體戶這個詞出現以來,我們還是第一次聽到這個難以想像的口號,「個體戶萬歲!」[9]

他們對學生的支持不一定是故意算計的,但很明顯,像侯這樣的個體戶希望用他們新賺來的錢來購買社會尊重、聲望和地位。 他們希望受到「人民」的歡迎。

在重慶,由於運動初期兩名年輕的個體戶被抓捕和曝光,他們未能獲得與北京的個體戶同等程度的認可和接受。 重慶當局利用這一事件,採取了分而治之的策略。 即便如此,侯先生和他的同事們仍在繼續活動。

作為一個社會階層,個體戶有他們自己的不滿,但這些不滿很容易被包含在廣泛的學生運動口號中,如 「民主」、「反對腐敗」、「打倒官僚主義」、「反對暴政」。在激烈的情緒中,共同的敵人提供了團結的力量,即使一些口號的內容,如果仔細看的話,可能會導致學生和個體戶站在對立面。畢竟,當學生和其他人抱怨腐敗時,他們在一定程度上想到了個體戶。

然而,民眾在這方面對個體戶的反感並不完全正確。侯先生最大的抱怨是經營企業的不安全感,原因是沉重的稅收和各種各樣的「捐款」、「特別稅」以及對各種政府機構的官員的賄賂。對於一個個體戶來說,區分哪些是進入公共財政的,哪些是進入私人腰包的,哪些是進入中央政府的,哪些是進入地方政府的,此事並不容易。侯先生憤憤不平地列舉了除常規營業稅之外的非正常徵稅:

殘疾人基金會(鄧小平的長子鄧樸方是該基金會的主席)再次來要求「捐款」。 你必須「捐款」,根本無法拒絕。「捐款」的金額取決於您的業務規模。 如果你不給,他們會讓你穿「小鞋」(給你帶來各種不便)。 因為我的生意很大,我每次都要「捐」上千元,一年好幾次。 除了鄧樸方的機關,還有很多人圍了過來。 甚至有人告訴我,我最好為亞運村的建設捐款。 我們感到我們的生活受到來自各方面的壓力。

除了這種徵收外,全國每年由個體戶支付的常規營業稅已達到約200億元。[10]該稅款預先確定為企業規模的百分比,而不是按利潤的百分比。即使該企業當年是虧損的,也必須繳納。因此,侯先生說,一個個體戶必然要學會如何逃避一些稅收負擔,以免他被迫停業。他發現自己在這種情況下不得不採取腐敗行為。

要成為一個成功的個體戶,你必須建立起你的關係。我們必須結識公安機關的人,這對我們的業務是必要的。公安局的人工資很低,所以他們喜歡和有錢的個體戶交朋友。我們在某種程度上相互幫助。我們宴請他們,給他們買煙,招待他們。在某種程度上,我們是朋友——酒肉朋友。

與公安人員和腐敗官員的交往,為個體戶帶來了通過逃稅和不道德的商業行為賺錢的形象。從某種程度上說,他們正是想通過參與民主運動來擺脫這種形象。他們希望被看作是誠實的,正直的。我們可以從與侯先生的長時間談話中得知,他和他的同事們真誠地希望他們可以在一個以功績為基礎的社會中運作,而不是一個以腐敗的特殊關係為基礎的社會。他們自己畢竟不是官員的親屬,他們是腐敗的給予者而不是接受者。他們不得不與貪婪的官員分享自己的收入,這是非常不公平的,令人沮喪的。在1989年的抗議運動中,一部分新的有錢階層對舊的權力精英進行了反叛。

學生們走上街頭

正如在北京和其他城市一樣,重慶的大學生站在了民主運動的中心。從5月中旬開始,他們是組織最嚴密、最持久的,儘管不一定是最激進的。

5月4日之後,重慶的學生活動由於發現他們被這兩個個體戶誤導而幾乎崩潰。北京學生絕食的消息傳到各省後,人們的情緒才再次高漲起來。 5月17日,重慶爆發了規模最大的學生遊行,有一萬名學生參加,媒體在頭版進行了 「客觀 」的報導,包括一張突出顯示一些挑釁性橫幅口號的照片。[11]隨著國家首都的民主抗議活動愈演愈烈,重慶當地媒體的民主派開始表示同情。第二天,即5月18日,媒體對事件的報導更加大膽,更加詳細。 18日,2000多名學生在市政府前靜坐,其中82人開始絕食。與北京的學生一樣,他們要求與當地官員進行對話。據媒體報導,這些學生得到了 「該市居民的熱情支持」。到現在,一些當地的新聞人員甚至自己也加入了抗議活動。

市政府方面則不遺餘力地避免發生衝突。據當地媒體報導,交通警察幫助緩解了交通擁堵;治安警察與一家餐館達成安排,為遊行隊伍設立了飲料供應點;警察幫助暈倒的學生上了救護車;在漫長的熱天結束時,市交通局調動了167輛公共車輛和500名工作人員,將一萬多名學生送回各個校園。 [12]繼李鵬和趙紫陽在18日清晨看望絕食的學生後,重慶市委書記肖秧也來了。他冒著大雨,於19日凌晨2點看望了絕食的重慶學生,敦促他們注意身體,結束絕食,並承諾將打開對話的渠道。

這是北京宣布戒嚴前幾天重慶發生的事情的官方版本。王和侯所敘述的相同事件,在某些地方與官方的說法不同。官方版本試圖將這場運動描述為主要是 「學生」運動,它是有秩序的,沒有小規模的衝突。實際上,學生運動現在已經成為一場群眾運動,儘管遊行和集會普遍具有非暴力性質,但還是發生了幾次與警察的對抗。 18日,聚集在市政府外的人群砸碎了市政府的招牌,這一反抗行為具有充分的象徵意義,王和侯分別以激動的語氣向我們講述了這一事件。第二天,就像精神上的大壩被打破了一樣,一群學生和其他人一起衝進了市政府。但由於擔心當局會以此為藉口放開軍隊,而當時顯而易見軍隊正部署在城市的關鍵地點,所以人群沒有接管大樓。相反,他們開始佔領大門外的走廊。同一天晚上,警察抓住了十幾個高舉新工人團體旗幟的工人,把他們拖進市政府,徹底毒打了一頓,並在第二天將他們釋放。

按照承諾,市委確實在5月20日派了一個市級官員代表團與學生和其他抗議者進行了對話。但根據王先生的說法,抗議者本身過於混亂,無法進行適當的對話。他們沒有製定一個共同的綱領,也沒有一個具體的訴求清單。每個參與的學校和工作單位都只是派出了七八個代表,這些代表都是在草率的情況下,幾乎隨機挑選的。在指定的日子裡,包括王先生在內的兩百多名代表湧入市政府,而包括侯先生在內的一萬多人則在外面等候。

對話中提出的問題和觀點五花八門,完全不協調。學生們提出的要求包括:市政府責令電報局取消重慶示威者向北京學生發出聲援信息的禁令;重慶市政府應該發出自己的聲援電報;市委書記應該像趙紫陽那樣,而不是像李鵬那樣。王先生代表大學提出的一個問題可以看出學生訴求有多分散。前年,他所在的大學的學生為一個 「綠色」問題舉行了抗議:隔壁的一家工廠向校園噴灑有毒氣體。在爭端過程中,重慶市委書記肖秧親自來到大學,安撫學生。在他的講話中,他發表了一個聲明,大意是在重慶不存在官方的暴利行為。當時沒有人敢於挑戰他,現在,王先生想知道肖秧是否會繼續堅持他一年前的聲明。他還花了很多時間來要求澄清一起與建豪華酒店有關的著名涉嫌貪污案件。

廉潔從政是王先生和學生們的正義訴求,而職工代表的訴求則涉及工作保障、薪酬和福利待遇。 幾個小時漫無邊際的「對話」結束後,代表們再次從市政府湧了出來。 市委沒有給出具體的承諾, 一無所獲,沒有人滿意,抗議活動將繼續進行。

運動的曲折、學生的訴求,以及地方當局處理抗議者的策略,都與北京的運動一脈相承。抗議者和地方當局都向北京尋求方向。北京學生絕食,重慶學生也絕食。趙紫陽看望學生時,重慶市委書記也來了。北京學生取消了絕食,重慶學生也取消了。重慶的口號和小調基本上是從北京複製過來的。重慶學生甚至工人抗議的理由都是「支持北京學生」,為北京示威者籌集了金錢和物資。很多重慶的學生都渴望去北京擴大天安門廣場的隊伍。 1000 人自告奮勇,最終 170 人在火車站被興奮的人群送行。北京是麥加,天安門是卡巴清真寺。從隱喻的意義上說,地方運動並不是為自己而存在的。它為北京的運動而生。

然而,在這個「支持北京學生」的總口號下,地方性問題和特定社會階層的不滿情緒確實被提出來。王先生指出了幾起令大學生們激動抱怨的問題。在通過殘酷的競爭成功進入大學後,學生們發現自己不幸被束縛在一個令人難以忍受的僵化系統中,他們被當作機器中的無名齒輪,興趣和抱負都被完全忽視。此外,王先生說,學生們發現自己面臨巨大的經濟壓力。即使是那些領取政府津貼的人,在高通脹的情況下也難以維持生計。在1989年春天,僅食物一項的價格就高達70元人民幣,大約是半個月的平均工資,遠遠超過了學生的津貼額度。王先生報告說,他自己的學生發現他們是父母的一個主要經濟負擔。

學生面臨的另一個主要問題是畢業後的就業問題。事實證明,讓畢業生自己在勞動力市場找工作的新政策並不受大多數學生歡迎。許多人發現他們的處境比以前更加不利。至少在以前的制度下,畢業生自動從大學直接分配到職位,即使不是他們想要的工作,他們也能得到一份工作。現在,隨著近期大學畢業生就業市場的趨緊,一些人在城市就業中遇到了困難,尤其是女畢業生和來自農村的學生。從新制度中受益最多的畢業生是那些父母有權有勢或有良好關係的畢業生。一個旨在獎勵學術成就和技能的新制度,旨在取代一個容易受到特殊官僚關係影響的製度,但它本身很快就陷入了特殊主義的泥潭。學生們開始抱怨新系統比舊系統更不公平。 (在鎮壓抗議運動大約半年後,中國政府開始轉向以前的工作分配製度。)

然而,所有這些與學生生活直接相關的挫折感並沒有在運動中浮現。學生們把它們昇華為更崇高的目標,即反對腐敗和支持北京學生運動。通過這樣做,他們為重慶的其他團體加入他們提供了基礎。

學生的策略僅限於對黨的領導進行非暴力抗議,這為他們的運動提供了一種普遍的道德優越感。但據王先生說,堅持這一策略需要他自己和學生的其他導師付出一些努力。如前所述,一些學生傾向於重演紅衛兵運動。他們想以一種積極破壞性的方式發洩他們的挫敗感和憤怒。因此,校園裡出現了海報,呼籲將校長「拖出」並遊行以供公眾嘲笑。有人建議佔領廣播電台。在另一所重慶的大學,一群來自鄧小平家鄉的學生組織了一個「廣安聯誼會」,登上了前往廣安的火車。他們想挖掘鄧的祖墳,象徵性地將鄧小平逐出家鄉。但當他們到達鄧的祖村時,那裡已經有兩支軍隊重兵把守。學生們被捕了,據王先生所知,截至 1989 年秋天還沒有被釋放。

這些事件正中當局下懷,如前所述,他們在四月下旬已經採取了恐嚇策略,發出過可怕的警告,說抗議活動預示著文化大革命的混亂和暴力的回歸。[13]這樣的警告很容易讓所有曾經是紅衛兵暴力目標的官員和精英知識分子感到不寒而栗。在過去的二十年裡,他們對文化大革命的概念被一分為二,變成了狂熱分子羞辱和毆打像他們一樣的人的景象。意識到不適當的激進行為會使這一代老人團結起來,恐懼地反對示威者,王先生和其他教師試圖說服學生遵守更溫和的策略。王先生親自撕掉了那些鼓吹過度激進行動的學生海報,認為 「我們不應該偏離我們支持北京學生運動的主要目標」。

當局對幽靈般的紅衛兵的擔心也許並不是那麽不切實際。在過去的幾年裡,相當多的青少年和年輕人對毛澤東和毛澤東思想重新產生了興趣。王先生回憶說,1988年,重慶的舞廳開始播放毛主義的聖歌《東方紅》。大約在同一時間,許多學生開始對閱讀毛澤東的著作表現出興趣。由於鄧小平和黨已經下令否定文化大革命,學生們故意去尋找文化大革命沒有那麼糟糕的證據。他們緊緊抓住毛澤東在文化大革命中唆使被壓迫者起來與特權階層和權貴鬥爭的這一點,認為自己屬於腐敗的官僚體系中的被壓迫者,因此,儘管紅衛兵運動有過激行為,但他們認為這是一場正義的運動。在過去的幾年裡,收集文革時期毛澤東徽章的熱潮席捲了中國,這種徽章是紅衛兵曾經虔誠地收集的類型。王先生的一個朋友,一個曾與方勵志(一個最不可能被毛崇拜俘虜的人)一起學習的研究生,曾懇求王先生在重慶為他尋找這種毛澤東徽章。 1989年,許多這樣的徽章再次出現在抗議者的T恤衫和長褲上。[14]

親毛的熱潮中還有一個明顯的戰略因素。只要國家當局沒有否定毛澤東,毛澤東主義的旗幟就可以作為一面紅旗安全地揮舞,以攻擊鄧小平在1980年代的粉紅色旗幟。這顯然是約瑟夫·埃舍里克(Joseph Esherick)的論文中引用的當時非常流行的口號的效果,大意是:「毛澤東的兒子去了(死在)戰場上…… 鄧小平的兒子向所有人要錢」。毛澤東的語錄,如「凡是鎮壓學生運動的人都沒有好下場」,或毛澤東的評論,「鄧小平個子不高,但他的野心不小」,都可以揮灑自如地發揮作用。

工人的角色

生產工人大多以個人身份參加運動,很少作為工人隊伍走上街頭,高舉著標明自己工作單位的旗幟。那麼,他們在運動中是否發揮了任何重要作用?對這個問題有幾個答案。官方媒體故意淡化了他們的參與程度。當需要提及工人或其他非學術階層的重慶居民時,他們總是被描述為挑釁者,不知何故混入和平示威的學生中。除了兩名個體戶之外,在4月、5月和6月,《重慶日報》還報導了一些其他的逮捕事件。 5月4日,3人(1名農民,2名失業青年);5月20日,9人(據稱都曾使用過暴力;9人中有2人是前科犯);6月5日,5人因掀翻車輛被捕(據稱都是郊區縣的農民,其中幾人有犯罪記錄);6月10日,2名女工因試圖煽動抗議,要求釋放6月5日被捕的5人(據稱其中一人因從自己的工廠偷走布料已經受到紀律監督)。[15]在同一時期,據說沒有一個學生、知識分子或白領被逮捕,這一事實向重慶人民傳達了一個重要信息:當局可以容忍學生運動,但不能容忍群眾運動,任何生活在社會邊緣的人試圖利用示威活動煽動動亂的行為都會被無情地粉碎。當局似乎還試圖將任何公開表達廣大人民群眾的不滿視為非法行爲。

就抗議者自己而言,學生和知識分子對 「低層 」社會階層加入他們的抗議運動感到很矛盾。一方面,他們對工人沒有完全支持他們感到遺憾;另一方面,特別是在運動的早期階段,他們試圖讓工人和其他人保持距離,無論是隱喻還是字面意思。他們最關心的是樹立不受物質需求影響的無私理想主義形象,並通過開展嚴格的和平和溫和的運動來贏得當局的信任,他們在遊行和集會中把自己與圍觀者甚至是支持者隔離開來。 [16]但隨著抗議活動的增加,他們開始感受到民眾支持的熱潮,而且越來越明顯的是,成千上萬元的財政支持對他們的事業至關重要,他們開始考慮擴大基礎的好處。學生們開始在工廠里遊說,以尋求支持。

學生們最初的態度正中當局下懷,當局的噩夢是社會各階層的團結式戰線。當學生們試圖阻止其他人混入他們的遊行隊伍時,警察協助他們形成了一道人肉封鎖線。同時,工廠和其他工作單位也施加了巨大的壓力,警告工人和職員不要上街。胡蘿蔔和大棒同樣被揮舞著。工廠對在這幾週內堅持工作的人發放了大量獎金,而對那些離開工作場所上街或更糟糕的罷工的人,則威脅要進行懲罰。當學生們最終接近工廠與工人接觸時,警察和軍隊駐紮在工廠外,不讓他們進入。

工人們對這一切的反應是複雜的,他們很想加入,但又不敢,至少不敢以有組織的或公開的方式加入。作為工人,他們有自己的不滿,但學生們避免與這些不滿糾纏在一起。來自父母都是工業工人家庭的侯先生,討論了工人的情況:

工人們看得出來,參與運動受到了學生自己的嚴格限制,似乎工人們沒有資格參與。而從電視上的新聞來看,指責工人散佈謠言等,似乎工人是當局的專門目標。他們可以看到,對工人階級的判罰特別重。

此外,在北京,學生們提出的問題與工人沒有關係。例如,吾爾開希在他的演講中只談到了學生(吾爾開希和其他學生代表與李鵬的對話在包括重慶在內的全國電視上播出)。如果他也提到工人,以真誠的方式向工人呼籲,工人可能真的會大出風頭。 [17]

侯先生觀察到,儘管如此,有三種特殊背景的工人階級確實公開參加了大量的抗議活動。他們是:來自重慶的失業青少年,他們的隊伍在過去一兩年裡隨著中國經濟的降溫而膨脹;再者是所謂的 「盲目的流動人口」,他們主要由前農民組成,在80年代的繁榮時期受僱於城市建設工作,但在1988年中期開始的國家經濟緊縮政策下,他們被大量解僱;再加上那些因人員過多而被從工廠遣返的產業工人。這些工人主要是在重慶建立的大型軍工廠的僱員。現在,在鄧小平的領導下,對軍隊的預算削減正在迫使人們削減生產。但工廠並沒有直接解僱不需要的工人,而是向他們提供大約70%的「基本工資」,並要求他們留在家裡。 [18]讓這些工人特別不安的是,「基本工資」不是正常工資的主要部分,他們被排除在外的獎金現在佔工人實得工資的一半或更多。更糟糕的是,「基本工資」並沒有隨著通貨膨脹而增長。他們的生活陷入了困境,生活費少得可憐,而且他們的情況每個月都在惡化。由於沒有什麼可失去的,他們憤怒地擠在示威的邊緣。

有全職工作的工人則需要謹慎得多。正如侯先生所說,「他們太擔心了,不敢加入。畢竟,工人要養家糊口,如果他們因為參加運動而被解僱,就沒有辦法生活了。」因此,那些想表示支持的人傾向於在下班後單獨匿名地出來。由於無法加入遊行隊伍,他們聚集在市政府前的廣場上。

儘管工人階級有這樣的顧慮,但在廣場上確實出現了兩個打著旗號的市民工人團體:重慶市民聲援團和重慶山城工人聲援團。它們幾乎是自發產生的,吸收了任何有興趣和有膽量的人加入。但在重慶,沒有與北京的工人自治聯合會相對應的、圍繞工人問題建立的組織。 [19]儘管這樣,6月4日之後,當局公開指控幾個工人建立了這樣一個工人聯合會,並將他們逮捕,顯然是為了恐嚇其他工人。

對北京大屠殺的反應

在6月4日之前的一周,重慶的運動已經沒有動力了。當局利用鐵路貨物運輸和城市交通的中斷的機會,對日益萎靡不振的示威活動的「動盪 」展開了宣傳攻勢。但隨著6月4日的臨近,氣氛再次變得緊張起來。那天晚上,侯先生和他的朋友們在一台收音機前徘徊,第二天,他通過捐錢購買一台複印機,幫助向整個城市傳播這一消息。

這個城市再次震驚了。學生們開始了「空校運動」以表達他們的憤怒,彼此情绪激动地宣誓要到九月之後才返校。一些學生給學校領導寫信,宣稱他們要去向四川人民宣傳北京大屠殺的真實情況。還有許多學生離開重慶回家。留在重慶的學生與不是學生的人一起設置路障,掀翻車輛,封鎖火車。在大約兩天的時間裡,這個城市陷入了癱瘓。[20]然而,到了6月5日晚,當局市政府以當地經濟遭受巨大損失為由,說服那些封鎖鐵路的人結束他們的抗議活動,發出呼籲的語氣也相對溫和。抗議者的違法行為更多的是破壞了城市生活的正常功能,而不是暗示反革命的意圖。新聞界、王先生和侯先生都沒有報導任何暴力事件。事實上,王先生稱讚肖秧巧妙地處理了局勢。有傳言說,在對重慶高層官員的一次講話中,他將局勢的嚴重性降低了,將其描述為「無目的的亂動」,而不是北京黨內強硬派使用的標準用語「政治動亂」。

到6月6日,交通流量幾乎恢復了正常。[21] 為防患於未然,該市被置於武裝巡邏之下。[22] 為了響應當局的要求,郊區各縣各動員了200-300人的民兵隊伍。[23]

然而,市政府並沒有利用其掌握的力量,隱性警告被認為是足夠的。在北京大屠殺之後的兩週時間裡,王先生只聽說有幾個學生被逮捕,其中包括一個從學生運動的庫房中挪用資金的人。各大學的行政部門發出信件,命令學生回來參加年終考試,否則他們將被視為自願放棄學位。儘管他們發過誓,但據說到月底,95%的學生都回來參加了考試。[24] 由於預期學生會因前幾個月的干擾而獲得較差的成績,王先生的大學管理人員甚至分發了一份通知,敦促教師在評分時要寬宏大量,王先生欣然接受。

王先生對自己的情況感到足夠的安全,可以留在校園裡。不過,他被要求寫下他在運動期間的活動交代。他盡力不透露尚未公開的組織細節,但是那些負責人對他的報告並不滿意,王先生開始感到越來越不安。到七月底,沒有一個大學教師被逮捕,但有幾十個工人被逮捕。在電視上看到他們被毆打和羞辱的情景,使王先生感到非常不安。暑假到來時,他急忙離開重慶回老家待了一個月,當他在八月底回到校園時,政治氣氛已經惡化。肖秧在處理抗議者時相對寬鬆,用王先生的話說,是「趙紫陽式的」,他被重慶市委副書記,一個著名的強硬派取代了「調查小組」的組長位置。中央委員會剛剛發布了一份文件,指定了在徹底「剷除反革命的根源」的運動中應該針對的十九種人。[25] 王先生意識到,如果需要立靶子,他很可能作為組織者和策劃者被列入名單。當他的一個在運動中不太活躍的朋友消失在警方拘留所時,王先生決定是時候躲起來了。他成功地逃到了香港,一個月後他的妻子寫信說她要和他離婚以保護自己。

正如學生們沒能承受住壓力而改變了自己「空校」的想法一樣,侯先生也注意到,一些50歲以上的工人的態度發生了變化。他們更輕信政府的宣傳,並願意相信北京軍隊只是為了應對暴力挑釁才使用暴力的官方説法。也有一些人從來沒有贊成過遊行和集會,因為他們的生活受到了動亂的不利影響。而在六月之後,侯先生注意到,他們趁機開始公開詆毀抗議者。但侯先生說,也有一些年輕工人在感情上變得更加激進。他們私下里發誓,如果他們下次再上街,他們會有備而來,必要時武裝起來。暴力不再超出想像。

七月底,公安局要求侯先生過來接受審訊。公安人員對他出奇地客氣,問他做了什麼,捐了多少錢,等等。他被允許回家,但一個為公安局工作的「朋友」很快私下告訴他,他最好躲起來。侯先生溜出了重慶,前往廣東,然後去了香港。

即使是現在,侯先生仍然對他為什麼會成為鎮壓運動的目標感到困惑,他認為自己並不特別活躍。可以肯定的是,他和兩個年輕的個體戶一起出現過,他幫助籌集資金,也為運動捐了一些自己的錢。但他不是一個組織者,也沒有參與任何暴力活動。侯先生懷疑,由於他是抗議活動的參與者,他可能被挑出來,成為八月份即將發起的針對中國個體戶的運動的目標,該運動表面上是為了根除腐敗和逃稅。黨顯然在努力改變大眾的看法,即官員暴利的罪魁禍首是腐敗,通過宣傳個體戶的違法行為並重新集中對他們的怨恨。黨的領導人顯然在盤算,個體戶已經是知識分子和工人嫉妒的對象,針對他們的運動將很少引起人們的同情。參加示威的各個團體將相互對立。[26]

因此,全國范圍內也開始努力利用工人階級對知識分子的對立情緒。 1989 年夏秋兩季的報紙宣傳試圖強化藍領階層對毛澤東逝世後工人階級社會地位下降的不滿情緒。 文章還指責「資產階級自由主義」知識分子公然蔑視工人階級。

在這些宣傳工作中,黨的領導層一直急於抵禦1989年春天險些實現的噩夢:知識分子、學生和工人的大聯合,就像團結工會那樣。對於幾十年來一直將其合法性建立在聲稱代表 「無產階級」利益上的黨的領導層來說,這個噩夢中最可怕的部分就是工人的大規模參與。這在很大程度上解釋了當局六月後將工人階級的輿論轉向反對其他團體的努力,也同樣解釋了對那些敢於公開加入這樣一個聯盟的工人所做的嚴厲懲處的公開例子。

在與我們的討論中,王先生提到這些工人是六四後鎮壓的受害者。侯先生則提到工人和個體戶都是主要受害者。他們倆都沒有想到,還有一個群體在鎮壓中承擔了不成比例的份額,包括全國范圍內的大部分處決。這個群體包括失業者和「盲目的流動人口」——即那些湧入城市尋找工作的前農民。正如政府所希望的那樣,王和侯仍然急於把自己和自己的社會階層與社會地位遠遠低於他們的人分開。在我們的採訪中,當列舉在運動中被捕的人時,侯和王都沒有想到要包括他們,儘管媒體廣泛報導了這種逮捕。

鑑於這種感覺,當局的分而治之策略可能比前抗議者和西方學者願意承認的更有成功的理由。這對任何未來的自下而上的抗議運動都不是好兆頭。可以肯定的是,出現這種新的爆發的條件仍然是成熟的。白領階層和年輕工人的失望情緒太過普遍,對北京大屠殺的反感太深,以至於黨的領導層沒有多少機會重建群眾基礎。但不同的社會經濟階層在相互認識、怨恨和猜疑方面仍然存在矛盾。下一次群眾運動很可能再次因難以跨越這些鴻溝而受到阻礙。

堪培拉

1990年3月


[1] 統計來自《北京周報》第33卷第8號(1990年2月19日),重慶被稱爲「經濟綜合結構調整試點城市」(第18-19頁)。

[2] 關於公眾對個體戶的看法,請參見 Thomas B. Gold,’Guerrilla Interviewing Within the getihu’,在 Perry Link、Richard Madsen 和 Paul Pickowicz(編)的Unofficial China: Popular Culture and Thought in the People’s Republic (Westview Press, Boulder, Colorado, 1989),第 175-92 頁;還有 Anita Chan,’The Challenge to the Social Fabric’,Pacific Review,第 2 卷第 2 期(1989 年 3 月),尤其是第 122-26 頁。

[3]《重慶日報》,1989 年 4 月 21 日、23 日和 24 日。Joseph Esherick 和Andrea Worden 的章節中討論了西安和長沙事件。

[4]《重慶日報》,1989 年 4 月 23 日,第 3 頁。

[5] 據在成都一家報社工作的受訪者稱,這種報導通常被認為具有顛覆性,只有在報社最高領導層同意的情況下才會出現。相比之下,她所工作的報紙,她聲稱是由一個自私自利的官僚管理的,就幾乎沒有報導胡耀邦的死訊。

[6]《重慶日報》,1989 年 4 月 25 日。

[7]《重慶日報》,1989 年 4 月 4 日。

[8] 《重慶日報》1989 年 5 月 7 日報導,5月4 日,兩名個體混偽裝成北京大學生,「混入」學生遊行和罷工,發表顛覆性言論,高喊口號,聲稱他們被派來負責組織遊行和罷工。有趣的是,儘管報導​​存在負面偏見,但報紙報導的事實基本正確。

[9] 《九十年代》月刊,1989 年 12 月,第 15-16 頁。

[10]《中國日報》,1988 年 5 月 22 日。

[11] 《重慶日報》,1989 年 5 月 19 日。

[12] 《重慶日報》,1989 年 5 月 18 日。

[13] 例如,《重慶日報》1989 年 4 月 28 日的一篇社論。

[14] 另見香港《英文虎報》,1989 年 10 月 20 日;《南華早報》,1989 年 11 月 7 日。還有《九十年代》,1990 年 3 月,第 78-79 頁。

[15] 《重慶日報》,5 月 6 日至 23 日,6 月 7 日至 15 日。

[16]  這一點在本書中關於其他省份的一些報告中也有所提及。

[17] 類似的感受在兩名北京工人寫給學生的兩封公開信中也很明顯。見《中國民運原資料精選》第一輯(十月評論社,香港,1989),第67頁。

[18] 在另一組採訪中,兩名來自北京的工人階級背景的民主活動人士向我們表示,這種半就業形式在北京的國家工作人員中也相當普遍。

[19] 廣州的一位民主活動人士告訴我們,儘管他所在的城市確實有一個「廣州市工人自治聯合會」,但其主要組織者並不是真正的工人。他們擁有大學學位,並繼續在工廠和其他機構工作。因為他們不能加入學生或知識分子的團體,他們組成了一個「工人團體」。

[20] 官方統計數據顯示受損車輛的總數為 72 輛。《重慶日報》,1989 年 6 月 7 日。

[21] 《重慶日報》,1989 年6月7日。

[22] 《重慶日報》,1989 年6月11日。

[23] 《重慶日報》,1989 年6月14日。

[24] 《重慶日報》,1989 年6月27日。

[25] 19 種被定爲目標的人,見《九十年代》,1989年9月,第6-7頁。

[26] 關於全國反對個體戶的運動,見《中國之春》,1989 年 9 月,第 54-55 頁;《九十年代》,1989年12月,15-16頁; 《科技經濟導報》,1989 年 9 月 20 日,第 1 頁;《北京周報》,1990 年 1 月 22 日,第 4 頁。

Categories
All 算法

做題筆記:Remove Duplicates from Sorted Array (Java)

今後 Easy 題若沒碰到非常精彩的就不每題都更了。

題目描述:

給定一個按非遞減順序排序的整數數組 nums,就地刪除重複項,使每個單獨的元素只出現一次。元素的相對順序應保持不變。

由於在某些語言中無法更改數組的長度,因此您必須將結果放在數組 nums 的前半部分。更正式地說,如果刪除重複項後有 k 個元素,則 nums 的前 k 個元素應持有最終結果。除了前 k 個元素之外,留下什麼都不重要。

將最終結果放入 nums 的前 k 個插槽後返回 k值。

Example 1:

Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Example 2:

Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,_,_,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).

Stack 解法:

自己還是只能想出來蠢方法,應該刷題量還遠遠不夠吧:

class Solution {
    public int removeDuplicates(int[] nums) {
		Stack<Integer> Stack = new Stack<Integer>();
		int k = 0;
		for (int i = 0; i < nums.length; i++) {
			if (Stack.search(nums[i])==-1) {
				Stack.push(nums[i]);
				nums[k] = nums[i];
				k++;
			} 
		}
		return k;
	}
}

7 ms

利用順序的取巧方法:

class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 0;
        for(int n: nums){
            if(i == 0 || n > nums[i - 1]){
                nums[i] = n;
                i++;
            }
        }
        return i;
    }
}

1 ms

Categories
All 算法

做題筆記:Merge Two Sorted Lists (Java)

題目描述:

給定兩個排好序的 linked list list1list2 的 head。

將前兩個 linked list 的節點拼接在一起合併到一個完成排序的 linked list 中。

返回合併之後的鏈結串列的 head。

Example 1:

Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:

Input: list1 = [], list2 = []
Output: []

Example 3:

Input: list1 = [], list2 = [0]
Output: [0]

解法:

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode result = new ListNode();
        ListNode head = result;
        while (true){
            if (list1==null){
                result.next=list2;
                break;
            }
            if (list2==null){
                result.next=list1;
                break;
            }
            if (list1.val<=list2.val){
                result.next=list1;
                list1=list1.next;
            }
            else {
                result.next=list2;
                list2=list2.next;
            }
            result=result.next;
        }
        return head.next;
    }
}

1 ms

Categories
算法 All

做題筆記:Valid Parentheses (Java)

題目描述:

給定一個僅包含字符 '(', ')', '{', '}', '['']' 的字符串 s,確定輸入字符串是否有效。

有效的情況指:

  1. 前括號必須用相同類型的括號閉合。
  2. 前括號必須以正確的順序閉合。

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

暴力解法:

昨天半夜擼的,還是想不到什麽好點子:

class Solution {
    public boolean isValid(String s) {
        StringBuilder sb = new StringBuilder();
        sb.append(s);
        
        for(int i = 0; i<sb.length()-1; i++ ){
            if ( (sb.charAt(i) == '(' && sb.charAt(i+1) == ')') || 
                 (sb.charAt(i) == '[' && sb.charAt(i+1) == ']') || 
                 (sb.charAt(i) == '{' && sb.charAt(i+1) == '}') 
               ){
                sb = sb.deleteCharAt(i+1);
                sb = sb.deleteCharAt(i);
                i = -1;
            }
        }
        if (sb.toString() == ""){
            return true;
        }
        else{
            return false;
        }
    } 
}

79 ms,慘不忍睹。

Stack 解法:

Hint 中已經提到,應該使用 Stack :

class Solution {
    public boolean isValid(String s) {
	   Stack<Character> stack = new Stack<Character>();
	   for (char c : s.toCharArray()) {
		   if (c == '(')
			   stack.push(')');
		   else if (c == '{')
			   stack.push('}');
		   else if (c == '[')
			   stack.push(']');
		   else if (stack.isEmpty() || stack.pop() != c)
			   return false;
	   }
	   return stack.isEmpty();
    }
}

2 ms

Categories
算法 All

做題筆記:Longest Common Prefix (Java)

還滿難的一道題。

題目描述:

編寫一個函數來查找字符串數組中最長的共有前綴字符串。

如果沒有共有前綴,則返回一個空字符串""

Example 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Horizontal scanning:

自己嘗試的方法:

class Solution {
    public String longestCommonPrefix(String[] strs)
    {
        int size = strs.length;
        if (size == 0)
            return "";

        if (size == 1)
            return strs[0];

        Arrays.sort(strs);
        int end = Math.min(strs[0].length(), strs[size-1].length());
        int i = 0;
        while (i < end && strs[0].charAt(i) == strs[size-1].charAt(i) )
            i++;
        String pre = strs[0].substring(0, i);
        return pre;
    }
}

1 ms

Vertical scanning:

Solution 中提供的方法二:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) return "";
    for (int i = 0; i < strs[0].length() ; i++){
        char c = strs[0].charAt(i);
        for (int j = 1; j < strs.length; j ++) {
            if (i == strs[j].length() || strs[j].charAt(i) != c)
                return strs[0].substring(0, i);             
        }
    }
    return strs[0];
}

Divide and conquer:

Solution 中提供的方法三:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) return "";    
        return longestCommonPrefix(strs, 0 , strs.length - 1);
}

private String longestCommonPrefix(String[] strs, int l, int r) {
    if (l == r) {
        return strs[l];
    }
    else {
        int mid = (l + r)/2;
        String lcpLeft =   longestCommonPrefix(strs, l , mid);
        String lcpRight =  longestCommonPrefix(strs, mid + 1,r);
        return commonPrefix(lcpLeft, lcpRight);
   }
}

String commonPrefix(String left,String right) {
    int min = Math.min(left.length(), right.length());       
    for (int i = 0; i < min; i++) {
        if ( left.charAt(i) != right.charAt(i) )
            return left.substring(0, i);
    }
    return left.substring(0, min);
}

Binary search:

Solution 中提供的方法四:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0)
        return "";
    int minLen = Integer.MAX_VALUE;
    for (String str : strs)
        minLen = Math.min(minLen, str.length());
    int low = 1;
    int high = minLen;
    while (low <= high) {
        int middle = (low + high) / 2;
        if (isCommonPrefix(strs, middle))
            low = middle + 1;
        else
            high = middle - 1;
    }
    return strs[0].substring(0, (low + high) / 2);
}

private boolean isCommonPrefix(String[] strs, int len){
    String str1 = strs[0].substring(0,len);
    for (int i = 1; i < strs.length; i++)
        if (!strs[i].startsWith(str1))
            return false;
    return true;
}
Categories
All 技術 算法

做題筆記:Roman to Integer (Java)

題目描述:

將羅馬數字轉換為整數,具體規則略。

Example 1:

Input: s = "III"
Output: 3
Explanation: III = 3.

Example 2:

Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Example 3:

Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

自己的 Switch 暴力解法:

兜了好幾個圈……

class Solution {
    public int romanToInt(String s) {
        int num = 0;
        StringBuilder re = new StringBuilder();
        re.append(s).reverse();
        String[] split = re.toString().split("(?<=\\G..)");
        for (String i:split){
            switch(i){
                case "VI":
                    num = num + 4;
                    break;
                case "XI":
                    num = num + 9;
                    break;
                case "LX":
                    num = num + 40; 
                    break;
                case "CX":
                    num = num + 90; 
                    break;
                case "DC":
                    num = num + 400;
                    break;
                case "MC":
                    num = num + 900; 
                    break;
                default:
                    String[] sub = i.split("");
                    for (String j:sub){
                        switch(j){
                            case "I":
                                num = num + 1;
                                break;
                            case "V":
                                num = num + 5;
                                break;
                            case "X":
                                num = num + 10; 
                                break;
                            case "L":
                                num = num + 50; 
                                break;
                            case "C":
                                num = num + 100;
                                break;
                            case "D":
                                num = num + 500; 
                                break;
                            case "M":
                                num = num + 1000;     
                                break;
                        }
                    }
                }
        }
        return num;    
    }
}

意外發生了,本地 IDE 能跑出正確答案,但是在 Leetcode 上跑不出來,我竟然為這種問題浪費了不少時間,最終也沒解決……

正確精練的 Switch 解法:

class Solution {
	 public int romanToInt(String s) {
	    int nums[] = new int[s.length()];
	    for(int i = 0; i < s.length(); i++){
	        switch (s.charAt(i)) {
	            case 'M':
	                nums[i] = 1000;
	                break;
	            case 'D':
	                nums[i] = 500;
	                break;
	            case 'C':
	                nums[i] = 100;
	                break;
	            case 'L':
	                nums[i] = 50;
	                break;
	            case 'X' :
	                nums[i] = 10;
	                break;
	            case 'V':
	                nums[i] = 5;
	                break;
	            case 'I':
	                nums[i] = 1;
	                break;
	        }
	    } 
	    
	    int sum = 0;
	    for(int i=0; i<nums.length-1; i++){
	        if(nums[i] < nums[i+1])
	            sum -= nums[i];
	        else
	            sum += nums[i];
	    }
         
	    return sum + nums[nums.length-1];
	}
}

6 ms

運用 Hashmap:

class solution {
    public int romanToInt(String s) {
        Map map = new HashMap<>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
        
        int result = map.get(s.charAt(s.length()-1));
        for(int i=s.length()-2; i>=0; i--){
            if(map.get(s.charAt(i)) < map.get(s.charAt(i+1))){
                result -= map.get(s.charAt(i));
            }
            else{
                result += map.get(s.charAt(i));
            }
        }
        return result;
    }
}

Categories
All 算法

做題筆記:Palindrome Number (Java)

題目描述:

給定一個整數 x,如果 x 是回文數,則返回 true

回文數指一個整數向後讀和向前讀内容相同。

Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

算術解法:

利用 Java 整數倒序計算:

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        
        int ori = x;
        int p = 0;
        while (ori != 0) {
            p = p * 10 + ori % 10;
            ori /= 10;
        }
        
        return x == p;
    }
}

9 ms,超過 87.67% 的答案。

轉換為 String 的解法:

進階要求 Follow Up 竟然問了一句 Could you solve it without converting the integer to a string? 原來我想到的已經是進階方法了,常規解法是轉換為 String:

class Solution {
     public boolean isPalindrome(int x) {
         char[] nums = String.valueOf(x).toCharArray();
         int start = 0;
         int end = nums.length-1;
         while(start < end) {
             if(nums[start] != nums[end]) return false;
             start++; end--;
         }
        return true;
    }
}

19 ms,超過 19.48% 的答案。