共计 3316 个字符,预计需要花费 9 分钟才能阅读完成。
作者:小傅哥
博客:https://bugstack.cn – 原创系列专题文章
积淀、分享、成长,让本人和别人都能有所播种!????
一、前言
哪个架构师没造过轮子?
你想过这样一件事吗?是先具备能力在安顿职位,还是先安顿职位在学习? ????什么?走后门,你进来!
就像咱们上学考试、跆拳道考段、降职问难一样,都是先具备了可胜任上一阶段的能力,才给予相应的职位。所以,架构师造轮子从做程序员时候就开始了,只不过到了架构师阶段能够造出更好的轮子。
鉴于理论业务开发的紧急水平,不会容许你造轮子。但造轮子,简直是每个程序员冲破技术瓶颈的最佳形式。千万不要因为一句,不要反复造轮子 的借口,给本人一个不学习的理由!
二、我造过的轮子
我可能是痴迷于造轮子!
理解小傅哥的粉丝可能都晓得,我的第一份工作是写了两年的 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.html)
- 源码:https://github.com/fuzhengwei/schedule-spring-boot-starter
- 难度:⭐⭐⭐
- 这是一个什么轮子呢?简略来说它这性能相似 xxl-job,组件要解决的问题是把定时工作,能够调配到不同的机器下来执行,同时它是以 zookeeper 作为注册核心扩大为分布式任务调度零碎。接入形式接单易用,对立管制启停、宕机灾备等。并且能自动检测;部署数量、工作总量、胜利次数、失败次数、执行耗时等信息。
4. 服务治理中间件
- 文章:服务治理中间件之对立白名单验证 -%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E4%B8%AD%E9%97%B4%E4%BB%B6%E4%B9%8B%E7%BB%9F%E4%B8%80%E7%99%BD%E5%90%8D%E5%8D%95%E9%AA%8C%E8%AF%81.html)
- 源码:https://github.com/fuzhengwei/door-spring-boot-starter
- 难度:⭐⭐⭐
- 服务治理是什么?其实服务治理包含的内容也比拟多,例如;从部署层面、治理层面、利用层面、网关层面等等,而这里的服务治理说到的是利用层面,简略来说,例如你有很多个服务零碎,每个服务的对外层都须要白名单,那怎么办呢?不太可能每一个零碎都反复的开发相似的性能,这样也很难治理。所以咱们心愿把业务零碎中,非业务逻辑的通用性外围性能抽离进去,开发成对立的业务组件,来帮忙服务解耦,让业务零碎更关怀业务流程开发。那么这就是服务治理其中的一个作用。
5. Netty 仿桌面版微信
- 文章:Netty+JavaFx 实战:仿桌面版微信聊天
- 源码:https://github.com/fuzhengwei/NaiveChat
- 难度:⭐⭐⭐⭐
- 本我的项目是作者小傅哥应用 JavaFx、Netty4.x、SpringBoot、Mysql 等技术栈和偏差于 DDD 畛域驱动设计形式,搭建的仿桌面版微信实现通信外围性能。
6. 还有很多造过的轮子
- 数据库分库分表路由中间件
- Redis 缓存读写引擎中间件
- ES + Ibatis 联合应用中间件
- 全链路业务流程监控
除了,这些造的轮子还有很多,其余的不一一列举了。当然我不只造轮子,还造各种小工具,甚至还包含 js 写的散列路由计算器。总之,我可能在造轮子的路上越走越远,是因为过于痴迷????!
三、造轮子升职加薪吗?
造轮子自身不肯定升职加薪,如果你第一次造,兴许会被扣薪。
如果是使用到业务零碎中的造轮子,不同于 CRUD,往往须要理解 Spring 或者 SpringBoot 局部源码,以及动静代理和反射等常识。并且在设计实现上也要思考的十分全面,否则出了事变就不只是一个零碎,而是所有应用你这个轮子的零碎都须要随着你降级革新上线。所以,造轮子不肯定升职加薪!
但,造轮子能够让集体的技术栈失去很全面的成长,兴许还能让你在某个阶段冲破现有的技术瓶颈。因为造轮子你须要学习以往他人的轮子、组件的源码、拓展的技术栈以及更加全面的思考????。
最初是你造的轮子要能禁受起验证,也要能适应业务需要进行拓展,并且这可能还是一份除了你日常业务零碎开发外的其余工作。是否能禁受起这份考验,也就决定了你能播种多少常识。而这份他人没把握的 常识 才是你贬值加薪的筹码!也是你能留下的本事和走进来的能力!
四、有人拥护你造轮子?
不要反复造轮子、不要反复造轮子、不要反复造轮子
很多时候你是否听到这句话,而把本人心田的小火苗浇灭。其实这句话从某些时候来说不肯定是错的,因为一个我的项目的开发到上线,须要对工夫老本、我的项目品质、牢靠度进行评估,谁也不敢贸然应用一个没有验证过的新性能,也不敢让你拿着练手。
当然,有时候咱们造的轮子不肯定是反复的,可能是翻新的。但这个轮子的阶段,不应该是新我的项目启动时候开始,最起码应该是你在这之前就写过,曾经验证过,曾经投入生产过,才敢让你造了用。对于以后这次开发,如果十分紧急,那么最好的是求稳,并在这个我的项目里排汇更多的教训。并总结如果是用了你的轮子,那么这个轮子能反对多久,还须要扩大吗,会不会有问题。
这所有的学习、总结、利用,最终都是能够为你技术栈成长铺路的。不要因他人拥护就放弃,也不要倔强的就非要怎么,而且熟能生巧的成长和学习。有筹备的人,总是会在必要的时候给力????!
五、总结
- 没有一句话能评论造轮子的错和对,即便是曾经有了的轮子,那么你以学习为目标呢?你以能够拿出更优的计划为导向呢?所以,想造就造吧,只不过千万要验证在应用!
- 造轮子能咱们学到很多业务零碎开发以外的常识,这些常识能拓展你的技术栈,扫描掉一些技术盲区,为你当前的降职问难或跳槽面试铺好够到更高薪资的垫脚石。
- 想造轮子要学会读源码、学会技术迁徙、学习数据结构、学习算法、学习设计模式,肯定是先晋升技术视线了,能力让本人有造轮子的想法,而不是硬造。
六、系列举荐
- Mybatis 接口没有实现类为什么能够执行增删改查
- Spring 定时工作 Quartz 执行全过程源码解读
- 基于 jdbc 实现一个 Demo 版的 Mybatis
- 咋嘞?你的 IDEA 过期了吧!加个 Jar 包就破解了,为什么?
- 手写 mybait-spring 外围性能.html)