博客列表 - 第 2 页

共 87 篇文章

海外诸国志·卷三·第二篇——骡

> 騾:騾馬也——《廣韻》 大明共和国东北部,有一座叫做青州的城市。青州沃野千里,都种麦子,一到冬春,绿油油的一片。北方人擅长养马养驴,当然,也擅养骡子,用来做农活。 青州的每个村子都有一个农业大队,里面会养一些骡子。**这些骡子虽然放在生产大队养着,但是几乎各家各户都认为其中有几头是自家的——曾经是自己的骡子,自家负责喂养,到时候需要用也是自家牵去用,只是养在农业大队的大院中而已。** 不过既然名义上是农业大队的骡子,大队的领导自然也会负责管理。麦坡农业大队的房队丞曾经是县里的太医署医助教,不知何故被贬到了这个地方。但是他以前只是管给人治病的小吏,现在虽然不入九品之列,但是却是一村之主,无人能管。只是村子实在没有是么事情,房队丞又是一个励精图治的人,不愿游手好闲,于是便折腾起村里的骡子来。 刚开始,**房队丞嫌这些骡子一年就干农忙几个月,平时也吃草料,只吃不干,也忒浪费。于是他召集百姓,让他们只要报告大队,就算不在农忙时节,也可以随时可以拉着骡子去干活。** 这条规定一出,村中老少都很欢喜,于是大家都把驴子喂的饱饱的,秋天收完麦子带骡子去驮果子,冬天又驮白菜,但凡有需要人力搬运的东西,都爱寻骡子来,大家都驮些东西去贩卖,甚至都让集市热闹起来了。 于是大家都觉得骡子多了好,于是疯狂的买起小骡子来。自古有得必有失,畜生吃得多,干的多,屙的也多,更何况现在牲口多了,马棚大小却没变。以前还算干净的马棚此刻飘荡着一股浓烈的味道,人闻都不忍,怎么能忍得住去看呢?而且骡子身上也乱糟糟的,大家也为此颇有怨言。 房队丞自然要提大家解难,于是他规定,不许让骡子到处乱屙,猫狗尚且能教会,骡子如何就教不会,**于是房队丞择了一个良辰吉日对着骡子高喊,不许随地大小便,不然就抽鞭子**!自然,这群畜生没少被抽。起初大家还觉得,抽的好,这群骡子浑身弄得这副鬼样,一定是吃好了犯贱,四出糟蹋,教训的对。 但是当大家看到自己的骡子被抽打的皮开肉绽的时候,不免又动了恻隐之心,可惜对于畜生,大家又有多么上心呢?挨了许多日的毒打,骡子到也变得安分起来了,这群畜生习惯去指定的地方排泄了,但是凡有随地排泄的骡子,反而会收到更严重的鞭笞,整个村子的上空都盘旋着骡子被抽打时痛苦的嘶鸣。 正巧,这年又是一个大丰年,大家都拉着自己的骡子去田里干活,**让骡子驮着累累若小山的袋子,或者拉着轮子深深陷入地面的车,行走在阡陌之上,昼夜不停,全然不在乎这群畜生身上满是被抽出来的伤口**。 经过这一番折腾之后,村中的牲口官一清点骡子的数量,发现甚至比房队丞来时更少。房队丞一下子焦躁起来,一下子死了这么多畜生,似乎略显得自己的不称职。**为了显示出自己敬业,他又呕心沥血想出了一个十分`科学`的方法,为什么不让这些骡子交配产子呢?于是,一场轰轰烈烈的催产运动开启了** 骡子不愿意交配?那就将公骡子与母骡子关在一个小围栏中。骡子生不出来?那就抛开肚子给接出来。骡子要是不吃软的,那就来硬的。总而言之,就是必须让骡子多多生产。这种做法,却不是人人都能理解的,有些人理解了房队丞的良苦用心,有些人却心疼骡子仍是生灵,不忍残害。 只恨苍天何薄,由于房队丞将两头骡子扔在一小块圈里,骡子屎尿无处,最后一种恶疾在骡子之中流行开来。得了这种病,骡子虽然不会一命呜呼,也不会变得形销骨立,但是却会变得真真切切的完全无法受孕。 正在催产的房队丞怎么能容忍这种事情?**于是房队丞这次召集了乡亲们到农业大队的大院中,不知道是对人喊还是对骡子喊:“为了防控时疫,保护更多的骡子免受其害,凡是染病的骡子,一律杀死!”** 但是对于百姓来说,骡子本就无法生育,而就因为一种让骡子无法生育的病,就把骡子杀死,这也太糟蹋了。于是房队丞又搬出什么流疫或许还有其他病状,流疫或许会让人染上之类的理论,封住了乡亲们的嘴。但是随着栏中的骡子越来越少,骡子被管制的原来越重,很快,农民和骡子居然站到了同一条船上。 **终于,在一个<font color=red>伸手不见五指的满月之夜</font>,每天吃着苦药的浑身裹着白布的三月没有出过马棚的骡子们,在<font color=red>皎洁的月光下</font>将房队丞踏到坚硬的蹄子之下**

海外诸国志·卷三·第一篇——铎

# 海外诸国志·卷三·第一篇——铎 > 鐸:古者將有新令,必奮木鐸以警衆——《周禮·天官·小宰》之《注》 莲花县是大明共和国的沿海县城,县令姓李。 李县令似乎励精图治,大明律中规定,各地官员办案之日,一侯不少于一旬[^1],而直隶总督规定直隶各地官员,五日一休,到了东海郡,郡守要求十日一休。至于李县令,他令自己每日办案,从无休假。 李县令也非常民主。大明律规定,每个公民都有权参与国家事务。而直隶总督规定,各级官员升堂断案都需要有民众监督。到了东海郡,郡守要求各县必须抽取一部分人参与升堂。至于李县长,他令莲花县已冠未知天命[^2]的所有人都必须每日到县衙参与升堂。 所以每日县衙周围都人头攒动,县尉每日都领着几千军士维护秩序。于是莲花县不仅能够聚集数万市民参与县政,还能让其秩序井然,县令真真的是清官明吏。 于是莲花县的一天从县令的升堂开始。 ## “升堂!” 升堂的时间,自然是在日出[^3],若是夏季还好,但此刻是冬季,天气寒冷,甭说日出,都没有平旦破晓的迹象。甲兵举着火,催促百姓来到县衙,似乎是有些不好受。不过百姓到这里是行使自己的政治权利,似乎也值得。大家受了一早上的冻,回到家中,燃起将熄的炉子,钻进被衾中继续睡,毕竟冬天没法种地。 ## “升堂!” 升堂的时间若是在冬季,似乎不影响农务,但是如果在春季,百姓每日需要耕地除草灌溉播种施肥除虫,每日忙不迭,而县令此时似乎需要更长的时间断案。 百姓自在县衙外议论。 “这么长时间了,这又是啥案子?” “听说是张三家的牛被李嗣抢了。” “这还用断?俺亲眼看见李嗣那天牵走了张三家的牛。而且李嗣本来就不种地,哪来的耕牛啊?” “哎,不能这么说,李嗣毕竟是县令的侄子,而且我听说昨天晚上李嗣就去县令家……” 这时在这群人旁边的军士抖了抖自己身上的盔甲,将长枪往地上一戳,“保持安静,不许多嘴!” 堂中县令开始断案了,“堂下何人,有何冤情?” 粗布短褐的人首先开口:“青天大老爷呀,青天大老爷,小人张三,家里有一头耕地的牛,昨天本来打算牵着牛去耕地,刚出家门忘了拿中午的干粮,于是回去拿,就这一刻的工夫,李嗣就牵着俺家的牛要走,俺上前阻拦,反被他家丁一顿毒打,小民实在委屈,请老爷明断!” 李县令转头看向李嗣,厉声道:”李嗣,你可知罪?“ 李嗣磕了一个头,”老爷,冤枉啊老爷,这实在是我家的牛,是张三诬告!“ 李县令举起惊堂木,狠狠地拍到桌上,”你们二人,各执一词,不必多说。本官自有办法查明。左右,牵牛来!“ 很快一头健壮的黄牛就被牵到了县衙的院子中。 县令问李嗣:”你说这是你的牛,你可说明这头牛的牛左后腿是什么颜色?“ ”回大人,是褐色!“ 这时堂外的官吏对堂高喊:”大人,是褐色!“ 县令转头问张三,”你说这是你的牛,你可说明这头牛共有多少根毛?“ 张三抬起头,左右张望了一番,望着太守,欲哭无泪,“这……这……小人着实不知啊!” 县令又猛地摔了一下惊堂木,“大胆张三!胆敢诬告他人!来人,给我拉下去痛打五十大板!” 在张三的一片喊冤与哀嚎声中,李嗣悄悄地凑近李县令,”叔,说好的左后腿,今日就给您送到府上。“ ## ”升堂!“ 如果是在春天,在太阳下站一会似乎还是一件挺舒服的事情,而现在正当盛夏,太阳洒下毒辣辣的光,这样站着人汗流如雨,实在有点不体面。县令依然在堂中办案,大家每天都在乞求快点结束。 但是今天并不太炎热,因为天空乌云如墨,似乎要下大雨了。 虽然不甚炎热,但是农民却更希望快点结束今日。因为麦子都已经熟了,如果不赶紧收割贮存,一旦淋雨,一年的收成就这样毁于一旦了。 但是太守讲的正酣,此时大堂带上了一个衣衫褴褛的人,身上处处结痂流血,体无完肤,脸上乌黑,浑身上下只有一双眼睛还是白色的,死死的盯着前方。 太守从堂中走出,面向诸位百姓,指着这个血淋淋的人,大声喊道:”乡亲们,看看这个人,昨日升堂议事,他竟然敢自行逃走!我大明素来以民为贵,尊重各地百姓的意见,这是多么宝贵的机会!此人,非但不珍惜,反而逃走,实在是有违大明律令,不尊重我们的朝廷!可耻可恨!大家看好了,这就是对抗官府的下场!我李某自从去年当此县令,素来勤政爱民,我今日饶他一命,让他回去,接受教育,往后爱国为民,为大明贡献自己!“ 太守慷慨的讲了一刻钟,没有要停止的意思。但是天公不作美,此刻突然下了倾盆大雨。太守忙回到大堂,而一群百姓虽然心急如焚,却不敢走动。兵士各个严阵以待,守在四周。 这是主簿在县衙的偏房喊:”乡亲们,大家来这份赞颂李县令的表上印上手印再回去,大家不要着急,排成一队,都按完再走!“ ”第几次了?“人群中一个人悄悄地问。 ”谁知道呢?起码七八次了吧“ ”我的麦子,麦子,你们还关心这个!“ ”行了,别再说了,看见那个人没有,血还没干呢!“ ## ”升堂!“ 若是夏天,飞禽走兽草木果实还有许多,大家搜罗搜罗还能果腹。但是如今已是深秋,各家早无余粮。不说余粮,就是树皮野菜,此时也都没有了。此时大家面黄肌瘦,一脸的饿相。路上已经有几具饿殍了。今天似乎没有太多事务,李县令笑眯眯的接受了钱老板送的”爱民如子“的匾额,大家在莲花县人民丰足的奏章中按下手印,今天就退堂了。 **今天没有升堂。** **今天没有升堂。** **今天没有升堂。** **今天没有升堂。** **今天没有升堂。** [^1]: 一侯15日,一旬10日 [^2]: 人20而冠,五十而知天命 [^3]: 日出是指五点

海外诸国志·卷三·第三篇——印

# 海外诸国志·卷三·第三篇——印 > 印:執政所持信也——《说文解字》 承殷民是一直在京畿港口沽口做买卖的布商,细数起来他家的承实布坊的历史甚至要比大明共和国更长一些。他家多世经营,虽然历经风雨,家业已大不如从前,但是所幸如今布店的生意非常红火,现在的布店掌柜承殷民也是诚实君子,沽口市民都愿意光顾他的店铺。 直到有一天,两个官差登门,神态凶狠,挤开看布匹的百姓,随手抓起两块布检视一番,又扔了回去。其中一个高个子的官差喊,“这里的掌柜呢?赶紧出来?” 承殷民急匆匆的从后院过来,做了个揖,“二位官员,来小店何事呀?” “营业许可有没有?”矮胖的官差问。 承殷民抬起头来看了看,犹豫了以下,”这……小民小本经营,素来没有听说过什么经营许可呀。“ 高官差做出一副愤怒的神情,”什么?没有经营许可你也敢做生意?“ 承殷民吓得连连摆手后退,这时一个老太太拿着一块布过来,”官爷您看,这承老板一向是童叟无欺的,布质量好,价格也公道,您行个好,啊。“ 高官差一把夺过布,扔到老太太的脸上,导致老太太一个踉跄,差点摔倒,所幸有人在后面扶了一把。 矮胖官差对承殷民说:”得了,你赶紧去府伊处办一张经营许可,办不出来,你这店就甭开了!“ 于是,店中顾客便全被赶出去,店铺大门也被”砰“的关上了。 承殷民万分无奈,只得去府伊处办理经营许可。承殷民不敢怠慢,星夜进京,第二天一早便去拜见府伊,府伊听明来由,笑了笑,**“我素来不执管经营,此事属盐运使司大人分管,你可去问他。”** 于是承殷民急忙又去寻找盐运使司,使司大人看到承殷民,厌烦的说:**“你从哪里来,回哪里去,让你们那边的盐运司库大使给你文书之后再来找我。”** 承殷民四处碰壁,只得怏怏回家。但是他又焦急难眠,打定主意,明天天一亮就去寻司库大人。第二天才刚鸡鸣,承殷民就急匆匆的去往盐运司库大使处。不想到了之后,司库大使一脸不爽的问:**“你有没有食品质量证明?食品安全证明?合法经营保证书?合理竞争保证书?反垄断证明?……”** 一串词汇听的承殷民头晕目眩,他都不知道自己当天是如何退出司库衙门,又是如何回到家中,他脑子里全都是布匹怎么样才能过视频安全检验,怎么样才能让竞争对手为自己签合理经营证明…… --- 夫人见他如此魂不守舍、闷闷不乐,就问“相公可有什么烦恼,能否说出来让我替你分忧?” 承殷民就将今日之事和盘托出,捂着额头恸哭,捶胸顿足,”我承家几代家业,毁于一旦呀!“。夫人听了,灵机一动,对承殷民说:“之所以如此,不过是他们这些狗官相互推卸,我听说当今县丞的家父与相公的祖上曾是至交,不如找他说情,让司库大使速速办出文书,或许可以成事呀。” 承殷民此时犹如醍醐灌顶,激动的抓住夫人的手,高兴的说:“还是夫人冰雪聪慧,好,就依夫人,就依夫人!” 第二天,承殷民又是早早的去找县令,得到应允的信件,又兴奋的跑去盐库司处,希望赶紧办妥此时。司库见到县令来信,倒也未曾耽搁,**速速拿出了一份《百货经营证明书》,交给承殷民,”你先去找府伊与使司大人签字,若是他们签字,我自当签字。“** 于是承殷民又星夜前往京城,他在客栈里辗转难寐,自己这些天四处奔波,着实辛苦,眼看胜利就在眼前,怎能不兴奋呢?”我终于要拿到许可了,这样也儿孙也无愧祖宗吧!“ 于是他先去访问府伊,在府外炎热的天气下苦苦等待了五个小时,终于得见府伊,可喜府伊为人正直,虽然对此事感到不悦,却也依然给签了字。于是承殷民又兴冲冲的到使司大人处。 使司大人虽然公务不算繁忙,很快就能拜见,但是使司却不太愿意签字,至少不太愿意无偿签字。**”本官一向为官清廉,不取百姓分毫。无奈这府中公事繁忙,一年到头损耗颇多,府中连一竿好使的笔都没有,这签字呢,又多费笔墨,哎,这让本官非常头疼呀。你可知道本官的良苦用心?“** 承殷民忙说:”明白明白!“随即从怀中掏出一个系的紧紧的包袱,一层层剥开里面装着一大包白花花的银子,双手奉上。 使司笑逐颜开,让官吏速速将银子取来,咧着嘴说:“哎呀,我作为共和国的官员,理应不辜负政府的信任,怎么能受贿呢?可是念在你一片好心,愿意资助政府,我就领下你的好意了,哈哈哈哈。“紧接着,低头提笔,潇洒的签下了他的大名。 虽然损失了不少钱财,但是承殷民想到自己的店铺即将开张,心里还是兴奋的。于是他又连夜赶回了沽口,第二天一早,就去找到司库大使,高兴的将证明交给司库。**可惜司库不在,库吏让承殷民先将文书留下,等司库回来,确认无误就将经营许可送到府上。** 于是承殷民非常喜悦的离开了。 他前脚刚刚跨过库衙的门槛,库吏就慌忙报告司库,”大人,他走了“。 司库这是弹弹衣服,阔步走到府上,问,”让你们办的事办好了吗?“ ”办好了“ ”哈哈哈哈哈,好!知道我为什么不给他“布匹经营证明”而给他“百货经营证明”吗?百货证明难办,而布匹经营证明容易,我拖延他时间的功夫,已经派人把沽口百货店最后一个名额占住了,哈哈哈哈哈!“ 库吏一揖,”司库大人神算!“ --- 正当承殷民与夫人把酒言欢之时,库吏登门,承殷民惊喜迎接:”上官亲来辛苦,如蒙不弃,先来寒舍小酌两杯淡酒。“ 库吏没什么表情,”不用了,我奉司库大人之命,特来告知,百货店数量已满,所以你的店铺经营许可不予发放。“说完,转身便走了。 承殷民听说这话,紧紧的握着手中的酒杯,额头上的青筋都可以清晰的看见了,他头脑中再没有其他想法,只能感受到手中的酒杯。陶瓷的杯子,怎么能被人握碎?但是这个杯子,却被这个孱弱的商人,握成了齑粉。 这天晚上,月亮缺了一块,在月光中,一个人将自己的脖子放到了挂在房梁的绳子上。<font color=red>巨大的声响惊醒了床上的另一个人,她慌忙割断绳子,扶起自缢者,两个人相拥痛哭起来。</font>

海外诸国志·卷三·第五篇——锥

