9 1

不翻墙安装grpc

1.mkdir -p $GOPATH/src/google.golang.org
2.cd $GOPATH/src/google.golang.org
3.git clone https://github.com/grpc/grpc-go.git grpc
4.git clone https://github.com/google/go-genproto.git genproto
5.mkdir -p $GOPATH/src/golang.org/x
6.cd $GOPATH/src/golang.org/x
7.git clone https://github.com/golang/net.git
8.git clone https://github.com/golang/text.git
9.go install google.golang.org/grpc
8 26

如何长时间高效学习?

如果你有学习焦虑症,希望这篇文章可以给各位带来一点点的帮助。

时 间

如果你想要在某个知识领域成为the best of the best,你必须要花至少10000小时实实在在的练习和学习。然而,Josh Kaufman却推翻了这些观念,提出了你只需要20小时就能不错的掌握一个全新的知识和技能

如果我们能在最初的20小时内熬过初学阶段的不适感和挫败感,我们其实能很轻松地掌握一个全新的领域。哈!20个小时=2个沉睡的夜晚=1周娱乐时间的总合,听起来的确很不错。

嗯,我的意思是用20小时学习一门大学教材

案 例

高效利用时间的案例:学更多更多的知识,做更多更多的事情。简直是知识、精神双饱满!!斯考特·杨(Scott Young)12个月之内,自学完成了传说中的MIT计算机科学课程表的全部33门课,从线性代数到计算理论。按照他的进度,读完一门课程大概只需要1.5个星期。这是我见过的大学生里在学习方面活得最充实的人。


关于他的学习方法 warfalcon 评价如是


1、每天学习10小时,10天左右就要考试一次,并通过,这个学习效率非常高,更不用说重复了33次。在学习一门新的知识时短时间集中注意力不难,但持续一段时间之后,如果做不到很好的放松,只要持续二、三个月左右就会达到一个瓶颈,理解能力和心理状态无法继续,这个瓶颈会重复出现,就象考研时很多人前几个月都能坚持下去,但到6、8月之后就无法坚持。重复三次左右会面临一个临界点,度过这后就很容易继续了

2、刻意练习没有“寓教于乐”这个概念。曾经有个著名小提琴家说过,如果你是练习手指,你可以练一整天;可是如果你是练习脑子,你每天能练两个小时就不错了。高手的练习每次最多1到1.5小时,每天最多4到5小时。没人受得了更多。一般女球迷可能认为贝克汉姆那样的球星很可爱,她们可能不知道的是很少有球员能完成贝克汉姆的训练强度,因为太苦了。

可实施性

“在学习一门新的知识时,短时间集中注意力不难” + “(刻意练习)高手的练习每次最多1到1.5小时,每天最多4到5小时。没人受得了更多”——结合我们20小时学一门教材的目标,可以得出一个结论:

“我们进行的不是严格意义刻意练习,我们的强度也没有那个国外小子那么高,而且一轮下来只要20小时,即便是用刻意练习的方式进行,也是可以接受的。”学完一科,我们可以进行休整放松,不用严打紧逼。而且就我个人而言,一天高效学习时间安排在八个小时左右,是可以执行的。

但是,要保证利用好八个小时的高效时间。

如何保证高效利用好时间

学习仪式感

人,藉由这种仪式带来的仪式感,来给自己一种强烈的自我暗示---------这种自我暗示能够使自我变革,把自己的专注力、反应能力、运动能力迅速提升。


为了保证高效时段得到利用,我把每一次学习当成月考甚至高考一样的对待。 为了高考你会提前准备什么? 物质准备:吃饱穿暖 精神准备:考前睡眠充足 知识储备:复习再复习 在高考之前,脑海里,我们已经把在考场上的表现重复了多遍。

再来看看,我是怎么为一次高效学习进行仪式感建立的:

物质:水、巧克力、计算器、文具。在正式学习之前,我会在桌上一字排开,以防临时需要某些东西时手忙脚乱去到处翻。 精神:在前一天晚上,我就想好第二天又要进行高效学习了,所以我会安心睡去,而且如果你已经在前一天高效学好的话,会在一种满足感和新的期待中睡去。 时间:比如,八点是我的正式学习时间,我会保证八点之前提前赶到那里,坐在椅子上调整出最舒服的学习姿态。

