河南网站怎么备案,自助建站平台,北京互联网公司开发的网站,网页设计与制作大赛作者#xff1a;小傅哥博客#xff1a; https://bugstack.cn-沉淀、分享、成长#xff0c;让自己和他人都能有所收获#xff01;一、前言哪个架构师没造过轮子#xff1f;你想过这样一件事吗#xff1f; 是先具备能力在安排职位#xff0c;还是先安排职位在学习#xf…作者小傅哥博客 https://bugstack.cn-沉淀、分享、成长让自己和他人都能有所收获一、前言哪个架构师没造过轮子你想过这样一件事吗 是先具备能力在安排职位还是先安排职位在学习 什么走后门你出去就像我们上学考试、跆拳道考段、晋升答辩一样都是先具备了可胜任上一阶段的能力才给予相应的职位。所以架构师造轮子从做程序员时候就开始了只不过到了架构师阶段可以造出更好的轮子。鉴于实际业务开发的紧急程度不会允许你造轮子。但造轮子几乎是每个程序员突破技术瓶颈的最佳方式。千万不要因为一句 不要重复造轮子 的借口给自己一个不学习的理由二、我造过的轮子我可能是痴迷于造轮子了解我的粉丝可能都知道我的第一份工作是写了两年的 C# 但为了不放下我写好的 Java 在工作之余就用 Java 语言把我能接触到到的项目都用 Java 写了一遍包括串口打码机服务、中继器对接、PLC数据采集等等。等到正式进入互联网后像是为我打开了新的大门这能接触到的知识太niao性了盘它 来看我造过的轮子 。1. RPC 通信组件[手写RPC框架第三章《RPC中间件》]难度:star::star::star:15年初进互联网惊讶的发现原来两个工程之间还可以使用RPC通信以前公司使用的还是http或者webservice所以这部分知识给我带来了很大的冲击。为了能更明白的了解它找到了一些git中的源码像Dubbo、gRPC进行学习。学着学着就开始动手自己实现一次实践的过程学到了大量的知识包括结合Spring开发中间件、自定义配置、主定义注解、切面拦截、Netty通信、编解码器、流量整形等等。这些知识也为我后续开发其他中间件打下了一个很好的基础。2. 编写JVM虚拟机[用Java实现一个JVM虚拟机]难度:star::star::star::star::star:这是一个用不上的轮子同时这么干可能有点虎 整整写了一个月写了几十万行代码才能运行几个简单的HelloWorld。 但 因为我不想听别人吹着一些理论词忽悠了我的编码生涯也不想看几本不能实操落地的书就感觉学会了。所以我才愿意投入大量的时间进行实践虽然我不能完整的编出一个可以用到生产使用的JVM但我通过这样的学习了解了JVM的基本功能搜索和解析class、字节码指令集、运行时数据区、虚拟机栈、栈针、局部变量表、操作数栈、寄存器等是如何一步步把Java代码跑起来的。3. 基于SpringBoot的分布式任务中间件[开发基于SpringBoot的分布式任务中间件DcsSchedule]难度:star::star::star:这是一个什么轮子呢简单来说它这功能类似xxl-job组件要解决的问题是把定时任务可以分配到不同的机器上去执行同时它是以 zookeeper 作为注册中心扩展为分布式任务调度系统。接入方式接单易用统一控制启停、宕机灾备等。并且能自动检测部署数量、任务总量、成功次数、失败次数、执行耗时等信息。4. 服务治理中间件[服务治理中间件之统一白名单验证]难度:star::star::star:服务治理是什么其实服务治理包括的内容也比较多例如从部署层面、管理层面、应用层面、网关层面等等而这里的服务治理说到的是应用层面简单来说例如你有很多个服务系统每个服务的对外层都需要白名单那怎么办呢不太可能每一个系统都重复的开发类似的功能这样也很难管理。所以我们希望把业务系统中非业务逻辑的通用性核心功能抽离出来开发成统一的业务组件来帮助服务解耦让业务系统更关心业务流程开发。那么这就是服务治理其中的一个作用。5. Netty仿桌面版微信[NettyJavaFx实战仿桌面版微信聊天]难度:star::star::star::star:本项目是作者使用JavaFx、Netty4.x、SpringBoot、Mysql等技术栈和偏向于DDD领域驱动设计方式搭建的仿桌面版微信实现通信核心功能。6. 还有很多造过的轮子数据库分库分表路由中间件Redis缓存读写引擎中间件ES Ibatis结合使用中间件全链路业务流程监控除了这些造的轮子还有很多其他的不一一列举了。当然我不只造轮子还造各种小工具甚至还包括js写的散列路由计算器。总之我可能在造轮子的路上越走越远是因为过于痴迷 三、造轮子升职加薪吗造轮子本身不一定升职加薪如果你第一次造也许会被扣薪。如果是运用到业务系统中的造轮子不同于CRUD往往需要了解 Spring 或者 SpringBoot 部分源码以及动态代理和反射等知识。并且在设计实现上也要考虑的非常全面否则出了事故就不只是一个系统而是所有使用你这个轮子的系统都需要随着你升级改造上线。所以造轮子不一定升职加薪但造轮子可以让个人的技术栈得到很全面的成长也许还能让你在某个阶段突破现有的技术瓶颈。因为造轮子你需要学习以往别人的轮子、组件的源码、拓展的技术栈以及更加全面的思考 。最后是你造的轮子要能经受起验证也要能适应业务需求进行拓展并且这可能还是一份除了你日常业务系统开发外的其他工作。是否能经受起这份考验也就决定了你能收获多少知识。而这份别人没掌握的 知识 才是你升值加薪的筹码 也是你能留下的本事和走出去的能力四、有人反对你造轮子不要重复造轮子、不要重复造轮子、不要重复造轮子很多时候你是否听到这句话而把自己内心的小火苗浇灭。其实这句话从某些时候来说不一定是错的因为一个项目的开发到上线需要对时间成本、项目质量、可靠度进行评估谁也不敢贸然使用一个没有验证过的新功能也不敢让你拿着练手。当然有时候我们造的轮子不一定是重复的可能是创新的。但这个轮子的阶段不应该是新项目启动时候开始最起码应该是你在这之前就写过已经验证过已经投入生产过才敢让你造了用。对于当前这次开发如果非常紧急那么最好的是求稳并在这个项目里吸收更多的经验。并总结如果是用了你的轮子那么这个轮子能支持多久还需要扩展吗会不会有问题。这一切的学习、总结、应用最终都是可以为你技术栈成长铺路的。不要因别人反对就放弃也不要倔强的就非要怎样而且游刃有余的成长和学习。有准备的人总是会在必要的时候给力五、总结没有一句话能评论造轮子的错和对即使是已经有了的轮子那么你以学习为目的呢你以可以拿出更优的方案为导向呢所以想造就造吧只不过千万要验证在使用造轮子能我们学到很多业务系统开发以外的知识这些知识能拓展你的技术栈扫描掉一些技术盲区为你以后的晋升答辩或跳槽面试铺好够到更高薪资的垫脚石。想造轮子要学会读源码、学会技术迁移、学习数据结构、学习算法、学习设计模式一定是先提升技术视野了才能让自己有造轮子的想法而不是硬造。