Приближается маршрут изучения языка Go

Go
Приближается маршрут изучения языка Go

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

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

Для пояснения, все книги, упомянутые в статье, можно найти на официальном аккаунте [где розедуан пишет】 Фоновый ответ, соответствующий получению ключевых слов: [алгоритм, операционная система, сеть, база данных, Go, микросервис], самостоятельный сбор по запросу.

1. Базовые знания

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

1.1 Структуры данных и алгоритмы

Рекомендуем ознакомительные книги «Структура данных Dahua», «Ага! Алгоритмы», «Комические алгоритмы: Алгоритмическое путешествие Сяо Хуэя», «Иллюстрации алгоритмов», если вы продвинуты, вы можете прочитать «Введение в алгоритмы» и «Алгоритмы».

在这里插入图片描述

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

Если вы консолидируете свои алгоритмы знания, вы можете предпринять несколько вопросов на LeetCode. Конечно, эта часть контента также имеет роль, то есть, чтобы справиться с интервью, все это знает. На моем Github есть проект, который может помочь учиться и консолидировать алгоритмы, адрес:

GitHub.com/rose segment/Али…

В проекте используются Go, Java и Python для реализации общих структур данных и алгоритмов, а также связанных тем Leetcode.

1.2 Операционная система

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

Рекомендуемые учебные ресурсы: книги «Концепции операционных систем», «Углубленное понимание компьютерных систем», «Современные операционные системы».在这里插入图片描述Если вы не умеете читать книгу, я вас очень хорошо понимаю (потому что я тоже не умею ее читать), вот онлайн-курс по операционной системе, рекомендованный школой:

woo woo woo. xuetangxue.com/course/ u0 ...

Это открытый курс Университета Цинхуа.Концепции относительно простые и простые для понимания.Если вы хотите продвинуться и углубиться, есть также дополнительные эксперименты с операционной системой, которым вы можете следовать.

1.3 Компьютерные сети

Основные книги: "Иллюстрация HTTP", "Иллюстрация TCP_IP", "Как соединяется сеть".

Продвинутые книги: "Компьютерный сетевой метод сверху вниз", "Подробное объяснение TCP_IP".

在这里插入图片描述

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

1.4 База данных

Излишне говорить о важности базы данных, необходимых знаний.

Освоить базовый sql не должно быть сложно.Вы можете попрактиковаться самостоятельно.Рекомендуемые книги "SQL Must Know and Know" и "MySQL Must Know and Know".

Если вы хотите продвинуться вперед, вы можете узнать больше о некоторых основных концепциях проектирования базы данных, порекомендовать книгу «Концепции системы баз данных», для расширенных знаний MySQL, таких как модель хранения дерева B+, транзакция, индекс, блокировка и т. д., порекомендуйте книга "Высокопроизводительный MySQL", "Внутренние технологии MySQL: механизм хранения InnoDB.在这里插入图片描述

2. Основы языка Go

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

Рекомендуются вводные книги "Заметки по изучению языка Go", "Руководство по изучению языка Go", "Head First Go". Следуйте инструкциям, чтобы ввести больше кодов, и нет больших проблем с началом работы.在这里插入图片描述Есть также некоторые материалы, которые я сохранил для изучения языка Go онлайн:

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

  • звездные карты:Github.com/caa RL OS0/тело ...Функция состоит в том, чтобы генерировать звездный проект Trend Trend Github выше, основной код небольшой, подходит для практики руки.
  • проглотил:GitHub.com/здесь ADO van/go…, небольшая игра, написанная на Go.
  • пакет:GitHub.com/но ICA T/сканеры…, также небольшая игра, написанная в ходе, каждый шаг имеет подробное описание и реализацию кода.
  • WeChat-гоу:Github.com/ Сонг Тяньи/..., реализация Go API веб-версии WeChat, имитирующая функции входа/контакта/обмена сообщениями веб-версии WeChat.

3. Продвинутый язык

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

Обратите внимание, что этот контент относительно независим, может просматривать, не будет мешать тому, что вы узнаете.

Здесь рекомендуются книги «Язык программирования Go» (известная как «Библия Go»), «Программирование на языке Go Expert» и «Продвинутое программирование на языке Go».在这里插入图片描述Учебные онлайн-материалы:

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

  • розовое:GitHub.com/rose segment/RO…, без зазрения совести рекомендую собственный проект, простой и эффективный механизм хранения k-v, реализованный на Go.

  • Гочат:GitHub.com/lock git/go cart…, легкая система im, реализованная на языке Go, вы можете проверить ее, если вы знакомы с сетями или интересуетесь ими.

  • 7DaysГоланг:GitHub.com/geek-tutu/7…, 7 дней использования Go для реализации веб-фреймворка, распределенного кэша, ORM-фреймворка, RPC-фреймворка с нуля, кода немного, но качество неплохое.

5. Веб-разработка

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

Рекомендуемая книга "Go Web Programming".在这里插入图片描述Вы можете изучить веб-фреймворки Gin и beego: оба фреймворка относительно популярны, вы можете выбрать один из них, рекомендуется Gin. Все официальные документы на китайском языке. Нажмите на демо, чтобы узнать, как обрабатывать HTTP-запросы.

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

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

Рекомендуется несколько основных веб-проектов, созданных с помощью Go:

  • джин-вью-админ:GitHub.com/flipped-AU R…, система фонового управления, построенная с использованием фреймворка Gin.
  • перевозить:Github.com/crap/share..., Система рабочих заданий отделена от передней и задней части пользовательского интерфейса GIN + VUE + ELEMENT.
  • идти-админ:GitHub.com/go-admin-spec…, Gin + Vue + Element UI интерфейсная и внутренняя система управления разделением полномочий.

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

6. Микросервисы

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

Рекомендуется базовая книга с обзором микросервисов «Проектирование микросервисов» и «Шаблоны проектирования архитектуры микросервисов», которая может помочь вам понять некоторые основы моделирования, интеграции, тестирования, развертывания и мониторинга микросервисов.在这里插入图片描述Мы рекомендуем GoKit, GoMicro, go-zero и kratos, которые представляют собой платформы микросервисов на языке Go. Вы можете выбрать любой из них, чтобы понять их основное использование, дизайн и многое другое. Среди них go-zero и kratos с открытым исходным кодом в Китае, поэтому есть более подробные китайские документы.

Вот рекомендуемый онлайн-учебный материал:

Извините насчёт Валентина.IO/микро, Вик...

Реализуйте простой проект микросервиса Go вручную. Вы можете узнать о микросервисах через этот проект, и есть китайская версия.


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