Closing Remarks Learning to Excavate Knowledge From the Source Code of Excellent Projects

Closing Remarks - Learning to excavate knowledge from the source code of excellent projects #

Hello, I am He Xiaofeng.

Today is the last lesson of our column. First of all, I would like to express my sincere gratitude to you, my readers, for your support to this column. Congratulations to you for “graduating” when you see this. I have also “graduated”! From the preparation of the column to the end of the class, half a year has passed in the blink of an eye. This experience is unforgettable for me, and it can be said that there is both pain and joy. Today, as we conclude the course, I really want to have a chat with you.

To be honest, I am not very eloquent. I am a typical technical person. The starting point for doing this is still my love for technology. I hope to summarize my experience from these years and share it with more people as a reference and for further discussion and communication. I am very happy that I have achieved this and I feel a sense of accomplishment and fulfillment. But the writing process is indeed quite difficult, which caught me off guard. There is a significant difference between teaching and writing technical documents. I think the biggest difference is that in teaching, I need to design the content and make it both “easy to understand and comprehensive,” so that people at different stages can “understand, learn, and apply” it. That is my criterion.

We should learn to share and communicate. This is the biggest perception I have gained during the writing process.

In the process of writing, I constantly mobilize the knowledge and experience I have accumulated. Each lesson and each question requires me to organize my thoughts in my mind before I can write them down. It is a good opportunity to reinforce and upgrade my own knowledge system. Of course, I also encounter new doubts and questions, and even self-doubt, but that’s not important. What is important is that I solve them and broaden my knowledge. Moreover, I feel a kind of happiness when others benefit from my sharing, which is a form of affirmation.

Of course, although sharing and interest are the original intention, I also prepared for it. Before writing this column, I redefined the RPC framework I operated. The overall architecture was completely redesigned, and the code was completely rewritten. The main reason was that the old version of the RPC framework had too many patches due to repeated code iterations, making code maintenance very difficult. It was difficult to meet the new business requirements.

In the process of designing and writing the RPC framework, I drew lessons from existing RPC frameworks in the industry, which led to a comprehensive upgrade in my own understanding. As I mentioned in the Introduction, RPC is a powerful weapon for solving distributed system communication problems, and it is essential in the distributed systems I have encountered. This excites me.

Once I decided to redefine the RPC framework, I insisted on reviewing every line of code, even every comment, with the focus on the code’s extensibility, readability, and performance, striving for perfection. However, when writing the column, I didn’t write much code, because in my opinion, when designing the overall framework, implementing each feature, and solving a difficult problem, we must first have one or more complete and feasible ideas and solutions. Coding is just the process of translating the ideas and solutions into code. Of course, coding also requires solid basic skills, which cannot be denied.

Having said that, I still want to emphasize the focus of our column, so that you don’t get lost. I focused on the implementation ideas of some basic and advanced features of the RPC framework, as well as the solutions to certain types of problems.

In terms of content structure, in order to help you better learn the RPC framework, the entire column is designed to be relatively systematic. We start from the basic features of the RPC framework, move on to advanced features such as clustering and governance, and then delve into topics such as performance optimization and problem troubleshooting, gradually deepening your understanding.

I hope that by the end of this last lesson, you have completely understood my intentions and efforts!

Lastly, I want to give you a piece of advice, which is that you must learn to extract knowledge from the source code of excellent projects, combine it with your own insights and experience, solve one difficult problem after another, and form your own knowledge system. And sharing, as I mentioned earlier, is a good way to validate your achievements.

Finally, thank you again, my readers. Thank you for your support. Your encouragement and criticism are my greatest motivation to move forward. If you have any comments or suggestions, please let me know through the end-of-course questionnaire. I will take everyone’s feedback seriously.

I am He Xiaofeng, and I hope to see you again in the future!