Поговорите о том, как эффективно изучать проекты с открытым исходным кодом

Spring исходный код открытый источник
Поговорите о том, как эффективно изучать проекты с открытым исходным кодом

С наступлением эры открытого исходного кода, чтобы снизить затраты на разработку и повысить эффективность разработки, все больше и больше компаний используют различные проекты с открытым исходным кодом.Как разработчики, если вы можете в полной мере использовать ресурсы в проектах с открытым исходным кодом, вы не только улучшить свои практические способности, уровень профессиональных знаний и отличные архитектурные идеи, извлеченные из него.

В этой статье будут представлены некоторые идеи для изучения проектов с открытым исходным кодом.Я считаю, что после прочтения этой статьи Сяобай также сможет научиться понимать проекты с открытым исходным кодом, и ему больше не нужно бояться высокоуровневых проектов с открытым исходным кодом.

1 Ценность обучения

Подводя итог, ценность изучения проектов с открытым исходным кодом в основном включает следующие моменты:

  • Совершенствование профессионального уровня Многие универсальные знания, которые компании могут пойти в профессиональную область, особенно основные знания, могут учиться в проектах с открытым исходным кодом, таким как технологическая обработка, сетевая связь, обработка операционной системы и т. Д. Например, путем изучения режима постоянства RDB redis «сохранит снимок базы данных в текущей памяти в файлы диска», вы можете узнать, что он на самом деле находится в вилке операционной системы, а затем продолжает идти глубоко, рекомендовать родитель и Механизм дочернего процесса, технология копирования в записи.

Эти профессиональные знания могут быть связаны и расти как большое дерево, но если их не понять до конца, они не смогут соединиться и вырасти сами по себе. Когда у нас есть четкое понимание ключевых моментов проектов с открытым исходным кодом, знания тоже растут сами с собой, и могут катиться как снежный ком.

  • Улучшение навыков решения проблем

Изучая реализацию проектов с открытым исходным кодом, когда возникает онлайн-проблема, вы можете быстро найти суть проблемы и решить ее, изменив конфигурацию или изменив исходный код; или когда нет подходящего проекта с открытым исходным кодом, отвечающего требованиям. потребности бизнеса, вы можете преобразовать существующий проект с открытым исходным кодом, чтобы удовлетворить потребности бизнеса. Как хороший разработчик, избегайте попадания в «Оператор API"пассивная ситуация, очень важной целью изучения проектов с открытым исходным кодом является понимание того, как реализуются и оптимизируются их функциональные точки. Изучение знаний похоже на процесс вывода формул. Освоение базового использования API похоже на знание математических формул. Вы можете справиться с экзаменами, но вы можете понять их хорошо.Процесс вывода основан на помощи памяти и понимания,Знай это и знай, почему, мы также знаем, как решить те ситуации, когда формула не может быть установлена.

  • улучшение мышления

Изучая превосходную архитектуру зрелых проектов с открытым исходным кодом, вы можете обобщить и понять некоторые общие архитектурные идеи в разработке программного обеспечения, такие как достижение высокой доступности, в основном за счет избыточности данных кластера, такого как кластер Kafka, кластер HDSF; для достижения масштабируемости , вы можете рассмотреть возможность изменения уровня. Уровень изолирован от инвариантного уровня, а бизнес-реализация абстрагирована, например, некоторые расширяемые интерфейсы, зарезервированные Spring.

2 распространенных заблуждения

Есть несколько распространенных заблуждений об изучении проектов с открытым исходным кодом, из-за которых новичкам легко запугаться и легко сдаться или потратить много времени с небольшой выгодой:

学习开源项目是架构师,技术大牛的事,我作为新手根本难以学会,就算学了也用不到。

Обучение — это процесс, и вы не можете стать Даниэлем за одну ночь, но пока вы делаете первый шаг, вы всегда сможете осуществить свою мечту о Даниэле; я верю, что его можно собрать, а способность можно развить. улучшен. После обучения считается, что построение логического мышления и системы знаний значительно улучшится.Даже если проект не использует конкретные проекты с открытым исходным кодом, если вы столкнетесь с сопутствующими проблемами в будущем, вы можете использовать аналогии, чтобы сделать выводы из других , что тоже своего рода прогресс.

数据结构和算法很重要,我只要学习这项目中的2方面就可以了

Не зацикливайтесь только на структурах данных и алгоритмах.В опенсорс проектах эти два момента не так важны.Например очередь таймаутов в Netty реализована на основе красно-черных деревьев.На самом деле нам нужно знать только это, если нам не нужно преобразовать функцию в этом отношении. Важнее понять дизайн системы и схему реализации функции.

