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

Kors

Администратор
Регистрация
12 Дек 2014
Сообщения
190.761
Реакции
246.029
**Складчина: Оптимизация Go, как в BigTech [Balun Courses]**

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

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

За 5 недель вы:

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

**Программа курса:**

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

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

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

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

- Внутреннее устройство кеша и оперативной памяти: кеш линии, кэширование, чтение/запись, memory endian, page tables, shared memory.

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

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

#### Урок №3 – Архитектура ОС

- Введение в операционные системы, прерывания, системные вызовы.
- Примеры операционных систем xv6.

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

- Механизмы управления памятью, виртуальные/физические адреса.
- Абстракции ОС: процессы, потоки, memory ordering.

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

**Домашнее задание:** Работа с syscalls, написание каналов в Go через syscall pipe.

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

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

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

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

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

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

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

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

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

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

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

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

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

**Домашнее задание:** Написание своей реализации RPC, оптимизация с использованием unsafe.

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

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

- Пакет runtime, управление внутренним состоянием рантайма Go.

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

- Профилирование в Go, работа с профилировщиком.

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

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