Cześć!
Jestem laikiem w programowaniu, a mam do zrobienia projekt z Javy - napisz symulator zdarzeń dyskretnych.
Znalazłem w sieci coś takiego: http://www.cs.northwestern.edu/~agupta/_projects/networking/QueueSimulation/mm1.html
To działa, ale generalnie mam problemy ze zrozumieniem kodu i niezbyt wiem jak zrobić z tego symulator bankomatu.
Podejrzewam, że potrzeba zrobić bazę danych z numerami kont i saldami, potem generować ruch tak, żeby każdy klient wykonywał dozwoloną dla niego operację.
Czym zrobić bazę danych? Hashmapa to chyba średni pomysł? Macie jakieś pomysły?
możesz albo odpalić np. MySQL
na kompie, albo odpalić jakąś na zewnętrznym serwerze.
Hashmapa jako baza danych to bardzo dobry pomysł - oszczędzasz sobie dużo kłopotów.
(w ramach autoreklamy:
)
ale IMO to nie ma nic wspólnego z twoim problemem -
W ramach jakiego przedmiotu to jest? bo chyba raczej nie masz robić symulacji bankomatu...? i pewnie nie musi to mieć perzystencji....
Mam wrażenie że baza (No)SQL to jakiś przerost formy tutaj.
Dane, jeśli już musisz w czymś trzymać (a nie w kodzie) to mogą siedzieć w JSON / CSV, tak żeby to można było łatwo dostosować do różnych eksperymentów.
Języki programowania obiektowego. Mam zrobić symulator zdarzeń dyskretnych jako projekt.
To pytanie: czy masz napisać symulację opartą o symulator zdarzeń dyskretnych... czy może sam symulator (generyczny)?
jarekr000000 napisał(a):
Hashmapa jako baza danych to bardzo dobry pomysł - oszczędzasz sobie dużo kłopotów.
(w ramach autoreklamy: )
ale IMO to nie ma nic wspólnego z twoim problemem -
W ramach jakiego przedmiotu to jest? bo chyba raczej nie masz robić symulacji bankomatu...? i pewnie nie musi to mieć perzystencji....
obejrzalem i wyglada to imponujaco (porownanie performance), ale czy takie rozwiazania stosuje sie produkcyjnie czy uzywaja tego ludzie w piwnicach?
Zależy od potrzeb - czy to duże bazy, czy potrzeba możliwości podpięcia wielu użytkowników, czy potrzebujesz rozproszenia, czy potrzebujesz jakiejś transakcyjności ... Dla gry na andka pewnie było by to spoko.
Uwaga TOTALNY OFF TOPIC -(odpowiedź na pytanie @filemonczyk):
airomem - tylko w piwnicach :-)
Prevayler (na którym się to opiera) - czasem spotykam na konfach ludzi, którzy twierdzą, że używali/używają nawet w polsce - ale ciężko znaleźć w sieci konkrety (choć o projekcie jest w cholerę, ma całkiem sporo forków i alternatywnych implementacji -typu np. P8).
Jest trochę firm, które podobne rozwiązania stosują (all in RAM). (z tym najbardziej chyba znane : https://martinfowler.com/articles/lmax.html).
A po prawdzie uogólnione podejście architektoniczne (czyli Event Sourcing (to akurat nie u LMAX) ) ma też swoja enterprise edition w postaci akka-persistence ( i teraz po nowemu dla javy --> Lagom). (Zresztą w pracy promuje tego ostatniego, ale jeszcze sporo czasu będzie stracone na IBM Wesbphere/Oracle zanim ten Lagom u nas ruszy produkcyjnie (tak myślę) ).
BTW. mówię o performance, bo to robi wrażenie i się dobrze sprzedaje... Po prawdzie dla mnie najważniejsze jest uproszczenie kodu, architektury i testów. No i przy okazji rozwiązanie - jest całkiem safe - w event sourcingu zawsze możesz sobie podpiąć baze danych (a nawet kilka) - jak się okażą przydatne (nie do perzystencji oczywiście, bo do tego akurat bazy danych się nie nadają :-) -zobacz prezentacje Greg Young "Polyglot Data").
NIe no, niewielką bazę, z której będę generował ruch (użytkowników, którzy wypłacają pieniądze w zakresie do salda, lub, gdy przekroczony to ponownie z mniejszą kwotą). Powiedzmy baza na 1000 numerów kont z saldami + generowanie 100 użytkowników wypłacających pieniądze