该不该造自己的轮子?
你在学习和写代码的过程中一定听过这个说法:不要重复造轮子,使用现成的类库就好。
一般知名的类库都是大公司开发并维护的,正确性与性能都有保证。自己再重新开发一个相同功能的类库,消耗时间、消耗精力、大概率做的还不如别人做的好。
我平时写文章时,也经常会遇到好的专栏与书籍,感觉已经有这么多、这么好的资料,这些就是好的轮子,没必要自己再写一个专栏了。无奈,内心总希望记录点什么,所以隐隐约约挺纠结这事。
一直以来都觉得,不重复创造轮子这个观点没毛病,从我的「不重复造轮子」系列总结就能看出;但作为程序员,依然对创造出属于自己的轮子有着强烈的渴望,那种成就感是无与伦比的美。
在种种纠结中,想明白了这事:有能力,必须创造自己的轮子。
为什么这么说呢?
首先,不亲自去造个轮子,就没法进步。
不自己去着手试试造个轮子,写个类库,怎么知道为什么自己写不出来?怎么知道与"优秀"相差多远?自己先来一个,哪怕第一版都搞不出来,但往往是硬着头皮做下去,渐渐会发现可以看懂优秀的作品为什么优秀,曾经的遥不可及也不再是无法达到。
不建议你自己去造轮子,就是觉得你能力不够,而恰恰能力就是在一次次尝试和失败中锻炼出来的。停止尝试,也就停止了进步。
其次,如果没有自己的轮子,恐怕将会无路可走!
美国禁止华为高端芯片的采购、HashiCorp 不允许中国境内安装和部署名下的开源软件(其中包括 consul-微服务注册发现配置中心)等事件足以说明,没有自己的轮子可能被会被掐死。
我们也可以反过来思考一下,那些看起来优秀的轮子就真的是最合适吗?
举个简单的例子,JDK 中的 ArrayList 经常使用,再熟悉不过了吧?如果业务场景使用 ArrayList 第一次只需要存储 3 个元素,第二次需要存入 10 万个元素,那 ArrayList 默认的扩容机制还合理吗?
有界队列 Disruptor 为什么比 ArrayBlockingQueue 性能高?它为什么不使用数组,而是创建了自己的轮子-RingBuffer。
追求极致性能的数据库连接池 HiKariCP,它为什么没用 ArrayList?而是创建了自己的轮子-FastList。
世上就没有一样的轮子,最合适自己的,一定是出自自己的手笔,除非愿意将就。
【Java面试题与答案】整理推荐
- 基础与语法
- 集合
- 网络编程
- 并发编程
- Web
- 安全
- 设计模式
- 框架
- 算法与数据结构
- 异常
- 文件解析与生成
- Linux
- MySQL
- Oracle
- Redis
- Dubbo
该不该造自己的轮子?相关推荐
- 一些造好的轮子-视频下载工具
一些造好的轮子 视频下载工具 -- 科技改变生活 几个很好用的工具推荐及一些基本的使用方法: YOU-GET You-Get是一个基于Python3的下载工具.使用You-Get可以很轻松的下载网上的 ...
- 使用vue造个小轮子vue-asign,canvas生成电子签名,满足需求
优化需求,内容是生成电子签名,发现好多个项目都重复写,于是打算自己造个小轮子,名字就叫vue-asign,说明文档如下: vue-asign Canvas 生成电子签名 支持vue2.vue3 演示d ...
- swift开源项目精选(已经造好的轮子)
Swift 开源项目精选 站在个人的角度,并基于<Swift 语言指南>,针对开源项目做了一个甄别.筛选.当然,由于个人能力及涉足范围所限,还远远不够,其中肯定有偏颇及不足,还望同学们多多 ...
- 徒手造了个轮子 — 实现epoll
Epoll是Linux IO多路复用的管理机制.作为现在Linux平台高性能网络IO必要的组件.内核的实现可以参照:fs/eventpoll.c . 为什么需要自己实现epoll呢?现在自己打算做一个 ...
- tkinter 利器--------pmw模块,里面有很多造好的轮子,有详细的demo
2019独角兽企业重金招聘Python工程师标准>>> tkinter 利器--------pmw模块,用pip就能下载最新版本 转载于:https://my.oschina.net ...
- 经常造轮子的 AI 工程师水平通常不会太差
题图 | 邵姺画 引子 | 造轮子还是不造轮子,这是一个问题 理查德·费曼教授去世后,人们在他的黑板上发现了 What I cannot create, I do not understand 这句话 ...
- 你们应该听说过”w8ay“这个ID吧!一个喜欢造轮子的小子
他是w8scan.w9scan.w11scan.airbug的作者.他也是hack-requests的开发者.他在2018 Kcon以学生的身份展示了"自动化扫描工具".他也在Fr ...
- 造轮子是什么意思_程序员为什么热衷于造轮子,升职加薪吗?
作者:小傅哥 博客: https://bugstack.cn- 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 哪个架构师没造过轮子? 你想过这样一件事吗? 是先具备能力在安排职位,还是先安排 ...
- 因为造轮子,我一个月就转正了 | 原力计划
作者 | Baldwin_KeepMind 责编 | 伍杏玲 出品 | CSDN博客 2019年6月,我通过社招入职现在所工作的公司,理论上应该有三个月时间的试用期,只有试用期表现良好我才有机会转正, ...
最新文章
- Winform开发框架中工作流模块的业务表单开发
- vivado与modelsim的联合仿真(二)
- 简单JS实现走马灯效果的文字(无需jQuery)
- 数字图像处理:第二十章 视频编码与压缩
- go与JAVA差异_20190312_浅谈gojava差异(二)
- Mac系统下安装PIL
- 每日两SQL(7),欢迎交流~
- 前端学习(3124):react-hello-react之对props进行限制
- Linux安装samba的过程,Samba安装全过程
- 比较三个数大小PHP代码,php 写程序求三个数的最大值
- Atamai 手术导航软件开发包
- Simulink与Flightgear联合仿真详细教程
- Linux NVMe Driver学习笔记之6:Admin Queue与Blk-mq初始化
- 向量叉乘的线性性质 几何解释
- 杂志订阅系统c语言,杂志订阅管理系统
- KTL 一个支持C++14编辑公式的K线技术工具平台 - 第五版,支持sqlite3,全新sqlite3zz语法超简单使用sqlite3; 添加方差等统计函数。
- 新型工业路由器,为进入智能工业时代加快步伐
- 计算机论文致谢词范文500字,论文致谢词范文500字(精选6篇)
- Markdown写接口文档,自动添加TOC
- 关于Redis出现“java.io.IOException: 远程主机强迫关闭了一个现有的连接”的一次排查