Java Memory Model (JSR-133)

Größe: px
Ab Seite anzeigen:

Download "Java Memory Model (JSR-133)"

Transkript

1 Seminarbericht von Simon Müller, 6Ie Fachhochschule Aargau Departement Technik Studiengang Informatik Betreuender Dozent: Prof. Dr. D. Gruntz Windisch, 10. Juni 2005

2 Abstract Java Memory Model (JSR-133) This report highlights the differences and improvements between the old Java Memory Model and the revised model which is also known as JSR-133. Not only was the old memory model specification written in an incomprehensible and complicated way, but also it contained some serious flaws. The JSR-133 specification corrects these problems with an adjusted writing style and redefinitions of faulty parts. With academic explanations as well as with practical examples, the reader of this document gets sensitized in writing multithreading applications. An example thereof is the double-checked locking problem which is discussed in detail in the last chapter. After reading this report, the reader is able to identify the problems of the old memory model and knows about the corrections made. Moreover, he or she gets a better understanding of the hidden procedures performed internally, according to the memory model specification, which helps to write more reliable multithreading applications. Simon Müller 10. Juni 2005 Seite 1

3 Inhaltsverzeichnis Java Memory Model (JSR-133) Einleitung Was ist ein Speichermodell (Memory Model)? Das ursprüngliche Java Memory Model und seine Mängel JSR-133: Java Memory Model and Thread Specification Das Java Memory Model im Detail Der final Modifier Der volatile Modifier Multithreaded Singleton Pattern / Double-checked locking... 8 Schlusswort Bibliographie L1. Literatur L2. Internet Simon Müller 10. Juni 2005 Seite 2

4 Einleitung Der vorliegende Seminarbericht bildet den abschliessenden Teil der Enterprise Computing Seminarreihe Java 5: Taming the Tiger. Abgesehen vom ersten Kapitel ist dieser Bericht nicht für Java Einsteiger geeignet, d.h. die Erfahrung mit Multithreading-Programmierung wird vorausgesetzt. So müssen die Schlüsselwörter synchronized, volatile und final in Zusammenhang mit Java bekannt sein um die Arbeit zu verstehen und von den Erkenntnissen profitieren zu können. Es ist allgemein bekannt, dass die Entwicklung von Multithreading-Applikationen in die Königsklasse der Programmierung gehört. Obwohl viele Programmierer und Programmiererinnen das Gefühl haben, die Konzepte und Funktionsweisen der Synchronisationsmechanismen verstanden zu haben, liegen viele Irrtümer vor. Diesen Eindruck bekommt man beim Durchstöbern von Java Foren relativ schnell vermittelt. Vor vier Jahren hat sich eine Expertengruppe [13] gebildet, um dieses Problem in den Griff zu bekommen. Die Resultate werden in diesem Seminarbericht zusammengefasst dargestellt. Bevor in die Details des Java Memory Models eingetaucht werden kann muss einleitend geklärt werden, was ein Speichermodell ist und was dessen Aufgaben sind. Das erste Kapitel befasst sich mit dieser Frage und beantwortet diese in einer definitionsähnlichen Art und Weise. Im Kapitel 2 werden die Probleme des alten Java Memory Models aufgezeigt. Dadurch wird klar, dass die Java Language Specification [5] einige Mängel aufweist, die behoben werden müssen. Dem aufmerksamen Leser wird auffallen, dass einige Probleme angesprochen, jedoch keine Lösungen vorgeschlagen werden. Aber keine Panik, das anknüpfende Kapitel holt dies nach. Das Kapitel 3 bildet den eigentlichen Kern dieses Seminarberichts und ist so gesehen in zwei Hälften geteilt. Die erste Hälfte beschreibt in Textform die Veränderungen gegenüber dem ursprünglichen Java Memory Model. In der zweiten Hälfte werden auf die angesprochenen Problemfälle des ursprünglichen Speichermodells eingegangen, mit dem neuen Modell verglichen und mit Beispielen veranschaulicht. Der abschliessende Rahmen dieser Arbeit bildet das Kapitel zum double-checked locking -Problem. Dieses Pattern wurde in den vergangenen Jahren häufig in Multithreading-Applikationen eingesetzt. In der Zwischenzeit ist bekannt, dass dieses Idiom fehlerhaft und deshalb zu vermeiden ist. Natürlich wird auch für diese Anwendung ein alternatives Pattern vorgeschlagen, das die Threadsicherheit garantiert. Simon Müller 10. Juni 2005 Seite 3

