SOFAJRaft Contributor 专访|黄章衡:前进的力量源于实践

本文主要是介绍SOFAJRaft Contributor 专访|黄章衡:前进的力量源于实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本期专访来自「开源之夏」暑期 2021 突出贡献奖获得者 -- 黄章衡。

outside_default.png

迷你简历

6573515b865124a771a8f2d2690f7019.png

姓名:黄章衡

年龄:21

学校:福州大学

最喜欢的开源软件:K8s

最喜欢的数码产品:MAC

最喜欢的开源社区:SOFAStack

自我介绍

我来自福州大学 19 级计算机系,平常喜欢研究分布式和数据库。兴趣是参与开源项目,做开源贡献,我活跃参与了多个开源项目,包括 SOFAJRaft、TIDB 等等。

暑期2021项目:

SOFAStack 社区——

实现 SOFAJRaft Segment Log 的索引模块

b66e10d9407385cc9c0a5e45d7e72fd0.png

Q:据了解,你在本科期间获得了诸多奖项,有丰富的实践经验。这对你的专业能力有什么帮助,有什么经验可以和同学们分享?

参加一些竞赛可以帮助我提高自己的团队协作能力,同时让我在一些“大场景“下能够镇定自若。

我觉得参加竞赛最重要的是要找到合适的队友,团队里每个队员都要各司其职。此外,作为队长,应该统筹管理整个团队的项目进度。

Q:你目前了解的开源项目中,有让你受益匪浅的项目吗?它对你有什么启发?

SOFAJRaft 让我学习到了很多东西,其加深了我对 “Raft“共识算法的理解。同时,让我学习到了如何构建一个大型的分布式系统。现在有很多的分布式系统都是基于 Raft 算法来做的(比如 TIKV),这对于我学习别的分布式系统有很大的帮助。

Q:请简单介绍一下暑期2021中你的开源项目

该项目主要负责为 SOFAJRaft 基于 Java 构建一个新的日志存储系统 -- LogStorage, 以替换原有的基于 Rocksdb 的存储系统。

de3dc3731d6bc31b73ef9315b52ee9ce.png

Q:在项目进行中遇到的印象最深刻的困难是什么?

      如何解决的?有什么收获吗?

所谓“万事开头难“,一开始我就对如何设计这个日志系统的架构而发愁。我的解决方法是去做调研——包括寻找相关的论文,研究别的相关的分布式系统,看看是否能让我找到启发。

收获就是,这让我学习到了如何去解决问题,特别是当自己没有思绪的时候,应该学会去找资料来突破困境。此外,只要克服了一开始的困难,后面的路就好走了。

Q:之后会继续丰富这次活动的文档和代码吗?

      对这个项目的内容有更高的期待和计划吗?

会的。

目前这个系统在性能方面还有提高的空间,后面我会配合社区负责人推动该项目的合并,并不断地改进项目的存储性能。

Q:导师对你的项目评价颇高甚至超出预期,

      对于项目的申请及开发有什么经验可以分享?

首先,我觉得,在开源之夏这个活动中,一个好的导师是非常重要的。

我十分有幸遇到了我的导师——冯家纯, 其在暑期不断的帮我改进项目方案, 同时花了很多时间帮我 review 代码, 这促进了我能够较好的完成该项目。其实一开始的时候,我提交的申请方案并不是很完美,甚至可以说很差劲。但是老师给了我机会,他相信我可以做得更好。

此外,关于项目的申请,我觉得最重要的是尽早联系导师,并尽早提供项目方案。如果不知道如何设计方案,可以去借鉴一些相关的开源项目。

Q:请简单介绍做过的其他项目,

     过程中遇到的最印象深刻的难题是什么?

     你是怎么解决的?

这几个月,我尝试动手实践了 Tinykv (分布式 kv 存储) 和 Mit-6.830 (Database management system)这两门课程。学习过程中,凭借着我在 SOFAJRaft 社区打下的 “分布式基础“, 我目前已经完成这两门课程。

学习过程中最大的困难就是如何坚持做完。这两门课程的难度比较大,很多人做到一半就放弃了。不过 “开源之夏“的活动让我再次意识到 “坚持就是胜利“。

Q:对于提高代码质量、可读性和文章的完整性,

      有什么可以分享的学习方法吗

代码质量方面: 

我的导师在结课点评中送给我一句话: 

'What really makes xxx stand out is attention to low-level details.'

coding 的过程中一定重视代码的细节,要构建属于自己的代码风格,不能随意敲代码。 此外,代码风格也要遵循社区的代码风格。最后,在做到一定阶段的时候,应该让导师帮忙 code review。

文章的完整性: 

首先需要对所做的项目有一个全面的认知,文章结构可以按照: 

1.项目背景

2.技术背景知识

3.项目架构概述

4.优化点及测试性能

5.总结

Q:有加入开源社区吗?

      通过本活动,你对开源社区有什么新的理解?

我加入了 SOFAJRaft 、TIDB、 RocketMQ 社区。一个字! 香!

参加开源社区, 做开源项目,对我的面试求职,个人能力的发展,人脉的扩充都非常有帮助。同时,借助开源社区,我也认识越来越多的前辈!

   本周推荐阅读  

19ef21cc2a2036b368733ab38336f945.png

蚂蚁大规模 Sigma 集群 Etcd 拆分实践


d0efb025a3b58e9976d194ffa2449777.png

攀登规模化的高峰 - 蚂蚁集团大规模 Sigma 集群 ApiServer 优化实践


a3063a1abc2fb971b8c8ff2ab2748652.png

「网商双十一」基于 ServiceMesh 技术的业务链路隔离技术及实践


5ca979ba5d2bb787d7ad09241a8da7da.png

Prometheus on CeresDB 演进之路

8c00f1b8975309493bd0bb35ab5678df.png

这篇关于SOFAJRaft Contributor 专访|黄章衡:前进的力量源于实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423348

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt