175 lines
9.3 KiB
TeX
175 lines
9.3 KiB
TeX
\immediate\write18{texcount -sum -1 j-spec.tex > /tmp/wordcount.tex}
|
||
%\immediate\write18{texcount -sum -1 scenarios/jc-1-c.tex > /tmp/wordcount.tex}
|
||
\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}
|
||
\setcounter{tocdepth}{1}
|
||
|
||
\babelfont{rm}{PT Astra Serif}
|
||
\babelfont{sf}{PT Astra Serif}
|
||
\babelfont{tt}{PT Mono}
|
||
\graphicspath{{./pics/}}
|
||
|
||
|
||
\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}
|
||
}
|
||
\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
|
||
\pagestyle{plain}
|
||
|
||
\chapter{Java Core}
|
||
|
||
\section{Платформа: история и окружение}
|
||
\subsection*{Конспект лекции}
|
||
\subsubsection{Краткая история (причины возникновения)}
|
||
\begin{figure}[H]
|
||
\centering
|
||
\includegraphics[width=17cm]{jc-01-tiobe.png}
|
||
\caption{График популярности языков программирования TIOBE}
|
||
\label{pic:java-in-tiobe}
|
||
\end{figure}
|
||
|
||
\subsubsection{Базовый инструментарий, который понадобится (выбор IDE)}
|
||
\begin{itemize}
|
||
\item NetBeans - хороший, добротный инструмент с лёгким ностальгическим оттенком;
|
||
\item Eclipse - для поклонников Eclipse Foundation и швейцарских ножей с полусотней лезвий;
|
||
\item IntelliJ IDEA - стандарт де-факто, используется на курсе и в большинстве современных компаний;
|
||
\item Android Studio - если заниматься мобильной разработкой.
|
||
\end{itemize}
|
||
\subsubsection{Что нужно скачать, откуда (как выбрать вендора)}
|
||
\subsubsection{Из чего всё состоит (JDK, JRE, JVM, выбор версии)}
|
||
\subsubsection{Структура проекта (пакеты, классы, метод main, комментарии)}
|
||
\subsubsection{Отложим мышки в сторону (CLI: сборка, пакеты, запуск)}
|
||
\subsubsection{Документирование (Javadoc)}
|
||
|
||
\subsection*{Задания к семинару}
|
||
\begin{itemize}
|
||
\item Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
|
||
\end{itemize}
|
||
\subsection*{Сценарий лекции}
|
||
%\subfile{scenarios/jc-1-c}
|
||
|
||
|
||
\section{Управление проектом: сборщики проектов}
|
||
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
|
||
\subsection*{Задания к семинару}
|
||
\begin{itemize}
|
||
\item Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить его в локальный кэш артефактов;
|
||
\end{itemize}
|
||
|
||
\section{Специализация: данные и функции}
|
||
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы; Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными); Функции: параметры, возвращаемые значения, перегрузка функций;
|
||
\subsection*{Задания к семинару}
|
||
\begin{itemize}
|
||
\item Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
|
||
\item Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
|
||
\end{itemize}
|
||
|
||
\section{Специализация: ООП}
|
||
Инкапсуляция: Классы и объекты (внутренние классы, вложенные классы, static, private/public, final, интерфейс взаимодействия с объектом), перечисления (создание, конструкторы перечислений, объекты перечислений, дополнительные свойства); Наследование: extends, Object (глобальное наследование), protected, преобразование типов, final; Полиморфизм: override, abstract, final;
|
||
%\subfile{scenarios/jc-4}
|
||
|
||
\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}
|
||
|