2022-08-13 02:31:01 +03:00
\immediate \write 18{ texcount -sum -1 j-spec.tex > /tmp/wordcount.tex}
%\immediate\write18{texcount -sum -1 scenarios/jc-1-c.tex > /tmp/wordcount.tex}
2022-08-12 23:32:35 +03:00
\documentclass [12pt, a4paper] { report}
\usepackage [english,russian] { babel} % локализация и переносы
\usepackage { fancyhdr}
\usepackage { graphicx}
\usepackage { titlesec}
\usepackage { tikz}
\usepackage { indentfirst}
\usepackage { datetime2}
\usepackage { geometry}
\usepackage { enumitem}
\usepackage { multicol}
\usepackage { float}
\usepackage { fontawesome}
\usepackage { longtable}
\usepackage { tikz}
\usepackage { hyperref}
\usetikzlibrary { mindmap,trees}
\titlelabel { \thetitle . \quad }
2022-08-13 02:31:01 +03:00
\setcounter { tocdepth} { 1}
2022-08-12 23:32:35 +03:00
\babelfont { rm} { PT Astra Serif}
\babelfont { sf} { PT Astra Serif}
\babelfont { tt} { PT Mono}
\graphicspath { { ./pics/} }
2022-08-13 02:31:01 +03:00
\newcounter { slidenum}
\setcounter { slidenum} { 1} % set to 2 if want to exclude title page of presentation
\newcommand { \showslide } [1]{
\noindent \makebox [\linewidth] { \rule { .90\paperwidth } { 1.4pt} }
\begin { center}
\framebox { \includegraphics [page=\arabic{slidenum},width=.95\textwidth] { #1} }
\stepcounter { slidenum}
\end { center}
}
2022-08-12 23:32:35 +03:00
\newcommand { \wordcount } { \input { /tmp/wordcount.tex} }
\newcommand { \code } [1]{ \small { \texttt { \detokenize { #1} } } \normalsize }
\renewcommand \labelitemi { \textemdash }
\newenvironment { frm}
{ \begin { center} \begin { tabular} { |p{ 0.9\textwidth } |} \hline \\ }
{ \\ \\ \hline \end { tabular} \end { center} }
\fancypagestyle { plain} {
\setlength { \headheight } { 33pt}
\fancyhf { }
\lhead { \includegraphics [height=5mm] { logo.png} }
\rhead { И.И. Овчинников \\ \href { https://t.me/ivanigorevichfeed} { Telegram: ivanigorevichfeed} }
\chead { \thepage }
\cfoot { \faRocket }
\rfoot { В с е г о слов: \wordcount }
}
\geometry {
left=2cm,
right=1cm,
top=2cm,
bottom=2cm
}
\title { Т З на "Специализацию Java"}
\author { Иван Игоревич Овчинников}
\date { \today { } (\DTMcurrenttime )}
\setlist { nolistsep}
\setlist [itemize] { leftmargin=10mm}
\setlist [enumerate] { leftmargin=10mm}
\usepackage { subfiles}
\begin { document}
\maketitle
\tableofcontents
2022-08-13 02:31:01 +03:00
\pagestyle { plain}
2022-08-12 23:32:35 +03:00
\chapter { Java Core}
\section { Платформа: история и окружение}
2022-08-13 02:31:01 +03:00
\subsection * { Конспект лекции}
\subsubsection { Краткая история (причины возникновения)}
\begin { figure} [H]
\centering
\includegraphics [width=17cm] { jc-01-tiobe.png}
\caption { График популярности языков программирования TIOBE}
\label { pic:java-in-tiobe}
\end { figure}
\subsubsection { Базовый инструментарий, который понадобится (выбор IDE)}
2022-08-12 23:32:35 +03:00
\begin { itemize}
2022-08-13 02:31:01 +03:00
\item NetBeans - хороший, добротный инструмент с лёгким ностальгическим оттенком;
\item Eclipse - для поклонников Eclipse Foundation и швейцарских ножей с полусотней лезвий;
\item IntelliJ IDEA - стандарт де-факто, используется на курсе и в большинстве современных компаний;
\item Android Studio - если заниматься мобильной разработкой.
2022-08-12 23:32:35 +03:00
\end { itemize}
2022-08-13 02:31:01 +03:00
\subsubsection { Что нужно скачать, откуда (как выбрать вендора)}
\subsubsection { Из чего всё состоит (JDK, JRE, JVM, выбор версии)}
\subsubsection { Структура проекта (пакеты, классы, метод main, комментарии)}
\subsubsection { Отложим мышки в сторону (CLI: сборка, пакеты, запуск)}
\subsubsection { Документирование (Javadoc)}
\subsection * { Задания к семинару}
\begin { itemize}
\item Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
\end { itemize}
\subsection * { Сценарий лекции}
%\subfile{scenarios/jc-1-c}
2022-08-12 23:32:35 +03:00
\section { Управление проектом: сборщики проектов}
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
2022-08-13 02:31:01 +03:00
\subsection * { Задания к семинару}
2022-08-12 23:32:35 +03:00
\begin { itemize}
2022-08-13 02:31:01 +03:00
\item Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить е г о в локальный кэш артефактов;
2022-08-12 23:32:35 +03:00
\end { itemize}
\section { Специализация: данные и функции}
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы; Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными); Функции: параметры, возвращаемые значения, перегрузка функций;
2022-08-13 02:31:01 +03:00
\subsection * { Задания к семинару}
2022-08-12 23:32:35 +03:00
\begin { itemize}
2022-08-13 02:31:01 +03:00
\item Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
\item Сравнить без условий две даты, представленные в виде трёх чисел г г г г -мм-дд;
2022-08-12 23:32:35 +03:00
\end { itemize}
\section { Специализация: ООП}
Инкапсуляция: Классы и объекты (внутренние классы, вложенные классы, static, private/public, final, интерфейс взаимодействия с объектом), перечисления (создание, конструкторы перечислений, объекты перечислений, дополнительные свойства); Наследование: extends, Object (глобальное наследование), protected, преобразование типов, final; Полиморфизм: override, abstract, final;
2022-08-13 02:31:01 +03:00
%\subfile{scenarios/jc-4}
2022-08-12 23:32:35 +03:00
\section { Специализация: Тонкости работы}
Файловая система и представление данных; Пакеты \code { java.io} , \code { java.nio} , \code { String} , \code { StringBuilder} , string pool, ?JSON/XML?
\chapter { Java Development Kit}
\section { Исключения}
Механизм и понятие, введение в \textbf { многопоточность} , throw; Наследование и полиморфизм в исключениях; Способы обработки исключений (try/catch, throws, finally); try-with-resources, штатные и нештатные ситуации
\section { Интерфейсы}
Понятие и принцип работы, implements; Наследование и множественное наследование интерфейсов; Значения по-умолчанию
\section { Обобщённое программирование}
\section { Коллекции}
List, Set; Хэш-код, интерфейс Comparable; Map, Object (Использование методов, Переопределение методов); Итераторы, \textbf { Многопоточные} коллекции
\section { Многопоточность}
Понятие, Принцип (реальная и псевдопараллельность); Runnable, Thread (Свойства, Особенности создания); Deadlock, Состояние гонки, Object (Ожидание/уведомление); Синхронизация (Синхронизация по монитору, Частичная, по классу)
\section { Графический интерфейс пользователя}
GUI (Swing): Окна и свойства окон, \textbf { Многопоточность} и абстргирование асинхронных вызовов; менеджеры размещений и проведение параллелей с веб-фреймворками, разделение на фронт-энд и бэк-энд; JPanel и рисование, Обработка действий пользователя
\chapter { Java Junior}
\section { JDBC}
\section { Сетевое программирование}
Socket, ServerSocket, Многопоточность, абстрагирование сетевого взаимодействия, интерфейсы
\section { Введение в архитектуры приложений на Java}
клиент-серверы, веб-приложения, сервлеты, толстые и тонкие клиенты, выделение бизнес-логики и хранения, создание общих пространств и модульность проекта
\section { Сериализация, StreamAPI, ReflectionAPI}
\section { Введение в Java EE}
\section { Введение в Spring framework}
\chapter { Java Junior+}
\end { document}