Zum Inhalt springen

sayso

Mitglieder
  • Gesamte Inhalte

    155
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von sayso

  1. sayso

    C Pointer auf Pointer

    Hallo, das mit dem Beispiel ist ja klar. Der Zeiger int *Zeiger zeigt au den Speicherinhalt der Variable int a. Aber in diesem Beispiel: Habe ich ja einen Zeiger auf einen Zeiger definiert. D.h. in Zeile 3 würde der Zeiger **p2 auf den Inhalt auf den Zeiger *p1 zeigt zeigen und somit (bis zu Zeile 3) auf NULL. Wieso allerdings dann der Zeiger *p1 auf char c zeigt ist für mich nicht navollziehbar, denn für mich wäre es nur logisch wenn folgendes passieren würde.. *p1 = &c; *p2 ist doch laut deklaration nur ein Zeiger und kein Zeiger auf einen Zeiger, wieso dann durch *p2 = &c auch der Zeiger *p1 richtig gesetzt wird ist nicht klar... :(
  2. sayso

    C Pointer auf Pointer

    Sorry hab ich nicht verstanden *p2 ist aber nirgends deklariert, da ich doch nur **p2 deklariert habe. Gehen wir es mal so an: char c = 'x'; /* 1 */ char *p1 = NULL; /* 2 */ char **p2 = &p1; /* 3 */ *p2 = &c; /* 4 */ *p1 = 'X'; /* 5 */ Zeile 1 --> c = x (eigene speicheradresse 111) Zeile 2 --> zeiger p1 zeigt auf speicheradresse NULL (eigene speicheradresse 222) Zeile 3 --> zeiger auf zeiger p2 zeigt auf speicheradresse 222 (eigene speicheradresse 333) Zeile 4 --> ??? Zeile 5 --> ??? Trotzdem schonmal danke hmm
  3. Hallo Kollegen, ich habe mal wieder eine kleines Verständnisproblem und vllt. könnt ihr mir helfen... Es geht um folgenden Code: char c = 'x'; /* 1 */ char *p1; /* 2 */ char **p2 = &p1; /* 3 */ *p2 = &c; /* 4 */ *p1 = 'X'; /* 5 */ In Zeile 3 wird dem Zeiger auf einen Zeiger p2 die Adresse des Zeigers p1 zugewiesen somit referenziert p2 später auf das auf was p1 zeigt. Aber bei Zeile 4 habe ich ein Verständnisproblem. Ich habe doch "nur" einen Pointer auf einen Pointer mit char **p2 deklariert, wieso gibt es den "einfachen" Zeiger *p2 auch noch? und wieso kann ich mit *p1 dann die char variable c ändern... Vllt. kann mir das jemand von euch erklären. Für mich würde es sich nur so logisch erschliessen char c = 'x'; /* 1 */ char *p1 = &c; /* 2 */ char **p2 = &p1; /* 3 */ **p2 = 'X'; /* 4 */ Den Ursprungscode habe ich von http://c-faq.com/ansi/constmismatch.html Den Code habe ich mit den Typen vereinfacht, da der Code aus dem Link ein anderes Problem erklärt aber ich verstehe die Zuweisung einfach nicht... Hoffentlich könnt ihr licht ins dunkele bringen Danke
  4. Das werden sie auch tun :-P aber mich interessiert es trotzdem warum es ein anderes ergebniss liefert
  5. Hallo, ja ich meinte ROWNUM - ich tippe leider alles ab, da ich aus Java Oberfläche (OEM) nicht kopieren kann :-\ Wenn ich den NO_INDEX angebe macht er trotzdem einen Indexscan mittes <SCHEMA>.TB1~0. Aber die entscheidende Frage ist: Warum sortiert er mir die Ausgabe aufsteigend wenn er einen Full Indexscan macht und warum bekomm ich sie unsortiert beim FULL Table Scan... Arbeitet der Indexscan anders, so das er bei niedrigsten Wert anfängt und sich dann nach oben arbeitet? Mein SQL-Statement mit NO_Index war so: SELECT /*+NO_INDEX(HOLT.TB1~0)*/ DAT,BELNR,JAHR,BESCH from HOLT.TB1 where numrow < 666666;
  6. Hallo, hier der QUERY_PLAN:
  7. Hallo, wenn ich über den Index selektiere (also keinen FULL Table Scan), dann kommen die Daten sortiert ... wie kommt das zu stande? Gruß und danke
  8. Hallo Jaraz, habe nun etwas anderes festgestellt... Mach ich einen "select * from TAB1" kommen die Daten unsortiert... mache ich allerdings einen "select BELNR from TAB1" kommt BELNR sortiert... Der Index liegt über folgenden Feldern: DAT BELNR JAHR Ich möchte es nicht deaktivieren, aber da die Jungs aus der Anwendung keinen Sort in ihre Applikation implentiert haben und sich auf die sortierte Tabelle verlassen haben stehen wir nun vor einem problem. Ich möchte einfach sehen wie die Datensätze in der DB liegen....
  9. Hallo zusammen, ich habe ein kleines Problem und bin mir sicher das ihr mir helfen könnt. Ich habe eine Tabelle TAB1 in der folgende Datensätze sind (ich weiss aber nicht ob sie sortiert in den Datenbank liegen). TAB1: DAT BELNR JAHR 010 111111 2005 010 111112 2006 010 111113 2006 Nun wollte ich sehen ob die Datensätze aufsteigend nach BELNR in der Tabelle liegen. Wenn ich mit sqlplus einen select ausführe ("select BELNR from TAB1") dann sehe ich die BELNR sortiert. Mache ich das Statement über den OEM mittels view/edit content dann sehe ich die BELNR unsortiert (also erst 111113 und dann 111111 und dann 111112). Sortiert der SQLPLUS von sich aus, oder stellt es mir die Funktion aus dem OEM falsch dar?? Ich bin etwas vewirrt, wenn die Jungs aus der Applikation die Datensätze mittels "select * from TAB1" machen, dann bekommen sie diese auch unsortiert.. von daher gehe ich davon aus das der sqlplus sortiert... Kann ich ihm das irgendwie austreiben? oder gibt es evtl. ein anderes Problem? Die Tabelle hat natürlich noch mehrere Felder... aber die Schlüßelfelder sind DAT BELNR und JAHR... Würdet mir echt helfen Datenbank ist eine Oracle 9.2. Patchset 7 und auf den Feldern liegt auch ein Index... Danke!
  10. sayso

    Oracle CBO und RBO

    @Jasper: Was soll ich sagen... Das sich jemand soviel Mühe für mich macht, ist echt der Wahnsinn... :uli :uli Vielen Dank für deinen ausführlichen Trace (inklusive Kommentierung) :byby: Jetzt wird mir auch klar wie so ein dynamic sampling funktioniert, und die anschliessende Entscheidung fällt. Warum ich diese Frage stellt habe? Wir haben eine Datenbank mit Oracle Text, in der verschiedene Descriptionfelder durchsucht werden können. Jeden Tag wird eine Statistik über die Felder, ergo den Intermedia-Index gefahren. Die Frage die ich mir gestellt habe, war nun ob es überhaupt sinnvoll ist jede Nacht zu analysieren, und ob evtl. ein dynamic sampling schneller wäre. Dies kann ich ja jetzt mal mit dem oben genannten geposteten Trace selbst analysieren. Im Metalink gibt es ja bestimmt auch etwas zu den Schlagwörtern. Desweiteren haben wir eine Datenbank in der sehr viel Bewegungsdaten sind, es existieren aber Statistiken für Tabellen , die mehrmals am Tag aufgebaut werden. Hier ist nun auch fraglich, ob dies sinnvoll ist wenn der CBO mit dynamic sampling doch relativ genau arbeitet.... Vllt. hat jemand ja schon im Zusammenhang mit Oracle Text analysen gemacht und kann Erfahrungen posten Vielen Dank an Euch.. ihr seid super!!!
  11. Args, das ist schlecht. Gibt es eine Möglichkeit unter Windows den Programmablauf zu verfolgen, ohne den VC++ installiert zu haben. (sowas wie truss unter Unix oder strace unter linux) Das Problem ist einfach das ich das problem auf meinem System nicht nachstellen kann und das programm so funktioniert wie es sein sollte... Edit: habe das Tool StraceNT gefunden... das hängt sich an den Prozess und traced die systemcalls
  12. Hallo zusammen, wie kann ich im Visual C++ 6.0 ein Binary kompilieren/linken das im Debugmodus läuft. Wäre sehr schön wenn man dem Compiler/Linker irgendwie sagen könnte das der komplette Debugoutput in die Datei XYZ soll. Habe ein Problem das zur Laufzeit ein Fehler sporadisch auftritt, ich ihn aber bei mir nicht lokalisieren kann bzw. nachstellen, deshalb würde ich gerne das Binary im Debugmodus rausgeben um zu sehen wo der Fehler ist. Wie funtkioniert das mit dem dem Visual Studio ? Es ist eine MFC Anwendung :-) Gruß
  13. Hallo Klotzkopp, vielen Dank für die Information. Dann habe ich den Speicherfresser gefunden :beagolisc Mein Kollege hat es so programmiert, das viele Verarbeitungen in Threads laufen, damit man parallel verschiedene Dinge ausführen kann. In diesen Threads werden Instanzen von Klassen mittels new aufgebaut, aber leider nicht mehr per delete gelöscht.... Vielen Dank an Euch :e@sy
  14. Hallo, ich bin gerade mal dabei das Tool auszuprobieren.. Noch ne kurze Frage: Wenn Speicher mittels malloc oder new allokiert wurde, wird ja ja funktionsübergreifend bzw. methodenübergreifend allokiert. Erst wenn man free() absetzt wird der zuvor allokierte Speicher in die Freispeicherliste angehängt oder ans OS zurückgegeben, und kann von anderen Programmen genutzt werden. D.h. der Speicher wird erst mit free oder beim Beenden des kompletten Programms freigegeben. Wie verhält sich dies mit Threads? Wenn in Threads mit malloc gearbeitet wird und die free Anweisung nicht vor Beendigung des Threads erfolgt, bleibt der Speicher dann trotzdem noch allokiert solange das "Hauptprogramm" läuft, oder wird der mit Beendigung des Threads wieder ans OS zurückgegeben bzw. an die Freispeicherliste angehängt? Danke führ Eure Hilfe :byby:
  15. Hallo, das Programm arbeitet viel mit Threads und durch ein Prozesstracing bekomme ich ja die Thread IDs. So hätte ich den Prozess/Thread zum allokierten Speicherbereich zuordnen können. Freigeben wollte ich den Speicher über das Tool nicht. Wie soll das mit dem neu starten funktionieren? Wenn der Speicher per new bzw. malloc allokiert wurde, wird er doch auch nach Beendigung des Programms nicht freigegeben? Der Client läuft unter Windows 2000/XP und der Serverprozess unter Linux. Es ist eine Client/Server Anwendung. Das Leck tritt aber nur am Client auf Ich werde mir mal das Tool ansehen... vielen Dank :uli :byby:
  16. Hallo Klotzkopp, es geht um folgendes: Ich habe hier Coding von einem Kollegen liegen, der die Firma vor langer Zeit verlassen hat. Leider ist dieses mies dokumentiert und umfangreich. Nun hat ein Kunde ein Problem mit der Software. Wenn das Programm XX Stunden läuft (die Zeit variert stark, je nach dem was er tut) wird immer mehr Speicher verbraucht, bis dazu das es swapped bzw. sogar der virutelle Speicher aufgebraucht wird. Ergo das Programm wird zum Speicherfresser. Nun ist das Coding relativ umfangreich, so das ich mir nen Wolf suchen würde um den Fehler zu finden. Ich gehe mal ganz stark davon aus das der Speicher in irgendeiner Methode / Function bzw in einem Thread nicht mehr freigegeben wird Deswegen habe ich gefragt ob es so ein Tool gibt Unter Unix gibts ja Kerneldebugger mit denen ich mir die Kerneltabellen anzeigen lassen kann, z.B. welche IDs die Filesysteme haben und welche Prozesse auf diesen laufen (inkl. Memory Adresse). Vllt. gibts ja sowas auch nur für Memory...
  17. Hallo carsten, erstmal vielen Dank für deine Antwort. D.h. durch einen delete wird auch der Destruktor aufgerufen? Gibt es eigentlich eine Möglichkeit herauszufinden, wo welches Objekt/Attribut abgelegt wurde? Damit meine ich ein Tool oder eine Debug_Info die mir mitteilt, in welchem "Speichertyp" (Heap/Stack) die Variablen, Zeiger, etc.. abgelegt werden. Und noch eine kleine Frage: Gibt es evtl. auch ne Möglichkeit den Memory nach Segmenten zu durchsuchen, die nicht mehr vom beendeten Threads/Prozessen freigegeben wurden. Damit meine ich z.B. eine Tabelle in der ich sehe das der Memorybereich von X-Y zum Thread bzw. Prozess XYZ gehört. So könnte man ja evtl. herausfinden ob noch Speicher allokiert ist, der aber von keinen existierenden Prozess mehr genutzt wird. Danke schonma :byby:
  18. Hallo Kollegen, eine kurze Frage bezüglich des Erzeugens von Instanzen einer Klasse mittels new. Wenn ich eine Instanz mittels new erzeuge, wo wird der Inhalt der Klassenattribute abgelegt (auf Stack oder Heap). Mal ein simples Beispiel: class meine_klasse { int int_variable; }; int main() { meine_klasse *klasse = new meine_klasse; klasse->int_variable = 8; return 0; } Wird die 8 auf dem Heap oder Stack abgelegt? Muss ich den reservierten Speicher mittels new (meine_klasse *klasse = new meine_klasse) mit delete wieder freigeben, oder wird der allokierte Speicher beim Beenden des Programms bzw. beim Beenden der main function automatisch wieder freigegeben? (ergo setzt new auf alloc auf oder nicht?) Danke schonma :e@sy
  19. sayso

    Oracle CBO und RBO

    Hallo, nochmal vielen Dank für deine Antwort. Eine Frage noch zum Index und dem CBO. Existiert ein Index auf einem Tabellenfeld, auf was wird dann das Dynamic Sampling angewendet? Auf den Index des Feldes oder auf das Feld ansich? Ist dann ein Index für den CBO überhaupt noch relevant? Danke
  20. sayso

    Oracle CBO und RBO

    Erstmal danke für deine Antwort. :e@sy Was meinst du mit defaults? Die stats die er "on-the-fly" erstellt, wo legt er diese ab? Existieren diese dann nur in der SGA? (wenn ja in welchem Bereich) Habe mal im Metalink nachgelesen und habe das Dynamic Sampling so verstanden. Der CBO liest X Blocks und erstellt über diese dann eine Statistik und arbeitet mit dieser Statistik. Ich kann mir zwar nicht vorstellen, wie ein paar Blöcke representativ für die ganze Tabelle mit sehr vielen Einträgen stehen können , aber Oracle wird schon wissen was sie tun Sorry, vllt. etwas falsch formuliert. Wenn ich auf verschiedene Tabellenfelder einen Index gelegt habe, und nun einen Select über diese Felder mache, dann existieren für den Index ja keine Statistiken. Wie arbeitet der CBO dann? Klar ist das er über den Index geht, aber wendet er dann auch irgendwelche Costs an? wenn ja wie ... denn er hat ja keine Statistiken für die Indezes..
  21. Hallo Kollegen, ich habe mal eine Frage bezüglich des Cost Based bzw. Rule Based Optimizers. Der RBO wird ab 10G ja offiziell nicht mehr supported, d.h. es "gibt nur noch" den CBO. Wenn optimizer_mode bzw. optimizer_goal (bei kleiner gleich 9i) auf choose gesetzt ist, wird ja automatisch entschieden welcher Optimizer genutzt wird. Ich habe im Metalink auch schon ein Dokument gefunden, das beschreibt wann welcher Optimizer genommen wird. Da bei 10G der RBO nicht mehr supported wird bzw. in spaeteren Releases rausfaellt kommt ja nur noch der CBO zum Zug, richtig? Angenommen ich habe jetzt ein Schema das viele Tabellen enthält - fuer die Tabellen wurden keine Statistiken erzeugt, zieht dann trotzdem der CBO oder wie optimiert Oracle dann die Abfrage? Falls der CBO zum Einsatz kommt, nach welchem Kriterien optimiert er ohne Statistiken? Ist für den CBO ein Index auf Tabellen unbedingt erforderlich? Wäre super wenn mir jemand die Fragen beantworten koennte, da ich leider keinen Performance Kurs besuchen kann Danke schoen
  22. Hallo Amstelchen, vielen Dank - diese beiden Parameter habe ich gesucht und danke auch noch für die Erklärung... :e@sy
  23. Hallo Kollegen, ich suche einen Oracle Paramter, mit dem ich definieren kann, das die Daten aus dem Memory nach XXX Sekunden in das Datenfile geschrieben werden. Soll heissen, ich möchte den Databasewriter sagen, das er nach XXX Sekunden die geänderten Daten ins Datenfile schreiben soll. Ich kann hierzu aber leider nichts finden, dachte aber mal das es hier einen init.ora Parameter gibt. Die Datenbank ist eine Oracle 9i (9.2.0.7). Kann mir von Euch vllt. jemand den Parameter sagen oder einen Link zu ner Oracle Doku schicken, indem er beschrieben ist? Vielen Dank
  24. Hallo zusammen, ich suche mal wieder einen Wallpaper in 1280*1024 oder höher. Auf ihm soll eine Gebäudefassade oder ein Gebäudeabbild wie z.B. auf diesen sein: 1) http://www.kde-look.org/content/show.php?content=36236 2) http://www.kde-look.org/content/show.php?content=15276 3) http://www.kde-look.org/content/show.php?content=14783 Sowas in der Art wäre super - ihr habt doch bestimmt ein paar Links... Können auch editierte pics wie 2 und 3 sein Vielen Dank :nett:
  25. sayso

    C - Heap

    Kann mir mal jemand ein praktisches Beispiel nennen, in dem sowas Anwendung findet? In Wikipedia steht ja was von einem Vorrangwarteschlangen-System, aber dort gibt es PRIO Klassen und dann eine sequentielle/parallele Reihenfolge, dies könnte man viel bequemer ohne diese HEAP Logik lösen. Von den genannten Algorithmen habe ich keine Ahnung - vllt. würde mir mal ein Beispiel helfen Danke :nett:

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...