# 海外诸国志·卷三·第五篇——锥 > 夫贤士之处世也,譬若锥之处囊中……使遂蚤得处囊中,乃颖脱而出,非特其末见而已!——史记·平原君虞卿列传 ## 壹 马车的声音震落了清晨的露珠,拉车的马是两头结实的好马,而车却是粗糙的木板车。驾车的人是一个身材与五官都很标准的男子,车上装着几个箱子、许多捆起来的布匹与一个神情黯然的姑娘。 马车驶进一个村子后慢了下来,最终停到了一户人家面前。男人走下来,拆开篱笆上小门的门栓,同时,一个老汉从堂屋中探出来,男人望见他,热情的喊了一声: “爹!” 老汉的神情顿时变得放松,朝屋里叫唤,“他娘,儿回来了!”。老汉先出门迎接,一会一个老妇人也趋庭而来。 “哎呦,槛儿,还有翠云,今个怎么回来了?快进屋坐,坐!”,边说边挺身扶车上的女子下车。男子从车上拿下几匹布,“掌柜这次差我去运送布匹,正好路过咱们这边,我寻思顺便来看看您俩,顺便捎几匹布回来”……一家人相处的时光应当是欢乐的。 可茶水没喝几杯,男子便起身去,托词道:“刘构上次托我给他带点东西,我先去给他送去,一会回来。”说罢,便匆匆去找他这位铁匠朋友。 ## 贰 村子里这位铁匠是周围几个村有名的巧手,继承了他爹的手艺,打的农具结实又顺手。这天他依然是奋力挥锤打铁。“狗子!”熟悉的声音呼唤着他的诨名,他抬起头,看见刘槛站在他的面前。“哎,刘大,你咋来了?去后面一坐,我给你倒杯水,整好我也歇一歇。”说罢,他停下了手头的动作,擦了擦汗,完成了这块锄头的收尾工作,然后坐到了刘槛的旁边。 “兄弟,你啥都能打吗?“ “当然,哥是谁啊!” 刘槛看了看四周,握住他肩膀,轻声说,”你会铸剑吗?” 他听了这话,短暂的怔了一会,轻声回答:”我还真没做过这玩意,再说,我也没有证啊,官府不让造的。“ 刘槛听罢思索了一会,继续问到:“狗子,那你肯定会造锥子吧?你就帮我造一把更细更长的锥子,不需要多耐用,但是一定要锋利,最好两边能开刃。”说完拿出来一块银子,推到他的手心里,“这些够吗?”。 他颠了颠手上的钱,沉甸甸的,他小心的问,“哥们,这是咋了?这么多钱,都够去城里打一把了吧?这是有啥想不开的?”。 刘槛松开他的肩膀,“兄弟你有所不知,这次掌柜让我去送货,之前押货的伙计伤着了。我听说最近这一路上不太太平,我走的急,没东西防身,这不就想……”刘槛盯着他,“我明天就该赶路了,这事还挺急的,你看到晚上能不能打出来?” 他对望着一直以来的好友,又捏了捏手上的银子,“兄弟你放心,天黑你来取就行了。但是这钱太多了,我不能要。”说罢手摊开伸了出去。 刘槛连忙握住他的手给他推了回去,“狗子,钱少了我不放心。掌柜的说,事成之后给大钱呢!你就按这些钱的质量打就行!” 刘槛跟狗子吩咐完,又赶回家去。而他则停下手头的农具,专心打造自己出产的第一把“剑”,最终他望着这个长3尺余,尖锐非常,一侧开刃并且还带着一个木制剑柄的三角形“锥子”,擦了一把头上的汗。 ## 叁 刘槛第二天带着剑、布匹、箱子和女子,从家里出发,绕了一条路又返回了城里。将车上的东西打点好,还了马车、马匹、箱子和布匹,带着剑和女子回到自己的家中。 没错,他对所有人都撒了谎,除了自己和眼前的这位女子,谁都不知道事情的始末。 他将剑藏在卧室的柜子顶上,用麻布盖住。那个女子还是坐在床上看着他做完这一切。 ”夫君,我们为什么还要回来?“听到妻子的呼唤,他转过身来,牵住妻子的手,”翠云,我的工作与家业都在城里,若会到村里,又要到哪去找这样赚钱的工作呢?更何况回去之后,你就不仅得收拾家内,还得照顾公婆、纺纱织布,必然会委屈劳累许多。更何况你已经有了身孕,留在城中,也更好找人给你接生。“说罢,他用手轻轻抚摸着妻子的肚子。显然她还在妊娠的初期,小腹只是微微的隆起。 她将丈夫的手贴到自己的脸上,轻轻的抚摸,一颗泪滴到了这只手上。”夫君,他们可是官府的人,上次就对妾身百般侮辱,若不是妾身哄骗吓唬他们,恐怕已经被他们……“,她抱住他的胳膊,啜泣起来。他抚摸着妻子的头发,安慰道:”不要担心,翠云,我这次跟狗子要了一把宝剑,若是他们敢来,我一定跟他们豁出去,要他们有来无回!这些狗腿子,谅他们也不敢这么欺负人!“她听到丈夫的坚决,用胳膊搂住丈夫的脖子,将其拥入怀中。刘槛感受到妻子的泪水流到了自己的脖子上。他心疼的抱住她,全神的感受着自己最珍重之物在自己怀中这温暖的感觉。 ## 肆 刘槛在妻子身旁守了几天,已过接近一旬,他和妻子都懈怠起来。于是,他回归自己工作了。日子一天天过去,翠云也渐渐的认为风波已平,展眼过去半月有余了,她胆子也大了起来,也敢自己去上街买菜了。 这种专横擅权鱼肉百姓的官吏都该死绝,也一定会死绝,不是吗?也许他们已经伏罪受诛了呢? 善良的人总会这么想。这天翠云买了丈夫爱吃的一家大饼,又买了一些猪肉,准备给辛苦一天的丈夫做爱吃的饭菜。她走进家门,正准备将门锁上,却发现门被人拽住,她丢下篮子,用尽全身力气想去关上房门,却无奈一个瘦弱女子怎么比得过彪形大汉的力气。门被无情的拽开,一胖一瘦两个官吏走了进来。 ## 伍 刘槛觉得今天心神不宁,他做完工作就匆匆赶回家里。他也不知道为何他会如此心慌,胸口好像被大石压住,沉闷喘不过气来。他急匆匆的走,额头上冒出了细密的汗珠。他走到了他家的那条街,心更是怦怦直跳,他深深地吸了一口气,继续朝着家的方向走,快到家了,他告诉自己。但是他好像听到了女人的尖叫,他心里更慌乱、脚步更快了。他越来越近,声音却更清晰了。他的感到有点眩晕,太阳穴附近的青筋凸现出来,额头上豆大的汗珠正往下流淌。 “肏!” 他爆发出了一声呐喊,双腿如同生风,疯一般的重进自己的家门,他看到地上散落的物品,听到自己妻子痛苦的呼喊。 砰!他推开了寝室的房门,那个瘦的官吏一把拽住他的衣服,将他甩到了墙上。 砰!他后脑勺撞到了墙上,他感觉有点眩晕,睁开眼睛,一把明晃晃的大刀在以及的眼前晃悠。“小六啊,把这个王八蛋子给我看好了!”胖子回头对着瘦子说,随后继续将自己的阳具捅入翠云的身体。 砰!瘦子拽着他将他推到柜子与墙形成的角落,摁住他的身体。柜子摇晃了一下。他努力将脸别过去,他望到了一头肥猪,骑在自己心爱的女人身上!他继续往下看,他从下看,翠花的下面白色与红色的液体交杂着,身上有好几处伤痕,他看向她的脸,泪水与口水、汗水交杂着。他从未见过她这么狼狈的模样,她还想呼喊,她张着嘴,但是已经喊不出什么来了。她的头发凌乱,有一部分被沾湿了。他望着她的眼睛,已经没有一点神采的眼睛,这双眼睛忽然注意到了自己,于是它终于像活着一样,转动了一下,望着他,一点点光芒闪耀着,两颗泪水淌了下来。 砰!他的脑袋仿佛被人用万斤的石头砸中了一样,耳鸣在他的颅骨内轰炸。他想要移动以及的胳膊,但是却被紧紧的钳制住。“老曹,你快点!”瘦子显然已经快要没有了耐心,他回过头去,催促老曹。刘槛觉得自己胸口的压力变小了,他活动着胳膊,反手摸到了柜子上的那柄剑。刷啦,剑被抽出来了,瘦子感觉到自己的胳膊受到了一股力量的冲撞,他赶紧转过身去,映入他眼帘的是一个眼眶通红的男人与一柄造型奇特的剑,他被撞开了,紧接着是腹部感到一股清凉,胖子听到异响转过身去,一柄串着瘦子的剑正在向自己刺过来。 砰!刘槛应该是用尽了此生全部的力气,瘦子和胖子两个人被一柄剑串了起来,撞在了一起。血液从胖子的嘴角流出来,他动了动手指,想要说什么。身上已经沾满了鲜血的刘槛愤怒的咬紧了牙,使劲将这把剑往开刃的那个方向拽。那个胖子露出了痛苦的神情,从肚子中流出来了各种各样颜色的东西,随后两个人都咽气了。 翠云从胖子的身下奋力爬了出来,握住剑柄的刘槛还在喘着粗气,他悲痛的看向自己的妻子,伸出了自己的手。她握住了。两个人的手上都沾满了鲜血。她艰难的直起身子,眼泪不住的往下流。 “去洗个澡换衣服,翠云,我们一块逃走!” 她摇了摇头,咬了咬自己的嘴唇,忍住眼泪,挤出了一个微笑。她紧紧的握住他的手,向前奋力的移动着自己的身体。 “翠云?你想干嘛?翠云!” 她猛地用力往前一探,锥子穿过了她的身体。

海外诸国志·卷三·第四篇——朱

# 海外诸国志·卷三·第四篇——朱 朱教谕是前朝著名理学家朱苳之后。一方面,他因自己祖上是朱子而感到自豪,另一方,又对自己才当一个小小的教谕感到不满。他觉得自己好歹也得当一个国子监祭酒——虽然他或许不关心和他同辈的朱子之后已经有几百人——如今的祭酒出身庶民,他十几年的寒窗苦读怎么能赶得上我作为朱子之后的无上荣光? 朱教谕最常想的一件事就是我们今天的教育出了什么问题。他是一个愤世嫉俗的人,常觉得自己怀才不遇。我们今天的教育,一定有很大的问题——随着今年秋试的开始,他更加肯定了他的这套理论。 朱教谕是当地秋试的考官,大明共和国的秋试只考作文,当年的题目是: > 我国近年来推行‘民主监察’制度,国家坚持人民至上、民主至上,大力推进监察错失,全国人民积极参与。 > 人们来到衙门,进行听证和监察;茶楼酒肆兴隆,远行商旅暂停,春耕秋实有序推迟。监察听证使人们变得更集中。 > 县令乡甲,自愿接受听证;军旅接受调度,守卫百姓安全;衙门断案办事,坚持依法而行;大小人事财政,一律公开透明;四方人民百姓,大力赞美政策。‘民主监察制度’使人们变得更自由。 > 请综合以上材料,以“民主检查的集中与自由”为题,写一篇文章。 朱教谕看着这个题目,心情大好:这样中庸的题目,真的是有圣人的才能才能想的出来。我祖上朱子,大力推行圣贤之道,最终总结出了天下都接受的唯一的解释。就因为这样,国家才有机会推行八股文这种完美的体裁。八股,多么美丽的数字,从头到尾,层层递进,前呼后应,详略得当,多么的整齐,多么的符合中庸之道。而这个题目,完美的符合了八股文的行文思路,考生一定得写出完美的八股文才能对得起这个题目。 看完题目,朱教谕开始阅卷,朱教谕阅卷有自己的一套规范——虽然大明共和国大多数考官都是这样做的——从头到尾看下去,八股之中,一股都不能出纰漏,如果出现纰漏,直接判为不合格,不再往下看了。 有一些朱教谕之看了破题就受不了了,什么“监察听证是有利于人民的好制度”,这哪有点破题目的集中与自由;什么“监察听证有许多的好处,但是也导致……”,居然敢妄评国政;甚至还有“民主检查的集中是”,直接进入承题,根本无法接受。到了承题,朱教谕还是继续上火,凡是不讨论“集中是为了自由”这一观点,自然都被朱教谕朱笔一挥,扫出孙山。 自然,后面几股,不合朱教谕意思的考卷,自然都被淘汰。不过只是八股写的不标准,还是小事,更令朱教谕恼火的是居然有人胆敢写八股之外的文体,凡是不和八股的,朱教谕甚至懒得过目,随后放到一边。而“之乎者也”之类的散文,朱教谕看不懂这是怎么意思,也懒得看这是什么意思,愤愤的讲它扔到一边,而写诗文的,则直接被扔进垃圾桶,还要吐上一口唾沫,表达朱教谕对这般风雅的嫉恨。 当然,这些问题也不算最严重的,最严重的当然要属原则上的错误。原则上的错误,最基础的就是评论时政。八股文虽然要有政治,但是政治不是去议论的,而是去论述与赞美的,一定程度上,作文就是看赞美的水平,如果赞美的不够优雅与真挚,就是没有将自己的怨恨埋在心底,口是心非。更严重一级的呢,当然是与主流价值观不符,俗称就是腿是歪的。就拿民主听证制度来说,如果这两年来赞美,当然就是符合主流价值,如果前些年说呢,自然就是不符合主流价值。毕竟价值是流动的嘛,变一变也不奇怪。更进一步的问题是对政府的批评,如果胆敢批评政府,那么一定会被揭开密封性,禁考三年。<mark>比这更严重的是对目前当政的湘派的冒犯</mark>,至今已经掌权近百年了,如果有什么含沙射影的文字,必然会被拘禁教育。<mark>最最严重的错误呢,当然是对当今总统不敬</mark>。当今总统名叫董远凹,总统自然是人民选出来的总统四方天下的人物,姓名的自然要有所避讳。故而三字都是讳,若是谁胆敢冲撞了总统的名讳,免不了牢狱之灾。 虽然没有明文规定,但是在朱教谕心目中,自己的祖上朱子也是不可冒犯的,如果冒犯了朱子的名讳,自然也和上述错误一等,直接除去名字,如果别挑出刺来,还要被禁考三年,当然,还要忍受朱教谕将唾液吐到自己卷子上的刑法——虽然在多数情况下考生并不知情。 不过令朱教谕感到比较欣慰的事情是有十几篇文章写的非常得体,文字流畅,八股明确,点抹有道,深深的博得了朱教谕的欢心。虽然这十几篇文章大同小异,如同出自一人之手,但是朱教谕丝毫不在意。毕竟是得到了圣人真传,深喑中庸之道,既然是出自朱子的标准的大道,千人一面并不为奇。于是,这十几个人都被朱教谕赋予了优异的成绩。 正当朱教谕看过一篇“符合大道”的文章,暗自欣喜的时候,下一篇文章却出现的非常不合时宜。朱教谕一看,符合八股之道,往下看去,却是“监察制度”如何劳民伤众,天理不容。朱教谕看到这种文章,心底生气一股怒火,他说民无暇春耕,苦不堪言,我为何不知道?一定是一派胡言!而看到后面,这篇大逆不道的文章居然敢写下:<mark>“之前的被人们称为圣人的朱苳,实际上没有一点真才实学,之是蝇营狗苟之辈,凭借钻盈的功夫,留下了毒害后世的学问。他的不肖子孙,如今依然为虎作伥。”</mark>朱教谕看到这一行字,感到自己的权威被极大的挑战了,他怒火中烧,一把撕开密封线,看到考试的名字前面一行画了一个🐷,他愤怒的攥紧了这张答卷,嘴里叽里咕噜的说起什么,突然站起来,使劲锤了一下桌子,嘴中吐出一口黑色的血,倒到了地上。

核酸上课论

# 核酸上课论 夫核酸、上课者,大学之道也,不可以不审慎也。今日之势,欲核酸并上课。孟子云:“鱼我所欲也,熊掌我所欲也,二者不可得兼。”[^1]今核酸上课犹如二虎[^2],二强相争不得俱全。 依余愚见,当舍上课而取核酸者也。夫上课者,桃李之所硕者也[^3];夫核酸者,印佩[^4]之所全也。若舍上课,虽不成蹊[^5],可保五斗[^6];若舍核酸而取上课,则桃之夭夭[^7]徒做金衣[^8]而已。核酸者,天下之神器[^9]也,死生利害,不可以不深思而慎取之也! 吾尝闻,夫上善若水[^10],水之型也,避上而趋下[^11]。今上催之甚急,而下则多受其惠,盍罢黜百科,独尊核酸。核酸一出,则万民归顺,百邦来朝,上颜大悦,岂不早当封侯之位,列三公之重。 余虽卑鄙,躬耕阳郡[^12],苟全性命于乱世。今蒙重恩,得效犬马之劳,不敢不殚精竭虑以事明主。愿明公以核酸为重,上承皇恩,下顺民意,若有不服管束贻误核酸者,当重斥赋黄;而意在鸿鹄[^13]、常念斩蛇者[^14],立斩不赦。如是,则天下幸甚,社稷幸甚,明公亦可高卧安眠,指日高升[^15]也。 诗云:战战兢兢,如临深渊,如履薄冰[^16],此余所以事明主也。愿明公听之任之,早做决断,若迁延时日,恐生不测。余伏惟圣鉴,再拜以闻。 [^1]: 出自《孟子注疏》卷十一下〈告子章句上〉 [^2]:《礼记·檀弓下》:“夫子曰:‘小子识之:苛政猛于虎也。’ [^3]:《韩诗外传》卷七:夫春树桃李,夏得阴其下,秋得食其实。学生之谓也 [^4]: 苏轼《渔家傲》:腰跨金鱼旌旆拥。将何用。只堪妆点浮生梦。泛指官位 [^5]: 《史记》卷一百九〈李将军列传〉:桃李本不能言,但以华实感物,故人不期而往,其下自成蹊径也。 [^6]: 《宋书》卷九十三〈隐逸列传·陶潜〉:郡遣督邮至,县吏白应束带见之,潜叹曰:「我不能为五斗米折腰向乡里小人。」即日解印绶去职。赋归去来。泛指官位 [^7]: 《诗·周南·桃夭》:“桃之夭夭,灼灼其华。”喻事物的繁荣兴盛 [^8]: 秦韬玉《贫女》:苦恨年年压金线,为他人作嫁衣裳。 [^9]: 《老子》:“将欲取天下而为之,吾见其不得已。天下神器,不可为也。为者败之。”此指政治 [^10]: 《老子》:“上善若水“ [^11]: 《孙子兵法·虚实篇》:兵形象水,水之形,避高而趋下 [^12]: 诸葛亮《出师表》:臣本布衣,躬耕于南阳,苟全性命于乱世。孔明阳郡人也 [^13]: 《史记》卷四十八〈陈涉世家〉:陈涉太息曰:「嗟乎,燕雀安知鸿鹄之志哉!」 [^14]: 《史记》卷八〈高祖本纪〉:」高祖醉,曰:「壮士行,何畏!」乃前,拔剑击斩蛇。蛇遂分为两,径开。 [^15]: 《梦笔生花·杭州俗语杂对》:“望风下拜,指日高升。” [^16]: 《小雅·节南山之什·小旻》:战战兢兢,如临深渊,如履薄冰。指面对政局谨慎

摆烂进入共产主义——我读《资本论》

# 内卷与共产主义 在马克思的《资本论》中有这么一句话: > 在平等的权利之间,团结就是力量,力量将会起到决定作用。在资本主义生产的历史上,工作日的正常化过程表现为规定一定工作日界限的斗争从14世纪中叶至十七世纪末关于延长工作日的强制性法律到资本家阶级与工人阶级的斗争 资本家需要更多劳动力来产生更多剩余价值,而无产阶级则需要合适的工作时间来保证自己有充足的时间进行休息、娱乐等活动。所以,无产阶级需要阶级斗争来为自己争取合适的工作时间。而内卷是一种自愿通过延长工作时间或减少工资等方式来获得资本家青睐的行为。 根据剩余价值理论,商品价值=工资+生产资料+剩余价值 内卷行为无疑会增加剩余价值,其结果便是资本家的资本增加。 所以,内卷是天生与共产主义相悖的。想要实现共产主义,必然要让工人的工作时间与工资都处于合适的位置。而内卷显然与这种理念不和。内卷的本质,是在高度资本化的当下,人们为了竞争某一利益而出现的无效竞争。在短期看来,通过内卷,在其中获胜的人会得到阶级跃升的机会;而从长期看来,内卷现象必然导致无产阶级的待遇变差,无产阶级必然遭到更多的压迫。人们为了阶级跃升而进行的内部斗争,最终会导致资本家得利。 **简而言之,内卷是一种无产阶级的内部斗争行为,是一种内耗,会使无产阶级的处境更为困难。** 而当内卷达到一种程度时,必然会导致无产阶级的反抗, 比如现在的摆烂。关于摆烂——与内卷相对,是一种无产阶级表达自己对薪资或工作不满的方式。 因此,在面对资本家及其爪牙对无产阶级进行·压迫时,**拒绝内卷选择躺平无疑是一种推动共产主义建设的合理方式。**

更伟大的人——我读《沉默的大多数》

# 更伟大的人 ## 为什么要读王小波 我没有特别喜欢的作者,让我有兴趣读完他所有的著作。我属于那种雨露均沾的类型,所有的作者,但凡我感兴趣的,我都要沾一沾。我开始读王小波是因为我每次看到他时他都被人赋予了极高的评价。但是之所以拖到现在才看是因为我很少看到他。 现在想来很少看到他或许不是他的错。**毕竟他虽然是中国人但却不是中华人民共和国人——这是当今政府最深恶痛绝的类型**。他能够在国内被看到就已经是一个奇迹了,怎么能奢望他有更多的曝光呢?因此,我一开始讲他当成一个媚俗的小说家。直到看了《黄金时代》。 虽然《黄金时代》中有很多大众喜闻乐见的内容,但是这些内容只是一种粉饰,它粉饰的是王小波的智慧与他锐利的观点。**有些人喜欢显露自己的智慧,让所有人都知道自己多么的伟大,而有些人喜欢把自己的智慧藏起来,让能看透表面的人看到,然后博得读者的莞尔一笑。前一种大概智慧有限,所以常常被人评价为装逼**。言归正传,读完《黄金时代》,我就觉得王小波是一个聪明人,他应该不只是专注于女人的胸脯与男人的下体。 于是我开始读《沉默的大多数》 ## 值得一读的书 如果让我一句话来评价《沉默的大多数》,我会说,你最好读一下。 **如果一定要将书分个好坏,我会说,读完让人变得智慧的是好的,读完让人变得愚蠢的是坏的**。《沉默的大多数》属于前一种。当然并不是所有人都觉得智慧是好的,但是一定是所有人都渴望自己变得智慧。 但是这本书也并不是适合所有人读,这本书适合有一定智慧的人读。如果你读这本书觉得被刺痛被冒犯,读的火冒三丈,觉得书中文字都是一派胡言,说明你的智慧还不足以读这本书。但是如果你能坚持读完然后时不时反刍一下,你的智慧肯定会得到质的提升。我前面就已经说过,要读懂王小波,需要有一定的聪明。说的简单一点,就是要有独立思考的能力。如果周围在欢呼万岁,你也欢呼万岁,周围在高呼打倒,你也高呼打倒,别人说你要努力,你就会努力,那我觉得你暂时读不懂王小波。你读的时候会生气,那就不如不读。 但是读完这本书会收获智慧,这一点是毋庸置疑的。 ## 谁更伟大? 前面评价了一下作者与书,这部分开始正式的说感想了。 《沉默的大多数》,王小波说,这个世界上的人,大多是没有话语权的。于是,他要为沉默的人发声。这句话的意思,其实很好理解。_你可以自己想他的意思,我觉得我没必要明说。_ 我要说的是,真理往往掌握在沉默的人嘴里。但是大家就是不愿意说。这种不愿意是多发性的,你不能说不愿意说就是因为坏。不愿意说恰恰不是因为他们坏,不愿意说出真理。而是他们太好了,所以说不出真理。王小波的这本书,依我来看,要从两个方面打破沉默,第一是他帮沉默的人说出一部分真相,但这不是主要目的;第二是让沉默的人不再沉默,这才是他的主要目的。我不方便说的太具体,因为我也刚刚走出沉默,你们若是有兴趣不妨去读一读这本书。 这里我又说到了人都好与坏,可能有人会质问我,“你怎么证明沉默的好,不沉默的坏呢?”。当然,我这句话说的不绝对,应该说沉默的大都好,不沉默的大都坏。而且这句话也有时空上的局限性,他只对某段时间的某个地方有用。这句话拿到美国,就不如在中国的时候好用了,这是肯定的。 那让我来证明一下这句话,一般我们要证明一件事情之前,我们通常要下一个定义。我可以粗略的规定一下,让其他人幸福的人是好的,让其他人不幸的人是坏的。接下来,我们可以举几个例子。曾经有一段时间:农民,让大家吃饱,是好人,学者科学家,为人类带来智慧,是好人,他们失声了。而打人的恶霸,以及指示别人打人的土皇帝却声音很大,一边高呼着万岁,一边下达最高指示,好不乐乎。只是苦了挨饿的农民与挨打的学者。又有一段时间,建房子造东西种粮食做美食搞发明的好人又失声了,而打人的人与他们的土皇帝又提高了嗓门。**他们一边喊着万岁,一边说着“安全”、“清零”、“坚持”,好不乐乎,只是苦了不愿吃人的人**。 就我来看,王小波与鲁迅是一种,他们都是希望人们追求智慧的,追寻真理的。**人独立的思考,即使沉默不发声,也不会变为坏人的唇舌**。这样看来,王小波是让人变成好人的人。 如此这般,我们不妨将这种让人变成好人的人成为伟大的人。**毋容置疑,鲁迅比袁世凯伟大,同理,王小波比毛泽东伟大**。但是何必要抬出来【伟大】这个词呢?仅仅规定好人比坏人伟大。**对比那个十里山路不换肩的人,我们这些所谓的“屁民”已经足够伟大了**。

