Wenn ich eine Reihe von Jobs (Runnable oder Callable) habe, die ich gerade parallel ausführen lassen möchte, kann ich das mit Threads lösen. Die modernere Variante sind jedoch angepasste Executoren. Hier wird es aber schnell aufwendig, wenn ich eine Queue der beendeten Futures verwalten möchte. Eine einfachere Lösung bietet hier Guava mit der ListenableFuture Klasse an. Mit Hilfe der Executor-Decoratoren lassen sich die Standard Java Executoren verwenden, so dass der Code-Overhead an dieser Stelle minimiert werden kann. Ein kleines Anwendungsbeispiel lässt sich in oben erwähntem Link finden.
Montag, 8. September 2014
Dienstag, 2. September 2014
Reflection, neue Instanz und Generics
Es gibt Gelegenheiten, wo man eine Klasse über Reflection erzeugen möchte, dabei aber auch hässliche Casts verzichten will.
Am einfachsten geht die wie folgt:
Am einfachsten geht die wie folgt:
Class<?> genClazz = Class.forName(className); Class<? extends XYZ> clazz = genClazz.asSubclass(XYZ.class); Constructor<? extends XYZ> ctor = clazz.getConstructor(String.class, Integer.TYPE); XYZ var = ctor.newInstance("bla", 10);
Donnerstag, 31. Juli 2014
Abstellen der temporären IPv6 Adresse unter Windows
Im internen Netzwerk kann die temporäre IPv6 Adresse eher stören, wenn Dienste diese per DNS Request versuchen aufzulösen, da sie nicht im DNS eingetragen wird. Daher kann es, um Wartezeiten zu vermeiden, praktisch sein, diese abzuschalten.
Hierzu müssen in einer Admin-Shell folgende Befehle eingegeben werden:
netsh interface ipv6 set privacy state=disabled store=active netsh interface ipv6 set privacy state=disabled store=persistent netsh interface ipv6 set global randomizeidentifiers=disabled store=active netsh interface ipv6 set global randomizeidentifiers=disabled store=persistentNach einem Reboot sollten keine neue temporären IPv6 Adressen erstellt werden. Quelle: https://knowledge.zomers.eu/misc/Pages/How-to-disable-temporary-IPv6-address-allocation-at-a-Windows-PC.aspx
Freitag, 6. Juni 2014
Konfiguration
Unter Ubuntu lassen sich installierte Pakete mittels des Befehls dpkg-reconfigure neu konfigurieren. Hinter dem Befehl muss aber der Name des gewünschten Paketes angegeben werden. Aber woher kommt dieser?
Mit Hilfe des Befehls debconf-show --listowners bekommt man eine Liste der Pakete, die mit debconf (und damit auch mit dpkg-reconfigure) konfiguriert werden. Mit debconf-show paketname bekommt man dann auch die aktuelle Konfiguration angezeigt.
Alternativ kann man das Programm configure-debian benutzen. Hier wird man grafisch durch eine Liste geführt. Falls man nicht die Pakete in Gruppen zusammengefasst haben möchte, muss man den Parameter --list beim Aufruf mit angeben.
Mit Hilfe des Befehls debconf-show --listowners bekommt man eine Liste der Pakete, die mit debconf (und damit auch mit dpkg-reconfigure) konfiguriert werden. Mit debconf-show paketname bekommt man dann auch die aktuelle Konfiguration angezeigt.
Alternativ kann man das Programm configure-debian benutzen. Hier wird man grafisch durch eine Liste geführt. Falls man nicht die Pakete in Gruppen zusammengefasst haben möchte, muss man den Parameter --list beim Aufruf mit angeben.
Montag, 2. Juni 2014
rsync
Als Notiz (schließlich heißt das hier Notizbuch) die rsync Parameter:
Einfache Kopie
Einfache Kopie
rsync --stats --archive --verbose --compress --partial --progress --rsh=ssh \ source user@dest:/directoryKopie mit Checksumme
rsync --checksum --stats --archive --verbose --compress --partial --progress \ --rsh=ssh source user@dest:/directoryPrüfung ohne Kopiervorgang
rsync --dry-run --stats --archive --verbose --compress --partial --progress \ --rsh=ssh source user@dest:/directory
Freitag, 9. Mai 2014
Oracle Funktionen
Die Funktion regexp_substr kann als "split" Ersatz verwendet werden. Der reguläre Ausdruck enthält dazu die Zeichen zwischen den Delimitern (siehe das unten stehende Beispiel). Die benötigte Gruppe holt man sich dann mit dem vierten Parameter.
Beispiel:
select regexp_substr('a/b/c','[^/]+', 1, 2) from dual
SQL Developer Tastatur Shortcuts
Da ich üblicherweise lieber mit der Tastatur als mit der Maus arbeite, suche ich gerne Tastaturkürzel für die verwendeten Programme.
In der letzten Zeit muss ich häufiger mit dem SQL Developer arbeiten, daher hier eine Liste von interessanten Tastaturkürzeln:
Quellen:
In der letzten Zeit muss ich häufiger mit dem SQL Developer arbeiten, daher hier eine Liste von interessanten Tastaturkürzeln:
- Ctrl-Enter: Führe das aktuelle Statement aus
- Ctrl-F7: Führe eine Formatierung des Fensters aus
- Ctrl-Shift-N: Neues SQL Arbeitsblatt mit eigener Verbindung
Quellen:
Donnerstag, 20. März 2014
Automatisches Umleiten des stdout/stderr in einem Shell Script
Üblicherweise schreibt ein Shell Script seine Meldungen auf stdout und gegebenenfalls auf stderr. Wenn diese statt dessen in ein File geschrieben werden sollen, wird das Script mit entsprechenden Umlenkungen gestartet:
Ein Beispiel veranschaulicht dies am besten:
script.sh > script.log 2> script.errSoll das Script aber seine Meldungen von vornherein in Dateien schreiben (ggf. getriggert durch einen Parameter) kann man mit Hilfe des Befehls exec dies einstellen.
Ein Beispiel veranschaulicht dies am besten:
#!/usr/bin/env bash echo Hallo exec > logme.log 2> logme.err echo Log echo Error >&2
Mittwoch, 19. Februar 2014
Programm in Unity hinzufügen
Um ein Programm in Ubuntu Unity zu sehen, muss man eine passende .desktop Datei in das Verzeichnis ~/.local/share/applications/ legen.
Quelle: http://askubuntu.com/questions/67753/how-do-i-add-an-application-to-the-dash
Quelle: http://askubuntu.com/questions/67753/how-do-i-add-an-application-to-the-dash
Mittwoch, 5. Februar 2014
Threaddump für JVM
Unter Linux kann man mit einem QUIT Signal die JVM dazu veranlassen, einen Threaddump zu schreiben:
kill -3 pid kill -QUIT pidDer Threaddump wird auf stdout geschrieben.
Alternativ kann ab JDK6 das Programm jstack benutzt werden. Dieses zeigt den Threaddump direkt an. Um die verfügbaren Java-Maschinen zu sehen bietet sich das Programm jps an.
Montag, 13. Januar 2014
iscsiadm Übersicht
Kleine Übersicht über die wichtigsten iscsiadm Befehle
Verfügbare Targets an einem Server finden
An einem Target anmelden
Von einem Target abmelden
Weitere Befehle:
Informationen über das Target bekommen
Alle eingeloggten Sessions anzeigen
Multipath-Infos anzeigen
Quelle: http://axelilly.wordpress.com/2010/05/27/help-iscsi-initiator-commands-for-linux/
Verfügbare Targets an einem Server finden
iscsiadm -m discovery -t sendtargets -p ipaddress
An einem Target anmelden
iscsiadm -m node -T targetname -p ipaddress -l
Von einem Target abmelden
iscsiadm -m node -T targetname -p ipaddress -u
Weitere Befehle:
Informationen über das Target bekommen
iscsiadm -m node -T targetname -p ipaddress
Alle eingeloggten Sessions anzeigen
iscsiadm -m session
Multipath-Infos anzeigen
multipath -ll
Quelle: http://axelilly.wordpress.com/2010/05/27/help-iscsi-initiator-commands-for-linux/
Abonnieren
Posts (Atom)