一头扎进源码进行学习

Многие новички верят в популярную фразу «Говорить дешево, покажи мне код» на форумах сообщества.

Фактически, изучение проектов с открытым исходным кодом должнонизходящийДа, исходный код нижнего уровня должен быть изучен в конце. Перед этим вам нужно изучить знания проектирования архитектуры, связанной с проектом. С этими знаниями, как если бы база данных имела индекс. Согласно индексу знаний , вы можете сделать целевые прорывы в исходном коде, такие как Точный подрыв крылатых ракет, естественно, более эффективен, чем ковровая бомбардировка.

3 4 уровня обучения

По глубине обучения и понимания обучение можно разделить на 4 уровня.

学习的4个层次

  • Основное обучение Есть проектвероятный, основнойпонимания, напримерЧто это за проект, какую роль он играет, как его использовать и какую проблему он решает. На собеседовании многие новички пишут в своих резюме об использовании многих технических фреймворков, на самом деле они зачастую только достигают этого уровня и если будут задавать дополнительные вопросы, то не смогут ответить.

  • Просмотр обучения есть один для проектасистематическийПонимать все аспекты системы, основные принципы, преимущества и недостатки, сценарии использования, элементы конфигурации и использование API. В реальной работе, если это рядовой член команды, этот уровень может быть достигнут для удовлетворения основных потребностей развития бизнеса, но если вы хотите заниматься более высокими технологиями, этого недостаточно.

  • Аналитическое обучение На основе изучения просмотра есть всестороннее понимание и практический опыт различных параметров производительности проектов с открытым исходным кодом. Достигнув этого уровня, в проектном производстве уже есть одна, есть определенная способность взять на себя роль основного основного развития.

  • изучение предмета На основе анализа и изучения человек имеет некоторое представление об исходном коде ключевых функциональных модулей проекта с открытым исходным кодом и может инкапсулировать и модифицировать исходный код в соответствии с фактическими потребностями или создать новое колесо на основе проекта. . На этом уровне у них часто есть возможность взять на себя роль технического лидера и технического лидера.

4 4 шага обучения

Для упомянутых выше уровней обучения ниже описано, как проводить обучение «сверху вниз» для достижения этих четырех уровней.

4.1 Базовое понимание обучения

Цель состоит в том, чтобы достичь уровня базового обучения, сВероятноПонимание, в том числе предпосылка проекта, сценарий проблем, функции проекта, сценарии использования, основные API. Ищете официальные документы, связанный в блоге, видео обучение могут быть.

После общего понимания системы, естественно, будут некоторые вопросы, такие как принцип реализации, преимущества и недостатки и т. Д. Последующее обучение с этими вопросами будет более эффективным.

4.2 Систематическое обучение и практика

Цель состоит в том, чтобы достичь уровня инспекционного обучения, ссистематический и комплексныйЗнание проекта, включая функции проекта, компоненты, основные принципы, сценарии использования, элементы конфигурации, использование API, сравнение преимуществ и недостатков с другими аналогичными проектами и т. д.

Этапы метода следующие:

  • 1 установка и эксплуатацияУстановите и запустите проект согласно соответствующей документации. В этом процессе необходимо обратить внимание на:

    • системные зависимостиПоскольку зависимые компоненты являются основой проектирования и реализации системы, мы можем понять ключевую информацию о системе.Например, наиболее важной зависимостью Memcached является высокопроизводительная сетевая библиотека libevent, мы можем грубо предположить, что сетевая реализация Memcached должна быть модель Reactor.
    • инструкция по установкеОбщий каталог установки — conf для хранения файлов конфигурации, logs для хранения файлов журналов, bin для хранения файлов журналов, а в разных проектах есть несколько специальных каталогов, например, в Nginx есть каталог html.Самый эффективный способ обучения — задавать вопросы.
    • Системные инструментынужен особыйСосредоточьтесь на командной строке и файлах конфигурации, они предоставляют 2 очень важных ключевых элемента информации: какими возможностями обладает система и как система будет работать. Эта информация является окном, в которое мы изучаем внутренние механизмы и принципы работы системы. В обычных условиях, если вы имеете общее представление о функции и принципе каждого параметра командной строки и элемента конфигурации, вы в основном знакомы с системой. На практике можно постоянно пытаться модифицировать элементы конфигурации, а потом наблюдать, что меняется в системе.
  • 2 Принципы и характеристики систематических исследованийЭто очень важно, потому что только четко понимая принципы и характеристики технологии, мы можем по-настоящему овладеть технологией и сделать разумный выбор при проектировании архитектуры.В этом процессе нам необходимо сосредоточиться на:

    • Основные принципы реализации ключевых функций Ключевые функции являются важными преимуществами этого проекта с открытым исходным кодом. Общие функции включают высокую производительность, высокую доступность и масштабируемость. Нам нужно сосредоточиться на том, как проект это делает.

    • Сравнительный анализ преимуществ и недостатков Преимущества и недостатки в основном анализируются путем сравнения, то есть мы сравниваем две похожие системы, чтобы увидеть различия в их реализации, а также преимущества и недостатки различных реализаций. Типичными сравнениями являются Memcached и Redis, Kafka и ActiveMQ и RocketMQ.

    • сцены, которые будут использоваться В каких сценариях проект применим, какие сценарии неприменимы и применимы распространенные в отрасли случаи.