AI思考小记

## 我们在哪里? 如果要我将AI发展至今的阶段分一个类的话,我会这样分: 1. 前AI阶段: 2020.6 - 2023.3    从openAI发布的ChatGPT3进入大众视野开始,到ChatGPT4刷新了人们的认知,这一段时间内,AI的理论基础已经打好了,但是人们对AI能做到什么程度还是抱有疑问的。直到GPT4的发布,让人们猛地意识到,AI居然已经悄悄发展到这种程度了。 2. AI阶段:2023.3 - 2025.1    在这一阶段,GPT 4o,GPT o1不断刷新大模型的智能程度,copilot、cursor、 midjourney、sora等应用的出现,也表示AI在某些专业领域取得了长足的进步。我将这个阶段的结束定为deepseek R1问世的那一天,这不仅仅是因为R1是一个国产的大模型,更是因为R1的出现,标识着一个足够智能的模型不再是一个稀缺的资源了。 3. 后AI阶段:2025.1 - ?    从25年开始,我们进入了后AI阶段。这个阶段的特征可能是:大语言模型能力的进步将不再是最受人瞩目、最主流的科技发展了;取而代之的将是越来也智能、越来越“人体工学”的AI应用。manus的火爆充分的说明了这一点。但是很多人不知道的是,在manus之前,openAI就已经推出了一款个人助理:Operator。可以预见,越来越多的AI应用将会被创造出来,供人使用。     我们现在所处的这个时代,是AI时代的晚期,而一个时代的晚期,往往是这个时代最辉煌的时候。AI发展了这么久,可以说,它不够惠民,没有大幅的提高生产力。我们这个阶段,将是AI转化为生产力的阶段。后AI时代,将会在AGI被研发出来的时候结束。到那时,人类的历史将会进入一个新的时代。 ## AI的未来 AI的未来是AGI,也就是通用人工智能。但是AGI出现后,人类的未来是怎样的,我想就算是最有智慧的人也难以给出一个确定的答案。 但是在AGI出现之前,AI的发展在一定程度上还是可以被预测的。比如我可以断言,在未来,AI会继续在各种垂直领域大放异彩,成为越来越好用的生产力工具;同时,在通用的领域,可能有许多的智能助手会出现。 各个手机厂商、互联网公司都在摩拳擦掌,准备用自己的智能助手带给用户新的体验,谷歌的Chrome提供了ai接口,微软在自家产品的方方面面植入copilot……之前被许多人奉为笑话的一句话将会成为事实:ai助手将会成为人们选择一款手机时,最重要的理由。而如果这个命题成为现实,我们可能不得不面对一个超级手机公司——一个占领80%以上市场份额的庞然巨兽。 可以预见,在不久的将来,许多AI软件将会如雨后春笋般出现,但是一将功成万骨枯,最终只会有几款产品成为“吃鸡”的人,马太效应将会在这次革命上表现的淋漓尽致。 以及,我个人最期盼的,是AI真正带来生产力的飞跃,就像蒸汽机、内燃机与计算机在第一次、第二次与第三次工业革命发挥的作用一般。我相信这一天并不遥远。而且工业革命的周期一次比一次要短暂,甚至有可能AI带来的工业革命还未结束,由AGI带来的工业革命又将瞬间引爆全球。 ## 人类的未来 这是一个美好的时代吗?是的。 AI是目前的一个风口吗?是的。 但是这个时代,这个风口,与大多数人都没有关系。如果我们说20世纪是人才的世纪,那么21世纪就是天才的世纪。虽然开发LLM可能并不如独立研究出微积分更加困难,可能奥特曼并不比牛顿更加聪明。但是我能够知道,一万张英伟达A100显卡一定比一叠草稿纸要贵的多。 如果未来有人格的话,他只会偏爱两种人,一种是拥有资源的人,另一种是超人。拥有资源的人,尚可通过通过投资超人去化身超人毛发上、肠胃中的寄生虫,在超人一飞冲天之时,跟着鸡犬升天。而普通人可能就只能呼吸着超人留下的污浊的尾气了。 AI的时代,将是一个深沟高垒的时代。技术的壁垒、资本的壁垒将会把人与人划分,如果说还有底层人想要改变自己的命运的话,可能这就是最后的窗口期了。也正是因为在这个时代,突破自己阶级的限制变得愈发困难,大家才会一致的摆烂,放弃疯狂而无意义的内卷。 二八定律将会失效,未来可能是一九九定律。这百分之一的人,未必掌握了百分之九十九的财富,但是可能会掌握百分之九十九的未来。如果说这就是我们印象中的那个“乌托邦”的话,那么他就快要来了。 ## 未来看我 如果未来有人格的话,他肯定会偏爱上面说的那些,有资本或者有技术的人。 而像我一样的大多数人,既不是天才,更不可能成为寄生虫,因此只能被未来所抛弃。 但是被未来所抛弃就一定意味着悲惨的结局吗?可能未必。勇立潮头的弄潮儿,是时代的风云人物,但是在风波诡谲之处行动,最为费劲,也最为危险。而我们这些站在岸上的人,虽然不被潮水青睐,但潮落之后,兴许能捡到几枚贝壳。 AI带来的未来不一定能照亮所有人,但是他的光源一定会比过去更加明亮。或许我们每个人,都能受到它的普照,而不是在他的影中。这就取决于那些在大公司、AI创业公司和政府部门工作的弄潮儿们,如何驱赶海浪了。 ## 我看未来 我认为我并不是只在被未来选择着,我也可以选择未来。 《大明王朝1566》中有这么一幕:吕公公教育误杀周云逸的冯保,要思危、思退、思变。 如今,我在感受到AI带给社会的变化之后,开始了思危:目前AI带来了生产力的发展,虽然没有让AI取代某些人,但是却让一部分会用AI的人驱逐了一部分不会用AI的人。如果我不去卷AI,那么就可能会被那些会用AI的人卷死。但是就算在互卷的过程中暂时的残存下来,如果生产模式没有变化,AI + 人工的组织方式也只会让公司的员工越来越少。这是思危。 然后我便开始思退:我不愿意让别人把我卷死,但是我又不愿意违心的内卷,以及卷死别人。用一种抬高自己的说法,我是情愿给别人留一条活路的。比起在时代的浪潮中挣扎,我更愿意急流勇退,到自己的舒适区重新思考。 等到了我的舒适区之后,我再开始思变。不过如何变,我也大概有一些想法。AI给了我们很多机会,很多一人成军的机会。如果我们愿意,我们完全可以只对自己负责,我 + AI,或许是一个不错的抉择。 ## 后话 虽然已经决定要退了,但是后退并不是一溃千里,而是朝另一个方向前进。在后疫情时代,后AI世代,后移动互联网时代,一个人在家能有什么活法呢?我正在积极探索之中。 在做好准备之前,我不会轻易的遁走。其中一个准备,就是准备100个的资产,预期四年完成。目前我的进度是: *8/100* 当我已经完成了撤退之后,或者是在四年之后,我可能会转过身来回味这篇文章,看我言中了多少,又做了哪些事情。 *感谢chatGPT与豆包为我整理资料。*

Hadoop 知识整理

# hadoop知识点整理 ## 第一章 大数据的概念 大数据是指无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的复杂的数据图集。 ### 特征 **4个V**: - Volume:数据体量巨大 - Variety:数据种类繁多 - Value:数据价值密度低 - Velocity:处理速度快 ### hadoop生态圈 大数据工具主要包括:Hadoop、Hbase、ZooKeeper、Hive、Mahout、Sqoop、Storm等 #### Hadoop **Doug Cutting**开发,受到**Map/Reduce**启发,核心是**MapReduce编程模型和HDFS分布式文件系统**。 采用分而治之的思想,Map用来切分大的数据,Reduce用来合并Map计算的结果。 HDFS 分布式文件系统,为海量数据提供存储服务,将大文件拆分为块,多节点存放,具有高吞吐量、高容错性的特点。 #### HBASE HBASE是Apache开源的KV型数据库,是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 仅支持单行事务。 主要用来存储非结构化和半结构化的松散数据。 #### Hive Apache Hive数据仓库软件提供对存储在分布式中的大型数据集的查询和管理,它本事是建立在Hadoop之上的 #### Storm Apache Storm是一个免费、开源的分布式实时计算机系统,简化了数据流的可靠处理。 #### ZooKeeper zooKeeper是一个高性能、分布式的开源分布式应用协调服务,他是storm、hbase的重要组件,它是一个为分布式应用提供一致性服务的软件。 服务端跑在JAVA上 ZooKeeper有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务。 **特点**: - 顺序一致性:按照客户端发送请求的顺序更新数据 - 原子性 - 单一性:无论客户端连接哪个server都看到同一个视图 - 可靠性:一旦数据更新成功将一直保持,直到新的更新 - 及时性:客户会在一个确定的时间内得到最新的数据 **运用场景**: - 数据发布订阅 - 名空间服务 - 分布式通知 - 分布式锁 - 集群管理 #### sqoop sqoop是Apache顶级项目,允许用户将数据从关系型数据库中抽取数据到Hadoop中 #### mahout mahout是一个强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括分布式协同过滤的实现、分类、聚类等 ### Hadoop历史和版本 历史: - 2011年12月,Apache基金会发布了Apache Hadoop 版本1.0 - 2013年8月,版本2.0.6可用 - 2017年12月发布Apache Hadoop3 发行版: Hadoop有许多变体: - Cloudera Hadoop分布:是Coludera Enterprise的核心,包括Apache Hadoop、Apache Spark,Apache Kafka 以及十多个其他紧密继承的领先开源项目 - Hortonworks Hadoop分布:是基于YARN的安全性强、企业就绪的开源版本 - MapR Hadoop分布:是Hadoop的完成整企业级发行版 - PivotalHD:是领先的基于标准的Hadoop该发行版,为Business Data Lake架构奠定了基础 优势: - 高可靠性 - 高拓展性 - 高效性 - 高容错性 ## 第二章 Hadoop 组成与结构 Hadoop1的三大核心模块: - Common模块:支持其他模块的工具模块 - HDFS模块:一个高可靠、高吞吐量的分布式文件系统 - MapReduce模块:一个分布式的资源调度和离线并行计算系统 Hadoop2的组成: MapReduce模块仅作为分布式计算框架存在,资源调度功能交给YARN来调度处理 ### HDFS 一个分布式文件系统。 HDF的设计适合一次写入多次读出的场景且不支持文件修改。适合用来做数据分析,并不适合做网盘使用。 Master-Slave结构,Master是NameNode,Slave是DataNode client职责如下: - 文件切分 - 与NameNode交互获取文件的位置信息 - 与DataNode交互读取或写入数据 - 提供一些明恋来管理HDFS,比如启动或者关闭HDFS - 可以通过一些命令来访问HDFS NameNode职责如下: - 配置副本策略 - 处理client读写请求 - 管理block(数据块)映射信息,以元数据的形式存储在Fsimage镜像文件中 - 管理HDFS命名空间 DataNode的职责: - 执行实际的数据块 - 执行数据块的读写操作 SecondaryNameNode,第二名称节点,并非名称节点的热备,晋档NameNode重启或者热备NameNode激活时将宕机前所保留集群的快照发送给NameNode以恢复此前集群的状态。具体功能为: - 存辅NameNode,分担其工作量 - 定期合并Fsimage和Edits,并推送给NameNode - 在紧急情况下可辅助恢复NameNode 优点: - 高容错性 - 适合大数据处理 - 支持流式数据访问 - 可构建在廉价机器上 缺点: - 不适合低延时数据访问 - 无法高效的对大量小文件进行存储 - 不支持并发写入文件和随机修改 ### YARN架构 MRv1的局限: - 扩展性差 - 可靠性差 - 资源利用率低 - 无法支持多种计算机框架 YARN是一个弹性计算平台,他的目标已经不局限于支持MapReduce一种计算框架,而是朝着对多种框架的统一管理前进 优点: - 资源利用率高 - 运维成本低 - 数据共享 对比: | | V1 | V2 | | ----------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------- | | 基本框架 | JobTracker由资源管理和作业控制两部分组成 | 将JobTracker的两个功能拆分成两个独立的进程,资源管理进程负责整个集群的资源,而作业控制则是直接与应用程序相关的模块,每个进程只负责一个作业 | | 编程模型与数据处理引擎 | | MRv2重用了v1中的编程模型与数据处理引擎 | | 运行时环境 | 由JobTracker和TaskTracker两类服务组成,JT负责资源和任务的管理与调度,TT负责单个节点的资源管理和任务进行 | 将资源部管理与应用程序管理分开,分别又YARN和ApplicationMaster负责 | #### YARN基本架构 总体上仍然是Master/Slave架构 YARN的组成成分如下: - ResourceManager:一个全局的资源管理器,负责整个系统的资源管理与分配。它由两个组件构成: - 调度器(Scheduler):根据容量、队列等限制条件将资源分配给各个正在运行的应用程序 - 应用程序管理器(Application Manager ASM):负责整个系统中所有应用程序 - ApplicationMaster(AM)的主要功能有: - 与RM调度器协商以获取资源(Container) - 将得到的任务进一步分给内部任务 - 与NM通信以启动/停止任务 - 监控所有任务运行状态 - NodeManager:是每个节点上资源和任务管理器 - Container:是YARN山中的资源抽象,它封装了某个节点上的多维度资源 ## 第三章 Hadoop运行模式与大数据技术框架 Hadoop的运行模式主要有四种: - 本地模式 - 伪分布式 - 全分布式 - 高可用模式 ### 伪分布式模式 Hadoop可以运行在单个节点上,其中每一个Hadoop守护进程运行在单独的Java进程中,这个模式称之为伪分布式模式。Hadoop所有进程都运行在一台服务器以模拟全分布式模式,常用于学习阶段。 后台的五个进程为: - NameNode - DataNode - SecondaryNameNode - ResourceManager - NodeManager ### 高可用模式 Hadoop是一种主从式架构,这样就会有**单点故障**的问题 ## HDFS - 数据块(block) - HDFS默认的最基本的存储单位是128MB的数据块 - 128M为一块 - 一个文件如果小于一个数据块的大小,并不占用整个数据块的空间 - 存放策略(3副本) - 第一个和client同node - 第二个放在与第一个节点的不同机架中的随机的一个node - 第三个放在与第一个节点不同的机架中与第二个不同的随机node中 - NameNode 和DataNode - HDFS体系结构中有两类节点,一类是NameNode ( Master) ,又叫"元数据节点";另一类是DataNode (Slave) ,又叫"数据 节点”。 - 元数据节点用来管理文件系统的命名空间,作用如下: - 其将所有的文件和文件夹的元数据保存在一个文件 系统树中 - 这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log) - 还保存了一个文件包括哪些数据块,分布在哪些数据节点上,然而这些信息并不存储在硬盘上,而是在系统启动的时候从数据节点收集而成的 - 数据节点是文件系统中真正存储数据的地方,作用如下: - 客户端(clien)或者 元数据信息(namenode)可以向数据节点请求写入或者读出数据块 - 周期性的向元数据节点回报其存储的数据块信息 - `hadoop.tmp.dir`,临时目录,其他临时目录的父目录,默认 `/tmp/hadoop-${user.name}`,在`core-site.xml`中配置 - 元数据节点目录结构,在`hdfs-site.xml`中配置`dfs.name.dir`参数,以`,`分隔,默认在`{hadoop.tmp.dir}/dir/name` - 数据节点目录结构 - 在`hdfs-site.xml`中配置参数`dfs.data.dir`,以`,`分隔 - HDFS通信协议 - 所有HDFS通信协议都是构建在TCP/IP协议上的 - HDFS安全模式 - Namenode启动后会进入一种称为安全模式的特殊状态。处于安全模式的Namenode是不会进行数据块的复制的。Namenode从所有的DataNode接受心跳信号和块状态报告 **Name Node、DataNode 和Client** - Namencodte 是分布式文件素统中的管理者, 主要负责管理 文件系统的命名空间、集群配置信息和存储块的复制等。NameNode 会将文件系统的Meta-data 存储在内存中,这些信息主要包括了文件信息,每个文件对应的文件块的信息和每个 文件块DataNode的信息等。 - DataNode是文件存储的基本单元, 它将Block 存储在本地文件系统中,保存了Block 的meta-data,同时 周期性地将所有存在的Block信息发送给NameNode. - Client 就是需要获取分布式文件系统文件的应用程序。 - Client读取文件信息 ### Hadoop Shell命令 实际上是属性,命令为:`hadoop fs -xx` - `cat`: - `chgrp`: change group - `chmod`: - `chown` - `copyFromLocal` - `copyToLocal` - `cp`: copy - `du`:显示目录中所有文件的大小 - `dus`:显示单个文件大小 - `expunge`:清空回收站 - `get`:复制到本地 - `getmerge`:将 source dir 中的文件链接成 local target dir - ls - lsr:递归ls - mkdir - movefromLocal - mv - put:本地到远程 - rm - rmr:递归rm - setrep:改变副本数 - stat:返回指定路径的统计信息 - tail:将尾部1kb的字节输出到stdout - test:检测文件是否存在 - text:将源文件输出为文本格式 - touchz:新建一个0自己的文件 Hadoop管理命令: - distcp:分布式拷贝(集群之间) - fsck:检查整个文件系统的健康情况 - jar:运行java文件 - job:用于和MapReduce交互 - balancer:运行集群平衡工具 - dfsadmin:运行一个dfs admin客户端 - namenode: 运行namenode ### java接口 Hadoop中关于文件操作类基本都在`org.apache.hadoop.fs`包中 Hadoop类库中最终面向用户提供接口是`FileSystem` ```java // 获取FileSystem具体类 static FileSystem get(Configuration conf); // 写文件 public FSDataOutputStream create(Path f) throws IOException; //读文件 // 上传文件到HDFS public void copyFileLocalFile(Path src,Path dist); // 重命名文件 public abstract boolean rename(Path src, Path dist); // 删除文件&目录 public abstract boolean delete(Path f, boolean recursive) throws IOException; // 创建目录 public boolean mkdirs(Path f) throws IOException; // 遍历目录 public abstract FileStatus[] listStatus(Path f) throws FileNotFoundException, IOException ``` ## MapReduce ```java public void map(Object Key,Text value,Context context) throws IOExcetion, InterruptedException{ } ``` ### MapReduce工作原理 MapReduce框架的运作完全基于“键值对”,即数据的输入是一批“键值对” (key-value) ,生成的结果也是批“键值对”,只是有时候它们的类型不一样而已。Key和value的类由于需要支持被序列化 (Serealire) 操作,所以它们必须要实现`Writable` 接口,而且key的类还必须实现`WirtableComparable`接口,使得可以让框架对数据集的执行排序操作,MapRedtre运行机制,按照时间顺序包括:输入分片(input split)、map 阶段、combiner 阶段、shuffle阶段和reduce阶段。 在进行map计算之前,MapReduce会根据输入文件计算输入分片 ### YARN运行流程 1. JobClient 向YARY中提交应用程序,其中 包括ApplicationMaster 程序、启动ApplicationMaster的命令、用户程序、环境变量、作业信息、文件位置信息等 2. RecourseManager为该应用程序分配第一个 Container. 并与对应的 Node-Manager 通信(通过心跳方式),更求它在这个Container中启动应用程序的ApplicationMaster 3. ApplicationMaster首先向ReoourceManager注册,这样用 户可以直接通过ResourceManager查看应用程序的运行状态。然后它将为各个任务申请资源,并监控它的运行状,直到运行结束 4. ApplicationMaster 采用轮询的方式通过RPC协议向ResourceManager申请和领取资源 5. 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务 6. NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中, 并通过运行该脚本启动任务。 7. 各个任务通过某个RPC协议向AplcationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。 8. 应用程序运行完成后, ApplicationMaster向ResourceManager注销并关闭自己 ### 作业关键过程详解 **map**:map任务最终是交给Map任务执行器 **Reduce**:从所有map节点取到属于自己的map输出 **Partitioner**:当Mapper处理好数据后,需要使用Partitioner(分区器)确定怎样合理地将Mapper输出分配到Reduce上 **Combiner**:相当于一个本地的Reduce,主要是对Mapper输出的大量本地文件进行一次合并。Combiner函数执行时机可能是在map的merge操作完成之前 ### MapReduce各种输入输出 **InputFormat**:负责处理MR的输入部分,来决定Map的数量,InputFormat **FileInputFormat**:是所有以文件作为数据源的InputFormat实现的基类,FileInputFormat保存作为job输入的所有文件 ## MapReduce 设计模式 - **过滤器模式**:设定某种条件,当负责条件时保留数据,不符合条件时丢弃数据 - **Top N**:根据数据集的排名,获取前N条记录 - **去重模式**:去重 - **数据重组**:按照一定的规划整理数据。数据重组要求划分的分区数量已经确定,划分分区的条件已经确定 -

