Голосов: 0
#1
Concurrency в Go [Balun.Courses, Владимир Балун]
Ты закроешь 95% вопросов по concurrency:
- Получишь глубокие знания и изучишь «подкапотную» Concurrency в GO для работы в крупных проекта
- Научишься писать параллельный код и разбираться в нем
- Изучишь множество паттернов использования параллельного программирования
- Попрактикуешься на реальных задачах, которые уже встречались или встретятся в рабочих проектах
- Разработаешь свою In-memory key-value базу данных c WAL-ом, снэпшотами и асинхронной репликацией
- Научишься решать задачи по Concurrency, которые встречаются на собеседованиях по Go
- Разработаешь свою In-memory key-value базу данных с асинхронной репликацией, которая станет сильным портфолио при трудоустройстве, мощной практикой для реальных проектов и убедительным подтверждением навыков для повышения ответственности и уровня ЗП на работе
- Ты получишь целый список учебников, статей, курсов и видео, которые позволят тебе изучать Concurrency после курса еще дальше и глубже
Результат:
- Pipeline процессора
- Устройство процессора и шина
- Кэши процессора, когерентность кэша (MESI), false sharing, store bufer, invalidation queue
- Виртуальная память (MMU, TLB, swapping)
- Алгоритмы планирования (FCFS, SJN, RR)
- Процессы и потоки
- Context switching
- Hyper-threading
- Сопрограммы
______________________________
- понимаешь, как выполняется код в рамках архитектуры компьютера и операционной системы
Результат:
- Внутреннее устройство горутины
- Внутреннее устройство планировщика Go
- Work sharing и work stealing
______________________________
- разбираешься во внутреннем устройстве горутин и планировщика GO, а также начинаешь понимать Concurrency модель в Go
Результат:
- Примитивы синхронизации (sync.WaitGroup, sync. Mutex, sync. Once)
- Проблемы конкурентного программирования (deadlock, livelock, data race, starvation)
- Внутреннее устройство mutex
- Go race detector
______________________________
- понимаешь, как синхронизировать конкурентный код при помощи примитивов синхронизации, а также знакомишься с основными проблемами конкурентного программирования
Результат:
- Примитивы синхронизации (sync.RWMutex, sync. Map, sync. Cond, sync. Pool, sync. atomic)
- Реализация (spinlock, recursive mutex, timed mutex, rw mutex, once)
- Cache contention
______________________________
- знакомишься с дополнительными примитивами синхронизации и знаешь, как писать свои, в случае необходимости
Результат:
- Буферизованные и небуферизованные каналы
- Однонаправленные каналы
- Внутреннее устройство каналов
- Share memory by communicating
- Producer and consumer
- Gracefull Shutdown
______________________________
- разбираешься во внутреннем устройстве каналов и понимаешь, зачем они нужны в Go
Результат:
- Promise and Future
- Fan-In and Fan-Out
- Generator
- Error group
- Pipeline
- Cancelation
- Or channel
- Bridge
______________________________
- понимаешь, где и как использовать каналы в GO
Результат:
- Контексты (TODO, Background, WithCancel, WithCancelCause, WithDeadline, WithTimeout, WithValue)
- Внутреннее устройство контекстов
- Gracefull shutdown
- Модели памяти (sequential, acquire/release, releaxed)
- Memory reordering
- Барьеры памяти
______________________________
- знаешь контексты и понимаешь, как правильно их использовать в GO, а также дополнительно знакомишься с моделью памяти в Go
Результат:
- Шардированная map
- Алгоритмы синхронизации (грубая, тонкая)
- Lock-free структуры данных (stack, queue)
- Линеаризуемость
- ABA проблема
______________________________
- знаешь нетривиальные алгоритмы синхронизации структур данных, а также понимаешь, как писать конкурентный код без блокировок
Результат:
- Реализация worker pool (fixed и dynamic)
- Реализация cache synchronization
- Реализация scheduler
- Реализация batcher
- ты самостоятельно прорешал(-а) реальные задачи, с которыми сталкивались современные IT-компании, и полностью готов(-а) применять все знания на практике в настоящих проектах
- ты готов(-а) к решению задач на собеседовании по GO
Пакет Стандарт
Похожие складчины
Для просмотра содержимого вам необходимо зарегистрироваться!
Для просмотра содержимого вам необходимо зарегистрироваться!
Последнее редактирование модератором: