Compare commits
2 commits
cd93faa43e
...
91c76b74b9
Author | SHA1 | Date | |
---|---|---|---|
|
91c76b74b9 | ||
|
56139bd08c |
14 changed files with 624 additions and 12 deletions
175
beamer-config.tex
Normal file
175
beamer-config.tex
Normal file
|
@ -0,0 +1,175 @@
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[ngerman,english]{babel}
|
||||||
|
|
||||||
|
% -- https://www.ctan.org/pkg/newtx?lang=en
|
||||||
|
\usepackage{newtxtext,newtxmath}
|
||||||
|
|
||||||
|
% -- https://www.ctan.org/pkg/scrextend
|
||||||
|
\usepackage{scrextend}
|
||||||
|
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{tabularx}
|
||||||
|
\usepackage{threeparttable}
|
||||||
|
\usepackage{multirow}
|
||||||
|
|
||||||
|
\usepackage{pifont}
|
||||||
|
|
||||||
|
% get layout information
|
||||||
|
\usepackage{layout}
|
||||||
|
|
||||||
|
\usepackage{rotating}
|
||||||
|
\usepackage{adjustbox}
|
||||||
|
\usepackage{setspace}
|
||||||
|
\usepackage{ragged2e}
|
||||||
|
\usepackage{lipsum}
|
||||||
|
\usepackage{blindtext}
|
||||||
|
\usepackage{calc}
|
||||||
|
|
||||||
|
\usepackage{eqnarray,amsmath}
|
||||||
|
\usepackage[linesnumbered]{algorithm2e}
|
||||||
|
|
||||||
|
% -- Absolute positions
|
||||||
|
\usepackage[absolute,overlay]{textpos}
|
||||||
|
|
||||||
|
\usepackage{tcolorbox}
|
||||||
|
\tcbuselibrary{most}
|
||||||
|
|
||||||
|
\usepackage{soul}
|
||||||
|
|
||||||
|
%improve wrapping of URLs - hint by http://tex.stackexchange.com/a/10419/9075
|
||||||
|
\makeatletter
|
||||||
|
\g@addto@macro{\UrlBreaks}{\UrlOrds}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Hyperreferences
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup{colorlinks=true,linkcolor=,urlcolor=gray70,citecolor=blue1}
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Bibliography
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
|
||||||
|
\usepackage[%
|
||||||
|
%sorting=debug,
|
||||||
|
%natbib=true,
|
||||||
|
%backend=biber,bibencoding=utf8,
|
||||||
|
backend=bibtex8,bibencoding=ascii,language=auto,natbib=true,%maxbibnames=10,
|
||||||
|
sorting=nyt,
|
||||||
|
style=alphabetic,
|
||||||
|
maxalphanames=1
|
||||||
|
%minnames=3,
|
||||||
|
%maxnames=6,
|
||||||
|
%doi=false
|
||||||
|
]{biblatex}
|
||||||
|
|
||||||
|
% -- remove plus sign in labels [Stö+18]
|
||||||
|
\renewcommand*{\labelalphaothers}{}
|
||||||
|
|
||||||
|
% -- make bibliography entries smaller
|
||||||
|
\renewcommand\bibfont{\scriptsize}
|
||||||
|
% -- and kill the abominable icon
|
||||||
|
\setbeamertemplate{bibliography item}[text]
|
||||||
|
|
||||||
|
%\addbibresource{bibliography.bib}
|
||||||
|
%\addbibresource{bibliography-2.bib}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Minted Code Listing
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Need the following Python package:
|
||||||
|
% - Pygments (http://pygments.org/)
|
||||||
|
%
|
||||||
|
% Requires the -shell-escape flag when calling LaTeX !!!!
|
||||||
|
%
|
||||||
|
% List all styles:
|
||||||
|
% $ pygmentize -L styles
|
||||||
|
% \usemintedstyle{monokai}
|
||||||
|
%
|
||||||
|
% List all Languages:
|
||||||
|
% $ pygmentize -L lexers
|
||||||
|
|
||||||
|
|
||||||
|
%\usepackage[titles]{tocloft}
|
||||||
|
%\newlistof{listing}{lol}{Listings}
|
||||||
|
%\usepackage[newfloat]{minted}
|
||||||
|
%\usepackage{caption}
|
||||||
|
%\renewcommand{\cftlistingpresnum}{Listing~}
|
||||||
|
%\setlength{\cftlistingnumwidth}{2,8cm}
|
||||||
|
|
||||||
|
\usepackage{minted}
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Captions
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
\usepackage{caption}
|
||||||
|
\captionsetup{%
|
||||||
|
justification=raggedright,
|
||||||
|
singlelinecheck=false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
\renewcommand\thefootnote{\textbf{\textcolor{blue1}{\arabic{footnote}}}}
|
||||||
|
\renewcommand{\footnotesize}{\fontsize{6pt}{7pt}\selectfont}
|
||||||
|
|
||||||
|
%% Insert line break in algorithm
|
||||||
|
\newcommand{\WRP}{\par\qquad\(\hookrightarrow\)\enspace}
|
||||||
|
|
||||||
|
%\newcommand{\showHorizontalNavBar}{}
|
||||||
|
\def\showHorizontalNavBar{}
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Color Boxes
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
|
||||||
|
\newtcolorbox{shadowbox1}[2][]{%
|
||||||
|
enhanced,
|
||||||
|
size=small,
|
||||||
|
width=#2,
|
||||||
|
colback=gray1,
|
||||||
|
colframe=gray1,
|
||||||
|
sharp corners,
|
||||||
|
drop small lifted shadow=black,
|
||||||
|
#1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
% Images
|
||||||
|
% -------------------------------------------------------------
|
||||||
|
|
||||||
|
\newcommand{\rotimagewithsource}[3]{%
|
||||||
|
\begin{figure}
|
||||||
|
\hypersetup{urlcolor=gray50}
|
||||||
|
\setbeamerfont{caption}{size=\fontsize{2pt}{3pt}\selectfont}
|
||||||
|
\setbeamercolor{caption}{fg=gray50}
|
||||||
|
\captionsetup{labelformat=empty,justification=raggedright,singlelinecheck=false}%
|
||||||
|
\begin{adjustbox}{addcode={\begin{minipage}{\width}}{\caption{#3}\end{minipage}},#1,center}
|
||||||
|
#2
|
||||||
|
\end{adjustbox}
|
||||||
|
\addtocounter{figure}{-1}
|
||||||
|
\end{figure}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\rotimagewithcaption}[3]{%
|
||||||
|
\begin{figure}
|
||||||
|
\begin{adjustbox}{addcode={\begin{minipage}{\width}}{\caption{#3}\end{minipage}},#1,center}
|
||||||
|
#2
|
||||||
|
\end{adjustbox}
|
||||||
|
\end{figure}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
263
beamerthemecleangreen.sty
Normal file
263
beamerthemecleangreen.sty
Normal file
|
@ -0,0 +1,263 @@
|
||||||
|
%
|
||||||
|
% Latex-Beamer theme CleanGreen
|
||||||
|
%
|
||||||
|
% Author: André Conrad
|
||||||
|
% Date: 2023-02-23
|
||||||
|
% Version: 0.1
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\mode<presentation>
|
||||||
|
|
||||||
|
|
||||||
|
% ---------------------------------------
|
||||||
|
%% Loading packages
|
||||||
|
% ---------------------------------------
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{%
|
||||||
|
mindmap,
|
||||||
|
trees
|
||||||
|
}
|
||||||
|
|
||||||
|
\RequirePackage{csquotes}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%Define a reference depth.
|
||||||
|
%You can choose either relative or absolute.
|
||||||
|
%--------------------------
|
||||||
|
\newlength{\DepthReference}
|
||||||
|
%\settodepth{\DepthReference}{g}%relative to a depth of a letter.
|
||||||
|
\setlength{\DepthReference}{2pt}%absolute value.
|
||||||
|
|
||||||
|
%Define a reference Height.
|
||||||
|
%You can choose either relative or absolute.
|
||||||
|
%--------------------------
|
||||||
|
\newlength{\HeightReference}
|
||||||
|
%\settoheight{\HeightReference}{T}
|
||||||
|
\setlength{\HeightReference}{6pt}
|
||||||
|
|
||||||
|
%--------------------------
|
||||||
|
\newlength{\Width}%
|
||||||
|
\newcommand{\navbox}[2][red]%
|
||||||
|
{%
|
||||||
|
\settowidth{\Width}{#2}%
|
||||||
|
%\setlength{\fboxsep}{0pt}%
|
||||||
|
\colorbox{#1}%
|
||||||
|
{%
|
||||||
|
\raisebox{-\DepthReference}%
|
||||||
|
{%
|
||||||
|
\parbox[b][\HeightReference+\DepthReference][c]{\Width}{\centering#2}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
}
|
||||||
|
\setlength{\fboxsep}{1pt}
|
||||||
|
|
||||||
|
|
||||||
|
% ---------------------------------------
|
||||||
|
%% Colors
|
||||||
|
% ---------------------------------------
|
||||||
|
\definecolor{gray20}{HTML}{CCCCCC}
|
||||||
|
\definecolor{gray70}{HTML}{4C4C4C}
|
||||||
|
|
||||||
|
\definecolor{green1}{HTML}{A0DDCE}
|
||||||
|
\definecolor{green2}{HTML}{E9F8F3}
|
||||||
|
|
||||||
|
\definecolor{blue1}{HTML}{0070C0}
|
||||||
|
\definecolor{blue2}{HTML}{004C97}
|
||||||
|
|
||||||
|
\definecolor{lightbrown1}{HTML}{E3DBD3}
|
||||||
|
\definecolor{brown1}{HTML}{AD8f67}
|
||||||
|
|
||||||
|
|
||||||
|
\definecolor{webgreen}{rgb}{0,.5,0}
|
||||||
|
\definecolor{webbrown}{rgb}{.6,0,0}
|
||||||
|
|
||||||
|
\definecolor{gray1}{rgb}{.92,.92,.92}
|
||||||
|
\definecolor{gray2}{rgb}{.85,.85,.85}
|
||||||
|
\definecolor{gray50}{rgb}{.5,.5,.5}
|
||||||
|
|
||||||
|
\definecolor{applegreen}{rgb}{0.55, 0.71, 0.0}
|
||||||
|
\definecolor{brickred}{rgb}{0.8, 0.25, 0.33}
|
||||||
|
\definecolor{darklavender}{rgb}{0.45, 0.31, 0.59}
|
||||||
|
\definecolor{charcoal}{rgb}{0.21, 0.27, 0.31}
|
||||||
|
|
||||||
|
% Title slide
|
||||||
|
\setbeamercolor*{title page header}{fg=gray70}
|
||||||
|
\setbeamercolor*{author}{fg=gray70}
|
||||||
|
\setbeamercolor*{date}{fg=gray70}
|
||||||
|
|
||||||
|
% Framtitle
|
||||||
|
\setbeamercolor*{frametitle}{fg=gray70,bg=white}
|
||||||
|
|
||||||
|
% Footer
|
||||||
|
\setbeamercolor{footline}{fg=gray70,bg=white}
|
||||||
|
|
||||||
|
% List items
|
||||||
|
\setbeamercolor*{item}{fg=black}
|
||||||
|
\setbeamercolor*{enumerate item}{fg=black}
|
||||||
|
|
||||||
|
% Blocks
|
||||||
|
\setbeamercolor{block title}{fg=blue1}
|
||||||
|
%\setbeamercolor{block body}{bg=green2}
|
||||||
|
|
||||||
|
% Caption
|
||||||
|
\setbeamercolor{caption name}{fg=blue1}
|
||||||
|
\setbeamercolor{caption}{fg=gray70}
|
||||||
|
|
||||||
|
% Table of Content
|
||||||
|
\setbeamercolor{section in toc}{fg=blue1}
|
||||||
|
\setbeamercolor{subsection in toc}{fg=blue1}
|
||||||
|
|
||||||
|
% Bibliography
|
||||||
|
\setbeamercolor*{bibliography item}{fg=black}
|
||||||
|
\setbeamercolor*{bibliography entry title}{fg=blue2}
|
||||||
|
\setbeamercolor*{bibliography entry author}{fg=black}
|
||||||
|
\setbeamercolor*{bibliography entry location}{fg=black}
|
||||||
|
\setbeamercolor*{bibliography entry note}{fg=black}
|
||||||
|
|
||||||
|
|
||||||
|
% ---------------------------------------
|
||||||
|
%% Font Size
|
||||||
|
% ---------------------------------------
|
||||||
|
|
||||||
|
\setbeamerfont{frametitle}{size=\huge}
|
||||||
|
\setbeamerfont{framesubtitle}{size=\normalsize}
|
||||||
|
|
||||||
|
\setbeamerfont{title}{size=\huge}
|
||||||
|
\setbeamerfont{subtitle}{size=\normalsize}
|
||||||
|
\setbeamerfont*{author}{size=\normalsize}
|
||||||
|
\setbeamerfont*{date}{size=\small}
|
||||||
|
\setbeamerfont*{frametitle}{size=\huge}
|
||||||
|
\setbeamerfont*{footline}{size=\tiny}
|
||||||
|
\setbeamerfont*{institute}{size=\footnotesize}
|
||||||
|
|
||||||
|
%\setbeamerfont{itemize/enumerate body}{size=\Large}
|
||||||
|
%\setbeamerfont{itemize/enumerate subbody}{size=\Large}
|
||||||
|
%\setbeamerfont{itemize/enumerate subsubbody}{size=\large}
|
||||||
|
\setbeamerfont{enumerate item}{series=\bfseries}
|
||||||
|
\setbeamerfont{description item}{series=\bfseries}
|
||||||
|
|
||||||
|
\setbeamerfont{caption}{size=\tiny}
|
||||||
|
|
||||||
|
% Table of Content
|
||||||
|
\setbeamerfont{section in toc}{size=\normalsize}
|
||||||
|
\setbeamerfont{subsection in toc}{size=\normalsize}
|
||||||
|
|
||||||
|
\setbeamerfont{section number projected}{%
|
||||||
|
family=\rmfamily,series=\bfseries,size=\normalsize}
|
||||||
|
\setbeamercolor{section number projected}{bg=green1,fg=black}
|
||||||
|
|
||||||
|
% ball, circle and square
|
||||||
|
\setbeamertemplate{sections/subsections in toc}[circle]
|
||||||
|
|
||||||
|
|
||||||
|
% ---------------------------------------
|
||||||
|
%% Frame (inner/outer)
|
||||||
|
% ---------------------------------------
|
||||||
|
|
||||||
|
\setbeamertemplate{navigation symbols}{}
|
||||||
|
\setbeamertemplate{caption}[numbered]
|
||||||
|
|
||||||
|
\setbeamertemplate{enumerate item}{\textbf{\arabic{enumi}.}}
|
||||||
|
\setbeamertemplate{enumerate subitem}{\textbf{\arabic{enumii}.}}
|
||||||
|
|
||||||
|
\setbeamersize{text margin left=16pt,text margin right=16pt}
|
||||||
|
|
||||||
|
|
||||||
|
% -----------------------
|
||||||
|
%% Title Page
|
||||||
|
% -----------------------
|
||||||
|
\defbeamertemplate*{title page}{cleangreen}
|
||||||
|
{
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\vskip 1cm%
|
||||||
|
|
||||||
|
\begin{beamercolorbox}[center,sep=8pt]{title page header}
|
||||||
|
\usebeamerfont{title}\textbf{\inserttitle}\par%
|
||||||
|
\vskip 0.25cm%
|
||||||
|
\usebeamerfont{subtitle}\insertsubtitle
|
||||||
|
\end{beamercolorbox}%
|
||||||
|
|
||||||
|
\textcolor{green1}{\rule{.96\textwidth}{1.5pt}}
|
||||||
|
|
||||||
|
\vskip 0.75cm%
|
||||||
|
|
||||||
|
\begin{beamercolorbox}[center]{author}
|
||||||
|
\usebeamerfont{author}\insertauthor\\[2ex]
|
||||||
|
\usebeamerfont{institute}\insertinstitute\\[5ex]
|
||||||
|
\usebeamerfont{date}\insertdate
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% -----------------------
|
||||||
|
%% Definition - Horizontal Nav Bar
|
||||||
|
% -----------------------
|
||||||
|
|
||||||
|
\setbeamertemplate{section in head/foot}{%
|
||||||
|
%\colorbox{green2}{\strut\bfseries\insertsectionhead}
|
||||||
|
\navbox[green2]{\bfseries\insertsectionhead}
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{section in head/foot shaded}{%
|
||||||
|
%\color{gray2}\insertsectionhead
|
||||||
|
\navbox[white]{\bfseries\color{gray2}\insertsectionhead}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% -----------------------
|
||||||
|
%% Frametitle
|
||||||
|
% -----------------------
|
||||||
|
\defbeamertemplate*{frametitle}{cleangreen}
|
||||||
|
{
|
||||||
|
\begin{beamercolorbox}[left, ht=36pt, wd=\paperwidth, leftskip=16pt, rightskip=16pt]{frametitle}
|
||||||
|
\ifx\insertframesubtitle\@empty%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw (0,0) -- (\textwidth,0) [line width=1pt, green2];
|
||||||
|
\draw (0,4pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\usebeamerfont{frametitle}\insertframetitle};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\else%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw (0,0) -- (\textwidth,0) [line width=1pt, green2];
|
||||||
|
\draw (0,1pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\small\insertframesubtitle};
|
||||||
|
\draw (0,13pt) node [anchor=south west,inner sep=0mm, text depth=1mm] {\Large\insertframetitle};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\fi
|
||||||
|
\ifx\showHorizontalNavBar\empty%
|
||||||
|
\vspace*{-18pt}
|
||||||
|
\else
|
||||||
|
\hspace*{-13.24pt}
|
||||||
|
\footnotesize
|
||||||
|
\insertnavigation{\textwidth}
|
||||||
|
\fi
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% -----------------------
|
||||||
|
%% Footline
|
||||||
|
% -----------------------
|
||||||
|
\newcommand{\footlinetext}[1]{\def\insertfootlinetext{#1}}
|
||||||
|
|
||||||
|
\defbeamertemplate*{footline}{cleangreen}
|
||||||
|
{
|
||||||
|
\begin{beamercolorbox}[left, ht=20pt, wd=\textwidth, leftskip=16pt, rightskip=16pt]{footline}%
|
||||||
|
\usebeamerfont{footline}
|
||||||
|
\ifx\insertframetitle\@empty%
|
||||||
|
%\hfill\insertpagenumber\vspace{2.75mm}
|
||||||
|
\raggedleft\insertframenumber~/~\inserttotalframenumber\hspace{12.25pt}\vspace{8pt}
|
||||||
|
\else%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw (0,0) -- (423pt,0) [line width=1pt, green2];
|
||||||
|
\draw (-3pt,0) node [anchor=north west, inner sep=3pt] {\includegraphics[height=14pt]{gfx/fernuni_hagen_logo.jpg}};
|
||||||
|
\draw (100pt,-8pt) node [anchor=north west, inner sep=0mm, text depth=1mm] {\insertfootlinetext};
|
||||||
|
\draw (423pt,-8pt) node [anchor=north east,inner sep=0mm, text depth=1mm] {\insertframenumber~/~\inserttotalframenumber};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\fi
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
|
||||||
|
\mode<all>
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
%********************************************************************
|
%********************************************************************
|
||||||
% Appendix
|
% Appendix
|
||||||
%*******************************************************
|
%*******************************************************
|
||||||
|
|
|
@ -84,8 +84,9 @@ hostname="http://localhost:8080/WedekindJSF-1.0.0"
|
||||||
# the Array of the Urls
|
# the Array of the Urls
|
||||||
url_arr=(
|
url_arr=(
|
||||||
"$hostname/index.xhtml"
|
"$hostname/index.xhtml"
|
||||||
"$hostname/view/document/list.xhtml"
|
#"$hostname/view/document/list.xhtml"
|
||||||
#"$hostname/view/correspondent/list.xhtml"
|
"$hostname/view/document/list_mv.xhtml"
|
||||||
|
#"$hostname/view/correspondent/list.xhtml"
|
||||||
#"$hostname/view/person/list.xhtml"
|
#"$hostname/view/person/list.xhtml"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{Einleitung}
|
\chapter{Einleitung}
|
||||||
\label{ch:intro}
|
\label{ch:intro}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{Grundlagen}
|
\chapter{Grundlagen}
|
||||||
\label{ch:basics}
|
\label{ch:basics}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{Konzept}
|
\chapter{Konzept}
|
||||||
\label{ch:concept}
|
\label{ch:concept}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{Performance-Untersuchung}
|
\chapter{Performance-Untersuchung}
|
||||||
\label{ch:performance-checking}
|
\label{ch:performance-checking}
|
||||||
|
@ -51,7 +52,7 @@ Dies zeigt direkt, dass es ein problem in der Freigabe der Objekte gibt, da dass
|
||||||
das Problem nicht löst, sondern nur verschiebt.
|
das Problem nicht löst, sondern nur verschiebt.
|
||||||
|
|
||||||
Als Grundlage für die Vergleiche wurden eine Messung durchgeführt, bei der alle Caches deaktiviert wurden und keine
|
Als Grundlage für die Vergleiche wurden eine Messung durchgeführt, bei der alle Caches deaktiviert wurden und keine
|
||||||
Änderung am Code vorgenommen wurde. Das Ergebnis dieser Messung ist in \ref{tab:MeasureWithoutCache} zu finden. Diese
|
Änderung am Code vorgenommen wurde. Das Ergebnis dieser Messung ist in \ref{tbl:measure-without-cache} zu finden. Diese
|
||||||
zeigen auch direkt ein erwartetes Ergebnis, dass der erste Aufruf bedeutend länger dauert als die Nachfolgenden.
|
zeigen auch direkt ein erwartetes Ergebnis, dass der erste Aufruf bedeutend länger dauert als die Nachfolgenden.
|
||||||
Ebenfalls sieht man eindeutig, dass die Anzahl der Anfragen nach dem ersten Aufruf immer die gleiche Anzahl besitzen.
|
Ebenfalls sieht man eindeutig, dass die Anzahl der Anfragen nach dem ersten Aufruf immer die gleiche Anzahl besitzen.
|
||||||
Der Speicherbedarf steigt auch relative gleichmässig, was nicht recht ins Bild passt, da hier keine Objekte im Cache
|
Der Speicherbedarf steigt auch relative gleichmässig, was nicht recht ins Bild passt, da hier keine Objekte im Cache
|
||||||
|
@ -72,7 +73,7 @@ gehalten werden sollten.
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Messung ohne Caches}
|
\caption{Messung ohne Caches}
|
||||||
\label{tab:MeasureWithoutCache}
|
\label{tbl:measure-without-cache}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
Vor jedem weiteren Test-Lauf wurde die Domain beendet und komplett neugestartet, um mit einer frischen Instanz zu
|
Vor jedem weiteren Test-Lauf wurde die Domain beendet und komplett neugestartet, um mit einer frischen Instanz zu
|
||||||
|
@ -88,8 +89,8 @@ Die Cache-Einstellung von OpenJPA werden über die zwei Einstellungen \texttt{op
|
||||||
\textit{CacheSize} die Anzahl der Elementen im Cache gesteuert werden. Wird diese Anzahl erreicht, dann werden zufällige
|
\textit{CacheSize} die Anzahl der Elementen im Cache gesteuert werden. Wird diese Anzahl erreicht, dann werden zufällige
|
||||||
Objekte aus dem Cache entfernt und in eine SoftReferenceMap übertragen.
|
Objekte aus dem Cache entfernt und in eine SoftReferenceMap übertragen.
|
||||||
|
|
||||||
Zuerst wird mit aktivierten Cache mit einer Cache-Größe von 1000 Elemente getestet. Wie in \ref{tbl:MeasureOJPAactive}
|
Zuerst wird mit aktivierten Cache mit einer Cache-Größe von 1000 Elemente getestet. Wie in \ref{tbl:measure-ojpa-active}
|
||||||
zu sehen, dauert auch hier der erste Aufruf minimal länger als ohne akivierten Cache. Alle Nachfolgenden Aufrufe
|
zu sehen, dauert auch hier der erste Aufruf minimal länger als ohne akiviertem Cache. Alle Nachfolgenden Aufrufe
|
||||||
wiederrum sind um 100ms schneller in der Verarbeitung. Auch bei der Anzahl der Anfragen an die Datenbank kann mehr den
|
wiederrum sind um 100ms schneller in der Verarbeitung. Auch bei der Anzahl der Anfragen an die Datenbank kann mehr den
|
||||||
Rückgang der Anfragen sehr gut sehen. Aktuell kann die Verringerung des wachsenden Speicherbedarfs nur nicht erklärt
|
Rückgang der Anfragen sehr gut sehen. Aktuell kann die Verringerung des wachsenden Speicherbedarfs nur nicht erklärt
|
||||||
werden.
|
werden.
|
||||||
|
@ -109,11 +110,11 @@ werden.
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Messung mit OpenJPA-Cache und Größe auf 1000}
|
\caption{Messung mit OpenJPA-Cache und Größe auf 1000}
|
||||||
\label{tbl:MeasureOJPAactive}
|
\label{tbl:measure-ojpa-active}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
Bei einer erhöhten Cache-Größe, zeigt sich auf den ersten Blick ein noch besseres Bild ab, wie in
|
Bei einer erhöhten Cache-Größe, zeigt sich auf den ersten Blick ein noch besseres Bild ab, wie in
|
||||||
\ref{tbl:MeasureOJPAactivebigger} ersichtlich ist. Der erste Aufruf entspricht der Laufzeit mit geringerer Cache-Größe,
|
\ref{tbl:measure-ojpa-active-bigger} ersichtlich ist. Der erste Aufruf entspricht der Laufzeit mit geringerer Cache-Größe,
|
||||||
aber schon die Anfragen an die Datenbank gehen drastisch zurück. Bei den weiteren Aufrufen werden im Schnitt nun nur
|
aber schon die Anfragen an die Datenbank gehen drastisch zurück. Bei den weiteren Aufrufen werden im Schnitt nun nur
|
||||||
noch 6 Anfragen pro Seitenaufruf an die Datenbank gestellt, wodurch die Laufzeit im Schnitt nochmal um 100 ms
|
noch 6 Anfragen pro Seitenaufruf an die Datenbank gestellt, wodurch die Laufzeit im Schnitt nochmal um 100 ms
|
||||||
beschleunigt werden konnte.
|
beschleunigt werden konnte.
|
||||||
|
@ -133,7 +134,7 @@ beschleunigt werden konnte.
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Messung mit OpenJPA-Cache und Größe auf 10000}
|
\caption{Messung mit OpenJPA-Cache und Größe auf 10000}
|
||||||
\label{tbl:MeasureOJPAactivebigger}
|
\label{tbl:measure-ojpa-active-bigger}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
\mytodos{pin und unpin noch mit einbringen? SoftReferenceMap nochmal genau durchleuchte, laut doku entfällt dort nichts
|
\mytodos{pin und unpin noch mit einbringen? SoftReferenceMap nochmal genau durchleuchte, laut doku entfällt dort nichts
|
||||||
|
@ -184,6 +185,7 @@ Anzahl der Abfragen an die Datenbank drastisch reduziert werden. Selbst die Lauf
|
||||||
\label{sec:performance-checking:investigation-application:caching-ejb}
|
\label{sec:performance-checking:investigation-application:caching-ejb}
|
||||||
|
|
||||||
Die Cache-Einstellungen des \ac{EJB} sind in der Admin-Oberfläche des Payara-Servers zu erreichen. Hier
|
Die Cache-Einstellungen des \ac{EJB} sind in der Admin-Oberfläche des Payara-Servers zu erreichen. Hier
|
||||||
|
\mytodos{Cache config noch definieren}
|
||||||
|
|
||||||
\begin{table}[h!]
|
\begin{table}[h!]
|
||||||
\centering
|
\centering
|
||||||
|
@ -199,19 +201,111 @@ Die Cache-Einstellungen des \ac{EJB} sind in der Admin-Oberfläche des Payara-Se
|
||||||
4 & 281 & 318 & 398 & 12080 & 1191.25 & 1305.29 & 114.04 \\
|
4 & 281 & 318 & 398 & 12080 & 1191.25 & 1305.29 & 114.04 \\
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\caption{Messung mit OpenJPA-Cache und Größe auf 10000}
|
\caption{Messung mit \ac{EJB}-Cache}
|
||||||
\label{tbl:MeasureEJBAactive}
|
\label{tbl:measure-ejb-cache-active}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
\subsection{Abfragen JPQL}
|
\subsection{Abfragen \ac{JPQL}}
|
||||||
\label{sec:performance-checking:investigation-application:query-jpql}
|
\label{sec:performance-checking:investigation-application:query-jpql}
|
||||||
|
|
||||||
|
Für die \ac{JPQL} wird ein \ac{SQL} ähnlicher Syntax verwendet um die Abfragen an die Datenbank durchzuführen. Für die
|
||||||
|
Dokumentenliste wird der Code aus \ref{lst:jpql-document-list-jpql} verwendet. Die Namen mit vorangestellten Doppelpunkt
|
||||||
|
sind Übergabevariablen.
|
||||||
|
|
||||||
|
\begin{lstlisting}[language=Java,caption={JPQL Dokumentenliste},label=lst:jpql-document-list-jpql]
|
||||||
|
SELECT DISTINCT d FROM Document d
|
||||||
|
LEFT JOIN FETCH d.authorPerson
|
||||||
|
LEFT JOIN FETCH d.coauthorPersonSet
|
||||||
|
LEFT JOIN FETCH d.addresseePersonSet
|
||||||
|
WHERE d.validUntil > :now
|
||||||
|
AND d.isPublishedInDb = :published
|
||||||
|
ORDER BY d.documentId ASC
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
In dem dazugehörigen Code am Server wird der JPQL-Code als NamedQuery hinterlegt und über den Name \textit{Document.findAll}
|
||||||
|
referenziert. In eingriff in die Abfrage ist hier leider nicht möglich, wie man im Code \ref{lst:jpql-document-list}
|
||||||
|
sehen kann.
|
||||||
|
|
||||||
|
\begin{lstlisting}[language=Java,caption={Java JPQL Dokumentenliste},label=lst:jpql-document-list]
|
||||||
|
List<Document> myResultList = createNamedTypedQuery("Document.findAll")
|
||||||
|
.setParameter("now", _IncludeDeleted ? new Date(0) : Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()))
|
||||||
|
.setParameter("published", true)
|
||||||
|
.setFirstResult(_Start)
|
||||||
|
.setMaxResults(_Size)
|
||||||
|
.setHint("javax.persistence.query.fetchSize", _Size)
|
||||||
|
.getResultList();
|
||||||
|
|
||||||
|
// Uebergabe der Ergebnisliste
|
||||||
|
if(myResultList != null && !myResultList.isEmpty()) {
|
||||||
|
myResult.addAll(myResultList);
|
||||||
|
}
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
Da dieser Code direkt so aus dem Projekt kommt, wird hierfür keine gesonderte Zeitmessung durchgeführt, da dies durch
|
||||||
|
\ref{tbl:measure-without-cache} geschehen ist.
|
||||||
|
|
||||||
\subsection{Abfragen Criteria API}
|
\subsection{Abfragen Criteria API}
|
||||||
\label{sec:performance-checking:investigation-application:query-criteria-api}
|
\label{sec:performance-checking:investigation-application:query-criteria-api}
|
||||||
|
|
||||||
|
Für die Criteria API wird die Abfrage nicht in einem SQL-Dialekt beschreiben. Hierbei werden über Attribute die
|
||||||
|
Verlinkung zur Datenbank durchgeführt. An der Klasse selbst wird der Tabellenname definiert und an den Attributen die
|
||||||
|
Spaltennamen. Um die Anfrage durchführen muss nun nur noch Datenklasse angegeben werden und mit den Parametern
|
||||||
|
versorgt werden, wie es in \ref{lst:criteria-api} gezeigt wird.
|
||||||
|
|
||||||
|
\begin{lstlisting}[language=Java,caption={Criteria API Dokumentenliste},label=lst:criteria-api]
|
||||||
|
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
|
||||||
|
CriteriaQuery<Document> cq = cb.createQuery(Document.class);
|
||||||
|
Root<Document> from = cq.from(Document.class);
|
||||||
|
ParameterExpression<Boolean> includedPara = cb.parameter(Boolean.class, "published");
|
||||||
|
ParameterExpression<Date> validPart = cb.parameter(Date.class, "now");
|
||||||
|
|
||||||
|
CriteriaQuery<Document> select = cq.select(from)
|
||||||
|
.where(cb.and(
|
||||||
|
cb.equal(from.get("isPublishedInDb"), includedPara),
|
||||||
|
cb.greaterThan(from.get("validUntil"), validPart)
|
||||||
|
));
|
||||||
|
TypedQuery<Document> typedQuery = getEntityManager().createQuery(select)
|
||||||
|
.setParameter("now", _IncludeDeleted ? new Date(0) : Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()))
|
||||||
|
.setParameter("published", true)
|
||||||
|
.setFirstResult(_Start)
|
||||||
|
.setMaxResults(_Size)
|
||||||
|
.setHint("javax.persistence.query.fetchSize", _Size);
|
||||||
|
List<Document> myResultList = typedQuery.getResultList();
|
||||||
|
|
||||||
|
// Uebergabe der Ergebnisliste
|
||||||
|
if (myResultList != null && !myResultList.isEmpty()) {
|
||||||
|
myResult.addAll(myResultList);
|
||||||
|
}
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
Wie in der Messung \ref{tbl:measure-criteria-api} zu sehen, unterscheiden sich die Abfragezeiten nur marginal von
|
||||||
|
denen mit \ac{JPQL}. Wenn man sich den Code im Debugger anschaut, sieht man auch, dass die zusammengesetzten Abfragen
|
||||||
|
in den Java-Objekten fast identisch sind. Und in der Datenbank sind die Anfragen identisch zu denen über JPQL.
|
||||||
|
|
||||||
|
\begin{table}[h!]
|
||||||
|
\centering
|
||||||
|
\begin{tabular}{|r|r|r|r|r|r|r|r|}
|
||||||
|
\hline
|
||||||
|
& \multicolumn{3}{|c|}{Aufrufzeit} & & \multicolumn{3}{|c|}{RSS} \\
|
||||||
|
\hline
|
||||||
|
\# & min & avg & max & Queries & davor & danach & diff \\
|
||||||
|
\hline
|
||||||
|
1 & 396 & 572 & 1535 & 12173 & 796.59 & 970.10 & 173.51 \\
|
||||||
|
2 & 333 & 366 & 397 & 12080 & 982.28 & 1064.12 & 81.84 \\
|
||||||
|
3 & 286 & 339 & 554 & 12080 & 1048.12 & 1162.92 & 114.80 \\
|
||||||
|
4 & 293 & 317 & 388 & 12080 & 1150.43 & 1263.77 & 113.34 \\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\caption{Messung mit Criteria-API ohne Cache}
|
||||||
|
\label{tbl:measure-criteria-api}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
|
||||||
\subsection{materialized views}
|
\subsection{materialized views}
|
||||||
\label{sec:performance-checking:investigation-application:materialized-views}
|
\label{sec:performance-checking:investigation-application:materialized-views}
|
||||||
|
|
||||||
|
\mytodos{Sourcecode erfragen bei Herrn Holstein!}
|
||||||
|
|
||||||
\subsection{cached queries}
|
\subsection{cached queries}
|
||||||
\label{sec:performance-checking:investigation-application:cached-query}
|
\label{sec:performance-checking:investigation-application:cached-query}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{???Optimierung???}
|
\chapter{???Optimierung???}
|
||||||
\label{ch:optimizing}
|
\label{ch:optimizing}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
\chapter{Evaluierung}
|
\chapter{Evaluierung}
|
||||||
\label{ch:evaluation}
|
\label{ch:evaluation}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
% !TeX root = ../../thesis.tex
|
||||||
|
|
||||||
%*******************************************************
|
%*******************************************************
|
||||||
% Acronyms
|
% Acronyms
|
||||||
%*******************************************************
|
%*******************************************************
|
||||||
|
@ -22,9 +24,11 @@
|
||||||
\acro{CSS}{Cascading Style Sheets}
|
\acro{CSS}{Cascading Style Sheets}
|
||||||
\acro{SFSB}{Stateful Session-Bean}
|
\acro{SFSB}{Stateful Session-Bean}
|
||||||
\acro{JPA}{Java Persistence API}
|
\acro{JPA}{Java Persistence API}
|
||||||
|
\acro{JPQL}{Java Persistence Query Language}
|
||||||
\acro{API}{Application Programming Interface}
|
\acro{API}{Application Programming Interface}
|
||||||
\acro{UML}{Unified Modeling Language}
|
\acro{UML}{Unified Modeling Language}
|
||||||
\acro{GB}{Gigabyte}
|
\acro{GB}{Gigabyte}
|
||||||
|
\acro{SQL}{Structured Query Language}
|
||||||
\end{acronym}
|
\end{acronym}
|
||||||
|
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
|
|
BIN
thesis-beamer.pdf
Normal file
BIN
thesis-beamer.pdf
Normal file
Binary file not shown.
68
thesis-beamer.tex
Normal file
68
thesis-beamer.tex
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
\documentclass[aspectratio=169]{beamer}
|
||||||
|
\input{beamer-config}
|
||||||
|
\usetheme{cleangreen}
|
||||||
|
|
||||||
|
\include{marco-galster-config}
|
||||||
|
\addbibresource{expose-ref.bib}
|
||||||
|
|
||||||
|
% ACHTUNG: Damit sich die Datei sauber im Visual Studio Code übersetzten lässt, muss in den Benutzer-Einstellungen
|
||||||
|
% das Element "latex-workshop.latex.tools" aufgenommen werden und der erscheinende Eintrag für latexmk bei den
|
||||||
|
% args am Anfang um den folgenden Eintrage erweitert werden:
|
||||||
|
% "-shell-escape"
|
||||||
|
|
||||||
|
\title{\myTitle}
|
||||||
|
%\subtitle{}
|
||||||
|
\author[M. Galster]{\myName}
|
||||||
|
\footlinetext{\insertshortauthor \hspace{4em} \inserttitle}
|
||||||
|
\institute{University~of~Hagen,~Germany}
|
||||||
|
\date{\myTime}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\selectlanguage{ngerman}
|
||||||
|
|
||||||
|
% -- SLIDE -- Title
|
||||||
|
\begin{frame}[plain]
|
||||||
|
\titlepage
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% -- SLIDE -- TOC
|
||||||
|
\begin{frame}[c]
|
||||||
|
\frametitle{Übersicht}
|
||||||
|
|
||||||
|
%left space
|
||||||
|
\begin{addmargin*}{2.5em}
|
||||||
|
%enhance line space
|
||||||
|
\begin{spacing}{1}
|
||||||
|
\parbox{\linewidth}{%
|
||||||
|
\tableofcontents
|
||||||
|
}
|
||||||
|
\end{spacing}
|
||||||
|
\end{addmargin*}
|
||||||
|
|
||||||
|
\addtocounter{framenumber}{-1}
|
||||||
|
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
% -- SLIDES --
|
||||||
|
\section{Ausgangsproblem}
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Ausgangsproblem}
|
||||||
|
|
||||||
|
Anzeige der Schichten des Systems
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
Definieren der Optimierungsansätze
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
%% -- SLIDE -- REFERENCES
|
||||||
|
% hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen
|
||||||
|
\nocite{IbmOpenJPACaching2023,PostgresPro:Chap20.4:2023}
|
||||||
|
% Für mehreren Seite bei den Referenzen ein ",allowframebreaks" in den [] hinzufügen
|
||||||
|
\begin{frame}[t]
|
||||||
|
\frametitle{Referenzen}
|
||||||
|
\printbibliography[title=Referenzen]
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
\end{document}
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
Loading…
Reference in a new issue