SpringCloud 知识整理

# SpringCloud 知识点梳理 ## 第二章 构建spring cloud ### SpringBoot目录结构 - `src/main/java`:主程序入口 - `src/main/resources`:配置目录 - `src/test`:单元测试目录 ### Springboot依赖 Starter POMs 是一系列轻便的依赖包,是一套一站式的Spring相关技术的解决方案。 SpringBoot的StarterPOMs采用 `spring-boot-starter-*`命名,`*`表示一个特别的功能模块。 我们用到的POMs有: - `spring-boot-starter-web`:全栈Web开发模块 - `spring-boot-starter-test`:通用测试模块 ### 配置详解 springboot 的默认配置文件位置为 `src/main/resources/application.properties` #### 自定义参数 在application.yaml中 ```yaml book: name: springboot author: charles ``` 在java中 ```java @Component @Data public class Book{ @Value("${book.name}) private String name; } ``` `@value` 属性在加载配置时支持两种表达式: - PlaceHolder方式,格式如上,为`${*}` - SpEL表达式,格式为`#{*}` #### 多环境配置 多环境配置的文件名需要满足 `application-{profiles}.yaml`的格式,其中profile对应你的环境表示: - dev:开发 - test:测试 - prod:生产 加载那个环境需要在`application.yaml`中设置`spring.profile.active=*`属性 #### 加载顺序 springboot属性加载顺序如下: 1. 在命令行中传入的参数。 2. SPRING APPLICATION JSON中的属性。SPRING APPIATION JSON是以JSON格式配置在系统环境变量中的内容 3. Java.comp/env中的JNDI属性 4. Java的系统属性,可以通过`System.getProperties ()`获得的内容 5. 操作系统的环境变量 6. 通过`random.*`配置的随机属性 7. 位于当前应用 jar包之外,针对不同{profile}环境的配置文件内容,例如`application- {profile} .properties`或是YAML定义的配置文件。 8. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如`aplication- {profilel} .properties` 或是YAML定义的配置文件。 9. 位于当前应用jar包之外的`application.properties`和YAML配置内容 10. 位于当前应用jar包之内的`application. properties`和YAML配置内容。 11. 在`@Configuration `注解修改的类中,通过`@PropertySource` 注解定义的属性。 12. 应用默认属性,使用`SpringApplication setDefautProperties`定义的内容 优先级按上面的顺序由高到低 ### actuator 要想使用actuator需要添加依赖:`spring-boot-starter-actuator`,然后在application添加如下配置以暴露全部端点: ```yaml management: endpotints: web: exposure: include: '*' ``` actuator的原生断点分为三类: - 应用配置类 - `/beans`:获取上下文所有的Bean,每个Bean都包含以下信息 - scope:作用域 - type:java类型 - resource:class文件的具体路径 - dependencies:依赖的bean的名称 - `/configprops`:配置属性 - profix:属性前缀 - properties:各个属性的名称和值 - `/env`:用来获取应用所有可用的环境属性报告 - `/mapping`:用来返回所有springMVC控制器的映射关系 - 度量指标类 - `/metrics`:返回当前应用的各种重要指标 - `/health`:用来获取应用的各类健康指标信息,当项目较为简单时,只标识出应用的状态 - UNKNOWN:未知状态,503 - UP:正常,200 - DOWN:失败,503 - OUT_OF_SERVICE:不提供对外服务,200 - 操作控制类 - `/shutdown`:只提供了这一个,不支持get请求 ## 第三章 服务治理 Alibaba Nacos ### 常见方案 `Spring Cloud Eureka`:既包含了服务端组件,又包含了客户端组件,并且服务端与客户端均通过java编写 `zookeeper`:一个开源的分布式应用程序协调服务,是Chubby的一个开源实现,是Hadoop和Hbase的重要组件 `Consul`:所以一个服务网络的解决方案,他是一个分布式的高可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,它的主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心 `Nacos`:帮助发现、配置和管理微服务 ### Nacos 修改端口:默认端口8848,可以进入nacos/conf目录修改`application.propertoes`的`server.port`属性 启动:运行`startup.cmd -m standalone`(单例模式运行) 访问:默认账号密码都是nacos #### 注册服务提供者 ```yml spring: application: name: #要注册到注册中心的服务名称 cloud: nacos: server-addr: localhost:8848 #服务端地址 ``` #### 服务发现与消费 ```java @Bean @LoadBalanced public RestTemplete restTemplete(){ // ... } ``` ## 第四章 负载均衡 Ribbon SpringCloud Ribbon是一个基于HTTP和TCP的**客户端**负载均衡工具,他基于Netflix Ribbon实现。 虽然它只是一个工具类框架,不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在在每一个SpringCloud构建的微服务和基础设施中。 客户端负载均衡与服务端负载均衡最大的不同点在于服务清单所存储的位置。 - 服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心 - 服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用 ### 分析 负载均衡器应该具备这样几种能力: - `ServiceInstance choose(String serviceId)`:根据传入的服务名从负载均衡器中挑选一个对应服务的实例 - `T excute(String serviceId, LoadBalancerRequest request)`:使用从负载均衡器中挑选出的服务实例来执行请求内容 - `URI reconstuctURI(ServiceInstance instance, URI origianl)`:为系统构建合适的hostzport形式的URI ### 负载均衡器 - AbstractLoadBalancer 是 ILoadBanlancer 接口的抽象实现,在该抽象类中定义了一个关于服务实例的分组枚举类ServerGroup - BaseLoadBalancer 是 Ribbon负载均衡器的基础实现类 - DynamicServerListLoadBalancer类是继承于BaseLoadBalancer类,他是对基础负载均衡器的扩展 - ZoneAwareLoadBalancer 负载均衡器是对 DynamicServerListLoadBalancer的扩展 ### 负载均衡策略 - AbstractLoadBalancerRule,负载均衡器策略抽象类,在该抽象类中定义了负载均衡器ILoadBalancer对象 - ClientConfigEnabledRoundRobinRule,该策略较为特殊,一般不直接使用它,因为它本身并没有实现什么特殊的处理逻辑,他在内部定义了一个RoundRobinRule策略 - PredicateBaseRule,是一个抽象策略,继承了ClientConfigEnabledRoundRobinRule,从其命名中可以看出来这个一个基于Predicate实现的策略 | 内置负载均衡规则类 | 规则描述 | | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | RoundRobinRule | 简单轮询服务列表来选择服务器。它是Rbbon默认的负载均衡规则。 | | AvailabilityFilteringRule | 对以下两种服务器进行忽略: (1) 在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。(2) 并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabiliyFilteringRule规则的客户端也会将其忽略。 | | WeightedResponseTimeRule | 为每一个服务器赋予一个权重值。 服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。 | | ZoneAvoidanceRule | 以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zome可以理解为个机房、一个机架等。而后再对Zome内的多个服务做轮询 | | BestvailableRule | 忽略那些短路的服务器,并选择并发数较低的服务器。 | | RandomRule | 随机选择一个可用的服务器 | | RetryRule | 重试机制的选择逻辑 | | NacosRule | 支持优先调用同个集群实例的 rbbon负载均衡规则 | ### 配置详解 #### 自动化配置 Ribbon能够自动配置下面这些接口的实现 - IClientConfig: Ribon的客户端配置, 默认采用com.netflix.client.config.DefaultlCientCnfigimpl实现 - IRule: Ribbon的负载均衡策略,默认采用com.netflix.loadbalancer,ZoneAvoidanceRule实现,该策略能够在多区域环境下选出最佳区域的实例进行访问。 - IPing: Ribbon的实例检查策略,默认采用com.netfix.loadbalancer.DummyPing实现,该检查策略是一个特殊的实现,实际上它并不会检查实例是否可用,而是始终返回true,默认认为所有服上面务实例都是可用的。 - ServerList: 服务实例清单的维护机制,默认采用com.netfix.loadbalancer.ConfigurationBasedServerList实现。 - ServerListFilter: 服务实例清单过滤机制,默认采用org.springrameworkcloud.netflix.ribbon.ZomeAwareKiadBakabcer实现,该策略能够优先过滤出与请求调用方处于同区域的服务实例。 - lLoadBalancer: 负载均衡器,默认采用com.netflix.loadbalancer.ZoneAwareloadBalancer实现,它具备了区域感知的能力。 针对一些个性化需求可以在springboot中创建对应的实现实例即可覆盖默认配置,比如 ```java @Bean public Irule rule(){ return new NacosRule(); } ``` #### 参数配置 对于RIbbon的配置有两种: - 全局配置:使用`ribbon.<key> = <value>`格式进行配置 - 指定客户端配置:`<client>.ribbon.<key>=<value>`的格式进行配置 **IRule配置**: ```yaml userservice: ribbon: NFLoadBalancerRuleClassName: <value> # 负载均衡规则类全名 ``` **饥饿加载**: ```yml ribbon: eager-load: enabled:true client: - userservice ``` **与Nacos结合** ```yaml spring: application: name: userservice #服务名称 cloud: nacos: server-addr: <value> #服务端地址 discovery: cluster-name: <value> # 区域集群名称 ``` **重试机制** ```yaml userservice: ribbon: ConnectTimeout: 200 #链接超时时间 ReadTimeout: 200 #请求超时时间 OkToRetryOnAllOperations: true #是否对所有操作都允许重试 MaxAutoRetriesNextServer: 2 # 切换实例的重试次数 MaxAutoRetries: 1 # 当前实例的重试次数 ``` ## 第五章 服务容错保护 Hystrix 快速入门: ```java @EnableCircuitBreaker //启动断路器 ``` ### 分析 #### 命令执行 - `execute()` 同步执行,从依赖的服务返回个单一的结果对象,或是在发生错误的时候抛出异常 - `queue()` 异步执行, 直接返回一个Future对象,其中包含了服务执行结束时要返回单一结果对象。 - `observe()` 返回来自依赖项的响应的Observable对象,它代表了操作的多个结果,它是一个hot Observable - `toObservable()` 同样会返回 Observable 对象,也代表了操作的多个结果,但它返回的是一个cold Observable。 #### 断路器是否打开 - 如果断路器是打开的,那么Hystrix不会执行命令,而是转到fallback处理逻辑 - 如果断路器关闭,则会检测是否有可用资源执行命令 #### 请求方法 - `HystrixCommand.run()` 返回一个单一的结果或抛出异常 - `HystrixObservableCommand,constuct()` 返回一个Observable 对象来发射多个结果或通过 onError 发送错误通知 #### 计算断路器健康度 Hystrix会将 成功 、 失败 、 拒绝 、 超时等信息报告给断路器 #### fallback处理 - `execute()` : 抛出异常。 - `queue()`: 正常返回Future对象,但是当调用get 0来获取结果的时候会抛出异常。 - `observe()`: 正常返回Observable 对象,当订阅它的时候,将立即通过调用订阅者的onError方法来通知中止请求。 - `tobservable()`: 正常返回Obsevable对象,当订阅它的时候, 将通过调用订阅者的onError方法来通知中止请求。 #### 成功的响应 - `exeoute()` 以与queue 相同的方式获取一个Future,然后在这个Future 上调用get()获取由Observable发出的单个值 - `queue()` 将Obervable转换为一个BlockingObservable,以便它可以被转换为一个Future然后返回这个Future - `observe ()` 在toObservable()产生原始Observable 之后立即订阅它,让命令能够马上开始异步执行,井返回一个 Observable对象,当调用它的subscribe时,将重新产生结果和通知给订阅者。 - `toObservable()` 返回最原始的Observable,必须通过订阅它才会真正触发命令的执行流程。 ### 断路器 三个抽象方法: - `allowRequest()`:每个Hystrix的命令的请求都通过他去判断是否被执行 - `isOpen()`:返回当前断路器是否打开 - `markSuccess()`:闭合断路器 #### 创建请求命令 ```java @GetMapping("/{param}") @HystrixCommand(fallbackMethod = "showAppInfoFallback") public String showAppInfo(@PathVariable("param") String params){ String url = "..."; return restTemplate.getForObject(url,String.class); } ``` #### 定义服务降级 ```java public String showAppInfoFallback(String param){ return "busy"; } ``` ```java /** * 服务降级方法 */ @HystrixCommand(fallbackMethod = "showAppInfoCallback") public String ShowAppInfoFallback(String param){ ... } ``` #### 异常获取 注解配置方式的实现非常简单,只需要fallback实现方法的参数中增加Throwable对象的定义,这样在方法内部就可以获取除法服务降级的具体异常内容了 ```java public String showAppInfoFallBack(String param,Throwable exception){ // ...something } ``` #### @Hystrix注解 ```java @HystrixCommand(fallbackMethod = "..." ignoreException = {Exception.class} commandKey = "..." groupKey = "..." threadPoolKey = "..."                 ) ``` #### 请求缓存 | 注解 | 描述 | 属性 | | ------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------- | | @CacheResult | 该注解用来标记请求命令返回的结果cacheKeyMethod应该被缓存,它必须与@HystrixCommand注解结合使用 | cacheKeyMethod | | @CacheRemove | 该注解用来让请求命令的缓存失效,失效的缓存根据定义的Key决定 | commandKey,cacheKeyMethod | | @CacheKey | 该注解用来在请求命令的参数上标记,使其作为缓存的Key值,如果没有标注则会使用所有参数。如果同时还使用了@CacheResult和@CacheRemove注解的cacheKeyMethod方法指定缓存Key的生成,那么该注解将不会起作用 | value | #### 设置请求缓存 ```java @CacheResult ``` 定义一个filter ```java HystrixRequestContext context = HystrixRequestContext.initializeContext(); ``` #### 定义缓存key ```java @HystrixCommand(fallbackMethod = "showAppInfoCallback") @CacheResult(CacheKeyMethod = "cacheKey") public User getUserInfo(@PathVariable("id") @CacheKey String id){ // something } public String cacheKey(String id){ return id; } ``` #### 缓存清理 `@CacheRemove`注解的`commandKey`属性是必须要指定的,它用来指明需要使用请求缓存的请求命令,因为只有通过该属性的配置,Hystrix才能知道正确的请求命令缓存位置、 #### 注解请求合并 `@HystrixCollapser` #### 请求合并的额外开销 - 请求命令本身的延迟 - 延迟时间窗内的并发量 ### 属性详解 4个不同优先级别的配置(优先级由低到高): - 全局数认值:如果没有设置下面三个级别的属性,那么这个属性就是默认值。由于该属性通过代码定义,所以对于这个级别,我们主要关注它在代码中定义的默认值即可。 - 全同配置属性:通过在配置文件中定义全局属性值,在应用启动时或在与SpringCloud Comfig和Spring Cloud Bus实现的动态刷新配置功能配合下,可以实现对“全局默认值”的覆盖以及在运行期对“全局默认值”的动态调整 - 实例默认值。通过代码为实例定义的默认值。通过代码的方式为实例设置属性值来覆盖默认的全同配置。 - 实例配置属性。通过配置文件来为指定的实例进行属性配置,以覆盖前面的三个默认值 **Command属性** | 属性级别 | 默认值、配置方式、配置属性 | | ------ | -------------------------------------------------------------------------- | | 全局默认值 | THRAD | | 全局配置属性 | Hystrix.command.default.execution.isolation.strategy | | 实例默认值 | 可通过@HystrixProperty(name = "excution.isolation.strategy" value = "THREAD") | | 实例配置属性 | hystrix.command.HystrixCommandKey.execution.isolation.strategy | ### Hystrix 仪表盘 为启动类加上@EnableHystrixDashboard, 启用Hystrix DashBoard功能 Hystrix DashBoard 支持三种不同的监控方式,分别是: - 默认的集群监控,通过URL `http://hostname:port/turbine.stream`开启 - 指定的集群监控,通过URL `http://hostname:port/turbine.stream?cluster=[clusterName]`开启 - 单体应用的监控,通过URL `http://hostname:port/hystrix.stream`开启 监控界面各项元素的意义: 实心圆:颜色表示健康程度,大小表示请求流量 曲线:用来记录两分钟内流量的相对变化 ### Turbine集群监控 通过启动类加`@EnableTurbine`注解开启 ## 第六章 声明式服务调用 Feign 启用Feign:在启动类添加`@EnableFeignClients`注解 定义服务接口,定义一个接口(Interface),通过`@FeignClient`注解指定服务名来绑定服务,然后再使用Spring MVC注解来绑定具体该服务提供的REST接口(这里服务名不区分大小写) ### 参数绑定 ```java // 获取参数 public String hello(@RequestParam("name") String name){} // 获取路径变量 public String hello(@PathVariable("id") String name){} // 获取header public String hello(@RequestHeader String name){} // 获取body public String hello(String name){@RequestBody User user} ``` ### 配置 #### Ribbon 全局配置 ```yaml ribbon: NFLoadBalancerRuleClassName: * #负载均衡规则全类名 ConnectTimeout: 200 #链接超时时间 ReadTimeout: 200 #请求超时时间 OkToRetryOnAllOperations: true #是否对所有操作都允许重试 MaxAutoRetriesNextServer: 2 # 切换实例的重试次数 MaxAutoRetries: 1 # 当前实例的重试次数 ``` 指定服务配置 ```yaml userservice: ribbon: NFLoadBalancerRuleClassName: * #负载均衡规则全类名 ConnectTimeout: 200 #链接超时时间 ReadTimeout: 200 #请求超时时间 OkToRetryOnAllOperations: true #是否对所有操作都允许重试 MaxAutoRetriesNextServer: 2 # 切换实例的重试次数 MaxAutoRetries: 1 # 当前实例的重试次数 ``` #### Hystrix 全局配置 ```yaml hystrix: command: default: execution: isolation: thread: timeoutInMilliseconds: 5000 ``` **禁用Hystrix** 通过`feign.hystrix.enable = false` 来关闭Hystrix或 `hystrix.command.default.execution.timeout.enabled = false`来关闭熔断功能 如果要局部禁用,需要使用`@Scope("protoype")`注解来指定配置实例 **服务降级配置** ```java @FeignClient(value = "userservice", fallback= UserClientFallback.class) public interface UserClient{ ... } ``` #### 请求压缩 ```yaml feign: compression: request: enable: true response: enable: false ``` 可以针对请求的数据类型以及触发压缩的大小下限进行设置 ```yaml feign: compression: request: enable: true mime-types: text/html, application/xml. application/json min-request-size: 1024 # 设置触发压缩的大小下限 ``` #### 日志配置 Feign的Logger级别有下面四种: - NONE:不记录任何信息 - BASIC:金鸡路请求方法、URL以及响应码和执行时间 - HEADERS:除了BASIC之外还记录请求和响应头 - FULL:记录所有请求与响应的明细 全局配置 ```yaml feign: client: config: metaDataClient: connect-timeout: 3000 read-timeout: 3000 default: loggerLevel: FULL ``` 局部配置 ```yaml feign: client: config: metaDataClient: connect-timeout: 3000 read-timeout: 3000 userservice: # 服务名称 loggerLevel: BASIC ``` Java配置类 ```java public class UserClientConfig(){ @Bean public Logger.Level feignLoggerLevel(){ return Logger.Level.FULL; } } ```

Android 60问60答 (一篇复习整个Android)

