- 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 |