提前半个小时到达学习现场,我会做以下工作来建立仪式感:

仪式第一步:启动

1、把准备好的物品摆在桌上。 2、深呼吸一口气,然后做眼保健操。 3、闭着眼按摩太阳穴一个八拍。 注:眼保健操的第三个八拍和第四个八拍互换,多年的眼保健操经验告诉我,原本第四个八拍(轮刮眼眶)做完之后,眼睛睁开是会一片模糊感,眼液汪汪,十分不舒服。(ps.重新排版此文的时候我才发现,对于眼保健操我也是蛮有见解的嘛!!!哈哈哈) ** 仪式第二步:预热**

翻看即将在要来到的两个小时之内需要学习的内容,心里有个大概。我会多浏览几遍某些重要的概念以及例题,但是我不会把这个活动当做是我的正式学习的过程。

就好像你考试之前翻书,多看几遍重难点考点只是为了考试更好的发挥,而不能把这个过程计入考试本身一样。我现在做的活动,只是为了等一下正式学习更好的强化效果。

仪式最后一步:静心

在八点之前的一分钟,我会盖上书本。静静等着一分钟的流逝,八点钟一到,就带着喜悦感平静地翻开书本。因为有了那么多前戏的酝酿,你都不知道我多么的期待这么一次高效的学习的来临啊。

大学学习的方法千差万别,比如,有人有能耐能泡老师透到题,或者被老师泡也能泡到题,这种做法我认为是最高效的,有了考试题目就只需要锁定知识点夺取高分。

这种做法我十分欣赏,但只有一点我不喜欢,那就是逃避了学习过程,没错,我也要考高分,但我只想踏踏实实的通过正常的学习完成这个过程。不过,我的踏踏实实要是和很多人一样一章一节的看下去,那就是侮辱我自己了,因为那样我会看不到最后,就止不住困倒在书上了。

我个人的方法就是对这个踏实过程的一次优化,让自己在持续反馈之中达成纯20小时高效学习一门学科的目的。

正式高效率学习1.1

第A步

第一遍阅读 1、看目录:知道这一章重点在哪一节,这一节大概用来解决什么问题 2、看章后习题,圈出术语:这个术语基本上就是本章的知识点了 3、根据术语去书中划概念和术语解释:如果有些术语不能理解,请使用网络搜索术语名词解释 4、术语理解后带着术语去理解书中的图表和例题以及案例

为什么不首先直接去阅读文字呢?

对此,我还当真有些个人的强烈认知:理工科的书在我看来是不能谈「理解」这个词的,尤其是工科的书,我认为就是一份份的说明书,讲机械那就是机械的说明书,讲制图那就是制图的说明书,这些说明书和商品说明书没有本质区别,只是它们通过系统化的学术语言衔接成书、成册——但本质上一本说明书的集合。

洗衣机说明书有什么作用?那就是告诉购买者如何操作、如何保养、注意事项。平时我们会嘲笑某些人看不懂说明书,其实不是对方理解力有问题,而是我们市面上多少说明书简直垃圾,写的不够明确、简洁,导致阅读者操作困难。

同样,我也认为我们的教科书并不都是一本本优秀的说明书合集,因为它们的书写内容是由个人写就,说明的操作细节根据他个人的智识水平书写,他并不曾统计所写的每一句话是不是让读者看起来更加容易形象的理解。

我是说,不好的说明书才需要额外的理解,好的说明书只需要我们按着步骤流程一步一步操作就可以达到目的,只有书写不明的说明书才考验读者额外的理解能力。

从某个意义上来说,你学习某一本书,如果看不进去,可能不是你理解有问题,你应该换一本书。我们什么时候讲理解能力?中文阅读理解,英文阅读理解,文学作品,“我爱你,你懂我心吗?”,那是中文,英文。

感性表达的时候需要你的理解,文人思维表达的时候需要你的理解,读哈姆雷特的时候需要你的理解,需要一千个读者有一千个哈姆雷特的理解。讲机械机构的时候如果你说不理解,那多半是书本表达的问题,不是你理解力有问题。

