目录

好日子

为什么你需要学习造轮子

投资自己

不要成为调包侠

通过造轮子你能学到什么?

下一步计划


好日子,宣布一件事情!

好日子

12月有个好日子,20211202,从左往右读,接着从右往左读你会发现居然是对称的,这是属于程序员的「浪漫」,身边有程序员朋友还特地选择了今天去领证。

熟悉算法的小伙伴应该发现了,这就是经典的算法题:「回文串」,那么问题来了,你知道下一个回文串日期是什么时候吗?评论区见~

既然是个好日子,那不能浪费啊,总得搞搞搞搞搞点事情吧。

最近一段时间思绪很乱,加上工作上巨忙,经常会怀疑自己:我现在做的事情有价值吗?我写的文章是不是能帮助到读者?文章写的通俗易懂吗?后面应该写什么?

每当我想放弃的时候,总会看到一些小伙伴们发来一些私信:雷小帅,你写的技术文章对我太有用了,通俗易懂,思路清晰,我在车上看的太专注了,都坐过站了。

有些话可能是开玩笑,但至少是帮助和影响了部分人,这对于我来说是莫大的鼓励,很欣慰!

既然还有人惦记,那必然不能让大家失望。回顾近一年,作为技术博主输出了很多技术文章:

  • 《玩转 Redis 面试》

  • 《图解分布式&中间件》

  • 《死磕 Java 并发编程》

  • Java 学习路线

  • Java 八股文

  • 《五分钟入门系列》

  • 武汉互联网

  • ……若干水文

一篇文章的产生通常会经过:选题、构思、画图、排版这些步骤,稍微用点心,至少得花三个晚上以上。

那这样一篇文章会产生多大价值呢?大部分人可能是这样的状态:读完了,写的不错 = 我学会了 ,但实际在工作或者面试中遇到时又忘了,究其原因是:懂了很多「点」但无法将知识点连成「线」和「面」,从而无法将学的东西运用到项目中来。

那最好的办法就是「项目实战」,以战促学。前一阵子,我也在 B 站(id:程序员雷小帅,欢迎关注)直播过几次,本来想带着大家一起直播写个项目,奈何电脑太卡了,开了直播软件,我的 IDE 就卡的不行,只好放弃了。

最近我想了一下,做一个这样的业务项目其实也没什么意思,无非就是增删改查,企业中真正的难点是「理解业务」,而真正涉及到的技术难点都会交给基础框架组或者中间件组搞定。

那既然这样,我们是不是也应该干点他们干的事情呢?是的,我想到了一个idea:自己造一个 RPC 轮子

为什么你需要学习造轮子

投资自己

有人要问了:现在各种好用的框架都开源了,直接拿过来用不就得了,自己造一个不是浪费时间么?

这个问题看你用什么视角看了,如果从领导视角看:

领导:现在项目交付这么紧,你赶紧找个开源项目,copy 改一下,能跑起来就可以了。

有技术追求的哥哥:我想自己写一个框架,性能肯定比开源的那个好。

领导:这周五你得把项目交付了,你自己看着办吧?!

领导在乎的是你能不能快速交付项目,能不能快速产生价值创造收益。

如果从自己的视角来看:

有技术追求的哥哥:这个框架我已经实现了

领导:好用吗?

有技术追求的哥哥:通过写这个框架,我学到了好多知识,我已经开源了,好多 star

领导:项目已经延期了,你明天不用来了。

通过自己造一个,学到了很多以前没接触到的东西,自己的技术有了更进一步的提升。

那你们说:自己造一个轮子,是浪费了时间吗?

不要成为调包侠

很多人进入公司后都会陷入复杂的业务场景,一周可能要花四天讨论业务,剩下一天就可以把代码写完了。

回过头想想,我们写的是什么代码呢?大多数是在写 CRUD,写 if else for,调一调开源的 jar 包接口。

  • 以为是在写高并发,有牛逼技术的代码,其实是个 CRUD boy。

  • 以为懂得了各种中间件,其实只是学会了如何调用他们的接口,是个调包侠。

我不是在诋毁写业务代码的人,而是怕大家对自己有误解。

如果想在技术上有更进一步的成长,你必须要跨过 CRUD boy调包侠这个阶段,深入到框架底层,熟知源码和原理。

通过造轮子你能学到什么?

敲黑板:首先强调一下造轮子的目的不是为了放在生产上面去用,而是通过造轮子促进你学习,让你将零散的知识点贯穿起来。

这一次我会带领大家从零开始撸一个 RPC 框架,如果你还不知道 RPC 是什么?建议你先去了解一下。

目前常见的 RPC 框架有:

  • 阿里 Dubbo

  • 谷歌gRPC

  • Apache Thrift

  • 微博 Montan

  • SpringCloud(类似)

  • ……等

我们会参考 Dubbo 框架去写一个 mini 版的 RPC 框架,实现最基本和核心的功能。

