持续坚持原创输出,点击蓝字关注我吧

作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!????

目录

  • 一、前言

  • 二、我造过的轮子

    • 1. RPC 通信组件

    • 2. 编写JVM虚拟机

    • 3. 基于SpringBoot的分布式任务中间件

    • 4. 服务治理中间件

    • 5. Netty仿桌面版微信

    • 6. 还有很多造过的轮子

  • 三、造轮子升职加薪吗?

  • 四、有人反对你造轮子?

  • 五、总结

  • 六、系列推荐

一、前言

哪个架构师没造过轮子?

你想过这样一件事吗?是先具备能力在安排职位,还是先安排职位在学习?  ????什么?走后门,你出去!

就像我们上学考试、跆拳道考段、晋升答辩一样,都是先具备了可胜任上一阶段的能力,才给予相应的职位。所以,架构师造轮子从做程序员时候就开始了,只不过到了架构师阶段可以造出更好的轮子。

鉴于实际业务开发的紧急程度,不会允许你造轮子。但造轮子,几乎是每个程序员突破技术瓶颈的最佳方式。千万不要因为一句,不要重复造轮子的借口,给自己一个不学习的理由!

二、我造过的轮子

我可能是痴迷于造轮子!

了解小傅哥的粉丝可能都知道,我的第一份工作是写了两年的 C#,但为了不放下我写好的 Java,在工作之余就用 Java 语言把我能接触到到的项目,都用 Java 写了一遍,包括;串口打码机服务、中继器对接、PLC数据采集等等。

等到正式进入互联网后,像是为我打开了新的大门,这能接触到的知识太niao性了,盘它!来,看我造过的轮子

1. RPC 通信组件

  • 文章:手写RPC框架第三章《RPC中间件》

  • 源码:https://github.com/fuzhengwei/itstack-demo-rpc

  • 难度:⭐⭐⭐

  • 15年初进互联网,惊讶的发现原来两个工程之间还可以使用RPC通信,以前公司使用的还是http或者webservice,所以这部分知识给我带来了很大的冲击。为了能更明白的了解它,找到了一些git中的源码,像Dubbo、gRPC,进行学习。学着学着,就开始动手自己实现一次,实践的过程学到了大量的知识,包括;结合Spring开发中间件、自定义配置、主定义注解、切面拦截、Netty通信、编解码器、流量整形等等。这些知识也为我后续开发其他中间件,打下了一个很好的基础。

2. 编写JVM虚拟机

  • 文章:用Java实现一个JVM虚拟机

  • 源码:https://github.com/fuzhengwei/itstack-demo-jvm

  • 难度:⭐⭐⭐⭐⭐

  • 这是一个用不上的轮子,同时这么干可能有点虎????,整整写了一个月,写了几十万行代码,才能运行几个简单的HelloWorld。,因为我不想听别人吹着一些理论词忽悠了我的编码生涯,也不想看几本不能实操落地的书就感觉学会了。所以,我才愿意投入大量的时间进行实践,虽然我不能完整的编出一个可以用到生产使用的JVM,但我通过这样的学习,了解了JVM的基本功能;搜索和解析class、字节码指令集、运行时数据区、虚拟机栈、栈针、局部变量表、操作数栈、寄存器等,是如何一步步把Java代码跑起来的。

3. 基于SpringBoot的分布式任务中间件

  • 文章:开发基于SpringBoot的分布式任务中间件DcsSchedule

  • 源码:https://github.com/fuzhengwei/schedule-spring-boot-starter

  • 难度:⭐⭐⭐

  • 这是一个什么轮子呢?简单来说它这功能类似xxl-job,组件要解决的问题是把定时任务,可以分配到不同的机器上去执行,同时它是以 zookeeper 作为注册中心扩展为分布式任务调度系统。接入方式接单易用,统一控制启停、宕机灾备等。并且能自动检测;部署数量、任务总量、成功次数、失败次数、执行耗时等信息。

4. 服务治理中间件

  • 文章:服务治理中间件之统一白名单验证

  • 源码:https://github.com/fuzhengwei/door-spring-boot-starter

  • 难度:⭐⭐⭐

  • 服务治理是什么?其实服务治理包括的内容也比较多,例如;从部署层面、管理层面、应用层面、网关层面等等,而这里的服务治理说到的是应用层面,简单来说,例如你有很多个服务系统,每个服务的对外层都需要白名单,那怎么办呢?不太可能每一个系统都重复的开发类似的功能,这样也很难管理。所以我们希望把业务系统中,非业务逻辑的通用性核心功能抽离出来,开发成统一的业务组件,来帮助服务解耦,让业务系统更关心业务流程开发。那么这就是服务治理其中的一个作用。