可以长高宽表达的东西,你说你理解它干嘛?难道某个机械结构脉脉含情的给你传达某种信号,需要你理解她的弦外之音!?

以上是对教科书的微词。我意思是这样的,大学本科教材有可能的话去换几本看看,可能有比较容易“理解”的书呢?中国大学教材烂,这也是为什么国外大学教材受欢迎的原因。

但是,对于多数人而言,外文教材好啊好啊,其实都是喊在嘴巴上,看我这篇文章你都嫌长,你绕个远道去看外文教材?网上的公开课也比中国教授讲的好呀!更何况,多数人外文的书是看不懂的,那么,就踏踏实实的看你们学校的教材,照样可以学好,此时才显得我的这个建议之有含量。

这个建议是这样:

看书看不进,就牢牢抓住书本的例题、案例、图表。因为例题讲具体情境、图表具有可视化、案例就是讲具体的运用——这些都比理解文字描述容易的多。而且,例题里面包含了对关键知识点的运用,案例和图表其实都是为了辅助你理解正文文字内容的。

所以,只要我们配合最少量的文字看懂了案例、图表,就达到了对知识的了解,接着我们再去看例题就知道了知识运用场景,之后,我们再反复地做题目,从而达到了对知识点的掌握。

这里还给你明确指明了什么叫了解、知道、掌握,课本往往会有学习要求,比如本节达到“掌握”的程度,而第二节只要“了解”就够了。那什么是“了解”、“知道”、“掌握”呢?光看这几个词汇,你是不是感觉在学习过程中,还是难以把握好“理解”等词汇的度?

从刚刚前段的描述中,其实已经给你活生生明确了呀:

1、“配合最少量的文字看懂了案例、图表,就达到了对知识的了解”。 2、“接着我们再去看例题就知道了知识运用的场景”。当然,这里的知道是对于“知识运用场景”的知道,如果是“知道某种知识”,那我给的定义是:当我提起某专有术语名词、某理论的时候,你能想得起来有那么一回事。

比如我说到隔壁小王出轨了,你说“哦,那个小王八啊,我知道”------那你就真的知道了,也许对于这种男女之事,你知道的还要更多,可能已经达到了解的程度。在这个男女例子的场景中,你表现的是一个好学生的角色——主动掌握的东西不由自主地就比“课标要求”的多得多。

3、“我们再反复地做题目,从而达到了对知识点的掌握”。 4、如果我们用所学知识去解释问题、或者直接体现在实际操作中,那就是运用了。

以上就是我们需要尽量弱化教材文字阅读的原因。

学习请以一章为单位,因为拉长战线会拉长反馈周期,对于学习实际效果不利。如述进行完以上的步骤,读完一章后,可以轻松休息片刻。


(真他妈好长啊,小绿人来陪你中场休息,来和我左三圈右三圈吧~)

在知乎一篇回答中,我提到,我会在这种休息间隙做俯卧撑:

有没有人认为健身必要但同时觉得浪费时间?工作间歇、课间休息期间,眼看四下无人,哗哗哗,30个俯卧撑一两分钟内已经完毕,我擦,不仅劳逸结合,三头肌一个月内爆结实!!!

放心:男孩子的话,这30个俯卧撑放心做好了。虽然方法是我提供的,但是我不向你要30个俯卧撑的版权!

这是我要提的另一个重点: 身体能量和情绪能量


学习过程中,比如在图书馆学习,我见到很多人在学习过程中是没有补充能量的,当然也有人吃些小吃和零食,但这个和我所说的能量没有屁毛的关系呀,多数人正式的能量补充时间是中午时段的午餐,在我看来,对于一个有志于高效学习的学习者,只有午餐一个常规性能量补充时段,显然是严重不够的。

能量补充:

1、身体能量。精深练习的人最多达到1个小时1.5个小时,这是很累的,也就是说,会消耗大量的能量。所以,你得需要及时补充能量。两个小时的高效学习期间,分为两段,一段五十分钟左右,中间休息,这个时候就可以补充能量。

