<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Speicherung der angemeldeten User (IM-Server)]]></title><description><![CDATA[<p>Hallo Leute,<br />
aus Interesse und auch weil ich noch eine GFS in Informationstechnik brauche, hab ich angefangen einen kleinen IM-Messenger (natürlich mit eigener Server-Software) zu schreiben. Davor hab ich mich noch ein wenig mit einem einfachen Chat eingearbeitet.<br />
Jetzt beim IM-Ansatz hab ich Probleme mit der Speicherung der einzelnen User (ein User stellt bei mir ein Objekt der Klasse User mit paar attributen und 2 Threads dar). Die User-Objekte werden in einem Vector gespeichert und bekommen eine temporäre ID zugewiesen, die ihrem Index im Vector entspricht. Über diese ID kann man den Usern nachrichten schicken etc...<br />
Das Problem ist jetzt, was soll ich machen wenn sich ein User abmeldet? Einfach die IDs der nachfolgenden User ändern ist zu zeitaufwendig (weil man momentan noch alle Freunde eines users über diese änderungen informieren müsste). Alternativ haben die user auch eine feste ID, die bei der Registration in einer Datenbank abgelegt wird. Den Vector aber jedes mal danach zu durchsuchen scheint mir auch keine gute Lösung zu sein.</p>
<p>Hat evtl jemand eine Lösung für mich Problem?</p>
<p>Ach ja, ich programmiere in Java, wenn vllt einer Beispielcode posten möchte, Problem is nur meiner meinung nach sprachunabhängig, deswegen hier...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182648/speicherung-der-angemeldeten-user-im-server</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:34:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182648.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 May 2007 17:10:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Sun, 27 May 2007 17:10:30 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
aus Interesse und auch weil ich noch eine GFS in Informationstechnik brauche, hab ich angefangen einen kleinen IM-Messenger (natürlich mit eigener Server-Software) zu schreiben. Davor hab ich mich noch ein wenig mit einem einfachen Chat eingearbeitet.<br />
Jetzt beim IM-Ansatz hab ich Probleme mit der Speicherung der einzelnen User (ein User stellt bei mir ein Objekt der Klasse User mit paar attributen und 2 Threads dar). Die User-Objekte werden in einem Vector gespeichert und bekommen eine temporäre ID zugewiesen, die ihrem Index im Vector entspricht. Über diese ID kann man den Usern nachrichten schicken etc...<br />
Das Problem ist jetzt, was soll ich machen wenn sich ein User abmeldet? Einfach die IDs der nachfolgenden User ändern ist zu zeitaufwendig (weil man momentan noch alle Freunde eines users über diese änderungen informieren müsste). Alternativ haben die user auch eine feste ID, die bei der Registration in einer Datenbank abgelegt wird. Den Vector aber jedes mal danach zu durchsuchen scheint mir auch keine gute Lösung zu sein.</p>
<p>Hat evtl jemand eine Lösung für mich Problem?</p>
<p>Ach ja, ich programmiere in Java, wenn vllt einer Beispielcode posten möchte, Problem is nur meiner meinung nach sprachunabhängig, deswegen hier...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293225</guid><dc:creator><![CDATA[gieser]]></dc:creator><pubDate>Sun, 27 May 2007 17:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Sun, 27 May 2007 18:16:46 GMT]]></title><description><![CDATA[<p>Naja, für sowas nimmt man eine Map, in dem Fall typischerweise eine Hashmap.<br />
Bei einer Hashmap kannst du eintragen und löschen soviel du willst, das Umschreiben passiert automatisch und normalerweise relativ selten (bei einer normalen Map ist das eintragen/löschen eher teurer). Wenn du die Map von vorn herein gross genug ausleg (je nach Implementierung kann man angeben wie gross der Hash Table sein soll) muss garnie was umgeschrieben werden.</p>
<p>Ansonsten: wenn du pro User 2 Threads startest wirst du nicht viele User gleichzeitig bedienen können (Threads sind &quot;teuer&quot; und ziemliche Resourcenfresser, vor allem der Speicher für den Stack). Ich würde hier eher auf asynchrones IO setzen mit einer fixen Anzahl Threads. Und soviel wie möglich in einer Datenbank halten, immer nur das im Speicher &quot;materialisieren&quot; was du wirklich brauchst bzw. einen LRU Cache für gewisse Dinge implementieren. Sonst wirst du das Teil kaum skalierbar bekommen - denk mal an tausende User gleichzeitig oder gar zigtausende.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293282</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 27 May 2007 18:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Sun, 27 May 2007 18:55:34 GMT]]></title><description><![CDATA[<p>eine Liste nehmen und den Iterator darauf speichern damit er sich selbst aus der Liste löschen kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293314</guid><dc:creator><![CDATA[wo]]></dc:creator><pubDate>Sun, 27 May 2007 18:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Sun, 27 May 2007 21:11:30 GMT]]></title><description><![CDATA[<p>Danke für den Tip mit der HashMap werd ich morgen mal versuchen zu implementieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Ansonsten: wenn du pro User 2 Threads startest wirst du nicht viele User gleichzeitig bedienen können (Threads sind &quot;teuer&quot; und ziemliche Resourcenfresser, vor allem der Speicher für den Stack). Ich würde hier eher auf asynchrones IO setzen mit einer fixen Anzahl Threads. Und soviel wie möglich in einer Datenbank halten, immer nur das im Speicher &quot;materialisieren&quot; was du wirklich brauchst bzw. einen LRU Cache für gewisse Dinge implementieren. Sonst wirst du das Teil kaum skalierbar bekommen - denk mal an tausende User gleichzeitig oder gar zigtausende.</p>
</blockquote>
<p>Das die 2 Threads pro User nicht optimal sind hab ich mir schon gedacht. Ich hab mir schon Gedanken gemacht, wie ich einen Threadpool implementieren könnte, falls es sowas nicht schon bei Java gibt.<br />
über asynchrone IO muss ich ma brüten, hab bis jetzt nur synchrones entdeckt...<br />
evtl nen Startpunkt für Infos über asynchrones IO?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293379</guid><dc:creator><![CDATA[gieser]]></dc:creator><pubDate>Sun, 27 May 2007 21:11:30 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Mon, 28 May 2007 21:56:49 GMT]]></title><description><![CDATA[<p>Sieht so aus als ob dashier recht bekannt wäre: <a href="http://www.alphaworks.ibm.com/tech/aio4j" rel="nofollow">http://www.alphaworks.ibm.com/tech/aio4j</a><br />
Ich bin aber kein Java Experte, also wühl vielleicht selbst nochmal im aktuellen Java SDK, vielleicht gibts da bereits was von SUN.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294100</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 28 May 2007 21:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherung der angemeldeten User (IM-Server) on Tue, 29 May 2007 07:38:04 GMT]]></title><description><![CDATA[<p>Joa danke nochmal für die Antwort. Ich hab schon rumgewühlt und es gibt seit Java 1.4 nen neuen I/O-Package (java.nio). Damit ist es auch möglich.<br />
Das AIO4J soll allerdings noch mehr performance bieten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294208</guid><dc:creator><![CDATA[gieser]]></dc:creator><pubDate>Tue, 29 May 2007 07:38:04 GMT</pubDate></item></channel></rss>