学习资源:骆驼祥子暴雨拉车

他一声没出,喝了瓢凉水,走了出去。

街上的柳树,象病了似的,叶子挂着层灰土在枝上打着卷;枝条一动也懒得动的,无精打采的低垂着。马路上一个水点也没有,干巴巴的发着些白光。便道上尘土飞起多高,与天上的灰气联接起来,结成一片毒恶的灰沙阵,烫着行人的脸。处处干燥,处处烫手,处处憋闷,整个的老城象烧透的砖窑,使人喘不出气。狗爬在地上吐出红舌头,骡马的鼻孔张得特别的大,小贩们不敢吆喝,柏油路化开;甚至于铺户门前的铜牌也好象要被晒化。街上异常的清静,只有铜铁铺里发出使人焦躁的一些单调的叮叮当当。拉车的人们,明知不活动便没有饭吃,也懒得去张罗买卖:有的把车放在有些阴凉的地方,支起车棚,坐在车上打盹;有的钻进小茶馆去喝茶;有的根本没拉出车来,而来到街上看看,看看有没有出车的可能。那些拉着买卖的,即使是最漂亮的小伙子,也居然甘于丢脸,不敢再跑,只低着头慢慢的走。每一个井台都成了他们的救星,不管刚拉了几步,见井就奔过去;赶不上新汲的水,便和驴马们同在水槽里灌一大气。还有的,因为中了暑,或是发痧,走着走着,一头栽在地上,永不起来。

连祥子都有些胆怯了!拉着空车走了几步,他觉出由脸到脚都被热气围着,连手背上都流了汗。可是,见了座儿,他还想拉,以为跑起来也许倒能有点风。他拉上了个买卖,把车拉起来,他才晓得天气的厉害已经到了不允许任何人工作的程度。一跑,便喘不过气来,而且嘴唇发焦,明知心里不渴,也见水就想喝。不跑呢,那毒花花的太阳把手和脊背都要晒裂。好歹的拉到了地方,他的裤褂全裹在了身上。拿起芭蕉扇扇,没用,风是热的。他已经不知喝了几气凉水,可是又跑到茶馆去。两壶热茶喝下去,他心里安静了些。茶由口中进去,汗马上由身上出来,好象身上已是空膛的,不会再藏储一点水分。他不敢再动了。

坐了好久,他心中腻烦了。既不敢出去,又没事可作,他觉得天气仿佛成心跟他过不去。不,他不能服软。他拉车不止一天了,夏天这也不是头一遭,他不能就这么白白的“泡”一天。想出去,可是腿真懒得动,身上非常的软,好象洗澡没洗痛快那样,汗虽出了不少,而心里还不畅快。又坐了会儿,他再也坐不住了,反正坐着也是出汗,不如爽性出去试试。

一出来,才晓得自己的错误。天上那层灰气已散,不甚憋闷了,可是阳光也更厉害了许多:没人敢抬头看太阳在哪里,只觉得到处都闪眼,空中,屋顶上,墙壁上,地上,都白亮亮的,白里透着点红;由上至下整个的象一面极大的火镜,每一条光都象火镜的焦点,晒得东西要发火。在这个白光里,每一个颜色都刺目,每一个声响都难听,每一种气味都混含着由地上蒸发出来的腥臭。街上仿佛已没了人,道路好象忽然加宽了许多,空旷而没有一点凉气,白花花的令人害怕。祥子不知怎么是好了,低着头,拉着车,极慢的往前走,没有主意,没有目的,昏昏沉沉的,身上挂着一层粘汗,发着馊臭的味儿。走了会儿,脚心和鞋袜粘在一块,好象踩着块湿泥,非常的难过。本来不想再喝水,可是见了井不由的又过去灌了一气,不为解渴,似乎专为享受井水那点凉气,由口腔到胃中,忽然凉了一下,身上的毛孔猛的一收缩,打个冷战,非常舒服。喝完,他连连的打嗝,水要往上漾!

走一会儿,坐一会儿,他始终懒得张罗买卖。一直到了正午,他还觉不出饿来。想去照例的吃点什么,看见食物就要恶心。胃里差不多装满了各样的水,有时候里面会轻轻的响,象骡马似的喝完水肚子里光光光的响动。

拿冬与夏相比,祥子总以为冬天更可怕。他没想到过夏天这么难受。在城里过了不止一夏了,他不记得这么热过。是天气比往年热呢,还是自己的身体虚呢?这么一想,他忽然的不那么昏昏沉沉的了,心中仿佛凉了一下。自己的身体,是的,自己的身体不行了!他害了怕,可是没办法。他没法赶走虎妞,他将要变成二强子,变成那回遇见的那个高个子,变成小马儿的祖父。祥子完了!

正在午后一点的时候,他又拉上个买卖。这是一天里最热的时候,又赶上这一夏里最热的一天,可是他决定去跑一趟。他不管太阳下是怎样的热了:假若拉完一趟而并不怎样呢,那就证明自己的身子并没坏;设若拉不下来这个买卖呢,那还有什么可说的,一个跟头栽死在那发着火的地上也好!

刚走了几步,他觉到一点凉风,就象在极热的屋里由门缝进来一点凉气似的。他不敢相信自己;看看路旁的柳枝,的确是微微的动了两下。街上突然加多了人,铺户中的人争着往外跑,都攥着把蒲扇遮着头,四下里找:“有了凉风!有了凉风!凉风下来了!”大家几乎要跳起来嚷着。路旁的柳树忽然变成了天使似的,传达着上天的消息:“柳条儿动了!老天爷,多赏点凉风吧!”

还是热,心里可镇定多了。凉风,即使是一点点,给了人们许多希望。几阵凉风过去,阳光不那么强了,一阵亮,一阵稍暗,仿佛有片飞沙在上面浮动似的。风忽然大起来,那半天没有动作的柳条象猛的得到什么可喜的事,飘洒的摇摆,枝条都象长出一截儿来。一阵风过去,天暗起来,灰尘全飞到半空。尘土落下一些,北面的天边见了墨似的乌云。祥子身上没了汗,向北边看了一眼,把车停住,上了雨布,他晓得夏天的雨是说来就来,不容工夫的。

刚上好了雨布,又是一阵风,黑云滚似的已遮黑半边天。地上的热气与凉风搀合起来,夹杂着腥臊的干土,似凉又热;南边的半个天响晴白日,北边的半个天乌云如墨,仿佛有什么大难来临,一切都惊慌失措。车夫急着上雨布,铺户忙着收幌子,小贩们慌手忙脚的收拾摊子,行路的加紧往前奔。又一阵风。风过去,街上的幌子,小摊,与行人,仿佛都被风卷了走,全不见了,只剩下柳枝随着风狂舞。

云还没铺满了天,地上已经很黑,极亮极热的晴午忽然变成黑夜了似的。风带着雨星,象在地上寻找什么似的,东一头西一头的乱撞。北边远处一个红闪,象把黑云掀开一块,露出一大片血似的。风小了,可是利飕有劲,使人颤抖。一阵这样的风过去,一切都不知怎好似的,连柳树都惊疑不定的等着点什么。又一个闪,正在头上,白亮亮的雨点紧跟着落下来,极硬的砸起许多尘土,土里微带着雨气。大雨点砸在祥子的背上几个,他哆嗦了两下。雨点停了,黑云铺匀了满天。又一阵风,比以前的更厉害,柳枝横着飞,尘土往四下里走,雨道往下落;风,土,雨,混在一处,联成一片,横着竖着都灰茫茫冷飕飕,一切的东西都被裹在里面,辨不清哪是树,哪是地,哪是云,四面八方全乱,全响,全迷糊。风过去了,只剩下直的雨道,扯天扯地的垂落,看不清一条条的,只是那么一片,一阵,地上射起了无数的箭头,房屋上落下万千条瀑布。几分钟,天地已分不开,空中的河往下落,地上的河横流,成了一个灰暗昏黄,有时又白亮亮的,一个水世界。

祥子的衣服早已湿透,全身没有一点干松地方;隔着草帽,他的头发已经全湿。地上的水过了脚面,已经很难迈步;上面的雨直砸着他的头与背,横扫着他的脸,裹着他的裆。他不能抬头,不能睁眼,不能呼吸,不能迈步。他象要立定在水中,不知道哪是路,不晓得前后左右都有什么,只觉得透骨凉的水往身上各处浇。他什么也不知道了,只心中茫茫的有点热气,耳旁有一片雨声。他要把车放下,但是不知放在哪里好。想跑,水裹住他的腿。他就那么半死半活的,低着头一步一步的往前曳。坐车的仿佛死在了车上,一声不出的任着车夫在水里挣命。

雨小了些,祥子微微直了直脊背,吐出一口气:“先生,避避再走吧!”

“快走!你把我扔在这儿算怎回事?”坐车的跺着脚喊。

祥子真想硬把车放下,去找个地方避一避。可是,看看身上,已经全往下流水,他知道一站住就会哆嗦成一团。他咬上了牙,郯着水不管高低深浅的跑起来。刚跑出不远,天黑了一阵,紧跟着一亮,雨又迷住他的眼。

拉到了,坐车的连一个铜板也没多给。祥子没说什么,他已顾不过命来。

雨住一会儿,又下一阵儿,比以前小了许多。祥子一气跑回了家。抱着火,烤了一阵,他哆嗦得象风雨中的树叶。虎妞给他冲了碗姜糖水,他傻子似的抱着碗一气喝完。喝完,他钻了被窝,什么也不知道了,似睡非睡的,耳中刷刷的一片雨声。

到四点多钟,黑云开始显出疲乏来,绵软无力的打着不甚红的闪。一会儿,西边的云裂开,黑的云峰镶上金黄的边,一些白气在云下奔走;闪都到南边去,曳着几声不甚响亮的雷。又待了一会儿,西边的云缝露出来阳光,把带着雨水的树叶照成一片金绿。东边天上挂着一双七色的虹,两头插在黑云里,桥背顶着一块青天。虹不久消散了,天上已没有一块黑云,洗过了的蓝空与洗过了的一切,象由黑暗里刚生出一个新的,清凉的,美丽的世界。连大杂院里的水坑上也来了几个各色的蜻蜓。

可是,除了孩子们赤着脚追逐那些蜻蜓,杂院里的人们并顾不得欣赏这雨后的晴天。小福子屋的后檐墙塌了一块,姐儿三个忙着把炕席揭起来,堵住窟窿。院墙塌了好几处,大家没工夫去管,只顾了收拾自己的屋里:有的台阶太矮,水已灌到屋中,大家七手八脚的拿着簸箕破碗往外淘水。有的倒了山墙,设法去填堵。有的屋顶漏得象个喷壶,把东西全淋湿,忙着往出搬运,放在炉旁去烤,或搁在窗台上去晒。在正下雨的时候,大家躲在那随时可以塌倒而把他们活埋了的屋中,把命交给了老天;雨后,他们算计着,收拾着,那些损失;虽然大雨过去,一斤粮食也许落一半个铜子,可是他们的损失不是这个所能偿补的。他们花着房钱,可是永远没人修补房子;除非塌得无法再住人,来一两个泥水匠,用些素泥碎砖稀松的堵砌上——预备着再塌。房钱交不上,全家便被撵出去,而且扣了东西。房子破,房子可以砸死人,没人管。他们那点钱,只能租这样的屋子;破,危险,都活该!

最大的损失是被雨水激病。他们连孩子带大人都一天到晚在街上找生意,而夏天的暴雨随时能浇在他们的头上。他们都是卖力气挣钱,老是一身热汗,而北方的暴雨是那么急,那么凉,有时夹着核桃大的冰雹;冰凉的雨点,打在那开张着的汗毛眼上,至少教他们躺在炕上,发一两天烧。孩子病了,没钱买药;一场雨,催高了田中的老玉米与高粱,可是也能浇死不少城里的贫苦儿女。大人们病了,就更了不得;雨后,诗人们吟咏着荷珠与双虹;穷人家,大人病了,便全家挨了饿。一场雨,也许多添几个妓女或小贼,多有些人下到监狱去;大人病了,儿女们作贼作娼也比饿着强!雨下给富人,也下给穷人;下给义人,也下给不义的人。其实,雨并不公道,因为下落在一个没有公道的世界上。

祥子病了。大杂院里的病人并不止于他一个。

https://baike.baidu.com/item/%E9%AA%86%E9%A9%BC%E7%A5%A5%E5%AD%90/6046?fr=aladdin

学习资源:他笑了!

笑是孩子快乐的本性,笑可以拉近心与心的距离;笑是雨天里的一把伞,笑是黑暗里的一把火;笑是幸福……

想起昨天的点点滴滴,回首记忆的沙滩,打开记忆的百宝箱,我想起了一年级到四年级的同班同学——陈泽辉。

他有一张像女孩的瓜子脸,是一位充满活力又调皮的帅男孩。我和张宇很投缘:上学、放学的路上经常碰到一起,他对我笑,我也对他笑,张宇也常常来我家玩耍,我们像亲兄弟一样友好。

读二年级时,数学期末考试,张宇像平常一样也是随便应付结果只考了五十多分,他爸一气之下狠狠地打了他一顿。他哭着脸,气呼呼地跑到我家来,刚进门口就大声地对我说:“我恨死我爸了!我要离家出走……”听完张宇的话,我吓了一跳,赶紧对张宇说:“不行不行,这怎么行,假如你真离家出走,你爸可多担心你啊!”可张宇急了,也不知道怎么办好,我也跟着急起来。突然,我想到了一个办法:我的数学不是挺好吗,我可以教他啊!等我跟张宇说完,只见张宇的下巴都快拖到地上了。他一脸迷惑地说:“你能教会我吗?之前也有很多人想教我,可最后都放弃了……”“会的,会的”我想我一定能教好,因为我有足够的信心和毅力!那时,他笑了。

之后,我天天在学校教张宇学数学,可我仿佛在对牛弹琴似的:我一题教了好几回,他一点也没听进去。不就是被别人干扰,就是左顾右盼。我看得出他连一点想学习的心情都没有,我有点灰心,想放弃了。

有一天,我没看见张宇来上学,去问老师,才知道昨天他生病感冒了。于是,放完学,我便马上跑到张宇家去。张宇看见我,对我笑了笑,接着,我就拿出数学书来给他补习。刚开始,他好像老在发呆,一点也没把我的话听进去。等我快说完,张宇忽然插断我的话,小声地对我说:“你说,我能学好数学吗?我那么调皮捣蛋,肯定没什么希望……”张宇终于向我说出了心声。我语重心长地对他说:“张宇,老师不是对我们说过一句话吗?‘世上无难事,只怕有心人’只要你肯学,我相信你就一定能学好!”这时,他又笑了。

从那以后,在学校里,只要一有时间,我就帮他辅导。记得有一道题,是“钉一件衣服要4个纽扣,30个纽扣可以钉几件衣服?还剩几个纽扣?”我跟他说,这种题先用大数除去小数,整数就是第一小题的答案,余数就是第二小题的答案了。“那么,这道题的答案是不是30/4=7……2(个)呢?”“嗯,你做对了!”经过我的教导下,每一道题对张宇来说,再也没有像以前那么困难了。一放学,要不就是他去我家,要不就是我去他家,我也从中得到了进步。就这样,我们一起学习,一起进步。

时间一眨眼就过去了,又到了期末考试了,但张宇没有像以前期末考试那么紧张了。在进教室前,他还对我笑了笑。我知道,他一定能考好!

不出我所料,等成绩单一出来,张宇立马拿着成绩单向我跑过来。我一看,数学竟考了八十五分!他拥抱着我,脸上露出了灿烂的笑容。

他笑了,我也笑了。

 

 

他终于笑了

闷热的空中掺杂着蝉不停的叫声,扰的人心烦意乱。汗水滑过额头,滴落在练习本上。冥思苦想了大半天,还是没能解出那道题。于是,就放下手中的笔,不写了。

这时,妈妈端着一杯冷饮进来了,就问我:“怎么不写了?写完了吗?”当时心里烦躁得很,便发起了牢骚:“这题难死了,一点思绪都没,我不会写,不想写了。这破天气,热死了。”只听妈妈心平气和的说:“来,先喝口饮料解解暑。要多动动脑子,静下心来去想。”我听了妈妈的话,又思考了好半天,还是没想出来。就去客厅看电视了。

“哈哈哈”电视中的节目逗得我哈哈大笑。这时,爸爸突然回来了。我赶紧关了电视,往我屋里跑,可是已经来不及了。“站住,作业写完了吗?”听到这句话,我心里咯噔一下,心虚的说:“写、写完了。”“拿过来我看看。”心想:完了,这次惨了。便磨磨蹭蹭的把本拿给爸爸,“嗯?这道题怎么没写呀?”“那个,我、我不会。”说完这句话,我闭上眼,准备迎接暴风雨的洗礼。果然,“不会?不会是理由吗,你不会多动动脑子吗?”幸好老妈及时过来打断爸爸,我便趁机逃回屋里。

看着那道题,便想起爸爸生气的模样。就下定决心,一定要解出这道题。果然,老天不负有心人,我慢慢的有了思路。拿起笔,顺着思路往下写,马上就写完了。我敢保证:那道题我永远都忘不了。

回到学校后,老师突然说要考试。发下卷,我惊奇的发现那道题是整个试卷上分值最高的一道题。时间才过了小半节课,我便把整张卷写完了。

这次测试,我得了满分。老师说:“最后那道题超纲了,没想到你用那么短的时间便写出来了。”听了老师的话,我得意的笑了。心想:这全拜老爸所赐。

回到家,我把奖状和试卷拿给爸爸看。爸爸仔细的审视着每一道题,看到最后一道题时,突然抬头看了看我,又点了点头,满意的笑了。我读懂了那个笑,里面充满了赞许、骄傲、自豪。

爸爸平时很严厉,很少笑。但这次,他终于笑了。

 

 

 

他,笑了

在我身边有许许多多的小事和大事,但是这一件事让我记忆犹新。

我有一个很严厉的爸爸,一见到他我就不开心,因为我有很多坏毛病,如平时爱淘气,做事很马虎,又比较懒惰,等等,所以爸爸一见到我总是绷着脸,说我不懂事,在我的记忆里我很少见到爸爸笑,但是有一次……

记得那是今年寒假的一个晚上,我放学回到家,刚一打开门就看见爸爸在床上躺着,我很奇怪,爸爸现在怎么在家呢?我轻手轻脚的把书包放在沙发上,用眼睛的余光扫了一眼,见爸爸的脸色不太好,心想爸爸是不是了?我轻轻走到床前小声的问:“爸爸,你是不是病了?”爸爸有气无力的回答道:“感冒,没事。”看着爸爸难受的样子,我的心里不知道为什么不开心,所以我想要照顾好爸爸,可是该怎么做呢?我想起了我生病时妈妈是如何让我吃药的那一瞬间,然后我就去拿药,我找到了药,我里挑出了一种叫“感冒灵”的药,我想感冒灵一吃就灵,想到这,我高兴极了,然后就从茶几里拿了一个杯子,然后双手抱着暖壶颤颤微微的到了一杯热水,小心翼翼的端到了爸爸面前,爸爸看见了我为他端了杯热水,慢慢的从床上起来,接过我选好的药,一抬头就吃了下去,然后又迷迷糊糊地睡了,见此情景,我心里难受极了。

吃饭的时候只有我们两个人(妈妈这是不在家,还不知道爸爸病了),我又去楼下的小卖部买了两包辣味的方便面,并去食堂买了爸爸最爱喝的啤酒和,他最爱吃的盐鸡爪,我想爸爸吃了以后一定会出很多汗,那样,病不就好了吗?回到家,我连忙打开火,烧上水,把方便面倒在了水里,并且打了两个鸡蛋,过了一会,面熟了,我将热气腾腾的面汤端到了爸爸面前,小声说:“爸,你吃吧!”我的话音未落,只见爸爸脸上露出了一丝欣慰的笑容,我印象中那次看到爸爸对我笑了,他说:“儿子,你长大了!”顿时我心里一阵温暖,窗外的雨点都无法将我们的气氛打扰,那时都不知道该说什么好了。

这就是发生在我身边的一件难以忘怀的事!

 

 

 

他的微笑

他的微笑永远在我心中,没有人能在我心中夺走他那淡淡的微笑,因为那微笑在我心中如此的重要。

我已经不记得那时什么季节了,只能感觉到有风但是感觉不到冷,也许是因为心中的着急变成了一团火,正燃烧着我!外公的突然让我无法控制住自己的心情,外空正憔悴的躺在病床上,医生说外公的血管破裂了,也许撑不过一天了。也许那时幼稚的我也慢慢的开始懂事,只是静静的坐在外公的旁边投放在他的手边,他只是静静抚摸着我的脸颊,也许外公感觉到了我那热滚滚的眼泪,便轻轻的说:“晨晨别哭了,人总是有那一天只是早晚的问题。”虽然那声音那么的轻可是我已知道外公用了全身的力气,我依着她擦掉了眼泪,可是我忍不住眼泪还不争气的往外爬。

外公用手为我擦掉眼泪。我也忍不住了大声叫出:“外公你别走!”外公没有流出眼泪因为我知道你是不希望我伤心,在假装的坚强。我傻呆呆的看着外公看着外公,只见他微微一笑,我第一次看见外公笑的如此的灿烂。一笑之后外公慢慢的闭上了眼睛,手也不动了,我拼命的叫着外公可是外公不理会我,我往外跑把外面的妈妈,外公叫了进来,同时医生也进来了摇摇了头,只见妈妈与外婆大声哭着,我知道外公已经安息了,可是想起外公叫我别哭我忍着,可是还是会流出眼泪。于是我想起了外公那微微的一笑,我也对着外公的脸也微微一笑。

三年多了,外公那灿烂的一笑还留在我心中的深处我要将那微笑永远珍藏,永远埋在心里!

学习资源:可爱的中国 (方志敏散文)

可爱的中国
    这是一间囚室。
    这间囚室,四壁都用白纸裱糊过,虽过时已久,裱纸变了黯黄色,有几处漏雨的地方,并起了大块的黑色斑点;但有日光照射进来,或是强光的电灯亮了,这室内仍显得洁白耀目。对天空开了两道玻璃窗,光线空气都不算坏。对准窗子,在室中靠石壁放着一张黑漆色长方书桌,桌上摆了几本厚书和墨盒茶盅。桌边放着一把锯短了脚的矮竹椅;接着竹椅背后,就是一张铁床;床上铺着灰色军毯,一床粗布棉被,折叠了三层,整齐的摆在床的里沿。在这室的里面一角,有一只未漆的未盖的白木箱摆着,木箱里另有一只马桶躲藏在里面,日夜张开着口,承受这室内囚人每日排泄下来的秽物。在白木箱前面的靠壁处,放着一只蓝磁的痰盂,它像与马桶比赛似的,也是日夜张开着口,承受室内囚人吐出来的痰涕与丢下去的橘皮蔗渣和纸屑。骤然跑进这间房来,若不是看到那只刺目的很不雅观的白方木箱,以及坐在桌边那个钉着铁镣一望而知为囚人的祥松,或者你会认为这不是一间囚室,而是一间书室了。
    的确,就是关在这室内的祥松,也认为比他十年前在省城读书时所住的学舍的房间要好一些。
    这是看守所优待号的一间房。这看守所分为两部,一部是优待号,一部是普通号。优待号是优待那些在政治上有地位或是有资产的人们。他们因各种原因,犯了各种的罪,也要受到法律上的处罚;而他们平日过的生活以及他们的身体,都是不能耐住那普通号一样的待遇;把他们也关到普通号里去,不要一天两天,说不定都要生病或生病而死,那是万要不得之事。故特辟优待号让他们住着,无非是期望着他们趁早悔改的意思。所以与其说优待号是监狱,或者不如说是休养所较为恰切些,不过是不能自由出入罢了。比较那潮湿污秽的普通号来,那是大大的不同。在普通号吃苦生病的囚人,突然看到优待号的清洁宽敞,心里总不免要发生一个是天堂,一个是地狱之感。
    因为祥松是一个重要的政治犯,官厅为着要迅速改变他原来的主义信仰,才将他从普通号搬到优待号来。
    祥松前在普通号,有三个同伴同住,谈谈讲讲,也颇觉容易过日。现 在是孤零一人,镇日坐在这囚室内,未免深感寂寞了。他不会抽烟,也不会喝酒,想借烟来散闷,酒来解愁,也是做不到的。而能使他忘怀一切的,只是读书。他从同号的难友处借了不少的书来,他原是爱读书的人,一有足够的书给他读读看看,就是他脚上钉着的十斤重的铁镣也不觉得它怎样沉重压脚了。尤其在现在,书好像是医生手里止痛的吗啡针,他一看起书来,看到津津有味处,把他精神上的愁闷与肉体上的苦痛,都麻痹地忘却了。
到底他的脑力有限,接连看了几个钟头的书,头就会一阵一阵的胀痛起来,他将一双肘节放在桌上,用两掌抱住胀痛的头,还是照原看下去,一面咬紧牙关自语:“尽你痛!痛!再痛!脑溢血,晕死去罢!”直到脑痛十分厉害,不能再耐的时候,他才丢下书本,在桌边站立起来。或是向铁床上一倒,四肢摊开伸直,闭上眼睛养养神;或是在室内从里面走到外面,又从外面走到里面的踱着步;再或者站在窗口望着窗外那么一小块沉闷的雨天出神;也顺利望望围墙外那株一半枯枝,一半绿叶的柳树。他一看到那一簇浓绿的柳叶,他就猜想出遍大地的树木,大概都在和暖的春风吹嘘中,长出艳绿的嫩叶来了——他从这里似乎得到一点儿春意。
    他每天都是这般不变样地生活着。
    今天在换班的看守兵推开门来望望他——换班交代最重要的一个囚人——的时候,却看到祥松没有看书,也没有踱步,他坐在桌边,用左手撑住头,右手执着笔在纸上边写边想。祥松今天似乎有点什么感触,要把它写出来。他在写些什么呢?啊!他在写着一封给朋友们的信。
亲爱的朋友们:
    我终于被俘入狱了。
    关于我被俘入狱的情形,你们在报纸上可以看到,知道大概,我不必说了。我在被俘以后,经过绳子的绑缚,经过钉上粗重的脚镣,经过无数次的拍照,经过装甲车的押解,经过几次群众会上活的示众,以至关入笼子里,这些都像放电影一般,一幕一幕的过去!我不愿再去回忆那些过去了的事情,回忆,只能增加我不堪的羞愧和苦恼!我也不愿将我在狱中的生活告诉你们。朋友,无论谁入了狱,都得感到愁苦和屈辱,我当然更甚,所以不能告诉你们一点什么好的新闻。我今天想告诉你们的却是另外一个比较紧要的问题,即是关于爱护中国,拯救中国的问题,你们或者高兴听一听我讲这个问题罢。
    我自入狱后,有许多人来看我:他们为什么来看我,大概是怀着到动物园里去看一只新奇的动物一样的好奇心罢?他们背后怎样评论我,我不能知道,而且也不必一定要知道。就他们当面对我讲的话,他们都承认我是一个革命者;不过他们认为我只顾到工农阶级的利益,忽视了民族的利益,好像我并不是热心爱中国爱民族的人。朋友,这是真实的话吗?工农阶级的利益,会是与民族的利益冲突吗?不,绝不是的,真正为工农阶级谋解放的人,才正是为民族谋解放的人,说我不爱中国不爱民族,那简直是对我一个天大的冤枉了。
    我很小的时候,在乡村私塾中读书,无知无识,不知道什么是帝国主义,也不知道帝国主义如何侵略中国,自然,不知道爱国为何事。以后进了高等小学读书,知识渐开,渐渐懂得爱护中国的道理。一九一八年爱国运动波及到我们高小时,我们学生也开起大会来了。
    在会场中,我们几百个小学生,都怀着一肚子的愤恨,一方面痛恨日本帝国主义无餍的侵略,另一方面更痛恨曹、章等卖国贼的狗肺狼心!就是那些年青的教师们(年老的教师们,对于爱国运动,表示不甚关心的样子),也和学生一样,十分激愤。宣布开会之后,一个青年教师跑上讲堂,将日本帝国主义提出的灭亡中国的二十一条,一条一条地边念边讲。他的声音由低而高,渐渐地吼叫起来,脸色涨红,渐而发青,颈子胀大得像要爆炸的样子,满头的汗珠子,满嘴唇的白沫,拳头在讲桌上捶得碰碰响。听讲的我们,在这位教师如此激昂慷慨的鼓动之下,那一个不是鼓起嘴巴,睁大着眼睛——每对透亮的小眼睛,都是红红的像要冒出火来;有几个学生竟流泪哭起来了。朋友,确实的,在这个时候,如果真有一个日本强盗或是曹、章等卖国贼的那一个站在我们的面前,那怕不会被我们一下打成肉饼!会中,通过抵制日货,先要将各人身边的日货销毁去,再进行检查商店的日货,并出发对民众讲演,唤起他们来爱国。会散之后,各寝室内扯抽屉声,开箱笼声,响得很热闹,大家都在急忙忙地清查日货呢。
    “这是日货,打了去!”一个玻璃瓶的日本牙粉扔出来了,扔在阶石上,立即打碎了,淡红色的牙粉,飞洒满地。
    “这也是日货,踩了去!”一只日货的洋磁脸盆,被一个学生倒仆在地上,猛地几脚踩凹下去,磁片一片片地剥落下来,一脚踢出,磁盆就像含冤无诉地滚到墙角里去了。
    “你们大家看看,这床席子大概不是日本货吧?”一个学生双手捧着一床东洋席子,表现很不能舍去的样子。
    大家走上去一看,看见席头上印了“日本制造”四个字,立刻同声叫起来:
    “你的眼睛瞎了,不认得字?你舍不得这床席子,想做亡国奴!?”不由分说,大家伸出手来一撕,那床东洋席,就被撕成碎条了。
    我本是一个苦学生,从乡间跑到城市里来读书,所带的铺盖用品都是土里土气的,好不容易弄到几个钱来,买了日本牙刷,金刚石牙粉,东洋脸盆,并也有一床东洋席子。       我明知销毁这些东西,以后就难得钱再买,但我为爱国心所激动,也就毫无顾惜地销毁了。我并向同学们宣言,以后生病,就是会病死了,也决不买日本的仁丹和清快丸。
    从此以后,在我幼稚的脑筋中,作了不少的可笑的幻梦:我想在高小毕业后,即去投考陆军学校,以后一级一级的升上去,带几千兵或几万兵,打到日本去,踏平三岛!我又想,在高小毕业后,就去从事实业,苦做苦积,那怕不会积到几百万几千万的家私,一齐拿出来,练海陆军,去打东洋。读西洋史,一心想做拿破仑;读中国史,一心又想做岳武穆。这些混杂不清的思想,现 在讲出来,是会惹人笑痛肚皮!但在当时我却认为这些思想是了不起的真理,愈想愈觉得津津有味,有时竟想到几夜失眠。
    一个青年学生的爱国,真有如一个青年姑娘初恋时那样的真纯入迷。
    朋友,你们知道吗?我在高小毕业后,既未去投考陆军学校,也未从事什么实业,我却到N城来读书了。N城到底是省城,比县城大不相同。在N城,我看到了许多洋人,遇到了许多难堪的事情,我讲一两件给你们听,可以吗?
