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

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

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

2. БД

2.1. SQL

2.1.1. MySQL

2.1.1.1. Движки

2.1.1.1.1. InnoDB

2.1.1.1.2. MySAM

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

2.1.1.2.1. Явные

2.1.1.2.2. Неявные

2.1.1.2.3. READ BLOCK

2.1.1.2.4. WRITE BLOCK

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

2.1.1.3.1. EXPLAIN SELECT

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

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

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

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

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

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

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

2.1.2. Индексы

2.1.2.1. Составные

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

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

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

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

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

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

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

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

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

2.1.3.1. Group BY

2.1.3.2. SELECT INTO

2.1.4. Триггеры

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

2.1.6. Функции

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

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

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

2.1.10. PostgreSQL

2.1.10.1. PL/pgSQL

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

2.1.10.3. Индексы

2.1.10.4. MMCV

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

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

2.2. NoSQL

2.2.1. ElasticSearch

2.2.2. MongoDB

2.3. BigData

2.3.1. MapReduce

2.3.1.1. Hadoop

2.3.1.2. Apache Spark

2.3.2. mahout

3. ЯП

3.1. PHP

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

3.1.2. Traits

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

3.1.3. Frameworks&Labraries

3.1.3.1. Zend2

3.1.3.2. Symphony

3.1.3.3. Laravel

3.1.3.4. Yii

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

3.1.4.1. PHPDoc

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

3.1.5. Дебаг

3.1.5.1. Xdebug

3.1.5.2. Monolog

3.1.5.3. Sentry

3.1.6. PSR

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

3.1.7.1. xdebug

3.1.7.2. xhprof

3.1.7.3. tideways

3.1.8. Zend Engine

3.1.8.1. OpCodes (operation codes)

3.1.8.2. OpCache

3.1.8.2.1. eAccelerator

3.1.8.2.2. xCache

3.1.8.2.3. Zend Optimizator

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

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

3.1.10. Zval

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

3.1.12. SPL

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

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

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

3.2.1.1. Массив

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

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

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

3.2.1.2.1. Коллизии

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

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

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

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

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

3.2.1.4. Стэк

3.2.1.5. Очередь

3.2.1.6. Коллекция

3.2.1.7. Куча

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

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

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

3.2.2. Виды

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

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

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

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

3.2.3. Типизация

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

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

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

4. Принципы

4.1. SOLID

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

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

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

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

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

4.2. DRY (Don't repeat yourself)

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

4.4. TDD

4.5. ООП

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

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

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

4.6. ABAC vs RBAC

4.7. Другие

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

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

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

4.8. ACID

5. Паттерны

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

5.1.1. Singlenton

5.1.2. Prototype

5.1.3. Factory Method

5.1.4. Builder

5.1.5. Abstract Factory

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

5.2.1. Facade

5.2.2. Decorator

5.2.3. Composite

5.2.4. Bridge

5.2.5. Adapter

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

5.3.1. Strategy

5.3.2. State

5.3.3. Observer

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

5.3.5. Mediator

5.3.6. Command

5.3.7. Chain of Responsibility

5.3.8. Visitor

5.3.9. Template Method

6. HightLoad

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

6.1.1. Load Balancing

6.1.2. Шардинг БД

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

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

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

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

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

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

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

6.1.3.1. Rsync

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

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

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

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

6.2.1. Apache Kafka

6.2.2. RabbitMQ

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

6.3.1. HipHop php

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

6.4. Проблемы

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

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

7.1. tcpdump

7.2. god

7.3. Zabbix

7.4. Nagios

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

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

8. Linux

8.1. Сигналы

8.2. Команды CLI

8.3. Bash

8.4. Ngnix

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

8.5. Apache

8.5.1. mod_php

8.6. fpm-php

8.6.1. slowlog

8.7. VMware

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

8.8.1. Puppet

8.9. swaping

9. git

9.1. commands

9.1.1. Rebase

9.1.2. Merge

9.1.3. Cherry-pick

10. Деплой и CI

10.1. Jenkis

10.2. Docker

10.2.1. pupet

10.2.2. Chief

10.2.3. Docker SWAMP

10.2.4. Consul

10.2.5. Kubernetes

10.3. Amazon AWS

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

11.1. Unit

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

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

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

13. Протоколы

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

13.1.1. OAuth2

13.1.2. JWT

13.1.3. Сессии

13.1.4. ABAC

13.1.4.1. XACML

13.2. Сетевые

13.2.1. WebRTCP

13.2.2. HTTP

13.2.3. UDP

13.2.4. TCP

13.2.5. RTP

13.2.6. SIP

13.3. SSH

13.4. FTP

13.5. CGI

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

13.6. FastCGI

13.7. REST

13.7.1. swagger

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

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

13.7.3.1. RAML

13.7.3.2. API Docs

13.7.3.3. OAS

14. Frontend

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

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

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

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

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

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

15.4. Fail2ban

15.5. Iptables

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

16.1. TDD

17. Agile

17.1. scrum

17.2. canban

18. Алгоритмы

18.1. Поиска

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

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

18.3. Графы

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

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

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

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

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

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

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

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