https://github.com/jayway/JsonPath
这个项目的后端可以选择Jackson或Gson。
Binary JSON是在JSON的基础上,添加了索引及数据类型的一种二进制格式。相比JSON,它牺牲了可阅读性,得到了可遍历性和高效性。
BSON最早由MongoDB项目提出并使用,它的官网为:
http://bsonspec.org/
从中可以看出大多数语言的BSON解析库,都是MongoDB项目提供的。
YAML(Yet Another Markup Language)是JSON的超集。它没有JSON那么流行,主要被用于科学计算领域,比如OpenCV项目。它的官网为:
http://yaml.org/
这个网站很有特色,它本身就是一个YAML文件。
Protocol Buffers是Google公司开发的一种数据描述语言。它的官网为:
https://github.com/google/protobuf
https://developers.google.com/protocol-buffers/
Tutorials:
https://developers.google.com/protocol-buffers/docs/tutorials
sudo apt install protobuf-compiler python-protobuf
这是一种注重效率,而可阅读性几乎为零的二进制格式。其效率超过BSON,但除非有相关格式文件,否则完全无法阅读。而BSON作为JSON的扩展,只有扩展的那部分不可读,其余部分仍保留JSON的可读性。
格式文件是Protocol Buffers中的重要概念,也是和JSON等格式在使用思路上最大的区别。
JSON采用的是,不同的语言提供不同的库来解析的方式。
而Protocol Buffers使用同一个格式文件,为不同语言生成相应的代码。这和CORBA的做法很类似。
与Protocol Buffers类似的方案,还有Facebook提出的Thrift、ZeroC提出的Slice和Hadoop Avro。
test.proto:
message TestMsg
required int32 id=1;
required int32 time=2;
optional string note=3;
protoc --python_out=./python/ test.proto
test.py:
import google.protobuf
from test_pb2 import TestMsg
import time
test = TestMsg()
test.id=1
test.time=int(time.time())
test.string="asdftest"
print test
test_str = test.SerializeToString()
print test_str
test1 = TestMsg()
test1.ParseFromString(test_str)
print test1
示例代码下载:
https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/helloworld/protobuf
http://www.cnblogs.com/o87481299/p/4199892.html
python google protobuf使用
https://mp.weixin.qq.com/s/D1bjGRCFH6Ag9_xIfQ34SA
Google Protocol Buffers浅析
Protocol Buffers本身也有若干版本,且互不兼容。目前用的比较多的是proto2和proto3。
值得注意的是,proto3生成的python文件,仍然叫xxxx_pb2.py。
proto3最大的改进在于支持如下形式的proto文件的嵌套:
import "tensorflow/core/framework/node_def.proto";
http://www.cnblogs.com/ghj1976/p/4565846.html
proto3笔记
https://blog.csdn.net/menghaocheng/article/details/80176763
Python3-如何使用protobuf 3
HDF是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。
https://support.hdfgroup.org/HDF5/
它的python接口:
http://www.h5py.org/
HDF5 for Python
https://www.phodal.com/blog/try-hdf5-in-mac-os-with-shell/
HDF5小试——高大上的多对象文件格式
PMML(Predictive Model Markup Language) 是一个开放的工业标准,它以XML为载体将上述数据挖掘任务标准化,可以把某一产品所创建的数据挖掘方案应用于任何其它遵从PMML标准的产品或平台中,而不需考虑分析和预测过程中的具体实现细节。使得模型的部署摆脱了模型开发和产品整合的束缚,为商业智能产品、数据仓库和云计算中的数据挖掘模型的应用环境开拓了新的篇章。
http://dmg.org/
https://www.ibm.com/developerworks/cn/xml/x-1107xuj/
PMML标准介绍及其在数据挖掘任务中的应用
FlatBuffers是Google为嵌入式平台打造的二进制格式,执行效率优于Protocol Buffers。但它的出名,却是由于Facebook最早在其Android App上使用。因此,有的文章也将之称为是Facebook发明的,但其实这是不正确的。
https://google.github.io/flatbuffers/
http://www.cnblogs.com/wingyip/p/5185593.html
FlatBuffers初探
上周在.NET性能优化群里面有一个很有意思的讨论,讨论的问题如下所示:请教大佬:2D数组,用C#先遍历行再遍历列,或者先遍历列再遍历行,两种方式在性能上有区别吗?据我所知,Julia或者python的 pandas,一般建议先遍历列,再遍历行在群里面引发了很多大佬的讨论,总的来说观点分为以下三种:应该不会有什么差别先遍历列会比先遍历行更快先遍历行会比先遍历列更快看了群里面激烈的讨论,刚好今天有时间...
一直搞不懂什么是矩阵的行优先和列优先存储,现在在看Eigen的tutorial,里面详细的解释了什么是行优先和列优先,在这里做下笔记。行优先和列优先存储我们随便找一个矩阵来说明吧,比如说如下的矩阵a:1, 3, 5
4, 2, 6,
7, 8, 9我们都知道,这是一个3行3列的矩阵,但是在计算机内存里存储的时候,是线性的存储,也就是说所有矩阵的元素都被存储到了一行。
如果是行优先存储,那么矩阵
今天在做章习题时,发现自己对行优先和列优先并没有弄得特别明白,先说一下差不多的这两道关于它的题吧。
二维数组M的成员是6个字符(每个字符占一个存储单元)组成的串,行下标i的范围为0到8,列下标j的范围为1到10,则存放M至少需要(1)字节;M的第8列和第5行共占(2)字节;若M按行优先方式存储,元素M[8][5]的起始地址与当M按列优先方式存储时的(3)元素的起始地址一致。
(1):540
(2...
Eigen库学习笔记(十)矩阵存储顺序行优先与列优先1、存储顺序2、存储顺序及选择3、使用限制与解救办法3.1、使用限制3.2、解救办法3.2.1、等效原理解救办法3.2.2、宏定义默认列优先改为行优先
1、存储顺序
对于矩阵和二维数组有两种存储方式,列优先和行优先。
假设矩阵:
按行优先存储,内存中形式如下:
8 2 2 9 9 1 4 4 3 5 4 5
列优先,内存格式:
8 9 3 2 1 5 2 4 4 9 4 5
官网示例:
Matrix<int, 3, 4, ColMajor>
NumPy数值计算基础
NumPy是在1995年诞生的Python库Numeric的基础上建立起来的,但真正促使NumPy的发行的是Python的SciPy库。但SciPy中并没有合适的类似于Numeric中的对于基础数据对象处理的功能。于是,SciPy的开发者将SciPy中的一部分和Numeric的设计思想结合,在2005年发行了NumPy。
NumPy是Python的一种开源的数值计算扩展库。它包含很多功能,如创建n维数组(矩阵)、对数组进行函数运算、数值积分等。 NumPy的诞生弥补了这些缺陷,它提
如果我们按照C语言的方式存储它,也就是行有限存储的话,那么在内存中,它的形状是这样的:
另一派存储方式,也就是列优先存储,它的代表是Fortran语言。上面的数组在内存中的形状就是这样的了:
C语言数组行优先实现