zoukankan      html  css  js  c++  java
  • 如何造轮子

    作者:UCloud云计算

    链接:https://www.zhihu.com/question/407370305/answer/1356357699
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    首先,看源码。

    想要拥有造轮子的能力至少你得熟悉别人的轮子,源码的阅读是不可缺少的。源码并不是那么的高高在上,可以先从HashMap、HashTable、ConcurrentHashMap、Vector、ArrayList等集合框架的源码入手,读懂了之后尝试着手写,这些东西事实上读懂一个其他的都是分分钟的事情。像Hashmap实现原理这个问题可以说90%以上的公司都会问,而如果只靠背的话很容易就忘了,自己确实阅读过源码并且手动实现过那就可以记住一辈子。

    接着,封装工具类。

    所谓框架只是个概念,比如早期的JQuery和Bootstrap就称为框架,而现在只能称之为库。而前段中库和框架的关系就类似于java中工具类和框架的关系。封装工具类就是造轮子的基础,或者说封装工具类就是在造轮子。在对源码熟悉并且代码规范和思想有所了解之后,就可以自己去封装工具类了,这里推荐两个工具类:StringUtils和ReflectionUtils,当然后者在网上可能搜不到,因为这是我自己造的轮子。前者是对lang3的StringUTils进行增强,如trim方法不能去除特殊字符的空白符,StringUtils没有提供脱敏方法,没有中文钱数转英文方法等等,这就是这个轮子的缺陷,那么就需要去完善它。而后者就是常用的反射框架,通过对此的封装,能加深对反射的理解,而反射则是一切框架的基础。

    工具类封装的多了,渐渐地就开始由小到大,那么你就可以开始阅读框架源码了,这里建议从mybatis开始,这是最贴近我们的一套框架,通过阅读mybatis框架的源码,加深对其的理解,为其写中文注释等等。最后通过mybatis的插件机制自己写一个分页插件。这是重复造轮子的过程,但是它并不是没有意义。通过一个分页插件,就能加深对MappedStatement、Executor、ResultSetHandler等等等的理解,这对后期自己完全手写mybatis是极有帮助的。

    最后需要提到的是,上面的那些过程一定不要忘记发博客。

    上面仅仅是通过重复造轮子去提高自己的技术水平,而发博客、开源到github则是提高自己的名气。事实上写博客也是将自己的知识点向外输出的过程,只有向外输出了,才能记得更深刻,这也不失为一种学习方法。 

    最后需要说的是,重复造轮子并不是不可取,相反我非常建议多造造轮子,这是对自己技术的磨练,也是更深层次的学习。

  • 相关阅读:
    OpenCL 获取Program信息
    匈牙利算法
    经常使用的webservice接口
    庞果网之高斯公式
    T4 生成实体和简单的CRUD操作
    zTree实现地市县三级级联报错(三)
    AlphaBlend
    cocos2d-x 3.0 事件处理
    rman多通道全备份脚本
    Linux下的简单好用的计算器bc
  • 原文地址:https://www.cnblogs.com/lanyuejiagou/p/13895559.html
Copyright © 2011-2022 走看看