5. Netty仿桌面版微信

  • 文章:Netty+JavaFx实战:仿桌面版微信聊天

  • 源码:https://github.com/fuzhengwei/NaiveChat

  • 难度:⭐⭐⭐⭐

  • 本项目是作者小傅哥使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式,搭建的仿桌面版微信实现通信核心功能。

6. 还有很多造过的轮子

  1. 数据库分库分表路由中间件

  2. Redis缓存读写引擎中间件

  3. ES + Ibatis结合使用中间件

  4. 全链路业务流程监控

除了,这些造的轮子还有很多,其他的不一一列举了。当然我不只造轮子,还造各种小工具,甚至还包括js写的散列路由计算器。总之,我可能在造轮子的路上越走越远,是因为过于痴迷????!

三、造轮子升职加薪吗?

造轮子本身不一定升职加薪,如果你第一次造,也许会被扣薪。

如果是运用到业务系统中的造轮子,不同于CRUD,往往需要了解 Spring 或者 SpringBoot 部分源码,以及动态代理和反射等知识。并且在设计实现上也要考虑的非常全面,否则出了事故就不只是一个系统,而是所有使用你这个轮子的系统都需要随着你升级改造上线。所以,造轮子不一定升职加薪!

但,造轮子可以让个人的技术栈得到很全面的成长,也许还能让你在某个阶段突破现有的技术瓶颈。因为造轮子你需要学习以往别人的轮子、组件的源码、拓展的技术栈以及更加全面的思考????。

最后是你造的轮子要能经受起验证,也要能适应业务需求进行拓展,并且这可能还是一份除了你日常业务系统开发外的其他工作。是否能经受起这份考验,也就决定了你能收获多少知识。而这份别人没掌握的知识才是你升值加薪的筹码!也是你能留下的本事和走出去的能力!

四、有人反对你造轮子?

不要重复造轮子、不要重复造轮子、不要重复造轮子

很多时候你是否听到这句话,而把自己内心的小火苗浇灭。其实这句话从某些时候来说不一定是错的,因为一个项目的开发到上线,需要对时间成本、项目质量、可靠度进行评估,谁也不敢贸然使用一个没有验证过的新功能,也不敢让你拿着练手。

当然,有时候我们造的轮子不一定是重复的,可能是创新的。但这个轮子的阶段,不应该是新项目启动时候开始,最起码应该是你在这之前就写过,已经验证过,已经投入生产过,才敢让你造了用。对于当前这次开发,如果非常紧急,那么最好的是求稳,并在这个项目里吸收更多的经验。并总结如果是用了你的轮子,那么这个轮子能支持多久,还需要扩展吗,会不会有问题。

这一切的学习、总结、应用,最终都是可以为你技术栈成长铺路的。不要因别人反对就放弃,也不要倔强的就非要怎样,而且游刃有余的成长和学习。有准备的人,总是会在必要的时候给力????!

五、总结

  • 没有一句话能评论造轮子的错和对,即使是已经有了的轮子,那么你以学习为目的呢?你以可以拿出更优的方案为导向呢?所以,想造就造吧,只不过千万要验证在使用!

  • 造轮子能我们学到很多业务系统开发以外的知识,这些知识能拓展你的技术栈,扫描掉一些技术盲区,为你以后的晋升答辩或跳槽面试铺好够到更高薪资的垫脚石。

  • 想造轮子要学会读源码、学会技术迁移、学习数据结构、学习算法、学习设计模式,一定是先提升技术视野了,才能让自己有造轮子的想法,而不是硬造。

六、系列推荐

  • Mybatis接口没有实现类为什么可以执行增删改查

  • Spring定时任务Quartz执行全过程源码解读

  • 基于jdbc实现一个Demo版的Mybatis

  • 咋嘞?你的IDEA过期了吧!加个Jar包就破解了,为什么?

  • 手写mybait-spring核心功能


bugstack虫洞栈

沉淀、分享、成长,让自己和他人都能有所收获!

作者小傅哥多年从事一线互联网Java开发,从19年开始编写工作和学习历程的技术汇总,旨在为大家提供一个较清晰详细的核心技能学习文档。如果本文能为您提供帮助,请给予支持(关注、点赞、分享)!