5 1 Was ist ein Speichermodell (Memory Model)? Im sequentiellen Fall sind Lese- und Schreiboperationen auf dem globalen Speicher weitgehend transparent. Hingegen ist der Komplexität in Multithreading-Umgebungen keine Grenze gesetzt. Um diesem Problem entgegenwirken zu können muss die Semantik durch ein entsprechendes Modell, dem Speichermodell, definiert werden. Das Speichermodell beschreibt die Beziehung zwischen Variablen in einem Programm und den systemnahen Details bezüglich dem Speichern und Laden vom Memory in einem Computer System. Dabei steht es dem Compiler frei, gewisse Optimierungen vorzunehmen solange die Spezifikationen erfüllt werden. Ein Beispiel hierzu ist das Speichern des Schleifenindexes in einem Register. Ähnliche Optimierungen werden auch vom Prozessor oder vom Cache zur Laufzeit vorgenommen. So kann zum Beispiel das Zurückschreiben vom Cache in den Hauptspeicher zeitlich verschoben werden, damit zusammenhängende Blöcke gemeinsam geschrieben werden und nicht mehrere Cache flushs notwendig sind [9, 10, 14]. 2 Das ursprüngliche Java Memory Model und seine Mängel Das Java Memory Model (JMM) ist das Speichermodell von Java und ist im Kapitel 17 der Java Language Specification (JLS) [5] beschrieben. Die beiden Hauptgründe für die Spezifikation eines Memory Models für Java ist zum einen die angestrebte verminderte Komplexität die dadurch erreicht werden möchte, zum anderen kann die Plattformunabhängigkeit garantiert werden, in dem derselbe Standard für alle Plattformen gilt. Das Modell hat sich allerdings in seiner ursprünglichen Form als unvollständig, schwer verständlich und nicht effizient implementierbar, erwiesen. Eine häufige Fehlerquelle war beispielsweise die falsche Verwendung der Schlüsselwörter synchronized und volatile. So war es für den Java Entwickler sehr schwer, korrekt funktionierenden Multithreading- Code zu schreiben. Ein weiteres Problem betraf das Schlüsselwort final. In bestimmten Situationen wiesen final-felder einen anderen Wert auf als den vom Konstruktor zugewiesenen. Die Konsequenzen waren fatal, zumal unveränderbare Objekte dadurch veränderbar erschienen [8, 9]. Reorderings sind ein fester Bestandteil des Java Memory Models um eine erhöhte Performance zu gewährleisten. Damit steht es dem Compiler frei gewisse Instruktionen umzuordnen, solange die Semantik des Programms nicht verändert wird, d.h. die Ausführung sich wie im sequentiellen Fall verhält (as-ifserial Semantik). Dem Cache ist es erlaubt, Variablen in einer anderen Reihenfolge in den Hauptspeicher zurück zuschreiben als diese vom Programm in den Cache gespeichert wurden. Der Prozessor kann in bestimmten Fällen die Ausführung bestimmter Operationen umsortieren und Instruktionen parallel ausführen. Fehlerhafte Implementierungen führten dabei zu unerwarteten Resultaten [9]. Synchronisierte Operationen haben den Ruf ineffizient zu sein. Deshalb haben sich im Laufe der Jahre verschiedene Idiome entwickelt (z.b. Double-Checked Locking), die vor allem auf die Vermeidung von Synchronisierungsoperationen hinzielen. Doch hat sich gezeigt, dass die meisten dieser Idiome in Unkenntnis oder unter Missachtung des Speichermodells formuliert sind und daher auf ausgewählten Plattformen nicht funktionieren [15]. Folglich war es nur eine Frage der Zeit bis das Java Memory Model überarbeitet wurde. Simon Müller 10. Juni 2005 Seite 4

