Beiträge von a9bejo

    wenn die liste alphabetisch sortiert ist bietet sich ja eine binaere suche an.

    @assoziative arrays: bin mir nicht sicher wie das in PHP ist, aber in der regel werden solche dictionary structuren durch hashtabellen realisiert und der zugriff ist sehr schnell. Besonders auch, da assoziative arrays in PHP direct in C implementiert sind.

    @AVL baume, häufigkeit von strings, komplexe fragen auf eine grosse datenmenge:

    Hier gibt es einen (wie ich finde recht coolen) trick: Anstatt eines Arrays benutzt man als Datenstruktur eine in-memory SQLite datenbank!

    Hab ich persoenlich noch nicht gemacht, aber es klingt sehr vielversprechend:

    Die daten kann man ansprechen wie jede andere datenbank auch ("select count(string) from strings where string = ...")

    Es gibt kaum mehraufwand im code. Eine im memory datenbank anlegen und darin suchen erfordert fast so wenig zeilen code wie die pure array variante. Zumindest in Ruby und Python aber in PHP geht das sicher auch recht schick, da PHP ja soweit ich weiss SQLite seit Version 5 schon mit dabei hat.

    SQLite ist extrem effizient, da es wie jedes andere RDBMS intern mit AVL Baumen arbeitet. Man kann auch Indicies auf die spalte legen.

    SQLite ist in C und auf performance programmiert. da geht die post ab.

    Zitat von master_fluc

    Hi!
    Gibts empfehlenswerte Bücher oder Tutorials?
    lg

    Schau mal in diese Threads hier rein:

    http://www.informatik-forum.at/showthread.php?t=24381

    http://www.informatik-forum.at/showthread.php?t=42096

    Tool:

    Ausser dem Java Development Kit (JDK), der API Documentation und einem guten Lehrbuch wuerde ich ersteinmal nur einen Texteditor benutzen und keine IDE.

    Ich benutze zwar auch Eclipse, allerdings find ich es sinnvoll wenn man das Uebersetzen und Ausfuehren der Programme zunaechst einmal selber macht. Ansonsten lernt man diese und andere Grundlagen naemlich nicht kennen und kann spaeter in sehr frustierende Situationen kommen. Die Vorteile einer IDE helfen Dir bei deinen ersten Schritten ohnehin nicht viel.

    ich habe deinen code gerade getestet und bei mir geht alles gut: keine exception, das dokument wird erfolgreich erstellt. :confused:


    Code
    Welcome to Darwin!
    benjamin-ferraris-computer:~ ben$ java -version
    java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112)
    Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing)
    benjamin-ferraris-computer:~ ben$

    Also ich hab jetzt meine demo so umgestaltet, das sie dein TableModel verwendet und hab nach wie vor keinerlei probleme (Ich bekomme die ausgabe "TEST", wenn ich einen wert in spalte 3 aendere.)

    UPDATE: Wenn diese Demo genau so bei Dir nicht funktioniert, poste doch bitte mal die Ausgabe von "java -version" hier. Bei mir ist das

    Code
    $ java -version
    java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-112)
    Java HotSpot(TM) Client VM (build 1.5.0_06-64, mixed mode, sharing)


    (auf Mac OSX)

    Erst wenn du die Eingabe bestaetigst (ENTER taste oder auf eine andere Spalte klicken), wird das event gefeuert. Ansonsten muss es an einem Bug in deiner Javaversion liegen (1.5 hier) oder du hast an dem democode etwas entscheidendes geaendert, denn ich hab meinen Code natuerlich getestet bevor ich ihn gepostet habe.

    Zitat von jimbeam


    Eine Frage hab ich aber noch! Ich will jetzt erst aktualisieren wenn ich einen Button klicke! Ist das auch möglich?


    Das Problem versteh ich jetzt nicht. DU bestimmst doch, wann du die werte updatest (tableChanged), oder wann du sie in die Datenbank schreibst (was du mit dem rowData Object machst).

    * Du must in tableChanged ja nichts in die Datenbank schreiben. Du kannst dir einfach merken was du geaendert hast und erst bei buttonevent darauf reagieren.

    * Du must in setValue nicht die Daten in deinem Model aendern. Du kannst das auch irgendwo zwischenspeichern und das spaeter machen, wenn du willst. Ich weiss jetzt nicht, wozu das gut sein sollte aber es geht.

    * Du kannst auch selber entscheiden, wann tableChanged ueberhaupt aufgerufen wird (fireTableCellUpdated(row, col); )

    Du must zunaechst einen Listener erzeugen, der die Methode 'tableChanged' ueberschreibt, und ihn an das TableModel anhaengen. die Indices fuer die Zeile und Spalte befinden sich dann im uebergebenen Event.

    Hier eine vollstaendige Demo:

    Entschuldige, wenn ich an der eigentlichen Frage vorbeirede, aber gibt
    es einen Grund warum du keine bestehende API zum parsen verwendest?

    Meiner Erfahrung nach in das korrekte Parsen von RSS viel mehr Arbeit
    als es auf den ersten Blick aussieht: über 20 unterschiedliche Standards,
    Probleme mit Datenformaten und encoding (wie bei Dir gerade), und
    dann auch noch die zahlreichen Feeds, die eigentlich ungültig sind, die
    Du aber trotzdem berücksichtigen willst/musst.


    Wenn es Dir eigentlich nicht so sehr um das parsen geht, sondern du
    eine gute Idee für einen aggregator hast, würden ich dir raten, die low
    level Probleme eher mit ROME oder dem UFP lösen.

    Zitat von Spockman
    Code
    Set<Integer> numbers = new HashSet<Integer>();
    while (set.size() < N) { numbers.add(new Random().nextInt(N)+1); }


    Potentiell nicht-terminierend.

    diese 2te loesung steht deshalb da, weil mein erstes vorgehen nicht mehr klappt, wenn die menge der moeglichen werte groesser sein soll als die anzahl der ergebnisse.

    btw, da wir jetzt anscheinend bei anderen Sprachen angelangt sind:

    Code
    (1..100).sort_by{rand}

    (ruby)

    Zitat von Spockman
    Code
    Set<Integer> numbers = new HashSet<Integer>();
    while (set.size() < N) { numbers.add(new Random().nextInt(N)+1); }


    Potentiell nicht-terminierend.

    diese 2te loesung steht deshalb da, weil mein erstes vorgehen nicht mehr klappt, wenn die menge der moeglichen werte groesser sein soll als die anzahl der ergebnisse.

    btw, wenn wir jetzt mit anderen sprachen um uns werfen:

    Code
    (1..100).sort_by{rand}
    Zitat von hellsmurf

    Sowas MUSS man als Informatiker können.


    Ich glaube nicht das CrazyInu Informatiker ist und ich wuesste auch nicht dass er das hier behaupted haette.

    Zitat von hellsmurf

    Geht zwar eleganter...


    Ganz bestimmt sogar:

    Code
    List<Integer> numbers = new ArrayList<Integer>();
    for(int i=0;numbers.size()<N;i++){numbers.add(i);}
    Collections.shuffle(numbers);


    oder

    Code
    Set<Integer> numbers = new HashSet<Integer>();
    while (set.size() < N) { numbers.add(new Random().nextInt(N)+1); }
    Zitat von bosie

    hm, ich finde bei den samsung-14-zoll-notebooks leider nur 1280x768 als maximale auflösung. und so billig sind die wirklich net.

    mea culpa, hab mich verschireben: 15'' waren es, ich glaub ca dieses geraet:
    (x20 IIer serie war das) http://www.netzwelt.de/news/71673_5.html

    bei amazon vor ca 14 monaten um 1099,- . Vergleichbare 15'' waren da bis max. 1280x768 . Das Notebook ist sehr leicht (leichter ls mein macbook), ausgezeichnet verarbeitet. Nach einem jahr war der luefter lauter als zu beginn und das notebook wurde etwas waermer, aber ansonsten war es in gutem Zustand.

    Ich will samsung nicht mit IBM oder Apple vergleichen, und das Macbook ist ja auch preislich sehr stark; Aber von den ganzen Mittelfeldspielern hat das Samsung damals besser abgeschnitten als die angebote von dell, acer oder sony.

    Ob ein Notebook wirklich gute Qualitaet hat, weiss man ja eigentlich erst, wenn man nach 3 Jahren zureckblickt. Ich hatte mal ein Notebook von Targa (von der qualitaet aehnlich wie ein Gericom), das hat im ersten Monat auch super funktioniert :).

    Ich schaetze als Arbeitsrechner sind die Macbooks sehr gut geeignet. Zumindest bin ich mit meinem bis jetzt sehr zufrieden.

    Meinen Recherchen nach sind besonders Apple und (frueher) IBM fuer sehr gute Qualitaet bekannt. Dann gibt es ein breites Mittelfeld und die Hoferkisteln und meine spezielle Freunde von Targa tummeln dann irgendwo ganz unten.

    Ein guter Tip war fuer mich uebrigens Samsung. Ich hab mein ein Jahre altes Geraet jetzt wegen dem Macbook verkauft, war aber eigentlich sehr zufreiden damit. Und die preise sind sehr gut, vor allem wenn man sich die Displays von den Samsung Notebooks anschaut (14zoll mit 1440x1280 fuer ~1200 Euro war vor einem Jahr schon ziemlich gut) .

    Ich glaube das kann vorkommen, wenn sich 2 unterschiedliche Java installationen in die quere kommen; wenn du z.b den Compiler von installation A aufrufst, und im pfad die libs von Installation B liegen.

    Auf eingen Linuxdistributionen ist mir dieser Fehler schon untergekommen bild ich mir ein, wenn im Pfad auf eine alternative jvm verwiesen wurde.