c++ - metatags - Buenos ejemplos, artículos y libros sobre ordenación
meta tags generator (6)
Mientras trabajaba en una biblioteca de protección de software para dongle basado en tarjetas inteligentes, me di cuenta de que tenía que transferir algunas estructuras de datos en forma de árbol entre la aplicación cliente y el código dentro del dongle.
Bueno, cuando se trabaja con servicios web, las tecnologías como XML-RPC o JSON-RPC son una forma razonable de considerar. Sin embargo, ese no es el caso con dispositivos integrados como tarjetas inteligentes. Debe utilizar algunos formatos binarios para optimizar el uso de la memoria y lograr un buen rendimiento.
Supongo que lo que necesito es implementar algún algoritmo de cálculo de datos binarios. No me gusta la idea de reinventar toda la rueda y estoy bastante seguro de que hay excelentes libros, artículos y ejemplos sobre temas de clasificación como estos.
¿Qué recomendarías?
UPD. Estoy usando C y C ++ en Linux, pero la pregunta es acerca de la información sobre algoritmos de cálculo en general.
code.google.com/p/protobuf
Para empezar, estoy diferenciando entre cálculo de referencias y RPC (que utiliza cálculo de referencias). Google Protobuf es indiscutiblemente la mejor solución para calcular en una red. Tiene una huella mínima y codifica / decodifica a la velocidad del rayo.
Si todavía está interesado en cómo implementar el cálculo de referencias eficiente, revise la documentación para la codificación protobuf .
Un ejemplo de la página de codificación es varint. Varint es cómo protobuf codifica enteros sin signo en formato binario. Varint está optimizado para pequeños números. por ejemplo, 1 solo usa un byte en el cable mientras que 300 usa dos bytes.
Por supuesto, los diseñadores de protobuf se dieron cuenta de que a menudo usamos números enteros como máscaras de bits, etc. Por lo tanto, también proporcionan un tipo de datos enteros que siempre tiene cuatro bytes (de ese modo, las máscaras con el conjunto de bits msb no consumen espacio adicional).
También hay una amplia documentación sobre cómo implementar RPC con protobufs.
La serialización / ordenación y las estructuras de datos en forma de árbol parecen ser un problema bastante grande. Aquí hay algunos aspectos de cómo empezaría a resolverlo:
- Considerar la codificación de los datos. 4 bytes para transferencia int o transferencia como ascii?
- considere si necesita transferir datos completos o simplemente sincronizar entre dos estructuras de datos de árbol
- cada bit de datos necesita saber dónde se encuentra en la estructura de árbol. La identificación de bits de datos ayudará mucho en este problema.
- ¿Considerar qué necesita ser transferido?
- sólo datos dentro de los nodos del árbol?
- ¿Cambios en la estructura del árbol?
- todo el arbol?
- ubicación / id de los datos?
- datos identificativos
- ¿Usar rutas desde la raíz al nodo del árbol?
- usar subárboles?
- usar nodos de datos simples
- ¿Identificando elementos dentro del nodo del árbol?
- Considera cómo publicar los datos en el árbol.
- Tal vez escribir interfaz que da a conocer todos los datos?
- ¿Puede recurrir recursivamente a través de todos los datos con un algoritmo?
- ¿Hay punteros dentro de los datos que no se pueden transferir fácilmente?
Obviamente, algunas librerías como google protobuf pueden ayudar ...
No hay mucho contexto en su pregunta sobre qué plataforma / idioma está orientando ... ¡sin embargo!
Los más populares fueron (son?) DCOM y CORBA. Hay CORBA incrustado ... puedes usar algo como TAO de las bibliotecas de ACE TAO
pero si esto es a una escala razonablemente pequeña, solo puede serializarlo usted mismo, lo principal que debe recordar es la versión del formato de serialización para que pueda cambiarlo y admitir versiones heredadas (si eso es una preocupación en su proyecto)
Puede ver ASN.1 como una solución de serialización general. Hay libros gratuitos y aplicaciones gratuitas: asn1c , a2c , snacc.
Pero ASN.1 es un enorme. Simpler protobuf o xdr puede ser lo suficientemente bueno para su tarea.
También es posible que desee echar un vistazo a Messagepack (http://msgpack.org). Afirma ser hasta 4 veces más rápido que Protobuf. También en contraste con Protobuf, esta biblioteca admite la herencia.
Usted podría considerar ir con Thrift .