MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy powinienem używać Java String Pool do synchronizacji na podstawie unikalnego identyfikatora klienta?

Cóż, jeśli twoje łańcuchy są wystarczająco unikalne (np. wygenerowane przez hash kryptograficzny), synchronizacja na identyfikatorach klientów prawdopodobnie działa , o ile wywołasz String.intern() na nich w pierwszej kolejności. Ponieważ identyfikatory są niepowtarzalne, prawdopodobnie nie napotkasz konfliktów z innymi modułami, chyba że przekażesz im swoje identyfikatory i stosują złą praktykę blokowania ich.

To powiedziawszy, to prawdopodobnie zły pomysł. Oprócz małej szansy, że pewnego dnia wpadnie w niepotrzebną rywalizację, jeśli ktoś inny zablokuje ten sam String na przykład głównym problemem jest to, że musisz intern() cały twój String obiekty, a to często cierpi z powodu słabej wydajności z powodu natywnej implementacji tabeli intern ciągów, jej stałego rozmiaru itp. Jeśli naprawdę potrzebujesz blokady opartej tylko na String , lepiej skorzystaj z Interners.newWeakInterner() wewnętrzne wdrożenie, które prawdopodobnie będzie działać znacznie lepiej. Zapakuj swój ciąg w inną klasę, aby uniknąć kolizji na wbudowanym String Zamek. Więcej szczegółów na temat tego podejścia w tej odpowiedzi .

Poza tym często istnieje inny naturalny obiekt do zablokowania, taki jak blokada w obiekcie sesji itp.

Jest to bardzo podobne do tego pytania który ma bardziej rozbudowane odpowiedzi.

... lub przynajmniej mieć wystarczająco dużo bitów, aby kolizja była wystarczająco mało prawdopodobna i jeśli identyfikatory klienta nie są częścią Twojego powierzchnia ataku .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ostrzeżenie:uzyskiwanie dostępu do nieistniejącej właściwości „MongoError” eksportu modułu wewnątrz zależności cyklicznej

  2. Element „id” nie pasuje do żadnego pola ani właściwości błędu z zagnieżdżonymi klasami

  3. Jak zmienić wszystkie elementy tablicy w dokumencie mongodb na określoną wartość?

  4. Sterownik Java MongoDB:autoConnectRetry

  5. Mongo Copy Collection i uprawnienia użytkownika