Limitaciones de proto buffers – carga de datos parciales y compartir secuencias
Quiero comprobar si proto buffer es el mejor serializador para mi uso, mi investigación encontró que nada más se acercaba. Estoy trabajando en Java backend y android (java) aplicación móvil, sin embargo, es posible que otro cliente se creará en un futuro no tan lejano, así que quiero algo de plataforma cruzada. Esbozo aproximado de estructura de datos:
message All { repeated Line lines = 1; Common common = 2; }
Hay un par de cientos de objeto Line, cada línea es bastante compleja y toma ~ 100 kB por sí solo.
- "Campo se puede convertir a una variable local" aparece al configurar el color de la barra de acción
- ¿Cómo usar una biblioteca java 8 con android?
- Cómo detener ProGuard de eliminar la interfaz Serializable de una clase
- ¿Cómo obtener el último valor de BehaviorSubject?
- Torch / Flashlight app (android.hardware.camera está obsoleto)
Dos problemas que veo con proto buffer – en el inicio de la aplicación Necesito sólo una fracción de los datos disponibles – sólo "común" y la información básica de "Line". ¿Es posible cargar datos parciales? – cada objeto de línea contiene cientos de cadenas, pero la misma cadena se produce en varios objetos de línea, así que quiero tratar de compartirlos entre esos objetos. ¿Es posible en proto buf nivel, o tiene que ser parte del nivel de aplicación?
¡Gracias!
- convertir la interfaz de usuario de Android a código
- Decodificar áreas específicas de la imagen en Bitmapfactory?
- Android - Ajuste de la posición de la vista de imagen en la parte superior de una vista de imagen con zoom
- Actividad InAppBilling y finish ()
- Cómo guardar el estado del fragmento teniendo listview
- NotifydataSetChanged en Adapter se actualizará con nuevos elementos, pero no actualizará los elementos existentes
- Cómo obtener datos de Azure DB Table en una aplicación de Android?
- Al crear una intención de Android y especificar la actividad de destino, ¿cuál es esta sintaxis ".class"?
De la especificación limitada que usted dio, es bastante difícil dar una retroalimentación adecuada. Usted dijo que para su problema la mejor solución parece ser protobuf, pero no podemos reevaluar eso de la información dada.
Sobre la base de lo que escribió, incluso diría que una simple matriz de bytes GZIPped (o JSON como la mayoría de ellos es imprimible (usted dijo que son de String
s)) puede ser mejor para usted ("reutilizar" un montón de cosas a través de objetos de línea = > GZIP rock).
Y como otros afirmaron: con protobuf no es posible cargar "estructuras de datos parciales" (en realidad la tuya no sería parcial, siempre y cuando la parte "repetida" sea, por ejemplo, una Collection
, porque de protobuf se encargará de segmentar tu Datos en la propia estructura).
Me gustaría poner mis dos centavos en GZIPped arroyos JSON (por ejemplo, con Jackson), por supuesto, en este caso se reduciría el ancho de banda con el costo de los ciclos de CPU.
Responder a mi propia pregunta con respecto a la carga de datos parciales. No lo he probado en la práctica todavía, pero me pregunto si lo siguiente no funcionaría:
message All { repeated Line lines = 1; Common common = 2; } message All_partial { Common common = 2; }
Como todos los campos en proto3 son opcionales, podemos tener una segunda definición de nuestra estructura, con campos "parciales". Si guardamos el mismo número de campo, espero que estaremos bien.
- El cursor Editext sigue parpadeando después de cerrar el teclado virtual
- No se puede eliminar la imagen en div contenteditable en Android