你在学习和写代码的过程中一定听过这个说法:不要重复造轮子,使用现成的类库就好。


一般知名的类库都是大公司开发并维护的,正确性与性能都有保证。自己再重新开发一个相同功能的类库,消耗时间、消耗精力、大概率做的还不如别人做的好。


我平时写文章时,也经常会遇到好的专栏与书籍,感觉已经有这么多、这么好的资料,这些就是好的轮子,没必要自己再写一个专栏了。无奈,内心总希望记录点什么,所以隐隐约约挺纠结这事。


一直以来都觉得,不重复创造轮子这个观点没毛病,从我的「不重复造轮子」系列总结就能看出;但作为程序员,依然对创造出属于自己的轮子有着强烈的渴望,那种成就感是无与伦比的美。



在种种纠结中,想明白了这事:有能力,必须创造自己的轮子


为什么这么说呢?


首先,不亲自去造个轮子,就没法进步


不自己去着手试试造个轮子,写个类库,怎么知道为什么自己写不出来?怎么知道与"优秀"相差多远?自己先来一个,哪怕第一版都搞不出来,但往往是硬着头皮做下去,渐渐会发现可以看懂优秀的作品为什么优秀,曾经的遥不可及也不再是无法达到。


不建议你自己去造轮子,就是觉得你能力不够,而恰恰能力就是在一次次尝试和失败中锻炼出来的。停止尝试,也就停止了进步。



其次,如果没有自己的轮子,恐怕将会无路可走


美国禁止华为高端芯片的采购、HashiCorp 不允许中国境内安装和部署名下的开源软件(其中包括 consul-微服务注册发现配置中心)等事件足以说明,没有自己的轮子可能被会被掐死。



我们也可以反过来思考一下,那些看起来优秀的轮子就真的是最合适吗?


举个简单的例子,JDK 中的 ArrayList 经常使用,再熟悉不过了吧?如果业务场景使用 ArrayList 第一次只需要存储 3 个元素,第二次需要存入 10 万个元素,那 ArrayList 默认的扩容机制还合理吗?


有界队列 Disruptor 为什么比 ArrayBlockingQueue 性能高?它为什么不使用数组,而是创建了自己的轮子-RingBuffer。


追求极致性能的数据库连接池 HiKariCP,它为什么没用 ArrayList?而是创建了自己的轮子-FastList。


世上就没有一样的轮子,最合适自己的,一定是出自自己的手笔,除非愿意将就。



更多相关文章

  1. SpringBoot整合Netty搭建高性能Websocket服务器(实现简单的聊天功
  2. 由12306.cn谈谈网站性能技术
  3. 我就改了一下参数,竟然让Tomcat和JVM的性能提升了两倍!
  4. 常用性能监控指南
  5. jvm系列(5)性能监控工具
  6. Linux性能优化(一)——stress压力测试工具
  7. Linux性能优化(二)——sysbench压力测试工具
  8. Linux性能优化(四)——BCC性能监控工具
  9. Linux性能优化(三)——sysstat性能监控工具

随机推荐

  1. Android(安卓)OpenGL ES(五):GLSurfaceView
  2. 【Android】入门案例(二)——JDBC连接MyS
  3. {转}实现谷歌Android摄像头拍照 2010-06-
  4. [Android]Fragment生命周期
  5. android应用程序跳转到系统的各个设置页
  6. (转) Android的Window类
  7. Android小项目——简单计算器的实现
  8. Android监听WIFI网络的变化并且获得当前
  9. Android使用XML全攻略(1)
  10. [安卓]Android(安卓)Developer Tools(Ecl