{"id":19023766,"url":"https://github.com/ppichugin/basejava","last_synced_at":"2026-04-19T05:33:22.026Z","repository":{"id":127932490,"uuid":"449679879","full_name":"ppichugin/basejava","owner":"ppichugin","description":"Web-приложение \"База данных резюме\"","archived":false,"fork":false,"pushed_at":"2022-08-19T14:26:58.000Z","size":251,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-02T01:25:01.761Z","etag":null,"topics":["java","postgresql","webapp"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ppichugin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-19T12:20:53.000Z","updated_at":"2022-05-18T13:13:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"9d961456-5db3-4566-b65a-3e2a95cf488a","html_url":"https://github.com/ppichugin/basejava","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppichugin%2Fbasejava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppichugin%2Fbasejava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppichugin%2Fbasejava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ppichugin%2Fbasejava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ppichugin","download_url":"https://codeload.github.com/ppichugin/basejava/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240072068,"owners_count":19743527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","postgresql","webapp"],"created_at":"2024-11-08T20:32:40.367Z","updated_at":"2025-10-16T17:43:36.532Z","avatar_url":"https://github.com/ppichugin.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Готовое демо-приложение доступно по адресу [http://resumes-demo.pichugin.kz](http://resumes-demo.pichugin.kz)\n\n***\n\n# [Курс BaseJava](http://javaops.ru/reg/basejava)\n\n## Разработка web-приложения \"База данных резюме\"\n\n- **Технологии:** Java 8, GitHub/Git, JUnit, Logging, GSON, JAXB, SQL, PostgreSQL, Сервлеты, HTML, JSP, JSTL, Tomcat,\n  Maven и многое другое\n- **Различные способы реализации хранения резюме:**\n    - в сортированном и не сортированном массиве\n    - в коллекциях (List, Map)\n    - в файловой системе:\n        - с использованием File и Path API\n        - в стандартной и кастомной сериализации Java\n        - в формате JSON ([Google Gson](https://en.wikipedia.org/wiki/Gson))\n        - в формате XML ([JAXB](https://ru.wikipedia.org/wiki/Java_Architecture_for_XML_Binding))\n    - в реляционной базе [PostgreSQL](https://ru.wikipedia.org/wiki/PostgreSQL)\n- **Установку (деплой) web-приложения:**\n    - в контейнер сервлетов [Tomcat](https://ru.wikipedia.org/wiki/Apache_Tomcat)\n    - в облачный сервис [Heroku](https://ru.wikipedia.org/wiki/Heroku)\n\n***\n\n## Программа курса\n\n#### Занятие 1\n\n- Обзор курса и методики обучения\n- Подготовка и настройка рабочего окружения\n- Подходы, применяемые при разработке ПО\n- Обзор инструментов и технологий, используемых Java-разработчиками\n- Введение в язык Java: история создания, JDK, JVM, JRE, JIT-компиляция\n- Системы управления версиями. Git\n- Домашнее задание\n\n#### Занятие 2\n\n- Типы данных\n- Введение в объектно-ориентированное программирование\n- Принципы ООП\n- Классы и объекты\n- Классы-обертки\n- Модификаторы доступа\n- Конструктор\n- Структура памяти java-программы: Heap (куча), Stack (стек)\n- Пакеты\n- Домашнее задание\n\n#### Занятие 3\n\n- Разбор домашнего задания\n- Обзор суперкласса Object\n- Связь между equals() и hashCode()\n- Статические методы и переменные\n- Программирование с помощью интерфейсов\n- Абстрактные классы\n- Сложность алгоритмов\n- Паттерн проектирования Template Method\n- Домашнее задание\n\n#### Занятие 4\n\n- Разбор домашнего задания\n- Конструктор\n- Работа со строками: String, StringBuilder, StringBuffer\n- String literal pool\n- Исключения (Exceptions)\n- Ключевые слова: this, super\n- Reflection\n- Аннотации\n- Введение в модульное тестирование. JUnit\n- Домашнее задание\n\n#### Занятие 5\n\n- Разбор домашнего задания\n- Коллекций. Иерархия классов\n- Списки (List)\n- Множества (Set)\n- Ассоциативные массивы (Map)\n- Введение в Iterator\n- Домашнее задание\n\n#### Занятие 6\n\n- Разбор домашнего задания\n- Паттерн проектирования Iterator\n- Autoboxing и Unboxing\n- Вложенные классы\n- Внутренние классы\n- Локальные классы\n- Анонимные классы\n- Введение в лямбда-выражения\n- Функциональный интерфейс\n- Домашнее задание\n\n#### Занятие 7\n\n- Разбор домашнего задания\n- Дженерики (Generic)\n- Введение в логирование. Log4J, Java Logging API\n- Паттерн проектирования Singleton\n- Перечисления (Enum)\n- Объектная модель\n- Домашнее задание\n\n#### Занятие 8\n\n- Разбор домашнего задания\n- Классы работы с датами: Date, Calendar, TimeZone\n- Дата и время в Java 8+\n- File API\n- Освобождение ресурсов: try-with-resources\n- Домашнее задание\n\n#### Занятие 9\n\n- Разбор домашнего задания\n- Обзор пакета java.io\n- Классы чтения/записи потоков: InputStream и OutputStream\n- Паттерн проектирования Decorator\n- Классы чтения/записи символов: Reader и Writer\n- Сериализация объектов\n- Обзор пакета java.nio\n- Введение в Java 8+ Stream API\n- Домашнее задание\n\n#### Занятие 10\n\n- Разбор домашнего задания\n- Паттерн проектирования Strategy\n- Работа с XML (JAXB)\n- Работа с JSON (GSON)\n- Классы чтения/записи примитивных типов: DataInputStream и DataOutputStream\n- Домашнее задание\n\n#### Занятие 11\n\n- Многопоточность\n- Закон Мура и Амдала\n- Потоки. Синхронизация доступа\n- Обзор методов класса Object\n- Ленивая инициализация\n- Java Memory Model\n- Deadlock\n- Домашнее задание\n\n#### Занятие 12\n\n- Разбор домашнего задания\n- Обзор классов java.util.concurrent\n- Синхронизаторы\n- ThreadLocal-переменные\n- Сравнение с обменом (Compare-and-swap)\n- Домашнее задание\n\n#### Занятие 13\n\n- Разбор домашнего задания\n- Введение в реляционные базы данных\n- Язык SQL\n- Обзор NoSQL баз данных\n- Установка и настройка СУБД PostgreSQL\n- Работа с базами данных из IDEA\n- Конфигурирование базы данных и каталога хранения\n- Подключение базы данных к проекту\n- Обзор JDBC-архитектуры\n- Домашнее задание\n\n#### Занятие 14\n\n- Разбор домашнего задания\n- Операции соединения таблиц. JOIN\n- Транзакции\n- Требования к транзакциям. ACID\n- Уровни изоляции транзакций в SQL\n- Установка и настройка контейнера сервлетов Tomcat\n- Домашнее задание\n\n#### Занятие 15\n\n- Разбор домашнего задания\n- Введение в HTML\n- Основы протокола HTTP\n- Настройка web.xml\n- Деплой web-приложения в Tomcat\n- Сервлеты\n- Домашнее задание\n\n#### Занятие 16\n\n- Разбор домашнего задания\n- Жизненный цикл сервлета\n- Создание динамических страниц. JSP\n- Расширенные возможности JSP. JSTL\n- Redirect и Forward\n- CRUD-операции\n- Домашнее задание\n\n#### Занятие 17\n\n- Разбор домашнего задания\n- Деплой приложения в облачный сервис Heroku\n- Загрузка классов в Java. Classloader\n- Домашнее задание\n\n## Книги с курса\n\n- [Джошуа Блох, \"Java. Эффективное программирование, 3-е издание\"](https://www.ozon.ru/context/detail/id/148627191/)\n- [Роберт Мартин, \"Чистый код\"](https://www.ozon.ru/context/detail/id/142429922/)\n- [Серия Head First, \"Паттерны проектирования\"](https://www.ozon.ru/context/detail/id/144233005/)\n- [Вайсфельд Мэтт, \"Объектно-ориентированный подход\"](https://www.ozon.ru/context/detail/id/166375103/?stat=YW5fMQ%3D%3D)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppichugin%2Fbasejava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fppichugin%2Fbasejava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fppichugin%2Fbasejava/lists"}