如果你认真学下来,可以掌握以下的技术:

  1. 底层网络层基于 netty,学完 netty 入门没有问题;

  2. 使用自定义注解,学完可以了解注解的基本运行机制;

  3. 服务注册基于 zookeeper,学完 zk 入门没有问题;

  4. 会用到反射机制;

  5. 会用到动态代理技术;

  6. 教你如何定义一个 xxx-spring-boot-starter,了解spring boot自动配置机制;

  7. 学会如何自定义配置项,并绑定到 bean;

  8. 学习监听 spring 容器的事件;

  9. ……等等

有没有一点心动呢?!

下一步计划

这篇文章就当做是一个引入和前言吧,主要是为了增强大家的信心,肯定是能学到东西的。

下一步,我会用多篇文章详细介绍 RPC 框架的源码以及涉及到的技术点,还会将框架源代码放到 Github 上供大家下载学习,包教包会,后面面试拿这个出去吹牛B 完全没有问题。

项目源码已经在 Github 开源了:

GitHub - CoderLeixiaoshuai/easy-rpc: Easy RPC是一款低性能的服务框架,主要用于学习造轮子Easy RPC是一款低性能的服务框架,主要用于学习造轮子. Contribute to CoderLeixiaoshuai/easy-rpc development by creating an account on GitHub.https://github.com/CoderLeixiaoshuai/easy-rpc

如果大家特别感兴趣后面也可以开直播讲解哦~

好了,我是雷小帅,以上就是今天的全部内容啦,如果你对手动造一个轮子感兴趣,三连支持一下吧,给点信心~

「从零开始造 RPC 轮子系列」01 我为什么要去造一个轮子?相关推荐

  1. 「学点C语言系列」02 判断年份是否为闰年

    写在前面:「学点C语言系列」是新开的专栏,博主电子信息工程专业毕业后,从事了4年硬件工程师,最近一次接触C语言还是4年前的毕设,想重新系统的学习一下C语言,从最基本的Hello World开始. 上一 ...

  2. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  3. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  4. 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」

    原文:4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. HTTP请求过程 这里展示整 ...

  5. 4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」

    原文:4.5管道实现机制和模拟构建管道「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道实现机制 要了解管道的实现机制 ...

  6. 精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

    前提介绍 很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰漏和短板,解决广大小伙伴 ...

  7. 【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-下)

    承接[[深度挖掘 RocketMQ底层源码]「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-上)] pullBlockIfNotFound方法 通过该方法获取 ...

  8. 「30天制作操作系统系列」1~4天从汇编到C语言

    目录 背景 30制作操作系统?这个听起来像天方夜谭,但是真有一本书就叫做<30天自制操作系统>,当然,自制操作系统的目的不是要去对标Windows.Linux.MacOS等流行的现代化操作 ...

  9. 有小数点是什么类型_「JAVA零基础入门系列」Day3 Java基本数据类型

    前两篇已经将开发环境搭建完成,如果你已经按之前的教程按部就班的完成了部署,那么世界上最优秀的编程语言之一和世界上最优秀的IDE之一已经出现在你的电脑上(此处应有掌声),如果你还没入门,或者正在台阶上踱 ...

最新文章

  1. 竞赛报名 | AI时代数据库交互怎么玩?首届中文NL2SQL挑战赛开战
  2. 替换ubuntu 源
  3. 阿里灵杰:AI工程化助力产业数字升级
  4. Windows配置本地域名
  5. C#中你想象的Task,很简单?
  6. 十二星座职业成功忠告
  7. Django(五)中间件
  8. MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel
  9. (60)UART外设驱动发送驱动(五)(第12天)
  10. 必知必会SQL(贰) --索引(聚集[簇]索引和非聚[簇]集索引) vs 全文本索引
  11. 基于注解的Spring MVC与JPA如何解决实体的延时加载问题
  12. 爬虫cookie过期_【Python】Scrapy爬虫框架之Request和Response
  13. 左神-05 二分搜索(多看几遍)
  14. android沉浸式状态栏封装—教你玩出新花样
  15. 解决SQL数据库无法附加
  16. 熊出没之奇幻空间里面的机器人图片_《熊出没之奇幻空间》小铁COCO智能机器人玩具...
  17. 苹果手机!!!fiddler自动抓抓包iphone上的http(或https)请求,手机设置完http代理,但是手机不能上网了。即(fiddler iphone http代理 不能上网)
  18. 盘点国外知名量化基金
  19. v-charts 如何更改文本颜色
  20. SQL Server 遇到报错解决办法--更新中

热门文章

  1. 磁盘磁带光盘是计算机系统中,磁盘、磁带和光盘是计算机系统中最常用的( )。...
  2. 基于OSG的虚拟校园系统的设计与实现
  3. Java师说CMS管理系统源码
  4. std::string 含义
  5. 电子游戏理论基础知识的初步探索(转)
  6. i.MX6网卡驱动程序fec.c的分析(AR8035网卡驱动程序的详细分析)之二
  7. 计算机丢失UxTheme无法修复,RWUXThemeSU90.dll
  8. 威联通TS-532x 篇一: ssh admin登录密码
  9. Mac怎么开启多个终端
  10. 四阶龙格库塔算法用MATLAB写