只要你到街上去走一转,你就可以碰着几个洋人。当然我们并不是排外主义者,洋人之中,有不少有学问有道德的人,他们同情于中国民族的解放运动,反对帝国主义对中国的压迫和侵略,他们是我们的朋友。只是那些到中国来赚钱,来享福,来散播精神的鸦片——传教的洋人,却是有十分的可恶的。他们自认为文明人,认我们为野蛮人,他们是优种,我们却是劣种;他们昂头阔步,带着一种藐视中国人、不屑与中国人为伍的神气,总引起我心里的愤愤不平。我常想:“中国人真是一个劣等民族吗?真该受他们的藐视吗?我不服的,决不服的。”
    有一天,我在街上低头走着,忽听得“站开!站开!”的喝道声。我抬头一望,就看到四个绿衣邮差,提着四个长方扁灯笼,灯笼上写着:“邮政管理局长”几个红扁字,四人成双行走,向前喝道;接着是四个徒手的绿衣邮差;接着是一顶绿衣大轿,四个绿衣轿夫抬着;轿的两旁,各有两个绿衣邮差扶住轿杠护着走;轿后又是四个绿衣邮差跟着。我再低头向轿内一望,轿内危坐着一个碧眼黄发高鼻子的洋人,口里衔着一枝大雪茄,脸上露出十足的傲慢自得的表情。“啊!好威风呀!”我不禁脱口说出这一句。邮政并不是什么深奥巧妙的事情,难道一定要洋人才办得好吗?中国的邮政,为什么要给外人管理去呢?
随后,我到K埠读书,情形更不同了。在K埠有了所谓租界上,我们简直不能乱动一下,否则就要遭打或捉。在中国的地方,建起外人的租界,服从外人的统治,这种现象不会有点使我难受吗?
有时,我站在江边望望,就看见很多外国兵舰和轮船在长江内行驶和停泊,中国的内河,也容许外国兵舰和轮船自由行驶吗?中国有兵舰和轮船在外国内河行驶吗?如果没有的话,外国人不是明明白白欺负中国吗?中国人难道就能够低下头来活受他们的欺负不成?
就在我读书的教会学校里,他们口口声声传那“平等博爱”的基督教;同是教员,又同是基督信徒,照理总应该平等待遇;但西人教员,都是二三百元一月的薪水,中国教员只有几十元一月的薪水;教国文的更可怜,简直不如去讨饭,他们只有二十余元一月的薪水。朋友,基督国里,就是如此平等法吗?难道西人就真是上帝宠爱的骄子,中国人就真是上帝抛弃的下流的瘪三?!
朋友,想想看,只要你不是一个断了气的死人,或是一个甘心亡国的懦夫,天天碰着这些恼人的问题,谁能按下你不挺身而起,为积弱的中国奋斗呢?何况我正是一个血性自负的青年!
朋友,我因无钱读书,就漂流到吸尽中国血液的唧筒——上海来了。最使我难堪的,是我在上海游法国公园的那一次。我去上海原是梦想着找个半工半读的事情做做,那知上海是人浮于事,找事难于登天,跑了几处,都毫无头绪,正在纳闷着,有几个穷朋友,邀我去游法国公园散散闷。一走到公园门口就看到一块刺目的牌子,牌子上写着“华人与狗不准进园”几个字。这几个字射入我的眼中时,全身突然一阵烧热,脸上都烧红了。这是我感觉着从来没有受过的耻辱!在中国的上海地方让他们造公园来,反而禁止华人入园,反而将华人与狗并列。这样无理的侮辱华人,岂是所谓“文明国”的人们所应做出来的吗?华人在这世界上还有立足的余地吗?还能生存下去吗?我想至此也无心游园了,拔起脚就转回自己的寓所了。
朋友,我后来听说因为许多爱国文学家著文的攻击,那块侮辱华人的牌子已经取去了。真的取去了没有?还没有取去?朋友,我们要知道,无论这块牌子取去或没有取去,那些以主子自居的混蛋的洋人,以畜生看待华人的观念,是至今没有改变的。
朋友,在上海最好是埋头躲在鸽子笼里不出去,倒还可以静一静心!如果你喜欢向外跑,喜欢在“国中之国”的租界上去转转,那你不仅可以遇着“华人与狗”一类的难堪的事情,你到处可以看到高傲的洋大人的手杖,在黄包车夫和苦力的身上飞舞;到处可以看到饮得烂醉的水兵,沿街寻人殴打;到处可以看到巡捕手上的哭丧棒,不时在那些不幸的人们身上乱揍;假若你再走到所谓“西牢”旁边听一听,你定可以听到从里面传出来的包探捕头拳打脚踢毒刑毕用之下的同胞们一声声呼痛的哀音,这是他们利用治外法权来惩治反抗他们的志士!半殖民地民众悲惨的命运呵!中国民族悲惨的命运呵!
朋友,我在上海混不出什么名堂,仍转回K省来了。
我搭上一只J国轮船。在上船之前,送行的朋友告诉我在J国轮船,确要小心谨慎,否则船上人不讲理的。我将他们的忠告,谨记在心。我在狭小拥挤、汗臭屁臭、蒸热闷人的统舱里,买了一个铺位。朋友,你们是知道的,那时,我已患着很厉害的肺病,这统舱里的空气,是极不适宜于我的;但是,一个贫苦学生,能够买起一张统舱票,能够在统舱里占上一个铺位,已经就算是很幸事了。我躺在铺位上,头在发昏晕!等查票人过去了,正要昏迷迷的睡去,忽听到从货舱里发出可怕的打人声及喊救声。我立起身来问茶房什么事,茶房说,不要去理它,还不是打那些不买票的穷蛋。我不听茶房的话,拖着鞋向那货舱走去,想一看究竟。我走到货舱门口,就看见有三个衣服褴褛的人,在那堆叠着的白粮包上蹲伏着。一个是兵士,二十多岁,身体健壮,穿着一件旧军服。一个像工人模样,四十余岁,很瘦,似有暗病。另一个是个二十余岁的妇人,面色粗黑,头上扎一块青布包头,似是从乡下逃荒出来的样子。三人都用手抱住头,生怕头挨到鞭子,好像手上挨几下并不要紧的样子。三人的身体,都在战栗着。他们都在极力将身体紧缩着,好像想缩小成一小团子或一小点子,那鞭子就打不着那一处了。三人挤在一个舱角里,看他们的眼睛,偷偷地东张西张的神气,似乎他们在希望着就在屁股底下能够找出一个洞来,以便躲进去避一避这无情的鞭打,如果真有一个洞,就是洞内满是屎尿,我想他们也是会钻进去的。在他们对面,站着七个人,靠后一点,站着一个较矮的穿西装的人,身本肥胖的很,肚皮膨大,满脸油光,鼻孔下蓄了一小绺短须。两手叉在裤袋里,脸上浮露一种毒恶的微笑,一望就知道他是这场鞭打的指挥者。其余六个人,都是水手茶房的模样,手里拿着藤条或竹片,听取指挥者的话,在鞭打那三个未买票偷乘船的人们。
“还要打!谁叫你不买票!”那肥人说。
他话尚未说断,那六个人手里的藤条和竹片,就一齐打下。“还要打!”肥人又说。藤条竹片又是一齐打下。每次打下去,接着藤条竹片的着肉声,就是一阵“痛哟!”令人酸鼻的哀叫!这种哀叫,并不能感动那肥人和几个打手的慈心,他们反而哈哈的笑起来了。
“叫得好听,有趣,多打几下!”那肥人在笑后命令地说。
那藤条和竹片,就不分下数的打下,“痛哟!痛哟!饶命呵!”的哀叫声,就更加尖锐刺耳了!
“停住!去拿绳子来!”那肥人说。
那几个打手,好像耍熟了把戏的猴子一样,只听到这句话,就晓得要做什么。马上就有一个跑去拿了一捆中粗绳子来。
“将他绑起来,抛到江里去喂鱼!”肥人指着那个兵士说。
那些打手一齐上前,七手八脚的将那兵士从糖包上拖下来,按倒在舱面上,绑手的绑手,绑脚的绑脚,一刻儿就把那兵士绑起来了。绳子很长,除缚结外,还各有一长段拖着。
那兵士似乎入于昏迷状态了。
那工人和那妇人还是用双手抱住头,蹲在糖包上发抖战,那妇人的嘴唇都吓得变成紫黑色了。
船上的乘客,来看发生什么事体的,渐来渐多,货舱门口都站满了,大家脸上似乎都有一点不平服的表情。
那兵士渐渐的清醒过来,用不大的声音抗议似的说:
“我只是无钱买船票,我没有死罪!”
拍的一声,兵士的面上挨了一巨掌!这是打手中一个很高大的人打的。他吼道:“你还讲什么?像你这样的狗东西,别说死一个,死十个百个又算什么!”
于是他们将他搬到舱沿边,先将他手上和脚上两条拖着的绳子,缚在船沿的铁栏干上,然后将他抬过栏干向江内吊下去。人并没有浸入水内,离水面还有一尺多高,只是仰吊在那里。被轮船激起的江水溅沫,急雨般打到他面上来。
那兵士手脚被吊得彻心彻骨的痛,大声哀叫。
那几个魔鬼似的人们,听到了哀叫,只是“好玩!好玩”的叫着跳着作乐。
约莫吊了五六分钟,才把他拉上船来,向舱板上一摔,解开绳子,同时你一句我一句的说着:“味道尝够了吗?”“坐白船没有那么便宜的!”“下次你还买不买票?”“下次你还要不要来尝这辣味儿?”“你想错了,不买票来偷搭外国船!”那兵士直硬硬地躺在那里,闭上眼睛,一句话也不答,只是左右手交换的去摸抚那被绳子嵌成一条深槽的伤痕,两只脚也在那吊伤处交互揩擦。
“把他也绑起来吊一下!”肥人又指着那工人说。
那工人赶从糖包上爬下来,跪在舱板上,哀恳地说:“求求你们不要绑我,不要吊我,我自己爬到江里去投水好了。像我这样连一张船票都买不起的苦命,还要它做什么!”他说完就往船沿爬去。
“不行不行,照样的吊!”肥人说。
那些打手,立即将那工人拖住,照样把他绑起,照样将绳子缚在铁栏干上,照样把他抬过铁栏干吊下去,照样地被吊在那里受着江水激沫的溅洒,照样他在难忍的痛苦下哀叫,也是吊了五六分钟,又照样把他吊上来,摔在舱板上替他解缚。但那工人并不去摸抚他手上和脚上的伤痕,只是眼泪如泉涌地流出来,尽在抽噎的哭,那半老人看来是很伤心的了!
“那妇人怎样耍她一下呢?”打手中一个矮瘦的流氓样子的人向肥人问。
“……”肥人微笑着不作声。
“不吊她,摸一摸她,也是有趣的呀!”
肥人点一点头。
那人就赶上前去,扯那妇人的裤腰。那妇人双脚打文字式的绞起,一双手用力遮住那小肚子下的地方,脸上红得发青了,用尖声喊叫:“嬲不得呀!嬲不得呀!”
那人用死力将手伸进她的腿胯里,摸了几摸,然后把手拿出来,笑着说:“没有毛的,光板子!光板子!”
“哈,哈,哈哈……”打手们哄然大笑起来了。
“打!”我气愤不过,喊了一声。
“谁喊打?”肥人圆睁着那凶眼望着我们威吓地喝。
“打!”几十个人的声音,从站着观看的乘客中吼了出来。
那肥人有点惊慌了,赶快移动脚步,挺起大肚子走开,一面急忙地说:
“饶了他们三个人的船钱,到前面码头赶下船去!”
那几个打手齐声答应“是”,也即跟着肥人走去了。
“真是灭绝天理良心的人,那样的虐待穷人!”“狗养的好凶恶!”“那个肥大头可杀!”“那几个当狗的打手更坏!”“咳,没有捶那班狗养的一顿!”在观看的乘客中,发生过一阵嘈杂的愤激的议论之后,都渐次散去,各回自己的舱位去了。
我也走回统舱里,向我的铺位上倒下去,我的头像发热病似的胀痛,我几乎要放声痛哭 出来。
朋友,这是我永不能忘记的一幕悲剧!那肥人指挥着的鞭打,不仅是鞭打那三个同胞,而是鞭打我中国民族,痛在他们身上,耻在我们脸上!啊!啊!朋友,中国人难道真比一个畜生都不如了吗?你们听到这个故事,不也很难过吗?
朋友,以后我还遇着不少的像这一类或者比这一类更难堪的事情,要说,几天也说不完,我也不忍多说了。总之,半殖民地的中国,处处都是吃亏受苦,有口无处诉。但是,朋友,我却因每一次受到的刺激,就更加坚定为中国民族解放奋斗的决心。我是常常这样想着,假使能使中国民族得到解放,那我又何惜于我这一条蚁命!
朋友!中国是生育我们的母亲。你们觉得这位母亲可爱吗?我想你们是和我一样的见解,都觉得这位母亲是蛮可爱蛮可爱的。以言气候,中国处于温带,不十分热,也不十分冷,好像我们母亲的体温,不高不低,最适宜于孩儿们的偎依。以言国土,中国土地广大,纵横万数千里,好像我们的母亲是一个身体魁大、胸宽背阔的妇人,不像日本姑娘那样苗条瘦小。中国许多有名的崇山大岭,长江巨河,以及大小湖泊,岂不象征着我们母亲丰满坚实的肥肤上之健美的肉纹和肉窝?中国土地的生产力是无限的;地底蕴藏着未开发的宝藏也是无限的;废置而未曾利用起来的天然力,更是无限的,这又岂不象征着我们的母亲,保有着无穷的乳汁,无穷的力量,以养育她四万万的孩儿?我想世界上再没有比她养得更多的孩子的母亲吧。至于说到中国天然风景的美丽,我可以说,不但是雄巍的峨嵋,妩媚的西湖,幽雅的雁荡,与夫“秀丽甲天下”的桂林山水,可以傲睨一世,令人称羡;其实中国是无地不美,到处皆景,自城市以至乡村,一山一水,一丘一壑,只要稍加修饰和培植,都可以成流连难舍的胜景;这好像我们的母亲,她是一个天姿玉质的美人,她的身体的每一部份,都有令人爱慕之美。中国海岸线之长而且弯曲,照现代艺术家说来,这象征我们母亲富有曲线美吧。咳!母亲!美丽的母亲,可爱的母亲,只因你受着人家的压榨和剥削,弄成贫穷已极;不但不能买一件新的好看的衣服,把你自己装饰起来;甚至不能买块香皂将你全身洗擦洗擦,以致现出怪难看的一种憔悴褴褛和污秽不洁的形容来!啊!我们的母亲太可怜了,一个天生的丽人,现 在却变成叫化的婆子!站在欧洲、 美洲各位华贵的太太面前,固然是深愧不如,就是站在那日本小姑娘面前,也自惭形秽得很呢!
听着!朋友!母亲躲到一边去哭泣了,哭得伤心得很呀!她似乎在骂着:“难道我四万万七千万的孩子,都是白生了吗?难道他们真像着了魔的狮子,一天到晚的睡着不醒吗?难道他们不知道自己的伟大的团结力量,去与残害母亲、剥削母亲的敌人斗争吗?难道他们不想将母亲从敌人手里救出来,把母亲也装饰起来,成为世界上一个最出色、最美丽、最令人尊敬的母亲吗?”朋友,听到没有母亲哀痛的哭吗?是的,是的,母亲骂得对,十分对!我们不能怪母亲好哭,只怪得我们之中出了败类,自己压制自己,眼睁睁的望着我们这位挺慈祥美丽的母亲,受着许多无谓的屈辱,和残暴的蹂躏!这真是我们做孩子们的不是了,简直连一位母亲都爱护不住了!
朋友,看呀!看呀!那名叫“帝国主义”的恶魔的面貌是多么难看呀!在中国许多神怪小说上,也寻不出一个妖精鬼怪的面貌,会有这些恶魔那样的狞恶可怕!满脸满身都是毛,好像他们并不是人,而是人类中会吃人的猩猩!他们的血口,张开起来,好似无底的深洞,几千几万几千万的人类,都会被它吞下去!他们的牙齿,尤其是那伸出口外的獠牙,十分锐利,发出可怕的白光!他们的手,不,不是手呀,而是僵硬硬的铁爪!那么难看的恶魔,那么狰狞可怕的恶魔!一、二、三、四、五,朋友,五个可怕的恶魔,正在包围着我们的母亲呀!朋友,看呀,看到了没有?呸!那些恶魔将母亲搂住呢!用他们的血口,去亲她的嘴,她的脸,用他们的铁爪,去抓破她的乳头,她的可爱的肥肤!呀,看呀!那个戴着粉白的假面具的恶魔,在做什么?他弯身伏在母亲的胸前,用一支锐利的金管子,刺进,呀!刺进母亲的心口,他的血口,套到这金管子上,拼命的吸母亲的血液!母亲多么痛呵,痛得嘴唇都成白色了。噫,其他的恶魔也照样做吗?看!他们都拿出各种金的、铁的或橡皮的管子,套住在母亲身上被他们铁爪抓破流血的地方,都拼命吸起血液来了!母亲,你有多少血液,不要一下子就被他们吸干了吗?
嗄!那矮矮的恶魔,拿出一把屠刀来了!做什么?呸!恶魔!你敢割我们母亲的肉?你想杀死她?咳哟!不好了!一刀!拍的一刀!好大胆的恶魔,居然向我们母亲的左肩上砍下去!母亲的左壁,连着耳朵到颈,直到胸膛,都被砍下来了!砍下了身体的那么一大块——五分之一的那么一大块!母亲的血在涌流出来,她不能哭出声来,她的嘴唇只是在那里一张一张的动,她的眼泪和血在竞着涌流!朋友们!兄弟们!救救母亲呀!母亲快要死去了!
啊!那矮的恶魔怎么那样凶恶,竟将母亲那么一大块身体,就一口生吞下去,还在那里眈耽地望着,像一只饿虎向着驯羊一样的望着!恶魔!你还想砍,还想割,还想把我们的母亲整个吞下去?!兄弟们,无论如何不能与它干休!它砍下而且生吞下去母亲的那么一大块身体!母亲现 在还像一个人吗,缺了五分之一的身体?美丽的母亲,变成一个血迹模糊肢体残缺的人了。兄弟们,无论如何,不能与它干休,大家冲上去,捉住那只恶魔,用铁拳痛痛的捶它,捶得它张开口来,吐出那块被生吞下去的母亲身体,才算,决不能让它在恶魔的肚子里消化了去,成了它的滋养料!我们一定要回来一个完整的母亲,绝对不能让她的肢体残缺呀!
呸!那是什么人?他们也是中国人,也是母亲的孩子?那么为什么去帮助恶魔来杀害自己的母亲呢?你们看!他们在恶魔持刀向母亲身上砍的时候,很快的就把砍下来的那块身体,双手捧到恶魔血口中去!他们用手拍拍恶魔的喉咙,使它快吞下去;现 在又用手去摸摸恶魔的肚皮,增进它的胃之消化力,好让快点消化下去。他们都是所谓高贵的华人,怎样会那么恭顺的秉承恶魔的意旨行事?委曲求欢,丑态百出!可耻,可耻!傀儡,卖国贼!狗彘不食的东西!狗彘不食的东西!你们帮助恶魔来杀害自己的母亲,来杀害自己的兄弟,到底会得到什么好处?!我想你们这些无耻的人们呵!你们当傀儡、当汉奸、当走狗的代价,至多只能伏在恶魔的肛门边或小便上,去吸取它把母亲的肉,母亲的血消化完了排泄出来的一点粪渣和尿滴!那是多么可鄙弃的人生呵!
朋友,看!其余的恶魔,也都拔出刀来,馋涎欲滴地望着母亲的身体,难道也像矮的恶魔一样来分割母亲吗?啊!,不得了,他们如果都来操刀而割,母亲还能活命吗?她还不会立即死去吗?那时,我们不要变成了无母亲的孩子吗?咳!亡了母亲的孩子,不是到处更受人欺负和侮辱吗?朋友们,兄弟们,赶快起来,救救母亲呀!无论如何,不能让母亲死亡的呵!
朋友,你们以为我在说梦呓吗?不是的,不是的,我在呼喊着大家去救母亲呵!再迟些时,她就要死去了。
朋友,从崩溃毁灭中,救出中国来,从帝国主义恶魔生吞活剥下,救出我们垂死的母亲来,这是刻不容缓的了。但是,到底怎样去救呢?是不是由我们同胞中,选出几个最会做文章的人,写上一篇十分娓娓动听的文告或书信,去劝告那些恶魔停止侵略呢?还是挑选几个最会演说、最长于外交辞令的人,去向他们游说,说动他们的良心,自动的放下屠刀不再宰割中国呢?抑或挑选一些顶善哭泣的人,组成哭泣团,到他们面前去,长跪不起,哭个七日七夜,哭动他们的慈心,从中国撒手回去呢?再或者……我想不讲了,这些都不会丝毫有效的。哀求帝国主义不侵略和灭亡中国,那岂不等于哀求老虎不吃肉?那是再可笑也没有了。我想,欲求中国民族的独立解放,决不是哀告、跪求哭泣所能济事,而是唤起全国民众起来斗争,都手执武器,去与帝国主义进行神圣的民族革命战争,将他们打出中国去,这才是中国唯一的出路,也是我们救母亲的唯一方法,朋友,你们说对不对呢?
因为中国对外战争的几次失利,真像倒霉的人一样,弄得自己不想信自己起来了。有些人简直没有一点民族自信心,认为中国是沉沦于万丈之深渊,永不能自拔,在帝国主义面前,中国渺小到像一个初出世的婴孩!我在三个月前,就会到一位先生,他的身体瘦弱,皮肤白皙,头上的发梳得很光亮,态度文雅。他大概是在军队中任个秘书之职,似乎是一个伤心国事的人。他特地来与我作了下列的谈话:
他:“咳!中国真是危急极了!”
我:“是的,危急已极,再如此下去,难免要亡国了。”
“唔,亡国,是的,中国迟早是要亡掉的。中国不会有办法,我想是无办法的。”他摇头的说,表示十分丧气的样子。
“先生为什么说出这样的话来?哪里就会无办法。”我诘问他。
“中国无力量呀!你想帝国主义多么厉害呵!几百几千架飞机,炸弹和人一样高;还有毒瓦斯,一放起来,无论多少人,都要死光。你想中国拿什么东西去抵抗它?”他说时,现出恐惧的样子。
“帝国主义固然厉害,但全中国民众团结起来的斗争力量也是不可侮的啦!并且,还有……”我尚未说完,他就抢着说:
“不行不行,民众的力量,抵不住帝国主义的飞机大炮,中国不行,无办法,无办法的啦。”
“那照先生所说,我们只有坐在这里等着做亡国奴了!你不觉得那是可耻的懦夫思想吗?”我实在忍不住,有点气愤了。他睁大眼睛,呆望着我,很难为情的不作答声。
这位先生,很可怜的代表一部分鄙怯人们的思想,他们只看到帝国主义的飞机大炮,忘却自己民族伟大的斗争力量。照他的思想,中国似乎是命注定的要走印度、朝鲜的道路了,那还了得?!
中国真是无力自救吗?我绝不是那样想的,我认为中国是有自救的力量的。中国民族,不是表示过它的斗争力量之不可侮吗?弥漫全国的“五卅”运动,是着实的教训了帝国主义,中国人也是人,不是猪和狗,不是可以随便屠杀的。省港罢工,在当时革命政权扶助之下,使香港变成了臭港,就是最老牌的帝国主义,也要屈服下来。以后北伐军到了湖北和江西,汉口和九江的租界,不是由我们自动收回了吗?在那时帝国主义在中国的威权,不是一落千丈吗?朋友,我现 在又要来讲个故事了。就在北伐军到江西的时候,我在江西做工作,因有事去汉口,在九江又搭上一只J国轮船,而且十分凑巧,这只轮船,就是我那次由上海回来所搭乘的轮船。使我十分奇怪的,就是轮船上下管事人对乘客们的态度,显然是两样的了——从前是横蛮无理,现 在是和气多了。我走到货舱去看一下,货舱依然是装满了糖包,但糖包上没有蹲着什么人。再走到统舱去看看,只见两边走栏的甲板上,躺着好几十个人。有些像是做工的,多数是像从乡间来的,有一位茶房正在开饭给他们吃呢。我为了好奇心,走到那茶房面前向他打了一个招呼,与他谈话:
我:“请问,这些人都是买了票吗?”
茶房:“他们那里买票,都是些穷人。”
我:“不买票也可以坐船吗?”
茶房:“马马虎虎的过去,不买票的人多呢!你看统舱里那些士兵,那个买了票的?”他用手向统舱里一指,我随着他指的方向望去,果就看见有十几个革命军兵士,围在一个茶房的木箱四旁,箱盖上摆着花生米,皮蛋,酱豆干等下酒菜,几个洋磁碗盛着酒,大家正在高兴地喝酒谈话呢。
我:“他们真都没有买票吗?”
茶房:“那里还会假的,北伐军一到汉口,他们就坐船不买票了。”
“从前的时候,不买票也行坐船吗?”我故意地问。
茶房:“那还了得,从前不买票,不但打得要命,还要抛到江里去!”
“抛到江里去?那岂不是要浸死人吃人命?”我又故意地问。
茶房笑说:“不是真抛到江里去浸死,而是将他吊一吊,吓一吓。不过这一吊也是一碗辣椒汤,不好尝的。”
我:“那么现在你们的船老板,为什么不那样做呢?”
茶房:“现在不敢那样做了,革命势力大了。”
我:“我不懂那是怎样说的,请说清楚!”
茶房:“那还不清楚吗?打了或吊了中国人,激动了公愤,工人罢下工来,他的轮船就会停住走不动了。那损失不比几个人不买票的损失更大吗?”
我:“依你所说,那外国人也有点怕中国人了?”
茶房:“不能说怕,也不能说不怕,唔,照近来情形看,似乎有点怕中国人了。哈哈!”茶房笑起来了。
我与他再点点头道别,我暗自欢喜地走进来。我心里想,今天可惜不遇着那肥大头,如遇着,至少也要奚落他几句。
我走到官舱的饭厅上去看看,四壁上除挂了一些字画外,却挂了一块木板布告。布告上的字很大,远处都可以看清楚。
第号 国民革命军总司令布告
为布告事。照得近来有车人及民众搭乘外国轮船不买票,实属非是!
特出布告,仰该军民人等,以后搭乘轮船,均须照章买票,不得有违!
切切此布。
啊啊,外国轮船,也有挂中国布告之一天,在中国民众与兵、工奋斗之下,藤条、竹片和绳子,也都失去从前的威力了。
朋友,不幸得很,从此以后,中国又走上了厄运,环境又一天天的恶劣起来了。经过“五三”的济南惨案,直到“九一八”,日本帝国主义公然出兵占领了中国东北四省,就是我在上面所说的那矮的恶魔,一刀砍下并生吞下我们母亲五分之一的身体。这是由于中国民族革命运动,受了挫折,对于中国进攻采取了“不抵抗主义”,没有积极唤起国人自救所致!但是,朋友,接着这一不幸的事件而起的,却来了全国汹涌的抗日救国运动,东北四省前仆后继的义勇军的抗战,以及“一二八”有名的上海战争。这些是给了骄横一世的日本军阀一个严重的教训,并在全世界人类面前宣告,中国的人民和兵士,不是生番,不是野人,而是有爱国心的,而是能够战斗的,能够为保卫中国而牺牲的。谁要想将有四千年历史与四万万人口的中国民族吞噬下去,我们是会与他们拼命战斗到最后的一人!
朋友,虽然在我们之中,有汉奸,有傀儡,有卖国贼,他们认仇作父,为虎作伥;但他们那班可耻的人,终竟是少数,他们已经受到国人的抨击和唾弃,而渐趋于可鄙的结局。大多数的中国人,有良心有民族热情的中国人,仍然是热心爱护自己的国家的。现 在不是有成千成万的人在那里决死战斗吗?他们决不让中国被 帝国主义所灭亡,决不让自己和子孙们做亡国奴。朋友,我相信中国民族必能从战斗中获救,这岂是我们的自欺自誉吗?
不错,目 前的中国,固然是江山破碎,国弊民穷,但谁能断言,中国没有一个光明的前途呢?不,决不会的,我们相信,中国一定有个可赞美的光明前途。中国民族在很早以前,就造起了一座万里长城和开凿了几千里的运河,这就证明中国民族伟大无比的创造力?中国在战斗之中一旦斩去了帝国主义的锁链,肃清自己阵线内的汉奸卖国贼,得到了自由与解放,这种创造力,将会无限的发挥出来。到那时,中国的面貌将会被我们改造一新。所有贫穷和灾荒,混乱和仇杀,饥饿和寒冷,疾病和瘟疫,迷信和愚昧,以及那慢性的杀灭中国民族的鸦片毒物,这些等等都是帝国主义带给我们可憎的赠品,将来也要随着帝国主义的赶走而离去中国了。朋友,我相信,到那时,到处都是活跃的创造,到处都是日新月异的进步,欢歌将代替了悲叹,笑脸将代替了哭脸,富裕将代替了贫穷,康健将代替了疾病,智慧将代替了愚昧,友爱将代替了仇恨,生之快乐将代替了死之忧伤,明媚的花园将代替了暗淡的荒地!这时,我们民族就可以无愧色的立在人类的面前,而生育我们的母亲,也会最美丽地装饰起来,与世界上各位母亲平等的携手了。
这么光荣的一天,决不在辽远的将来,而在很近的将来,我们可以这样相信的,朋友!
朋友,我的话说得太噜嗦厌听了吧!好,我只说下面几句了。我老实的告诉你们,我爱护中国之热诚,还是如小学生时代一样的真诚无伪;我要打倒帝国主义为中国民族解放之心还是火一般的炽烈。不过,现 在我是一个待决之囚呀!我没有机会为中国民族尽力了,我今日写这封信,是我为民族热情所感,用文字来作一次为垂危的中国的呼喊,虽然我的呼喊,声音十分微弱,有如一只将死之鸟的哀鸣。
啊!我虽然不能实际的为中国奋斗,为中国民族奋斗,但我的心总是日夜祷祝着中国民族在帝国主义羁绊之下解放出来之早日成功!假如我还能生存,那我生存一天就要为中国呼喊一天;假如我不能生存——死了,我流血的地方,或者我瘗骨的地方,或许会长出一朵可爱的花来,这朵花你们就看作是我的精诚的寄托吧!在微风的吹拂中,如果那朵花是上下点头,那就可视为我对于为中国民族解放奋斗的爱国志士们在致以热诚的敬礼;如果那朵花是左右摇摆,那就可视为我在提劲儿唱着革命之歌,鼓励战士们前进啦!
亲爱的朋友们,不要悲观,不要畏馁,要奋斗!要持久的艰苦的奋斗!把各人所有的智慧才能,都提供于民族的拯救吧!无论如何,我们决不能让伟大的可爱的中国,灭亡于帝国主义的肮脏的手里!
你们挚诚的祥松
五月二日写于囚室
囚人祥松将上信写好了,又从头到尾仔细修改了一次,自以为没有什么大毛病了,将它折好,套入一个大信封里。信封上写着:“寄送不知其名的朋友们均启”。这封信,他知道是无法寄递的,他扯开书桌的抽屉,将信放在里面。然后拖起那双戴了铁镣的脚,钉铛钉铛走到他的铁床边就倒下去睡了。
他往日的睡,总是做着许多恶梦,今晚他或者能安睡一夜吧!我们盼望他能够安睡,不做一点梦,或者只做个甜蜜的梦。
1934年7月,中共中央成立中国工农红军北上抗日先遣队,由方志敏领导的红十军团组成。1935年1月当先遣队通过怀玉山封锁线时,被敌人包围了。由于叛徒的告密,方志敏不幸被捕。在狱中,方志敏原与曹仰山等三人同被押在普通号牢房。后来敌人妄想劝诱方志敏投降,把他移到“优待号”来。敌人用“舒适的”生活条件,以金钱、官职、美女,企图腐化志敏同志,但丝毫也不能动摇他的坚强的革命意志。相反地,他巧妙地利用了敌人给予他的“优厚待遇”,领导同志们进行了各种斗争,并用革命的真理去分化、感召伪看守所的下级工作人员。1935年5月2日,方志敏在狱中为党和人民写下了这篇文章。

