- 浏览: 2652425 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
网络传输数据需要定义一种数据格式,比较一下各种协议的性能:
java序列化 | 8654 | 43787 | 889 | 541 |
hessian | 6725 | 10460 | 501 | 313 |
protobuf | 2964 | 1745 | 239 | 149 |
thrift | 3177 | 1949 | 349 | 197 |
avro | 3520 | 1948 | 221 | 133 |
json-lib | 45788 | 149741 | 485 | 263 |
jackson | 3052 | 4161 | 503 | 271 |
fastjson | 2595 | 1472 | 468 | 251 |
测试数据:https://github.com/eishay/jvm-serializers/wiki/TestValue
这是一个468bytes的JSON Bytes测试,从测试结果来看,无论序列化和反序列化,json的性能已经不是瓶颈。今天重点关注了jackson的实现。
jackson对json的实现主要可以分为2部分parser和deserialize ,分别通过JsonParser和JsonDeserializer实现。
1.JsonParser
ReaderBasedParser是JsonParser的最终实现,继承关系如下:
public abstract class JsonParser { } public abstract class JsonParserMinimalBase extends JsonParser{ } public abstract class JsonParserBase extends JsonParserMinimalBase{ } public final class ReaderBasedParser extends JsonParserBase{ }
JsonParser 定义了基本的读取API。可以通过JsonFactory
来创建
JsonParser,其实parser就是做词法分析,实际上就是把输入的json字符串转换成char[],每次一个字符的读取,JsonToken是一个enum,定义了json中有用的token type:
public enum JsonToken{ START_OBJECT("{"), /** * START_OBJECT is returned when encountering '}' * which signals ending of an Object value */ END_OBJECT("}"), /** * START_OBJECT is returned when encountering '[' * which signals starting of an Array value */ START_ARRAY("["), /** * START_OBJECT is returned when encountering ']' * which signals ending of an Array value */ END_ARRAY("]"), }
2. JsonDeserializer
JsonDeserializer其实是string---->各种java类型的发序列化实现,jackson根据ava类型定义了不同的Deserializer,比如UntypedObjectDeserializer,CollectionDeserializer,ObjectArrayDeserializer,StringCollectionDeserializer,PrimitiveOrWrapperDeserializer
3.jackson一些小技巧
允许单引号:
String json = "{'photoId': '1012309', 'id': '1001'}"; JsonFactory factory = new JsonFactory(); ObjectMapper objectMapper = new ObjectMapper(factory); objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); JsonParser jsonParser = factory.createJsonParser(json);
nul对象转换成空字符:
package com.duitang.dboss.resolve.json; import java.io.IOException; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; public class NullStringSerializer extends JsonSerializer<Object> { public final static NullStringSerializer instance = new NullStringSerializer(); private NullStringSerializer(){ super(); } @Override public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeString(""); } }
StdSerializerProvider sp = new StdSerializerProvider(); sp.setNullValueSerializer(NullStringSerializer.instance); objectMapper = new ObjectMapper(jsonFactory); objectMapper.setSerializerProvider(sp);
相关推荐
在本项目中,STM32被用于实现与上位机的通信,通过JSON协议来接收和执行控制命令,具体涉及以下几个关键知识点: 1. **STM32硬件接口**:STM32通常配备有多个通用串行接口(USART),如USART1、USART2等,用于实现...
MQL语言实现JSON协议库中文版注释
### Json数据格式协议C#解析方法 #### 一、Json介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它源自于ECMAScript的一个子集,旨在提供一种简单且高效的方式来处理数据。JSON的数据格式是...
在实施过程中,开发者需要区分OCPP-S(基于SOAP的实现)和OCPP-J(JSON的实现),并使用不同的后缀(-S或-J)来区分这两种协议。这是为了在通信时避免对实现类型的误解。 OCPP JSON 1.6协议的主要内容包括: 1. ...
4. 自动校验:APIJSON协议允许定义字段的校验规则,如类型、长度、范围等,可以自动进行数据验证,确保输入的合法性和安全性。 5. 动态SQL:APIJSON的ORM库支持动态SQL,可以根据请求参数自动生成合适的SQL语句,...
基于python实现的http+json协议接口自动化测试框架源码改进版,支持自动化
本项目则是在Swoole的基础上,构建了一个基于JSON协议的远程过程调用(RPC)框架。通过此框架,开发者可以轻松地实现服务间的通信,提高系统的可扩展性和解耦性。 【描述】 这个简易的JSON-RPC框架是作者自己的实践...
本文将深入探讨如何使用C++实现基于JSON格式的Socket传输图片。首先,我们要了解涉及的知识点: 1. **C++**: C++是一种强大的、面向对象的编程语言,广泛用于系统软件、应用软件、游戏开发和高性能计算等领域。它的...
在本文中,我们将深入探讨JSON协议下的数据序列化和反序列化,以及如何利用动态链接库和教程来高效地操作JSON数据。 **一、JSON数据序列化** 数据序列化是指将数据结构或对象转换为可传输或存储的格式。在JSON中,...
【标题】基于Python实现的HTTP+JSON协议接口自动化测试框架 在软件开发过程中,接口测试是确保系统间数据传输正确性和系统集成稳定性的重要环节。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,而...
4. 规范化设备和命令定义:通过严格定义设备和命令,协议栈能够规范应用层数据,实现对相同设备的统一操作。 在传输层的选择上,文档提到了TCP和UDP两种协议: 1. TCP协议主要适用于需要可靠数据传输的场景,其连接...
这个项目“用json实现的简单聊天修改版”显然是一个基于JSON的聊天应用程序,它可能是一个简单的命令行或文本界面,没有进行过多的图形用户界面(GUI)美化。 首先,我们要理解JSON的结构。JSON采用键值对的形式,...
在Android开发中,实现一个能够从服务器获取JSON数据并展示在ListView中,同时支持下拉刷新和上拉加载的功能是一项常见的需求。这个"Android服务器解析json数据实现下拉刷新上拉加载ListView显示"的示例项目,就是...
总结来说,这个项目展示了如何使用Android的OkHttp3库配合PHP后端和JSON数据交换,实现用户登录和注册功能。它涵盖了客户端的网络请求、数据序列化,以及服务器端的数据处理和响应。这个过程中的每个环节都是现代...
总之,通过C++实现服务器POST访问并解析JSON数据流,需要对HTTP协议、JSON格式以及网络编程有深入理解。在具体实现过程中,选择合适的库可以大大提高开发效率和代码质量。在给定的项目中,`Httppost`文件很可能是...
标题中的“cJSON”是一个C语言实现的JSON库,用于在C/C++程序中处理JSON数据。CJSON库提供了解析JSON字符串到C结构体和将C结构体转换回JSON字符串的功能。它具有轻量级、高效和易于集成的特点,适合嵌入式系统和资源...
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。为 简单的增删改查、复杂的查询、简单的事务操作 提供了完全自动化的万能 API。” 上面这段话来自官方介绍,我们提取出其中的几...
在本文中,我们将深入探讨JSON-RPC协议的C语言实现,并对比其与Python的实现方式。 ### JSON-RPC简介 JSON-RPC允许客户端通过HTTP或其他传输协议向服务器发送请求,执行服务器上的方法并接收响应。它支持单个请求/...
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。 为各种增删改查提供了完全自动化的万能通用接口,零代码实时满足千变万化的各种新增和变更需求。能大幅降低开发和沟通成本,...
总的来说,android-json-rpc是Android开发中的一个强大工具,它极大地简化了JSON-RPC通信的实现,使开发者能更专注于业务逻辑,而不是底层通信细节。通过合理使用这个库,可以构建高效、可靠的Android应用。