• 摊牌了!我要手写一个“Spring Boot”


    目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping@PostMapping@PathVariable 写完了。我也已经将项目开源出来了,地址:https://github.com/Snailclimb/jsoncat原创开源不易,觉得不错的话,欢迎给良心作者 1 个 star 鼓励一下!

    今天是晴天,我像往常一样坐在窗台,看着电脑“发呆”。毕竟是周末,就不分享技术干货了。

    简单和小伙伴们聊聊自己最近正在做,已经开始做的事情。

    01 重构 JavaGuide

    我们经常会对自己早期写的代码感觉恶心,这是导致很多项目烂尾、不好维护很重要的一个原因之一。

    写作也是一样,我也经常觉得自己早期写的文章像一坨翔。造成这个现象的原因很简单!我觉得主要可能有两方面原因:

    1. 自己沉淀的知识更多,对于某个知识点的理解更加深刻。
    2. 不同于其他类型文章,技术类文章本身就需要不断完善,文章内容才会更好。

    所以,最近几个月我一直抽空对 JavaGuide 上早期的一些文章进行大篇幅重构,比如 Java基础、Java集合框架、 Zookeeper 、Redis等等。

    毕竟,时间有限,自己也还是把主要精力放在写代码上。所以,部分文章还没有开始重构,比如数据结构部分的内容。

    就非常期待小伙伴们一起贡献出自己的力量啊!让 Guide哥 能多点时间写代码,嘿嘿!

    02 写了个简单的 RPC框架

    我在大学的时候,就使用过 Dubbo 这类 RPC 框架,对于 RPC 框架的原理也有一点的认识。

    于是乎!疫情那会工作也不是很忙,我就想着说自己要不要也写一个 RPC 框架玩玩。

    说做就做!前前后后花了 3 个月,我利用业余时间手写一个简单的 RPC 框架(玩具),名字叫做 guide-rpc-framework。这个框架是基于 Netty+Kyro+Zookeeper 并且整合了 Spring 来做的。

    讲真!确实,花费了不少精力。虽然,这玩意的原理不难,但是,想写好确实要花时间。

    目前的话,这个项目已经有 0.7k 的 star。感谢小伙伴们的支持!

    像这样的开源项目,放到简历上绝对是加分项!

    而且,我在自己去写 RPC 框架的时候,加深了自己对于 RPC 框架原理的认识。具体落实到代码实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力和解决问题的能力。总而言之,造轮子是一种特别能够提高自己系统编程能力的手段。

    03 写一个简易版的“Spring Boot”

    是的!我准备开始造下一个轮子了,一个简易版的“Spring Boot”!名字我都起好了,叫做“jsoncat”。

    名字没有特别含义,只是因为这个框架目前定位是只返回 json 类型数据给前端,所以就在名字中加上了 json。

    其实,说是简易版的 Spring Boot ,不过是简单模仿 Spring Boot 提供的功能,自己手写一个类似的轻量级 HTTP 框架而已。(功能、生态、稳定性等方面肯定不能和 Spring Boot 对比啦!

    具体实现的话,先简单聊聊,后面会单独写文章来分享。 我会使用 Netty 来写一个简易的 HTTP Server,主要用来处理 HTTP 请求。其他模块的话,我会在兼顾代码可读性的情况下,尽量减少第三方依赖。所以,整个框架会比较轻量。

    另外,代码也会尽量写直白点,不故意秀技。我也会将自己写这个简易的HTTP框架学到的东西分享出来。当然啦!大家想要看源码的话,我也会将其开源。

    写这个东西只是自己个人的兴趣爱好使然,主要也是为了提高自己的编码能力。推荐小伙伴们也要尽量能够将自己的想法付诸于行动。

    理论固然重要,但是脱离于实践的理论,并不可靠。

    相比于 CRUD ,自己造个轮子,肯定是更有意思,也更能锻炼自己的编程能力和解决问题的能力。

    目前的想法是,第1版至少是能够让其正确处理 Get 请求 和 Post 请求。目前的话,我基本已经写完了。相比于之前实现的 RPC 框架来说,这个总体来看,还是稍微简单一些。

    用自己写的框架处理了一次Post请求

    不过,大部分时间还是在思考怎么让代码更健壮、更易读、更容易维护!

    说句题外话,要想让代码更易读,除了要了解面向对象编程的思想之外,那必然少不了对设计模式的运用。

    04 闲聊

    当你们看到这篇文章的时候,我已经出门和大学最好的朋友一起出去嗨皮了。

    半年多没见,不知道朋友现在长胖了不?反正,我是长胖了。

    05 我的开源项目

    1. JavaGuide :「Java学习+面试指南」一份涵盖大部分Java程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
    2. guide-rpc-framework :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基于 Netty+Kyro+Zookeeper 实现的自定义 RPC 框架-附详细实现过程和相关教程)
    3. jsoncat :仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架
    4. programmer-advancement :程序员应该有的一些好习惯+面试必知事项!
    5. springboot-guide :Not only Spring Boot but also important knowledge of Spring(不只是SpringBoot还有Spring重要知识点)
    6. awesome-java :Collection of awesome Java project on Github(Github 上非常棒的 Java 开源项目集合).

    我是 Guide 哥,一 Java 后端开发,会一点前端,自由的少年。我们下期再见!微信搜“JavaGuide”回复“面试突击”领取我整理的 4 本原创PDF

  • 相关阅读:
    android app记录执行日志 捕获奔溃异常 ,存储日志到文件
    对扩展openflow协议的一点思考
    Echarts柱状图
    python实现插入排序
    MyBatis -- 对表进行增删改查(基于注解的实现)
    pat解题报告【1082】
    [Swift]LeetCode974. 和可被 K 整除的子数组 | Subarray Sums Divisible by K
    [Swift]LeetCode976. 三角形的最大周长 | Largest Perimeter Triangle
    [Swift]LeetCode345. 反转字符串中的元音字母 | Reverse Vowels of a String
    [Swift]LeetCode343. 整数拆分 | Integer Break
  • 原文地址:https://www.cnblogs.com/javaguide/p/13750810.html
Copyright © 2020-2023  润新知