# Android 60问60答 (一篇复习整个Android) ## 有哪些移动端平台? 厂商开发平台: - los - 黑莓(blackBerry) 第三方私有平台:第三方开发供移动设备厂商使用 - WindowsMobile 免费开源平台: - Android - Symbian ## Android中Linux内核的作用 - 充当用户和设备之间的接口。 - 管理所用活动内存和资源共享 - 充当设备上所安装的应用的主机 - 常由硬件制造商使用,因为它提供一个硬件抽象层,可在硬件发生变化时,确保上层保持不变 ## Android使用的数据库是? SQLite,提供可用于所有应用的功能强大的轻量级关系数据库 ## Android有哪些构建块? - 活动:专为一个清晰的目的提供独特的可视化UI - 服务:始终在后台,完成特定的任务 - 内容提供者:存储和检索存储在文件、SQLite、web或任何其他持久化存储位置的数据 - 广播接收器:相应系统范围内广播通知的应用的组成部分 ## Android项目的目录结构 - `/src/main/java`:项目使用的java源文件 - `/build`:编译后生成文件 - `libs`:专有库 - `/src/main/resourse`:应用资源文件,有 - Drawable:位图文件或者绘制对象资源类型的xml文件 - Mipmap:使用于不同启动器图标密度的可会址对象文件 - Layout:用于定义用户界面布局的XML文件 - Menu:定义应用菜单的XML文件 - Raw:需要以原始形式保存的任意文件 - Values:包括字符串、整数、颜色等简单值的xml文件 ## 小部件的常用属性 | 属性名称 | 关联方法 | 描述 | | ---------------------- | --------------- | ------------------------------ | | android:layout_gravity | | 定义如何在布局容器内对齐小部件 | | android_gravity | setGravity(int) | 设置对象在容器中的放置 | | android:layout_weight | | 指定小部件的大小比例。如果不拉伸则设置为0,否则根据权重拉伸 | ### Android颜色表示 AARRGGBB 透明度|红|绿|蓝 ## ListView小部件的作用 此小部件向用户显示一个列表,它与Java中的列表框组件类似,ListView默认支持垂直滚动。要想使用小部件,如下所示: ```xml <ListView android:id="@id/listview" android:layout_width="match_parent" android:layoutheight="warp_content" > </ListView> ``` ## ImageView小部件 用于显示图像,可以从其他资源(例如drawable目录、因特网、内容提供者)加载图像,它根据源图像的大小调整自己的尺寸。要想使用该小部件,如下: ```xml <ImageView android:id="@id/imageview" android:layout_width="match_parent" android:layoutheight="warp_content" android:src="@drawable/map" > </IamgeView> ``` ## WebView小组件 用于显示网页,使用如下 ```xml <WebView android:id="@id/webview" android:layout_width="match_parent" android:layoutheight="warp_content" > </WebView> ``` 要想加载网页需要在Java中调用: ```java WebView view = (WebView)findViewById(R.id.webview); view.loadUrl("https://google.com"); ``` ## Android布局有那些? ### 表格布局 此布局以行和列的形式排列其子视图。表格航对象创建可容纳小部件的行,表格布局的最大列数取决于用最大列数分割的行。 使用表格布局如下: ```xml <TableLayout xmlns:android="略" android:layout_height="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1" > <TableRow> <TextView /> <TextView /> <TextView /> <!-- 这里有三个元素,故是三列 --> </TableRow> </TableLayout> ``` ### 框架布局 以堆栈格式从上往下添加视图,项位置用`android:gravity`属性设置,布局的大小取决于最大视图的大小。 使用框架布局如下: ```xml <FrameLayout xmlns:android:"略" android:layout_height="fill_parent" android:layout_height="fill_parent" > <ImageView /> <ImageView /> <ImageView /> <!-- 这里有三个元素,故是三行 --> </FrameLayout> ``` ## 使用那个方法来关联活动? `setContentView()`方法用于将UI与活动关联,用法如下: ```java public void onCreate(Bundle saveInstanceState){ super.onCreate(sabeInstanceState); setContentView(R.layout.main); } ``` ## 如何注册活动为主活动? 只有在`manifest.xml`中注册过的活动才能被系统访问,要注册活动如下: ```xml <manifest ...> <application ...> <activity android:name="..." /> </application> </manifest> ``` activity标签中也可以添加一些属性,比如可以指定某活动为主活动: ```xml <activity android:name=".mainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <categort android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` ## 活动生命周期? - 正在运行:活动对于用户是在屏幕上可见的 - 已暂停:焦点在另一个活动上,但是此活动依然可见 - 已停止;活动被另一个活动安全覆盖,且现处于后台中。停止的活动也是活动的,其对象依然保留在内存中 ### 活动生命周期方法 - **onResume**:此方法在活动开始与用户交互之前调用。当活动位于栈顶且准备好接收用户输入就会调用。 ![在这里插入图片描述](../../../assets/default.png) ## Intent的作用 意图(intent)是用于激活应用组件(活动、服务和广播接收器)的消息 ## 如何使用显式intent启动活动? 显式Intent指定目标组件的名称以激活组件。 ```java Intent intent = new Intent(MyFirstActivity.this,MySecondActicity.class); startActivity(intent); ``` ## 如何使用隐式intent启动活动? 隐式intent用于激活其他应用中的组件,不通过名称指定目标组件。要使得隐式的intent生效,**需要为被调用的组件设置intent过滤器,`intent-filter`在`manifest.xml`中设置**。之后可以使用隐式intent表述action,Android会自动与现有组件的intent过滤器比较,找到合适的组件 ```java Intent intent = new Intent(); intent.setAction("com.anna.chapter6.a6"); intent.addCategory(Intent.CATEGORY_DEAFULT); startActivity(intent); ``` ## 如何使用Intent在组件之间传递数据 ### 使用Intent 写入方: ```java intent.putExtra("name","Nicole") Intent intent = new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name", "Nicole"); intent.putExtra("age", 25); intent.putExtra("address", "Shenzhen"); ``` 读取方: ```java Intent intent = getIntent(); String nameString = intent.getStringExtra("name"); int age = intent.getIntExtra("age",0); String addressString = intent.getStringExtra("address"); ``` ### 使用Bundle 写入方: ```java Intent intent = new Intent(MainActivity.this,OtherActivity.class); Bundle bundle = new Bundle(); bundle.putString("name", "Ben"); bundle.putInt("age", 28); bundle.putString("address", "China"); intent.putExtras(bundle); //将bundle传入intent中。 ``` 读取方: ```java Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String nameString = bundle.getString("name"); int age = bundle.getInt("age"); String addressString = bundle.getString("address"); ``` ## ADB是什么 Android Debug Bridge(ADB)充当开发硬件与设备/仿真器之间的通信媒介 ## ADB有哪些常用命令? - device:生成已连接的设备列表 - pull:将指定文件从设备复制到计算机 - push:将指定文件从计算机复制到设备 - `install<path>`:在设备上安装应用(指定路径) ## Logcat有哪些日志级别? - 错误,使用Log.e()记录 - 警告,使用Log.w()记录 - 信息,使用Log.i()记录 - 调试,使用Log.d()记录 - 详细信息,使用Log.v()记录 ## 内部存储区与外部存储器的概念 设备内部的储存,以文件存储,属于应用私有 外部存储器存放在SD卡,所有应用与用户都可以访问 ## 共享首选项是什么? 共享首选项是轻量级机制,用于存储基本数据类型的键值对,是快速存储默认值、类实例变量、用户界面状态以及用户偏好的理想方式 ## 一个程序的数据库在哪? `/data/data/<package name>/databases` ## 如何以编程的方式创建数据库? 在Android中,可以使用`android.database.sqlite.SQLiteDatabase`以编程方式创建数据库。SQLiteDatabase类公开各种方法来管理SQLite数据库。 ## 操作数据库的方法有哪些? - `openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory,DatabaseErrorHandler errorHandler)` - `updata(String table,ContentValue values,String whereClause,String[] whereArgs)` - `query(SQLiteDatabase db,String[] columns, String selection, Srtring[] selections,String groupby,String having,String sortOrder)` - `getColumnIndex(String ColumnName)` 返回给的列名的基于0的索引,或1 - `getColumnName(int ColumnIndex)` - `excute()` 如果不是SELECT、INSERT、DELETE或UPDATE,则执行SQL语句 ## 如何检索受SQL语句影响的行数? 使用`excuteUpadataDelete()`或`excuteInsert()`方法 ## 如何访问内容提供者公开的数据? 使用`android.content.ContentResolver`类 ```java ContentResolver resolver = getContentResolver(); ``` ## 如何读写内部存储区 **写文件**: 1. 使用`android.content.Context`类的`openFileOutput()`方法打开或创建文件 2. 使用`java.io.FileOutputStream`类的`write()`方法将数据写入文件 3. 使用`java.io.FileOutputStream`类的`close()`方法关闭文件 **读文件** 1. 使用`android.content.Context`类的`openFileOutput()`方法打开或创建文件 2. 使用`java.io.FileOutputStream`类的`read()`方法从文件读取数据 3. 使用`java.io.FileOutputStream`类的`close()`方法关闭文件 ## getFIleDir与getDir的作用 - `getFileDir()`:获取用于保存的内部文件的文件系统目录的绝对路径 - `getDIr(String dirname,int node)`:在您的内部存储空间创建或打开一个现有目录,接收以下参数: - dirname:要检索的文件夹名称 - mode:文件的创建模式 ## 外部环境Enviroment的有哪些状态? | 常量 | 描述 | | ----------------------- | ------------ | | MEDID_MOUNTED | 已经在加载,可以读写访问 | | MEDID_REMOVED | 不存在 | | MEDID_UNMOUNTED | 已存在但是没有加载 | | MEDID_MOUNTED_READ_ONLY | 已存在但只读 | ## `getExternalStorageDirectory(String type)`:检索外部存储目录 `getExternalStorageState()`:检索外部存储设备当前的状态,返回Environment中的某个常量 ## 如何读写外部设备 需要使用`getExternalStorageDirectory`方法获取到外部存储的路径,然后读写过程与内部存储的读写方式相同 ⚠️:写入之前需要在manifest文件中指定所需的权限 ```xml <user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </user-permission> ``` ## 如何检索公共首选项 需要使用`SharedPerferences`接口提供的方法 - `contains(String key)`:检查首选项是否包含特定首选项,参数指定要检查的key - `getXXX(String key,XXX defValue)`:它从首选项中检索指定数据类型的值 ## 如何获取网络权限 ```xml <user-permission android:name="android.permission.INTERNET"> </user-permission> ``` ## 如何启动一个服务 可以使用`startService)`方法从引用组建启动服务 ```java Intent intent = new Intent(this,myService.class); startService(intent); ``` ## 启动的服务与绑定的服务的区别 ### 启动的服务 启动的服务**生命周期**如下: `onCreate()`--->`onStartCommand()`(`onStart()`方法已过时) ---> `onDestory()` **特点**: 一旦服务开启跟调用者(开启者)就没有任何关系了。 开启者退出了,开启者挂了,服务还在后台长期的运行。 开启者**不能调用**服务里面的方法。 ### 绑定的服务 绑定的服务生命周期如下: `onCreate()` --->`onBind()`--->`onunbind()`--->`onDestory()` **注意**:绑定服务不会调用`onstart()`或者`onstartcommand()`方法 **特点**: bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。 绑定者可以调用服务里面的方法。 ## 什么是广播接收器? 广播以intent的形式传达。要接收和响应广播,应用要包括一个称为广播接收器的组件。广播接收器不提供UI。不过,它可以创建状态栏通知,以在收到播时向用户发出提示 ## 创建广播接收器要调用哪个方法? - 创建一个类来拓展BroadcastReceiver类 - 在这个派生类中重写onReceive()方法 ## 如何注册广播接收器? 以下两种方法都可以: **在订单文件中配置** ```xml <application ...> <receiver android:name="./myReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> <user-permission android:name="android.permisson.ACCESSS_NETWORK_STATE" /> </application> ``` **以动态的方式** 使用与主应用线程中的过滤器匹配的广播intent调用`registerReceiver`方法,这个方法的签名是:`public abstract Intent registerReceiver(BroadcastReceiver reveiver, IntentFilter filter)` ## 创建一个菜单资源要用哪些元素? - `<menu>`:菜单资源的根结点 - `<item>`:用于创建菜单项 - `<group>`:是一个可选元素,允许对菜单项进行分类,从而允许共享属性 ## 创建菜单要使用哪两个方法? - 要重写`onCreateIotinsMenu()`方法 - 在这个方法中创建`android.view.MenuInflator`类的`expand`方法来拓展菜单 ## ViewPage是什么? 可以使用AndroidX的ViewPage小部件创建滑动视窗 ## 如何将主题引用到整个引用? 在manifest中将`android:thene`属性添加到application标签 ## 自定义控件要拓展哪个类? View ## setGravity怎么使用? 可以使用`setGravity(gavity,xOffset,yOffset)`方法将非常灵活地将消息条放在屏幕的任何位置 ```java Toast toast = Toast,makeText(...); toast.setGravity(Gravity.BOTTOM|Gravity.LEFT,0,0); toast.show(); ``` ## 设置闹铃到几种方法的区别? - set:设置闹铃 - setRepeating:设置重复闹铃 - setInexactRepeating:按照定义的时间间隔重复闹铃,但如果设备处于休眠状态则不会唤醒,这样更省电,即不准确的重复闹铃。 ## 常见的定位技术有哪四种? - GPS - WiFi定位 - IP地址定位 - 三角测量法 ## 如何侦听传入的SMS ```java Bundle bundle = intent.getExtras(); if(buddle!=null){ Object[] pdus = (Object[]) bundle.get("pdus); SmsMessage[] messages = new SmsMessage[pdus.length]; for(int i=0;i<pdus.length;i++){ messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]) } } ``` ## 如何监听电话状态? ```java String nameService = Content.TELEPHONE_SERVICE; TelephonyManager teleManager = (TelephoneManager)getSystemService(nameService); ``` ## Canvas与Paint的区别 Canvas(画布)表示可以绘制图形和图像的表面。提供了多种方法来绘制简单的图形、路径、位图和文本。 Paint(画笔)提供绘制富豪、文本和图形的样式和颜色的相关信息。 ## 如何画一个圆? ```java cavas.onDraw(){ // drawCircle(float cx,float cy,float radius,Paint paint); cavas.drawCircle(50,50,30,paint); } ``` ## MediaPlayer的getCurrentPosition与setOnPerparedListener方法的作用 - `getCurrentPosition()`:返回当前播放的位置,单位毫秒 - `setOnPerparedListener(MediaPlayer.onPerparedListener listener)`:注册一个回调函数,当媒体源准备好播放时,可调用该函数 ## 在哪里声明权限? AndroidManifest.xml ## 如何运行时申请权限? 调用`checkSelfPermisson(String perm)`来检查权限,以保证用户没有把权限撤销 使用`requestPermissions(String permissions,int requestCode)`来请求权限,参数一是请求的权限,参数二随便给一个数字 ## Android打包成什么? .APK

我的大学