На этом этапе мы можем изучить официальные документы по техническому дизайну, схемы архитектуры, схематические диаграммы или соответствующие технические блоги.Обычно более популярные проекты с открытым исходным кодом имеют много аналитических документов, и мы можем избежать повторных инвестиций на основе наших предшественников. Но следует отметить, что,Из-за различий в опыте, уровне, направленности и используемых версиях выводы, проанализированные разными людьми, могут быть разными или даже ошибочными., и поэтому не может быть полностью указан. Лучшим способом является сравнение нескольких сторон, то есть просмотр многих аналитических документов и сравнение их общего содержания и различий.

В то же время, если некоторые технические моменты трудно найти, и вы не уверены, вы можете написать пример для проверки, а также наблюдать и понимать конкретные детали с помощью инструментов печати журнала, отладки и мониторинга. Например, вы можете написать простую программу для использования Netty и наблюдать за сетевыми пакетами с помощью инструмента захвата пакетов, чтобы понять реализацию.

4.3 Тест системы

Если вы только учитесь и проводите исследования самостоятельно, вы можете обратиться к онлайн-документам по тестированию и анализу, ноОн должен быть протестирован, если он будет использоваться в производственной среде.. Поскольку результаты тестов, найденные в Интернете, могут не очень подходить для вашего собственного бизнес-сценария, если вы просто ссылаетесь на результаты тестов других, вы, вероятно, сделаете неправильные выводы, или используемая версия отличается, а результаты тестов достаточно разный.

Важно отметить, что тесты должны быть построены на основе этого проекта с открытым исходным кодом.систематическийНа основе понимания его нельзя протестировать сразу после установки, иначе элементы конфигурации могут быть неверными, а метод использования может быть неподходящим, что приведет к невозможности построить правильную среду и разработать разумные тестовые сценарии в соответствии с характеристиками бизнес, так что окончательные результаты испытаний могут быть получены ошибочные выводы и вводящие в заблуждение проектные решения.

Ниже приводится ссылка на общие идеи тестирования, и необходимо разработать тестовые случаи в соответствии с конкретными проектами и конкретными предприятиями.

  • Проверьте роль и влияние каждого элемента конфигурации и определите ключевые элементы конфигурации.
  • Выполнение тестов производительности в нескольких сценариях
  • Проводите стресс-тесты, запускайте их несколько дней подряд и наблюдайте за колебаниями процессора, памяти, дискового ввода-вывода и других показателей.
  • Выполните проверку неисправности: убейте, выключите питание, отсоедините сетевой кабель, перезапустите более 100 раз, переключитесь и т. д.

4.4 Ключевое изучение исходного кода

Изучайте и осмысливайте различные дизайнерские идеи и детали реализации кода проекта.Основное позиционирование — «знание», совершенство и бесконечное обучение. Это царство преследуют великие боги. Если вы хотите стать техническим руководителем команды и внести важный вклад в сообщество проекта, вам следует стремиться к этому уровню.

Код нужно не только читать, но и понимать и тестировать.Некоторые люди даже никогда не звонили в API.Они просто смотрят на код, когда он приходит, думая, что сэкономят время, а на самом деле идут к саморазвитию. разрушение.

