Программирование

Начать. Это бесплатно
или регистрация c помощью Вашего email-адреса
Программирование создатель Mind Map: Программирование

1. БД

1.1. SQL

1.1.1. MySQL

1.1.1.1. Движки

1.1.1.1.1. InnoDB

1.1.1.1.2. MySAM

1.1.1.2. Блокировки

1.1.1.2.1. Явные

1.1.1.2.2. Неявные

1.1.1.2.3. READ BLOCK

1.1.1.2.4. WRITE BLOCK

1.1.1.3. Оптимизация

1.1.1.3.1. EXPLAIN SELECT

1.1.1.3.2. Порядок индексов

1.1.1.3.3. Денормализация

1.1.1.3.4. Тюнинг настроек БД

1.1.1.3.5. Профилирование

1.1.1.3.6. Анализ логов

1.1.1.4. Фишки и конструкции языка

1.1.1.4.1. Виртуальные столбцы

1.1.2. Индексы

1.1.2.1. Составные

1.1.2.1.1. Нужно составлять в правильном порядке (селективность), сначала те которые дают более узкий диапозон значений, а потом уже остальные

1.1.2.2. Кластерные

1.1.2.2.1. Бинарное дерево

1.1.2.2.2. Хранит значение поля

1.1.2.2.3. Более медленный т.к новые данные вставляются не в конец а в конкретный узел в дереве O(log n)

1.1.2.3. Некластерные

1.1.2.3.1. Бинарный поиск делением на два

1.1.2.3.2. Хранится как отсортированый список

1.1.3. Конструкции языка

1.1.3.1. Group BY

1.1.3.2. SELECT INTO

1.1.4. Триггеры

1.1.5. Хранимые процедуры

1.1.6. Функции

1.1.7. Виртуальные таблицы (Интерфейсы)

1.1.8. Номализация

1.1.9. PostgreSQL

1.1.9.1. PL/pgSQL

1.1.9.2. Книга-справочник

1.1.9.3. Индексы

1.1.9.4. MMCV

1.1.9.5. Параллелизация запросов на чтение и запись

1.1.9.6. Пулл подключений

1.2. NoSQL

1.2.1. ElasticSearch

1.2.2. MongoDB

1.2.3. Выборки с помощью MapReduce и клиенстких библиотек, которые предоставляют возможность выборки с группировкой, агрегацией и фильтрацией

1.3. BigData

1.3.1. MapReduce

1.3.1.1. Hadoop

1.3.1.2. Apache Spark

1.3.2. mahout

2. ЯП

2.1. PHP

2.1.1. Позднее статическое связывание

2.1.2. Traits

2.1.2.1. Решение конфликтов имен в методах трэйтов с помощью переопределения обоасти видимости в использующем классе или конструкции instedof в use, трейты не создают иерархию классов, класс используемый трейт не является членом этого класса

2.1.3. Frameworks&Labraries

2.1.3.1. Zend2

2.1.3.2. Symphony

2.1.3.3. Laravel

2.1.3.4. Yii

2.1.4. Документирование

2.1.4.1. PHPDoc

2.1.4.2. API : swagger, spotlight для написания документации в визуальном редакторе и выгрузки его yaml

2.1.5. Дебаг

2.1.5.1. Xdebug

2.1.5.2. Monolog

2.1.5.3. Sentry

2.1.6. PSR

2.1.7. Процесс интерпритации

2.1.8. Профилирование

2.1.8.1. xdebug

2.1.8.2. xhprof

2.1.8.3. tideways

2.1.9. Zend Engine

2.1.9.1. OpCodes (operation codes)

2.1.9.2. OpCache

2.1.9.2.1. eAccelerator

2.1.9.2.2. xCache

2.1.9.2.3. Zend Optimizator

2.1.10. PCNTL forks (Для многопоточности в php)

2.1.11. HIP-HOP php (трансляция php в C++)

2.1.12. Zval

2.1.13. Code Playground | SoloLearn: Learn to code for FREE!

2.1.14. SPL

2.1.14.1. Стандартная библиотека PHP, с версии 5.0 поставляется вместе с ядром, содержит много полезных интерфейсов и их готовых реализаций, для работы с разными струтурами данных (очереди, стэки, кучи) и другие классы

2.2. Общая теория

2.2.1. Структуры данных

2.2.1.1. Массив

2.2.1.1.1. Быстрый поиск O(log n)

2.2.1.1.2. Медленное удаление и вставка O(n)

2.2.1.2. Хэш-таблицы

2.2.1.2.1. Коллизии

2.2.1.2.2. Хэш-функция

2.2.1.2.3. Мнгновенное чтение, втавка и удаление O(1). Быстрые ребята, эти хэш таблицы

2.2.1.3. Связанные списки

2.2.1.3.1. Медленный поиск O(n)

2.2.1.3.2. Быстрое удаление и чвставка O(1)

2.2.1.4. Стэк

2.2.1.5. Очередь

2.2.1.6. Коллекция

2.2.1.7. Куча

2.2.1.8. Бинарное дерево

2.2.1.8.1. Красно-черные деревья O(log n)

2.2.1.8.2. Обычное бинарное дерево, в худ. случае - O(n) (дерево не сбалансировано и перекошено), в лучшем - O(log n)

2.2.2. Виды

2.2.2.1. Компилируемые

2.2.2.2. Интерпритируемые

2.2.2.3. Иперативные