6 3 JSR-133: Java Memory Model and Thread Specification Die JSR-133 Spezifikation erhebt keinen Anspruch auf neue Konzepte bzw. Features sondern dient lediglich dazu um Unklarheiten der ursprünglichen Spezifikation zu beseitigen. Es wurden einige Anstrengungen unternommen um die Funktionsweise der Threads und des Memorys zu veranschaulichen. Trotzdem werden einige Fragen nicht geklärt, so zum Beispiel wie der Compiler optimiert und Instruktionen umsortiert und wie diese Änderungen das Memory beeinflussen [6]. Die Anpassungen der Spezifikation haben zur Folge, dass die Java Virtual Machines (JVMs) der verschiedenen Plattformen an die neuen Regeln angeglichen werden müssen. Die JSR-133 Experten Gruppe weist dabei auf die folgenden beiden Punkte hin [10]: Die Semantik von final Feldern wurde insofern ausgebaut indem diese Variablen, auch ohne explizite Synchronisation, in Multithreading-Applikationen unveränderbar sind. In der ursprünglichen Spezifikation waren immutable Objekte nicht thread-safe d.h. sie erschienen in bestimmten Situationen veränderlich. Die Semantik von volatile Feldern wurde insofern ausgebaut indem der Zugriff auf diese Variablen nicht mehr ungeordnet geschehen darf, d.h. die Reihenfolge muss beibehalten werden. In der ursprünglichen Spezifikation war die Reihenfolge der Zugriffe auf volatile und non-volatile Variablen beliebig. 3.1 Das Java Memory Model im Detail Bei der Ausarbeitung der Spezifikation für das Java Speichermodell standen zwei gegensätzliche Punkte zur Diskussion. Zum einen muss das Memory Model vom Programmierer bzw. von der Programmiererin verstanden und einfach anwendbar sein, zum anderen soll es die Systemdesigner nicht in der Implementierung einschränken. Ein Modell, das dem Programmierer und der Programmiererin zu gute kommt ist unter dem Namen sequentielle Konsistenz (sequential consistency) bekannt. Es schreibt vor, dass Speichervorgänge sequentiell in der durch das Quellprogramm vorgegebenen Reihenfolge stattfinden müssen. Durch diese Vorgabe sind viele Compiler und Hardware Transformationen nur noch beschränkt durchführbar. Um die Performance dabei nicht zu vernachlässigen, wird der Begriff der sequentiellen Konsistenz leicht umdefiniert [3]: In einem sequentiellen konsistenten System sollen Umsortierungen von Compiler oder Prozessor Instruktionen nicht für den Programmierer oder die Programmiererin sichtbar sein. Durch diese Adaption erhofft man sich, die richtige Balance zwischen Sicherheit und Effizienz gefunden zu haben. Der Programmierer bzw. die Programmiererin muss sich somit nicht um Hardware oder Compiler Transformationen kümmern. Korrekt synchronisierte Programme Welche Bedingungen müssen für korrekt synchronisierte Programme gelten? Um diese Frage zu klären, müssen zuerst einige Begriffe erläutert werden. Nachfolgend werden die wichtigsten Definitionen zusammengefasst aufgelistet [3]: Simon Müller 10. Juni 2005 Seite 5

7 Conflicting Accesses: Das Lesen von oder Schreiben in eine Variable wird als Zugriff auf diese Variable definiert. Zwei Zugriffe auf gemeinsam genutzte Felder oder Arrays gelten als conflicting, sofern mindestens einer der beiden Zugriffe ein Schreibvorgang ist. Synchronization Actions: Unter diesem Begriff versteht man locks, unlocks, sowie das Lesen von und Schreiben in volatile Variablen. Synchronization Order: Die synchronization order beschreibt die Reihenfolge aller synchronisierten Aktionen innerhalb eines Programms. Stimmt die synchronisation order mit der program order überein und entspricht der gelesene Wert einer volatile Variable v dem, in der synchronisation order unmittelbar zuvor geschriebenen Wert derselben Variable v, so ist das Programm korrekt synchronisiert. Happens-Before Order: Stehen zwei Threads zur gleichen Zeit am Eingang des Synchronisationsmonitors, so wird der einen den Zugriff gewährt und der anderen vorerst verwehrt. Data Race: Wenn zwei Threads miteinander in Konflikt stehen und nicht nach happen-before geordnet sind, so spricht man von data race. Correctly Synchronized / Data-Race-Free Program: Ein Programm gilt als korrekt synchronisiert oder data-race-free, genau dann wenn alle sequentially consistent executions des Programms frei von data races sind. Nach Klärung der Begriffsdefinitionen kann nun die Antwort auf die einleitende Frage gegeben werden: Ist ein Programm gemäss der obigen Definition korrekt synchronisiert, so muss vom Java Memory Model die sequentielle Konsistenz garantiert werden. Betrachtet man das Listing 1 dann ist das Resultat r2==2 und r1==1, unter der Bedingung der sequentiellen Konsistenz, ausgeschlossen. Ist das Programm jedoch fehlerhaft synchronisiert, so sind Umsortierungen durch den Compiler möglich, was zu Resultaten wie zum Beispiel r2==2 und r1==1 führen kann [3]. Listing 1: Sequentielle Konsistenz Initialwerte: x==y==0 Thread 1 Thread 2 r2 = x; r1 = y; y = 1; x = 2; Die Konsequenz daraus ist, dass auch unter dem neuen Java Memory Model die zur Verfügung gestellten Hilfsmittel für die Synchronisierung wie synchronized und volatile von der Programmiererin bzw. vom Programmierer richtig eingesetzt werden müssen. 3.2 Der final Modifier In der ursprünglichen Spezifikation des Java Memory Models war es nicht ausgeschlossen, dass sich die sichtbaren Werte von final Feldern änderten. Ein in der Literatur oft beschriebenes Beispiel hierzu ist eine spezielle Implementierung der Klasse String. Simon Müller 10. Juni 2005 Seite 6