Ключ к пониманию и тестированию исходного кода заключается в следующем:

  • 1 Получите стек вызовов в IDE Читать в ИДЕ. Легко переходить и просматривать определения в среде IDE, что намного эффективнее, чем просмотр их в Интернете. С помощью инструмента IDE запустите пример программы для трассировки и отладки, и вы сможете запустить стек вызовов программы, разбив точку.Компилируйте и отлаживайте, когда это возможно. Код, который можно отлаживать, почти непонятен.

  • 2 Нарисуйте стек вызовов Разобравшись с логикой вызова кода, используйте инструмент рисования, чтобы нарисовать код кода.Вы можете нарисовать: блок-схему, диаграмму классов, диаграмму вызовов, диаграмму последовательности и выбрать наиболее выразительную диаграмму для реальной ситуации.

Кроме того, обычно узнают больше о некоторых шаблонах проектирования. Таким образом, когда я вижу в названии proxy, builder, factory и тому подобное, я это понимаю. Горизонтально-слоистый, вертикальный блок. Код разделен на модули, некоторые из них являются основными, некоторые являются утилитами, парсерами и т. д. Вам нужно знать, на какой слой и какую часть вы смотрите.

Некоторые небольшие проекты не имеют четкой многослойности, и их не нужно форсировать. Это не только грамматические навыки, но и дизайнерские идеи и принципы.Независимо от того, читаете ли вы или нет, простейший критерий - это ли у вас уверенность в том, чтобы написать подобную вещь, если уделить достаточно времени..

Резюме за 5 шагов

На практике для полной реализации вышеперечисленных пяти шагов требуется много времени, обычно первые два шага необходимы при изучении проектов с открытым исходным кодом, третий шаг может быть реализован только тогда, когда вы планируете использовать проекты с открытым исходным кодом в своей работе. , Шаг 4 следует выполнять гибко, с определенным количеством времени и энергии.

Вместо того, чтобы просто понимать каждый проект с первого взгляда, лучше сосредоточиться на тщательном изучении проекта.Даже если для полного понимания одного проекта потребуется всего полгода, число все равно будет значительным после нескольких лет накопления. Кроме того, идеи многих проектов являются общими, например, решения высокой доступности, распределенные протоколы и т. д. Если вы тщательно изучите один, а затем аналогичные проекты, вы обнаружите, что скорость обучения очень высока, потому что вы освоили общие части, вам нужно только изучить новые проекты часть разницы.

При этом в процессе обучения необходимо постоянно подводить итоги, пересматривать и выводить конспекты, что, с одной стороны, необходимо для тренировки логического мышления, а с другой стороны, способствует создание указателя знаний.При просмотре в течение определенного периода времени вы можете быстро восстановить знания с помощью указателя, что нелегко забыть.

6 рекомендаций для нескольких проектов с открытым исходным кодом, удобных для новичков

После знакомства с теорией необходимо проверить на практике следующее: вот несколько общих сравнений серверной разработки, которые удобны для новичков и содержат больше информации для справки о проектах с открытым исходным кодом:

  • Spring

    Важность Spring, как самого популярного фреймворка в отрасли, очевидна. Следует отметить, что из-за огромной экосистемы Spring и ограниченной энергии новичкам рекомендуется выбирать для начала работы самые простые модули, такие как Spring JDBC Template, Spring IOC, Spring AOP, Spring MVC.

  • Mybatis

Являясь популярной в отрасли отличной структурой уровня сохраняемости, MyBatis поддерживает обычные SQL-запросы, хранимые процедуры и расширенные сопоставления.Количество кода невелико, и в Интернете есть много соответствующей информации об анализе исходного кода.Качество кода проект также относительно высок, что стоит прочитать.

  • Elastic-Job

    Как решение для распределенного планирования задач с открытым исходным кодом на Dangdang.com, Elastic-Job имеет высокую степень активности и популярности в сообществе.Благодаря обучению вы можете освоить некоторые знания в области распределенного общения и планирования.

  • Dubbo

Dubbo — это высокопроизводительная и превосходная платформа управления услугами с открытым исходным кодом от Alibaba, которая позволяет приложениям реализовывать функции вывода и ввода служб с помощью высокопроизводительного RPC. Dubbo возобновил техническое обслуживание в конце 2017 года. Он широко используется в бизнесе, и ожидается качественный скачок его технической мощи в управлении услугами и распределенных протоколах.

Более интересно, добро пожаловать на официальный аккаунт автора [архитектура распределенной системы]

Ссылаться на

С 0 начните изучать архитектуру - Алибаба Ли Юньхуа

Насколько эффективно изучать новые технологии

Несколько советов по изучению проектов с открытым исходным кодом

Как мне прочитать исходный код проекта с открытым исходным кодом