2.2.2.4. Декларативные

2.2.3. Типизация

2.2.3.1. Статическая / динамическая

2.2.3.2. Строгая / нестрогая

2.2.3.3. Явная / неявная

3. Принципы

3.1. SOLID

3.1.1. Открытости-закрытости

3.1.2. Единственной обязаности

3.1.3. Разделение интерфейсов

3.1.4. Принцип Барбары Лисков

3.1.5. Инверсия зависимости

3.2. DRY (Don't repeat yourself)

3.3. KISS (Делай проще, не усложняй)

3.4. TDD

3.5. ООП

3.5.1. Инкапсуляция

3.5.2. Наследование

3.5.3. Полиморфизм

3.6. ABAC vs RBAC

3.7. Другие

3.7.1. Ограниченные контексты

3.7.2. Декомпозиция от большего к меньшему

3.7.3. Избегать преждевременной декомпозиции

3.8. ACID

4. Паттерны

4.1. Порождающие

4.1.1. Singlenton

4.1.2. Prototype

4.1.3. Factory Method

4.1.4. Builder

4.1.5. Abstract Factory

4.2. Структурирующие

4.2.1. Facade

4.2.2. Decorator

4.2.3. Composite

4.2.4. Bridge

4.2.5. Adapter

4.3. Поведенческие

4.3.1. Strategy

4.3.2. State

4.3.3. Observer

4.3.4. Memento (Хранитель)

4.3.5. Mediator

4.3.6. Command

4.3.7. Chain of Responsibility

4.3.8. Visitor

4.3.9. Template Method

5. HightLoad

5.1. Кластеризация

5.1.1. Load Balancing

5.1.2. Шардинг БД

5.1.2.1. MySQL > 5.7 поддерживает автоматический шардинг

5.1.2.2. PostgresQL поддерживает автоматический шардинг

5.1.2.3. При добавлении нового шарда, необходимо делать перебалансировку данных на уровне приложения

5.1.2.4. Выборка усложняется, нельзя сделать выборку по нескольким таблица. Можно ввести ElasticSearch для выборок данных

5.1.2.5. Вертикальный шардинг

5.1.2.6. Горизонтальный шардинг

5.1.3. Репликация

5.1.3.1. Rsync

5.1.3.2. Особая файловая система

5.1.3.3. ОС поддерживающая события на изменения файлов

5.1.4. Партиционирование таблиц БД

5.2. Брокеры очередей

5.2.1. Apache Kafka

5.2.2. RabbitMQ

5.3. Оптимизация

5.3.1. HipHop php

5.3.2. Оптимизация БД: индексы, партиционирование, оптимизация SQL, денормализация

5.4. Проблемы

5.4.1. Блокировка сессий

6. Мониторинг

6.1. tcpdump

6.2. god

6.3. Zabbix

6.4. Nagios

6.5. Логгирование Sentry

6.6. nmon (ресурсы)

7. Linux

7.1. Сигналы

7.2. Команды CLI

7.3. Bash

7.4. Ngnix

7.4.1. Самый часто вызыввемемые хосты

7.5. Apache

7.5.1. mod_php

7.6. fpm-php

7.6.1. slowlog

7.7. VMware

7.8. Управление конфигурациями

7.8.1. Puppet

7.9. swaping

8. git

8.1. commands

8.1.1. Rebase

8.1.2. Merge

8.1.3. Cherry-pick

9. Деплой и CI

9.1. Jenkis

9.2. Docker

9.2.1. pupet

9.2.2. Chief

9.2.3. Docker SWAMP

9.2.4. Consul

9.2.5. Kubernetes

9.3. Amazon AWS

10. Тестирование

10.1. Unit

10.2. Функциональное

10.3. Автоматизация тестирования

11. Технологии

12. Протоколы

12.1. Авторизации

12.1.1. OAuth2

12.1.2. JWT

12.1.3. Сессии

12.1.4. ABAC

12.1.4.1. XACML

12.2. Сетевые

12.2.1. WebRTCP

12.2.2. HTTP

12.2.3. UDP

12.2.4. TCP

12.2.5. RTP

12.2.6. SIP

12.3. SSH

12.4. FTP

12.5. CGI

12.5.1. Как работает

12.6. FastCGI

12.7. REST

12.7.1. swagger

12.7.2. Иммутабельность засчет версионирования

12.7.3. Документирование

12.7.3.1. RAML

12.7.3.2. API Docs

12.7.3.3. OAS

13. Frontend

13.1. Тестирование

13.1.1. Cross Browser Testing Tool. 1000+ Browsers, Mobile, Real IE.

14. Безопасность

14.1. Экранизация вывода

14.2. Фиьлтрация ввода

14.3. Межсайтовый скриптинг

14.4. Fail2ban

14.5. Iptables

15. Методы разработки

15.1. TDD

16. Agile

16.1. scrum

16.2. canban

17. Алгоритмы

17.1. Поиска

17.1.1. Бинарный поиск

17.2. Динамического программирования

17.3. Графы

17.3.1. Поиск в ширину (не взвешеные)

17.3.2. Взвешеные и не взвешенные графы

17.3.3. Алгоритм Дейкстры (взвешеные графы)

17.4. Сортировка

17.4.1. Быстрая сортировка (быстрая константа)

17.4.2. Сортировка слиянием (медленная константа)

17.4.3. Сортировка выбором

17.5. Справка по сложности (скорости) алгоритмов