所以,巧克力就派上用场了。人和人千差万别,原因之一就在于人与人吃的方式不一样。身体的直接能量是葡萄糖,它把葡萄糖当资金一样运用。当身体能量不足时,首先剥夺的是心智能量,这时补充一些糖类(功能性饮料、奶昔、蜜水、果汁都是很好的能量来源),就会精力高涨,恢复冒险精神以及能够进行更加冷静的思考。所以,巧克力是我个人选择。为了防止做广告,我绝不会告诉你是只是高力士牌而已……

2、情绪能量。很多人不知道情绪也是一种能量吧?一对夫妻,两个在公司都拼命工作,但一回到家里就经常吵架,是他们脾气不好喽?另外有对夫妻,下班很早,夫妻两个经常甜蜜去逛街么么哒,他们的脾气就好了?可是,这时候我告诉你,他们其实就是同一对夫妻,你又怎想?

为什么这样?这是——因为拼命工作不仅仅需要物质能量,而且繁杂的工作在白天还消耗了他们大量的情绪能量,老板多给你任务,你心里不满意,你能表现吗?是不是没有表现出来呀?

对呀,你没有表现出来,你压抑了心中的不满。压抑这个不满的情绪用什么?答案的确是物质能量-----因为身体时时刻刻都要消耗它,但是还不够。

因为还有一个事实:压制某一刻某一时的不满情绪,其实主要消耗的是情绪能量。那这样导致情绪能力下降,导致自控力下降,回家失控可不就吵起喽?

是的,情绪能量需要补充。

平时还有这样的例子,比如我决定跑步,开始信心满满要跑一个月,结果没有几天就懈怠了,不是累了,而是情绪上感到疲劳了,产生厌倦感了。

这时候,解决情绪疲劳,有一个方法:那就是放松。

听音乐吧,听好听的音乐,在这里,我要提一个建议:在经济条件能承受的范围内,尽量买一根质量超好的耳机。羞涩的说,我有一根了,音效超级棒!同样,有可能就买一台超棒的音箱……这是和丁元英学习的。(《遥远的救世主》的男主,电视剧是个人超级推荐的,个人认为是一部比原著好看的老电视剧。)

前面我也说了,还可以做运动。我看到某些办公室里面有健身器材,相当羡慕,不过作为学生,我只能四下下无人,那一段看来还得再引用一遍,反正是我自己的版权:

俯卧撑 有没有人认为健身必要但同时觉得浪费时间?工作间歇、课间休息期间,眼看四下无人,哗哗哗,30个俯卧撑一两分钟内已经完毕,我擦,不仅劳逸结合,三头肌一个月内爆结实!

俯卧撑随便做,不收费!

解决厌倦感,我也有一个办法:

那就是,完成规定任务量之后,在某一个热情高涨的时候索性中断学习。这边的需要强调一下,是完成规定任务量之后——中断这个动作是发生在整个学习的后期,而不是你学得一高兴就中断,你要是这么蠢,只能嫁给我了!!!


村上春树跑步几十年,我最喜欢他的一点,是他会在跑步感觉良好的时候主动结束,这样他就会对第二天的跑步充满期待。因为人们对一些事情,总是能够清晰的记得事件的开头和结尾部分,在此基础上,我还要重点提醒的是。

当时间一长,我们能记住关于一件事物的主要部分其实是事物留给我们的感觉而不是事件本身。村上春树以充满愉悦感的时候作为结束点,跑步对他来说自然会是一种“愉悦感”能隔天连续的体验。这是很智慧的。

更多的例子我不想举例了,比如长篇写作中有许多作家也往往用这样的方法,比如写到高潮达到部分主动停下来,因为高潮情绪很强烈,在第二天接着创作是,就容易找回感觉,从而继续写下去。

事物的原因是一致的。所以,请你在晚上时段,即最后一个高效学习时段之后,接着再学习一段时间,正当感到愉悦、感到收获满满、感觉到学习仍然高效的时候——立刻中断你的学习,收拾书本滚回家找对象玩耍吧。

这么做的原因在于: 理论上,你一天的高效学习已经接近极限了,这只不过是高效学习的余温而已,所谓的高效更可能是感觉上的高效,再继续进行下去只会让热情从峰值递减。