8 Ein String kann als Objekt mit drei final Feldern (ein character Array, das Offset in das Array und die Länge) implementiert werden. Der Vorteil dieser Implementierung liegt darin, dass verschiedene String Objekte denselben character Array teilen können und dadurch zusätzliche Objektallokationen und Kopiervorgänge vermieden werden. Die Methode substring() der Klasse String erstellt dabei einen neuen String mit demselben character Array aber mit unterschiedlichem Offset und Länge. String s1 = "/usr/tmp"; String s2 = s1.substring(4); Listing 2: Veränderbare Strings Betrachtet man das Codebeispiel in Listing 2, so ist der nachfolgend beschriebene Effekt gemäss des ursprünglichen Java Memory Models erlaubt: Es ist möglich, dass ein zweiter Thread zuerst einen Offset von 0 (Initialwert) und später den korrigierten Wert von 4 zu sehen bekommt, d.h. der Wert der Variable s2 ändert von "/usr" nach "/tmp". Dieser Effekt ist natürlich verheerend, im Speziellen wenn zum Beispiel das Verzeichnis auf Grund des Wertes der Variable s2 gelöscht werden soll. Dieses Verhalten kam dadurch zu Stande, weil Speichervorgänge ins Memory mit einer möglichen zeitlichen Verzögerung an die anderen Threads mitgeteilt wurden [8, 9]. Die überarbeitete Java Memory Model Spezifikation lässt dieses Verhalten nicht mehr zu, solange ein Objekte regelkonform erstellt wird. Darunter versteht man, dass keine Referenz auf das Objekt während dem Instanzierungsvorgang entfliehen darf. Mit anderen Worten ausgedrückt bedeutet dies, dass die Referenz auf das aktuelle Objekt nicht für andere Threads sichtbar sein darf, solange der Konstruktor nicht komplett abgearbeitet ist. Es ist demzufolge nicht empfehlenswert, die this-referenz im Konstruktor einem statischen Feld zuzuweisen oder damit einen Listener zu registrieren. Diese Aufgaben sind nach Beendigung des Konstruktors durchzuführen, d.h. mittels Methodenaufrufen auf dem instanzierten Objekt [8]. 3.3 Der volatile Modifier Volatile Felder können als Kommunikationsvariablen zwischen Threads angesehen werden. Der Modifier garantiert, dass die Daten des Feldes bei jedem Zugriff direkt vom Hauptspeicher gelesen werden, indem die Werte im Cache ungültig erklärt werden. Des weiteren ist es dem Compiler und der Vitual Machine nicht gestattet volatile Variablenwerte in Registern abzulegen. Beim Schreibvorgang wird mit einem expliziten flushing garantiert, dass die Werte der volatile Felder vom Cache in den Hauptspeicher zurückgeschrieben werden. Durch diese Bestimmungen ist garantiert, dass ein volatile Feld aus der Sicht eines jeden Threads, nie einen veralteten und somit ungültigen Wert aufweist. Im ursprünglichen Memory Model war ein umsortierter Zugriff auf volatile Felder nicht gestattet, jedoch war dieser zwischen volatile und non-volatile Variablen erlaubt. Auf Grund dieser Freizügigkeit war die Überprüfung von Konditionen, wie in Listing 3, nicht garantiert, da eine Umsortierung der Anweisungszugriffe nicht ausgeschlossen werden konnte. Im überarbeiteten Memory Model sind umsortierte Zugriffe zwischen volatile und non-volatile Variablen nicht mehr gestattet. Betrachtet man das Beispiel in Listing 3, unter der Voraussetzung dass der eine Thread die reader-methode und der andere Thread die writer-methode ausführt, so ist nach dem neuen Speichermodell garantiert, dass zum Zeitpunkt in dem die volatile Variable v zu true wird, x bereits den Simon Müller 10. Juni 2005 Seite 7

