Часть 1. Введение
Тем: 4
Тема 1. Ввод-вывод
Содержание
- Потоки ввода-вывода
- Четыре вида потоков
- Операции с потоками
- Исключения ввода-вывода
- Файловый ввод-вывод и преобразование потоков
- Классы файловых потоков
- Кодировки и преобразование потоков
- Фильтрующие потоки
- Фильтрация
- Буферизация
- Дополнительные возможности потоков
- Эмуляция чтения и записи
- Конкатенация потоков ввода
- Подавление ошибок
- Расширенный ввод-вывод
- Платформонезависимый ввод-вывод
- Файлы с произвольным доступом
- Классы System и Console
- Дескрипторы файлов
- Файлы, каталоги, пути и разделители
- Операции с отдельными файлами
- Листинг каталогов
- Ввод-вывод в Java 7
- Файловые системы и пути
- Операции с отдельными файлами
- Листинг каталогов
- Ввод-вывод и исключения
- Идиома работы с ресурсами
- Работа с несколькими потоками
Примеры
zipДомашнее задание 1. Обход файлов
-
Разработайте класс
Walk, осуществляющий подсчет хэш-сумм файлов.-
Формат запуска:
java Walk <входной файл> <выходной файл>
- Входной файл содержит список файлов, которые требуется обойти.
-
Выходной файл должен содержать по одной строке для каждого файла.
Формат строки:
<шестнадцатеричная хэш-сумма> <путь к файлу>
- Для подсчета хэш-суммы используйте алгоритм FNV.
- Если при чтении файла возникают ошибки, укажите в качестве его хэш-суммы все нули.
- Кодировка входного и выходного файлов — UTF-8.
- Размеры файлов могут превышать размер оперативной памяти.
-
Пример
Входной файл samples/1 samples/12 samples/123 samples/1234 samples/1 samples/binary samples/no-such-fileВыходной файл 050c5d2e samples/1 2076af58 samples/12 72d607bb samples/123 81ee2b55 samples/1234 050c5d2e samples/1 8e8881c5 samples/binary 00000000 samples/no-such-file
-
Формат запуска:
-
Сложный вариант:
-
Разработайте класс
RecursiveWalk, осуществляющий подсчет хэш-сумм файлов в директориях. - Входной файл содержит список файлов и директорий, которые требуется обойти. Обход директорий осуществляется рекурсивно.
-
Пример:
Входной файл samples/binary samples samples/no-such-fileВыходной файл 8e8881c5 samples/binary 050c5d2e samples/1 2076af58 samples/12 72d607bb samples/123 81ee2b55 samples/1234 8e8881c5 samples/binary 00000000 samples/such-file
-
Разработайте класс
-
При выполнении задания следует обратить внимание на:
- Дизайн и обработку исключений, диагностику ошибок.
- Программа должна корректно завершаться даже в случае ошибки.
- Корректная работа с вводом-выводом.
- Отсутствие утечки ресурсов.
- Возможность повторного использования кода.
-
Требования к оформлению задания.
- Проверяется исходный код задания.
-
Весь код должен находиться в пакете
info.kgeorgiy.ja.фамилия.walk.
Тема 2. Collections Framework
Содержание
- Контейнеры
- Коллекции
- Интерфейс Collection
- Итераторы
- Класс AbstractCollection
- Множества
- Интерфейс Set
- Методы equals и hashCode
- Реализации множеств и базовые классы
- Списки
- Интерфейс List
- Итераторы по спискам
- Реализации списков и базовые классы
- Очереди и деки
- Интерфейс Queue
- Интерфейс Dequeue
- Реализации очередей и деков, базовые классы
- Коллекции
- Отображения
- Интерфейс Map
- Пары и проекции отображений
- Реализации отображений и базовые классы
- Упорядоченные коллекции
- Сравнение элементов и согласованность с equals
- Упорядоченные множества
- Упорядоченные отображения
- Очередь с приоритетами
- Алгоритмы
- Класс Collections
- Класс Arrays
- Устаревшие коллекции
Примеры
zipТема 3. Лямбда-выражения и потоки
Содержание
- Расширения интерфейсов
- Лямбда-выражения
- Функциональные интерфейсы
- Лямбда-выражения
- Ссылки на методы
- Поддержка лямбда-выражений в основных классах
- Типы-обертки
- Класс Objects
- Стандартные функциональные интерфейсы
- Поддержка лямбда-выражений в Collections Framework
- Необязательные значения
- Компараторы
- Новые методы коллекций и отображений
- Потоки значений
- Применение
- Типы потоков
- Создание и преобразование потоков
- Комбинаторы
- Стандартные коллекторы
- Реализация потоков
- Разбиваемые итераторы
- Обобщенные свертки
- Параллельное исполнение
- Применение
Примеры
zipБиблиография
Тема 4. Reflection
Содержание
- Введение в Reflection
- Идентификаторы типов (type tokens)
- Информация о типе
- Структура класса
- Поля
- Получение информации
- Чтение и запись значений
- Методы и конструкторы
- Получение информации
- Вызов методов
- Создание объектов
- Вложенные классы
- Поля
- Массивы
- Загрузка классов
- Загрузчики классов
- Иерархия загрузчиков
- Доступ к ресурсам
- Параметры типов
- Интерфейс Type и его потомки
- Generic-массивы
- Посредники
- Создание посредников
- Обработчики вызовов
- Применение посредников
Примеры
zipБиблиография
Часть 2. Инструменты
Тем: 3
Тема 5. Jar
Содержание
- Jar-файлы
- Инструмент командной строки
- API для работы с Zip, Jar и Gzip
- Манифесты
- Формат
- Основные атрибуты
Тема 6. Javadoc
Содержание
- Что такое Javadoc
- Структура Javadoc
- Javadoc-комментарии
- Типы тегов
- Блочные теги
- Общие теги
- Теги методов
- Строчные теги
- Ссылки
- Код и значения
- Применение Javadoc
- Объекты документирования
- Наследование Javadoc
- Компиляция Javadoc
Примеры
zipТема 7. Модули
Содержание
- Что такое модули
- Определение
- Объявление
- Module path
- Управление зависимостями
- Подключение зависимостей
- Экспорт пакетов
- Открытие пакетов
- Сервисы
- Определение сервиса
- Реализация сервиса и ее объявление
- Объявление использования сервиса
- Загрузка сервисов
- Модуляризованный JDK
Примеры
zipЧасть 3. Многопоточное программирование
Тем: 4
Тема 8. Введение в многопоточное программирование
Содержание
- Параллельное исполнение
- Развитие параллельных систем
- Потоки и процессы
- Типы параллелизма
- Итеративный
- Рекурсивный
- Обмен сообщениями
- Неделимые операции
- Безусловные
- Условные
- Свойства планировщика
- Потоки
- Создание потоков
- Состояния и свойства потоков
- Завершение потоков
- Механизм прерывания
Примеры
zipБиблиография
- Java Language Specification. Theads and locks
- Concurrency (Java Tutorial)
- Lea D. Concurrent Programming in Java
- Goetz B. Java Concurrency in Practice
- Garg V. Concurrent and Distributed Computing in Java
Тема 9. Взаимодействие потоков
Содержание
- Синхронизация и блокировки
- Синхронизация
- Неявные блокировки
- Активное ожидания
- Мониторы и условия
- Мониторы
- Условия и работа с ними
- Пассивное ожидание
- Внезапные пробуждения
- Модель памяти Java
- Атомарность операций
- Видимость изменений и барьеры
- Упорядоченность изменений
- Volatile-переменные
- Примеры многопоточных программ
- Двусторонний барьер
- Гарантированный тупик
- Уровни безопасности
- Неизменяемые объекты
- Потокобезопасные объекты
- Потоконебезопасные объекты
- Thread-local objects
Примеры
zipБиблиография
- Java Language Specification. Theads and locks
- Concurrency (Java Tutorial)
- Lea D. Concurrent Programming in Java
- Goetz B. Java Concurrency in Practice
- Garg V. Concurrent and Distributed Computing in Java
Тема 10. Задачи и средства многопоточного программирования
Содержание
- Классические задачи многопоточного программирования
- Доступ к разделяемому ресурсу
- Производители и потребители
- Читатели и писатели
- Обедающие философы
- Задания и работники
- Атомарные операции
- Виды атомарных операций
- CompareAndSet
- Применение атомарных операций
- Помеченные ссылки
- Блокировки и условия
- Блокировки
- Условия
- Блокировки чтения-записи
- Примитивы синхронизации
- Критические секции
- Семафоры
- Барьеры
- Защелки
- Рандеву
- Мониторы
- Решение классических задач многопоточного программирования
- Читатели и писатели
- Обедающие философы
- Задания и работники
Библиография
- Java Concurrency Utilities
- High Level Concurrency Objects (Java Tutorial)
- JSR 166: Concurrency Utilities
- Concurrent Programming with J2SE 5.0
- Эндрюс Г. Основы многопоточного, параллельного и распределенного программирования
- Goetz B. Java concurrency in practice
Тема 11. Concurrency Utilities
Содержание
- Многопоточные коллекции
- Блокирующиеся очереди
- Многопоточные отображения
- Самокопирующиеся коллекции
- Управление заданиями
- Исполнители
- Функции и результаты
- Отложенное исполнение
- Прочие возможности
- Интервалы времени
- Очереди с задержкой
Библиография
- JSR 166: Concurrency Utilities
- Concurrent Programming with J2SE 5.0
- Virtual Threads
- Getting to know synchronizers
- Эндрюс Г. Основы многопоточного, параллельного и распределенного программирования
- Goetz B. Java concurrency in practice
Часть 4. Сетевые приложения
Тем: 3
Тема 12. Работа с сетью
Содержание
- Введение
- Стек сетевых протоколов
- Протоколы IPv4 и IPv6
- Протокол TCP
- Протокол UDP
- DNS
- Адреса
- Адреса хостов
- Работа с DNS
- Адреса портов
- Работа с TCP
- Клиентский сокет
- Создание
- Управление ресурсами
- Закрытие части соединения
- Серверный сокет
- Создание
- Прием соединений
- Клиентский сокет
- Работа с UDP
- Датаграммы
- Исходящие
- Входящие
- Сокеты
- Создание
- Отправка и прием данных
- Датаграммы
- URI и URL
- URI
- Понятие об URI
- Структура URI
- Сравнение URI
- URL
- Понятие об URL
- Структура URL
- Сравнение URL
- URI
- Соединения
- Создание соединения
- Жизненный цикл соединения
- Быстрое установление соединения
- Поддержка протоколов
- Работа с HTTP
- Клиент
- Сервер
Примеры
zipТема 13. Сериализация и RMI
Содержание
- Сериализация
- Сериализация и десериализация
- Объектные потоки
- Автоматическая сериализация
- Ручная сериализация
- Настраиваемая сериализация
- Сериализация и версионирование
- Сериализация и дескрипторы
- Концепции RMI
- Предназначение
- Схема работы и стек протоколов
- Удаленные интерфейсы
- Stub и Skeleton
- Распределенная сборка мусора
- RMI Registry
- Применение RMI
Примеры
zipТема 14. Неблокирующий и асинхронный ввод-вывод
Содержание
- Буферы
- Операции
- Чтение и запись
- Байтовые буферы
- Типизированные буферы
- Каналы
- Иерархия каналов
- Байтовые каналы
- Файловые каналы
- Файлы отображаемые в память
- Блокировки
- Сетевые каналы
- Неблокирующий ввод-вывод
- Асинхронные каналы
Примеры
zipЧасть 5. Разное
Тем: 2
Тема 15. Интернационализация и локализация
Содержание
- Локали
- Локализация данных
- Создание ResourceBundle
- Загрузка ResourceBundle
- Использование ResourceBundle
- Форматирование
- Форматирование чисел
- Форматирование дат и времени
- Форматирование сообщений
- Работа с текстом
- Сравнение строк
- Разбиение текста
- Запись текста
Примеры
zipТема 16. Сборка мусора
Содержание
- Сборка мусора
- Сжимающие и копирующие сборщики
- Гипотеза о поколениях и ее применение
- Ссылки
- Типы ссылок
- Очереди ссылок
Примеры
zipЧасть 6. Интерфейс пользователя
Тем: 4
Тема 17. Стандартные компоненты
Примеры
zipТема 18. Обработка событий
Примеры
zipТема 19. Модели
Примеры
zipТема 20. JavaBeans
Часть 7. XML
Тем: 5