Полезные конспекты книг и авторские заметки по информационным технологиям. Без формул. Алексей Сергеевич Лот

Читать онлайн.
Название Полезные конспекты книг и авторские заметки по информационным технологиям. Без формул
Автор произведения Алексей Сергеевич Лот
Жанр
Серия
Издательство
Год выпуска 0
isbn 9785006032576



Скачать книгу

системы необходимо написать тесты и постоянно выполнять их.

      Рефакторинг – последовательная переработка кода.

      Рефакторинг проводится при наличии полного набора тестов.

      В системе не дублируется реализация.

      Применять повторное использованием даже в мелочах.

      Дублирование – главный враг системы.

      Код системы возможно понять без глубокого понимания решаемой проблемы.

      Постараться сделать код выразительным.

      Неравнодушие – драгоценный ресурс.

      Использовать прагматичный подход взамен бессмысленного догматизма.

      Применять нагрузочное тестирование.

      Многопоточность – стратегия устранения привязок.

      Многопоточность – аналогия работы нескольких компьютеров.

      Многопоточность повышает быстродействие не всегда.

      Многопоточность может изменить архитектуру.

      При многопоточности нужно предусмотреть проблемы многопоточной взаимной блокировки, одновременное обновление.

      Многопоточность требует больше производительности и кода.

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

      Ошибки в многопоточности обычно не воспроизводятся.

      Многопоточность обычно требует фундаментальных изменений в стратегии проектирования.

      Предусмотреть перебивание потоками друг друга (требуется знание обработки байт-кода и атомарных операций модели памяти).

      Многопоточные архитектуры должны отделяться от основного кода.

      Код реализации многопоточности имеет собственный цикл разработки, модификации и настройки.

      При написании кода многопоточности возникают специфические сложности.

      Предусмотреть обработку обращений к общему объекту.

      Инкапсулировать данные: жестко ограничить доступ и область видимости общих данных.

      Вместо использования общего объекта каждому потоку можно предоставить копию.

      Использовать синхронизацию.

      Потоки должны быть как можно более независимы.

      Постараться разбить данные на независимые подмножества, с которыми могут работать независимые потоки (возможно, на разных процессорах).

      Использовать потоково-безопасные коллекции.

      Использовать неблокирующие решения.

      Изучать доступные классы на предмет потоково-безопасности.

      Модели логического разбиения поведения программы при многопоточности:

      – производители-потребители: потоки-производители создают задания и помещают в буфер или очередь. Потоки-потребители извлекают задания из очереди и выполняют их. Производители перед записью дожидаются появления свободного места в очереди, а потребители дожидаются появления заданий в очереди. Производитель записывает задание и сигнализирует о том, что очередь непуста. Потребитель читает задание и сигнализирует о том, что очередь не заполнена. Обе стороны готовы ждать оповещения