Поток 2016го года. Прогресс потока.
- Лектор - Федор Лаврентьев; telegram - fediq
- Группы 594 и 595 - Антон Зверев
- Группа 596 - Даниил Анастасьев
- Группа 597 - Александр Кисленко; telegram - ignorer
- Калькулятор - дедлайн 14.10.2016 23:59 MSK
- Key-value storage - дедлайн 31.10.2016 23:59 MSK
- Оптимизация производительности
- мягкий дедлайн: 21.11.2016 23:59 MSK (после его наступления можно получить максимум 1 балл)
- жесткий дедлайн: 28.11.2016 23:59 MSK
- Если на момент дедлайна у преподавателя претензий к коду нет, задача считается принятой, за неё даётся 2 балла.
- Если на момент дедлайна тесты проходятся успешно, но у преподавателя есть замечания, задача считается сделанной, за неё дается 1 балл.
- Если на момент дедлайна тесты не проходятся или же pull request вообще не оформлен, задача считается не сделанной, за неё дается 0 баллов.
Стараемся придерживаться google-кодстайла.
Проще всего этого можно добиться, скачав настройки для кодстайла. Посмотреть, как их устанавливать, можно здесь.
После этого не забываем использовать кнопку Code/Reformat Code, хотя бы перед коммитом.
Обязательным является прохождение проверки Maven Checkstyle. Она происходит при запуске всех тестов (например, с помощью mvn test
или по клавише test во вкладке Maven Projects).
-
Java vs C++; Работа с исключениям и I/O
Примеры кода
Доп семинар Доп. литература: Head First Изучаем Java -
Паттерны проектирования
Доп. литература: Head First Паттерны проектирования -
Строки и обёртки над примитивными типами в Java. Антипаттерны
Доп. литература: Чистый код -
Рефлексия и сборка мусора в Java
Примеры кода
Хорошая статья про ссылки в Java
- Кей Хорстманн - Java. Библиотека профессионала. Том 1. Основы (десятое издание).
- Джошуа Блох - Java. Эффективное программирование.
- Brian Goetz et al - Java Concurrency in Practice.
- Эрих Гамма и др - Приемы объектно-ориентированного проектирования.
- Eric Redmond et al - Seven Databases in Seven Weeks.
- Oracle Java Code Conventions.
- Maven: The Definitive Guide.
- Spring Framework Reference Documentation.
- Предпосылки к появлению Java
- Примитивы
- java.lang.Object
- Классы, абстрактные классы, интерфейсы, внутренние классы, анонимные классы
- Наследование, переопределение методов
- Модификаторы доступа, инкапсуляция
- Обобщения (Generics)
- Лямбда-выражения
- Пакет java.util.Collections
- Компоновка программного кода
- Многослойная архитектура
- Порождающие шаблоны проектирования
- Структурные шаблоны проектирования
- Поведенческие шаблоны проектирования
- Потоки в JVM
- Критические секции, synchronized
- Java Memory Model
- Паттерны организации многопоточного кода
- Проблемы многопоточности
- Сборщик мусора
- Стратегии сборки мусора
- Слабые ссылки
- Пределы нагрузки JVM
- Оптимизация кода
- Профайлинг
- Тюнинг параметров JVM
- Reflection API
- Aspect-Oriented Programming
- Abstract Syntax Tree
- Фреймворки для компоновки сложных приложений
- Работа с SQL из Java
- HTTP в Java
- Парадигма REST
- Форматы сериализации
- Сравнение Java с другими языками
- Мотивация при выборе языка/фреймворка/сервиса