学习资源:如何写好一篇散文

国学大师季羡林:如何写好一篇散文

2020-04-23来源:“叶圣陶杯”全国中学生新作文大赛唯一官方网站

 

怎样写散文

 

我从小就喜欢舞笔弄墨。我写这种叫做散文的东西,已经有五十年了。虽然写的东西非常少,水平也不高;但是对其中的酸、甜、苦、辣,我却有不少的认识。在生活情况下,常常是一年半载写不出一篇东西来。原因是很明显的。天天上班、下班、开会。学习、上课、会客,从家里到办公室,从办公室到课堂,又从课堂回家,用句通俗又形象的话来说,就是“三点一线”。这种点和线都平淡无味,没有刺激,没有激动,没有巨大的变化,没有新鲜的印象,这里用得上一个已经批判过的词儿:没有灵感。没有灵感,就没有写什么东西的迫切的愿望。在这样的时候,我什么东西也写不出,什么东西也不想写。否则,如果勉强动笔,则写出的东西必然是味同嚼蜡,满篇八股,流传出去,一害自己,二害别人。自古已来,应制和赋得的东西好的很少,其原因就在这里。宋代伟大的词人辛嫁轩写过一首词牌叫做”丑奴儿”的词:少年不识愁滋味,爱上层楼,爱上层楼,为赋新词强说愁。而今识尽愁滋味,欲说还休,欲说还休,却道天凉好个秋。要勉强说愁,则感情是虚伪的,空洞的,写出的东西,连自己都不能感动,如何能感动别人呢?

我的意思是说,千万不要勉强写东西,不要无病呻吟。即使有病呻吟吧,也不要一有病就立刻呻吟,呻吟也要有技巧。如果放开嗓子粗声嚎叫,那就毫无作用。还要细致地观察,深切地体会,反反复复,简练揣摩。要细致观察一切人,观察一切事物,深入体会一切。在我们这个林林总总的花花世界上,遍地潜伏着蓬勃的生命,随处活动着的熙攘的人群。你只要留心,冷眼旁观,一定就会有收获。一个老女人,布满皱纹的脸上的微笑,一个婴儿的鲜苹果似的双颊上的红霞,一个农民长满老茧的手,一个工人工作服上斑斑点点的油渍,一个学生琅琅的读书声,一个教师住房窗口的深夜流出来的灯光,这些都是常见的现象,但是倘一深入体会,不是也能体会出许多动人的涵义吗?你必须把这些常见的、习以为常的、平凡的现象,涵润在心中,融会贯通。仿佛一个酿蜜的蜂子,酝酿再酝酿,直到酝酿成熟,使情境交融,浑然一体,在自己心中形成一幅”成竹”,然后动笔,把成竹画了下来。这样写成的文章,怎么能不感动人呢?

我的意思就是说,要细致观察,反复酝酿,然后才下笔。

创作的激情有了,简练揣摩的工夫也下过了,那么怎样下笔呢?写一篇散文,不同于写一篇政论文章。政论文章需要逻辑性,不能持之无故,言之不成理。散文也要有逻辑性,但仅仅这个还不够,它还要有艺术性。古人说:”言之无文,行之不远。”又说:”不学诗,无以言。”写散文决不能平铺直叙,像记一篇流水帐,枯燥单调。枯燥单调是艺术的大敌,更是散文的大敌。首先要注意选词造句。世界语言都各有其特点,中国的汉文的特点更是特别显著。汉文的词类不那么固定,于是诗人就大有用武之地。相传宋代大散文家王安石写一首诗,原来写的是:“春风又到江南岸。”他觉得不好,改为“春风又过江南岸。”他仍然觉得不好,改了几次,最后改为“春风又绿江南岸。”自己满意了,读者也满意,成为名句。“绿”本来是形容词,这里却改为动词。一字之改,全句生动。这种例子中国还多得很,又如有名的“鸟宿池边树,僧敲月下门”,原来是“僧推月下门”,“推”字太低沉,不,响亮一改为“敲”全句立刻活了起来。中国语言里常说“推敲”就由此而来。再如咏早梅的诗:“昨夜风雪里,前村数枝开”,把“数”字改为“一”字,“早”立刻就突出了出来。中国旧诗人很大一部分精力,就用在炼字上。我想,其他国家的诗人也在不同的程度上致力于此。散文作家,不仅仅限于造词。整篇散文,都应该写得形象生动,诗意盎然。让读者读了以后,好像是读一首好诗。古今有名的散文作品很大一部分是属于这一个类型。中国古代的诗人曾在不同的时期提出不同的理论,有的主张神韵,有的主张性灵。表面上看起来,有点五花八门,实际上,他们是有共同的目的的。他们都想把诗写得新鲜动人,不能陈陈相因。我想散文也不能例外。

我的意思就是说,要像写诗那样来写散文。

光是炼字、炼句是不是就够了呢?我觉得还是不够的。更重要的还要炼篇。关于炼字、炼句,中国古代文艺理论菱中,其中也包括大量的所谓”诗话”,讨论得已经很充分了。但是关于炼篇,也就是要在整篇的结构上着眼,也间或有所论列,总之是很不够的。我们甚至可以说,这个问题似乎还没有引起文人学士足够的的重视。实际上,我认为,这个问题是非常重要的。

炼篇包括的内容很广泛。首先是怎样开头。写过点文章的人都知道:文章开头难。古今中外的文人都知道这一点,而且做过各方面的尝试。在中国古文和古诗歌中,如果细心揣摩,可以读到不少开头好的诗文。有的起得突兀,如奇峰突起,出人意外。比如岑参的《与高适薛据登慈恩寺浮图》开头两句是:“塔势如涌出,孤高耸天宫。”文章的气势把高塔的气势生动地表达也出来,让你非看下去不行。有的纡徐,如春水潺缓,耐人寻味。比如欧阳修的《醉翁亭记》的开头的一句话:“环滁皆山也。”用“也”字结尾,这种句型一直贯穿到底。也仿佛抓住你的心,非看下去不行。还有一个传说,欧阳修定《相州昼锦堂记》的时候,构思多日,终于写成,派人送出去以后,忽然想到,开头还不好,于是连夜派人快马加鞭把原稿追回,另改了一个开头:“仕宦而至将相,富贵而归故乡,此人情之所荣,而今昔之所同也。”这样开头有气势,能笼罩全篇。于是就成为文坛佳话。这样的例子还可以举出几十几百。这些都说明,我们古代的文人学士是如何注意文章的开头的。

开头好,并不等于整篇文章都好。炼篇的工作才只是开始。在以下的整篇文章的结构上,还要煞费苦心,惨淡经营。整篇文章一定要一环扣一环,有一种内在的逻辑性。句与句之间,段与段之间,都要严丝合缝,无懈可击。有人写文章东一榔头,西一棒槌,前言不搭后语,我认为,这不是正确的做法。

在整篇文章的气势方面,也不以有流于单调,也不能陈陈相因。尽管作者每个人都有自己的独特风格,应该加意培养这种风格,这只是就全体而言。至于在一篇文章中,却应该变化多端。中国几千年的文学史上,出现了不少的不同风格:《史记》的雄浑,六朝的侬艳,陶渊明、王维的朴素,徐、庾的华丽,杜甫的沉郁顿挫,李白的流畅灵动,《红楼梦》的细腻,《儒林外史》的简明,无不各擅胜用一种风格,应该尽可能地把不同的几种风格融合在一起,给人的印象就会深刻。中国的骈文,诗歌,讲究平仄,这是中国语言特点造成的,是任何别的语言所没有的大概中国人也不可能是一开始就认识到这个现象,一定也是经过长期的实践才摸索出来的。我们写散文当然与写骈文、诗歌不同。但在个别地方,也可以尝试着使用一下,这样可以助长行文的气势,使文章的调子更响亮,更铿锵有力。

文章的中心部分写完了,到了结束的时候,又来了一个难题。我上面讲到:文章开头难。但是认真从事写作的人都会感到:文章结尾更难。

为了说明问题方便起见,我还是举一些中国古典文学中的例子。上面引的《醉翁亭记》的结尾是“太守谓谁?庐陵欧阳修也。”“以”也字句开始,又以“也”字句结尾。中间也有大量的“也”字句,这样就前后呼应,构成了一个整体。另一个例子我想举杜甫那首著名诗篇《赠卫八处士》,最后两句是“明日隔山岳,世事两茫茫。”这样就给一种言有尽而间无穷的感觉。再如白居易的《长恨歌》,洋洋洒洒数百言,或在天上,或在地下。最后的结句是:“天长地久有时尽,此恨绵绵无绝期。”也使人有余味无穷的意境。还有一首诗,是钱起的《省试汀灵鼓瑟》。结句是“曲终人不见,江上数峰青。”对这句的解释是有争论的。据我自己的看法,这样结尾,与试帖诗无关。它确实把读者带到一个永恒的境界中去。

上面讲了一篇散文的起头,中间部分和结尾。我们都要认真对待,而且要有一个中心的旋律贯穿全篇,不能写到后面忘了前面,一定要使一篇散文有变化而又完整,谨严而又生动,千门万户而又天衣无缝中,奇峰突起而又顺理成章,必须使它成为一个完美的整体。

我的意思就是说,要像谱写交响乐那样来写散文。

写到这里,也许有人要问:写篇把散文,有什么了不起?可你竟规定了这么多的清规戒律。任何一种文学艺术形式,都有自己的一套规律,没有规律就不成其为文学艺术,就在于它的规律不同。但是不同种的文学艺术之间又可以互相借鉴,互相启发,而且是借鉴得越好,则这一种也就越向前发民。任何国家的文学艺术史都可以证明这一点。

也许还有人要问:古今散文中,有不少是信笔写来,如行云流水,本色天成,并没有像你上面讲的那样艰巨,那样繁杂。我认为,这种散文确实有的,但这只是表面上看来是信笔写来,实际上是作者经过了无数次的锻炼,由有规律而逐渐变成表面上看起来摆脱一切规律。这其实是另外一种规律,也许更难掌握的更高级的一种规律。

我学习写散文,已经有五十年的历史了。如果说有一个散文学校,或者大学,甚至研究院的话,从年限上来看,我早就该毕业了。但是事实上,我好像还是小学水平,至多是中学的程度。我上面讲了那样一些话,决不意味着,我都能做得到。正相反,好多都是我努力的目标,也就是说,我想这样做,而还没有做到。我看别人的作品时,也常常拿那些标准来衡量,结果是眼高手低。在五十年漫长的时间内,我搞了一些别的工作,并没有能集中精力来写散文,多少带一点客串的性质。但是我的兴致始终不衰,因此也就积累了一些所谓经验,都可以说是一得之见。对于专家内行来说,这可能是些怪论,或者是一些老生常谈。倡对我自己来说,却有点敝自珍的味道。《列子·杨朱篇》讲了一个故事:

昔者宋国有田夫,常衣蕴贲,仅以过冬。暨春东作,自曝于日,不知天下之有广厦、奥室、锦纩、狐猁。顾谓其妻曰:”负日之暄,人莫知者。以献吾君,将有重赏。”

我现在就学习那个田夫,把我那些想法写了出来,放在选集前面。我相信,我这些多也不过同负暄相类。但我不想得到重赏,我只想得到赞同,或者反对。就让我这一篇野叟曝言带着它的优点与缺点,怀着欣喜或者忧惧,走到读者中去吧!

(转载自《季羡林谈写作》,原标题《我怎样写散文》)

学习资源:一个“胆小鬼”的蜕变(十七届叶圣陶杯全国中学新作文大赛决赛获奖佳作)

胆 小 鬼

□ 李知远(山东省潍坊第一中学高三)

“你好厉害啊!又考了班里第二!”

“谢谢。”我漫不经心地回复着,眼睛在看成绩单最顶上那一行。

张君,还是张君第一!

张君和我自小便是朋友。他的父母托我父母介绍,举家从农村搬来城里工作。我们住同一个小区,上同一所学校。他父母农忙回村时,我们也常一起吃睡学玩,像双黄蛋,像并蒂莲,我们被命运紧紧捆在一起。

可是我从来没有在什么方面能超越他。如果说我们是双黄蛋,那么他就是更大的蛋黄;如果说我们像并蒂莲,那么他就是开得更好的那一朵。当然,我们同是同龄人中的皎皎者,可纵使我是夜空中最亮的一颗星,他也会成为一轮皎洁的明月,用清冷的光辉淹没着我的全部。不知怎么,我最近开始不平衡了。

一只手拍在我肩膀上,我的思绪受惊地缩了壳。回头一看,张君在我身后嘻皮笑脸。“放大周了,打球去吧。”“噢……好。”

我和张君一同热爱篮球。但我只是喜欢这项运动本身,而他在这领域可谓万事通,从NBA各球队的实力对比,再到全明星各项特长,甚至是球衣球鞋的款式型号和价位他都一清二楚。

“感兴趣而已,买又买不起,太贵。”他如是说。

张君运球冲了过来。我侧身格挡,他突然闪步换手,在我抢断前绕过了我,腾空而起,篮球在空中划过半个抛物线。

“空心球,漂亮!”“你的格挡也越来越好了,我想要闪过你越来越难啦。哈哈哈……”

我没回应。我们面对面站着,在寒风中像烧开的水壶,冒着灼人的蒸汽。“你最近有些不开心,一模发挥不佳?”“不……不是。”我觉得说话有点烫嘴。

饭桌上,在我还未赶忙塞饱自己前,母亲大人开始了讲话。“那个老张家的儿子真能,一准是清北苗子!”“是啊,学习又好,长得也好,将来也许能做大官。”父亲大人接过话茬。

我突然感觉什么东西涌上心口,一瞬间填满了空虚的胃。“我吃饱了。”我站起来,头也不回地走向自己房间,摔上了门。

早读时,同桌的张君在认真读着英语单词。一股突如其来的力量使我抄起古诗文高声朗读起来。一时间“潦水尽而寒潭清,烟光凝而暮山紫”的胜景与“世人皆浊我独清,众人皆醉我独醒”的悲凉气氛萦绕在教室里。

“小点声,小点声。”一旁的张君忙说。我把声音下调大约一个百分点。到早读结束,我看见他只背了一个单元。

中午吃饭,和张君一起,我突然意识到健康的重要性,开始细嚼慢咽起来。

“快一点,快一点,宿舍要关门了。”我能看出他脸上的不悦。“稍等,我还得喝碗粥。”

晚自习,我做题没有思路,却突然抖起腿来,于是地震波从地下传到地上,从我的桌子传到张君的桌子。

“别抖腿,别抖腿……”张君几乎是哀求了。可是我没有听见。我在看着公告栏上的成绩单,第二是我,第一是他。

“你好厉害啊,又是班里第二!”我没有回应,盯着面前的成绩单一遍又一遍地扫描,连一个像素点也不放过。张君,不只是第一,更是比上一次远远超过了我。他便是珠峰,高不可攀;而我是艰难的攀登者,被雪崩裹挟着滚滚而下。

“只是一次考试而已,我在怕什么?”我反复诘问着自己,感到自己真没出息!“恭喜你,你又进步了。”

篮球击打在地面上,震碎了四月冰封的河面,却捅不穿阴沉的天空。

“你怕的不是我,而是你自己。”张君看穿了我的心情。我一愣。

张君依旧兴奋地飞身闪过,一、二、三,漂亮的三步上篮。

“你什么意思?”我像做贼心虚。

张君飞起追回逃走的篮球,走到我身边。“不是我进步了,而是你退步了。你说,你的梦想是什么?”“我跟你说过无数遍了。北大光华学院,最好的会计。”我嗫嚅着,把头转向张君不存在的另一边。

“我从来没有和你谈过我的梦想吧!”张君微微一笑。

“至少会比我目标远大……”

“我想回老家搞养殖,带着村里人共同致富。”“什么?!”我忙把头转回去,颈椎发出一声脆响。“为什么?你这么优秀,又是好不容易从农村里来的……”

“李君,你知道吗,这个世界上有七十亿人,”他张开双臂画一个大圆,“可名人却不足万分之一。”他圈起食指比出一个绿豆大的洞,“你出人头地也好,默默无闻也好,都不重要,重要的是你自己。你努力过,失败过,痛苦过,成功过,喜悦过,天外有天,人外有人,也许我们始终无法站在最高处,但只要让自己满意,就是人生赢家,不是吗?”

一缕阳光从云间探了出来。一时间,光芒照耀大地,也驱散了我心中那个胆小懦弱的影子。

“也许我只是……太在乎输赢了吧。”我报以一笑。

“别摆出一副快要哭出来的样子。祝你成功!”

四月的风吹在我们的脸上,寒冷中却孕育着温暖的种子,春天就要来了。在后来的三模和高考中,我理所当然地没有考过他,但是这些如今看来却无足轻重。我仍然记得我和张君每一次早读的气壮山河,每一次吃饭的狼吞虎咽,每一次考试的奋笔疾书,每一次成绩发布的欢笑与泪水……每一点每一滴都将成为我人生中最宝贵的回忆,永远珍藏在我内心最温暖的一隅。

六月的风正好。我拨通了张君的电话。“考都考完了,走,打球去!”

(指导老师:秦宝艳)

【点评】

作者选择了这个具有难度的命题,独出心裁,成功地写出了一篇好小说。围绕考试成绩“第一名”“第二名”架构故事,人物对话、神态动作、情景环境等细节描写,生动准确地表现了“我”的微妙心理变化,真实可感,性格鲜明,情节跌荡起伏,出人意料的结局深化了主题,一个“胆小鬼”的蜕变,耐人寻味。本文荣获现场决赛一等奖。

学习资源:乘着文学的翅膀(十七届叶圣陶杯全国中学生新作文大赛初赛获奖佳作)

乘着文学的翅膀

□ 赵艺泽(辽宁省义县高级中学高一)

 

人生而蒙昧,我亦如此。

今日所见的世界如此熟悉而美丽,可彼时年幼,与这世界的联系微乎其微,肉眼所见并非心中所感,心中所感也难以确切领悟,世界究竟于我为何?蒙昧而混沌的幼小灵魂,用力探寻着生而为人的意义——交织着恒久的努力与难免的失败,也伴随着模糊的钝痛与恣意的欢乐。于是,突然有一天,赫然发现,原来我将毕生所求的与这世界的联系,早已被世界以玄妙的声音应答。

是文学。

漫步于文学世界,仿佛毕生所求,皆当盈盈在握。

我的文学梦,起源于那片生养我的土地,那个小小的村庄,现代的气息并未真正改变它的气质,依旧宁静又朴拙。我总爱在春日,和小伙伴们一起奔跑在一望无际的绿色田野上。田埂路边的打碗花、狗尾草摇曳出近乎浪漫的弧度,灿烂纯粹的阳光毫无尘滓,洗礼着山脚水边;柳梢桃瓣带着那样明艳动人的光彩,刚与人一照面就忽地闯进了心里。“胜日寻芳泗水滨,无边光景一时新”,从前摇头晃脑背下来印在脑海里的诗句一瞬间清晰起来,眼前出现鲜活明亮的春景,奇妙地在此刻与它相遇。心中是从未感知过的雀跃,原来是这样!于是,一瞬间,明白了一种心情——一个与我不同时代的诗人在此情此景面前感受过,又于此刻唤起我内心模糊的感动的那一种心情。“等闲识得东风面,万紫千红总是春”,是怎样的一种诗句,能够跨越漫长的时光,还会在不经意间悄悄感动一颗幼小心灵?

童年的小小村庄,暗夜里有铺天盖地的星星,散发着明晃到嚣张的亮度,天似穹庐,银河倾洒,照耀着这片美丽而沉静的土地。天地俱寂的夜晚,一家人团坐在小院里,各种奇妙动人的故事由母亲口中悠悠传出,为我这个爱幻想的孩子开启了一场场神奇的冒险。那些间杂着勇气、善良、恐惧甚至是罪恶的传说,为我开启了一个个从未面对过的世界。“嫦娥的面庞上透着浓浓的不舍与难过,她的身躯逐渐上升,上升,渐渐变得透明。后羿再也抓不住她的手,只有那双含泪的眼睛明亮如星,深深映入他的心中……”这幅水墨般氤氲着悲哀与宁静的图景,自我第一次听到这个故事起就一直深深扎根在我的脑海里,小小的心灵为他们的离别而感到悲伤,那份惊心动魄的美直到如今仍然不时令我魂牵梦绕。

想象长出了翅膀,开始在文学的天空飞翔。读书是我追寻文学的最简单、最朴素的方法。书页在指尖轻轻滑过的瞬间,就是我与文学相距最近的那一刻。不知为何,年少最爱的书竟是《西游记》,妖魔鬼怪、齐天大圣、七十二变、灵霄宝殿如此种种令我幼小的心灵震颤着,期待着,渴望着。那份从心底爆发出的欢乐至今仍感记忆犹新。而每当我望向没有星辰,也没有月亮的天空,总觉得在这暗沉绝望到了极点的天空尽头,有一只遍体鳞伤的猴子,他褪去了盔甲花翎,烈焰灼心,惊雷蚀骨,天地鬼神,征伐诛谴,直至堕入无边黑暗苦苦沉寂了五百年。“大圣……何时再踏凌霄?”

我总在热切地期待着,期待他睁开金黄炽烈的双目,射出的光芒刺破重重黑暗,直抵极远极边水穷云起之所。大圣双目的光芒,也许不能为他平定一路九千波九千挫,但却斩开了我儿时蒙昧的天空,智慧与感悟在一瞬间疯狂涌入我的心智,文学的大门向我打开,前方未知的路,终于可以看见希望的光芒。

曾几何时,文学宛如天边的星辰,令我悠然神往却又那般遥不可及。但当我回顾我成长的道路,蓦然发现文学竟存在于我的一呼一吸之间,引导着我对天地生命的思考与感悟,不知不觉间已然牢牢牵系了我的心。文学的温度,仿佛真的可以用手去触碰。

文学于我,不再高踞神坛。

乘着文学的翅膀,世界任我翱翔。

(指导老师:赵书娟)

【点评】

作者就像一个剖析自我内心的“哲学家”,从文章开头的问句引入,层层思考,终于找到了答案——是文学应答了“我”毕生所求的与这世界的联系。接着,作者从文学梦的起源讲起,乡村自然风景、由风景而联想到的古诗、母亲口中的传奇故事等,都成了文学启蒙的诱因,让“我”乘着想象的翅膀在书籍中追寻文学梦。文章结尾,作者感叹“文学竟存在于我的一呼一吸之间”,将主题进行了升华。本文荣获初赛一等奖。

学习资源:历史偷窥

历史偷窥

□ 姜 澜(江苏省苏州第一中学校高一)

 

 

 

暑假的时候,我到上海去玩,住在上海一套租的房子里。

那租来的房子,就在上海的法租界。汽车稳稳地停在路边。三伏的天气,打开车门,盛夏的热气在午后充盈了人的整个大脑,头发被毒日头烘焙得干黄松鬈,像雪茄烟丝。

手足都缺氧,酸软得使不上劲来。我昏昏沉沉地抬头看这套上海老洋房,拉毛处理的墙壁使人感觉好像在抚摸一头巨大的兽。兽沉睡着,呼出巨大的历史风尘气。房子有一个大铁门,漆黑的,黑得要把我溶进去似的。它仿佛是洞察一切的眼睛,无声诉说着过去的二三事。

我们走进房子——这实在是一栋极具艺术气息的房子。最令我感到有趣的是那个壁炉,外面一层铜的雕花已染上铜绿,同时又混杂金属的冰冷血液,像是过去与现实的无情碰撞。

我想,这头兽是受伤的、躲匿的、无处可藏的。

就这样,我住在上海法租界的房子里,在一个不知是什么天气的日子里,跑到楼上去了。我也不知道为什么突然想到要跑到楼上去,只记得天蓝色的塑料拖鞋压在狭窄的楼梯上时,楼梯发出的细小尖叫——一种曾生活在这片土地上的人们从嗓子眼里挤出来的尖叫——可怜的声音。仿佛我每踏一步,便上上下下牵动着整座楼痛的神经。而这些神经仿佛又连着我的了。曾发生在这房子里的悲情经历和风流韵事,它们伸长了精神触角,从那一段沉积的历史中流透出来,在历史的旁观者面前,排演着荒诞滑稽的闹剧。在灰雾弥漫的走廊里,摸索着,伸向我。我顺着它们向房间里看去,一个不存在的男人正坐在床沿上抽烟,旁边是零乱的行李,他满眼血丝,眉头紧锁,突然向门外看了一眼。就在那短短的一瞬,我成为历史的偷窥者。我立即掉头走开。我走过明亮的百叶窗,走过其他租客紧闭着的房门。窗外传来几声鸟鸣,我向外望去,可是透过磨砂的玻璃窗,我什么也看不见,像是被十九世纪的鸟鸣遮住了眼睛。

继续上楼。

啊,这房子的历史感太过强烈,我忽然分不清我是在现实里还是在梦境中了。记忆中仿佛有相仿的东西与之相撞。我靠在窗边,细细回忆起来。

我曾经去古玩市场买过两封信。是那种写信的年代的信,旧信,旧得发黄而卷边,使人联想起夏日黄昏的天空。这信,应该是以低价回收过来的,卖出去时也不贵,一大箱一大箱任你挑选。

这似乎是在出卖人们的隐私,抑或是一段浓油赤酱的历史,同时也满足了人们的偷窥欲。

好奇心是认识美好事物的机遇,也是漫长痛苦的开始。

我轻轻地打开那封信,呼吸不由得急促起来,手脚有些慌乱。

第一封信,内容大致是妻子写给丈夫的:孩子生病了,正在住院,急需钱,还有家庭琐事若干。

我略带欷歔地看完了第一封信。心中如明镜一样亮:这是一封活生生的信啊。那蓝色墨水在信纸上晕染开花,略带潦草的字迹是急切心情的最好载体,顺着笔杆一歪一斜,焦躁的思虑和颤抖的呼吸全都爬进信封里去了。凑近信纸,我甚至能感受到写信人紊乱的鼻息。

第二封则是一段爱情故事的悲剧结尾。“你爱我吗?”这个问题在现在这个物欲横流的世界里似乎很是可笑。海誓山盟吐出一个“爱”字,红男绿女的爱情不配被写在信上。

那么,在那个时代里,他们的爱,是纯粹的吗?

我不知道,这个问题简直胡闹。他们曾在佛祖面前叩首跪拜为对方祈祷,也曾小打小闹到无法收场,可最终还是迎来了爱情的死亡讣告。

那么,你问:过去和现在的区别呢?可能是开始交往的那份初心吧。

读完这两封信,我沉思良久。我偷窥了一段历史,就好像我也亲身经历过了一样。信纸上痛苦不安的褶皱、隐忍不甘的泪痕……也让我感同身受,为他们担忧着,揪心着,痛苦着。

我眼前这封信纸的颜色,将会是他们整个人生的底色。

这感觉其实很像读小说,但是跟读小说并不一样。写在纸上的,是一段真实的人生,是一个个活生生的人,他们不以任何原型为模板。

我越来越不安——他们是如此真实,真实到让我怀疑自己的存在。

我的不安还在于一个地方——那些庞大的考古工程且不去管它。我所进行的历史偷窥,是否具有合理性呢?

无人能够回答我。旁观者如同生活在楚门的世界,由陌生人的喜怒哀乐,衍生出无数思想的浪花,白白拍死在现实的黄金沙滩上,临走退潮时还不忘留下谣言的白色卵。当虚假或真实的玫瑰色曙光照到它们身上时,它们不负责任地破壳而出,传播友好或恶意的评论。

而亲历者已远逝,他们是湖心的月影朦朦,他们的人生被偷窥着,然而仅仅是波动却无法真正地破碎。就像他们当初写出这一封封信时,永远不会猜到这封信将被一个好事的女孩阅读。也像我无意丢失一本日记本时,不知道它们会不会被人捡起,被那人珍重地、哪怕带一点好奇地偷窥着阅读一样。啊——那个人会不会对此妄加评论呢?

一个人敏感起来,隐形眼镜药水瓶子里晃荡的都是一颗颗粘在自己身上的眼珠子。

历史是雨林深处忽高忽低的藤蔓,戴着金丝眼镜的猿猴是始作俑者。而我,被不存在的叫嚣催促。像是穴居在山洞里,蕴含着一股万物生长的体味,急切的、快要喷发的偷窥的欲流,割下火漆的那一刻如同活火山喷发时流畅的欢乐。

耳边闪过蛰虫的细切尖叫和蝙蝠“棱棱”的扑扇声。