如果你在对学习感到糟糕的时候结束一天的学习,我想说,你真是愚蠢,总是竭尽全力的消耗完自己。你的确是拼命学到乏力的程度了,没错,确实可以承认你真的很拼很努力。如果学习只是一次性交易的话,你这种努力就值得嘉奖;可惜,学习它是一个长期的过程。

每一次,当你学到无力时才恋恋不舍地结束,你用“精疲力竭”给一天的学习画上了句号,很令人感动。但是,你可知道,你每一天学习的最后体验点就是“累”!今天你是通过竭尽全力的方式学到很多东西,可是,当“明天”来临的时候,你对于“今天”关于学习的最后印象只会是“累”。

“后天”、“大后天”……每一天都以“累”的感觉最为结尾点-----那么这个“累”就是你带给每一个“明天”的学习痛苦感。这种”累“的感觉会累积变浓,因为每一天关于学习最后的那个感觉都会留下来,积累在你潜意识情绪认知里面。你因为一次次过度学习,从而导致了一次对学习的厌恶感的积累。——可笑你得不偿失!

而这正是多数人的做法:趁着精力十足拼命学习,学得无休无止,直到精疲力竭才罢休。哇塞,今天他妈的好有成就感,我学了满满一天,好有收获!——看到没,这种人很快会懈怠下来。

你看到他第二天,第三天可能就去看电影去玩耍了,他说,那是劳逸结合,他说有学就要有玩……从我独特的角度来看,此人每次如此耗尽一天“彻底”学习的后果是,在他潜意识印象中,会不断累积对学习的厌恶感,因为他总是在学习达到疲劳低谷点的时候才结束,自然有一种“学习使人疲累”的累积印象。

所以,他的那种学习方法不长久,因为一个人如果不是经过科学合理的调节,自然而然做到一个“精力旺盛”+“想要学习”的每一天,那是很少见的。当然,有时候他也会精力状态,但没有合理利用起来,居然还被他一次性刷爆了!

再者,他所谓的“收获满满”如果有一天遭受到打击,比如,现实证明他所学一无是处的时候,他心中就会倍加懊悔,懊悔当初那些拼命学习的付出是否值得,而这个懊悔的对象无疑是「学习」,他以为无用的学习使得他之所学无用武之地,在抱怨学错知识内容的同时不可避免的是他也会对「学习」行为本身产生一度的怀疑。

你看,一个人对学习的厌恶,对学习的恐惧,就是如此积累而来的。现在,你说,一个人对学习的厌恶是自然由来的吗?人是不爱学习的吗?人是可以热爱学习的,但是需要方法,需要遵从人的心理特点。

当我说到这里的时候,请你听从我的建议:无论是什么学习,如果有这件事情来说对你重要,也有必要,但是你却讨厌它,那么请你在讨厌的时候立马去学习它,学到你喜欢它的时候立刻中断它。

因为人都是追求快乐的,你学到情绪快乐的时候就中断,你的情绪就会带领你再来领略一次那种似曾相识的快乐,即便你的情绪不会主动带你来,也不要紧,因为你至少不会在心理上抗拒了。

当你看到以上的观念的时候,可以按赞和关注我了,因为我第一次在这里说这个东西,有幸,你也看到了。所以,是缘分,我谢谢我自己,这是一个多么好的观念呀,不敢说你在别的地方有没有见过,但是,在我的认知范围内,把这个观念用于学习,真是一种创造!

正式高效率学习1.2

第B步:回顾

看完一章之后,这一步简直轻松,一页一页翻过去,对主要知识点、概念,脑子里有一个回顾,知道这一章有讲什么内容。

第C步:做题

a计划: 找例题,做例题 (1)不看答案,能做多少就做多少,做完对答案,紧接着完整抄一遍标准答案 (2)去章后看看有没有会做的题目,有会做的就做下去 (3)没有就跳回来看第二个例题,方法一样——如此循环往复

以上流程,如果五个例题抄完仍然没有头绪,那么太好了,说明你还没有理解教材,或者你的基础不扎实,这个就更好解决了:进行b计划

