许田丰

132-5652-4889 | xtf0214@foxmail.com

教育背景

::: start

2021.09 - 2025.07

:::

郑州航空工业管理学院

:::

计算机科学与技术 - 本科

::: end

  • 主修课程:操作系统原理、计算机网络原理、计算机组成原理、面向对象程序设计、数据结构、数据库原理、编译原理、机器学习、算法分析与设计等。
  • 荣誉奖项:ACM/ICPC程序设计竞赛银奖,蓝桥杯国赛二等奖,团体程序设计天梯赛全国总决赛铜奖。

项目经历

::: start

高性能RPC框架

:::

2024.12 - 2025.1

::: end

项目描述:开发者可以引入 Spring Boot Starter,通过注解和配置文件快速使用框架,像调用本地方法一样轻松调用远程服务;还支持通过SPI机制动态扩展序列化器、负载均衡器、重试和容错策略等。

技术栈:Java +Etcd+Vert.x

项目亮点:

  • 核心架构:包括消费方调用、序列化器、网络服务器、请求处理器、服务注册器模块。
  • 网络服务器:基于Vert.x的HTTP服务器,实现服务提供者和消费者的高性能网络通信。
  • 服务注册器:使用线程安全的ConcurrentHashMap存储本地服务注册信息,可以根据服务名称获取到对应实现类,并通过反射完成方法调用。
  • 序列化器:为便于扩展,编写通用的序列化器接口,并基于Java原生的Object和ByteArray 输入输出流实现 JdkSerializer 序列化器,使得对象能够网络传输。
  • 请求处理器:基于Vert.x的Handler接口实现对请求的异步处理,将请求数据反序列化后,从服务注册器中找到服务实现类并通过反射机制调用。
  • 消费方调用:基于JDK动态代理+工厂模式实现,为指定服务接口类生成可发送HTTP请求的代理对象,实现远程方法的无感知调用。

::: start

在线评测系统OJ

:::

2024.9 - 2024.12

::: end

项目介绍:编程题目在线评测系统。 在系统前台,管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。 在系统后端,能够根据管理员设定的题目测试用例在自主实现的代码沙箱中对代码进行编译运行、判断输出是否正确。 其中,代码沙箱可以作为独立服务,提供给其他开发者使用。

技术栈:Spring Boot + Spring Cloud + Docker + Redis + MySQL+RabbitMQ

项目亮点:

  • 自主设计判题机模块的架构,定义了代码沙箱的抽象调用接口和多种实现类(比如远程/第三方代码沙箱),并通过静态工厂模式+Spring配置化的方式实现了对多种代码沙箱的灵活调用。
  • 使用 Java Runtime 对象的 exec 方法实现了对 Java 程序的编译和执行,并通过 Process 类的输入流获取执行结果,实现了 Java 原生代码沙箱。
  • 为保证沙箱宿主机的稳定性,选用 Docker 隔离用户代码,使用 Docker Java 库创建容器隔离执行代码,并通过 tty 和 Docker 进行传参交互, 从而实现了更安全的代码沙箱。
  • 为防止判题操作执行时间较长,系统选用异步的方式在题目服务中将用户提交id发送给RabbitMQ消息队列,并通过Direct交换机转发给判题队列,由异步更新提交状态。

专业技能

  • 熟悉Java编程,面向对象设计原则,深入理解JVM内存模型、垃圾回收机制及调优策略,熟悉线程池、并发工具类及锁机制,能够优化高并发场景下的系统性能,具备良好的代码规范意识。
  • 熟悉SpringBoot、SpringMVC,熟悉SpringCloud技术栈,了解IOC容器、AOP机制等核心原理。
  • 熟悉MyBatis与MyBatis-Plus,能够高效编写动态SQL,通过CRUD自动化提升开发效率。
  • 掌握MySQL数据库设计与优化,熟悉索引、事务处理、视图、存储过程、分库分表及读写分离。
  • 熟悉Redis缓存机制,掌握其常用数据结构及分布式锁、缓存淘汰策略。
  • 熟悉RabbitMQ的消息队列机制,掌握工作队列、发布/订阅、路由及死信队列等模式。
  • 掌握常用设计模式如工厂模式、单例模式、策略模式、代理模式等 。
  • 熟悉数据结构与算法、操作系统、计算机网络等计算机基础,熟悉HTTP、HTTPS、TCP/IP等通信协议。

Java基础:具有扎实的 Java 基础,掌握集合、多线程、异常、反射、泛型等基础知识,阅读过ArrayList、HashMap 等源码,了解其底层原理。

JVM:熟悉 JVM 虚拟机基本原理,包括 JVM 内存结构、调优参数、类加载机制、内存模型、双亲委派机制、垃圾回收等。

JUC:熟悉 Java 并发容器和锁,如 ConcurrentHashMap、Synchronized 等,掌握多线程、线程池、ThreadLocal、volatile、CAS、AQS、LOCK 锁等原理。

框架:掌握 Spring、SpringMVC、Mybatis、MybatisPlus、SpringBoot 等主流框架使用,熟悉SpringIOC、AOP原理。

微服务:掌握 SpringCloudAlibaba 微服务相关技术,如Nacos、OpenFeign、Gateway等,有过将单体项目改造为微服务项目的实践。

RabbitMQ:熟练使用 RabbitMQ 消息中间件,如模型架构,消息确认机制等,能在具体业务中解决常见的消息丢失,消息堆积,顺序性,延迟消息等问题。

MySQL:熟练掌握 MySQL 增删改查操作,存储引擎、索引原理、乐观锁和悲观锁机制,了解分库分表和SQL调优等。

Redis:熟悉缓存中间件Redis的基本数据类型,持久化机制、内存淘汰策略、缓存击穿、缓存穿透,和缓存雪崩产生的原因和解决方案。

设计模式:熟悉如单例、工厂、策略、责任链、代理、适配器等模式。

工具:熟悉使用 Maven、Docker、Git 和 Linux,有 Linux 下开发部署项目的实际经验。