我知道——我在偷窥历史,历史也在偷窥着我。

 

(指导老师:陈 佳)

【点评】

作者以独特的视角讲述了一段“偷窥”的奇妙旅程,得出我们是历史的偷窥者,同时也将被历史偷窥的结论。在谋篇布局上,作者匠心独运,带领读者走进“老房子”中随景窥物,随后又触景生情,将读者带入“窥信”的回忆中,引发对历史、对远逝之物的思考,表现了作者独到的感受力。本文荣获初赛一等奖。

 

【专家赏析】

这篇文章的构思比较新奇,写了一个当代人对历史的窥探,也就是从现代人的视角去观察过去时代人们的生活细节。其实是三个片段,一个是租界的老房子,两个是古董摊上买到的旧书信。应该说,这样的话题是比较有意思的,因为不管是老房子还是老信件都是旧时最普通最真实的生活,当时身处其中的人不会想到要留着给多少年之后的陌生人“赏玩”。所以作者就有了一种“偷窥”的感觉:溜进了人家的卧室,偷看了人家的信件。其实这种窥探真正的意义乃在于,立足于今天这样一个纷繁富足、与过去迥乎不同的时代,我们如何才能设身处地去想象从前人们的生活状态与思想感情——也许很多人会替过去的人感到遗憾,他们的生活那么艰难,他们的感情那么单调;也许有人会对旧时的人感到羡慕,他们的生活那么安静,他们的情感那么单纯。但无论如何,过去的永远都不会回来了,所以“偷窥”的人尽可以好好感受这片刻的时光穿越。当然,我们现在所经历的一切,很多年之后也许同样会为人所窥探,他们又会发出什么样的感慨呢?

文章的语言表达比较重视修辞,但是对于主体内容的描述却显得不够充分,尤其是两封信的内容叙述得不够清楚,很难让人形成完整的印象。——其实所有的人都有窥探别人隐私的欲望吧,要不然,那些描写家长里短的文学作品还有什么存在的意义呢?

—— 蒋成峰

 

【专家简介】

蒋成峰,语言学博士,中国传媒大学文法学部副教授,叶圣陶杯全国中学生新作文大赛评委,中国当代文学研究会校园文学委员会副秘书长兼学术委员会秘书。