b计划: 遇到这种阶段性的困难,只能加强对教材的针对性理解。在例题解答答案步骤中圈出那些重复出现的关键词以及章后题目含有的术语,再进一步去阅读相关知识点的概念、案例、图表。接着回来做题。如果不行,更加简单了:进行c计划

c计划: 能让你进行到b步骤的书,我有理由相信那应该是类似《固体物理》一类的教材了,其他弱弱的学科如电工等等等等,基本上不会让你做了五个例题、抄了五个例题,你连一点头绪都没有。所以,你的操作如下:放下书本,去热爱生活吧。

另外,我在送你一个礼物:当一本教材用如上的方式进行完毕,请你及时从网上寻找一份有详细答案的试卷做一次测试!

如果成绩达不到你心中的目标,请自觉决定安排时间重新学习、巩固、提高。这是对于自己有高要求的学霸说的。

这个测试建议实际上对渣渣具有更多现实意义:如果在测试中不及格,你需要重新加强课本的学习。以此,拯救了一大片期末会挂科的渣渣们。你总不至于在看到这个特意提醒的时候,还清醒而且坚定的要和期末考做一锤子买卖吧!?

要讲的话讲完了,前前后后花了好多是时间修改文字。另外在补充一下我按这个方法进行时的一般作息。

作息:

1、我一般6点30分醒来,写晨间日记。上面会写…… **A:心态准备 **我现在心情有点糟糕,还想睡觉,但是八点需要良好的心态来进行正式高效学习,所以,我必须振奋起来,加油! **B:行动准备 **为了确保八点正式高效的学习,我应该吃好早餐,天不冷的话,应该小跑一会儿,太冷的话,那就神伸懒腰好了,总之,要让心情愉悦起来~ **C:物质准备 **应该去买水、巧克力……”写着写着,就清醒了过来。我不确定刚刚起床要不要再床上像猫一样的坐着不动停留几秒,听说有利健康,不错,很有利健康,我的尝试是这样的:为什么坐着?躺在不是更舒服吗?——没错,我又睡了几个小时!----这就是好处吧吧吧。

反正就是此类日记记录每天重复差不多的唠叨,长时间的进行。我发现,这对于我来说,最大的作用应该是暗示的作用——或者说,我有意于使它培养出一种条件反射。我喜欢这样,因为我喜欢——简单的勾勒,不是很长。

我把笔记本放在床头,一起来,就里面写第一个字,“2015年……”之后就自然起来了,朋友,记住一条简单的惯性定律:静止的倾向于静止,运动的倾向于运动。不知道一件事情怎么开始才合适?先去做10分钟。不知道怎么和女孩搭讪?立马过去说一声:“你好!……”后面的你自然会接着说。动起来,运动的倾向于运动。我真喜欢这句话。

2、我也有睡过头的时候。 我看到有人因为一次计划的中断他就放弃了整个项目,我觉得他实在是愚蠢啊。比如我昨天打算早起学习的,可是济南雾太浓(刚刚接到济南大雾黄色预警,不妙啊),我以为是天没亮,结果晚起了两个小时。

我难道不学了?对的,很多人正是这样做的。如果他在睡过头到中午才起来,他就很懊恼,麻痹,一天就这样悔了,算了,算了,今天下午还是好好玩吧,明天一定要早起!——这真是愚蠢啊。

你没想到吧?第二天还是一样哎!长时间这样,效果很不好,你知道吗?当最后任务期限要截止的时候,你就焦躁不安了,你开始感叹时间他妈太快,自己不知不觉又荒废了这么多时间!……一连的情绪爆炸……哎。

晚起了,就接着计划一天可利用的时间就行了嘛……有什么大不了? 同样,长期的计划要是因为不得已有一天两天的中断也没有关系,接着进行就行了嘛!……有什么大不了?非要让一时的缺失造成长期的隐患?!

3、能量值爆发期 每个人的高能学习时间段可能不一样。但是我要强调一个词「预计」。观察自己长期的活动状态,我认为,预计自己能量爆发态出现在上午8~10,下午2~5点,晚上6:30~10点,一共八个半小时。