# 我的大学 自己的大学生活居然已经结束了,从此以后,便不再是学生了。自己做学生,已经做了近20年,没想到这居然也有结束的一天,而且这一天来地如此漫不经心,一如平日。没想到埋葬我学生时代的日子,居然是那么普通,那么平淡,那么不动人心弦。以至于在那一天过去好长一段时间之后,我才猛地反应过来:哦。原来已经不再是学生了。 虽然已经到了这个地步了,已经结束了一段时间了,已经晚了。但是我还是想在这里,回忆一下我的那一段,没有任何值得说道,但又值得一说的大学生活。毕竟再晚的话,就全都忘光了。 ## Ⅰ 不算好的起点 经过三年地狱般的高中生活,我,一个非常刻苦但又并不十分努力的学生,以一个非常不理想又不算低的成绩,在一个不算好也不算坏的城市,上了一个在双非中顶尖的学校。 哈,真实矛盾又老套。 在高一的时候,我常常幻想自己即是天选,时不时做着不知所谓的清北梦。到了高二,见识过强者,认清了现实的自己把目标定为了北邮——一所CS非常好的学校。而在高三的时候,心灰意冷的我将目标定为了北交——至少是一所位于北京的211。 但是很遗憾,正所谓求之上者得之中,求之中者得之下。而像我这样的求之下者,最终当然是什么都没有得到。 *最低だ* 想想高中时候的自己,真是一个无耻的可怜虫。这些年来,我一直在说自己的注意力是多么的不集中,因此多么不擅长解决复杂的数学和理科问题。而那一年的物理和数学又是多么困难,因此我的发挥是如何如何的不好,最终成绩是多么多么的不理想云云。 但是真的只是如此吗?我把一切都归结于自己的性格是多么的不适合应付数学和物理的考试。但是我却从来没有说我细腻的感情和广阔的思维在英语和语文这两门科目上给予了我多大的优势。性格与运气只是一部分原因,我频繁的提及它们只是想掩饰另一部分原因。 我在高中的时候情不自禁的喜欢上了一个人。当然,她并不喜欢我。要否认这件事对学习没有影响,即使是对我这样的人来说也还是太难了。但是喜欢上这样一个人我并没有任何怨言。 而让我感到不安的事情是,因为被她拒绝,我神使鬼差的接受了另一个女生的示好,并与她开始了恋爱。就在高中快要结束的最后一段时间。当然,那时候的我脆弱、哀伤,没有谈过恋爱,并且处于青春期。但是这都不该成为借口,不该成为爱上一个自己本不喜欢的人的借口。 当然,在高考结束后,这段恋爱也顺延到了我的大学。现在想想,那一段时间是对自己的不负责任,但更多的是对另一个人的不负责任。她是如此的敏感、多疑、软弱、暴躁。但是这都不应该是我伤害她的理由。许多人的第一段感情都是模糊地就结束了,但是这也不能将我对她的伤害正当化。我对她的伤害不需要刻意,接受她的示好那一刻,就已经在开始了。 当然,她也在伤害着我,但是这不是我应该反思的事情,而是她应该反思的事情。直到现在,我还是讨厌谈及这段感情,但是至少经历过一段感情之后,总不至于像一只饿狗一样对待感情,这也算是少有的一点好处吧。 在大学的上半年,带着刚刚走出高中的稚嫩,我进入了大学,充满迷茫。那个时候我想要考研,目标是北邮,准备一雪前耻。而20年年底,疫情正浓。那个时候,想出校门几乎是不可能的。尽管如此,我依然绞尽脑汁通过大学的围墙。我是一个多么爱好自由的人,那个时候我觉得:墙的那边,是自由。 对于大学,至少有一件事我做对了,我选择了一个适合我的专业。当开始上C语言这门课的时候,我是多么的兴奋,我觉得自己很幸福。摸索着写下第一段`hello world`,我仿佛也感悟到了世界的美好。大一上半年让我印象最深的,无疑就是C语言这门课了。感谢教我这门课的吴老师,她对我有充分的信任。信任!对我来说,信任这种东西,是师生之间最难得、最美好、最珍贵的羁绊。她解答我奇诡的问题,放任我自由的探索自己的兴趣,以及用超出常规的手段解决她的问题。 我像一匹脱缰的野马奔驰在知识的草原上,我踏过每一寸草地,嫌弃后面的驽马跑的太慢。我迈开马蹄,远远的甩开了同伴,却也不担心迷路。在学期的一半,我就已经自学完了整本教材(按照课表,这本教材要在这个学期学完大部分,留下几章到下学期学,以及几章不需要学习),并且自己看完了《C与指针》,以及在假期看完了《C++ primer plus》。《C与指针》是一本很难理解的书,但当我在未来解决关于C语言中的指针问题时,脑海中总会突然浮现出书中内容,并在那一刻理解那段文字的意义。 另一个让我记忆颇深的是王老师的选修课:中国古典诗词鉴赏。这又是一个我十分擅长的领域,我在课堂上尽情的出风头,回答老师的问题,与他交换对诗词的理解以及交换双方的诗作,最后在下课后,八点五十分,我和他一起走出教学楼,在美丽的剑湖前散散步,然后目送他开车离开,我去711买一颗饭团。他是一个高材生,也是一个好老师。 虽然有一些美好,但是在半个学期结束之后,我还是对大学大失所望。我以为大学应该是自由的地方,学生与老师自由的交换的自己的想法,大家都有一些崇高的理想,在努力做一些很酷的事情。但是到了大学之后,我发现我能看见的只有没有什么学术氛围的教室与图书馆,没有什么理想的同学和老师,以及令人作呕的官僚又僵化的管理模式。我承认,青大的管理已经算是国内众多大学中的佼佼者了。但是即便如此,我也必须得挑明,这与我的理想存在太大的差距。这让我相信,研究生的生活大概也不会好太多,学校其实并不适合我,因此,我选择了放弃读研。 在大学的上半年结束后,我终于和她分手了。在那之后,我用了一个星期在W3CSchool学完了HTML、CSS以及JavaScript,然后大病了一场。 痊愈之后,我的大学生活仿佛正式开始了。 ## Ⅱ 最牛逼的大艺团 但是回想我的大一生活,我也还是做出了一些正确的决定的。比如,加入了大艺团。当初想要加入大艺团仅仅是因为我觉得人在大学理当加入一些社团。当大艺团到操场上进行军训慰问的时候,我被他们吸引了。 真有活力啊,如果我加入他们,我也能变得这么有活力吗? 这么想着,我递交了申请表,最终成功加入了大艺团的新媒体中心和微电影剧组。最开始接到的任务都来自微电影剧组的lt姐和yw姐(因为平时都是称呼名字,这种敏感信息就不盒了,如果不知道外号的就用首字母拼音代替了,实在抱歉)。她们两个是相当美丽、温柔又可靠的学姐。 但是刚开始接到任务的时候,我的想法却很单纯,因为当时在东校区,而大艺团的活动大多在中心校区,所以每次去参加活动大概都需要开具请假条——找到了一个通往自由的好办法!通过P请假条,我获得了自由出入学校的特权。在疫情期间,这是多么伟大的权力。 此时我还不知道,在我大一的下学期,当我开始认真的对待自己的大学生活时,我将会在这里遇到足以让我怀念一生的好朋友:小黄、聪姐、万妈妈、yn、kt、一滑、csj、hyj、wjy以及令人尊敬的童哥。 在那半年,发生了很多很有趣的事情。+7姐带我们去city walk,吃海鲜,zy姐在清明带我们去中山公园拍樱花,wjy借给我一部相机,这是我的摄影启蒙。那一天的zy姐和yn,是比樱花更美的模特。在那之后,我带着借来的相机参与了一场又一场的拍摄,从每一张都是糊照的丑照,到渐渐有几张能够被选上推文,那段时间摄影技术也算有些进步呢。 而在一场场的活动中,我与这些伙伴们的羁绊也在一点点的加深着。zy姐、+7姐和xy姐都是很好的学姐,能够很好的引领我们。而和wjy,我们两个男生私下里有很好交情,时不时约着来一场city walk。至于其他人,我们大都在大二的时候选择留在团里当部长,继续配合着工作。 小黄和聪姐,我们是经典的《我们仨》组合。当有人说”不相信男女之间有纯洁的友谊“时,我们三个人一块站出来,抛出另外两人的名字以作反驳。我们一起约了很多顿饭,一起配合着完成了很多工作,一起在去轰趴,一起喝过好几次酒。我仍然记得那年冬天雪后,我们一起去石老人海滩,在地铁站对着玻璃比划着身高,一起在积雪未消的沙滩上散步,那天的云粉粉的、蓝蓝的,那么洁白。 yn,是我喜欢过的女生。在大一的末尾,我和她曾是那么默契。我们在图书馆、在食堂那么碰巧的遇到。我曾经说过,她是那么像我曾经喜欢的那个女生。给yn看过她的照片,她也惊叹彼此的相像。但当最终被她察觉到我的心意的时候,她也像她一样,拒绝了我。理由是:“我觉得你喜欢我是因为我像她,而不是真的喜欢我。”其实啊,我自己又何曾了解过她呢?她就像我心中的一抹魅影,是我心目中最美好的伴侣的投射。我喜欢她只是因为她符合这个投射,因而她也就代表了这一抹投射。而我呢,喜欢的大概真的是你。不过呢,被拒绝了也算是毫不意外,**自己最想要的永远也得不到,这件事在过去、在未来,在我身上已经也还将无数次的发生**。不过幸而这件事没有影响我们之间的关系,我们最后还是成为了朋友,如此自然,犹如当初。后来,我们还成了搭档,而且意外的还挺默契的呢。 万妈妈,虽然和我们同级,但是她如此成熟可靠,像是靠谱的“大人”。csj呢,虽然也曾是新媒体中心的伙伴,但是她果然还是更适合声乐部。当她站在舞台中央的那一刻,整个人的风貌与气质都得到了升华。有些人就是为了站到舞台中央而生的。hyj,中途加入的超级E人,帅气又有趣,有他在饭桌上从来不会无聊,舞蹈部的“青大黄子韬”,我的同乡,也是同专业的同学,是让我爹感叹“很少有跟我儿子那么帅的人”,我知道我爹之美我者,私我也,我自己其实很羡慕你的外貌、身材、性格、智商……你只是缺了一点运气罢了,总有一天会混的比我好的。以及我们的童哥,作为常务副团长,真的是台前幕后样样精通,唱过歌、跳过舞、写过稿、拍过照、剪过片、画过图……从一个外行人到十项全能,童哥是真正的热爱并努力。 当然,还有很多人,此刻不能一一列出来回忆了,真的很感谢大家给我留下如此美好的记忆。 我还记得在大一的时候,毕业歌会结束后,和毕业的学长一起去吃饭,我和大艺团的伙伴们纵情畅饮,找自己最喜欢的伙伴们一次又一次的干杯,仿佛怎么也喝不醉。 到了大二的时候,又是毕业结束后,这次一别,可能大多数人都不会有太多的交集了。大家开始忙于考研、忙于自己的事情,只有少数人会去竞选团长的职位。而我,忙于各种各样的事务,在那个时候居然感到松了一口气。那天晚上,大家依旧推杯换盏。有了更深的羁绊的大家,想着即将到来的别离,只有将杯中酒一杯杯的饮尽,一次又一次热烈的拥抱,伤感的流泪。那时候我面对这个场景,没有落下一滴泪。只有肩上的担子卸下时的放松。 我真傻,真的。如果那时我知道那是我最后一次参加毕业歌会,我一定再喝一打酒,痛哭流涕着和每一个小伙伴都热烈的拥抱一番。可惜,我那时什么也不知道。 如你所见,我没有参加自己的毕业歌会。那一天,我在外面实习,没有办法赶回学校。就这样,错过了。我这一生,很少会为自己的决定感到后悔,但是想到这件事,只能感叹天命无常,痛苦不已。 “大艺团,牛逼!” 我多想再和大家一块喊出这句口号。但是啊……渠会永无期。 ## Ⅲ 我的舍友们 在软工系,最不缺的就是有个性的人。但是即使是在这群有个性的人当中,我也是最有个性、最乖张的那位。 我很感谢我的舍友,他们让我在宿舍里过的很不错。那些在网上见过的对舍友的吐槽没有出现在我身上。 我记得大一刚到宿舍的时候,最开始是与mc君相遇。当时RE:0正在连载,我发现我们都在追番。于是,我们成为了好朋友——短暂的好朋友。虽然有相同的兴趣,而且我也相当喜欢他,但是我们却无法相处的很融洽。 归根结底,是因为他是一个阳光、外向、开朗、兴趣广泛又正常的人。与我这种阴暗逼合不来大概也正常。但他却与宿舍另外两个人玩的很好,一个是cl君,他也与我大不相同,开朗、温柔、外向又正常,喜欢健身和运动,身上充满肌肉,大概是大部分女生都会喜欢的类型。他们两个经常约着一起健身。说实话他们两个实在是很适合做朋友。另一个人是我们的班长,说实话,我讨厌他,因为他太阳光、太开朗、太正确、太正常,简直是我这种人的反面。所以,我讨厌他。 我是一个怪胎,所以跟怪胎更合得来一些。比如宿舍里面有一个老哥,几乎不学习呢,整天要么在宿舍里躺着,要么就是在玩游戏。但是我觉得他这样挺好的,这才是大学生该有的样子。与他相近的是朋哥,他虽然也天天不是躺在宿舍就是在和我们打游戏。但是他却极其聪明,每次考试前稍加用功便能学会一学期的知识,在考试时取得高分。而且游戏还打的非常好。真是令人羡慕啊。此外就是呆哥,呆哥确实是呆呆的,而且总是在省吃俭用。但是他却也是一个温柔善良的人,虽然是一个怪胎,但是却又更像是一个正常人。 当然,宿舍更是有几个重量级的怪胎。 一位是学霸哥,人如其名,是个学霸,宿舍里的成绩担当。是唯一一个学识不在我之下的人。但是我们还是有些区别的,我只在自己认定的事情上努力,剩下的时间全部都在玩了。而他呢,大部分时间都在努力。我其实是真心的佩服他。但是我又是如此好胜,所以我们有时会莫名其妙的针锋相对,谁也不服谁。不过幸好最后我们没有选择同一条跑道,我选择了就业,他选择了读研。不再相互较劲之后,我们的关系好了很多很多。幸好在前进的路上没有他,不知道他是不是也为前进的路上没有我而长舒了一口气呢? 一位是仙不觉,或者叫秦无衣,但是他本人其实姓杨。这就已经够奇怪了吧?他是一个相当聪明而且富有见识的人,本来呢也是能成为一个正确的人的。但他偏偏没有那么做。他貌似是觉得保持正确太费劲了。于是他每天都和我们一起做着错误的事情。我们一起打游戏一起追番,一起闲的没事出去吃点好的。居然让他跟着我们学坏了呢。他每天都会说一些正确的事情,但是从来做不到。虽然每天不努力,但是凭借自己的聪明智商与神级运气,居然每次都能卡在及格线上,从来没挂科。他本人其实是那么高情商,大方,能体谅人而富有原则,却甘愿与我们做朋友一起当个怪胎,真够奇怪的呀。但是,能和他成为朋友,真不错呢。 另一位是siri哥。这个哥们,是第一个让我觉得不爽的人。刚到宿舍就开始四处找茬,这人真是一个倔脾气,谁劝也不听,只爱找茬,在宿舍里操着一口即墨话跟朋友大声的开黑。什么人啊这是。但是呢,随着日子一天天过去,我却发现,这个人在和大家开黑的时候喜欢主动承担所有人都不想玩的辅助位,会在不管是谁向他寻求帮助的时候尽力帮忙,会以一种及其拧巴的方式听取别人的建议,以及以和正常人不同的方式,思考和批判自己的人生。随着和他进一步相处,感觉他的脾气也没那么糟糕,再往后呢,我才发觉:什么嘛,这个家伙,原来和我一样,都是一个怪胎嘛。就是这个惹人讨厌的家伙,大概就是我的舍友和同学中,和我关系最要好的一位。 上面这两位,是入选我论文致谢内容的角色。 后来呢,我们专业分流,换了校区,也换了宿舍。 我和siri哥、呆哥以及仙不觉选了相同的专业,故而分在了同一个宿舍。这个新的宿舍还有六个人,分别来自三个不同的班级。真是奇怪啊。但是由于不是同一个专业,加上我的大二大三大都泡在实验室,大三大四大都在外实习。因此我对宿舍的大家也不算太熟悉。只知道其中有一个是整天说着粗鄙之语的粗鄙之人,一位退役的武警,一个帅气的令人羡慕的但是却及其擅长模仿老八的声音的家伙,还有一个努力、上进、阳光、外向又温柔的人,虽然听起来这人也是一个正常人,但我总觉得他也和我一样,是一个思考方式与正常人不同的怪胎。 还有另外两个人,我是十分确定他们就是怪胎的。 一个是振桑,振桑喜欢游戏、喜欢动漫、喜欢特摄。他喜欢这些不是因为这些东西受人欢迎也不是因为这是一种社交货币,他喜欢这些是因为他真的喜欢。和我一样。他不是一个温柔的人,而且对感情很笨拙,一副应付不了爱情和亲情的样子。但是啊,他是一个真诚的人,是一个赤诚的人。他有自己纯洁的理想,虽然他笨拙,虽然他不怎么努力,虽然他自己说自己又懒又犟。但是我知道,他有一颗那么纯洁那么真诚的心。上苍总有一天会对这样的人降下馈赠。而且,就算上苍不馈赠他,总有一天,他也能自己创造出给自己的馈赠吧。 另一个是康子,康子是一条狗,他自以为自己是一条狗,而其他人也认为他是一条狗。但是他其实是一个人。可能他知道狗山上灵活,是狗之乐也。我非康,故不知康知不知狗之乐,但是当一只狗,大概是挺快乐的。因此他选择了快乐的生活方式。所谓不知康子之梦狗与,狗之梦庄子与?康子与狗,此必有分也。此之谓物化。而这样的狗人,自然是一个不折不扣的怪胎,每天从狗嘴里面吐出莫名其妙的狗叫,但是这些狗叫传到我的耳朵里时,我却觉得蛮有道理的。我们能相互理解,大概是因为我们也是同一类人吧! siri和康,大概就是我的舍友中最奇怪的二人,也是我最好的朋友。现在总是盼望着能够回到青岛,如果是冬天,就一块煮一顿火锅;如果是夏天,就一起吃一顿烧烤。真是的,让人又多了一个怀念青岛的理由啊。 ## Ⅳ 追梦还是一起开心? 对于一个有理想的CS人,参加算法比赛几乎是一个绕不过去的话题。我还记得我第一次知道数据结构与算法还是从学霸哥哪里。有一次学霸哥出去自习完完回到宿舍,打了一天游戏的我阴阳怪气的问他这一天是去卷了高数还是C语言,还是……(巴拉巴拉列了一堆编程语言) 但是学霸哥却一脸不屑的告诉我:说了那么多其实都是一种东西,自己是去学了数据结构和算法,这是所有语言通用的。 极具虚荣心的我不甘落后,随后也去刷完了[B站王卓老师的数据结构网课](https://www.bilibili.com/video/BV1nJ411V7bd/),随后又去买了一本北大出版社的数据结构看完了,最后又去买了一本邮电出版社的《ALgorithm》,仔细的看了一遍。 当然,光说不练假把式,在看网课看书的同时也需要去刷题练手。恰好在大一的时候学校组织了一次PTA钻石级考试。虽然叫钻石级,但是钻石实际上是非常低的等级。那个时候还没有开始学习数据结构,靠自己仅有的努力考了七十多分,但是还是比学霸哥低一点。但最令我感到惊讶的是,我两个小时没有做完的题目,旁边的那个同学居然花了十几分钟就交卷了,而且考了满分。 后来我才知道,这是大名鼎鼎的wz哥,是转专业留级的同学。虽然wz哥有着很强的实力,但是他的大名鼎鼎可有很大一部分不是好名声,而这不是好名声的部分却又不是来自与wz哥。个中缘由,我也是后来才从要好的学长那里听说。 后来,就开始自己在PAT上刷题,刷完乙级刷甲级,连做带抄,总算刷完了甲级。但是甲级题对我来说,其实已经有点捉襟见肘了。毕竟自己没有受到来者的辅导,全靠自己摸索,既没有科学的方法,又没有领路的明灯(哪怕我早点发现[oi-wiki](https://github.com/OI-wiki/OI-wiki)这个仓库)。更不要提做算法题这件事和我最不擅长的算法题有多么相似了。 我做题,每次不是因为过度优化、想的解决方案太复杂而写不出来,就是因为考虑不全面而<font color=green>WA</font>,很少有能够一发<font color=red>AC</font>的时候。对我而言,做算法题常常是一种折磨。但是如同之前的很多次那样,虽然折磨,虽然不擅长,但是我一直在坚持。 后来,也跟着学校的zzm老师,加入了一个叫做软件梦工厂的群。这是一个学校里专注于算法比赛的群,里面有好几百号人,其中有很多都是往届和我目前的学长,看起来充满底蕴。里面不乏算法与工程领域的大佬。 但是这个群却死气沉沉,每次群里发点什么东西,都有一群人冷嘲热讽,阴阳怪气,语气中充满着火药味,言语中满是虚伪、谎言、算计、拉踩。在这里我仿佛看到了比我更恶毒更低俗的存在,我承认,当时我确实为这种氛围感到恶心。 本来就不算擅长算法的我,由是拒绝了软件梦工厂的一切集训,断绝了除算法比赛外一切与这个群的联系。不过在刚开始懵懂的时候,我也曾在群里问过学长们两个问题。其中有一个问题得到了一个学长热情的解答。这让曾经一无所知的我深受感动。 后来,当我得知zzm老师是如何如何的以权谋私、不劳而获、恫吓同学、鱼肉队员、排挤同僚,我深深的为自己的决定感到正确。如果当初真的一门心思搞竞赛,我一定会过一个不快乐的大学。 后来我还听说,我们学校原本除了软件梦工厂,还有一个叫一起开心的算法团队,是我们学院的周院长领导。那个学长就曾经是一起开心的成员。因为周院长采取放养的态度,大家都是老人带新人,真正的贯彻了"一起开心"这个主题。但是很可惜,当我了解算法比赛,准备进入算法团队的时候,一起开心就已经被软件梦工厂吞并了。鉴于zzm老师如此让人恶心,所以才有那么多人在群里与她暗戳戳的针锋相对。 我没去过一起开心,但是我的朋友中有一起开心的队员,却没有梦工厂的队员。因此,我主观的相信,一起开心一定是一个能够让大家一起开心的地方。 但是啊,已经没有一起开心了。 如果不能一起开心的话,那么也就没有必要一个人不开心的造梦了。于是,我的算法生涯就这样还没有开始就结束了。 ## Ⅴ 未来,309实验室 放弃了加入算法集训集训队,那么就得找点别的事情做。我那时是这么想的,因为我太想进步了。后来听说有一个叫未来研究院的地方正在招人,而且这个地方离我的宿舍很近,于是我就联系了赵叔(当时还得叫赵学长),想要加入研究院。 ![](../../../../assets/default.png) 我还记得刚见到赵叔的时候,是在21年11月月末,他穿了一件黄色的外套,手上端着一杯瑞幸,让人一看就感觉是个大厂程序员的感觉。后来他领着我在研究院逛了逛,领着我去了308实验室(刚开始的时候我们在308,后来到了309实验室,并且在那里一呆好久),这是我们办公的地方。随后他问了我几个问题,在发现我有前端基础之后决定让我跟着另一位学长搞前端。 这位学长就是ALGarth了。我记得那天下午第一次与ALGarth见面的时候,他正吃着一份看起来很不错的外卖。在跟我介绍目前正在做的项目之前,他先跟我介绍了实验室点外卖的地址,介绍了自己放在实验室的充气床,以及刚买的香烟平替——一大袋子阿尔卑斯棒棒糖。并且随手递给我一根,表示自己找个打火机点上(?)。 就这样,我的实验室生活开始了。在这里,我认识了赵叔、ALGarth、互为、银龙、大大大墨水、厨酱、金酱、光源等等很多和我一样不太正常的人,他们都成为让我受益一生的朋友。 在我刚来研究院的时候,在做的是一个面瘫线上诊疗的横向项目。这个项目说实话,写的很烂,但是让我很受益。这是一个使用Uni-APP开发的项目,通过包装一个webkit浏览器,让我们得以用web技术栈开发手机APP。在algarth(区分大小写好麻烦,后面都是小写了)的帮助下,我学会了使用git,对于前端的工程化初窥门径,以及最终于的,让我了解了前端的技术栈以及坚定了自己成为一个前端开发者的愿望。 后来赵叔和algarth给我们几个新人报名了一个学校JAVA社组织的比赛。这时是我和互为、银龙第一次合作开发。我们都没有经验,开发的及其艰难,天天在熬夜攻关。最终,因为我们的经验不足,只做出了一个半成品,与名次失之交臂。 但是赵叔和algarth的小组却拿了二等奖,几个学弟组成的小组拿了三等奖(赵叔给他们找了个开源项目,让他们包装包装,拿奖全靠口才)。对于这样的结果,我这种阴暗又好胜的人自然是及其不爽。本来已经阴沉着脸回宿舍了,但是ALgarth却给我发消息,说周末一起出去拿奖金吃个饭,剩下的钱就大家一起分了。我极力推辞,说自己没有拿到名次,哪里好意思分奖金呢?赵叔却回复到:“说什么呢,你们三个人这几天的努力,大家都看在眼里。这次就是为了试试你们的实力,后面还有大钱要赚呢!” 后来啊,做了面瘫诊疗与好停车这两个还算成功的项目,以及一个目前来看确实失败的项目,自己确确实实赚到了一笔钱。正是靠着这一笔钱,让我顺利开启了自己的实习之旅。 虽然当时将做项目和赚钱看的很重。但是如今回忆起来,才发现这在我的记忆中占比是多么的轻,寥寥数笔便写完了。原来这段记忆中,最重要的,还是和大家留下的美好回忆。 我记得我们一起在309实验室里面当作会议室的小屋里吃过好几次饭,有几次是外卖,有几次是火锅,还有一次,是本来准备去实验室的天台烧烤,结果因为买到了劣质的碳,点不着,最终烧烤变成了用平底锅炒肉。这一次让人印象很深刻,因为那时疫情正严重,学校封闭。我们不能出去吃饭,只好去美团买菜,让骑手买完之后,把食材绑到我们从楼上扔出去的绳子上,我们再将东西拽上来,因为过程艰难,所以极其难忘。虽然每次在那里吃饭都有些不同,但是每次我们都会放上一集让子弹飞,喊着已经滚瓜烂熟的台词,一起“吃着火锅唱着歌”。电影放完,饭也吃完了。只是里面这个屋子不通风,饭菜的香味经常许多天无法散去。 以及在这个实验室,我产出了两个还算有趣的开源项目。一个是输入信息一键生成电子请假条的小程序,在能够用电子假条的时候我们用这个小程序出入自如。另一个是输入信息一键生成核算预约码的项目。靠这个网站我们不用去抢核算预约时段的名额,在三天两头做核酸的时代做到了想什么时候去做核酸就什么时候去做核酸。 但是要说最有意思的还得是那个项目!那一次因为疫情封校太无聊,我们决定整个活。于是我们用一些嘉然、溜溜梅、美羊羊啥的抽象图,下面配一个二维码,打印了六七张,贴到学校的各个地方。其中有一张贴到了餐厅门口的显眼处,作为第一张。扫描这一张图片上的二维码,将会得到一个数字和一个提示,暗示下一张图片贴在哪里。就这样一张一张找下去,最后将会找到贴在未来研究院院子门前的一张图片。扫描之后会得到最后一个数字,以及一个输入框,将之前得到的数字输入经过计算后,会得到一串特别臭的数字:“114514”。这就是最终的答案,届时会告诉得到答案的人未来研究院309实验室的地址,凭最终答案可以得到我们提供的奖品:两颗溜溜梅以及一颗印有IFF(institute for future)的钥匙扣。 除此之外,我们还一起做了很多很多有趣的事情,一起去餐厅吃饭,深渊二楼的大阪烧是我们的最爱;一起打原神的深渊,比比谁先满星;被带入坑明日方舟,天天缠着Algarth给我挂助战;一起用实验室72寸的大屏幕玩“开火车”;一起看ASOUL直播和原神前瞻……原来,我有一段时间觉得在学校的时光那么开心是因为有你们啊。 当然,让我们能够拥有空间和时间去做这些事情的人,刘老师,当然值得特别的感谢。作为研究院的院长,刘老师是一个温柔又负责,知识渊博又高瞻远瞩的老师。非常感谢刘老师对我们的信任,才让我留下一段如此充实又难忘的时光。希望刘老师能够继续坚持这样,给后面的学生带来美好的回忆。 但是,最终还是要离开啊。在论文答辩的时候,我问互为:这里还是能称为家的地方吗?“互为回答我说:”不能了吧“。我其实早就知道答案如是,只是不愿承认罢了。物是,人非。曾经在实验室的那些小伙伴们,我们的last Dance已经结束了。接下来,是什么时候再见呢? ## Ⅵ ALgarth,我的挚友 algarth,就是上文提到的那个,是我的学长、良师也是我的挚友。为什么说他是我的良师呢?因为他给我解释过好多有关js的问题,其中他给我解释事件循环(event loop)时的情形,我现在还记得。此外,他也给了我许多的学习资料,以及给我推荐了许多好用的工具,这些也让我相当受益。同时,他也教给我很多人生的道理,虽然他这个人活得也就没什么道理的样子……以及前文提到的,在梦工厂的群里回答我问题的学长,也是他。 我还记得当赵叔把algarth的微信推给我的时候,我看到他的头像时候的惊讶。因为这个头像和之前帮助过我的xxx学长的QQ头像是一样的。随后他发消息进行自我介绍:“你好,我是xxx。“ 就这样,无巧不成书,缘分使我们两个本该再无联系的人相遇了。 我还记得第一次见到algarth的时候,他外面穿着那身经典灰绿色冲锋衣,里面是经典米色法兰绒衬衫。那个时候他对我说:”哎呀,学弟,没想到这样还能续上啊!“ 刚见到他的时候,我还以为他是一个靠谱的学长。因为他用很严肃的神情,配合着不协调的滑稽语气给我讲项目背景,讲git使用,讲技术栈选型,讲实验室的一些大大小小的门道。虽然他说的话有些乐子人特有的夸张、扭曲与抽象,但是大体上是正确而精准的。这些知识让我受益匪浅,我当时对他还是心生佩服的。 但是随着相处日久,我渐渐发现,这个人就是一个纯纯的啥呗二次元、互联网乐子人、抽象怪、ACG爱好者、死宅……会因为压力大又不想抽烟而买棒棒糖抽;会追一些只有到了一定浓度才会看的新番;会去知乎刷各种奇奇怪怪的问题;会去搞一些神奇小软件让自己打明日方舟更加顺利;会闲的没事的时候托着一个手柄搓尼尔·机械纪元……总之就是一个和世界格格不入的怪胎。简直是和我一摸一样,不,是比我更是一个怪胎。至少我都不会天天看ASOUL的直播。 正因如此,我和他的关系更好了。于是,在写代码之余,我们开始交流哪些番剧值得补,哪些游戏值得玩,哪些漫画值得看,哪些外设值得买……他拉着我看嘉然的直播,虽然直到现在我也还是觉得V圈没啥意思。他慷慨的把手柄借给我让我去玩NFS,帮我改进我的键盘,让它听起来声音更好听,帮我找入手G502的最低价格,一起挑战Ghost runner的结局,一块研究原神的配队和圣遗物的词条,一块打水月肉鸽,一块研究哪家外卖、哪个窗口便宜又好吃……后来他还送了我一块泥岩的音律通行证。我也曾买给他一块通行证盲盒,结果他开出来一块斥罪。最后我们一人送了对方一个不屈者的通行证呢。 algarth是那么热心,以至于每次考试我都会找他问问往年的题型,每次要买电子产品我都找他帮忙看看参数,每次遇到学校的事件都找他问问往年的情况……如同形成了路径依赖。 后来,我在外实习,他也毕业了。但是我依然在依赖着他,感谢他陪我打apex,跟我在结束游戏后一起聊一会天,陪我度过独自在外的无聊时光。 再后来,我们又一次相见,是他到北京来找我。那一次我们一块逛了漫展,逛了谷子店,看了一场演出,吃了几家餐馆。我们聊了很多话。他说:”互联网上是无法发展感情的,大家都在互相攻击。人与人的羁绊只能在线下建立。在实验室那两年,就像在玩P5,把大伙的高感度都刷满了啊!“ 等他离开的时候,我竟然有些伤感,为我这次手头拮据未能尽地主之谊,也为此次一别不知何时再见。但是我相信,只要怀着想要相见的心情,我们再见面应该也不难吧? ## Ⅶ 一段正常的恋爱 在大三的时候,我也开始了一场恋爱。持续了大概一年多。如果从外人的角度来看,这场恋爱应该是失败的。大概就是一个普通的男大和一个普通的女大谈了一场普普通通的恋爱最后因为各种磕磕绊绊而最终分手的故事。没错,只有在谈到恋爱的时候,我才会承认自己是一个普通人,是一个正常人。 但是就我自己的感觉来说,这只是一场结束了的恋爱,而不是一场失败了的恋爱。至于为何我这么讲呢?且听我下面分析。 这场恋爱是普通的开始,普通的发展,普通的高潮,普通的结束,可能与他人的恋爱别无二致,因此就没有必要详细的讲述我的恋爱故事了。 我只想谈谈我的感觉。这次恋爱,自然是有喜有悲。当得到了出乎意料的小惊喜,当携手走在海边,当遇到挫折时受到对方好心的安慰,那自然是其喜洋洋者也。当受到蛮横无理的指责、当受到莫名其妙的冷落,当看到自己仅有的几件因为没钱添置穿了好几年的衣服时,那自然是感极而悲者也。有喜有悲,人生才会有趣,这是我觉得这场恋爱成功的第一个点。 此外,恋爱也是一次很好的体验,如果不是一起逛过那么多次小吃街,我不会知道台东的松河路一号、金丝牛肉饼,李村的花溪牛肉粉、茶油臭豆腐、车轮饼、鸡蛋汉堡、熏肉大饼、拌鸡架以及鲍师傅的肉松小贝的美味,如果不是一起喝过那么多次奶茶,我就不会知道喜茶的多肉葡萄,茶百道的生椰西瓜,一点点的冰激凌红茶、茶话弄的桂花引是我喜欢的滋味,如果不是逛过这么多次街,我不会喜欢逛KKV、名创这样的精品店,如果不是出去吃过那么多顿饭,我不会知道祥子家和厨大匠这两家好吃的小店……或许这些都是一些消费的诱惑,但是能够知道如何取悦自己也是重要的一课。能够了解更多符合自己喜好的东西,这是我认为这场恋爱成功的第二点。 以及啊,通过一次恋爱,让自己知道如何正确处理和亲密之人的关系,如何让亲密之人开心,又如何让自己开心。自己喜欢什么样的人,又适合什么样的人……如何和喜欢的人相处,又如何和自己相处。这一次之后,大概对自己也有了更加深入的了解吧。 但是一场恋爱,何必总结出个一二三四的功过得失? 我们分手的时候,是一个工作日的早上。我知道这一消息之后,如常去公司工作。过了一个小时之后,我觉得自己必须做些什么,才能章明自己已经是孤身寡人了这回事。于是我从公司后门出去,面对浩浩汤汤的汤逊湖,我摘下手上的戒指,说着希望湖女祝福她,随后将戒指扔入水中,可惜只激起了一点点的浪花。有诗道: ***誓言银戒指,一点落水声*** 随后我就回去继续写代码了,一如既往。 大学谈一场回忆起来没有无尽的懊悔,没有滔天的怨恨,分手时平平淡淡的恋爱,不就已经算成功的了吗?难道还要奢求什么吗? ## Ⅷ 大学的结束从实习开始 因为没有要考研的计划,所以我在大三下学期一开学就开始准备找实习,为后面正式工作打基础了。 现在回想起来,自己的大学生活,似乎不是一个瞬间猝死,而是缓慢的凋亡。这个凋亡的过程,从我找到去实习的时候开始。 在23年的二三月份,新年伊始,疫情结束。大家带着刚刚从阳性恢复过来的躯体投入正常的工作和学习。我也终于可以,也必须找实习了。因为这是最好,也是最后的机会。我本以为凭借自己这些年在课上积累的知识,在算法网站刷的题目,在实验室积累的经验,能够让轻松找到一份合适的实习。但是疫情之后春天却是一片凛冬。 *winter is coming.* 在那个春天,我每天都在优化简历,看机会,投简历,准备项目,背八股文,复盘面试,刷leetcode,看面试题……每天都是匆匆忙忙,慌慌张张,心里七上八下不知所措,对自己对未来充满失望。而同时,和前女友之间的裂隙越来越大,我承受的经济压力也越来也大。那一段日子真是难熬啊。 但是啊,在4.18号,我在OneNote上写下了这么一句话: *今天闻到了许久不曾闻到过得花香。* 那是在从研究院到食堂的路上,一株西府海棠开得正盛。花朵如此洁白,闪着粉色的红晕,如此的健硕,如此的娇嫩,如此的完整,如此的鲜艳。我仔细观赏了这一片美丽的脸庞,心情仿佛好了一些。我这才意识到自己是多么迟钝,是怎么样的做了一件蠢事,原来”春色如此“! ![](../../../../assets/default.png) 那个时候,还有另外一件让我开心的事情,有一个我还算满意的公司让我进入了第二轮面试。不久之后,我就收到了他们的口头offer。好事居然真的发生了!我凭借自己这些年在课上积累的知识,在算法网站刷的题目,在实验室积累的经验,在这春日的凛冬中也如同这株西府海棠一般盛开了! 五月十四号,我兴冲冲从学校请假,准备出发前往实习。随后的一年里,我辗转各地,实习、旅行、在家休息,仿佛自己已经不属于学校了。我与学校的联系,我与学生这个身份的联系,正在逐渐的衰弱、枯萎、凋零。那时候我还不知道,此刻到我毕业,我还能在学校里正儿八经的呆着的日子,还有50天。 ## Ⅸ 在校倒计时 去年五月,我从没想过,自己这一年能呆在学校的日子还有50天,更没有想过,当有一天从这里离开的时候,会觉得有一丝丝遗憾,有一丝丝不舍,有一丝丝怀念。那个时候我一心只想赶紧毕业,摆脱学校的束缚,开始工作生活。 所以当我实习结束的时候,我先回家呆了一个多月。这一个多月里,我把找实习的时候走过的心路又走了一遍。从踌躇满志,到心灰意冷,再到豁然开朗,柳暗花明。这个时候真的很感谢我的妈妈一直陪在我的身边,每天照顾我的饮食起居,跟重要的是,每天都顺着我的心情,不断给我打气加油。也幸好自己一直坚持,不曾放弃。 拿到offer之后,我给自己买了一台相机,随后,在家里和亲人们过了一个快乐的中秋节和国庆节。随后,回到了学校。随后,我给自己安排了一场旅行,一个人去了已经想去了四年的南京。这一次旅行是我玩的最开心的一次。随后,为了赚够来年三月到北京实习的房租和生活费,我又开始去刘老师的公司实习。在那里和互为与银龙一起度过了一小段快乐但又辛苦的时光。从我五月出去实习到从刘老师的公司辞职,我呆在学校的时间只有六月回学校考试、过端午节,以及十一结束之后。这一共只有9天的时间。 随后,12月来了。这一个月,是我四年来在学校里最开心的一个月。12月的学校,是很舒服的,因为夏天没有空调,而冬天的暖气却很足。这个月,因为没有课程安排,没有考试,所以我是如此的自由。每天睡到八九点自然醒,然后去食堂美美吃过早饭,然后开始写[奉纸填词](https://github.com/charlesix59/fill_poem)这个开源项目。这个项目完全按照我自己的想法去进行,我自己进行技术选型,自己去做产品设计,自己做UI设计,自己做方案设计,自己开发前端,自己写了一个简单的后端,自己去做数据爬虫和数据处理……没有预期目标,没有DDL,但是我做的那么开心。每天看着自己写出的一行行代码忍俊不禁。 代码经常就是一写就到中午,随后草草吃个午饭,然后下午写累了就出去散散步。我从学校为中心,沿着青岛扭曲嶙峋的路网向四面八方探索,我向北上山,向南看海,向西进入繁华的闹市,向东进入安静的富人区。我总是娴静的漫步,一路上或者想想项目的设计,或者构思自己想写的小说的剧情,神游八方,意趣盎然。 这其中我最常走的路线,还是香港东路、麦岛路、东海东路、海游路这一圈。因为可以走到小麦岛和海之恋公园,海岸线的风景非常美。虽然小麦岛这一年都在封路修地铁,但是我还是忍不住一次又一次的去到小麦岛,感受那悬崖边上的海风。 到了下午,自然是要吃点好的。这一餐,一般都是经过我的精心构思的,要知道自己想吃什么,需要经过深思熟虑!但是晚上这一顿,我偏向去吃炸串卷饼或者麻辣烫,也很爱披萨、炸鸡、方便面炒鸡与塔斯汀与KFC这种昂贵却又便宜的快餐。但是最开心的还是要说那几次! 有一次和siri哥去台东,金丝牛肉饼溅出的热油洒了他一身,另一次和siri哥去李村,我推荐的低价美味收到了他的大力好评,还有冬至的时候和仙不觉去吃好吃的水饺,还有那天为了让振桑和不觉见识到撒了siri哥一身的牛肉饼,我特地跑了一趟台东给他们买了回来。以及我想一次又一次重复的,我们四个人的自助小火锅。提到美食,总是有满满的回忆啊。 至于晚上,那自然是宿舍一起开黑,用变形的操作和妙语连珠的狡辩引起一阵阵笑声的美好时刻。呆哥每每被我们逗笑,都会评价道:”今天太开心了!“ 是啊,今天太开心了。那一个月,每一天,都太开心了。 到了1月,我回到家里,处理了一些事情,做了个小手术,生了一场病。又是麻烦妈妈在一旁悉心的照顾,只要有她在,我要考虑的事情总是很少很少。随后,和家人们过了一个开心的大年。到了正月十八回学校的时候,我不知道我呆在学校的日子还剩下最后十天。 其中有三天是在去3月1号去实习之前,那段日子在忙于处理各种学校的事情,准备外出实习,时间被肆意的浪费了。当我再回到这座城,这个学校的时候,已经是毕业答辩的时候了。 答辩前一天我才回到学校,处理各种各样的事务,修改论文,打印论文,准备稿子,完善ppt,收拾宿舍的铺盖,和宿舍和实验室的朋友打了个招呼……第二天是论文答辩,我被分到了下午场,于是中午的时候,我背着电脑,来到了海之恋park,坐到面朝大海的长椅上。那天是个晴天,但是海雾弥漫,遮天蔽日。坐在海边,如漫步雨中,我就这样打开电脑,修改和记诵稿子。时不时看看面前的碧海,自己的紧张和疑虑就这么被消除了。 当晚上得知自己顺利通过了答辩时,又免不了和舍友一起去吃饭庆祝。第二天又与实验室的大家吃饭唱K,那一晚我罕见的亢奋,久违的喝了酒,而且又是那种怎么也喝不醉的感觉,因为我知道,在他们面前,不需要隐藏自己的内心,不需要故作矜持。我跟银龙碰杯,跟光源碰杯,跟algarth碰杯,跟厨酱碰杯,跟大大大墨水碰杯,跟赵叔碰杯……晚上我们一起唱着伍佰的last dance,为我们这一群即将各奔东西的朋友们奏响骊歌。 而这几天过去,回到北京之后,我的大学余额就仅剩四天了。再回来,就已经是毕业前夕了。这几天,我急匆匆的从一个地方赶到另一个地方,以为用眼睛扫描过,用脚步丈量过,就可以将记忆中一切打包带走。但是后来我知道,我错了。记忆中的一切,我带不走,却又逃不开。那天晚上,我一个人走上小麦岛,望着漆黑的天空中挂着一轮明月,无尽的黑暗的深渊上闪烁着明亮的波光,海风和涛声将我包围,我喝光了那一罐可乐,忽然想明白了。 那一天,我写下了这样的一篇散文: ![](../../../../assets/default.png) 随后,在毕业的那天,我和siri哥、康桑、振桑以及学霸哥一起吃了一顿晚饭,看着他们,留在那座充满海雾的城市,在浮山后租了一个宽敞的房子住在了一起,我既羡慕,又欣慰。在那之后,我要去北京,学霸哥要去杭州。我和我的舍友们,也离分了。我与这座学校,也离分了。我与这座城市,也离分了。 但是啊,你记住,你们记住,有些联系不会那么容易切断。我会顺着这份羁绊找到你们,一次又一次。 ## Ⅹ 我的大学 这篇文章,从突发奇想开始构思到写完,历时五天,凡一万四千余字。虽然文中有些地方我记不清楚,只取大意。但总体上,我是诚实的。我诚实的回顾了我的大学生活,遍历着这四年的的人生轨迹。 虽然我的大学没教给我多少知识,也没让我有多少收获。但是我还是要感谢它,如果不是选择了这个学校,我也不会遇到那么多有趣的人,度过这四年有趣的时间。 在大学时,我曾无数次憧憬着毕业之后的日子。但是当他真正到来的时候,有那么一瞬间,我居然想要逃避,我居然感到不舍,我居然想要想要抓住时间的衣角,让他慢下来,等我一下。 但是就像我说的,“明日亦有明日未竟之美。”正是这份对未来的憧憬,一直支持着我一步步走到现在,也将继续支持我一步步走向未来。所以,虽然不舍,我也不会停下脚步,我会继续往前,不断往前。 *進め,進め!* 只有这样,我才能拥有与过去重逢的勇气,只有这样,我才能再回望过去的时候感慨:“看吧,虽然受了那么多苦,但是我的选择果然是值得的。”