学习资源:我在街市里彳亍独行,街市在诗中静矗为桥段(十七届叶圣陶杯全国中学生新作文大赛决赛获奖

孔子说:“诗,可以兴,可以观,可以群,可以怨,迩之事父,远之事君。多识于鸟兽草木之名。”中国是一个诗的国度,诗歌传统源远流长,诗歌体裁多种多样,诗的内容包罗万象,诗的风格气象万千。诗歌具有语言凝练、韵律优美、情感真挚、意境深远的特点,所以常常被看成文学的代名词。一个真正的文学爱好者,一定要善于从平凡的生活中发现充满诗意的境界,找到值得歌哭的故事。请从下面选择一个词语,组合成“(   )如诗”,然后以此为题写一篇文章。

祖国,远行,故土,校园,街市

 

 

街市如诗

 

赵诗妤(河南省三门峡外国语高级中学高三)

 

 

晦涩难懂的历史,镌刻在街市角落的树荫里。记在三条落寞的街市,文字在街与街之间跃动;空格在市与市之间连接。沉浮的诗句,随着行走的脚步,一次又一次被揭开面纱。

我闯进一首祈祷诗

教堂在沉默

圣母笑着

眺望街市尽头的书房

青岛的街市似乎都宽阔得能摆满十四行诗,唯有圣母玛利亚大教堂广场向青岛书店延伸的那一条,在拥挤的商铺之间,略显忙碌。圣母玛利亚大教堂是典型的欧式礼堂,玻璃印花的房顶绘着《圣经》中某某章节的故事,平凡的窗下种着红色的玫瑰花。来到此地的人大多数是为了拍摄婚纱照,坐在青岛书店顶楼的台阁上,能看到街道上的新人和顽劣的孩童。这是一段很短的街市,可从教堂望到书店,看到一首修士的祈祷诗。远远的听到玩闹声,促着教堂的虔诚,乘了翅膀一般穿过书籍。捧着圣经的神父,商铺里忙碌的店员,书店里寄出明信片的旅客和为了婚纱照费心费力的新人们,都在祈祷;祈祷主的保佑;祈祷生意红火;祈祷对方的安然快乐心情能够共享;祈祷两个人的爱情能够长久。行在这条书店与教堂之间的街市,自然而然成为祈祷的角色;眺望这条书店与教堂之间的街市;理所应当成为一首祈祷诗。

我闯进一首古韵词

河流在嬉闹

桥梁泣着

眼泪落在遗忘的船舱。

凤凰的街市真的不算太多,景区里的一条邻着河,很独特。街市上挤着旅馆和饭店,都被辅以古香古色的门面,清一色儿的古式器具,给人一种穿越的感觉。我和父亲以及他朋友们一起来的这里,男人们在晚上喝酒胡侃,女人小孩便携手出去购买些有特色的小物件。我走到桥边,轻轻坐下,卖荷包的阿婶悄声提醒:“女娃可要小心些阿,莫要一头栽下去喽,废的船硬邦邦,都堆在桥下呢。”我讪讪缩回前探的身子,她却佝偻起身子,恍然来了一句“你看这条河,流的悄悄像死了一样。我小时候最想和哥哥们一起捕鱼,等我大了,河也坏了。”我看着又浅又慢的河,起身离开了那座桥。桥的对面实在是乱,或许这座桥,也快要被淘汰了吧。回到下蹋的酒店,父亲有些喝大了,开始念念有词,他从渔人变成打工的人,不知白天桥底的废船,是不是惊醒了他心里的少时记忆。酒过三旬,梦想爬出现实的枷锁。父亲的梦想,像一杯回味悠长的眺望。我恍然回顾这条街市,又是多少渔民梦想的寄望?他们早已走出了半生,归来的时候,河流似乎如旧忆中一般喧闹,归来仍是少年梦想。望着灯火通明的街市和承载记忆的河,梦想沉浮之间,我们都成了这首古韵词的标点。

我回到这首归根作

车票在跃跳

商铺吵着

催着游子渐入梦乡

今夕何夕,青草离离。故乡三门峡,是一个实在渺小的城市;街市,也是拥挤吵闹的样子。公园路上有这么一条街市:早上是琳琅满目的早餐店,上午变成菜农卖菜一条街,下午又是服装批发市场。我捏着公交车的车票,趁早餐店未散,点了一碗胡辣汤。外地喝的要么太辣,要么太酸,千般万般不如故乡的好。我的童年,是牵着姥姥的手在蔬菜果品之间跳跃;是拉着妈妈的衣摆央求获得玩具;是和家人一起走进坚果店。诗人说:“生活是柴米油盐酱醋茶,我却说思乡亦是柴米油盐酱醋茶。”

我回到故乡的第一个夜晚,商铺虽然吵闹,但是我却睡得更香了。又忽然想到归国的华罗庚,是不是同我一样,在故乡的第一觉,纵使再吵,也睡得安心。清晨的街市依旧吵闹,我从窗前坐起向下看,小贩忙碌的影子交错重叠,都变成这首归根之作的景物描写,故乡的阳光点缀老旧的玻璃,折射的光线点悦赏我的年少诗句。静静地让灵魂享受这次长久的归来,我对这条街市的诗意,似乎已流淌了一个世纪。归乡情怀总是诗,炽热的归属感贯穿诗篇的每一词句。

大抵每条街市都是一首诗,无论吵闹或是寂静,拥挤还是空阔,都是诗中一句。天地博大,皆可为诗。希望的祈祷,破碎的梦想和炽热的思乡,都有其独特的感伤。诗以载情,人以歌诗,我在街市里彳亍独行,街市在诗中静矗为桥段,街市如诗,情寄街市。

 

(指导老师:建艳朋)

 

【点评】小作者围绕“街市如诗”的主题,写了青岛的街市如一首祈祷诗,凤凰的街市如一首古韵词,三门峡的街市如一首归根作,很好的抓住了三个城市不同的特点:青岛的圣母玛利亚大教堂广场,凤凰的景区街市,三门峡的公园路街市,思信仰,忆发展,念乡愁。语言如诗,有文有情有味。能从平凡朴实的日常生活中发现诗意之美,体现了较高的文学素养和审美能力。本文荣获现场决赛一等奖。

学习资源:北方、南方与我(十七届叶圣陶杯全国中学生新作文大赛初赛获奖佳作)

北方、南方与我

苏施予(甘肃省武威第一中学高二)

 

“你喜欢甜粽还是咸粽?”这是每年端午节必答的题目之一。“甜枣咸肉粽。”又是一年端午佳节,我给出一个这样的答案。

我是沙漠的孩子。在腾格里沙漠和巴丹吉林沙漠长达数万年的拉锯战中,这里形成了一道小小的缝隙,叫作河西走廊。河西走廊东端有一座唐代的大城市,叫作凉州。

凉州,是我生命起源的地方。凉州的端午,不论男孩穿不穿虎头鞋,女孩戴不戴荷包,都要走出去“遛毛病”。只要走出去,就有绵延的祁连山和广阔的大沙漠。而儿时的我,最喜爱一个猛子扎进茫茫沙海的怀抱。

越野车刚刚停止低沉的嘶吼,孩子们便一个个跳下车,在沙子里打起滚来。不一会儿,像被丢进油锅的丸子,每个人都被沙子裏得全身金黄。

斟满了酒,摆开了面皮子,铺一张废报纸当坐垫。大人们的竞赛,便在划拳声中拉开了帷幕。对于沙漠里喝不醉人的说法,我始终表示怀疑,毕竟大半的酒实际上灌给了漫无边际的沙,是沙漠的酒量好才对。当大人们的竞赛如火如荼地进行时,我们孩子间的较量也暗潮涌动。我不说什么话,只是默默爬上依然坚挺的明代土城墙。

我猛地一蹬,人仿佛轻得像只蚂蚁。从我的脚掌间,非常清晰地感觉到来自每一粒沙的浮力。

妈妈们总是生气 :“那么高,不怕摔疼!”沙漠从来是个不会乖乖恢复原形的海绵,而是一大块用来做大车轮子月饼的发面团。我一扑进沙里,便陷出一个人形。跌进发面团的小孩,只会呛得咳个不停,哪里会疼呢?只是当我们比试结束后,明长城的宽脑壳顶又秃了一角。在沙漠里,不管是引吭高歌,还是撒丫子狂奔,都无拘无束,自由自在。

在大西北念完三个月的书,半年的另一半里,我是珠江的伙伴。凤凰山上,普陀寺的僧人敲响了钟。凤凰山脚,我又回到了久别的前山河畔——我的家。

一觉睡到自然醒,慢吞吞地冲个凉。十点过后,一大家人去喝早茶。

落座后,第一件事自然是“啷碗”。管它九大簋,管它街边大排档,不啷碗,“周身唔聚财。”哇!摆开碗碟,右手执筷子,左手拎茶壶,筷头抵在茶杯底。壶嘴一歪,茶水便规规矩矩顺着筷子构成的通道滑入茶杯。待茶杯满了大半,好戏才刚刚开始。伴着手腕高频率抖动,筷身当当当敲在杯沿,筷头叮叮叮打在杯底,“叮叮当当错杂弹,大珠小珠落玉盘。”

一行人,数十只筷,便是小型打击乐演奏会。啪,筷子横在旁边的碟上。第一回合,终!

抓起茶杯,抬起胳膊来个翻转,茶水仿佛不是液体,而是一条长长的带鱼,在半空中微微一晃动尾巴,就乖乖进了碗,不溅起一滴水花。不等第二回合的炫技结束,第三回合已无缝衔接上了。把茶杯倒扣入碗中一淘,再将碗中茶水涮一涮。最后倒进备好的大铁盆,这独属于广东人的仪式便完成了。然后才轮到点单。

吃早茶的真谛,不在于品尝靓汤的鲜美、豉汁的味浓,也不在于纵享肠粉的细腻、蛋挞的柔滑,而在于享受与亲人闲聊的时光。因此,人们常说“叹茶”,粤语里“叹”有享受之意, “叹茶”表达的不仅是吃,更是表达享受早茶所代表的这种闲适且精致的生活方式。

固然,随着时代发展,人们的生活节奏越来越快。但是,在今日,如此“叹茶”真的不合时宜了吗?快节奏发展真的无法避免地伴随着浮躁吗?

每个城市都有它与生俱来的气质,这种气质悄无声息地浸润着你。当西北与广府两种截然不同的气质碰撞在我的成长中时,它们的有机结合,尤其在饮食上显得格外有趣。西北家家喜炸油泼辣子,广东人人早餐爱吃布拉肠粉,于是我家餐桌上端上了油泼辣子拌肠粉;西北回民多,善烤馕,广东常烹白切鸡,于是我的饭盒里装上了馕夹白斩鸡。

一方水土一方人。海明威说过 :“如果你足够幸运,年轻的时候在巴黎居住过,那么从此以后无论你走到哪里,巴黎都将一直跟着你。”沈从文是湘西凤凰人,在凤凰近二十年,早年的生活成为他生生不息的创作源泉,转化为他后来作品中观察社会的独特视角。虽说以地域来解释个人发展难免以偏概全,但倘若没有青年时期湘西风情的滋养,沈从文还是沈从文吗?

我出生于西北,面前的黄土地养成了我淳朴踏实的作风,背靠的茫茫沙漠又赋予了我磨不去的“狼性”,长年累月的沙尘暴磨砺出我的坚韧。我人生的一大部分,特别是童年,在珠江边度过。广东人是林语堂先生口中的“食蛇民族”,儿时的我,也渐渐沾上了这种未经驯服的野性。

白话讲:“我走先。”动词的提前,体现了广东人先做再说的行事风格。“敢为天下先。”

我也大胆起来,敢于打破常规、创新超越,同时汲取南北方的养料。我成了一个融合多元气质的独立个体,这就是:我敢作敢为,吃苦耐劳。

我喜欢标新立异,但稳重而不张扬。我爱甜粽,爱咸粽,更爱甜枣咸肉粽。

我爱北方,爱南方,也爱与众不同的我。

(指导老师:赵凤琴)

 

【点评】

本文以自己的生活成长经历为线索,串联起南北两个风格迥异、风情万千的地方。作者善于选取两个地方中各具风格的典型场景和典型环境,通过“在大西北念完三个月的书,半年的另一半里,我是珠江的伙伴”巧妙过渡后,作者的叙述语言也跟随着城市风情进行了有意识的变换,语言风格与城市风格高度契合,足见作者功力。文章后半部分对不同生活方式和对个人行事风格的形成,进行理性分析,挖掘了深度。本文荣获初赛一等奖。

 

【专家赏析】

这篇文章没有贯穿始终的故事,只有几个富有生活气息的生活场景,勾勒了西北大漠中的老家和东南都市中的新家的生活面貌。老家的记忆是茫茫沙海和沙海中豪放不羁的酒客,而新家的印象则是丰盛美味的早茶和享受生活、创造生活的人们。

作者的感受细腻敏锐,语言表现也贴切到位。尤为难能可贵的是,文章所确定了一个比较新鲜的主题:表达出新一代年轻人突破了狭义的“家乡”观念,对于老家和新家同样都有亲切的感觉,无论生活在哪里,都是自己的家,都毫无疏离感。既对生我养我的故土念念不忘,又能自然舒适地融入了新家的生活氛围,既可以在大漠黄沙中嬉闹,又可以在城市高楼里扎根。苏东坡曾说:“此心安处是吾乡”,在那个时代,也许还有一点无可奈何的味道,对现代人来说,这种心态其实更多地是一种开放的胸襟和享受生活、感受世界的方式。而在这篇文章中,这个主题不是作者自己说出来的,而是通过一个个有血有肉的生动细节暗示、渲染出来的,这一点,也正是文学笔法的真谛所在。

 

古篆文一篇,供书法学习用

铭文原文
曰,古文王初。教琳于政,上帝降处德大曾。甸有上下造受万邦。泌围武王,透征四方,达殷吮民,永不巩狄皮,长伐夷童。富圣成王,广左右毅盘刚稣,用爹取周郑。肃握康王,兮尹吉疆。玄普邵昭王,广能支楚荆,帷奥南行。窗舰穆王,井帅宇侮,膝盅天子。天子圈居文武长刺,天子赞无句。攘祁上下,巫狱趁慕,昊复亡吴。上帝司最,尤保受天子缩令命,厚福丰年,方排亡不从见。青幽高祖,甲效微需处。雪武王既钱殷,歌史使祖道来见武王,武王则令命周公舍围于 周,卑件处角。虫忽乙祖速匹华辟,远献幻心。子瓜,杏明亚祖辛,或毓子孙 。林鳍多零,果角黛光,义其赛祀。雾得文考,乙公稼越 ,贡屯无辣,农案岁音。帷辟孝晋友,史使墙夙夜不萦坠,其日蔑历。墙弗敢粗,对扬天 子不显休命,用作宝季弃。利祖文考,戈雍受授墙尔簇福裹,箱录、黄者、弥生,老吏事华厥辟,其万年永宝用。

 

如何修改CentOS系统最大线程数

本文主要介绍如何修改CentOS系统最大线程数。

详细信息

  1. 安装ElasticSearch后,配置完成,启动服务,系统显示类似如下。
    max number of threads [1024] for user [elk] is too low, increase to at least [4096]
    
  2. 执行如下命令,查看最大线程数,确认最大线程数为3825。
    ulimit -u
    
  3. /etc/security/limits.d/20-nproc.conf文件中nproc值设置成4096,重新登录服务器,执行如下命令,发现最大线程数还是3825,重启服务器后查看最大线程数还是3825,尝试将文件中nproc值修改为1024,重启服务器后查看线程数还是3825。
    ulimit -u
    
  4. /etc/security/limits.d/20-nproc.conf文件中添加如下内容,保存文件,重新登录服务器。
    * soft nproc 65535
    * hard nproc 65535
    

适用于

  • 云服务器ECS

centos搭建CDN服务器

这里我们采用WDCP和WDCDN来建立我们的CDN加速点。因为WDCDN依赖于WDCP,所以我们先来安装WDCP。
具体步骤如下:

第一步:安装WDCP 1.X

wget http://dl.wdlinux.cn:5180/rpms/rpm_install_1x
sh rpm_install_1x

中间会提示选择安装lamp 或 lnmp
卸载执行:

sh rpm_install_1x un

第二步:安装WDCDN

wget http://www.wdlinux.cn/in_scripts/wdcdn_install
sh wdcdn_install

卸载方法:

service squid stop
chkconfig --level 3 squid off
vi /www/wdlinux/nginx/conf/nginx.conf
vi /www/wdlinux/apache/conf/httpd.conf

底部的注释去掉

service httpd restart
service nginxd restart

安装完成后登陆WDCP的管理系统,来添加要加速的网站域名
添加完后,做好域名的解析即可。

PCDN–P2P技术与CDN的融合创新

P2P技术是最近两年涌现的一个热潮,国内不少的互联网公司纷纷押宝在P2P技术上,一时间,P2P的概念风靡整个互联网市场。然而目前单纯的P2P应用亦存在它的问题,P2P业务的盛行会带来网络流量风暴;新闻监管缺失,内容版权管理真空,盗版盛行;可能导致恶性病毒;给电信运营商以及产业链造成损害。

另一方面,作为传统运营商级别的CDN内容分发网络,在过去的多年时间中,在为运营商加速流媒体、实现下载、直播和点播、管理流媒体平台、智能分发和控制等方面,起到了关键的作用,但由于CDN由于其核心仍然是基于集中服务器的结构,跟地域化管制紧密相连,很难降低其扩展的成本。而且传统CDN技术在高峰时期对突发流量的适应性,容错性等方面仍然存在一定缺陷。随着用户规模的迅速增加,对CDN应用发展提出了较大挑战。

P2P技术和CDN网络的固有缺陷,都对其业务发展提出了严峻的考验。如何寻找一套可实现低成本扩展、有效监管、有效管理、服务保障、区域控制的解决方案则成为当前最急待解决的问题。让我们首先来回顾一下CDN和P2P技术。

CDN技术和P2P技术简单回顾

CDN的全称是Content Delivery Network,即内容分发网络,是一种基于C/S结构的分布式媒体服务技术平台。是目前采用比较普遍,技术成熟度比较高的一种平台。其目的是通过在现有的Internet中增加一层新的网络架构,通过智能化策略,将用户需要访问的内容发布到分发到距离用户最近、服务质量最好的节点,同时通过后台服务自动的将用户调度到相应的节点,为用户提供最好的服务。这种方案有效缓解了Internet网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,造成的用户访问响应速度慢的问题。

传统的CDN技术虽然可以在一定程度上加速流媒体,实现下载、直播和点播。但是其核心仍然是基于集中服务器的结构,跟地域化管制紧密相连,很难降低其扩展的成本。另外,传统CDN技术在高峰时期对突发流量的适应性,容错性等方面仍然存在一定缺陷。随着用户规模的迅速增加,对CDN应用发展提出了较大挑战。

P2P技术则是打破了传统的Client/Server模式,是一种基于对等节点非中心化服务的平台方案。P2P技术发展迅猛,迅速改变了整个互联网传统秩序。“去中性化”符合WEB2.0技术潮流。特别在流媒体领域,由于采用Peer之间对等计算的模式,大大提高了资源共享的利用率,能在较低的成本下,充分利用空闲时间分发数据,避免拥塞,提供具备高实时性,和容错性能的流服务。为流媒体服务开辟了一条崭新的道路。

然而目前单纯的P2P应用亦存在它的问题,P2P业务的盛行会带来网络流量风暴;新闻监管缺失,内容版权管理真空,盗版盛行;可能导致恶性病毒;给电信运营商以及产业链造成损害。此外,层出不穷的p2P产品采用的拓扑结构、算法模型不尽相同,缺乏标准体系,应用模式也不清晰。这些问题都阻碍了P2P技术进一步发展成为运营商级别的可靠技术平台。

CDN和P2P技术优劣势分析

下面我们对CDN和P2P技术做一个简单的优劣势分析。通过分析我们可以看到,在可扩展性、内容 版权、用户管理有效性、QoS、流量有序性方面,CDN和P2P技术是各有所长,基本上是完全互补的。

CDN P2P
可扩展性 扩展成本较高 低成本扩展
内容版权 可监管 不可监管
用户管理有效性 可实现用户的有效管理 无法进行有效的用户管理
QoS服务 可保障服务 无法保障
流量有序性 流量区域控制 无序

表1 CDN与P2P优劣势分析

也就是说,P2P和CDN技术在几个关键点上,完全实现互补,如果能将两种技术有效的结合起来,必然是一种更加完美的组合。于是,一个崭新的技术就这样产生了。

CDN和P2P技术的融合创新——PCDN概念的诞生

一种全新的思路是在CDN网络中,引入P2P技术。通过这种模式,可以在不增加成本的同时有效提升CDN服务能力,更有效避免了P2P应用的诸多弊端,是在当前运营商网络状况下最理想的媒体业务承载平台方案。

思华PCDN产品就是一种在CDN产品中引入了P2P技术的流业务承载平台方案。它是思华ContEx系列○注CDN产品的继承和发展,除兼具思华ContEx系列的相关功能外,还可对外提供P2P服务。

PCDN产品的核心设计思想是在CDN网络的边缘节点上引入P2P自治域。由单个或若干个ContEx边缘节点设备及其覆盖的最终用户作为对等实体,共同构成一个P2P自治域。在域内利用P2P技术实现资源共享,而自治域之间不发生流量交换。

PCDN--P2P技术与CDN的融合创新

图1 P2P+CDN结合原理

通过将这两种结构互异的网络进行光滑对接,在有效保障现有CDN资源的情况下,又能够充分吸收P2P的优势,实现了面向运营商的P2P服务。

PCDN的主要优势

具体来说P2P与CDN相融合,具有下列优势:

1、 流服务能力的提高
P2P传输的内容与原CDN的内容有所不同,在核心节点根据P2P协议对内容(包括文件和流)做切片处理,P2P用户将根据这些规则来完成P2P共享。P2P在边缘层的引入大大降低了边缘服务器的压力,提高了文件传输和流媒体传输的效率。

P2P技术充分利用了用户的闲置上行带宽,这样运营商可以通过更少的边缘服务器,提供更多的业务量为更多的用户服务,以较低成本代价应对迅猛增长的客户规模带来的挑战。

2、可管理的P2P+CDN网络
为了避免骨干网上的流量对冲,通过集中的分布式架构,将P2P的流量严格限制在同一边缘节点的区域内。这样就继承了P2P和CDN的优点,同时摒弃双方的缺点,避免电信骨干网上的流量无序性和风暴,增强了网络的可管理性和服务高的可靠性。通过客户端,可以实现对用户的监控,流量的监管。

3、客户体验的改善
一方面,P2P+CDN结合的方式,使得有限的服务能力可以为更多的用户提供流媒体服务。超级种子的存在保证了服务质量。另一方面,P2P技术的应用也能够更有效地防止因网络的抖动而产生对服务质量的影响。

https://blog.csdn.net/wxb880114/article/details/82743816

小说:无敌从当皇帝开始

《无敌从当皇帝开始》

第1章系统来了

“叮!”

“叮,激活无敌皇帝系统!”

“叮,无敌皇帝系统激活,恭喜宿主获得初始礼包一个,随机召唤机会一次。”

耳畔机械声传来,凌霄缓缓从床榻上爬起,一双眸子,闪烁着希冀之光。

十五年了。

穿越到飞仙大陆十五年。

在我凌霄临死之际,终于让我觉醒了系统。

凌霄本是华夏一学子,一场意外,让他穿越到飞仙大陆,成为北秦郡国的皇子。

十五年来,凌霄从最开始对系统的期待,到最后慢慢失望。

穿越前他可是老书虫。

知道天将降大任于斯人也,必先使其穿越,给其系统。

从此,生活达到高潮,走上人生巅峰。

原本以为自己没有系统,没想到系统在他身体里隐藏了十五年。

苦等十五年,系统终于出现了。

上天眷顾啊。

“九王叔,玄光宗,你们强加在孤身上的一切,从此刻开始,孤会一点点还给你们。”

凌霄冷眸凛冽,咬牙说着,想起明日九王爷就要登基了,心下登时腾起一股怒火。

皇位本属于凌霄。

因为三日前先帝薨逝,身为太子的凌霄,顺理成章继位。

九王爷窥觊王位许久,加上背后有玄光宗支持,他发动兵变,控制皇宫,囚禁凌霄让他禅位。

百般折磨下,凌霄没有答应,凌战决定明日继位。

而他登基后第一件事,就是杀凌霄。

“凌战,孤不会让你得逞的!”凌霄心下暗语,心神一动,“系统,现在我是不是有一次抽奖和一个礼包可以使用?”

http://www.it09.net/?action=read&book=%E6%97%A0%E6%95%8C%E4%BB%8E%E5%BD%93%E7%9A%87%E5%B8%9D%E5%BC%80%E5%A7%8B.html

CURL模仿浏览器读取网页的方法。

网页直接抓取通不过,需要设置相关网页参数,模拟浏览器读取网页,以获取数据。成功。聊记之。

/**
* curl获取数据
* @param $url
* @return mixed
*/
function get_url($url)
{
$ifpost = 0;
$datafields = ”;
$cookiefile = ”;
$v = false;
//构造随机ip
$ip_long = array(
array(‘607649792’, ‘608174079’), //36.56.0.0-36.63.255.255
array(‘1038614528’, ‘1039007743’), //61.232.0.0-61.237.255.255
array(‘1783627776’, ‘1784676351’), //106.80.0.0-106.95.255.255
array(‘2035023872’, ‘2035154943’), //121.76.0.0-121.77.255.255
array(‘2078801920’, ‘2079064063’), //123.232.0.0-123.235.255.255
array(‘-1950089216’, ‘-1948778497’), //139.196.0.0-139.215.255.255
array(‘-1425539072’, ‘-1425014785’), //171.8.0.0-171.15.255.255
array(‘-1236271104’, ‘-1235419137’), //182.80.0.0-182.92.255.255
array(‘-770113536’, ‘-768606209’), //210.25.0.0-210.47.255.255
array(‘-569376768’, ‘-564133889′), //222.16.0.0-222.95.255.255
);
$rand_key = mt_rand(0, 9);
$ip= long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
//模拟http请求header头
$header = array(“Connection: Keep-Alive”,”Accept: text/html, application/xhtml+xml, */*”, “Pragma: no-cache”, “Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3″,”User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)”,’CLIENT-IP:’.$ip,’X-FORWARDED-FOR:’.$ip);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $v);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost);
$ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
$cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch,CURLOPT_TIMEOUT,60); //允许执行的最长秒数
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$ok = curl_exec($ch);
curl_close($ch);
unset($ch);
return $ok;
}
////结束。

php从底层读取pdf文档-无需PDF函数库支持-fPDF类使用详解

一.资源下载:

Adobe Reader 6.0
Adobe 的PDF阅读器6.0版。

本文章所覆盖的技术无法使Adobe Reader 4.0及其之前的版本支持简体中文。

FPDF类

ZIP-Format: http://www.fpdf.org/en/dl.php?v=152&f=zip

TGZ-Format: http://www.fpdf.org/en/dl.php?v=152&f=tgz

一个使用PHP编写的PDF类,不需要PHP的PDF函数库,直接从底层操作。

压缩包中包括:FPDF类、使用文档、演示、创建字体程序。

授权方式:Freeware,可以任意使用、修改、发布。

FPDF扩展类

以下是FPDF的多语言扩展类:

ZIP-Format: http://www.fpdf.org/download/chinese.zip

中文(简/繁体)支持。

ZIP-Format: http://www.fpdf.org/download/japanese.zip

日本语支持。

ZIP-Format: http://www.fpdf.org/download/korean.zip

朝鲜语支持。

字体格式转换程序

ZIP-Format: http://heanet.dl.sourceforge.net/sourceforge/ttf2pt1/ttf2pt1-3.4.4.zip

TGZ-Format: http://heanet.dl.sourceforge.net/sourceforge/ttf2pt1/ttf2pt1-3.4.4.tgz

Windows-Binary: http://www.fpdf.org/fr/dl.php?id=22

“TTF2PT1”是一个将TureType(.ttf)字体转换为Type1(.afm)字体的工具。

ZIP-Format: http://heanet.dl.sourceforge.net/sourceforge/ttf2pt1/ttf2pt1-chinese-3.4.0.zip

TGZ-Format: http://heanet.dl.sourceforge.net/sourceforge/ttf2pt1/ttf2pt1-chinese-3.4.0.tgz

这是”TTF2PT1”的中文语言支持。

ZIP-Format: http://www.fpdf.org/fr/dl.php?id=34

“PFM2AFM”是一个将PFM(.pfb)字体转换为Type1(.afm)字体的工具。

下面讲的内容都将与TureType字体有关,如果想使用PFM字体就自己研究吧,应该很简单。

二.安装:

Windows
FPDF类及其扩展类:

解压缩FPDF类到C:\www\fpdf目录,然后将其扩展类中的文件复制C:\www\fpdf目录。

TTF2PT1:

将Windows二进制版解压缩到C:\ttf2pt1目录,将中文支持包中的ugb.map(或ugbk.map)复制到C:\ttf2pt1目录。

Linux/UNIX
FPDF类及其扩展类:

解压缩FPDF类到/var/html/www/fpdf目录,然后将其扩展类中的文件复制/var/html/www/fpdf目录。

TTF2PT1:

将源代码解压缩到/tmp/ttf2pt1目录。

  1. cd /tmp/ttf2pt1
  2. make
  3. make install
  4. make uninstall (卸载)

将中文支持包中的ugb.map(或ugbk.map)复制到/usr/local/ttf2pt1/map(可能是这个,其实复制到哪里无所谓。)

三.转换字体格式

Windows

1.安装字体

  1. C:\ttf2pt1\ttf2pt1.exe –a –L ugb.map+a1 C:\Windows\Fonts\FZCQJW.ttf FZCQJW

上面以方正粗倩简体为例,将会生成C:\ttf2pt1\FZCQJW.afm和C:\ttf2pt1\FZCQJW.t1a两个文件,我们需要将TTF字体(FZCQJW.ttf)和AFM字体(FZCQJW.afm)复制到C:\www\fpdf\font目录。

2.引入文件

  1. <?php
  2. require(‘./makefont/makefont.php’);
  3. MakeFont(‘./FZCQJW.ttf’, ‘./FZCQJW.afm’);
  4. ?>

将以上代码保存到C:\www\fpdf\font\makefont.php文件并运行。

将会生成FZCQJW.php和FZCQJW.z两个文件,如果.z文件不存在需要手动将FZCQJW.ttf CopyTo FZCQJW.z。

删除FZCQJW.ttf和makefont.php。

Linux/UNIX
类似Windows的方式,自己琢磨一下吧,很简单这里就不详细说了。

四.开始!创建PDF!

Windows

  1. <?php
  2. require(‘chinese.php’);
  3. $pdf=new PDF_Chinese();
  4. $pdf->AddGBFont(‘FZCQJW’, ‘方正粗倩简体’);
  5. $pdf->Open();
  6. $pdf->AddPage();
  7. $pdf->SetFont(‘FZCQJW’,”,20); $pdf->Write(10,’测试中文还有英文’);
  8. $pdf->SetFont(‘FZCQJW’,”,10); $pdf->Write(10,’ BY [方正粗倩简体]’);
  9. $pdf->SetFont(‘FZCQJW’,”,10); $pdf->Write(10,”\n中文 English”);
  10. $pdf->Output();
  11. ?>

将以上代码保存到C:\www\fpdf\test_chinese.php文件并运行,如果安装了Adobe Reader 6.0将会在浏览器中直接显示,否则可以下载后再打开。

Linux/UNIX
类似Windows的方式,很简单这里就不详细说了。

用MediaCreationTool工具下载官方原版win10系统

WIN10系统的获取
1.将下面链接复制到任意浏览器地址栏(微软官网链接,选系统,我相信官网)

https://www.microsoft.com/zh-cn/software-download/windows10/

网址界面,点击“立即下载工具”

教你打造自己的win10精简系统(超详细)
2.打开MEDIACREATIONTOOL工具

点击“接受”

教你打造自己的win10精简系统(超详细)

点击“为另一台电脑创建安装介质(U盘、DVD、或IOS文件)”,并选择“下一步”

教你打造自己的win10精简系统(超详细)

或者

根据自己的需求,选择“语言”、“版本”、“体系结构” 或者直接选择 “对这台电脑使用推荐的选项” ,然后点击“下一步”

选择“IOS文件”,“下一步”

教你打造自己的win10精简系统(超详细)

这一步会让你选择下载系统保存的位置,选择好之后点击“保存”(为了操作方便,我直接保存在桌面了)

工具开始下载win10系统

image.png

下载完成后,工具会自动创建win10系统的安装介质

创建完成之后,直接点击“完成”即可

路由器工作原理

定义

路由器(router)是互联网的枢纽,是连接英特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送数据。
作用在OSI模型的第三层,提供了路由转发两种重要机制

在这里插入图片描述
路由:路由器控制层面的工作,决定数据包从来源端到目的端所经过的路由路径(host到host至今的最佳传输路径)
在这里插入图片描述

转发:路由器数据层面的工作,将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行)
在这里插入图片描述

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地,把该分组从路由器的某个合适的输出端口转发给下一跳的路由器。
下一跳的路由器也按照这种方法处理分组,直到该分组到达终点为止。


路由器的功能

  • 路由:收集网络拓扑信息并动态形成路由表
  • 转发:根据转发表(FIB)转发IP数据包
  • 子网间速率适配
  • 隔离子网
  • 隔离广播域
  • 指定访问规则
  • 不同类型的网络互联:路由器经常会收到以某种类型的数据链路帧封装的数据包,当转发这种数据包时,路由器可能需要将其封装为另一种类型的数据链路帧。数据链路封装取决于路由器接口的类型及其连接的介质类型。

基本工作过程

在这里插入图片描述
路由器工作在OSI模型三层(网络层)
收到数据包后根据OSI模型层层将数据包拆开,到网络层后根据IP进行路由转发
根据接口协议层层封装,实现异种网络的互联

在这里插入图片描述


路由器的结构

在这里插入图片描述
路由器内部整体分为两部分:路由选择部分、分组转发部分
路由选择部分:软件、控制层面、核心是路由选择处理机
分组转发部分:硬件、数据层面、核心是处理芯片和交换结构


报文处理路径

在这里插入图片描述
控制路径: 处理目的地址是本路由器的高层协议报文,特别是各种路由协议报
文。虽然控制路径不是路由器的关键路径,但是它负责完成路由信息的交互,从
而保证了数据路径上的报文沿着最优的路径转发

数据路径: 处理目的地址不是本路由器而需要转发的报文,因此数据路径是整个
路由器的关键路路径,它直接影响路由器的整体性能


路由表和转发表

每个路由器中都有一个路由表和FIB(Forward Information Base)表:路由表用来决策路由,FIB用来转发分组。

路由表:这里个表都用来保存路由信息,路由表通常由路由协议和路由管理模块维护,包括更多的信息(IP地址/IP子网、下一跳、路由度量、超时间等);
路由表中路由有三类:
(1)链路层协议发现的路由(即是直连路由)
(2)静态路由
(3)动态路由协议发现的路由。

转发表(FIB):是基于路由生成的,路由器实际转发时使用转发表(只包括IP地址/IP子网和下一跳/出接口);
转发表中每条转发项都指明分组到某个网段或者某个主机应该通过路由器的那个物理接口发送,然后就可以到达该路径的下一个路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。
高性能路由器转发表通常都用硬件来实现,有利于高速查找。

CAM、TCAM是一种特殊的存储器,无论表大小如何,都会在一个时钟周期内检索出地址

CAM:执行二元运算

  • 基于0或1匹配;所有比特都必须匹配
  • “命中”将返回结果(出接口)
  • 用于MAC地址查询
    在这里插入图片描述

TCAM:执行三元运算

  • 基于0、1或X(不关心)匹配
  • 最长匹配返回“命中”
  • 适用于并非所有值都需要精确匹配的查询(ACL或IP路由表)
    在这里插入图片描述

分组转发部分

输入端口

在这里插入图片描述

交换结构

交换结构是一台路由器的核心组件,它的作用就是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去

输出端口

在这里插入图片描述


路由器演化史

第一代路由器

集中转发,固定接口
在这里插入图片描述

  • X86架构,转发速率小于0.5Gb/s,接口种类少
  • 由一个中央处理器和若干网卡通过共享总线互联而成
  • 主要功能是软件实现的
  • 结构简单,容易实现,性能低
  • 性能低的原因:
  1. CPU既运行路由协议,也负责数据包的处理和转发,存在严重的处理瓶颈
  2. 主要的数据处理涉及到存储器,对其的访问速度会影响系统性能
  3. 数据移动必须两次通过总线,耗时,有时甚至超出数据包头的处理时间

第二代路由器

集中转发,模块化接口
在这里插入图片描述

  • 数据在第一次到达时生成转发表,然后将转发表从CPU下发到接口线卡缓存,一次转发多次路由
  • 路由状况不断变化的环境中,IP路由表的改变会使得转发表无效,线卡缓存需要不断从CPU中同步转发表,性能优势会受到很大限制

第三代路由器

分布式软件转发
在这里插入图片描述

  • 转发速录小于5Gb/s,处理能力强,接口种类多,配置灵活
  • 提高了线卡的处理能力,将CPU从路由转发中解放出来
  • 从板拥有自己的CPU,内存和若干网卡的独立子系统,在本地线卡进行存储和转发判断
  • 主板基本不参与路由转发操作,主要负责整个系统的管理操作和路由计算等任务,把转发表发布到各个从板上
  • 主板和从板的分布式结构大大提高了系统的整体性能

缺点:

  • 共享总线的容量直接限制了路由器的吞吐率,成为系统无法避免的瓶颈

第四代路由器

基于ASIC与交换矩阵
在这里插入图片描述

  • 转发速率小于50Gb/s,IP处理能力由质的突破,端口较丰富,端口r容量大
  • 交换结构的引入解决了总线的瓶颈,显示无阻塞交换
  • 对QOS,MPLS VPN,IPV6,组播支持能力弱
  • 引入交换结构代替原来的共享总线,提供了比共享总线高得多的带宽
  • 线卡上不采用通用CPU,而是采用ASIC实现的专用转发引擎或者是针对网络处理进行了优化的网络处理器

NP (network processor)芯片

可编程,同时对多业务硬件处理进行加速
网络芯片(NP)技术的出现是为了了适应下一代高速网络特点的需要,提供网络服务质量(QoS)控制,不断适应新的网络应用,发展新的网络管理模式以及快速响应市场对新的网络功能的需求而推出的一项新的芯片技术。它同时具有通用芯片和专用集成电路
ASIC两方面的优点,既具有ASICs线速转发报文的高速度特性同时又具有通用芯片的可编程性。
在这里插入图片描述


第五代路由器

在这里插入图片描述

  • NP与ASIC之比较 性能更高:内部集成数十个CPU及硬件协处理器、硬件加速器,在实现 复杂的拥塞管理、队列调度等QOS功能前提下,仍能保持线速转发, 实现“硬转发”;
  • 扩展更灵活:预留的用户接口可编程,扩展灵活;
  • 业务支持能力强:对新的增值业务(MPLS、QOS、组播等等)迅速支持;
  • 管理灵活,开发方便,大大缩短二次开发周期;
  • 预留IPv6接口,可通过软件平滑升级;
  • 可靠性高:芯片转产前通过严格的疲劳性测试,适合开发电信级设备。

第六代路由器

在这里插入图片描述
三级交换结构、严格意义上的无阻塞结构 第二级通常是单独的中央交换框 F1、F2、F3之间采用光纤互连(光背板) 随着分组搜索系统的日趋复杂,设计师需要采用各种各样的解决方案以满足千差万别的搜索要求。
策略略查表法(例如存取控制表(ACL)和服务质量量(QoS))需要高性能以及超群的搜索灵活性和易用性——而所有这些都需
要采用TCAM。
另一方面,转发查表(包括虚拟路由器转发(VRF)和虚拟专用网(VPN))也可以使用TCAM技术进行加速。随着网络速度的剧增,传统的解决方案已
经无法满足速度要求,这时就需要一个专门的硬件来解决这个矛盾,该硬件通常称为NSE(网络搜索引擎),TCAM其实就是一种基于CAM技术的NSE
多级交换结构是由多个交换单元互联起来的,每个交换单元具有一整套输入输出,与普通交换机类似,提供输入输出的连接。通过互联多个小的交换单元,就可以制造一个大型的、可扩展的交换结构。多级结构之间的不同取决于交换单元之间是如何互联的。
典型的结构包括Benes网、Butterfly网、Clos网等形式。 Benes网使用方形交换单元(即:输入输出端口数相同)进行多级互联。
一般来说,3级N部Benes网的每一级均可以用N个输入/输出端口和N个交换单元来构造。这个格形结构在每个输入端和每个输出端之间形成N个可能的通路。Benes输出可以扩展至任意奇数级。 虽然对于小型系统单级结构的设计相对简单,成本也相对低,但是它不能满足下一代Internet扩展的需要。
多级结构在操作上较复杂,但是可以扩展到成百上千个端口,这对于下一代
Internet核心路路由系统是绝对必要的。
在多级拓拓扑结构中,Benes结构是最佳选择,因为它的系统复杂程度最低,性能好且满足可扩展的要求。


集群路由器

在这里插入图片描述
集群路由器,路由器矩阵、多机框互联、可扩展路由器 就是将多台路由器互联起来,形成一套逻辑上一体的路由器系统或由多个可独立运行的路由节点,通过某种互连结构连接而成性能和功能可扩展的单映像路由器

可扩展性主要体现在以下3个方面:
  1. 交换实体的分布性带来的规模可扩展性;
  2. 路由实体的分布性带来的路由计算可扩展性;
  3. 路由器操作系统的分布性带来的功能可扩展性;
集群技术的产生,主要有两个直接的原因:
  1. 单机容量逐步发展到极限;
  2. 超级节点的产生使得网络结构越趋复杂,运维管理难度加大 集群路由器体系结构是解决高性能路由器所面临问题的一个有效途径,它由若干个路由器节点构成,包含了多个路由实体和交换实体 它的交换结构由多个交换结构聚合而成,具有分布式的特点,能够满足性能、规模和可扩展性的要求
  3. 它还包含了多个具有路由计算能力的控制节点,有利于路由协议和控制协议等任务的分布式实现 集群路由器体系结构被认为是符合互联网发展需要的下一代高性能路由器体系结构。

https://blog.csdn.net/santtde/article/details/86765506

OSI参考模型

先胡扯一下:
OSI模型一共是有七层框架
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。
从左到右是第一层到第七层,怎么记?
我觉得应该这样理解OSI的含义是说:开放式系统互联,指说明任意两个不同系统之间如何通信的一个理论模型,说明OSI重点是要通信,通信的目的是在不同计算机系统的数据进行共享应用(互联网说白了也就是对数据进行操作,个人理解,轻拍),所以可以知道在这OSI的七层中肯定会与数据,网络,通信,应用等相关的层次。所以第一层是最底层也就是物理层面的东西,也就是第一层->物理层,对应最高层也就是第七层->应用层。而回到两个不同系统之间如何去把彼此的数据交互?应该是是要在不同的系统之间构造出网络层来通信,但由物理层的数据到网络层之间应该要有过渡,网的构成该是由许多链路组成的,这些链路的组成是数据,所以在物理层和网络层之间该是数据链路层,把第二层->数据链路层,也就推出第三层->网络层,数据经由数据链路通过网络,那么应该是要实现在任意两个系统之间去进行传输(想想OSI的目的不就是要让数据从一个系统到另一个系统吗),所以很明显第四层->传输层。现在有了网络,也有了传输层,那么不同的两个系统之间的数据应该是可以交互了,但注意,OSI的核心点之一是不同系统之间的相互通信而不去考虑底层的架构,那么想想一个只懂英语的一猿喜欢一个只懂爪哇语的媛,他想向媛表达爱意啊,但没有什么联系方式,只能用最土的方式写小字条。他找来一张纸,写上:I LOVE YOU ,此时物理层搞定,然后猿很害羞,所以,他托二猿去给他送信(数据链路层),二猿本不想干这事,但看着一猿都快五十了,居然还没女票,所以。。。。。但走着走着想起家里在烧开水,然后托三猿去送(网络层),三猿是个好猿,二话不说就走去送了(传输层),信是送到了媛手里啊,但媛是说爪哇语的,看不到啥子叫I LOVE YOU ,所以媛拿着这封不知道是什么东西的东西去找她的邻居猫博士,猫博士一看知道了是有猿喜欢上了他邻居,好心的猫博士把信的内容翻译给媛说有只多毛的东西说要跟你生猴子(会话层),媛你怎么想,看这只猿还蛮急的,你赶紧回复下,表个态(表示层),媛说,好吧,我答应了(女程序员真的是这么好泡吗,我要学面向对象编程。。。。),时候猿和媛愉快地走在了乡间的小路上(应用层)。
这样子,是不是把七层都记住了。当然这些都是乱扯,目的是要更好的记忆七层到底是啥跟啥。。。
事实上,这七层的作用,更像是在一方面从7层到1层,对数据层次包装对数据添加不同的报文,在另一个系统则是从1层到7层层层分解,最终得到数据。
————————————————
版权声明:本文为CSDN博主「ljsnail01」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_30495361/article/details/52054496

OSI参考模型
一、OSI(Open System Interconnect)即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。
二、各层功能:
1、物理层:物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。它主要关心的是通过物理链路从一个节点向另一个节点传送比特流,物理链路可能是铜线、卫星、微波或其他的通讯媒介。物理层关心的是链路的机械、电气、功能和规程特性。
2、数据链路层:数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。数据帧中包含物理地址(又称MAC地址)、控制码、数据及校验码等信息。该层的主要作用是通过校验、确认和反馈重发等手段,将不可靠的物理链路转换成对网络层来说无差错的数据链路。数据链路层还要协调收发双方的数据传输速率,即进行流量控制,以防止接收方因来不及处理发送方来的高速数据而导致缓冲器溢出及线路阻塞。
3、网络层:网络层是为传输层提供服务的,传送的协议数据单元称为数据包或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题,即通过路径选择算法(路由)将数据包送到目的地。为避免通信子网中出现过多的数据包而造成网络阻塞,需要对流入的数据包数量进行控制(拥塞控制)。当数据包要跨越多个通信子网才能到达目的地时,还要解决网际互连的问题。
4、传输层:传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。传输层传送的协议数据单元称为段或报文。
5、会话层:会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话。会话层得名的原因是它很类似于两个实体间的会话概念。例如,一个交互的用户会话以登录到计算机开始,以注销结束。
6、表示层:表示层处理流经结点的数据编码的表示方式问题,以保证一个系统应用层发出的信息可被另一系统的应用层读出。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据表示格式转换成网络通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
7、应用层:应用层是OSI参考模型的最高层,是用户与网络的接口。该层通过应用程序来完成网络用户的应用需求,如文件传输、收发电子邮件等。

ubuntu 18.04 设置静态ip方法

1. 前言

本教程将会演示如何设置Ubuntu16.04 Server版和Ubuntu18.04 Server版系统的静态固定IP地址。

2. 确认你要修改的网卡号

先确认你要修改的网卡号,假设你的服务器有多张网卡:

ubuntu1804:~$ ip addr

我的服务器配置如下:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:f1:b5:e1 brd ff:ff:ff:ff:ff:ff
inet 172.16.87.140/24 brd 172.16.87.255 scope global dynamic ens33
valid_lft 1500sec preferred_lft 1500sec
inet6 fe80::20c:29ff:fef1:b5e1/64 scope link
valid_lft forever preferred_lft forever

3. 默认的网卡配置文件

默认情况下,网络使用DHCP

ubuntu1804:~$ cat /etc/netplan/50-cloud-init.yaml
配置文件内容如下

network:
    ethernets:
        ens33:
            dhcp4: yes
            addresses: []

    version: 2

4. 设置静态IP

需要把配置文件修改为以下内容:

ubuntu1804:~$ sudo vi /etc/netplan/50-cloud-init.yaml

假设IP地址修改为192.168.1.100,子网掩码24位即255.255.255.0,网关设置为192.168.1.1,DNS1:223.5.5.5,DNS2:223.6.6.6

network:
    ethernets:
        ens33:
            dhcp4: no
            addresses: [192.168.1.100/24]
            optional: true
            gateway4: 192.168.1.1
            nameservers:
                    addresses: [223.5.5.5,223.6.6.6]

    version: 2

5. 应用新配置

ubuntu1804:~$ sudo netplan apply

使用ip addr检查新地址

ubuntu1804:~$ ip addr

6. 测试网络连通性

ubuntu1804:~$ ping 192.168.1.100

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

https://cloud.tencent.com/developer/article/1514181
此记录之

完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)–基础环境搭建

公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人实际经验而述,如有不当,敬请指出~

********************************************************************************************************************************

1 OpenStack 介绍

1.1 百度百科 OpenStack 是一个由 NASA ( 美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自由软件和开放源代码项目。

1.2 版本历史

1.3 openstack 架构概念

1.4 openstack 各个服务名称对应

***************************************************************************************************************

以下安装部署已经过测试,完全通过!

建议在物理机上部署openstack,并且是centos7或ubuntu系统下,centos6x的源里已不支持openstack部分组件下载了。

2 环境准备 openstack 主机名不能改,装的时候是什么就是什么, 运维标准化。

1、 CentOS 7.2 系统 2 台 node1 即作为控制节点,也作为计算节点;(即可以单机部署,单机部署时则下面记录的控制节点和计算节点的操作步骤都要在本机执行下) node2 就只是计算节点 控制节点去操控计算节点,计算节点上可以创建虚拟机

linux-node1.openstack   192.168.1.17 网卡 NAT em2 (外网ip假设是58.68.250.17)(em2是内网网卡,下面neutron配置文件里会设置到) linux-node2.openstack   192.168.1.8   网卡 NAT em2

控制节点:linux-node1.openstack    192.168.1.17

计算节点:linux-node2.openstack 192.168.1.8

2.域名解析和关闭防火墙 (控制节点和计算节点都做) /etc/hosts                                                         #主机名一开始设置好,后面就不能更改了,否则就会出问题!这里设置好ip与主机名的对应关系 192.168.1.17 linux-node1.openstack       192.168.1.8   linux-node2.openstack

关闭 selinux sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/sysconfig/selinux setenforce 0 关闭 iptables systemctl start firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service

3 安装配置 OpenStack 官方文档 http://docs.openstack.org/

3.1 安装软件包

linux-node1.openstack   安装

*************************************************************************************

#Base yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm yum install -y centos-release-openstack-liberty yum install -y python-openstackclient

##MySQL yum install -y mariadb mariadb-server MySQL-python

##RabbitMQ yum install -y rabbitmq-server

##Keystone yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached

##Glance yum install -y openstack-glance python-glance python-glanceclient

##Nova yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient

##Neutron linux-node1.example.com yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset

##Dashboard yum install -y openstack-dashboard

##Cinder yum install -y openstack-cinder python-cinderclient

*************************************************************************************

linux-node2.openstack   安装

##Base yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm yum install centos-release-openstack-liberty yum install python-openstackclient

##Nova linux-node2.openstack yum install -y openstack-nova-compute sysfsutils

##Neutron linux-node2.openstack yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables ipset

##Cinder yum install -y openstack-cinder python-cinderclient targetcli python-oslo-policy

*************************************************************************************

3.2 设置时间同步、 关闭 selinux 和 iptables 在 linux-node1 上配置( 只有 centos7 能用, 6 还用 ntp) [root@linux-node1 ~]# yum install -y chrony [root@linux-node1 ~]# vim /etc/chrony.conf allow 192.168/16 #允许那些服务器和自己同步时间 [root@linux-node1 ~]# systemctl enable chronyd.service    #开机启动 [root@linux-node1 ~]# systemctl start chronyd.service [root@linux-node1 ~]# timedatectl set-timezone Asia/Shanghai     #设置时区 [root@linux-node1 ~]# timedatectl status Local time: Fri 2016-08-26 11:14:19 CST Universal time: Fri 2016-08-26 03:14:19 UTC RTC time: Fri 2016-08-26 03:14:19 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a

在 linux-node2 上配置 [root@linux-node2 ~]# yum install -y chrony [root@linux-node2 ~]# vim /etc/chrony.conf server 192.168.1.17 iburst #只留一行 [root@linux-node2 ~]# systemctl enable chronyd.service [root@linux-node2 ~]# systemctl start chronyd.service [root@linux-node2 ~]# timedatectl set-timezone Asia/Shanghai [root@linux-node2 ~]# chronyc sources

3.3 安装及配置 mysql

[root@linux-node1 ~]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf                   #或者是/usr/share/mariadb/my-medium.cnf [mysqld] default-storage-engine = innodb innodb_file_per_table collation-server = utf8_general_ci init-connect = ‘SET NAMES utf8’ character-set-server = utf8 [root@linux-node1 ~]# systemctl enable mariadb.service                                                      #Centos7里面mysql叫maridb [root@linux-node1 ~]# ln -s ‘/usr/lib/systemd/system/mariadb.service’ ‘/etc/systemd/system/multi-user.target.wants/mariadb.service’ [root@linux-node1 ~]# mysql_install_db –datadir=”/var/lib/mysql” –user=”mysql”               #初始化数据库 [root@linux-node1 ~]# systemctl start mariadb.service [root@linux-node1 ~]# mysql_secure_installation                                                                 #设置密码及初始化 密码 123456,一路 y 回车

创建数据库 [root@openstack-server ~]# mysql -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5579 Server version: 5.5.50-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. MariaDB [(none)]> CREATE DATABASE keystone; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’localhost’ IDENTIFIED BY ‘keystone’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘keystone’; MariaDB [(none)]> CREATE DATABASE glance; MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’localhost’ IDENTIFIED BY ‘glance’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@’%’ IDENTIFIED BY ‘glance’; MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@’localhost’ IDENTIFIED BY ‘nova’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@’%’ IDENTIFIED BY ‘nova’; MariaDB [(none)]> CREATE DATABASE neutron; MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’localhost’ IDENTIFIED BY ‘neutron’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron’@’%’ IDENTIFIED BY ‘neutron’; MariaDB [(none)]> CREATE DATABASE cinder; MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder’@’localhost’ IDENTIFIED BY ‘cinder’; MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder’@’%’ IDENTIFIED BY ‘cinder’; MariaDB [(none)]> flush privileges; MariaDB [(none)]> show databases; +——————–+ | Database | +——————–+ | information_schema   | | cinder                       | | glance                       | | keystone                    | | mysql                        | | neutron                     | | nova                         | | performance_schema | +——————–+ 8 rows in set (0.00 sec)

MariaDB [(none)]>

—————————————————————————————————————————- 参考另一篇博客:http://www.cnblogs.com/kevingrace/p/5811167.html 修改下mysql的连接数,否则openstack后面的操作会报错:“ERROR 1040 (08004): Too many connections ” —————————————————————————————————————————-

3.4 配置 rabbitmq MQ 全称为 Message Queue, 消息队列( MQ)是一种应用程序对应用程序的通信方法。应用 程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。 消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通 信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。 队列的使用除去了接收和发送应用程序同时执行的要求。 RabbitMQ 是一个在 AMQP 基础上完整的,可复用的企业消息系统。他遵循 Mozilla Public License 开源协议。 启动 rabbitmq, 端口 5672,添加 openstack 用户

[root@linux-node1 ~]# systemctl enable rabbitmq-server.service [root@linux-node1 ~]# ln -s ‘/usr/lib/systemd/system/rabbitmq-server.service’ ‘/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service’ [root@linux-node1 ~]# systemctl start rabbitmq-server.service [root@linux-node1 ~]# rabbitmqctl add_user openstack openstack                               #添加用户及密码 [root@linux-node1 ~]# rabbitmqctl set_permissions openstack “.*” “.*” “.*”                                   #允许配置、写、读访问 openstack [root@linux-node1 ~]# rabbitmq-plugins list                                 #查看支持的插件 ……… [ ] rabbitmq_management 3.6.2                                    #使用此插件实现 web 管理 ……… [root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_management #启动插件 The following plugins have been enabled: mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent rabbitmq_management Plugin configuration has changed. Restart RabbitMQ for changes to take effect. [root@linux-node1 ~]# systemctl restart rabbitmq-server.service

[root@linux-node1 ~]#lsof -i:15672

访问RabbitMQ,访问地址是http://58.68.250.17:15672 默认用户名密码都是guest,浏览器添加openstack用户到组并登陆测试,连不上情况一般是防火墙没有关闭所致!

之后退出使用 openstack 登录 如何使用 zabbix 监控? 左下角有 HTTP API 的介绍,可以实现 zabbix 的监控

*********************************************************************************************

以上完成基础环境的配置,下面开始安装 openstack 的组件

3.5 配置 Keystone 验证服务 所有的服务,都需要在 keystone 上注册 3.5.1 Keystone 介绍

3.5.2 配置 Keystone 端口 5000 和 35357

1、修改/etc/keystone/keystone.conf 取一个随机数 [root@linux-node1 ~]# openssl rand -hex 10 35d6e6f377a889571bcf [root@linux-node1 ~]# cat /etc/keystone/keystone.conf|grep -v “^#”|grep -v “^$” [DEFAULT] admin_token = 35d6e6f377a889571bcf                                    #设置 token,和上面产生的随机数值一致 verbose = true [assignment] [auth] [cache] [catalog] [cors] [cors.subdomain] [credential] [database] connection = mysql://keystone:keystone@192.168.1.17/keystone                                          #设置数据库连接 写到database下 [domain_config] [endpoint_filter] [endpoint_policy] [eventlet_server] [eventlet_server_ssl] [federation] [fernet_tokens] [identity] [identity_mapping] [kvs] [ldap] [matchmaker_redis] [matchmaker_ring] [memcache] servers = 192.168.1.17:11211 [oauth1] [os_inherit] [oslo_messaging_amqp] [oslo_messaging_qpid] [oslo_messaging_rabbit] [oslo_middleware] [oslo_policy] [paste_deploy] [policy] [resource] [revoke] driver = sql [role] [saml] [signing] [ssl] [token] provider = uuid driver = memcache [tokenless_auth] [trust]

2、 创建数据库表, 使用命令同步 [root@linux-node1 ~]# su -s /bin/sh -c “keystone-manage db_sync” keystone No handlers could be found for logger “oslo_config.cfg”                                          #出现这个信息,不影响后续操作!忽略~

[root@linux-node1 ~]# ll /var/log/keystone/keystone.log -rw-r–r–. 1 keystone keystone 298370 Aug 26 11:36 /var/log/keystone/keystone.log      #之所以上面 su 切换是因为这个日志文件属主 [root@linux-node1 config]# mysql -h 192.168.1.17 -u keystone -p      #数据库检查表,生产环境密码不要用keystone,改成复杂点的密码

3、 启动 memcached 和 apache 启动 memcached [root@linux-node1 ~]# systemctl enable memcached [root@linux-node1 ~]#ln -s ‘/usr/lib/systemd/system/memcached.service’ ‘/etc/systemd/system/multi-user.target.wants/memcached.service’ [root@linux-node1 ~]# systemctl start memcached 配置 httpd [root@linux-node1 ~]# vim /etc/httpd/conf/httpd.conf ServerName 192.168.1.17:80 [root@linux-node1 ~]# cat /etc/httpd/conf.d/wsgi-keystone.conf Listen 5000 Listen 35357

<VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat “%{cu}t %M” </IfVersion> ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> </VirtualHost>

<VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat “%{cu}t %M” </IfVersion> ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> </VirtualHost>

启动 httpd [root@linux-node1 config]# systemctl enable httpd [root@linux-node1 config]#ln -s ‘/usr/lib/systemd/system/httpd.service’ ‘/etc/systemd/system/multi-user.target.wants/httpd.service’ [root@linux-node1 config]# systemctl start httpd [root@linux-node1 ~]# netstat -lntup|grep httpd tcp6 0 0 :::5000 :::* LISTEN 23632/httpd tcp6 0 0 :::80 :::* LISTEN 23632/httpd tcp6 0 0 :::35357 :::* LISTEN 23632/httpd 如果 http 起不来关闭 selinux 或者安装 yum install openstack-selinux

4、 创建 keystone 用户 临时设置 admin_token 用户的环境变量,用来创建用户 [root@linux-node1 ~]# export OS_TOKEN=35d6e6f377a889571bcf                           #上面产生的随机数值 [root@linux-node1 ~]# export OS_URL=http://192.168.1.17:35357/v3 [root@linux-node1 ~]# export OS_IDENTITY_API_VERSION=3

创建 admin 项目—创建 admin 用户(密码 admin,生产不要这么玩) —创建 admin 角色—把 admin 用户加入到 admin 项目赋予 admin 的角色(三个 admin 的位置:项目,用户,角色) [root@linux-node1 ~]#openstack project create –domain default –description “Admin Project” admin [root@linux-node1 ~]#openstack user create –domain default –password-prompt admin [root@linux-node1 ~]#openstack role create admin [root@linux-node1 ~]#openstack role add –project admin –user admin admin 创建一个普通用户 demo [root@linux-node1 ~]#openstack project create –domain default –description “Demo Project” demo [root@linux-node1 ~]#openstack user create –domain default –password=demo demo [root@linux-node1 ~]#openstack role create user [root@linux-node1 ~]#openstack role add –project demo –user demo user

创建 service 项目,用来管理其他服务用 [root@linux-node1 ~]#openstack project create –domain default –description “Service Project” service

以上的名字都是固定的,不能改

查看创建的而用户和项目 [root@linux-node1 ~]# openstack user list +———————————-+——-+ | ID | Name | +———————————-+——-+ | b1f164577a2d43b9a6393527f38e3f75 | demo | | b694d8f0b70b41d883665f9524c77766 | admin | +———————————-+——-+ [root@linux-node1 ~]# openstack project list +———————————-+———+ | ID | Name | +———————————-+———+ | 604f9f78853847ac9ea3c31f2c7f677d | demo | | 777f4f0108b1476eabc11e00dccaea9f | admin | | aa087f62f1d44676834d43d0d902d473 | service | +———————————-+———+ 5、注册 keystone 服务,以下三种类型分别为公共的、内部的、管理的。 [root@linux-node1 ~]#openstack service create –name keystone –description “OpenStack Identity” identity [root@linux-node1 ~]#openstack endpoint create –region RegionOne identity public http://192.168.1.17:5000/v2.0 [root@linux-node1 ~]#openstack endpoint create –region RegionOne identity internal http://192.168.1.17:5000/v2.0 [root@linux-node1 ~]#openstack endpoint create –region RegionOne identity admin http://192.168.1.17:35357/v2.0 [root@linux-node1 ~]# openstack endpoint list #查看 +———————————-+———–+————–+————–+———+—- ——-+———————————+ | ID | Region | Service Name | Service Type | Enabled | Interface | URL | +———————————-+———–+————–+————–+———+—- ——-+———————————+ | 011a24def8664506985815e0ed2f8fa5 | RegionOne | keystone | identity | True | internal | http://192.168.1.17:5000/v2.0 | | b0981cae6a8c4b3186edef818733fec6 | RegionOne | keystone | identity | True | public | http://192.168.1.17:5000/v2.0 | | c4e0c79c0a8142eda4d9653064563991 | RegionOne | keystone | identity | True | admin | http://192.168.1.17:35357/v2.0 | +———————————-+———–+————–+————–+———+—- ——-+———————————+ [root@linux-node1 ~]# openstack endpoint delete ID                                    #使用这个命令删除

6、 验证,获取 token,只有获取到才能说明 keystone 配置成功 [root@linux-node1 ~]# unset OS_TOKEN [root@linux-node1 ~]# unset OS_URL [root@linux-node1 ~]# openstack –os-auth-url http://192.168.1.17:35357/v3 –os-project-domain-id default –os-user-domain-id default –os-project-name admin –os-username admin –os-auth-type password token issue                   #回车 Password: admin +————+———————————-+ | Field | Value | +————+———————————-+ | expires | 2015-12-17T04:22:00.600668Z | | id | 1b530a078b874438aadb77af11ce297e | | project_id | 777f4f0108b1476eabc11e00dccaea9f | | user_id | b694d8f0b70b41d883665f9524c77766 | +————+———————————-+

使用环境变量来获取 token,环境变量在后面创建虚拟机时也需要用。 创建两个环境变量文件,使用时直接 source!!!(注意,下面两个sh文件所在的路径,在查看命令前都要source下,不然会报错!!) [root@linux-node1 ~]# cat admin-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=admin export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL=http://192.168.1.17:35357/v3 export OS_IDENTITY_API_VERSION=3

[root@linux-node1 ~]# cat demo-openrc.sh export OS_PROJECT_DOMAIN_ID=default export OS_USER_DOMAIN_ID=default export OS_PROJECT_NAME=demo export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo export OS_AUTH_URL=http://192.168.1.17:5000/v3 export OS_IDENTITY_API_VERSION=3 [root@linux-node1 ~]# source admin-openrc.sh [root@linux-node1 ~]# openstack token issue +————+———————————-+ | Field | Value | +————+———————————-+ | expires | 2015-12-17T04:26:08.625399Z | | id | 58370ae3b9bb4c07a67700dd184ad3b1 | 16 | project_id | 777f4f0108b1476eabc11e00dccaea9f | | user_id | b694d8f0b70b41d883665f9524c77766 | +————+———————————-+

3.6 配置 glance 镜像服务 3.6.1 glance 介绍

3.6.2 glance 配置 端口: api            9191 registry    9292 1、修改/etc/glance/glance-api.conf 和/etc/glance/glance-registry.conf [root@linux-node1 ~]# cat /etc/glance/glance-api.conf|grep -v “^#”|grep -v “^$” [DEFAULT] verbose=True notification_driver = noop                                           #galnce 不需要消息队列 [database] connection=mysql://glance:glance@192.168.1.17/glance [glance_store] default_store=file filesystem_store_datadir=/var/lib/glance/images/ [image_format] [keystone_authtoken] auth_uri = http://192.168.1.17:5000 auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = glance password = glance [matchmaker_redis] [matchmaker_ring] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_qpid] [oslo_messaging_rabbit] [oslo_policy] [paste_deploy] flavor=keystone [store_type_location_strategy] [task] [taskflow_executor]

[root@linux-node1 ~]# cat /etc/glance/glance-registry.conf|grep -v “^#”|grep -v “^$” [DEFAULT] verbose=True notification_driver = noop [database] connection=mysql://glance:glance@192.168.1.17/glance [glance_store] [keystone_authtoken] auth_uri = http://192.168.1.17:5000 auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = glance password = glance [matchmaker_redis] [matchmaker_ring] [oslo_messaging_amqp] [oslo_messaging_qpid] [oslo_messaging_rabbit] [oslo_policy] [paste_deploy] flavor=keystone

2、创建数据库表,同步数据库 [root@linux-node1 ~]# su -s /bin/sh -c “glance-manage db_sync” glance [root@linux-node1 ~]# mysql -h 192.168.1.17 -uglance -p

3、 创建关于 glance 的 keystone 用户 [root@linux-node1 ~]# source admin-openrc.sh [root@linux-node1 ~]# openstack user create –domain default –password=glance glance [root@linux-node1 ~]# openstack role add –project service –user glance admin

4、启动 glance [root@linux-node1 ~]#systemctl enable openstack-glance-api [root@linux-node1 ~]#systemctl enable openstack-glance-registry [root@linux-node1 ~]#systemctl start openstack-glance-api [root@linux-node1 ~]#systemctl start openstack-glance-registry [root@linux-node1 ~]# netstat -lnutp |grep 9191 #registry tcp 0 0 0.0.0.0:9191 0.0.0.0:* LISTEN 24890/python2 [root@linux-node1 ~]# netstat -lnutp |grep 9292 #api tcp 0 0 0.0.0.0:9292 0.0.0.0:* LISTEN 24877/python2

5、在 keystone 上注册 [root@linux-node1 ~]# source admin-openrc.sh [root@linux-node1 ~]#openstack service create –name glance –description “OpenStack Image service” image [root@linux-node1 ~]#openstack endpoint create –region RegionOne image public http://192.168.1.17:9292 [root@linux-node1 ~]#openstack endpoint create –region RegionOne image internal http://192.168.1.17:9292 [root@linux-node1 ~]#openstack endpoint create –region RegionOne image admin http://192.168.1.17:9292

6、添加 glance 环境变量并测试 [root@linux-node1 src]# echo “export OS_IMAGE_API_VERSION=2” | tee -a admin-openrc.sh demo-openrc.sh [root@linux-node1 src]# glance image-list +—-+——+ | ID | Name | +—-+——+ +—-+——+

7、 下载镜像并上传到 glance 【此处下载的qcow2格式镜像比较小,可以直接下载ios格式镜像,然后用oz工具制造】 [root@linux-node1 ~]# wget -q http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img   #也可以提前下载下来 [root@linux-node1 ~]# glance image-create –name “cirros” –file cirros-0.3.4-x86_64-disk.img –disk-format qcow2 –container-format bare –visibility public –progress [=============================>] 100% +——————+————————————–+ | Property | Value | +——————+————————————–+ | checksum | ee1eca47dc88f4879d8a229cc70a07c6 | | container_format | bare | | created_at | 2015-12-17T04:11:02Z | | disk_format | qcow2 | | id | 2707a30b-853f-4d04-861d-e05b0f1855c8 | | min_disk | 0 | | min_ram | 0 | | name | cirros | | owner | 777f4f0108b1476eabc11e00dccaea9f | | protected | False | | size | 13287936 | | status | active | | tags | [] | | updated_at | 2015-12-17T04:11:03Z | | virtual_size | None | | visibility | public | +——————+————————————–+ ——————————————————————————————————————————- 下载ios格式镜像,需要用OZ工具制造openstack镜像,具体操作请见另一篇博客:

实际生产环境下,肯定要使用ios镜像进行制作了

http://www.cnblogs.com/kevingrace/p/5821823.html

——————————————————————————————————————————-

或者直接下载centos的qcow2格式镜像进行上传,qcow2格式镜像直接就可以在openstack里使用,不需要进行格式转换! 下载地址:http://cloud.centos.org/centos,可以到里面下载centos5/6/7的qcow2格式的镜像

[root@linux-node1 ~]#wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2 [root@linux-node1 ~]#glance image-create –name “CentOS-7-x86_64” –file CentOS-7-x86_64-GenericCloud.qcow2 –disk-format qcow2 –container-format bare –visibility public –progress

——————————————————————————————————————————

[root@linux-node1 ~]# glance image-list +————————————–+——–+ | ID | Name | +————————————–+——–+ | 2707a30b-853f-4d04-861d-e05b0f1855c8 | cirros | +————————————–+——–+

[root@linux-node1 ~]# ll /var/lib/glance/images/ 总用量 12980 -rw-r—–. 1 glance glance 1569390592 Aug 26 12:50 35b36f08-eeb9-4a91-9366-561f0a308a1b

3.7 配置 nova 计算服务 3.7.1 nova 介绍 nova 必备的组件

nova scheduler

3.7.2 Nova 控制节点配置

1、修改/etc/nova/nova.conf [root@linux-node1 ~]# cat /etc/nova/nova.conf|grep -v “^#”|grep -v “^$” [DEFAULT] my_ip=192.168.1.17 enabled_apis=osapi_compute,metadata auth_strategy=keystone network_api_class=nova.network.neutronv2.api.API linuxnet_interface_driver=nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver security_group_api=neutron firewall_driver = nova.virt.firewall.NoopFirewallDriver debug=true verbose=true rpc_backend=rabbit allow_resize_to_same_host=True scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter [api_database] [barbican] [cells] [cinder] [conductor] [cors] [cors.subdomain] [database] connection=mysql://nova:nova@192.168.1.17/nova [ephemeral_storage_encryption] [glance] host=$my_ip [guestfs] [hyperv] [image_file_url] [ironic] [keymgr] [keystone_authtoken] auth_uri = http://192.168.1.17:5000 auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = nova [libvirt] virt_type=kvm #如果控制节点也作为计算节点(单机部署的话),这一行也添加上(这行是计算节点配置的) [matchmaker_redis] [matchmaker_ring] [metrics] [neutron] url = http://192.168.1.17:9696 auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default region_name = RegionOne project_name = service username = neutron password = neutron service_metadata_proxy = True metadata_proxy_shared_secret = neutron lock_path=/var/lib/nova/tmp [osapi_v21] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_qpid] [oslo_messaging_rabbit] rabbit_host=192.168.1.17 rabbit_port=5672 rabbit_userid=openstack rabbit_password=openstack [oslo_middleware] [rdp] [serial_console] [spice] [ssl] [trusted_computing] [upgrade_levels] [vmware] [vnc] novncproxy_base_url=http://58.68.250.17:6080/vnc_auto.html  #如果控制节点也作为计算节点(单机部署的话),这一行也添加上(这行是计算节点配置的),配置控制节点的公网ip vncserver_listen= $my_ip vncserver_proxyclient_address= $my_ip keymap=en-us #如果控制节点也作为计算节点(单机部署的话),这一行也添加上(这行是计算节点配置的) [workarounds] [xenserver] [zookeeper]

*********************************************************************** {网络部分为啥这么写:network_api_class=nova.network.neutronv2.api.API} [root@linux-node1 ~]# ls /usr/lib/python2.7/site-packages/nova/network/neutronv2/api.py /usr/lib/python2.7/site-packages/nova/network/neutronv2/api.py 这里面有一个 API 方法,其他配置类似 ***********************************************************************

2、同步数据库 [root@linux-node1 ~]# su -s /bin/sh -c “nova-manage db sync” nova [root@linux-node1 ~]# mysql -h 192.168.1.17 -unova -p 检查

3、创建 nova 的 keystone 用户 [root@linux-node1 ~]# openstack user create –domain default –password=nova nova [root@linux-node1 ~]# openstack role add –project service –user nova admin

4、启动 nova 相关服务 [root@linux-node1 ~]#systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service [root@linux-node1 ~]#systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

5、在 keystone 上注册 [root@linux-node1 ~]# source admin-openrc.sh [root@linux-node1 ~]# openstack service create –name nova –description “OpenStack Compute” compute [root@linux-node1 ~]# openstack endpoint create –region RegionOne compute public http://192.168.1.17:8774/v2/%\(tenant_id\)s [root@linux-node1 ~]# openstack endpoint create –region RegionOne compute internal http://192.168.1.17:8774/v2/%\(tenant_id\)s [root@linux-node1 ~]# openstack endpoint create –region RegionOne compute admin http://192.168.1.17:8774/v2/%\(tenant_id\)s 检查 [root@linux-node1 ~]# openstack host list +—————————+————-+———-+ | Host Name | Service | Zone | +—————————+————-+———-+ | linux-node1.oldboyedu.com | conductor | internal | | linux-node1.oldboyedu.com | scheduler | internal | | linux-node1.oldboyedu.com | consoleauth | internal | | linux-node1.oldboyedu.com | cert | internal | +—————————+————-+———-+

3.7.3   nova 计算节点配置 1、 nova compute 介绍

2、修改配置文件/etc/nova/nova.conf 可以直接从 node1 拷贝到 node2 上 [root@linux-node1 ~]# scp /etc/nova/nova.conf 192.168.1.8:/etc/nova/ 手动更改如下配置 [root@linux-node2 ~]# vim /etc/nova/nova.conf my_ip=192.168.1.8 novncproxy_base_url=http://192.168.1.17:6080/vnc_auto.html vncserver_listen=0.0.0.0 vncserver_proxyclient_address= $my_ip keymap=en-us [glance] host=192.168.56.17 [libvirt] virt_type=kvm                   #虚拟机类型,默认是 kvm

3、启动服务 [root@linux-node2 ~]# systemctl enable libvirtd openstack-nova-compute [root@linux-node2 ~]# systemctl start libvirtd openstack-nova-compute

4、在控制节点测试(计算节点上也行,需要环境变量) [root@linux-node1 ~]# openstack host list +—————————+————-+———-+ | Host Name | Service | Zone | +—————————+————-+———-+ | linux-node1.oldboyedu.com | conductor | internal | | linux-node1.oldboyedu.com | consoleauth | internal | | linux-node1.oldboyedu.com | scheduler | internal | | linux-node1.oldboyedu.com | cert | internal | | linux-node2.oldboyedu.com | compute | nova | +—————————+————-+———-+

[root@linux-node1 ~]# nova image-list                  #测试 glance 是否正常 +————————————–+——–+——–+——–+ | ID | Name | Status | Server | +————————————–+——–+——–+——–+ | 2707a30b-853f-4d04-861d-e05b0f1855c8 | cirros | ACTIVE | | +————————————–+——–+——–+——–+ [root@linux-node1 ~]# nova endpoints                     #测试 keystone WARNING: keystone has no endpoint in ! Available endpoints for this service:           #这一行告警不影响后面的操作 +———–+———————————-+ | keystone | Value | +———–+———————————-+ | id | 02fed35802734518922d0ca2d672f469 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:5000/v2.0 | +———–+———————————-+ +———–+———————————-+ | keystone | Value | +———–+———————————-+ | id | 52b0a1a700f04773a220ff0e365dea45 | | interface | public | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:5000/v2.0 | +———–+———————————-+ +———–+———————————-+ | keystone | Value | +———–+———————————-+ | id | 88df7df6427d45619df192979219e65c | | interface | admin | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:35357/v2.0 | +———–+———————————-+ WARNING: nova has no endpoint in ! Available endpoints for this service: +———–+————————————————————–+ | nova | Value | +———–+————————————————————–+ | id | 1a3115941ff54b7499a800c7c43ee92a | | interface | internal | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:8774/v2/65a0c00638c247a0a274837aa6eb165f | +———–+————————————————————–+ +———–+————————————————————–+ | nova | Value | +———–+————————————————————–+ | id | 5278f33a42754c9a8d90937932b8c0b3 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:8774/v2/65a0c00638c247a0a274837aa6eb165f | +———–+————————————————————–+ +———–+————————————————————–+ | nova | Value | +———–+————————————————————–+ | id | 8c4fa7b9a24949c5882949d13d161d36 | | interface | public | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:8774/v2/65a0c00638c247a0a274837aa6eb165f | +———–+————————————————————–+ WARNING: glance has no endpoint in ! Available endpoints for this service: +———–+———————————-+ | glance | Value | +———–+———————————-+ | id | 31fbf72537a14ba7927fe9c7b7d06a65 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:9292 | +———–+———————————-+ +———–+———————————-+ | glance | Value | +———–+———————————-+ | id | be788b4aa2ce4251b424a3182d0eea11 | | interface | public | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:9292 | +———–+———————————-+ +———–+———————————-+ | glance | Value | +———–+———————————-+ | id | d0052712051a4f04bb59c06e2d5b2a0b | | interface | internal | | region | RegionOne | | region_id | RegionOne | | url | http://192.168.1.17:9292 | +———–+———————————-+

3.8 Neutron 网络服务 3.8.1 Neutron 介绍 neutron 由来

openstack 网络分类:

Neutron 组件

3.8.2 Neutron 控制节点配置( 5 个配置文件) 1、修改/etc/neutron/neutron.conf 文件

[root@linux-node1 ~]# cat /etc/neutron/neutron.conf|grep -v “^#”|grep -v “^$” [DEFAULT] state_path = /var/lib/neutron core_plugin = ml2 service_plugins = router auth_strategy = keystone notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True nova_url = http://192.168.1.17:8774/v2 rpc_backend=rabbit [matchmaker_redis] [matchmaker_ring] [quotas] [agent] [keystone_authtoken] auth_uri = http://192.168.1.17:5000 auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = neutron admin_tenant_name = %SERVICE_TENANT_NAME% admin_user = %SERVICE_USER% admin_password = %SERVICE_PASSWORD% [database] connection = mysql://neutron:neutron@192.168.1.17:3306/neutron [nova] auth_url = http://192.168.1.17:35357 auth_plugin = password project_domain_id = default user_domain_id = default region_name = RegionOne project_name = service username = nova password = nova [oslo_concurrency] lock_path = $state_path/lock [oslo_policy] [oslo_messaging_amqp] [oslo_messaging_qpid] [oslo_messaging_rabbit] rabbit_host = 192.168.1.17 rabbit_port = 5672 rabbit_userid = openstack rabbit_password = openstack [qos]

2、 配置/etc/neutron/plugins/ml2/ml2_conf.ini [root@linux-node1 ~]# cat /etc/neutron/plugins/ml2/ml2_conf.ini|grep -v “^#”|grep -v “^$” [ml2] type_drivers = flat,vlan,gre,vxlan,geneve tenant_network_types = vlan,gre,vxlan,geneve mechanism_drivers = openvswitch,linuxbridge extension_drivers = port_security [ml2_type_flat] flat_networks = physnet1 [ml2_type_vlan] [ml2_type_gre] [ml2_type_vxlan] [ml2_type_geneve] [securitygroup] enable_ipset = True

3、配置/etc/neutron/plugins/ml2/ linuxbridge_agent.ini [root@linux-node1 ~]# cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini|grep -v “^#”|grep -v “^$” [linux_bridge] physical_interface_mappings = physnet1:em2 [vxlan] enable_vxlan = false [agent] prevent_arp_spoofing = True [securitygroup] firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver enable_security_group = True

4、修改/etc/neutron/dhcp_agent.ini [root@linux-node1 ~]# cat /etc/neutron/dhcp_agent.ini|grep -v “^#”|grep -v “^$” [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true [AGENT]

5、修改/etc/neutron/metadata_agent.ini [root@linux-node1 ~]# cat /etc/neutron/metadata_agent.ini|grep -v “^#”|grep -v “^$” [DEFAULT] auth_uri = http://192.168.1.17:5000 auth_url = http://192.168.1.17:35357 auth_region = RegionOne auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = neutron password = neutron nova_metadata_ip = 192.168.1.17 metadata_proxy_shared_secret = neutron admin_tenant_name = %SERVICE_TENANT_NAME% admin_user = %SERVICE_USER% admin_password = %SERVICE_PASSWORD% [AGENT]

6、创建连接并创建 keystone 的用户 [root@linux-node1 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini [root@linux-node1 ~]# openstack user create –domain default –password=neutron neutron [root@linux-node1 ~]# openstack role add –project service –user neutron admin

7、更新数据库 [root@linux-node1 ~]# su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf –config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron

8、注册 keystone [root@linux-node1 ~]# source admin-openrc.sh [root@linux-node1 ~]# openstack service create –name neutron –description “OpenStack Networking” network [root@linux-node1 ~]# openstack endpoint create –region RegionOne network public http://192.168.1.17:9696 [root@linux-node1 ~]# openstack endpoint create –region RegionOne network internal http://192.168.1.17:9696 [root@linux-node1 ~]# openstack endpoint create –region RegionOne network admin http://192.168.1.17:9696

9、 启动服务并检查 因为neutron和nova有联系,做neutron时修改nova的配置文件,上面nova.conf已经做了neutron的关联配置,所以要重启openstack-nova-api服务。 这里将nova的关联服务都一并重启了: [root@linux-node1 ~]# systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service

启动neutron相关服务 [root@linux-node1 ~]# systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service [root@linux-node1 ~]# systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

检查 [root@linux-node1 ~]# neutron agent-list +————————————–+——————–+——————+——-+—————-+—————————+ | id | agent_type | host | alive | admin_state_up | binary | +————————————–+——————–+——————+——-+—————-+—————————+ | 385cebf9-9b34-4eca-b780-c515dbc7eec0 | Linux bridge agent | openstack-server | 🙂 | True | neutron-linuxbridge-agent | | b3ff8ffe-1ff2-4659-b823-331def4e6a93 | DHCP agent | openstack-server | 🙂 | True | neutron-dhcp-agent | | b5bed625-47fd-4e79-aa55-01cf8a8cc577 | Metadata agent | openstack-server | 🙂 | True | neutron-metadata-agent | +————————————–+——————–+——————+——-+—————-+—————————+

查看注册信息 [root@openstack-server src]# openstack endpoint list +———————————-+———–+————–+————–+———+———–+——————————————-+ | ID | Region | Service Name | Service Type | Enabled | Interface | URL | +———————————-+———–+————–+————–+———+———–+——————————————-+ | 02fed35802734518922d0ca2d672f469 | RegionOne | keystone | identity | True | internal | http://192.168.1.17:5000/v2.0 | | 1a3115941ff54b7499a800c7c43ee92a | RegionOne | nova | compute | True | internal | http://192.168.1.17:8774/v2/%(tenant_id)s | | 31fbf72537a14ba7927fe9c7b7d06a65 | RegionOne | glance | image | True | admin | http://192.168.1.17:9292 | | 5278f33a42754c9a8d90937932b8c0b3 | RegionOne | nova | compute | True | admin | http://192.168.1.17:8774/v2/%(tenant_id)s | | 52b0a1a700f04773a220ff0e365dea45 | RegionOne | keystone | identity | True | public | http://192.168.1.17:5000/v2.0 | | 88df7df6427d45619df192979219e65c | RegionOne | keystone | identity | True | admin | http://192.168.1.17:35357/v2.0 | | 8c4fa7b9a24949c5882949d13d161d36 | RegionOne | nova | compute | True | public | http://192.168.1.17:8774/v2/%(tenant_id)s | | be788b4aa2ce4251b424a3182d0eea11 | RegionOne | glance | image | True | public | http://192.168.1.17:9292 | | c059a07fa3e141a0a0b7fc2f46ca922c | RegionOne | neutron | network | True | public | http://192.168.1.17:9696 | | d0052712051a4f04bb59c06e2d5b2a0b | RegionOne | glance | image | True | internal | http://192.168.1.17:9292 | | ea325a8a2e6e4165997b2e24a8948469 | RegionOne | neutron | network | True | internal | http://192.168.1.17:9696 | | ffdec11ccf024240931e8ca548876ef0 | RegionOne | neutron | network | True | admin | http://192.168.1.17:9696 | +———————————-+———–+————–+————–+———+———–+——————————————-+

3.8.3 Neutron 计算节点配置 1、修改相关配置文件 从 node1 上直接拷贝

[root@linux-node1 ~]# scp /etc/neutron/neutron.conf 192.168.1.8:/etc/neutron/ [root@linux-node1 ~]# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini 192.168.1.8:/etc/neutron/plugins/ml2/ [root@linux-node1 ~]# scp /etc/neutron/plugins/ml2/ml2_conf.ini 192.168.1.8:/etc/neutron/plugins/ml2/ 修改计算节点的 nova 配置文件中 neutron 部分, 并重启 openstack-nova-compute 服务, 因为 上面 nova 计算节点也是从控制节点拷贝的,此处无需操作

2、 创建软连接并启动服务 [root@linux-node2 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini [root@linux-node2 ~]# systemctl enable neutron-linuxbridge-agent.service [root@linux-node2 ~]# systemctl start neutron-linuxbridge-agent.service

检查 [root@linux-node1 ~]# neutron agent-list +————————————–+——————–+——————+——-+—————-+—————————+ | id | agent_type | host | alive | admin_state_up | binary | +————————————–+——————–+——————+——-+—————-+—————————+ | 385cebf9-9b34-4eca-b780-c515dbc7eec0 | Linux bridge agent | openstack-server | 🙂 | True | neutron-linuxbridge-agent | | b3ff8ffe-1ff2-4659-b823-331def4e6a93 | DHCP agent | openstack-server | 🙂 | True | neutron-dhcp-agent | | b5bed625-47fd-4e79-aa55-01cf8a8cc577 | Metadata agent | openstack-server | 🙂 | True | neutron-metadata-agent | +————————————–+——————–+——————+——-+—————-+—————————+

3.9 创建虚拟机 3.9.1 创建桥接网络

1、 创建网络 [root@linux-node1 ~]# source admin-openrc.sh                     #在哪个项目下创建虚拟机,这里选择在demo下创建;也可以在admin下 [root@linux-node1 ~]# neutron net-create flat –shared –provider:physical_network physnet1 –provider:network_type flat

2、 创建子网(填写宿主机的内网网关,下面DNS和内网网关可以设置成宿主机的内网ip,下面192.168.1.100-200是分配给虚拟机的ip范围) [root@linux-node1 ~]# neutron subnet-create flat 192.168.1.0/24 –name flat-subnet –allocation-pool start=192.168.1.100,end=192.168.1.200 –dns-nameserver 192.168.1.1 –gateway 192.168.1.1

3、 查看子网 [root@linux-node1 ~]# neutron net-list +————————————–+——+—————————————————–+ | id | name | subnets | +————————————–+——+—————————————————–+ | 1d9657f6-de9e-488f-911f-020c8622fe78 | flat | c53da14a-01fe-4f6c-8485-232489deaa6e 192.168.1.0/24 | +————————————–+——+—————————————————–+

[root@linux-node1 ~]# neutron subnet-list +————————————–+————-+—————-+—————————————————-+ | id | name | cidr | allocation_pools | +————————————–+————-+—————-+—————————————————-+ | c53da14a-01fe-4f6c-8485-232489deaa6e | flat-subnet | 192.168.1.0/24 | {“start”: “192.168.1.100”, “end”: “192.168.1.200”} | +————————————–+————-+—————-+—————————————————-+ 需要关闭 VMware 的 dhcp

3.9.2 创建虚拟机(为vm分配内网ip,后续利用squid代理或宿主机NAT端口转发进行对外或对内访问) 1、创建 key [root@linux-node1 ~]# source demo-openrc.sh               (这是在demo账号下创建虚拟机;要是在admin账号下创建虚拟机,就用source admin-openrc.sh) [root@linux-node1 ~]# ssh-keygen -q -N “”

2、将公钥添加到虚拟机 [root@linux-node1 ~]# nova keypair-add –pub-key /root/.ssh/id_rsa.pub mykey [root@linux-node1 ~]# nova keypair-list +——-+————————————————-+ | Name | Fingerprint | +——-+————————————————-+ | mykey | cd:7a:1e:cd:c0:43:9b:b1:f4:3b:cf:cd:5e:95:f8:00 | +——-+————————————————-+

3、创建安全组 [root@linux-node1 ~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 [root@linux-node1 ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

4、 创建虚拟机 查看支持的虚拟机类型 [root@linux-node1 ~]# nova flavor-list +—-+———–+———–+——+———–+——+——-+————-+———–+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | +—-+———–+———–+——+———–+——+——-+————-+———–+ | 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | | 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | | 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | | 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | | 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True | +—-+———–+———–+——+———–+——+——-+————-+———–+ 查看镜像 [root@linux-node1 ~]# nova image-list +————————————–+——–+——–+——–+ | ID | Name | Status | Server | +————————————–+——–+——–+——–+ | 2707a30b-853f-4d04-861d-e05b0f1855c8 | cirros | ACTIVE | | +————————————–+——–+——–+——–+ 查看网络 [root@linux-node1 ~]# neutron net-list +————————————–+——+—————————————————–+ | id | name | subnets | +————————————–+——+—————————————————–+ | 1d9657f6-de9e-488f-911f-020c8622fe78 | flat | c53da14a-01fe-4f6c-8485-232489deaa6e 192.168.1.0/24 | +————————————–+——+—————————————————–+

创建虚拟机 【这一步容易报错,一般都是由于上面的 nova.conf 配置填写有误所致】 [root@linux-node1 ~]# nova boot –flavor m1.tiny –image cirros –nic net-id=1d9657f6-de9e-488f-911f-020c8622fe78 –security-group default –key-name mykey hello-instance

5、查看虚拟机

[root@linux-node1 ~]# nova list +————————————–+—————+——–+————+————-+——————–+ | ID | Name | Status | Task State | Power State | Networks | +————————————–+—————+——–+————+————-+——————–+ | 7a6215ac-aea7-4e87-99a3-b62c06d4610e | hello-instance| ACTIVE | – | Running | flat=192.168.1.102 | +————————————–+—————+——–+————+————-+——————–+

************************************************************************* 如果要删除虚拟机(利用虚拟机ID进行删除) [root@linux-node1 ~]# nova delete 7a6215ac-aea7-4e87-99a3-b62c06d4610e *************************************************************************

[root@linux-node1 src]# nova list +————————————–+—————-+——–+————+————-+——————–+ | ID | Name | Status | Task State | Power State | Networks | +————————————–+—————-+——–+————+————-+——————–+ | 007db18f-ae3b-463a-b86d-9a8455a21e2d | hello-instance | ACTIVE | – | Running | flat=192.168.1.101 | +————————————–+—————-+——–+————+————-+——————–+

[root@linux-node1 ~]# ssh cirros@192.168.1.101 登录查看

******************************************************************************

上面创建虚拟机的时候,openstack在neutron组网内是采用dhcp-agent自动分配ip的!

可以在创建虚拟机的时候,指定固定ip,方法详见于另一篇博客:

http://www.cnblogs.com/kevingrace/p/5822660.html

******************************************************************************

6、 web 界面打开虚拟机 [root@linux-node1 ~]# nova get-vnc-console hello-instance novnc +——-+———————————————————————————– -+ | Type | Url | + ——-+———————————————————————————– -+ | novnc | http://58.68.250.17:6080/vnc_auto.html?token=303d5a78-c85f-4ed9-93b6-be9d5d28fba6 |       #访问这个链接即可打开vnc界面 +——-+———————————————————————————– -+

4.0 安装 dashboard,登陆 web 管理界面 [root@linux-node1 ~]# yum install openstack-dashboard -y [root@linux-node1 ~]# vim /etc/openstack-dashboard/local_settings               #按照下面几行进行配置修改 OPENSTACK_HOST = “192.168.1.17”                                 #更改为keystone机器地址 OPENSTACK_KEYSTONE_DEFAULT_ROLE = “user”              #默认的角色 ALLOWED_HOSTS = [‘*’]                                                 #允许所有主机访问 CACHES = { ‘default’: { ‘BACKEND’: ‘django.core.cache.backends.memcached.MemcachedCache’, ‘LOCATION’: ‘192.168.1.17:11211’,                                   #连接memcached } } #CACHES = { # ‘default’: { # ‘BACKEND’: ‘django.core.cache.backends.locmem.LocMemCache’, # } #} TIME_ZONE = “Asia/Shanghai”                        #设置时区

重启 httpd 服务 [root@linux-node1 ~]# systemctl restart httpd

web 界面登录访问dashboard http://58.68.250.17/dashboard/ 用户密码 demo 或者 admin(管理员)

image.png

——————————————————————————————— 如果要修改dashboard的访问端口(比如将80端口改为8080端口),则需要修改下面两个配置文件: 1)vim /etc/httpd/conf/httpd.conf 将80端口修改为8080端口

Listen 8080 ServerName 192.168.1.17:8080

2)vim /etc/openstack-dashboard/local_settings #将下面两处的端口由80改为8080 ‘from_port’: ‘8080’, ‘to_port’: ‘8080’,

然后重启http服务: systemctl restart httpd

如果开启了防火墙,还需要开通8080端口访问规则

这样,dashboard访问url: http://58.68.250.17:8080/dashboard ———————————————————————————————

前面建立了两个账号:admin 和 demo,两个账号都可以登陆web!只不过, admin 是管理员账号, admin 登陆后可以看到其他账号下的状态 demo 等普通账号登陆后只能看到自己的状态 注意: 上面的 Rabbit 账号 admin 和 openstack 是消息队列的 web 登陆账号。 比如一下子要建立 10 个虚拟机的指令,但是当前资源处理不过来,就通过 Rabbit 进行排队!!

———————————————————————————————————————– 修改OpenStack中dashboard用户登陆密码的方法:

登陆dashboard:

————————————————————————————————————————————————–

创建虚拟机的时候,我们可以自己定义虚拟机的类型(即配置)。

登陆openstack的web管理界面里进行自定义,也可以将之前的删除。

查看上传到glance的镜像

查看创建的虚拟机实例

自定义虚拟主机类型,设置如下:

(如果想让虚拟机有空闲磁盘空间,用于新建分区之用,则可以在这里分配临时磁盘)

我创建了四个虚拟机实例,采用的是同一个虚拟主机类型(即上面的kvm002),四个实例总共占用宿主机40G的空间。

image.png

登陆到openstack,可以看到,左侧一共有四个标签栏:

—————————————————————————————————————————————————- 可以登陆dashboard界面,在“计算”->“实例”里选择“启动云主机”或者“计算->网络->网络拓扑”里选择“启动虚拟机”就可以再创建一个虚拟机 也可以按照快照再启动(创建)一个虚拟机,不过这样启动起来的虚拟机是一个新的ip(快照前的源虚拟机就要关机了)

查看实例,发现kvm-server005虚拟机已经创建成功了。默认创建后的ip是dhcp自动分配的,可以登陆虚拟机改成static静态ip

image.png

———————————————————————————————————————————————

在openstack 中重启实例有两种,分别被称为“软重启”和“硬重启”。所谓的软重启会尝试正常关机并重启实例,硬重启会直接将实例“断电”并重启。也就是说硬重启会“关闭”电源。其具体命令如下: 默认情况下,如果您通过nova重启,执行的是软重启。 $ nova reboot SERVER 如果您需要执行硬重启,添加–hard参数即可: $ nova reboot –hard SERVER

nova命令管理虚拟机:

$ nova list #查看虚拟机 $ nova stop [vm-name]或[vm-id] #关闭虚拟机 $ nova start [vm-name]或[vm-id] #启动虚拟机 $ nova suspend [vm-name]或[vm-id] #暂停虚拟机 $ nova resume [vm-name]或[vm-id] #启动暂停的虚拟机 $ nova delete [vm-name]或[vm-id] #删除虚拟机

$nova-manage service list    #检查服务是否正常

[root@openstack-server ~]# source /usr/local/src/admin-openrc.sh [root@openstack-server ~]# nova list +————————————–+—————-+——–+————+————-+——————–+ | ID | Name | Status | Task State | Power State | Networks | +————————————–+—————-+——–+————+————-+——————–+ | 11e7ad7f-c0a8-482b-abca-3a4b7cfdd55d | hello-instance | ACTIVE | – | Running | flat=192.168.1.107 | | 67f71703-c32c-4bf1-8778-b2a6600ad34a | kvm-server0 | ACTIVE | – | Running | flat=192.168.1.120 | +————————————–+—————-+——–+————+————-+——————–+ [root@openstack-server ~]# ll /var/lib/nova/instances/           #下面是虚拟机的存放路径 total 8 drwxr-xr-x. 2 nova nova 85 Aug 29 15:22 11e7ad7f-c0a8-482b-abca-3a4b7cfdd55d drwxr-xr-x. 2 nova nova 85 Aug 29 15:48 67f71703-c32c-4bf1-8778-b2a6600ad34a drwxr-xr-x. 2 nova nova 80 Aug 29 15:40 _base -rw-r–r–. 1 nova nova 39 Aug 29 16:44 compute_nodes drwxr-xr-x. 2 nova nova 4096 Aug 29 13:58 locks

———————————————————————————————————————————– virsh命令行管理虚拟机:

[root@openstack-server ~]# virsh list #查看虚拟机

Id Name State —————————————————- 9 instance-00000008 running 41 instance-00000015 running [root@openstack-server ~]# ll /etc/libvirt/qemu/ #虚拟机文件 total 16 -rw——-. 1 root root 4457 Aug 26 17:46 instance-00000008.xml -rw——-. 1 root root 4599 Aug 29 15:40 instance-00000015.xml drwx——. 3 root root 22 Aug 24 12:06 networks

其中: virsh list #显示本地活动虚拟机 virsh list –all #显示本地所有的虚拟机(活动的+不活动的) virsh define instance-00000015.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的) virsh edit instance-00000015 # 编辑配置文件(一般是在刚定义完虚拟机之后) virsh start instance-00000015 #启动名字为ubuntu的非活动虚拟机 virsh reboot instance-00000015 #重启虚拟机 virsh create instance-00000015.xml #创建虚拟机(创建后,虚拟机立即执行,成为活动主机) virsh suspend instance-00000015 #暂停虚拟机 virsh resume instance-00000015 #启动暂停的虚拟机 virsh shutdown instance-00000015 #正常关闭虚拟机 virsh destroy instance-00000015 #强制关闭虚拟机 virsh dominfo instance-00000015 #显示虚拟机的基本信息 virsh domname 2 #显示id号为2的虚拟机名 virsh domid instance-00000015 #显示虚拟机id号 virsh domuuid instance-00000015 #显示虚拟机的uuid virsh domstate instance-00000015 #显示虚拟机的当前状态 virsh dumpxml instance-00000015 #显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等) virsh setmem instance-00000015 512000 #给不活动虚拟机设置内存大小 virsh setvcpus instance-00000015 4 # 给不活动虚拟机设置cpu个数 virsh save instance-00000015 a  #将该instance-00000015虚拟机的运行状态存储到文件a中 virsh restore a    #恢复被存储状态的虚拟机的状态,即便虚拟机被删除也可以恢复(如果虚拟机已经被undefine移除,那么恢复的虚拟机也只是一个临时的状态,关闭后自动消失) virsh undefine instance-00000015    #移除虚拟机,虚拟机处于关闭状态后还可以启动,但是被该指令删除后不能启动。在虚拟机处于Running状态时,调用该指令,该指令暂时不生效,但是当虚拟机被关闭后,该指令生效移除该虚拟机,也可以在该指令生效之前调用define+TestKVM.xml取消该指令

注意: virsh destroy instance-00000015 这条命令并不是真正的删除这个虚拟机,只是将这个虚拟机强制关闭了。可以通过该虚拟机的xml文件恢复。如下: [root@kvm-server ~]# virsh list Id Name State —————————————————- 1 dev-new-test2 running 2 beta-new2 running 5 test-server running 8 ubuntu-test03 running 9 elk-node1 running 10 elk-node2 running 11 ubuntu-test01 running 12 ubuntu-test02 running

强制关闭虚拟机 [root@kvm-server ~]# virsh destroy ubuntu-test02 Domain ubuntu-test02 destroyed

发现ubuntu-test02虚拟机已经关闭了 [root@kvm-server ~]# virsh list Id Name State —————————————————- 1 dev-new-test2 running 2 beta-new2 running 5 test-server running 8 ubuntu-test03 running 9 elk-node1 running 10 elk-node2 running 11 ubuntu-test01 running

但是该虚拟机的xml文件还在,可以通过这个文件恢复 [root@kvm-server ~]# ll /etc/libvirt/qemu/ubuntu-test02.xml -rw——- 1 root root 2600 Dec 26 13:55 /etc/libvirt/qemu/ubuntu-test02.xml [root@kvm-server ~]# virsh define /etc/libvirt/qemu/ubuntu-test02.xml #这只是重新添加了这个虚拟机,目前还不是活动的虚拟机,需要启动下 [root@kvm-server ~]# virsh start ubuntu-test02 Domain ubuntu-test02 started [root@kvm-server ~]# virsh list Id Name State —————————————————- 1 dev-new-test2 running 2 beta-new2 running 5 test-server running 8 ubuntu-test03 running 9 elk-node1 running 10 elk-node2 running 11 ubuntu-test01 running 12 ubuntu-test02 running

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

https://cloud.tencent.com/developer/article/1026128

博纳云标准节点提交注意事项

1.标准节点分为静态IP专线(单设备 5Gbps – 10Gbps)及动态IP汇聚(单设备 3Gbps- 5Gbps)。
(1)静态IP专线要求及设备配置请参考:https://shimo.im/docs/pDQVDH8pr6Pk8qdv
(2)动态IP汇聚要求及设备配置请参考:https://shimo.im/docs/QqJtpkCkYvRTQWvx
2.标准节点收益根据有效带宽 95 峰月结,具体收益情况请加入官方社群咨询二猫。
(1)有效带宽 95 峰:按自然月结算,在一个自然月内,按账户取每5分钟有效带宽值(出带宽-入带宽)进行降序排列,将带宽数值最高的 5% 的点去掉,剩余最高带宽即为月95带宽峰值计费值。以一月30天为例,默认均为有效取值点,每5分钟1个带宽取值点,每天288个取值点,每月总取值点数为 288x 30 = 8640个;将所有的点按带宽数值降序排列,去掉前5%的点(8640 x 5% = 432 个点),即第433个点为月95峰值带宽计费点。
3.动态IP汇聚需要先填写拨号配置,请前往 软路由 – 汇聚拨号配置 填写,保存服务器信息后选择对应的拨号配置提交即可。
4.请点击下方添加节点提交设备信息,如有疑问,请加入官方群咨询二猫。
官方站点:
https://bonuscloud.work/

Windows 10数字权利获取工具HWIDGEN介绍及使用说明

日前在国外科技论坛有大神发布名为HWIDGEN激活工具,该激活工具几乎秒杀所有版本Windows 10系统。

我们知道Windows 10现在激活后会带有数字权利,数字权利可以在我们重装系统后自动激活无需再次激活。

而HWIDGEN激活工具正是直接获取数字激活权利进行永久激活,此方法激活后用户下次安装同样无需激活。

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

先介绍使用再介绍原理:

下载由网友黯然 KING编写的简化脚本包: https://lancdn.ctfile.com/dir/18453279-30072124-2ea376/

由于借助该网友制作的脚本激活非常简单因此蓝点网不再赘述,具体直接以下面几张图片介绍整个激活流程。

注意事项 : 激活前电脑必须已经能够联网并且必须未禁用Windows Update服务,如已禁用请先开启该服务。

完整解压压缩包后右键点击Activation.CMD文件并选择使用管理员身份运行,然后会提示工具支持的版本。

接下来有几个选项默认情况下我们直接填写数字1来激活本机系统,输入后脚本自动工作联网获取数字权利。

最后执行完毕后脚本会提示你系统已经激活,至此激活完毕, 若前往系统激活选项会看到已经获得数字权利。

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

Windows 10数字权利获取工具HWIDGEN介绍及详细使用说明

HWIDGEN获得数字权利的激活原理:

说到激活原理自然先得继续介绍Windows 10系统的数字权利,所谓数字权利即与已系统绑定的激活许可证。

默认情况下当Windows 10被激活后会自动生成与硬件ID对应的许可证,该许可证会存储到微软的服务器上。

当系统重新安装时自动将硬件ID提交给微软检索对应的许可证,若许可证符合则系统自动激活无需用户操作。

至于 HWIDGEN 是如何通过修改系统内核数据来激活系统就是技术问题了,有兴趣的请看GitHub上的脚本

在激活系统后同时连接微软将硬件ID对应的许可证上传,最终对于用户来说系统在激活的瞬间就有数字权利。

本方法激活的系统没有任何副作用,如果你登录微软账号的话就会自动将数字许可证绑定到你的微软账号上。

当然不论是否登录账号都不会影响数字许可证,即下次重装系统输入对应版本的激活密钥后系统将自动激活。

http://www.pc9.com/pc/info-3892.html

打造自己的win10精简系统(超详细)

教你打造自己的win10精简系统(超详细)

2019/12/12 (Mail:1244180262@qq.com)

前言

近几年来微软对win10的推广策略层出不穷,甚至与 Intel联合宣布最新硬件不在支持Win7,以迫使用户向win10转移,但不得不承认win10系统性能各方面更优于win7系统。可是win10系统太多的自带软件,让我这种有洁癖的人很难受,我喜欢纯洁如处子般的系统——精简版系统。

那些网上下载的精简版,装在自己的电脑上,总让我感觉是穿了在路边捡来的别人的衣服,而且偶尔还能从衣兜里掏出不知道什么玩意儿的东西(比如,360全家桶,百度全家桶,毒霸,腾讯视频等等),这着实让人不舒服。

为此,我要打造属于我自己的win10精简系统,于是开始收集工具,整理资料,并记录如下

一、工具需求

1.MediaCreationTool

2.NTLite_setup_x64.exe

二、开始操作

1.工具和系统的获取

I.win10系统的获取
1.将下面链接复制到任意浏览器地址栏(微软官网链接,选系统,我相信官网)

https://www.microsoft.com/zh-cn/software-download/windows10/

网址界面,点击“立即下载工具”

教你打造自己的win10精简系统(超详细)
2.打开MediaCreationTool工具

点击“接受”

教你打造自己的win10精简系统(超详细)

点击“为另一台电脑创建安装介质(U盘、DVD、或IOS文件)”,并选择“下一步”

教你打造自己的win10精简系统(超详细)

或者

根据自己的需求,选择“语言”、“版本”、“体系结构” 或者直接选择 “对这台电脑使用推荐的选项” ,然后点击“下一步”

选择“IOS文件”,“下一步”

教你打造自己的win10精简系统(超详细)

这一步会让你选择下载系统保存的位置,选择好之后点击“保存”(为了操作方便,我直接保存在桌面了)

工具开始下载win10系统

image.png

下载完成后,工具会自动创建win10系统的安装介质

image.png

创建完成之后,直接点击“完成”即可

教你打造自己的win10精简系统(超详细)

桌面上(你自己选择的保存路径),就会的到一个win10的系统镜像。

image.png

新建一个文件夹

教你打造自己的win10精简系统(超详细)

双击win10镜像,

教你打造自己的win10精简系统(超详细)

打开之后,会看到镜像包含的文件

教你打造自己的win10精简系统(超详细)

将里面所有的文件都复制到,刚刚新建的文件夹(666文件夹)中。

II.精简工具的下载与安装
1.同样,复制下面的链接到浏览器地址栏

https://www.ntlite.com/download/

网页界面,有两个版本“Stable version(稳定版)” 和 “Beta version(测试版)”,这里建议使用稳定版的

教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)

根据自己的系统,下载64位或者32位的工具,我的系统是64位的

教你打造自己的win10精简系统(超详细)

下载完成后,找到工具,然后双击运行

教你打造自己的win10精简系统(超详细)

点击“我同意此协议”,然后就是傻瓜式的“下一步”、“下一步”的安装操作,这里就不一一演示了。

教你打造自己的win10精简系统(超详细)

安装完成后,打开界面如上

2.开始精简操作

1.初步精简(去除多余系统)
教你打造自己的win10精简系统(超详细)

打开精简工具,点击“添加”,选择“映像文件夹”

image.png

找到,你复制有win10镜像文件的文件夹,我的是“666”文件夹,点击“选择文件夹”

教你打造自己的win10精简系统(超详细)

镜像文件会被 精简工具解析,解析结果如上图

教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)

在我们不需要的项目上右击,然后“删除”

image.png

我喜欢专业版的,所以我只留了专业版,到这里我们只是去除了不需要的系统,下面我们开始对自己喜欢的系统进行更深度的精简,以便于我们更喜欢它。

2.深度精简(清除多余自带程序)
教你打造自己的win10精简系统(超详细)

鼠标右击自己喜欢的系统,点击”加载“(若无法直接加载系统,也可以加载install.esd文件)

教你打造自己的win10精简系统(超详细)

加载完成后,在左边栏就多了很多选项

a.“组件移除”部分的精简

点击“组件移除”,会弹出一个警告框,可以自行仔细阅读,然后点击“确定”

教你打造自己的win10精简系统(超详细)

接下来我们可以看到系统自带的组件,”IOS镜像“组件是不建议操作的

教你打造自己的win10精简系统(超详细)

Windows App“组件下的 ”Metro 应用“中大多数是可以去除的,去除方法就是把选项前面的 ” √ “ 取消勾选

教你打造自己的win10精简系统(超详细)

至于都对应了什么,有兴趣的同学可以去一一翻译过来看一下,我英语不好,就不在这里献丑了,同学们可以按需取舍。

教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)

“系统应用”组件下就是系统自带的应用,大家可以根据自己的喜好进行删除,其中“Window Defender”是系统自带的安全软件。不过它喜欢搞事情,比如它会清理掉你下载的盗版游戏啊、盗版软件啊、激活工具啊、破解工具什么的,所以你懂的。。。(呼吁,大家支持正版哈。。。),其他选项同样同学们可以按需取舍。

教你打造自己的win10精简系统(超详细)

Windows App“组件下的其他功能,同学们可以根据备注信息的说明,自由按需取舍。

教你打造自己的win10精简系统(超详细)

多媒体”组件下,我去除了“其他主题”和“墙纸”,其他选项同样同学们可以按需取舍。

教你打造自己的win10精简系统(超详细)

本地化”组件下的“语言”,我这边只保留了“简体中文”,其他选项同样同学们可以按需取舍。

教你打造自己的win10精简系统(超详细)

硬件支持”组件下,去除了“游戏周边”,其他选项同样同学们可以按需取舍。

教你打造自己的win10精简系统(超详细)

系统”、“网络”、“远程控制与隐私”和“驱动程序”四个组件小白的话不建议操作。

b.“配置”部分的精简
教你打造自己的win10精简系统(超详细)

这部分同学们可以根据每一项的备注信息,自由按需取舍,这里就不做赘述啦。

教你打造自己的win10精简系统(超详细)

其中,”设置“选项下的”预安装应用“记得禁用掉

c.”整合“部分
教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)

以上就是精简系统的步骤。

三、打包自己的系统

精简完毕后就可以打包自己的系统了

教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)
教你打造自己的win10精简系统(超详细)

点击”应用“,勾选”创建ISO“,会让你选择文件要保存的位置,选好位置点击”保存“,之后会让你给卷标命名

教你打造自己的win10精简系统(超详细)

卷标命名之后,就可以看到右下角的信息

教你打造自己的win10精简系统(超详细)

然后,点击工具右上角的”开始“

教你打造自己的win10精简系统(超详细)

选择”是“

教你打造自己的win10精简系统(超详细)

工具开始自动打包

教你打造自己的win10精简系统(超详细)

每一项完成之后

教你打造自己的win10精简系统(超详细)

就可以到你保存的路径内找到打包好的精简包了

作者:彩虹直至黑白_Joon
链接:https://www.jianshu.com/p/f09739925a4a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我不想当大明星

《我不想当大明星》

章节目录 第一章、恶魔系统

夜晚的小区里,左迁穿着一套运动服下了楼,他今年大学刚毕业,家里赶上了好时节,分了两套房子,一套在城北,一套在城南。

而他现在就住在城南这边,平时一个人住,打着出来工作的幌子,其实想着玩两个月游戏过足瘾再去找工作,理由都找好了。

这年头,找个工作哪有这么容易?

左迁乐滋滋的走向小区门口的小超市,这几天玩的那个叫爽快,平时在学校里可没这么自由,现在想怎么玩,就怎么玩。

正当他优哉游哉的走进超市。就这时,突然感觉一阵眩晕袭来。

哎呦~!妈耶!难道营养不良了?这可不成,明天买两斤排骨炖了补补!我可不想明天上新闻。

左迁站定了身子,揉了揉脑袋,眼睁开一瞧,顿时傻了。

原本是黑夜的,怎么变白天了?此时他正站在马路中间。天寒地冻的,马路边还隐隐有着一些雪,看来是下雪没几天。而他此时身上穿着短袖短裤的李宁运动服一套,冻的鼻涕直流。

一辆辆擦身而过的车,人行道指指点点的行人。左迁一脸懵逼样。此时一阵凉风袭来,冷的他鸡皮疙瘩都起来了,直打哆嗦。

我去!这尼玛什么情况啊?谁特么来解释一下?左迁脑子有些转不过弯来。

他双手抱着手臂,哆嗦的来到人行道,不明白为什么会这样。但先保住小命要紧。为了理解到底发生了什么,他哆嗦的举起手,勉强的挤出笑容对一个低头玩着手机的妹子招呼到,

“美女!这哪儿?”

那低头玩着手机的美女抬头一瞧,顿时一脸嫌弃的绕过了他。左迁那个郁闷啊!又一阵冷风吹来,冻得他打了个喷嚏,连忙跑到墙角落避避风先。他四处看了看,正巧见一家卖衣服的店,跑过去一看,虽然不知道啥牌子!呦!价格养眼噢!

左迁跑跑跳跳的跑进店里瞧了瞧,见一见黑色的大衣,只需要198只需要198。价格不贵!而且保暖,关键能裹住大半个腿肚子。

“老板,给我来这件,要最大号的。”

那导购员是个女的!长得还算漂亮。她打量了下左迁,差点没笑出来,她也没拿衣服,直接问道,“你有钱吗?”

左迁一听,顿时来火了。“啥意思啊?瞧不起人?什么眼神啊这是?我告你,今天不给我一个解释,还没完了!”

又一阵风刮进来,吹的左迁打哆嗦,他一把从口袋里掏出三张红票子,牛气哄哄的喝道:“这是什么?钱~!看到了没?还不赶紧给我拿衣服,傻站着那干啥?”

“我从来没见过这样的钱!”那导购此时眼神里已经流露出鄙夷了,她从口袋里掏出一张蓝色一百的,甩了甩,“这才是钱!你那钱,抱歉,我没见过,不收!哪里收你哪里用去!”

左迁懵逼了!怎么回事?这不对啊!他又连续跑了两家,都是不收这钱。

这个世界怎么了?怎么就突然变了?连钱也不一样了,左迁突然有些害怕了,对未知的恐惧。

就在这时,突然一个机械般的女人声音直接在左迁脑海里响起。

——恶魔系统开启,

http://www.it09.net/?action=read&book=%E6%88%91%E4%B8%8D%E6%83%B3%E5%BD%93%E5%A4%A7%E6%98%8E%E6%98%9F.html

中国,加油!China, come on!

转载一篇好文如下:

我们不理解6000万意大利人为什么不戴口罩就像他们不理解14亿中国人为什么都带口罩一样!
我们不理解3亿美国人喜欢在地下室存满食物就像美国人不理解14亿中国为什么会乖乖宅家一个月一样!
美国的医院都是私立的,检测一次新冠肺炎需要个人承担2000美元,美国CDC找药厂协商要求降低试剂价格,药厂说如果我们不赚钱,我们就不生产,中国政府告诉我们:免费!
美国记者追问副总统,没有买医疗保险的美国人感染新冠状病毒怎么办?副总统助理怒斥记者:对着镜头大声追问是什么都得不到的!中国政府告诉我们:免费!
韩国缺少隔离点,政府找到宾馆,宾馆说没门!政府只能出资买下,中国政府告诉我们:征用!
日本、意大利的疫区超市被抢购一空,连卫生纸都没有,中国政府告诉我们:送货上门!
我们静下心来想想,为什么美国建议普通人不戴口罩,只建议医护人员戴口罩,对新冠肺炎的致命性闭口不谈,坚决不做大规模检测?为什么意大利女议员因为戴口罩受奚落后被赶出会场,其他医院认为新冠病毒是夸大其词?是因为他们是傻×吗?不,是因为国情不同,设想一下,如果在一个游行示威合法、枪支买卖合法、言论自由的国家里,你的政府告诉你:“这个病很严重,必须带口罩,不带口罩就会死,而我们没有口罩”,会发生什么?能依靠什么?举个例子,2019年的法国大规模暴动中,法国警察罢工了!上周,韩国护士集体辞职了!
我们建火神山、雷神山、方舱医院、封城、封小区、14亿人响应国家号召宅在家,他们很羡慕,但是这些国家很清楚哪些是他们能做到的,哪些是他们做不到的,抹黑中国的声音也变得有气无力。
我们一直在讲政治自信,大家总是问什么是政治自信?总是觉得看不清摸不明,当疫情发生,对比全世界各个国家的反应后,你会由衷的感叹一声,辛亏我是中国人,这就是政治自信。
我们总是会抱怨我们的国家、我们的社会、我们的制度、我们的政策,这也不好,那也不好,但你终会发现,每到生死关头,这个你觉得土的掉渣的国家和一群身上画着红色五角星的人总会像你亲爹亲妈一样,狠狠的拉你一把。
最后引用世卫组织总干事高级顾问艾尔沃德的话:“如果我感染了,我希望在中国治疗。”

 

Reprint a good article as follows:

We don’t understand why 60 million Italians don’t wear masks just as they don’t understand why 1.4 billion Chinese wear masks!

We don’t understand that 300 million Americans like to store food in the basement just as Americans don’t understand why 1.4 billion Chinese people live in their homes for a month!

Novel coronavirus pneumonia is a private hospital. It takes 2000 dollars to detect a new crown pneumonia. The US CDC seeks consultation with pharmaceutical companies to reduce the price of reagents. The pharmaceutical factory says if we do not make money, we will not produce. China’s government tells us that it is free!

American reporters asked the vice president how to deal with the new coronavirus among Americans who did not buy medical insurance? The assistant vice president angrily scolded the reporter: ask the camera loudly what you can’t get! The Chinese government tells us: free!

South Korea is short of isolation points. The government finds hotels. Hotels say no way! The government can only pay for it. The Chinese government tells us: expropriation!

Supermarkets in epidemic areas in Japan and Italy were snapped up without toilet paper. The Chinese government told us: deliver to your door!

Novel coronavirus pneumonia is what the United States suggests. The general public recommends that the ordinary people not wear masks, but only suggest that the medical staff wear masks to silence the fatal nature of the new crown pneumonia and firmly refuse to do large-scale detection. Why are Italian Women Parliamentarians expelled from the meeting after being ridiculed for wearing masks? Other hospitals think the new coronavirus is exaggerated? Is it because they are stupid? No, it’s because of the different national conditions. Imagine what would happen if your government told you in a country where demonstrations are legal, guns are sold legally, and speech is free: “this disease is very serious. You have to wear masks. If you don’t wear masks, you will die, and we don’t have masks.”? What can I rely on? For example, in the massive riots in France in 2019, the French police went on strike! Last week, South Korean nurses resigned collectively!

We have built huoshenshan, leishenshan, fangcang hospital, Fengcheng, fengxiaoqu, and 1.4 billion people who respond to the call of the state to stay at home. They are envious, but these countries are very clear about what they can do, what they can’t do, and the voice of blackening China has become powerless.

We have been talking about political self-confidence. What is political self-confidence? I always feel that I can’t see clearly. When the epidemic happens, compare the reactions of countries all over the world, you will sincerely sigh that I am Chinese, which is political self-confidence.

We always complain about our country, our society, our system and our policies. This is not good, and that is not good. But you will find that, at the critical moment of life and death, this country and a group of people with red five pointed stars on it will always pull you like your parents.

“If I have an infection, I want to be treated in China,” he said

爷爷买菜

爷爷是个危险的职业

        今天儿媳要去买菜,孙子怕妈妈染上病毒,哭着不让去,说还是让爸爸去吧。
爸爸说,我是一家的顶梁柱,靠我挣钱养活大家,如果我发生意外,你们怎么生活?还是让爷爷去吧,因为爷爷皮老结实病毒攻不破。
站在一旁的爷爷急忙说,这个病毒传男不传女,还是让奶奶去吧。小孙子说:不行,我奶奶万一中毒死了谁给我们做饭啊!
怎么办?全家思来想去决定举手表决,结果是一致通过爷爷去买,因为他万一有个三长两短也不影响全家的生活!
爷爷心想:当爷爷容易吗?操心辛苦一辈子,连死都要一马当先!
爷爷无奈的穿好外套,正了正“冠”,拿出“壮士一去兮不复返”的气慨正准备出门,却被儿媳紧急叫停。原因是爷爷是正厅级的离休干部,每月工资一万多,不抽烟、不喝酒,还不买衣服,这一万多都是家人花的,爷爷如果“光荣”了,岂不是一笔不小的损失?
全家人再三权衡最后决定:菜不买了、饭不做了,从今开始叫外卖。反正花的是爷爷的钱,不花白不花,花了也白花!白花咋不花?!
爷爷心里五味杂陈的倚在门上叹了口气:唉,去那里说理去呀?爷爷真是个危险的“职业”!

5分钟教你搞定RAID模式

磁盘阵列(Redundant Arrays of Independent Disks,RAID)

RAID 0

RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。

image

RAID 0最简单的实现方式就是把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。在使用中电脑数据依次写入到各块硬盘中,它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块80GB的硬盘组建成RAID 0模式,那么磁盘容量就会是240GB。其速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。

为了解决这一问题,便出现了RAID 0的另一种模式。即在N块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。

带区集虽然可以把数据均匀的分配到所有的磁盘上进行读写。但如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷 超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。

虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。

RAID1

image

RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。

RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。

3、RAID0+1

image

从RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。

RAID: LSI MegaRAID、Nytro和Syncro

MegaRAID、Nytro和Syncro都是LSI 针对RAID而推出的解决方案,并且一直在创造更新。

LSI MegaRAID的主要定位是保护数据,通过高性能、高可靠的RAID控制器功能,为数据提供高级别的保护。LSI MegaRAID在业界有口皆碑。

LSI Nytro的主要定位是数据加速,它充分利用当今备受追捧的闪存技术,极大地提高数据I/O速度。LSI Nytro包括三个系列:LSI Nytro WarpDrive加速卡、LSI Nytro XD 应用加速存储解决方案和LSI Nytro MegaRAID 应用加速卡。Nytro MegaRAID主要用于DAS环境,Nytro WarpDrive加速卡主要用于SAN和NAS环境,Nytro XD解决方案由Nytro WarpDrive加速卡和Nytro XD 智能高速缓存软件两部分构成。

LSI Syncro的定位主要用于数据共享,提高系统的可用性、可扩展性,降低成本。

LSI通过MegaRAID提供基本的可靠性保障;通过Nytro实现加速;通过Syncro突破容量瓶颈,让价格低廉的存储解决方案可以大规模扩展,并且进一步提高可靠性。

RAID2:带海明码校验

从概念上讲,RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图左边的各个磁盘上是数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。

RAID3:带奇偶校验码的并行传送

这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和写入速度。校验码在写入数据时产生并保存在另一个磁盘上。需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软件实现RAID控制将是十分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。

RAID4:带奇偶校验码的独立磁盘结构

RAID4和RAID3很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3是一次一横条,而RAID4一次一竖条。它的特点和RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。

RAID5:分布式奇偶校验的独立磁盘结构

从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID 5中有”写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构

名字很长,但是如果看到图,大家立刻会明白是为什么,请注意p0代表第0带区的奇偶校验值,而pA代表数据块A的奇偶校验值。它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。

RAID7:优化的高速数据传送磁盘结构

RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。

RAID10:高可靠性与高效磁盘结构

这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于数据容量不大,但要求速度和差错控制的数据库中。

RAID53:高效数据传送磁盘结构

越到后面的结构就是对前面结构的一种重复和再利用,这种结构就是RAID3和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实现。这是因为所有的数据必须经过带区和按位存储两种方法,在考虑到效率的情况下,要求这些磁盘同步真是不容易。

作者:我是李小胖
链接:https://www.jianshu.com/p/b3dcfc313a35
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2019年度总结

《2019年度总结》

2019,都是谁的故事,谁的江湖?终于到了,2019总结的时候了 。
第一批60后将退休了,70后可知天命了,80后终于不惑了,90后已到而立之年了,终于知道什么叫光阴似箭,日月如梭了。无论爱过、恨过,不管哭过、笑过,2019,我们的生命里都将永不再有。这一年,似乎大家都在说:“我太难了”!
1、这一年3月,牺牲在凉山木里森林大火中的30位消防官兵,让我们明白了“哪有什么岁月静好,只不过是有人在为我们负重前行。”被大火吞噬的不仅有鲜活的生命,还有远在万里之外的法国巴黎圣母院。4月的一场大火,将这座具有800多年历史的古老建筑毁于一旦。
2、这一年,大国在博弈,帝国主义亡我之心不死。美国跟中国,高手在过招。贸易战一直在打,关税一直在谈,特朗普一直在变。每当他扛不住的时候,就会给北京打个越洋电话,稳一下民调和股票行情。这一年,中国人等了365天,依然没有等到华为公主孟晚舟回家。
这一年,美国终究没搞死华为,反而帮华为把备胎转正。特朗普更是将华为扶上马,还送了一程,帮华为在全世界做宣传。人家不愧是土豪,帮这么大的忙,居然分文不收。江山代有人才出,各领风骚三五年。这一年,特朗普搞不定的事情,被李元霸的兄弟李元洪搞定了。其因为离职敲诈东窗事发掀起的“251”妖风,差点把华为掀翻。
3、这一年,咪蒙被封号了,小黄车终于黄了,锤子真的锤子了,王思聪被限制坐飞机、坐高铁了,贾跃亭在美国召集债权人开会,要还债了。
4、这一年,一只名字很土豪的富贵鸟,破产了;一家叫权健的保健帝国,崩塌了;一个叫淘集集的集市,散了;被王首富儿子操盘的熊猫直播,熊了;这一年,开发暴风影音的公司,终究没有扛过暴风,栽了。其技术部最后一个员工在网上发表感叹说:“暴风的同仁出来爆料下,目前开发部就我一个人了,咋办?不走,太孤单;走,暴风影音就没有人维护了!”。风萧萧兮易水寒,壮士一去兮不复还,帝国的没落总是如此悲壮,曾经的2.9亿用户,而今剩下的只有无尽感伤。
5、这一年,在教师节当天,55岁的中国首富马老师,留下一句:“ 青山不改,绿水长流,后会有期 ”的话后,挥泪告别了互联网江湖。这一年岁末,75岁的联想创始人柳传志,也在给我们留下一句“人类失去联想,世界将会怎样?”的话后,选择了解甲归田。
6、这一年,甘肃兰州一冯姓医生被患者刺杀身亡,医患关系的缓解任重道远。这一年,北京医生杨文被杀死在自己的工作岗位上,为年末蒙上了一层挥之不去的阴霾。年初3月,号称“中国橙王”的褚时健英雄谢幕,世间从此再无“亚洲烟王”。年末11月,台湾明星高以翔英年早逝,给粉丝们留下了“世间再无王沥川”的悲歌。
7、这一年,马伊琍做了一篇大文章,离了;当当网李国庆摔了个杯子,火了;台湾45岁的明星林志玲,婚了;美妆博主宇芽晒出被家暴的视频,怒了;范冰冰和李晨,在给彼此留下一句“我们不再是我们,我们依然是我们”的话后,选择了在这一年各奔东西。宋慧乔和宋仲基,通过经纪人给粉丝们一个“ 性格不合 ”的理由后,也选择了在这一年分道扬镳。
8、这一年,中国的芯片、内存终于实现了量产;华为的鸿蒙操作系统也终于得以亮剑;中国公司终于控股了号称世界“发动机沙皇”的乌克兰达西奇飞机公司,中国的航空动力将与世界比肩。中国工信部于6月6日向运营商颁发了“5G商用牌照”,中国正式成为5G第一梯队国家。这一年,中国高铁运营里程达到3万公里,高速公路达到14.3万公里,均居世界第一。中国第二艘航母“山东舰”服役了。从1888年12月17日,晚清政府成立北洋舰队,到2019年12月17日山东舰服役,中国向海图强,整整等待了131年。这一年,中国运载火箭“胖五”发射成功,标志着中国进入世界航天第一梯队。中国成立70周年的国庆大阅兵,给了国人无比的信心。中国终于可以大声地跟世界头号流氓说“不”了。
9、这一年,世界很乱。美国在忙着退群,英国在忙着脱欧,俄罗斯在忙着搞乌克兰。法国在忙着跟工会谈判,德国在防美、防俄、防特朗普。新西兰在忙着反恐,澳大利亚在忙着灭火,韩国、日本在忙着傍中国这个大款。西班牙在忙着平乱,智利在忙着平定因地铁涨价三毛钱,而引发的大暴乱。伊朗也是猪年不顺,前有美国阻击,后院更是火光冲天。最后是印度三哥给世界乱局来了个年度总结,其以50个城市暴乱的规模,让世界知道了什么叫做真正的混乱和瘫痪。猛然发现,原来中国大陆才是世界上最安全的地方。这一年,我们终于明白,我们并不是生活在一个和平的年代,只是生活在一个和平的国度。
10、这一年,伊朗算是虚惊一场,吓出一身冷汗。美国在下令对伊朗空袭打击的最后10分钟,特朗普软了,其避免了第2.5次世界大战的爆发。土耳其的野心家埃尔多安,按耐不住寂寞,充当出头鸟,发起了一场针对库尔德人的大规模战争。印度和巴基斯坦这对生死冤家,又杠上了,双方几度在克什米尔地区发生了大规模的交火。
这一年,美国使出吃奶的劲,还是没能推翻委内瑞拉政权。凡是跟中、俄对着干的事情,基本都是事倍功半,特朗布也在说:“我太难了”。黄花菜都凉了,鸭绿江边的三胖也没有等来美国的施舍和援助。特朗普要是靠得住,母猪怕是都要上树。这个世界最牛逼的80后,似乎还是嫩了点。尽管世界很不太平,但有个叫吴京的中国男人,他用一部《流浪地球》的电影告诉了我们,比世界大战更可怕的,是让地球去流浪。
11、这一年,黄马甲成了法国最流行的时装,持续不断的黄马甲运动,让法国不再是土豪眼中的天堂。其也让我们看到了,资本主义正在走向没落。这一年,黑口罩也终于把东方之珠变成了一个,国人再也不想去的购物天堂。
12、这一年,西安奔驰女,坐在4S店的汽车引擎盖上哭,一哭成名。
捡垃圾的流浪汉被封为“浪流大师”,他给年轻人上了一堂生动的国学课,更让垃圾分类走进了上海的每个家庭。 这一年,一线网红都是李家人的天下:一个在淘宝直播卖口红的小伙子李佳琪火了,其成为励志的代表;一个四川绵阳的农村姑娘李子柒,更是人气爆棚,无人能敌。其被贴上了“中国文化输出”的标签。
13、这一年,国人再一次明白了什么叫“男人靠不住”。中国女排取得了11连胜夺冠的佳绩,堪称巾帼英雄。中国男足因不敌战乱小国叙利亚,成为饭后笑谈。其一句“我们不生产进球,我们只是足球的搬运工“成为大家调侃的经典。
14、这一年,无锡高架桥被货车压垮,压扁了来来往往的车;台湾宜兰大桥突然坍塌,砸坏了南来北往的船。年初3月,埃塞俄比亚死亡157人的波音737空难,为波音公司的没落拉开了序幕。年末12月,哈萨克斯坦空难,机上唯一的中国女性,毫发无损地逃了出来,更若无其事地从机场开车回家,好像啥事也没有发生。
15、这一年,九岁女童章子欣被租客以当婚礼花童之名骗走,就再也回不来了,最后连两个租客也自杀身亡了。其给一家人留下了巨大的遗憾,也给社会留下了一个永远也解不开的谜团。这一年,湖南怀化一教师被埋尸操场16年后,终于被挖出,得以沉冤昭雪。这一年,一个21年前被判死刑的昆明恶霸孙小果,竟然神奇地复活了。且继续干着他最喜欢的强奸、杀人放火勾当,他终于再一次把自己变成了死刑犯。
16、这一年,台湾人突然发现”大陆人吃不起榨菜”。其实,他们错了,我们吃不起的不是榨菜,而是猪二哥。2019,猪二哥要让大家都知道,什么叫本命年……
17、全民开启抗病毒肺炎征程。尽量减少去人流集中的地方,出门戴好3M口罩。

天道有轮回,苍天饶过谁?2019,该来的还是来了;该走的,不该走的,也都走了。有的人成了人妻,有的人成了网红,有的人成了历史,有的人成了回忆。一切都在不断变幻,唯一不变的是我们还活着……

2018年中国CDN行业市场规模及前景分析,CDN技术将整体迎来升级

一、CDN行业定义及产业链分析

CDN,全称 Content Delivery Network,即内容分发网络,是指利用分布在不同区域的节点服务器群组成流量分配管理网络平台,为用户提供内容的分散存储和高速缓存。其原理是通过在现有的 Internet 中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,由缓存服务器为用户提供内容服务,解决网络拥挤的状况,提高用户访问网站的响应速度。

从产业链来看,CDN 上游行业主要包括服务器、存储设备、网络传输设备等硬件设备厂商,以及提供 IDC、网络带宽等相关资源的服务商和运营商。CDN 下游行业为互联网内容服务商,主要包括门户网站、短视频网站、网络直播、企业客户等。门户网站、视频网站、直播网站由于数据资源传输量大、时效性高,成为 CDN 的核心下游用户。

CDN行业产业链结构示意图

资料来源:华经产业研究院整理

二、全球及中国CDN市场规模

数据显示,2019年至2021年,全球CDN市场规模将实现35.16%、29.32%、47.49%的增速,较2016至2018年增速有大幅提升,总体市场规模于2021年达到232亿美元。

2011-2018年全球CDN市场规模

资料来源:公开资料整理

工信部定制“超高清视频产业发展行动计划(2018-2022 年)”推动超高清内容建设和行业应用,直接促进 CDN 行业的发展。因此 CDN行业随着流量快速增长仍处于红利期, 2017 年,中国 CDN 市场容量为 136.1 亿元,同比增长 29.1%。2018年 CDN 市场规模 180亿元,同比增长32.3%,2019 年市场规模预计为250亿元,同比增长 38.89%,保持快速增长。

2011-2018年中国CDN市场规模

资料来源:公开资料整理

三、CDN市场竞争格局

目前 CDN 市场的玩家大致可以分为三类,第一类是以网宿科技、蓝汛、帝联科技等为代表的传统 CDN 服务商,其特点是企业自建服务器,为客户提供专业的 CDN 服务,第二类是云 CDN 服务商,包括阿里云、腾讯云、百度云、 金山云以及天翼云、沃云等运营商云平台,其特点是产品比较全面,CDN 通常与云服务进行对接;第三类是星域和云帆加速为代表的创新型 CDN 厂商,其主要特点是通过 P2P 技术和智能硬件结合来扩展节点。

随着越来越多的企业进入到 CDN 市场中,我国 CDN 市场已经逐渐趋于成熟,并呈现出“传统 CDN 服务商,云计算企业 CDN,创新型 CDN”三方竞争的局面。2016年3月,工信部对 CDN业务纳入牌照化管理,行业门槛日渐提高,CDN行业逐步向行业头部公司集中。截至2019年3月 ,拥有全国范围的 CDN 经营资质的企业仅有19家。

CDN行业主要参与者分析

CDN行业主要参与者分析

资料来源:公开资料整理

相关报告:华经产业研究院发布的《2019-2025年中国内容分发网络(CDN)行业竞争格局分析及投资战略报告

四、我国CDN市场发展前景及趋势分析

我国固定宽带及4G下载速率稳步提升,4G发展推动移动互联网流量加速发展。截止2018年末,我国固定宽带平均下载速率已达28.06Mbps、4G网络平均下载速率达22.05Mbps,移动互联网接入流量大幅提升至711亿GB,月户均移动互联网接入流量达4.42GB/月/户。此外,5G技术将进一步提升下载速率,且随着5G商用化进程加速,应用场景将快速膨胀,信息交互和处理需求将大幅提高,5G将有望带来互联网流量的又一轮大发展浪潮,推动CDN服务需求显著提升。

2013-2018年我国移动互联网流量情况分析

资料来源:公开资料整理

未来CDN市场将呈现以下几个趋势:

1、“百花”争鸣,传统CDN厂商独大、独揽CDN市场的情景将不复存在

在互联网+新时期下,除“财大气粗”的互联网巨头BAT们,凭借技术创新开拓市场的创新型专业CDN厂商实力同样不容小觑。典型代表如迅雷星域CDN、七牛CDN等,前者以独创的无限节点等创新技术,后者则凭多IDC架构分布式存储技术,均实现在问世短短几个月时间里,即迅速开拓市场并跻身CDN市场前排位置。未来的CDN市场不再是龙头企业一家独大,大家将各凭本事“吃饭”。

2、CDN技术将整体迎来升级

在高增长机会的同时,CDN也面临着互联网新技术的挑战。事实上,在云计算、P2P等新技术的带动下,CDN的技术架构正在发生变化。

一方面,CDN正与云计算技术紧密拥抱。云服务商如阿里云、腾讯云等将云计算和CDN众多功能整合起来,提供一体化的CDN解决方案;而创新型专业CDN服务商星域CDN则借助迅雷强大的云计算实力、庞大的用户数量,以及自身几十万数量级的智能硬件终端、小米强大的智能家庭布局优势资源,建立起庞大的“云+端”生态圈,极大地拓展了CDN的应用场景;而老将网宿,则正在谋划自建云计算。

另一方面,创新型专业CDN展示出的创新技术为CDN行业带来了巨大的技术升级动力。星域CDN的无限节点、星域调度、弱网加速等创新技术,首次将传输距离拉进至1km,并解决了弱网加速的困境,做到了视频直播最小延迟至2s的纪录,无疑将刺激其它CDN服务商进行技术革新,从而共同推动行业整体技术升级。

3、CDN市场毛利率下滑,价格将下探

以陈磊放言“CDN行业价格将腰斩”开始,BAT等互联网巨头的切入,将CDN市场的价格不断下调,一度掀起轰轰烈烈的价格大战,直至星域CDN以冰点价格入市,才终止了愈演愈烈的价格战。但随着技术升级与市场竞争加剧,行业价格将不断下滑已是不争的事实。

4、CDN服务将推陈出新,服务质量将更高

CDN正在从专为大型互联网公司服务,转变成为各行各业的大、中、小各类企业服务。尽管目前仍无一套完善的CDN服务质量评价标准,但CDN厂商们几乎全在下大力气让服务与时俱进。其中,云服务商阿里云CDN提出了100倍故障赔偿方案,而星域CDN则首次提出100%满意专业定制化服务承诺。

博纳云CEO李爽:IT服务形态与组织形态未来景观的设想与展望

01.  IT服务发展的过去与当下:由大到小,由同到异,由集中到分散

纵观历史生物进化,很多陆地上的大型生物消失,尚存一线生机的大型海洋生物,也逐渐向灭绝迈进,取而代之的则是小型生物得以长久的生存。而无论是生物的进化历史、人类的演进历程,还是IT的发展进程,都是一个由大到小、由趋同到个性、由集中到分散的过程。

回顾IT服务从初始到当下的逐步演进,这一过程与生物的演进过程十分相似:从大型机、小型机、服务器,到现在普及的云计算——未来,更多大规模的小节点将成为历史发展的趋势和主流

IT演进与IT服务形态息息相关:大型机、小型机更多应对的是科学计算与金融体系的建立,而企业IT的成立则造就了甲骨文(Oracle)、微软(Microsoft)、SAP等服务公司,同时也成就了以PC服务器、小型IDC(互联网数据中心,Internet Data Center)为主流的市场。

随着互联网时代的到来,云计算平台随之发展壮大,互联网的应用原生与云计算服务相匹配,云计算与互联网相互成就了彼此的时代。到了今天,互联网应用已经成为主流的IT应用,云平台也成为了主流的IT服务平台,云计算平台与企业IT平台出现了双向融合的效应,市场上不再讨论公有云、私有云、企业IT的区别,也不再讨论哪个阵营更为主流或成为未来,更多的是云计算平台向混合云的方式去发展与部署,而传统IT平台与软件也逐步向云计算平台发展。其中最重大的标志就是坚持公有云为上的AWS在2018年底宣布支持私有云、混合云的部署形态。

新时代的演进不是单向单面的,而是一个全面的、综合性的过程。因此,不同的IT时代在催生IT服务形态演进的同时,IT的组织形态与人才结构也会随之发生巨大变化。

在企业IT时代,公司的组织形态主流为科层级的组织形态,IT的人才结构以运营和运维为主;而如今互联网公司的组织形态主流为职能的组织形态,IT的人才结构以研发为主、运营为辅。

02.   未来IT服务景观展望:万物互联,各方协同,互惠互利

从今天去看未来,下一个时代又会是什么样的呢?

如今,物联网、大数据、人工智能成为行业公认并重点发展和拓展的方向,而当万物互联时代真正到来时,现有的互联网时代的IT服务形态(云计算)、组织形态(职能)或是人才结构(研发)是否能够与这个时代的需求相匹配,则是一个值得思考的问题。

在万物互联的时代,越来越多的智能终端将会被用来服务整体社会,而在人工智能的推动下,终端越来越智能化,能力越来越强,计算需求越来越多,实时性要求越来越高,数据的隐私保护意识会越来越强,而需要重复工作的人员也会越来越少。那什么样的IT服务形态、什么样的数据分享方式、什么样的组织形态与人才结构会更适合呢?

正如之前所提到的,IT的发展过程遵循由大到小、由趋同到个性、由集中到分散的普遍规律。物联网的发展无疑会产生数量庞大但体积更小的终端节点,那么建立一个完全分散化的IT服务平台,从结构上来说会更适合未来的时代。

设想一下,未来的IT服务形态是一个完全分散化的服务平台,所有联网的终端不仅可以从网络去获取资源,而且还可以向网络来贡献资源;IT资源不仅是消耗者,同时也可以成为服务者。将所有的终端联接起来构成一个巨大的服务资源平台,就近服务于各种终端,各取所长、各取所需、各尽其用,整体IT的社会资源得到极大的效率提升

未来的IT服务形态一定是基于完全分散化的资源网络构建而成,同时也是服务于完全分散化的资源需求。而组织形态也会随之改变为网络化与社群化。AI时代的到来使AI人才成为人才金字塔的顶尖人才,研发的工程人员是金字塔的中流砥柱,而普通大众则是金字塔的底层人员。换个角度从供给侧来看,普通大众提供了海量的供给资源,可以从资源的供给获取相应的报酬,同时也从由AI人才与研发人才的产品来获取资源。这样会形成一个新的社会稳态结构。

公司制是随着工业革命的到来的组织形态,公司制有其足够的优点,这也是公司制得以长期存在的原因。而公司制也会带来一定的弊端,这一制度以公司利益最大化为目的在供应链中对供应链上下游实行极度压榨,越强大的公司压榨能力越强。不管公司对外宣扬其生态体系建设多么好,对生态服务做出多少贡献,实质上也只是由传统供应链的双边市场压榨转为生态链的多方市场压榨罢了。

社群制则是人类社会更长期的组织形态,小到一个家庭,大到一个部落、一个国家,是从人类以来一直存在的组织形态。社群制的组织目标与公司制的组织目标则不同,社群制的组织目标更多强调的是社群成员整体利益最大化,所谓取之于民、用之于民。做的好坏暂且不讲,但宗旨是没有变化的。

未来IT服务形态的形成所带来的组织形态的变化,很可能是由公司制到社群制的融合形态。组织目标不再是组织代表的利益最大化,而是组织成员的利益最大化,而组织不再是一个封闭的体系,而是一个高度开放的体系。

任何人只要对组织目标有共识,就可以加入组织,贡献资源、索取资源,而IT服务是一个极度量化的服务体系,贡献与索取的量化很容易实现

也许,社会主义形态最先到达的领域是IT服务领域。


李爽,博纳云(BonusCloud)创始人兼CEO,云计算行业领军人,拥有10余年经验的资深云计算领域专家。曾任美团云总经理、阿里巴巴集团网络总监、百度系统技术委员会主席,历经云计算行业从无到有。李爽构建的博纳云旨在积极探索以区块链技术为核心的分布式云计算平台,目的是打造下一代的IT基础设施。

*本文由作者授权发布,如需转载本文,请标明出处,侵权者必究。


关于博纳云

博纳云是顺应万物互联时代的分布式云计算服务商,通过构造一个全球化的算力交易平台,能够将全球包括现有云计算、企业数据中心以及个人PC及终端设备的CPU/GPU/带宽等资源有效连接起来,集平台上千千万万个资源贡献者、平台使用者、应用开发者之力,提供超低价格、超大范围、超强算力的可信任的云计算平台服务,彻底改变传统的中心化云计算商业模式及资源分布结构。

官方网站:https://bonuscloud.io

官方论坛:https://bonuscloud.club

Facebook:www.facebook.com/BonusCloud.io

Twitter:https://twitter.com/bonus_cloud

电报群(英语):https://t.me/Bonuscloud

电报群(中文):https://t.me/bonuscloudcn

电报群(俄语):https://t.me/bonuscloudruch

QQ官方公告群(用于接收公告):540293288

官方1群(用于讨论):740788277

如入官方微信群,可加微信:bonuscloud917,备注“入群”

PHP7原生MySQL数据库操作

连接到 MySQL服务器

mysqli_connect(host, username, password [,dbname] [,port]);
– 参数:
host:MySQL服务器。可以包含端口号,默认值为“localhost:3306”
username:用户名。默认值是服务器进程所有者的用户名;
password:密码。
dbname:数据库名称。
port:MySQL服务器的端口号,默认为3306。
– 返回值:如果连接成功,则返回 mysqli 连接对象。如果失败,则返回 false。
选择当前数据库

mysqli_select_db(mysqliLink, database)
– 描述:一个数据库服务器可能包含很多的数据库,通常需要针对某个具体的数据库进行编程
– 返回值:如果成功返回TRUE,失败则返回FALSE
设置客户端字符集

mysqli_set_charset(mysqliLink, charset)
– 描述:设置默认字符编码
– 返回:成功时返回 TRUE, 或者在失败时返回 FALSE。
发送一条 MySQL 查询

mysqli_query(mysqliLink , queryStr)
– 参数:
query是查询字符串;
link是创建的活动的数据库连接;
– 说明:mysqli_query() 仅对 SELECT,SHOW 或 DESCRIBE 语句返回一个mysqli_result结果集对象,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysqli_query()在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。
– 注意:查询字符串不应以分号结束,和命令行模式下有区别。
从结果集中取得一行作为关联数组,或数字数组,或二者兼有

mysqli_fetch_array ( mysqliResult [, resultType] )
– 参数:resultType是一个常量,取值:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)
– 返回:返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
– 注意:本函数返回的字段名区分大小写。
从结果集中取得所有行作为关联数组、枚举数组、或二者兼有

mysqli_fetch_all(mysqliResult [, resultType ])
– 参数:$result_type是一个常量,取值:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)
– 返回:返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
– 注意:本函数返回的字段名区分大小写。
取得结果集中行的数目

mysqli_num_rows(mysqliResult)
– 注意:此命令仅对 SELECT 语句有效。
从结果集中取得一行作为关联数组

array mysqli_fetch_assoc(mysqliResult)
– 返回值:从结果集取得的行生成的关联数组,如果没有更多行则返回 FALSE;
– 注意:此函数返回的字段名大小写敏感。
取得前一次 MySQL 操作所影响的记录行数

mysqli_affected_rows ( mysqliLink )
– 说明:取得最近一次与 $link 关联的 SELECT、INSERT、UPDATE 或 DELETE 查询所影响的记录行数。
– 注意:如果最近一次查询失败,函数返回-1。当使用UPDATE查询,MySQL不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。
释放与结果集相关联的内存

mysqli_free_result(mysqliResult)
– 参数:mysqliResult为结果集对象。
返回上一个 MySQL 连接产生的文本错误信息

mysqli_connect_error()
– 参数:没有参数
———————
作者:Maybion
来源:CSDN
原文:https://blog.csdn.net/github_27314097/article/details/82421018
版权声明:本文为博主原创文章,转载请附上博文链接!