9 Wert 42 aufweisen muss. So gesehen entspricht der Speichereffekt beim Lesen einer volatile Variable der Anforderung eines Monitors und das Schreiben in dasselbe volatile Feld dem Freigeben desselben Monitors. Damit hat sich die Funktionsweise von volatile sehr stark der Synchronisierung angenähert [2, 4, 9, 11]. Listing 3: Volatile Felder als Konditionsvariablen class VolatileExample { int x = 0; volatile boolean v = false; public void writer() { x = 42; v = true; public void reader() { if (v == true) { // x garantiert den Wert 42 4 Multithreaded Singleton Pattern / Double-checked locking Das Singleton Pattern [1] ist ein häufig angewendetes Idiom in der Programmierung. Es dient dazu, dass von einer Klasse nicht mehrere Objekte instanziert werden können, sondern dass nur eine Instanz sichtbar ist. In einer Multithreading-Umgebung muss das Pattern mit Synchronisationsmechanismen erweitert werden. Ein korrekt funktionierendes Beispiel für ein Singleton in einer Multithreading-Umgebung ist in Listing 4 dargestellt. Listing 4: Thread-safe Singleton Pattern public class Singleton { private static Singleton instance; private Singleton() { public static synchronized Singleton getinstance() { if (instance == null) { Simon Müller 10. Juni 2005 Seite 8

10 instance = new Singleton(); return instance;... Betrachtet man die statische Methode getinstance() im Detail, so fällt auf, dass diese nicht sehr effizient implementiert ist. Grundsätzlich braucht es den Lock-Mechanismus nur solange bis eine Instanz der Klassenvariable instance zugewiesen ist. Danach würde die Methode synchronisationsfrei funktionieren. Es ist allgemein bekannt, dass sich Synchronisationen negativ auf die Performance auswirken. Mit der Idee im Hinterkopf, möglichst viele Synchronisationen zu vermeiden, ist ein weiteres Idiom entstanden, das unter dem Namen double-checked locking bekannt wurde. Der Programmcode ist in Listing 5 abgebildet. Listing 5: Double-checked locking public class Singleton { private static Singleton instance; private Singleton() { public static Singleton getinstance() { if (instance == null) { synchronized(singleton.class) { if (instance == null) { instance = new Singleton(); return instance;... Das Problem scheint gelöst. Der wechselseitige Ausschluss findet nur noch im Initialisierungszustand statt. Zwar muss die Überprüfung auf null innerhalb des synchronized-blocks erneut durchgeführt werden, doch nimmt man die verminderte Code-Übersichtlichkeit meist für eine bessere Performance in kauf. Aber Achtung: So perfekt das Idiom in der Theorie auch scheinen mag, es ist nicht thread-safe! Simon Müller 10. Juni 2005 Seite 9

11 Der Hauptgrund für das Versagen des double-checked locking sind nicht fehlerhafte JVM Implementierungen, sondern die Möglichkeit der out-of-order writes, die durch das Java Memory Model gegeben sind. Somit ist es möglich, dass die Variable instance bereits eine Adresse zugewiesen bekommt, bevor der Singleton-Konstruktor abgearbeitet wurde [7, 12]. Im Listing 6 ist der Vorgang der Zeile instance = new Singleton() in Pseudocode dargestellt. In einem ersten Schritt wird Speicher alloziert, um das zu erstellende Objekt abzulegen. Diese Speicheradresse wird danach der von anderen Threads einsehbaren Variable instance zugewiesen. Ab diesem Zeitpunkt ist instance nicht mehr null, obwohl der Konstruktor die Initialisierungen noch nicht vorgenommen hat. Man muss kein Prophet sein, um vorauszusehen, dass dieses Verhalten zu bedenklichen Problemen führt. Dieser Vorgang ist nicht nur von theoretischer Natur, sondern wird von einigen JIT Compilern angewandt. Listing 6: Pseudocode von instance = new Singleton(); mem = allocate(); instance = mem; ctorsingleton(instance); // Allozierung von Speicher // Zuweisung der Speicheradresse // Initialisierung (Konstruktor) Es stellt sich nun die Frage, ob der Modifier volatile das Problem der out-of-order writes lösen kann. In allen Java Virtual Machines vor der Version 1.5 ist es nicht garantiert. Wird das neue Java Memory Model berücksichtigt, so wird durch markieren des Feldes instance mit volatile gewährleistet, dass eine happens-before Reihenfolge besteht. Dadurch wird die Variable instance für andere Threads erst nach vollständiger Abarbeitung des Konstruktors sichtbar [11, 12]. Trotzdem sollte vom double-checked locking Idiom Abstand genommen werden. In den überarbeiteten Virtual Machines ist der Effizienznachteil von volatile kaum kleiner als von synchronized [11]. Das zu verwendende Pattern, das als effizient und thread-safe gilt, ist unter dem Namen Initialization On Demand Holder idiom bekannt. Es ist in Listing 7 abgebildet. public class Singleton { private Singleton() { Listing 7: Initialization On Demand Holder idiom private static class SingletonHolder { public static Singleton singleton = new Singleton(); public static Singleton getinstance() { return SingletonHolder.singleton; Simon Müller 10. Juni 2005 Seite 10

12 Der entscheidende Vorteil dieses Patterns ist zum einen die einfache Handhabung und zum anderen das Konzept der lazy initialization, das dann zum tragen kommt, wenn das initialisierte Objekt ein statisches Feld einer Klasse mit keinen anderen Methoden oder Feldern ist. Es besagt, dass das Singleton- Objekt erst alloziert wird, wenn zum ersten Mal das Feld singleton referenziert wird [9, 11]. Schlusswort Das neue Java Memory Model hat einen entscheidenden Vorteil gegenüber seinem Vorgänger: Die Spezifikation ist einfacher lesbar und dadurch verständlicher als zuvor. Allein für diese Tatsache hat sich die Mühe gelohnt. Die Korrekturen im Bereich der Modifier volatile und final waren sicherlich erforderlich, jedoch werfen die Effizienzeinbussen bei volatile Feldern einen kleinen Schatten auf die neue Spezifikation. Trotzdem kann das JSR-133 als eines der wichtigsten JSRs der letzten Zeit betrachtet werden, obwohl es keinen Code, keine APIs und keine neuen Sprachfeatures beinhaltet. Simon Müller 10. Juni 2005 Seite 11

13 Bibliographie L1. Literatur [1] Gamma, Erich, et al. Design Patterns: Elements of Reusable Object-Oriented Software. Boston: Addison-Wesley, [2] Lea, Doug. Concurrent Programming in Java: Design Principles and Patterns. 2nd ed. Boston: Addison-Wesley, [3] Manson, Jeremy, William Pugh, Sarita V. Adve. The Java Memory Model. Proceedings of the 32nd ACM SIGPLAN-SIGACT sysposium on Principles of programming languages. Long Beach, California, USA: L2. Internet [4] [5] Mai 2005 [6] [7] Mai 2002 [8] [9] [10] [11] Februar 2004 [12] Februar 2001 [13] Juni 2001 September 2004 [14] [15] Simon Müller 10. Juni 2005 Seite 12

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1

Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1 Teaser-Bilder erstellen mit GIMP 08.08.2014 Bildbearbeitung mit GIMP 1 Auf den folgenden Seiten werden die wichtigsten Funktionen von GIMP gezeigt, welche zur Erstellung von Bildern für die Verwendung

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Repetitionsaufgaben Wurzelgleichungen

Repetitionsaufgaben Wurzelgleichungen Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Synchronisations- Assistent

Synchronisations- Assistent TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software Artologik EZ-Equip Plug-in für EZbooking version 3.2 Artologik EZbooking und EZ-Equip EZbooking, Ihre webbasierte Software zum Reservieren von Räumen und Objekten, kann nun durch die Ergänzung um ein oder

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche etutor Benutzerhandbuch Benutzerhandbuch XQuery Georg Nitsche Version 1.0 Stand März 2006 Versionsverlauf: Version Autor Datum Änderungen 1.0 gn 06.03.2006 Fertigstellung der ersten Version Inhaltsverzeichnis:

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6

1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6 Inhalt 1. Einführung 2 2. Erstellung einer Teillieferung 2 3. Erstellung einer Teilrechnung 6 4. Erstellung einer Sammellieferung/ Mehrere Aufträge zu einem Lieferschein zusammenfassen 11 5. Besonderheiten

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

Datenaufbereitung in SPSS. Daten zusammenfügen

Datenaufbereitung in SPSS. Daten zusammenfügen Daten zusammenfügen I. Fälle hinzufügen Diese Schritte müssen Sie unternehmen, wenn die Daten in unterschiedlichen Dateien sind; wenn also die Daten von unterschiedlichen Personen in unterschiedlichen

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Nutzer-Synchronisation mittels WebWeaver Desktop. Handreichung

Nutzer-Synchronisation mittels WebWeaver Desktop. Handreichung Nutzer-Synchronisation mittels WebWeaver Desktop Handreichung Allgemeine Hinweise Um die Synchronisation der Nutzerdaten durchzuführen, starten Sie WebWeaver Desktop bitte ausschließlich mit dem für Ihre

Mehr

Benutzerhandbuch - Elterliche Kontrolle

Benutzerhandbuch - Elterliche Kontrolle Benutzerhandbuch - Elterliche Kontrolle Verzeichnis Was ist die mymaga-startseite? 1. erste Anmeldung - Administrator 2. schnittstelle 2.1 Administrator - Hautbildschirm 2.2 Administrator - rechtes Menü

Mehr

Kundenspezifische Preise im Shop WyRu Online-Shop

Kundenspezifische Preise im Shop WyRu Online-Shop Kundenspezifische Preise im Shop WyRu Online-Shop Team WyRu Christian Wyk / Günter Rubik SCS Bürocenter B1, A-2334 Vösendorf Internet http://www.wyru.at Kundenspezifische Preise sind ein Feature des WyRu

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

iphone- und ipad-praxis: Kalender optimal synchronisieren

iphone- und ipad-praxis: Kalender optimal synchronisieren 42 iphone- und ipad-praxis: Kalender optimal synchronisieren Die Synchronisierung von ios mit anderen Kalendern ist eine elementare Funktion. Die Standard-App bildet eine gute Basis, für eine optimale

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Änderung des IFRS 2 Anteilsbasierte Vergütung

Änderung des IFRS 2 Anteilsbasierte Vergütung Änderung IFRS 2 Änderung des IFRS 2 Anteilsbasierte Vergütung Anwendungsbereich Paragraph 2 wird geändert, Paragraph 3 gestrichen und Paragraph 3A angefügt. 2 Dieser IFRS ist bei der Bilanzierung aller

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Mean Time Between Failures (MTBF)

Mean Time Between Failures (MTBF) Mean Time Between Failures (MTBF) Hintergrundinformation zur MTBF Was steht hier? Die Mean Time Between Failure (MTBF) ist ein statistischer Mittelwert für den störungsfreien Betrieb eines elektronischen

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen. Programmierung des Farbsteuergeräts 340-00112 für Nikobus Diese Bedienungsanleitung gilt auch für die Nikobus-Produkte 340-00111 und 340-00113. Achtung: einige der aufgeführten Betriebsarten sind nur auf

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig? Pädagogik Melanie Schewtschenko Eingewöhnung und Übergang in die Kinderkrippe Warum ist die Beteiligung der Eltern so wichtig? Studienarbeit Inhaltsverzeichnis 1. Einleitung.2 2. Warum ist Eingewöhnung

Mehr

M@school Software- und Druckerzuweisung Selbstlernmaterialien

M@school Software- und Druckerzuweisung Selbstlernmaterialien Bildung und Sport M@school Software- und Druckerzuweisung Selbstlernmaterialien Hinweise zum Skript: LMK = Linker Mausklick RMK = Rechter Mausklick LMT = Linke Maustaste RMT = Rechte Maustaste Um die Lesbarkeit

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Mobile Intranet in Unternehmen

Mobile Intranet in Unternehmen Mobile Intranet in Unternehmen Ergebnisse einer Umfrage unter Intranet Verantwortlichen aexea GmbH - communication. content. consulting Augustenstraße 15 70178 Stuttgart Tel: 0711 87035490 Mobile Intranet

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG von Urs Schaffer Copyright by Urs Schaffer Schaffer Consulting GmbH Basel www.schaffer-consulting.ch Info@schaffer-consulting.ch Haben Sie gewusst dass... >

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien Sie haben von der VR DISKONTBANK GmbH ein signiertes PDF-Dokument (i.d.r. eine Zentralregulierungsliste mit dem Status einer offiziellen Rechnung) erhalten und möchten nun die Signatur verifizieren, um

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert.

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert. Der Gutachtenstil: Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert. Das Ergebnis steht am Schluß. Charakteristikum

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1 Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene

Mehr

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung Seite 1 Inhalt Allgemein...3 Installation...3 manuelle Eingabe von alten und neuen Adressnummern...4 Vorbereiten von Adressnummern-Änderungen in Tabellen...5 Seite 2 Allgemein Das INKS-Modul ermöglicht

Mehr

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH MATESO GmbH Daimlerstraße 7 86368 Gersthofen www.mateso.de Dieses Dokument beschreibt die Konfiguration

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Hinweise zum Übungsblatt Formatierung von Text:

Hinweise zum Übungsblatt Formatierung von Text: Hinweise zum Übungsblatt Formatierung von Text: Zu den Aufgaben 1 und 2: Als erstes markieren wir den Text den wir verändern wollen. Dazu benutzen wir die linke Maustaste. Wir positionieren den Mauszeiger

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Barcodedatei importieren

Barcodedatei importieren Barcodedatei importieren Inhaltsverzeichnis 1 Schnittstelle Barcodedatei importieren... 2 1.1 Funktion... 2 1.2 Konfiguration... 2 1.2.1 Lizenz... 2 1.2.2 Einstellungen... 2 1.2.3 Vorarbeiten... 3 1.2.3.1

Mehr

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden? Connext GmbH Balhorner Feld 11 D-33106 Paderborn FON +49 5251 771-150 FAX +49 5251 771-350 hotline@connext.de www.connext.de Pflegeberichtseintrag erfassen Produkt(e): Vivendi Mobil Kategorie: Allgemein

Mehr

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Bereich METIS (Texte im Internet) Zählmarkenrecherche Bereich METIS (Texte im Internet) Zählmarkenrecherche Über die Zählmarkenrecherche kann man nach der Eingabe des Privaten Identifikationscodes einer bestimmten Zählmarke, 1. Informationen zu dieser Zählmarke

Mehr

Kurzanleitung zur Übermittlung der mündlichen Prüfungsergebnisse mit DSD-Online. Stand: Dezember 2006. Schulmanagement weltweit

Kurzanleitung zur Übermittlung der mündlichen Prüfungsergebnisse mit DSD-Online. Stand: Dezember 2006. Schulmanagement weltweit Kurzanleitung zur Übermittlung der mündlichen Prüfungsergebnisse mit DSD-Online Stand: Dezember 2006 Schulmanagement weltweit Einleitung Ab sofort werden die Ergebnisse der mündlichen Prüfung in DSD-Online

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Erweitertes Kalkulationsfenster

Erweitertes Kalkulationsfenster Erweitertes Kalkulationsfenster Inhaltsverzeichnis 1. Bereich "Kalkulation" (Fokussierung: Ctrl-F2)... 3 2. Bereich "Kennzahlen"... 4 3. Bereich "Positionswerte"... 5 4. Bereich "Vorhandene Analysen" /

Mehr

Zur drittletzten Zeile scrollen

Zur drittletzten Zeile scrollen 1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:

Mehr

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012 White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012 Copyright 2012 Seite 2 Inhaltsverzeichnis 1. Umsatzsteuervoranmeldung (UVA) Österreich ab 01/2012...3 1.1. Einleitung...3 1.2. Voraussetzung...4

Mehr

Beweisbar sichere Verschlüsselung

Beweisbar sichere Verschlüsselung Beweisbar sichere Verschlüsselung ITS-Wahlpflichtvorlesung Dr. Bodo Möller Ruhr-Universität Bochum Horst-Görtz-Institut für IT-Sicherheit Lehrstuhl für Kommunikationssicherheit bmoeller@crypto.rub.de 6

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen Elektronik Praktikum / Digitaler Teil Name: Jens Wiechula, Philipp Fischer Leitung: Prof. Dr. U. Lynen Protokoll: Philipp Fischer Versuch: 3 Datum: 24.06.01 RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Mehr

Inventur. Bemerkung. / Inventur

Inventur. Bemerkung. / Inventur Inventur Die beliebige Aufteilung des Artikelstamms nach Artikeln, Lieferanten, Warengruppen, Lagerorten, etc. ermöglicht es Ihnen, Ihre Inventur in mehreren Abschnitten durchzuführen. Bemerkung Zwischen

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Anlage eines neuen Geschäftsjahres in der Office Line

Anlage eines neuen Geschäftsjahres in der Office Line Leitfaden Anlage eines neuen Geschäftsjahres in der Office Line Version: 2016 Stand: 04.11.2015 Nelkenweg 6a 86641 Rain am Lech Stand: 04.11.2015 Inhalt 1 Zielgruppe... 3 2 Zeitpunkt... 3 3 Fragen... 3

Mehr