Скачать Оптимизация Go, как в BigTech [Balun Courses]

Капоне

Администратор
Регистрация
1 Апр 2015
Сообщения
153.942
Реакции
465.805
**Складчина: Оптимизация Go, как в BigTech [Balun Courses]**

Курс помогает решить следующие проблемы:

1. Необходимо разобраться в perf-снимоте и коде сторонних библиотек при работе с Go.
2. Отсутствует понимание процесса оптимизации кода в глубоких слоях языка.
3. Желание заниматься более сложным и низкоуровневым программированием.
4. Затруднения с пониманием исходного кода на Go из-за недостаточного знания языка и архитектуры компьютера.
5. Подготовка к собеседованиям в BigTech: ответы на вопросы о внутреннем устройстве Go и Computer Science.

За 5 недель вам предлагается освоить следующее:

1. Computer science для работы в BigTech: понимание выполнения кода от языкового синтаксиса до машинного кода.
2. Устройство операционной системы, работа с calling convention и syscalls.
3. Использование ассемблера в Go для языковых оптимизаций.
4. Оптимизация кода на примере компаний BigTech и низкоуровневого программирования.
5. Глубокое понимание работы low-level пакетов: unsafe, runtime, reflect, debug.
6. Применение профайлера для оптимизации CPU, памяти и блокировок.
7. Повышение уровня ЗП и ценности как специалиста в компании благодаря полученным знаниям.

**Содержание курса:**

### Основы Computer Science. Часть 1

#### Урок №1 – Микроархитектура процессора

- Индустриальный стандарт ISA, организация памяти, чипсеты.
- Архитектура CPU, работа конвейера, устройство регистров, виды команд.
- SMT, hyperthreading, пример процессора на Verilog.

#### Урок №2 – Оперативная, кэш-память

- Устройство кэша процессора, уровни кэша, стратегии кэширования.
- Устройство оперативной памяти, таблицы страниц, адресация, DMA.

**Результат:**
- Освоение основ Computer Science для успешных собеседований.
- Умение ускорять код через понимание его исполнения.

### Основы Computer Science. Часть 2

#### Урок №3 – Архитектура операционных систем

- Введение в ОС, типы архитектур, user/kernel space, прерывания.
- Системные вызовы, управление памятью, примеры xv6.

#### Урок №4 – Управление памятью в ОС

- Управление памятью, таблицы адресов, фрагментация памяти.
- Абстракции ОС: процессы, потоки, буферизация.

**Результат:**
- Углубленное знание Computer Science для собеседований.
- Умение ускорять код через понимание выполнения.

**Домашнее задание:**
- Написать программы, взаимодействующие с ОС через syscalls и каналы в Go.

### Неделя 3
### Ассемблер в Go и работа со стеком

#### Урок №5 – введение в ассемблер Go

- Типы инструкций, кроссплатформенность, адресация.

#### Урок №6 – инструкции работы со стеком

- Стек программы, инструкции, локальные переменные, соглашения вызова.

**Результат:**
- Понимание трансляции программы в ассемблерный код.
- Навык написания программ на ассемблере.

**Домашнее задание:**
- Написать программу на ассемблере Go.

### Неделя 4
### Дополнительные фишки оптимизации, кодинг бенчмарков

#### Урок №7 – устройство памяти в Go, бенчмарки

- Устройство памяти, аллокатор Go, бенчмарки.

#### Урок №8 – оптимизации в Go

- Устройство Go, оптимизации, работа с пакетом unsafe.

**Результат:**
- Понимание устройства рантайма Go и его оптимизация.
- Умение работать с low-level пакетами и рефлексией.

**Домашнее задание:**
- Написать свою реализацию RPC с использованием рефлексии Go.

### Неделя 5
### Рантайм в Go и профилирование

#### Урок №9 – управление внутренним состоянием рантайма Go

- Управление рантаймом, профилирование, аллокаторы.

#### Урок №10 – профилирование в Go

- Виды профилировщиков, работа с ними.

**Результат:**
- Оптимизация приложений через управление рантаймом.
- Навык профилирования приложений.

**Домашнее задание:**
- Создание микросервиса с CGO, профилирование, использование PGO.
 
Сверху