差不多把 Java Web 轮子撸圆了

huaji 说起撸轮子,我目前有一些心得,因为我吭哧吭哧在同时写三个,说起写轮子的动机,其实就是为了证明一下自己的能力,写了之后才发现,我原来还阔以。

先看一下我在写的轮子列表:

aquiver

这是个 mvc 框架,基本的 mvc 功能都支持了,代码呢改过好多次,也重构过好多次。README 没咋更新,所以看 README 会觉得这个轮子很简陋。

sqlstream

这是一个比较简单的 SQL DSL 风格的库,我参考 mybatis-plus 的 API 设计了一个版本,目前是写了一半,但是肯定是有在更新的,只不过进度不快。

apex

这个一个简单的 IoC 容器,事实上我想实现很多功能在上面,但是也是慢慢来了,因为我大部分的时间都用来写 aquiver 了。

我准备花一年的时间去不断完善,看看我的 GitHub 的 commit,希望可以在明年的时间都发布一个正式版,然后,我会试着去开源中国面试一下huaji ,因为那边对开源的态度貌似挺重视的,如果我为此能找到一份不错的工作也是挺好的。

607.png

我得到了啥

码哥给我的建议

对于我来说,码哥是我职业生涯中重要的人,他在我很多次表达迷茫的时候都愿意不厌其烦的告诉我他的很多经验,作为一个编码超过 16 年的技术专家来说,愿意如此不厌其烦的教导我也是我想坚持下去的原因,其实写轮子也是迫不得已,因为公司没啥业务可以做,而我不想像前两年一样抑郁个两年去浪费时间,所以,至少学一些东西让我能充实一点最好。码哥也是比较支持的,但是他还是推荐我去写业务,不然就去造脚手架。

或者,开个微服务的项目去好好维护,对于那些企业来说,熟悉这些技术栈比你熟悉怎么造轮子性价比高的多。

不过,这些都是后面的事情了,因为业务接触的不多,我最多只能写写 xx 管理,或者拿 SpringCloud 写 xx 管理这种滑稽事情huaji

但是其实我有一个大胆的想法,既然轮子都能自己造了,微服务的轮子难道不能造吗?造出来那不是更靓仔。

码哥作为这方面的专家造的轮子比我写的代码还多,他也和我说过,造轮子可以,麻烦你造个难度大点的轮子,最好是分布式的,听起来就牛逼,不然我没啥兴趣。

不过这也是后话了,说不定也有可能明年我再发一个帖子来说说我为什么放弃写轮子这件事情。或者说写完一个完善的 Web 框架是什么样的体验也说不定。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2766 引用 • 8034 回帖 • 767 关注
  • 框架
    40 引用 • 334 回帖 • 1 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    124 引用 • 788 回帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone48938 3 8 赞同
    捐赠者

    我大三参加校招(实习)的时候把我写的几个轮子放在简历里了,有 MVC 框架,有网络库,还有其他一些乱七八糟的东西。结果面试官大多数问都没问,基本上只关注项目经历那块。唯一一个问了的还是一个名不见经传的小公司的面试官,问我有没有将这些东西应用于生产环境,我说只有那个 MVC 框架用了,用在学校的一个项目上,然后就没后文了。

    后来进了公司实习,才发现,公司有专门的基础架构部门,负责造轮子并应用于公司的生产环境。其中哪怕是一个很不起眼的小组件,可能经历了半年多的开发周期,凝聚着数十人的心血,承受着成百上千个测试样例的考验。这就能解释为什么面试官看不上应聘者在简历上面写的那些充其量只能算作玩具的开源项目了。

    那时候我就问自己,作为一个初涉行业的菜鸟,我为什么要搞开源项目?

    希望能够彰显自己的能力,扩大个人影响力,让自己应聘的时候脱颖而出?显然是做不到的,甚至有可能适得其反(这让我回想起知名网红程序员“轮子哥”,他在微软做面试官的时候最讨厌的就是应聘者在简历里塞一堆 GitHub 上面的垃圾项目,遇到这种他直接甩一道算法题,答不出来就滚蛋)。

    希望自己的项目能够帮到别人?在某种程度上确实有可能,但作为新手菜鸟,做的项目从各方面都比不上业界流行的开源解决方案。别人为什么要用我的项目,替我踩坑,而不是用成熟的方案呢?

    其实到这里答案已经很明了了。我在业余时间搞开源、造轮子,练手、锻炼自己的能力是一方面,但最主要的还是图个开心。这就好比职业足球运动员可以踢比赛赚钱,普通人也可以踢球来娱乐和锻炼身体,虽然心里知道,自己永远不可能成为职业运动员。

    当然,我还是本着认真负责的态度对待自己每一个开源项目。既然花费了心血在上面,就一定要善始善终。中规中矩的代码风格、完善的文档、丰富的测试样例等等,这些都是必不可少的。至于有没有 star,有没有人在用,这些却是无关紧要的。当未来的某一天,不管自己站在什么位置,是 CTO 也好,转行的报废程序员也好,回首看看自己成长的足迹,也就可以心满意足地向那段岁月告别了。

    1 回复
  • Ever 1 赞同
    作者

    其实最初的原因就是为了累计代码量,代码量没到一定程度没办法有啥质变,其次是为了实现自己的想法,让所学知识得到运用,我觉得都是非常有意义的,希望各位都可以有自己的轮子。

  • Ever
    作者

    huaji 统计了一下 aquiver 的代码量,去除 License 声明,大概 5000 行左右。huaji

  • Kenn

    学校里也这样,努力的人简直不要太努力,而不努力的人简直不要太丧。两极分化极端严重,好像这两极有巨大的吸力,把属于他们的人集中聚集起来,中间只剩下极少数佛系人群。

  • ghostsf
    捐赠者

    越努力越幸运 加油哦~

  • yazong

    加油!你就是这个社区最靓的仔仔~~😋

  • 233333
    捐赠者

    doge 靓仔,撸这些玩意的时候 有没有教学笔记啥的,Java 新手想学

    1 回复
  • Ever
    作者

    huaji 当然是没有的,我基本上是把别人的轮子 clone 下来,然后看代码,把思路理清,然后试着抄一抄,轮子能跑起来之后开始加功能,然后开始重构 ,重构的时候因为想想着怎么有足够的扩展性,所以设计模式是跑不了的,代码量也起来了。

    我建议还是直接上手写比较好,你写出来了就发现没那么难了,比如我这个靓仔。

    写出来了之后,人有自信了,开始意识到自己的轮子与成熟轮子之间的差距,就开始加功能,重构,满足不同的需求,开始做压力测试,保持测试覆盖率,开始分支开发,学会用 issues 记录问题。

    这些,都需要你动手真正去做了,才能得到。

    所以别想那么多,先去做吧。

请输入回帖内容 ...