Existen tres tipos de formas de re --HashSet, Redis a peso, filtro Bloom (BloomFilter)

Existen tres tipos de formas para re


Hay tres maneras de lograr de-duplicación, a continuación, lo más da?

Hash Conjunto

El uso de HashSet java no se repite a las características de pesos. La ventaja es fácil de entender. Fácil de usar.

Desventajas: gran capacidad de memoria, rendimiento inferior.

Redis deduplicación

El uso del conjunto de-pesada Redis. La ventaja es la velocidad (velocidad rápidamente las Redis sí mismo), y para no tomar el servidor de recursos pesada rastreador puede manejar una mayor cantidad de datos que se arrastran.

Contras: necesidad servidor Redis a estar preparados para incrementar el desarrollo y uso de costo.

filtro Bloom (BloomFilter )

Utilizando filtros Bloom también pueden implementarse con el peso. La ventaja es ocupado por la memoria de utilizar HashSet es mucho más pequeño, pero también para un gran número de datos de-duplicación de operación.

Contras: Puede haber un aborto involuntario de la justicia. Sin determinación de repetición se puede repetir , pero los datos duplicados determinará repetición.



filtro Bloom (BloomFilter)

filtro Bloom (Bloom Filter) propuesto por Burton Howard Bloom en 1970, que es un espacio eficiente probabilístico tipo de estructura de datos, y para determinar si un elemento de la colección . En las listas blancas y negras de método de filtrado de correo no deseado, reptiles (orugas) URL condenado a módulos pesados y utiliza tan a menudo.

tabla hash también se puede utilizar para determinar si un elemento de la colección , pero el filtro Bloom tabla espacial complejidad de hash requiere sólo 1/8 o 1/4 se puede hacer el mismo problema .

elementos de filtro Bloom se pueden insertar, pero no elimina los elementos existentes. Cuanto más uno de los elementos, mayor será la tasa de falsos positivos, pero la omisión no es posible.

principio:

filtro Bloom que se necesita es un conjunto de bits (mapa de bits y similares) y la función de mapeo K (tabla Hash, y similares), en el estado inicial, la longitud de m bits grupo Array, todos sus bits se ponen a cero.

 

Para n elementos conjunto S = {S1, S2 ... Sn}, a través de la función de mapeo de k {f1, f2, ...... fk}, el conjunto S de cada elemento en Sj (1 < = j <= n) asignada a valores de K {g1, g2 ... GK}, entonces el número de bits en el grupo de matriz correspondiente array [g1], array [g2] ...... array [gk] establecido en 1:

 

Si el artículo que desea encontrar si un elemento de S, la función de mapeo por {f1, f2, ... fk} {k valores obtenidos G1, G2 ... g k}, y después se determina array [G1], array [ g2] ... array [gk] es 1 si, si todos 1, entonces el artículo en S, o el artículo no en S.

filtros Bloom pueden causar algunos falsos positivos, porque la colección de varios elementos por un valor obtenido después de la cartografía sucede que comprende g1, g2, ... gk, en tal caso puede resultar en falsos positivos, pero la probabilidad es muy pequeña .

Publicados 434 artículos originales · ganado elogios 105 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/qq_39368007/article/details/105048889
Recomendado
Clasificación