cJSON简介 JSON基本信息 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.易于人阅读和编写.同时易于机器解析和生成.是一种很好地数据交换语言. 官方信息解读简介 JSON构建:基于两种结构 “名称/值”对 的集合. 值得有序列表. JSON具体结构表示 对象:一个”名称/值"对的集合  {名称:值,名称:值} 数组:值得有序集合[值,值] 值:str,num,true,false,null,object,array.可嵌套 字符串:由双引号包围…
cJSON数据解析 关于数据解析部分,其实这个解析就是个自动机,通过递归或者解析栈进行实现数据的解析 /* Utility to jump whitespace and cr/lf *///用于跳过ascii小于32的空白字符 static const char *skip(const char *in) { ) in++; return in; } /* Parse an object - create a new root, and populate. */ cJSON *cJSON_Par…
cJSON使用案例 由了解了cJSON的数据结构,接口以及实现之后,那么我们来举例说明其使用. 本例子是一个简单的学生信息表格管理,我们通过键值对的方式向json中增加元素信息. 然后可以格式化输出结果,也能够反向的由字符串输出生成原cJSON对象. int Test_cJSON() { cJSON* pRoot = cJSON_CreateObject(); cJSON* pArray = cJSON_CreateArray(); cJSON_AddItemToObject(pRoot, "s…
一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就是基于protobuff改造的protostuff,它拥有良好性能的同时,又免去了生成描述文件的烦恼,可谓是趁手利器. 来看看具体的使用方式吧. 首先,引入maven依赖如下: <dependency> <groupId>io.protostuff</groupId> &l…
flatbuffer是一款类似于protobuf的数据序列化工具.所有数据序列化,简单来说,就是将某程数据结构按照一定的格式进行编码与解码,以方便在不同的进程间传递后,能够正确的还原成之前的数据结构. flatbuffer大体上的用法与protobuf是类似的.所不同的是,它支持union定义,并可以通过as方法来简单的将由union包裹的数据进行类型转换,省去了一些麻烦.另外,它使用offset形式进行数据存储,从理论上来说,可以加快访问速度.(有待验证) 一个示例: namespace co…
UNDO内存结构剖析 一.场景 Oracle的 C事物从早上9:00开始读取A表全部10w行数据,这个而读取需要经历5分钟.在9:01的时候,B事物将A表删除100条记录,那么,当9:05的时候,事物C读取完成,能读取到多少条记录? 其实,按照一致性原则,需要读取10w行记录,而不是9900行.这个,oracle将如何实现呢? 二.Undo的内存结构原理    只要oracle undo空间足够大,undo能保存所有数据库的更改,能使表数据闪回到任意时刻.如何做到这一点,需要从oracle的un…
使用spring-data-redis的时候,其序列化工具自带:…
前段时间刚试用了一个序列化工具cereal,请看cereal:C++实现的开源序列化库,打算再总结下我对google proto buf序列化库的使用呢, 结果还没动手,大Google又出了一个新的.开源.跨平台的序列化工具:FlatBuffers.那就索性先了解了解这个工具把. 一. 什么是Google FlatBuffers FlatBuffers是一个开源的.跨平台的.高效的.提供了C++/Java接口的序列化工具库.它是Google专门为游戏开发或其他性能敏感的应用程序需求而创建.尤其更…
$.ajax\$.post <script type="text/javascript" language="javascript" src="js/jquery-1.8.3.js" ></script> <script type="text/javascript"> //使用Ajax($.ajax)调用 function ajax(){ $.ajax({ type:"post&q…
标本: <?xml version="1.0" encoding="UTF-8" standalone="true"?> //文档的申明 <persons> //标签tag <person id=“18"> //ID是person标签的一个属性 <name>allen</name> <age>36</age> </person> <pe…
API文档管理工具-数据库表结构思考. PS: 管理工具只是为了方便自己记录API的一些基本信息,方便不同的开发人员 (App Developer, Restful API Developer)之间的工作协调,同时也是由于本人不擅长word文档编写,程序及设计简单,大牛勿喷! API基础信息表 CREATE TABLE API_Infor ( ApiID uniqueidentifier PRIMARY KEY ,ApiCategory int ,ApiSupport nvarchar() ,A…
redis一个优点就是可以将数据写入到磁盘中. 我们知道写入磁盘的数据实际上都是以字节(0101这样的二进制数据)的形式写入的. 这意味着如果我们要将一个对象写入磁盘,就必须将这个对象序列化. java的序列化机制可以参考这篇文章. 可以看到java的反序列是否成功跟serialVersionUID有很大的关系,自动生成的UID在每次编译时就会发生变化. 如果有两个程序共享一个redis,这个时候反序列化就会出现问题. 所以总监叫我自定义个redis序列化工具. 一.为什么Spring redi…
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputSt…
package com.dsj.gdbd.utils.serialize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * * @作用:序列化工具类 * @功能: * @作者: wyt * @…
怎样使用RabbitMQ盛放自己定义的对象呢?一般都会使用序列化工具在投放之前转换一次.从MQ取回的时候再逆序列化还原为本地对象.这里使用C++自带的强制类型装换,将本地对象的内存模型当做自然的序列化之后的数据,直接当做字节流放到string对象中,从MQ取回的时候用相同的方法再将string对象强制当做字节流转换为本地对象. 直接使用.非常棒 注意:这样的思路事实上有一个缺点就是本地上传,取回本地使用肯定是没问题的.假设本地上传,其它机器使用(本地是大端机器,其它机器是小端机器)就可能有问题,…
前一段时间逛园子的时候发现有人比较了Jil.Json.NET和Protobuf的性能,一时好奇,也做了个测试,这里记录下来,以供查阅. 前期准备 依赖类库的话,可以通过Nuget在公共组件库总下载,这里不做赘述.我在数据库中生成了一些PostInfo数据,取100条进行测试: [ProtoContract] public class PostInfo { [ProtoMember()] public long P_ID { get; set; } [ProtoMember()] public s…
简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化和反序列化的性能. 项目环境 本文使用 jmh 作为测试工具. os:win 10 jdk:1.8.0_231 jmh:1.25 选择的序列化工具及对应的版本如下: fastjson:1.2.74 jackson:2.11.3 kryo:5.0.0 fst:2.57 protostuff:1.7.2…
装饰器: 首先来认识一下python函数, 定义:本质是函数(功能是装饰其它函数),为其它函数添加附件功能        原则:        1.不能修改被装饰的函数的源代码.        2.不能修改被装饰的函数的调用方式. def test(): print('test') print(test ) #表示是函数 test() #表示执行foo函数 <function test at 0x00595660>#表示的是函数的内存地址test#函数test执行结果 简单的装饰器: def…
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 近日,伯毅同学给社区贡献了工作流核心表结构的剖析文章,非常细致,喜欢的伙伴请转走 1. 工作流总体存储结构 在 dolphinscheduler 库中创建的所有工作流定义(模板)都保存在 t_ds_process_definition 表中. 该数据库表结构如下表所示: 序号 字段 类型 描述 1 id…
背景 年初的时候团队内落地了HttpRunner3框架,简单介绍下:HttpRunner 是一款由python开发的面向 HTTP(S) 协议的开源通用测试框架,用例脚本为 YAML/JSON 格式,3.0版本支持py格式. HttpRunner 依赖开源库requests ,pytest ,pydantic ,allure 和 locust,可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. PB指的是Protocol Buffers 又简称为 Protobuf,是 Google…
1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的表.带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等). ACT_RU_*: ‘RU’表示runtime,运行时表-RuntimeService.这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据.Activiti只存储实例执行期间的运行时数据,当流程实例…
flume基本思想: source负责收集数据,channel负责缓存数据,sink负责消费channel中的数据,具体使用方式这里不赘述 生命周期管理: 生命周期相关代码在flume-ng-core文件夹下的lifecycle子文件夹内 flume的所有组件(除了monitor service)都有生命周期的概念,主要作用是用来标记组件目前所属的状态.flume组件的生命周期有四个状态,分别是IDLE,START,STOP,ERROR,意义如下: IDLE 组件已经构造完成 START 组件已…
1.列表生成式,迭代器&生成器 要求把列表[0,1,2,3,4,5,6,7,8,9]里面的每个值都加1,如何实现? 匿名函数实现: a = map(lambda x:x+1, a) for i in a: print(i) 列表生成式实现: a = [i+1 for i in range(10)] 生成器 通过列表生成式,可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数…
recon 是ferd 大神 释出的一个 用于生产环境诊断Erlang 问题的一个工具, 不仅仅是对Erlang stdlib 接口的封装, 还有memory fragmentation 相关的函数. 下面对rencon的各个函数进行解读,做个笔记 -module(recon). -export([info/1, info/2, info/3, info/4, proc_count/2, proc_window/3, bin_leak/1, node_stats_print/2, node_st…
原文链接:http://www.cnblogs.com/jiajiayuan/archive/2011/09/20/2181582.html 本文意在巩固基础知识,并不是对其进行深入剖析,还望理解.本文为原创文,难免会有一些小得瑕疵,敬请谅解.所有示例均是博主测试过的,如有转载请标明出处,谢谢.结构是使用 struct 关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构.一般情况下,我们很少使用结构,而且很多人也并不建议使用结构,但作为.NET Framework 一般型別系统中…
软件官网:http://www.ezdml.com/ 作者邮箱:huzzz@163.com EZDML EZDML是一个数据库建表的软件. 可快速的进行数据库表结构设计,建立数据模型. 类似大家常用的数据库建模工具如 PowerDesigner.ERWIN.ER-Studio 和 Rational-Rose 等的超级精简版. 该软件是从 2006 年 4 月开发至今仍然在维护,最近在 2017 年 8 月 5 日 更新了 V2.15 版本. 作者的精神值得我们学习. 包含功能: 1. 表结构设计…
在Java中socket传输数据时,数据类型往往比较难选择.可能要考虑带宽.跨语言.版本的兼容等问题.比较常见的做法有: 采用java对象的序列化和反序列化 把对象包装成JSON字符串传输 Google工具protoBuf的开源 本文章所需要的序列化jar包都可以下载:http://download.csdn.net/detail/u013256816/9439971. 为了便于说明各个做法的区别,分别对这三种做法进行阐述. 对UserVo对象进行序列化,class UserVo如下: 1 2…
源代码 package org.wit.ff.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import com.dyuproject.protostuff.LinkedBuffer; import com.dyuproject.protostuff.ProtostuffIOUti…
今日内容介绍1.转换流2.缓冲流3.Properties集合4.序列化流与反序列化流5.commons-IO===========================================================1 转换流概述 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去 2 OutputStreamWriter写文本文件 步骤 OutputStr…
1.要序列化的类必须用 [DataContract] 特性标识   2.需要序列化的属性应用 [DataMember] 特性标识,没有该特性则表示不序列化该属性.类亦如此!   3.可以网络上找封装好的序列化类工具,也可以引用 System.json 程序集   // /*--------------- // // 使用地方:eKing 警备系统 [终端和服务器之间的数据同步] // // // // 文件名:JsonUtils.cs // // 文件功能描述: // // 指定对象序列化成JS…