База знаний разработчика
Разработка
- Кодирование
- Проектирование
Структуры и алгоритмы обработки данных
- Структуры данных
- Алгоритмы обработки данных
- Сортировки
- Устойчивые
- Неустойчивые
- Сортировки
- Сложность алгоритмов
- O(1) - константная
- O(n) — линейная
- O(log(n) — логарифмическая
- O(n*log(n)) - линеарифметический
- O(n^2) — квадратичная
- Дополнительно
- Литература
- Алгоритмы. Построение и анализ - Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн
- Абстракция данных и решение задач на С++. Стены и зеркала - Фрэнк М. Каррано, Джанет Дж. Причард
- Алгоритмы на C++ - Роберт Седжвик
- Алгоритмы на Java - Роберт Седжвик, Кевин Уэйн
- Структуры данных и алгоритмы в Java - Роберт Лафоре
- Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих - Адитья Бхаргава
- Видео
Паттерны
- Общие паттерны распределения обязанностей (General Responsibility Assignment Software Patterns, GRASP)
- Порождающие (Creational)
- Создатель экземпляров класса (Creator)
- Структурные (Structural)
- Информационный эксперт (Information Expert)
- Низкая связанность (Low Coupling)
- Устойчивый к изменениям (Protected Variations)
- Поведенческие (Behavioral)
- Не разговаривайте с неизвестными (Don’t talk to strangers)
- Высокое зацепление (High Cohesion)
- Контроллер (Controller)
- Полиморфизм (Polymorphism)
- Искусственный (Pure Fabrication)
- Перенаправление (Indirection)
- Порождающие (Creational)
- Базовые паттерны проектирования (Gang of Four)
- Порождающие (Creational)
- Структурные (Structural)
- Поведенческие (Behavioral)
- Цепочка обязанностей (Chain of responsibility)
- Команда (Command), Действие (Action) или Транзакция (Transaction)
- Интерпретатор (Interpreter)
- Итератор (Iterator) или Курсор (Cursor)
- Посредник (Mediator)
- Хранитель (Memento)
- Наблюдатель (Observer), Опубликовать / подписаться (Publish - Subscribe) или Delegation Event Model
- Состояние (State)
- Стратегия (Strategy)
- Шаблонный метод (Template method)
- Посетитель (Visitor)
- Паттерны представления
- Архитектурные системные паттерны
- Системные паттерны
- Сервисно-ориентированная архитектура (SOA)
- Вертикальное масштабирование (Vertical scaling)
- Горизонтальное масштабирование (Horizontal scaling)
- Отложенные вычисления (Deferred calculations)
- Асинхронная обработка (Asynchronous processing)
- Конвейерная обработка (Pipeline processing)
- Кэширование (Caching)
- Функциональное разделение (Functional separation)
- Шардинг (Sharding)
- Виртуальные шарды (Virtual shards)
- Центральный диспетчер (Central dispatcher)
- Репликация (Replication)
- Партиционирование (Partitioning)
- Кластеризация (Clustering)
- Денормализация (Denormalization)
- Избыточность (Redundancy)
- Параллельное выполнение (Parallel execution)
- Структурные паттерны
- Репозиторий (Repository)
- Клиент/сервер (Client/server)
- Модель предметной области (Domain model)
- Модуль таблицы (Data mapper)
- Многоуровневая система или абстрактная машина (Layers)
- Потоки данных (конвейер или фильтр)
- Паттерны управления
- Паттерны централизованного управления
- Вызов - возврат
- Диспетчер (Dispatcher)
- Паттерны управления, основанные на событиях
- Передача сообщений (Messaging)
- Управляемый прерываниями (Interrupt driven)
- Паттерны, обеспечивающие взаимодействие с базой данных
- Активная запись (Active record)
- Единица работы (Unit of work)
- Загрузка по требованию (Lazy load)
- Коллекция объектов (Identity map)
- Множество записей (Record set)
- Наследование с одной таблицей (Single table inheritance)
- Наследование с таблицами для каждого класса (Class table inheritance)
- Оптимистическая автономная блокировка (Optimistic offline lock)
- Отображение с помощью внешних ключей (Foreign key mapping)
- Отображение с помощью таблицы ассоциаций (Association table mapping)
- Пессимистическая автономная блокировка (Pessimistic offline lock)
- Поле идентификации (Identity field)
- Преобразователь данных (Data mapper)
- Сохранение сеанса на стороне клиента (Client session state)
- Сохранение сеанса на стороне сервера (Server session state)
- Шлюз записи данных (Row data gateway)
- Шлюз таблицы данных (Table data gateway)
- Паттерны централизованного управления
- Системные паттерны
- Дополнительно
- Литература
Парадигмы, принципы, стандарты
- Парадигмы программирования
- Принципы
- SOLID - 5 основных принципов ООП
- Low in coupling and high in cohesion - низкая связанность и высокая связность
- DRY - Принцип “Не повторяйся”
- KISS - Принцип “Делай проще, дурачок”
- YAGNI - Принцип «Тебе это не понадобится»
- Принцип «Подделай, пока не сделаешь» (при разработке через тестирование)
- WYSIWYG - Принцип «Что видишь, то и получишь»
- LoD - Закон Деметры
- Правило бойскаута (из “Чистого кода” Роберта Мартина)
- Правило одной операции (из “Чистого кода” Роберта Мартина)
- Стандарты
- Методики
- Другое
- Литература
- Совершенный код - Стив Макконнелл
- Чистый код: создание, анализ и рефакторинг - Роберт К. Мартин
- Чистая архитектура. Искусство разработки программного обеспечения - Роберт Мартин
- Идеальный программист. Как стать профессионалом разработки ПО - Роберт Мартин
- Разработка требования к программному обеспечению - Карл И. Вигерс, Джой Битти
- Идеальная разработка ПО. Рецепты лучших программистов - Энди Орам, Грег Уилсон
Технологии
- Платформы
- .NET
- Языки
- C#
- F#
- Платформы
- .NET Framework
- .NET Core
- Фреймворки, библиотеки
- WinForms
- WPF
- UWP
- Xamarin
- Литература
- Языки
- JDK
- Языки
- Java
- Groovy
- Kotlin
- Scala
- Платформы
- Java SE
- Java EE
- Java ME
- Фреймворки, библиотеки
- Spring
- Spring Boot
- Spring Cloud
- Netty
- Литература
- Языки
- .NET
- Хранилища данных
- Очереди и брокеры сообщений
- Управление кластером
- Метрики и логирование
- Непрерывная интеграции и доставка (CI/CD)
- API документация
- Системы управления версиями
- Системы управления репозиториями
- Системы управления проектами
- Средства сборки проектов и управления зависимостями
- Бинарные репозитории и хранилища артефактов
- Анализаторы кода
- Виртуализация и контейнеризация