- Satzorientiert – mengenorientiert (impedance mismatch)
- Hintergründe zu jedem Problem, was muss ein DBMS alles beachten
- u.a. Nebenläufigkeit, Anfragekontrolle, Puffermanagement (Seiten, Caching, Verdrängungsstrategien, Puffermanager)
| module ActiveSupport | |
| module Dependencies | |
| def load_missing_constant_with_shared_code(from_mod, const_name) | |
| puts "Looking for #{const_name}" | |
| load_missing_constant_without_shared_code(from_mod, const_name) | |
| end | |
| alias_method_chain :load_missing_constant, :shared_code | |
| end |
| class Customer | |
| def self.options_for_select | |
| all.collect do |customer| | |
| [customer.formatted_for_option, customer.id] | |
| end | |
| end | |
| def formatted_for_option | |
| "#{id}: #{title}" | |
| end |
| class Doc < File | |
| has_attachment :content_type => 'application/msword', | |
| :max_size => 2.megabytes, | |
| :storage => :file_system | |
| end |
| class Integer | |
| def to_base(base) | |
| number = self.abs | |
| result = '' | |
| digits = (0..9).to_a + ('A'..'Z').to_a | |
| raise "Sorry, there aren't enough characters to convert #{number} to base #{base}" if base > digits.size | |
| while number > 0 |
| 1.1 | |
| ******** | |
| ============================================== | |
| Ziele bei der Entwicklung von Betriebssystemen | |
| ============================================== | |
| einfache Benutzbarkeit | |
| Effizienz | |
| Sicherheit | |
| Zuverlässigkeit |
| #!/usr/bin/env python | |
| # encoding: utf-8 | |
| # i ist Kandidat für die natürlichen Zahen bis n | |
| def teilersumme(n): | |
| """gibt die Teilersumme von n aus""" | |
| i=1 | |
| # _sum hält die Summe der Teiler | |
| sum=0 |
| Prozessorzeit: | |
| Prozentuale Angabe der vergangenen Prozessorzeit, die zum Ausführen eines Threads benötigt wird, der sich nicht im Leerlauf befindet. | |
| Dieser Leistungsindikator ist die primäre Anzeige der Prozessoraktivität. | |
| Die Zeitspanne, die der Prozessor benötigt, um den Thread des Leerlaufprozesses in jedem Abtastintervall auszuführen, wird von 100% subtrahiert. | |
| (Jeder Prozessor besitzt einen Leerlaufthread, der Zyklen belegt, wenn keine anderen Threads ausgeführt werden können.) | |
| Der Leistungsindikator zeigt die durchschnittliche prozentuale Belegung während dem Abtastintervall an, | |
| indem die Zeitspanne, die der Dienst nicht aktiv war von 100% subtrahiert wird. | |
| Privilegierte Zeit: | |
| Der Prozentanteil der verstrichenen Zeit für Prozessthreads, die im privilegierten Modus ausgeführt werden. |
| Was ist „busy waiting“? | |
| - "Aktives Warten" | |
| - kann zur Zeitüberbrückung (while i < x) oder zur Synchronisation (while !flag) genutzt werden | |
| Welche anderen Möglichkeiten „zu warten“ gibt es in einem Betriebssystem? | |
| - Interrupt, Schlafenlegen (abgabe der kontrolle an einen Scheduler, der mich dann wieder aufweckt) | |
| Kann „busy waiting“ immer vermieden werden? | |
| - Nein, SpinLock |
| script/generate model User code:integer | |
| script/generate model Address user:references | |
| script/console | |
| >> User.all | |
| User Load (0.4ms) SELECT * FROM `users` | |
| => [#<User id: 1, code: 333, created_at: "2009-12-01 23:47:29", updated_at: "2009-12-01 23:47:29">, | |
| #<User id: 2, code: 999, created_at: "2009-12-01 23:47:34", updated_at: "2009-12-01 23:47:34">, | |
| #<User id: 3, code: 1000, created_at: "2009-12-01 23:47:36", updated_at: "2009-12-01 23:47:36">] | |
| >> User.search 333 |