Java Memory Model (JSR-133)
|
|
- Ralph Kirchner
- vor 8 Jahren
- Abrufe
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 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrDaniel 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
MehrSysteme 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
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:
MehrErweiterung 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
MehrBinä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
MehrObjektorientierte 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/
MehrGrundlagen 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)
MehrVerhindert, 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:
MehrObjektorientierte 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
MehrEinfü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
MehrArbeiten 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
MehrModellierung 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; {
MehrProgrammierkurs 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
MehrTeaser-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
MehrOutlook. 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
MehrEinfü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
MehrLizenzierung 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
Mehr4 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
MehrRepetitionsaufgaben 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
MehrAnleitung ü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
MehrSynchronisations- Assistent
TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent
MehrZeichen 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
MehrHandbuch. 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
MehrSoftware 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
MehrWindows. 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
Mehretutor 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:
MehrBEISPIELKLAUSUR 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
MehrLizenzierung 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
MehrSpeicher 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
MehrAGROPLUS 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
MehrDatenbanken 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,
MehrJava 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
Mehr1. 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
MehrProf. 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
MehrL10N-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
MehrJava 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
MehrMORE 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
MehrDatenaufbereitung 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
MehrAufklappelemente 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
MehrNutzer-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
MehrBenutzerhandbuch - 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ü
MehrKundenspezifische 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
MehrIst 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,
Mehriphone- 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
MehrHandbuch 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 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
MehrFachgebiet 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
MehrStudentische 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
MehrMean 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
MehrSEP 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
MehrDatensicherung. 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
Mehr1) 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
Mehr10 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
MehrDokumentation 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
Mehr1 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 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
MehrObjektorientierte 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)
MehrDownloadfehler 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
MehrMonitore. 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
MehrGruppenrichtlinien 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
Mehr1 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
MehrPä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
MehrM@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
MehrWü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
Mehr1 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
MehrDas 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
MehrEinfü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
MehrMobile 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
MehrZä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 --
MehrDAS 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... >
MehrJava 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,
MehrBedienungsanleitung: 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 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
MehrPrinzipien 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........................
MehrCharakteristikum 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
Mehricloud 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
MehrZahlenwinkel: 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
MehrStand: 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
MehrLDAP 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
MehrS/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
MehrHinweise 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
MehrKapitel 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
MehrBarcodedatei 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
MehrPflegeberichtseintrag 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
MehrBereich 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
MehrKurzanleitung 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
MehrProfessionelle 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
MehrErweitertes Kalkulationsfenster
Erweitertes Kalkulationsfenster Inhaltsverzeichnis 1. Bereich "Kalkulation" (Fokussierung: Ctrl-F2)... 3 2. Bereich "Kennzahlen"... 4 3. Bereich "Positionswerte"... 5 4. Bereich "Vorhandene Analysen" /
MehrZur 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:
MehrWhite 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
MehrBeweisbar 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
MehrSoftwarelö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]
MehrRS-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
MehrInventur. 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
MehrInstallation 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
MehrArrays 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"
MehrAnlage 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