Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • 青山常在,细水长流

    post by onelong / 2016-10-8 14:44 Saturday [工作]

    自从接触了golang的协程之后,开始对协程有了浓厚的兴趣,tx的libco,通过hook的方式,将原来的同步io,转换成异步的协程io,在网络方面确实有很好的表现。对于协程这个东西其实很多开源库都用相关的实现,所以并不是什么很神奇的东西,如boost,libgo,当然也要说一说基于libgo的libgonet了,总的感觉呢,libco会比较简单实用些,不过只支持linux,libgo支持linux和win,boost是全平台支撑的,但是它是一个通用库,不怎么好用。关于协程的实现很简单,主要是用ucontext来保存切换上下文,但是简单提供几个协程函数,很难用,http://blog.csdn.net/qq910894904/article/details/41911175 ,golang的协程库好用是因为在语言级支持,如“go xx()” 自动会在异步协程里面执行,同时还提供了一套消息机制Chanel,group等完成同步和通信功能。自己实现协程的话,要实现这一套通信机制比较麻烦,但是如果没有这一套机制,还不如用线程。协程和语言无关,java同样是有协程库的,只不过不是官方支持而已。据说后来的jvm thread和系统的thread是一对一的关系,所以只要有支持cpu切换上下文的函数,其实就可以实现了,作为在语言榜一直排行第一的java,肯定用在底层有提供这类的api的,就算没有协程,还有actor的设计模式。说了那么多,其实你会发现在工作的过程中,很少要自己从新设计一个公共库的,用好开源库就好了。协程也好,线程也好,线程池也好,很多开源库已经很稳定了,不需要开发人员去折腾了,折腾了也没有非常大的意义,知道原理用好就算精通了。虽然很多人要较劲,一定要自己实现一套,这样才能体现自己实力,但是很多时候折腾到半死,结果发现有很多问题,还不如直接用开源的,哈哈哈。研究开源技术,只是为了让项目的可控性更强,并不是为了在必要的时候抄一套来展现自己。在很多的面试的时候,面试官喜欢问题,假如让你重新实现某个开源库,你的流程是怎样怎样的?一个小公司小项目,其实怎样做都,性能都不会很差,还要重写开源项目?所以有些装逼的面试官才会问一些很奇怪平时都用不到的东西,工作主要是解决问题的能力。
    工作之余,我还是喜欢了解一些开源技术,偶尔会选其中的项目,看看源码,了解其原理,例如之前的dubbo。另一方面给自己积累一点东西,万一将来遇到类似的项目,可以少走弯路,迅速上线。学习很多时候是为未来准备的,现在用的很多东西,其实都是两年前积累的,就算现在不学,面对当前的工作还是没啥压力的,但是人要向前看,不管未来怎样,至少不应该浪费时间,至少留下点什么。学技术本身就需要坚持的意志,技术之路往往是寂寞的,很多时候没人帮助你,甚至都没有和分享。人的成长之路,自己本身就是最大的敌人,克服内心各种借口,坚持下去本身就不容易了,更不要说不断的突破自己,每天像打鸡血一样。
    青山常在,细水长流,累了烦了就放空自己,回到原点,重新开始。 放松不是放弃,休息够了还要想办法拿起来继续往前走。

    引用地址:
     

    我要评论