所以,我会为了这八个小时做了很多额外准备,比如,中午午睡就是必要工作;下午5点40左右,我可能会眯一会,这也是必要的工作;休息间隙用牛逼的耳机听喜欢的音乐,是必要的工作;个人爱好,俯卧撑也是必要工作;巧克力也是……

总之,都是为了保证这八个半小时的高效利用而准备(实际上达不到8个半,8~10点休息10分钟,下午2~5点休息10*2,晚上6:30到10点,10*2,因此学习纯时间是7小时40分钟)。

因为里面提到下午5点40左右的小睡,那个时候并不困,是为了防止晚上三个半小时产生疲劳而提前进行的小睡眠的。在疲劳来临之前休息放松是最好的缓解疲劳的方法,你没有听说过吗?你听说过,所以,我再一次提醒你而已。

ps.别以为这样学习苦逼,其实我是在极大愉悦度中进行的,伴随着强烈的仪式感,每一天都像朝圣之行。

** 最后是我的名言: 为了学习, 我今天有特意去买了一盒巧克力, 预计前途是一片光明。**

转自知乎,点击查看原文

8 25

记一次日志存储优化(mongodb)

背景

之前写的代码所有的日志都通过mongodb来存储和检索,目前硬盘200G已经使用了195G,监控一直报警。一开始通过精简已有日志中的字段,发现空间下降不明显。于是翻了下官方手册,刚好翻到mongodb的备份,想了想历史日志也用不着及时搜索,于是就备份了

备份命令
mongodump --archive=xxxx.archive --db db --collection collection
压缩备份
gzip xxxx.archive
写个脚本删除备份的日志
后续
备份恢复命令
mongorestore --gzip --archive=xxxx.archive.gz --db db
shell脚本

由于我的日志是按照日期分天存储,因此比较好导出,脚本如下

#!/bin/bash
a="mongodump --archive="
b=".archive"
c="--db php_log --collection "
for i in $( seq $1 $2 )
do
    collection="$3_$i"
    archive="$collection$b"
    $a$archive $c$collection
    gzip $archive
done

脚本比较烂,不要嘲笑😂

删除1/2日志成果

删除前:剩余5G 删除后:剩余95G 数据压缩包:5G 节约空间90G,不得不说mongo很吃硬盘啊(更吃内存)

6 14

使用tideways和xhgui搭建PHP性能分析平台

背景

一直想做个性能分析工具,在代码中埋点不但麻烦,还污染现有代码。一开始看到了xhprof,官方版本已经不维护了。后来看到了tideways可以做无侵入监控,变了解了下,官网地址

安装

参考官网:安装方法

安装后再/usr/lib/tideways文件夹下会生成各个版本的.so文件,找到你所使用的版本的扩展文件,拷贝到扩展文件夹,并将其加入到php.ini中。重启php-fpm,安装成功。

安装xhgui

英文版地址:perftools/xhgui 中文版地址:laynefyc/xhgui-branch

注意,xhgui依赖mongodb扩展,务必确保已经安装。安装完毕后修改xhgui/config/config.default.php相应的配置项。

mongodb使用的db默认为xhprof,可在xhgui中自行配置。 为mongodb加索引:

 > db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } )
 > db.results.ensureIndex( { 'profile.main().wt' : -1 } )
 > db.results.ensureIndex( { 'profile.main().mu' : -1 } )
 > db.results.ensureIndex( { 'profile.main().cpu' : -1 } )
 > db.results.ensureIndex( { 'meta.url' : 1 } )

xhgui nginx配置

server {
        charset utf-8;
        listen       80;
        server_name  xhgui.tccbest.com;
        root /xxx/xxx/xhgui/webroot;
        index  index.html index.htm index.php;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            root           /xxx/xxx/xhgui/webroot;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
            try_files      $uri = 404;
        }
}

访问xhgui.tccbest.com展示如下页面:

xhgui

应用nginx配置

将以下两行加入到项目的nginx配置中

fastcgi_param TIDEWAYS_SAMPLERATE "25";
fastcgi_param PHP_VALUE "auto_prepend_file={xhgui-path}/xhgui/external/header.php";

重启nginx生效

Next