程序员该造轮子吗,造轮子能升职加薪吗?相关推荐

  1. 程序员到底要不要重复造轮子?

    分享一波:程序员赚外快-必看的巅峰干货 关于这个话题,现在这里阐述立场:就公司工作而言,不建议重复造轮子.就个人技术而言,强烈建议造轮子! 程序员圈子里流行这么一句话:"不要重复造轮子&qu ...

  2. 手握价值70万录用书的程序员提离职,领导:你已升职成功,还走?

    我认为一个人最大的惊喜就是刚刚提出离职,而原公司的上司却告诉你已经成功晋职,同时你还找到一份高薪工作!最近美团的一位工作人员就在网上发了一个帖子称:最近自己遇到一个 瓶颈 ,刚开始很多人还以为出了什么 ...

  3. 从程序员到项目经理(二):升职之辨

    被任命为项目经理,是职业生涯的第一次飞跃,既惊喜又紧张.从现在开始,你要思考怎样才能胜任项目管理的工作,否则等着你的,很可能是一场悲剧. 一.升职之辨 1. 为什么是我 不是每个人都能当项目经理,程序 ...

  4. 假如鲁迅是程序员......

    作者 | 阿光 来源 | 码农小说家(ID:gh_1b8358c2f791) 我职业生涯中最喜欢两种语言,一种不是Java,另外一种也不是Java. 世间本无Bug,写的代码多了,也就有了Bug. 码 ...

  5. 十五年工作经验的程序员,下面分享一篇职场经验的文章

    当我步入职场时,我并没有预料到工作中会遇到的各种挑战.但是,随着时间的推移,我学到了很多关于如何成为一名成功的程序员的经验和教训.以下是我想分享给新手程序员的一些职场经验: 持续学习:技术发展非常迅速 ...

  6. 假如鲁迅是程序员。。。

    我职业生涯中最喜欢两种语言,一种不是 Java,另外一种也不是 Java. 世间本无 Bug,写的代码多了,也就有了 Bug. 码农总不过是希望少加点班.只要这样,也只能这样. 天才加班,是为了实现自 ...

  7. 有感而发:程序员到底要不要阅读框架源码?

    写在前面 最近正在写[高并发专题]的文章,其中,在[高并发专题]中,有不少是分析源码的文章,很多读者留言说阅读源码比较枯燥!问我程序员会使用框架了,会进行CRUD了,是否真的有必要阅读框架源码?! 对 ...

  8. 新的一年,Android开发程序员应该怎样突出重围?

    过完年,马上就又要到每年的金三银四求职季了. 作为程序员,我们都会追求技术精进和升职加薪,但想成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累.因此早日开始准备,才能多一分竞争力,添一分面 ...

  9. 卷学历、卷加班……程序员拥有什么能力才能破局内卷?

    全世界的天才程序员都在疯狂的造轮子,其它程序员只能被动的学习轮子,这简直就像一场绝地求生.程序员行业的内卷已是有目共睹,选择程序员作为职业的人越来越多:大厂对程序员的学历要求越来越高:程序员工作加班越 ...

  10. c++ include 路径_程序员应如何理解include

    相信很多同学在学习C/C++后都有这样的疑问,#include这句话到底是怎么意思?这句话的背后隐含了什么?我们常用的stdio.h存放在了哪里? 这篇文章就来解答这个问题. 谁来处理头文件 有上述疑 ...

最新文章

  1. Mask R-CNN 源代码终上线,Facebook 开源目标检测平台—Detectron
  2. mysql基础 事务的认识和使用
  3. 008 数据结构逆向—数组(简单版)
  4. es6 数组找最大值_JavaScript 查找数组中最大值与最小值
  5. 曙光中学2021年高考成绩查询,上海市部分高中2020高考录取喜报,成绩喜人!
  6. c/c++,字符,字符串,各种方式读入与对空格,回车的处理
  7. linux vim (your system doesn't appear to have the zip pgm)
  8. std::string.assign()的用法-爱情滕-搜狐博客
  9. 判断linux下的网络服务是否正常启动
  10. python-封装继承多态
  11. sas主板服务器安装系统,自带SAS存储 华硕P6T WS PRO工作站主板
  12. unity webgl获取页面Token信息,及加载StreamingAssets下.txt
  13. tplink710n无线打印服务器,tplink710n设置
  14. 立方单位换算计算机,立方进率换算(立方进率单位换算表)
  15. 内核手动释放内存方法
  16. android studio夜间模式,android studio怎样实现夜间模式
  17. 衡量度量过程性能的几个指标
  18. Linux 网络排障工具 MTR --鸟枪换炮事半功倍
  19. JS实现倒计时精确到天数,时,分,秒或者精确到时、分、秒(小时数累加)
  20. Gmap.net搜集

热门文章

  1. 开源企业软件采购指南
  2. Android多媒体开发【5】-- Stagefright原来是个皮包公司
  3. MediaPlayer播放歌曲
  4. 解决方案:java.lang.IllegalArgumentException: 为此cookie指定的域[localhost:xxxx]无效
  5. Qt字符转换、文件操作、加密、电脑操作
  6. moment获取时间
  7. 视觉SLAM⑨后端Ⅰ(KF、EKF、非线性优化)
  8. python解析返回值类型为xml的数据接口
  9. 怎样与领导谈加薪以及谈加薪的技巧
  10. Cloudxns倒下,7月17日关闭域名解析,解析任务交给谁?