社会观察——性别对立

# 社会观察 第一篇 男女对立 现在男女对立的现象已经不仅存在于网络之中,更顺着网线蔓延到了现实世界…… ## 经济,此间万物的根本 我们回顾世界各地的女权运动,可以发现,**女性获取政治地位通常发生在女性获得工作的权利之后**。女性广泛的获得工作条件从家庭主妇的身份中脱离出来是在第一次工业革命之后。当社会生产的中心从农村、农业转换到城镇、工业之后,越来越多的人从农村搬迁到城市,进入工厂工作。 当人们的工作性质从繁重的农业劳动变为枯燥的流水线之后,男性与女性在体力上的差距逐渐消弭。越来越多的工作,女性与男性的工作效率相差无几,甚至高于男性。随着城镇化的深入,更多的第三产业的发展,越来越多的女性赚到了更多的钱,在经济上,他们不必依靠男性,可以维持自己的生活。 至此,女性开始尝试从传统的地位中脱离出来,但是她们却四处碰壁。由于一些传统的价值观,女性在政治和经济上受到诸多的限制。于是,**女性开始追求自己正当的权利,包括:选举与被选举权,工作权,同工同酬,生育与性的权利。** 我们必须说,这些权利是十分正当的,它们需要,而且必须,得到或逐渐得到实现。我们观察世界各地世俗国家,不难发现上述的权利大都逐渐的都实现。 以选举权为例,它们实现的时间集中在20世纪20年代左右。一次世界大战结束后,大量的男性死亡,而经济则继续保持发展。于是更多的工作机会对女性敞开,得到更多话语权的女性,追求自己的政治权利是理所应当的。 而发展中国家的男女平等呢,则在20世纪50年代左右兴起。因为大量的国家脱离殖民统治,获取独立。大量的民主或共产政府为他们国家的女性提供了相应政治权利。随着经济的发展,工业化的推进,这些国家的女性权利也逐渐得到完善。 > 在1920年批准《[第19条修正案](https://zh.wikipedia.org/wiki/%E7%BE%8E%E5%9C%8B%E6%86%B2%E6%B3%95%E7%AC%AC%E5%8D%81%E4%B9%9D%E4%BF%AE%E6%AD%A3%E6%A1%88 "美国宪法第十九修正案")》之前,各个州已经通过了立法,允许女性在不同类型的选举中投票;有的只允许女性在学校或市政选举中投票,有的则要求女性拥有自己的财产才能投票,有些领土则向女性提供充分的选举权,只是在成为州之后就将其剥夺。[[53]](https://zh.wikipedia.org/wiki/%E5%A5%B3%E6%80%A7%E5%8F%83%E6%94%BF%E6%AC%8A#cite_note-53)尽管具有合法选举权,但1965年之前,黑人女性的这项权利在南部许多州实际上都被剥夺了。 > > —— wiki 美国女性的政治权利 我们说回到中国,为什么中国如今的男女对立如此严重呢?难道是中国的女性权利得不到保障吗?我认为中国政府在这一点做的相对较好。男女对立如此严重,并非主要是社会制度问题。 男女对立的出现,是近些年的事情。女权的出现,最早也是改革开放之后出现的。为什么1945年之前不会有男女对立呢?因为那时女性是男性的附庸,不存在所谓的对立。而改革开始之前呢?大家一穷二白,忙于社会主义建设与阶级斗争,恐怕无暇与性别的对立。 在改革开放的初期,男女对立仍然极不明显。甚至在进入新世纪之前,女性主义在中国都完全不流行。那时大量男性吃到了改革开放的红利,而大量女性呢,吃到了男性吃到了改革开放的红利的红利。 **到13年之前,虽然女性主义在中国已经有了自己的受众与市场,但是由于经济的快速发展,人们仍致力于勤劳与务实的致富。如果经济增长的势头能够持续下去,那么中国应该也能够形成类似欧美的两性关系**。可惜的是,自13年以来,经济增长速度的放缓、贫富差距的增大与社会阶级的固化都冲击着每一个普通人。 面对令人窒息的生活压力,普通人与富人的子嗣面对的挑战完全不同。富有的人,可以完全不必担心男女对立的问题,而普通人则无法回避,无从选择。 对于普通的女性,**她们无法得到适宜的工作**。那些印象中更适合女性的工作竞争激烈,更因这些岗位男女比例的失衡,使得雇主更愿意吸纳男性加入。我必须在这进行说明,这种行为是正常的也是自然的。首先,对于普通的岗位,有一定量的男性是必要的,因为一些体力活人们更倾向于让男性去做。并且,如果男女比例过大,会使数量少的群体被特殊化或边缘化,是不利于行业的生态的。这样,会**使一部分女生产生女性被社会鄙视的感觉,或者会认为男性抢走了她们的工作,从而对男性产生愤怒**。 对于普通男性,他们无法得到适宜的工作,得不到足够多的薪资,那用于追求女性的部分自然就会减少。而追求异性的代价却并未减少,甚至是逐渐增加的。于是**男性会认为女性比以往更加拜金,更加贪婪,于是对女性产生愤怒**。 不仅是工作的压力增加,**女性通过婚假来达到阶级跃升的可能性更小了**。在经济快速增长的时期,社会上充满了各种各样的机会。如果希望通过特殊的途径来增加自己的财富是相对较为简单的,也较为体面。当经济放缓时,希望通过婚假的方式实现阶级跃升,不管对于男性或女性,都会遇到更激烈的竞争,即使达到自己的目的,也会承受更多的非议。 同时,两人搭伙过日子的难度也有增无减,昂贵的房价,愈演愈烈的消费与难以维系的生育投入,都使得**男女双方对待婚姻更加的谨慎**。这两个条件叠加起来,使得两性在面对结婚这个话题时都格外的挑挑拣拣,疑神疑鬼。这样的行为无疑在消磨双方的精神耐心与爱。**对爱人与婚姻的失望可能会被放大到整个异性群体。** 不仅如此,消费主义的盛行无疑也在将男性与女性的距离拉开。**对于消费来说,女性的价值大于儿童大于男性**。我们从商超的布局就能看出来,第一层多是珠宝化妆品奢侈品这种高溢价的商品,再往上可能是女装或快时尚的衣物更多,再往上是儿童乐园与童装、儿童兴趣班与育婴商品之类。男装要么在更上层,要么散布在角落里。最上层是吃喝玩乐这种功能性与目的性更强的消费作为一次逛街的终点。**消费主义的盛行,对于男性与女性都意味着更大的经济压力**。女性需要买更多的化妆品与潮流的服饰,以实现自身对于美丽的追求,表达自身个性价值以及追去与世界和潮流的同步,同时男性也将一定程度上为这种花费买单。 **消费主义并非不好,而当经济下行与消费主义的盛行相遇时,无数的矛盾就会迸发,男女对立只是其中的一种。** 对于商人,他们需要拆解的传统的家庭,因为单身的男女或者恋爱中的男女能够有更多的消费能力。当男性与女性结婚成家时,他们花费在餐馆、娱乐场所与商场上的价值不出意外的将会减少。但当他们决心结婚来应对消费主义时,高额的房价又将榨干他们最后的一滴血。我们不得不承认,**年轻人已经进退维谷了**。 总结一下上述内容,**当经济经过一段时间的快速发展之后陷入低迷,而又有着巨大的贫富差距和较低的社会福利时,青壮年人就会感到理想与现实的落差。当这个落差不能被抹平时,通常就会爆发社会冲突**。目前不仅是男女对立,意识形态的对立、阶级的对立与地域的对立甚至民族的对立都同样的明显。 ***在迷茫的绝境中,人们本能的将责任甩给另一群人,只需要一点小小的引导,就能引发两派的冲突***。 ## 舆论,推波助澜的帮凶 微博、贴吧等社交平台不仅仅是男女对立的主战场,也是这一现象产生的引导者。在经济如是的背景下,他们引导了男女的双方的对立。 他们成为主战场的原因容易理解,而引导对立的原因却有点曲折。**以这两个平台为例,他们引导男女对立恐怕并非平台刻意为之,但是却是必然现象。** 这一切的根本原因便是受众的不同。 几年前的贴吧还不是男厕所,而是一个供大量同好交流经验与技术的平台。大量游戏、电影、动漫、小说的爱好者聚集在一起相互讨论与分享。几年前的微博也不是女厕所,而是相当多的明星与机构与普通人交流与分享的平台。人们聚集在一起通常是为了追星。他们二者的功能决定了他们的受众构成——贴吧的使用者大都是男性,而微博的使用者更多的是女性。 当然,只有受众并不构成充分条件,**另一重要的部分是平台对负面的、对立的、劣质的内容缺少正面的管理措施**。微博在这个方面已经是积重难返了,在成为女厕所之前它已经引起了数次追星族对其他人的攻击与诽谤。它是一个管理极度缺失的平台,除了某些敏感的言论,你几乎可以在上面说任何话,肆意侵犯他人的权利,攻击侮辱诽谤他人而几乎不需要付出任何代价。而平台的管理者在很多时候是起反作用的,他们不仅允许使用金钱燃起或消降热度,更默认购买使用机器人水军的行为。 贴吧在几年前还存在一个十分强力的民间自治组织,叫做吧务组。如今,这个制度恐怕濒临分崩离析了,为了热度与讨论度而牺牲专业性与自治性,导致如今的贴吧在言论的令人不适程度与思想的扭曲程度恐怕无人能敌。 在微博上的某些妖魔鬼怪在胡作非为的同时,其他人群在各种平台进行了不同程度的回击,其中以贴吧的回击在声量上最大,态度也十分激烈。微博上某明星的支持者与贴吧上的非议者相互攻击能够被看做是当下男女对立的雏形。 到此为止,**两个平台都完成朝向男女对立的首要战场的演化:某个性别占主导的受众构成、不受限制的劣质与负面内容,以及对冲突与话题的追求。** 虽然这两个平台依然承担着自己曾今的任务,但是最主要的街面上,已经充满着硝烟与恶臭。 不过还有一个问题,对立内容的生产者从何而来呢?我们绝对不能否认,一些生产者只是对自己的遭遇感到愤怒与不满,而在网络上宣泄自己的负面情绪,人自有恻隐之心,对这些人应该援以善意的问候,而非精心的引诱与利用。除此之外,绝对是有大部分人是出于某种利益而进行如是行为。一个原因是境外势力的煽动,我认为这种猜想可以被忽略,即使真的有境外势力,他们也没有如此大的能量与体量。**最主要的原因还是对流量的追求或者输出的观点能够为自己带来好处。** 前者容易理解,比如咪蒙,依靠热点话题带来的流量吸金。后者其实也常见,从男女对立上受益的势力有很多,比如部分情趣用品、某些单身经济的实体行业,以及很多受众性别单一的商品都可能从中谋取消费者的关注。 恰好,此时有两个广阔的舞台仿佛特意为他们搭建,能够让他们尽情演出。**在他们巧妙设计的剧情下,女性与男性之间的关系形同水火,势不相容。他们扭曲事实、断章取义,试图用一面之词、只言片语去评价一个人**——多么可鄙的一种行为。 当社会中男女对立被挑起时,其势如燎原烈火,恐怕很难再被阻挡了。 而如何男女双方如同上好的柴火如此容易引燃如同积怨已久? ***看过当下,或许我们还应该回顾从前。*** ## 历史,物是人非的困境 上文已经说过,在47年之前,女性一定程度上是男性的附庸。不只是中国,目前世界上所有的主流国家,在进行工业化之前,男性的地位都要高于女性。工业化之前,劳动主要以体力劳动为主,男性创造的价值要高于女性。况且女性要承担相当繁重的生育与养育的任务,所以主导了生产力的男性,也就主导了社会的结构。 古代中国的男女关系又有自己的特点,现在主流的学者喜欢叫民国之前的中国“封建中国”,但是很奇怪,中国从秦朝以来就已经废除了封建制度,改为郡县制。那为什么我们叫古代中国封建呢?我认为封建的是国家的cell——家庭。 我们中国人十分重视宗族,孰为宗,孰为祖,素以为重。在一个家庭中,最年长的家长一般占到绝对的话语权——即使她不掌握最多的话语权。什么意思呢?就像红楼梦中的贾府,贾府中表面上的话事人应该是贾赦,而实际上贾政却拥有更多的权威,而贾府的大小事物却由王熙凤统管,而贾府中言语最有重量最不容反驳的却是贾母。古代中国的家庭地位就是这样:**嫡长子优先,能者为大,长者为重**。嫡长子虽然是理论上的话事人,但是有能力的人通常说话会更有分量,而一家中最年长的人通常说的话是最重的。 这样就形成了一种层层剥削的封建制度。所以封建制度对人的压迫不限于男女,只是**同阶层的男女,女性的地位通常比男性低一层**。这一层的差距是血淋淋真是存在的,但却并非不可消弭。 我们印象中古代有权势的男性都是三妻四妾,花天酒地。而现实是,按照传统,古人是坚定的一夫一妻制的支持者。林语堂认为,读书人、传统世家大族的后代通常都是坚持一夫一妻的。嫁到这种家庭的女性,通常拥有较高的家庭地位。可能在明面上只负责相夫教子,而关起门来就能当起一家之主。不过古人的一夫一妻制有些特殊,它应该被描述成,一夫n妾(n>=0)。古人纳妾,通常需要征得妻子的同意,甚至有些女性为了减轻自己打理家庭、生养孩子的压力会主动让丈夫纳妾。妻与妾的地位有如云泥,发妻决不能被轻易抛弃,更不允许被其他人欺侮,不然男子会受到长年的羞辱与非议;而妾则是可以随意赠送的东西。**这对女性不公吗?当然不公,极其不公,但是要知道,在那个时代,妾并不是唯一可以被随意赠送与抛弃的东西**。 说了这么多,只是想说明一点:在古代,<u>同阶级</u>的男女组成家庭,家庭内部是有消弭男尊女卑的可能的。 而说明这一点,只是想让大家认识到,古代的男女不平等,并非如大众所想,更多的存在于家庭之间。**真正体现重男轻女的是二者的社会地位,而非家庭地位**。 古代的社会对女性的发展的可能性的限制是十分严重的。比如女子无法参加科举考试,鲜能从政,不可从军,更枉谈成为军官,不可参与宗族的祭奠、没有孩子的冠姓权,甚至被认为是没有传宗接代的能力……**除了对女性地位的限制,对女性人格的限制也同样甚至更为严重。女性被认为是弱势群体,甚至被强制变为弱势群体**。最著名的是在宋末之后,裹脚的习俗在女性之间流行,这种行为是及其血腥与野蛮的,是优势群体对劣势群体的强制臆想与人格压迫。 不过我们同时需要说明一点,**当女性被打压成为弱势群体,失去一定的权利的同时,她们有被赋予了一些新的权利**,比如不需要被强制征兵、不需要强制服徭役、可以较少的从事劳动生产等……同时,男女对立中很重要的一种东西——彩礼,这在这种背景下出现了。关于彩礼,不管是给到女方还是给到女方的父母,或是为了从女方手中“买下”闺女,或是给女方作为生活的保障。不管系何种情况,女方的父母都有义务给予自己的闺女一些嫁妆来保证自己的闺女在过门之后的生活。 我个人认为,**这种在权利被剥夺时被赋予的权利,应当具有原子性**。与其在彩礼的问题上挣个高下,不如保障女性在性与生育方面的决定权,当这个社会把被剥夺的权利返还给女性时,那么女性被额外赋予的权利也应该并且应当被女性自然的放弃。 不过历史中相当有趣的一点是,我们观察各个朝代的社会状况时,有时会觉得社会在倒退。比如木兰诗,是北朝民歌,那时巾帼英雄还被津津乐道的传颂;到了唐朝,女性依然有骑马打猎种地劳作的权利;到了宋朝,还有许多女性的文学方面展露头角,引领风骚。**这一情况的改变是在宋末,至于明朝,对女性的压迫就已到达极致……而清承明制,现代中国又一定情况承清制。** 在改革开放的初期,我们一度看到许多乱象。我们必须承认,重男轻女、男尊女卑的观念一直存在流传到如今。随着中国经济与产业的发展,女性的社会地位逐渐提高,那套从明清继承而来的封建糟粕已经不适于当今社会了。这便是这节标题说的物是人非——**因为历史的惯性,男女不平等的现象一定程度存在,而女性已经不是之前的女性了**,她们有着自己独立的思想,有着自己独立的经济能力。社会经济的结构变革,社会制度也必须要变革,**当女性不再在经济上附庸男性时,男女的平等便势在必行,而这一变革已经取得相当大的成效了,并且应当持续推进**。 不过坏消息是,这种变革的推进似乎遇到了阻碍:**当社会经济发展停滞时,这种变革就一定程度上会受到阻碍**。要完全把男尊女卑、男强女弱的思维从中国——尤其是中国的广大农村——消除看来还有一段路要走。 **而单单依靠的经济的力量是不稳定,我们同样需要法律与制度的力量**。 ## 法律,主观善意的错误 我们现在使用的刑法是在1980的颁布,在那个时代,女性的社会地位还不如如今这样平等,大量胚胎鉴定、拐卖妇女、嫖娼强暴的事情发生,所以那一版刑法有专门注意这一点并且制定了许多保护妇女儿童权益的法条。 但是随着思想的开放,有人意识到**对弱者的特别保护本身也会引发对弱者的歧视**。比如刑法的如下条款: > 第二百三十六条 以暴力、胁迫或者其他手段强奸**妇女**的,处三年以上十年以下有期徒刑。 > > 第二百三十七条  以暴力、胁迫或者其他方法强制猥亵他人或者侮辱**妇女**的,处五年以下有期徒刑或者拘役。 > > 第二百四十条  拐卖**妇女、儿童**的,处五年以上十年以下有期徒刑,并处罚金;有下列情形之一的,处十年以上有期徒刑或者无期徒刑,并处罚金或者没收财产;情节特别严重的,处死刑,并处没收财产 > > ——《中华人民共和国刑法》 这些法条的出发点是好的,也是正确的,但却并不完美。除了上文所说的原因之外,它在一定程度上忽视了男性也有可能遭遇强奸、强制侮辱与拐卖。 这些法令存在着一种性别上的刻板印象,并且将少数人的情况置于不顾。所以**当我们将其中的弱势群体改为全体大众时,不仅能够部分消除人们对于弱势群体的歧视、进一步促进男女平等,保护更多人的权利,而且也没有违背这些法律的本性,没有减少对弱者的保护**,何乐而不为呢? 如果排除立法者因为修改法条太麻烦,因为他们太忙而没时间去落实的原因,那就可能是当今的立法者并不认为男女的对立是一种严重的社会现象,并没有改变对两性的刻板印象。当然,我们无须对此苛责。法条的修改本身就是一件严肃的事情,不可一蹴而就。 不过我们的法律在一定程度上更能体现肉食者的意图,他们又是如何在高高在上的位置看待男女对立的现象呢?**也许,他们并不在乎**。 ## 政治,错失机会的手段 上一节我说他们并不在乎,并非空穴来风妄加揣测。中国是一个很大的国家,内政外交事物繁多,像男女对立这样的问题,一非政治危机,二非社会危机,三非外交危机,很难让人重视。况且以他们的年龄,这样的事情在他们看来不过是年轻男女的气盛之缘。毕竟在他们这个年代,男女小的时候也是对立仇视的,而到了青春期之后,却都互生情愫、求之若渴。他们无视了这个问题,以他们的角度,实在是正常的。 而在我的角度看,在几年前,我们完全能把这种现象扼杀在萌芽中,而且方法还有很多。这里有上中下三策: **上策,加快产业转型,降低房价,提高城镇化水平,完善医疗体系,保证社会福利,进一步开放国门,加强国际合作、加强科技投入、改善教育制度,赚更多的钱。** **中策,以法律的形式保证男女同工同酬、强迫男性与女性休同样时间的产假、承认LGBT群体的利益、强制取缔彩礼、保证女性的生育权、大力增加生育的补贴,保证男女的平等。** **下策,督促各个社交平台删除性别对立的言论,对部分以此为话题的博主进行封杀。** 这三个对策应该都是有效的,只不过**上策伤筋动骨,中策伤及皮肉,下策易于饮水**。不过,目前并没有专门针对性别对立这个现象做什么实质性的动作。不但如此,还有一些政策进一步加剧了男女之间的对立。 试问,中国目前最被重视的问题是什么? 中美关系?中台关系?中日关系?新冠疫情?芯片短期?经济复苏?生育率低?其实这些都算不上最主要的问题,**最主要的问题是,房地产**。房地产是中国的立国之本,是政府收入的主要来源,是大多数家庭的主要财富。所以一定要保证房地产的价格不跌。那是什么决定商品的价格呢?剖除政府的控制不谈,那供需关系一定是最主要的因素。当一件商品因为价格过高在市场上的流通率降低时,那它一定会逐渐降价。但是房地产并不是普通的商品,他还是理财产品——当然,对于大多数人来说,房子可能只是寓所。 **但是对于一些人来说房价就是财富,所以房价是万万不能跌的**。如果房价不跌,那么购房的人就会减少,如此房产的积压就会使很多房地产公司亏损、资金链断裂、无法偿还债务,以至破产。这对整个政府来说都是难以接受的损失。 所以政府要做的第一件事,就是保证房地产市场能够正常运转,保持房市的正常运转就是保证政府的财政,就是保护房企,就是保护已经购房者的利益,**而房地产正常运转的方案只能是保证更多的人购房**。所以这种博弈呢,至少要一个人受损失,要么是政府,要么是房企,要么是已经是购房者,要么是未购房者。**前面三种势力的能量都是极大的,所以必须要让还没有买房的人承受损失**。那么如何让这种剥削能够持续呢?回忆我们古代的家庭是如何为续的呢?莫不是长辈剥削晚辈,这样往下,只要子孙不绝,剥削便不停止。 **只要大家能够源源不断的结婚生子,那么新生儿就需要买房——毕竟现在婚房已经快要成为结婚的决定条件了——这样,这个游戏就能维持下去了**。所以为了房产,政府必须不断的促进人民结婚生育,只有这样,房地产的游戏才能继续。而青年男女结婚的压力却又如此巨大,房、车、生育,一座座大山压在他们的头上。 结婚,有山大的压力,而不结婚呢?父母的催婚,政府的催婚,单位的催婚……纷至沓来的又是各种压力。又是这样的进退维谷,毫无办法。真是,结婚,青年苦,不婚,青年苦。**如此的矛盾与高压,在不能冲击触及其他阶层的情况下,青年男女除了相互攻击,还有什么缓解压力的做法**?难道靠做爱吗? ## 女权,莫衷一是的组织 为何在此只说女权不说男权呢?应为上文已经提到过,现在主流的国家曾今都是男性占主导的社会,所以只会有女权组织,不会有男权组织。不过我在此提到这个组织并没有任何的不敬,我只是想要说明一个事实:**在中国,从来没出现过一个团结的、目标一致的、大规模的、具有里程碑意义的女权组织**。 而这其中最重要的是,没有一个一致的目标。而任何一次运动,没有统一的纲领很难成功的。而在中国,**想要为女权运动定一个统一的纲领是相当困难的。** 女权运动想要什么?男女平等?这个纲领太笼统了,他们会说,新中国成立以来,男女就已经平等了。选举权?在中国,没有选举权的可不只是女性。同工同酬?这个似乎在中国并不是一个很大的问题。取消彩礼,取消对弱势群体的特殊保护?这可能是大多数女性不想看到的。 实际上,**在中国,男女平等在社会层面实际上已经做的相当好了,问题出在个人身上,出现在思想上**。有许多人在思想上觉得男女不平等,并且以自己个人的身份作出重男轻女或者重女轻男的事情。对于这种人,我们必然不能将他们统统判为死刑,这似乎有些太不人道了。由于历史有一定的惯性,随着社会发展,这种情况一定会逐渐消失,我们需要做的只是等待。 对于现在,社会运动可能对个人的思想不起作用,我们能做的只有坚持自己男女平等的思想,然后原理那些用重男轻女或重女轻男的思想压迫我们的人。 这就要求我们自己有能够独立生活的能力,**能够做到经济独立,才能最低限度的让自己实现男女的平等**。所以在中国,女权运动这种方式并不符合我们的国情,而在网络上站队,互相诋毁也不能改变自己的处境。**与其诋毁他人,不如提升自己**。 ## 题外话:田园女权与直男癌 几年前,有两个词语比较流行,一个叫做“田园女权”,一个叫做“直男癌”。 > 田园女权,[网络流行词](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E6%B5%81%E8%A1%8C%E8%AF%8D/4604547?fromModule=lemma_inlink),“中华田园女权”的简称,指要求[男女平等](https://baike.baidu.com/item/%E7%94%B7%E5%A5%B3%E5%B9%B3%E7%AD%89/2939686?fromModule=lemma_inlink)却要男性承担主要[责任](https://baike.baidu.com/item/%E8%B4%A3%E4%BB%BB/32951?fromModule=lemma_inlink),以女权为借口追求女性收益最大化的群体。 > 直男癌一词源于网友对活在自己的世界观、价值观、[审美观](https://baike.baidu.com/item/%E5%AE%A1%E7%BE%8E%E8%A7%82?fromModule=lemma_inlink)里,时时向别人流露出对对方的不顺眼及不满,并略带[大男子主义](https://baike.baidu.com/item/%E5%A4%A7%E7%94%B7%E5%AD%90%E4%B8%BB%E4%B9%89?fromModule=lemma_inlink)的人的一种蔑称或调侃。 当时性别对立还不强烈,大部分人对于田园女权和直男癌都是持批评态度的。 但是如今这两个词几乎已经消失在网络历史的黄沙当中了。究其原因,无非是现在的网友已经完成了女权向田园女权、直男向直男癌的退化了。当他们成为主流,也就无须背负他们的前缀与后缀了。这样的结果是令人遗憾的。 笔者所在的地方依然有着一定程度的男女不平等现象,包括但不限于女性不能在男性喝酒时上桌、不能参与祭祀等,我也曾汲汲与男女的平权,不曾想时过境迁,风向的变化居然能如此之快。 支持男女平等的,从来不只是女性,青年的男性也深受男女不平等之苦。青年的男女应该是最团结的盟友,而他们的敌人永远是冰冷的现实。当青年男女开始相互攻击的时候,他们只能多了一个敌人,而少了一个朋友。 几乎所有正常的人,都能看到当下这种处处对立的环境的低劣之处,但人们并没有选择去结束或遏制这种糟糕的舆论环境。 曾认为这种处处的对立,不过是在网络中才会出现的现象。但当它开始侵蚀我们的现实时,我们还有能力去改变现状吗? 而这种侵蚀,却早已开始了。