Pytanie mówi wszystko. Mam strukturę danych, której nie mogę marszałka z powodu słabego hashtable. Zastanawiam się, czy mogę się tego pozbyć :)W jaki sposób używane są słabe tablice?
Odpowiedz
Słaba tablica to zbiór słabych wskaźników. Słaby wskaźnik jest odwołaniem do wartości, która może być zbiorem śmieci.
Jeśli użyjesz zwykłego wskaźnika na wartości, zapobiegniesz jego zbieraniu śmieci, dopóki sam sędzia nie zostanie zebrany. W przypadku słabego odniesienia wartość może zostać zebrana przed sędzią.
Przykład użycia to źródło, które przesyła dane do wielu zlewów. Jeśli źródło zawiera regularne wskaźniki do zlewów, ilekroć zlew nie jest już potrzebny, nie będzie zbierane śmieci aż do źródła (co może na przykład nigdy się nie wydarzyć). Jeśli źródło używa słabych odniesień do zlewów, dane zlewozmywaki mogą być śmieciami zebranymi przed źródłem.
Innym przykładem jest hashconsing dla typu, który używa słabych hashtables (które zawierają słabe tablice). Szybko, hashconsing to sposób na zapamiętanie wszystkich wartości danego typu, które są tworzone i żyją w programie. Wraz z odpowiednim konstruktorem wartości może to zapewnić maksymalne dzielenie wartości tego typu i umożliwia implementację równości strukturalnej na tym typie jako fizycznej równości. W takim przypadku, jeśli użyto nie słabego hashtable, wartości, które nie będą już używane przez program, nigdy nie zostaną zebrane.
Wreszcie, wiele osób uważa (niesłusznie), że słabe referencje są przydatne do wdrożenia pamięci podręcznych. Zachowaj słabe odniesienie do wartości, jeśli zostały zebrane śmieci, przeładuj/ponownie oblicz wartość. Nie jest to dobry algorytm pamięci podręcznej, ponieważ główne usuwanie śmieci odzyskuje wszelkie wartości, które nie są już przywoływane. Więc twój algorytm buforowania nie ma przewidywalności ani użytecznej właściwości, jak na przykład rozmiar pamięci podręcznej/dostępnej pamięci nie przekracza danego stosunku.
Użyj pary funkcji dwuliterowych pomiędzy strukturą danych a strukturalnie zgodną reprezentacją zgodną z modułem Marshall.
Nie mogę dać ci tyknięcia, James, chociaż chciałbym. Zobacz następny .. – Yttrill
Problem jest to tabela symboli dla schematu OCS, oczywistą rzeczą do zapisania jest s-wyrażenie przed kompilacją. Problem polega na tym, że "save" jest częścią Dypgen, oszczędzając automat, i nie mogę łatwo odłączyć skompilowanego schematu od automatu. – Yttrill
Właściwie mógłbym to zrobić przez przypisanie każdej akcji Parsera jako liczby całkowitej, zapisz ją i osobno zapisz s-wyrażenia przed kompilacją. Ale mam problem: jak uniknąć ponownej kompilacji kodu programu przy każdej redukcji produkcji? – Yttrill
- 1. W jaki sposób używane są wzorce wektorowe w regułach składniowych?
- 2. , w jaki sposób pakiety osgi są używane przez procę
- 3. W jaki sposób MPI_Scatter i MPI_Gather są używane z C?
- 4. W jaki sposób indeksuje tablice asocjacyjne PHP?
- 5. Hash-consing w F # i słabe tablice hash w .net
- 6. W jaki sposób obiekty jQuery naśladują tablice?
- 7. W jaki sposób mam słabe struktury linków w Xcode 4?
- 8. Co to są moduły scalające i w jaki sposób są używane?
- 9. W Ansible, w jaki sposób używane jest słowo kluczowe environment?
- 10. Dlaczego używane są anonimowe funkcje używane w strukturze kodu JavaScript?
- 11. W jaki sposób wykorzystywane są strumienie reaktywne używane w programie Slick do wstawiania danych?
- 12. Czym dokładnie jest session_id() i session_name()? Wyjaśnij, w jaki sposób są one używane w następującym kodzie:
- 13. W jaki sposób rejestry fs/gs są używane w systemie Linux AMD64?
- 14. Tablice są reifikowane w Javie
- 15. Słabe referencje w pytonie
- 16. Linux: w jaki sposób pliki .pc są używane podczas łączenia z biblioteką współdzieloną?
- 17. Jak działają sesje PHP? (nie "w jaki sposób są one używane?")
- 18. W jaki sposób utworzyć reguły dla jquery form validate plugin z nazwami, które są tablice?
- 19. W jaki sposób automaty skończone są zaimplementowane w kodzie?
- 20. Czy naprawdę używane są strumienie w ocaml?
- 21. W jaki sposób tworzone są literały łańcuchowe?
- 22. W jaki sposób przetwarzane są `: ~ @` i `:! @`?
- 23. W jaki sposób reprezentowane są jednostki miary?
- 24. W jaki sposób pliki .apk są podpisywane?
- 25. W jaki sposób są rozwiązywane symbole zewnętrzne?
- 26. W jaki sposób są zapisywane wiadomości logcat
- 27. W jaki sposób są analizowane szablony Django?
- 28. W jaki sposób wybierane są rozmiary buforów?
- 29. W jaki sposób implementowane są Głowy Czatu na Facebooku?
- 30. Słabe połączenie funkcji C
Bardzo ładna odpowiedź, dzięki! – Yttrill