做网站用啥软件好传奇世界页游

diannao/2026/1/16 10:24:06/文章来源:
做网站用啥软件好,传奇世界页游,个人网站备案信息填写,网站做任务赚佣金来源#xff1a;http://u6.gg/sDMab前言每次都在网上看到别人说什么某某库性能是如何如何的好#xff0c;碾压其他的库。但是百闻不如一见#xff0c;只有自己亲手测试过的才是最值得相信的#xff0c;本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。JSON不管是在… 来源http://u6.gg/sDMab前言每次都在网上看到别人说什么某某库性能是如何如何的好碾压其他的库。但是百闻不如一见只有自己亲手测试过的才是最值得相信的本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式一般情况我们对于JSON解析构造的性能并不需要过于关心除非是在性能要求比较高的系统。目前对于Java开源的JSON类库有很多种下面我们取4个常用的JSON库进行性能测试对比 同时根据测试结果分析如果根据实际应用场景选择最合适的JSON库。这4个JSON类库分别为GsonFastJsonJacksonJson-lib。一、简单介绍选择一个合适的JSON库要从多个方面进行考虑字符串解析成JSON性能字符串解析成JavaBean性能JavaBean构造JSON性能集合构造JSON性能易用性先简单介绍下四个类库的身份背景1.1 Gson项目地址https://github.com/google/gsonGson是目前功能最全的Json解析神器Gson当初是为因应Google公司内部需求而由Google自行研发而来但自从在2008年五月公开发布第一版后已被许多公司或用户应用。 Gson的应用主要为toJson与fromJson两个转换函数无依赖不需要例外额外的jar能够直接跑在JDK上。 在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。 类里面只要有get和set方法Gson完全可以实现复杂类型的json到bean或bean到json的转换是JSON解析的神器。1.2 FastJson项目地址https://github.com/alibaba/fastjsonFastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。无依赖不需要例外额外的jar能够直接跑在JDK上。 FastJson在复杂类型的Bean转换Json上会出现一些问题可能会出现引用的类型导致Json转换出错需要制定引用。 FastJson采用独创的算法将parse的速度提升到极致超过所有json库。1.3 Jackson项目地址https://github.com/FasterXML/jacksonJackson是当前用的比较广泛的用来序列化和反序列化json的Java开源框架。Jackson社区相对比较活跃更新速度也比较快 从Github中的统计来看Jackson是最流行的json解析器之一Spring MVC的默认json解析器便是Jackson。Jackson优点很多Jackson 所依赖的jar包较少简单易用。与其他 Java 的 json 的框架 Gson 等相比Jackson 解析大的 json 文件速度比较快。Jackson 运行时占用内存比较低性能比较好Jackson 有灵活的 API可以很容易进行扩展和定制。目前最新版本是2.9.4Jackson 的核心模块由三部分组成jackson-core 核心包提供基于”流模式”解析的相关 API它包括 JsonPaser 和 JsonGenerator。Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。jackson-annotations 注解包提供标准注解功能jackson-databind 数据绑定包提供基于”对象绑定” 解析的相关 API ObjectMapper 和”树模型” 解析的相关 APIJsonNode基于”对象绑定” 解析的 API 和”树模型”解析的 API 依赖基于”流模式”解析的 API。为什么Jackson的介绍这么长啊因为它也是本人的最爱。1.4 Json-lib项目地址http://json-lib.sourceforge.net/index.htmljson-lib最开始的也是应用最广泛的json解析工具json-lib 不好的地方确实是依赖于很多第三方包对于复杂类型的转换json-lib对于json转换成bean还有缺陷 比如一个类里面会出现另一个类的list或者map集合json-lib从json到bean的转换就会出现问题。json-lib在功能和性能上面都不能满足现在互联网化的需求。二、编写性能测试接下来开始编写这四个库的性能测试代码。2.1 添加maven依赖当然首先是添加四个库的maven依赖公平起见我全部使用它们最新的版本!-- Json libs-- dependencygroupIdnet.sf.json-lib/groupIdartifactIdjson-lib/artifactIdversion2.4/versionclassifierjdk15/classifier /dependency dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.2/version /dependency dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.46/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.4/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion2.9.4/version /dependency 2.2 四个库的工具类FastJsonUtil.javapublic class FastJsonUtil {public static String bean2Json(Object obj) {return JSON.toJSONString(obj);}public static T T json2Bean(String jsonStr, ClassT objClass) {return JSON.parseObject(jsonStr, objClass);} } GsonUtil.javapublic class GsonUtil {private static Gson gson new GsonBuilder().create();public static String bean2Json(Object obj) {return gson.toJson(obj);}public static T T json2Bean(String jsonStr, ClassT objClass) {return gson.fromJson(jsonStr, objClass);}public static String jsonFormatter(String uglyJsonStr) {Gson gson new GsonBuilder().setPrettyPrinting().create();JsonParser jp new JsonParser();JsonElement je jp.parse(uglyJsonStr);return gson.toJson(je);} } JacksonUtil.javapublic class JacksonUtil {private static ObjectMapper mapper new ObjectMapper();public static String bean2Json(Object obj) {try {return mapper.writeValueAsString(obj);} catch (JsonProcessingException e) {e.printStackTrace();return null;}}public static T T json2Bean(String jsonStr, ClassT objClass) {try {return mapper.readValue(jsonStr, objClass);} catch (IOException e) {e.printStackTrace();return null;}} } JsonLibUtil.javapublic class JsonLibUtil {public static String bean2Json(Object obj) {JSONObject jsonObject JSONObject.fromObject(obj);return jsonObject.toString();}SuppressWarnings(unchecked)public static T T json2Bean(String jsonStr, ClassT objClass) {return (T) JSONObject.toBean(JSONObject.fromObject(jsonStr), objClass);} } 2.3 准备Model类这里我写一个简单的Person类同时属性有Date、List、Map和自定义的类FullName最大程度模拟真实场景。public class Person {private String name;private FullName fullName;private int age;private Date birthday;private ListString hobbies;private MapString, String clothes;private ListPerson friends;// getter/setter省略Overridepublic String toString() {StringBuilder str new StringBuilder(Person [name name , fullName fullName , age age , birthday birthday , hobbies hobbies , clothes clothes ]\n);if (friends ! null) {str.append(Friends:\n);for (Person f : friends) {str.append(\t).append(f);}}return str.toString();} } public class FullName {private String firstName;private String middleName;private String lastName;public FullName() {}public FullName(String firstName, String middleName, String lastName) {this.firstName firstName;this.middleName middleName;this.lastName lastName;}// 省略getter和setterOverridepublic String toString() {return [firstName firstName , middleName middleName , lastName lastName ];} } 2.4 JSON序列化性能基准测试BenchmarkMode(Mode.SingleShotTime) OutputTimeUnit(TimeUnit.SECONDS) State(Scope.Benchmark) public class JsonSerializeBenchmark {/*** 序列化次数参数*/Param({1000, 10000, 100000})private int count;private Person p;public static void main(String[] args) throws Exception {Options opt new OptionsBuilder().include(JsonSerializeBenchmark.class.getSimpleName()).forks(1).warmupIterations(0).build();CollectionRunResult results new Runner(opt).run();ResultExporter.exportResult(JSON序列化性能, results, count, 秒);}Benchmarkpublic void JsonLib() {for (int i 0; i count; i) {JsonLibUtil.bean2Json(p);}}Benchmarkpublic void Gson() {for (int i 0; i count; i) {GsonUtil.bean2Json(p);}}Benchmarkpublic void FastJson() {for (int i 0; i count; i) {FastJsonUtil.bean2Json(p);}}Benchmarkpublic void Jackson() {for (int i 0; i count; i) {JacksonUtil.bean2Json(p);}}Setuppublic void prepare() {ListPerson friendsnew ArrayListPerson();friends.add(createAPerson(小明,null));friends.add(createAPerson(Tony,null));friends.add(createAPerson(陈小二,null));pcreateAPerson(邵同学,friends);}TearDownpublic void shutdown() {}private Person createAPerson(String name,ListPerson friends) {Person newPersonnew Person();newPerson.setName(name);newPerson.setFullName(new FullName(zjj_first, zjj_middle, zjj_last));newPerson.setAge(24);ListString hobbiesnew ArrayListString();hobbies.add(篮球);hobbies.add(游泳);hobbies.add(coding);newPerson.setHobbies(hobbies);MapString,String clothesnew HashMapString, String();clothes.put(coat, Nike);clothes.put(trousers, adidas);clothes.put(shoes, 安踏);newPerson.setClothes(clothes);newPerson.setFriends(friends);return newPerson;} } 说明一下上面的代码中ResultExporter.exportResult(JSON序列化性能, results, count, 秒); 这个是我自己编写的将性能测试报告数据填充至Echarts图然后导出png图片的方法具体代码我就不贴了参考我的github源码。执行后的结果图从上面的测试结果可以看出序列化次数比较小的时候Gson性能最好当不断增加的时候到了100000Gson明细弱于Jackson和FastJson 这时候FastJson性能是真的牛另外还可以看到不管数量少还是多Jackson一直表现优异。而那个Json-lib简直就是来搞笑的。^_^2.5 JSON反序列化性能基准测试BenchmarkMode(Mode.SingleShotTime) OutputTimeUnit(TimeUnit.SECONDS) State(Scope.Benchmark) public class JsonDeserializeBenchmark {/*** 反序列化次数参数*/Param({1000, 10000, 100000})private int count;private String jsonStr;public static void main(String[] args) throws Exception {Options opt new OptionsBuilder().include(JsonDeserializeBenchmark.class.getSimpleName()).forks(1).warmupIterations(0).build();CollectionRunResult results new Runner(opt).run();ResultExporter.exportResult(JSON反序列化性能, results, count, 秒);}Benchmarkpublic void JsonLib() {for (int i 0; i count; i) {JsonLibUtil.json2Bean(jsonStr, Person.class);}}Benchmarkpublic void Gson() {for (int i 0; i count; i) {GsonUtil.json2Bean(jsonStr, Person.class);}}Benchmarkpublic void FastJson() {for (int i 0; i count; i) {FastJsonUtil.json2Bean(jsonStr, Person.class);}}Benchmarkpublic void Jackson() {for (int i 0; i count; i) {JacksonUtil.json2Bean(jsonStr, Person.class);}}Setuppublic void prepare() {jsonStr{\name\:\同学\,\fullName\:{\firstName\:\zjj_first\,\middleName\:\zjj_middle\,\lastName\:\zjj_last\},\age\:24,\birthday\:null,\hobbies\:[\篮球\,\游泳\,\coding\],\clothes\:{\shoes\:\安踏\,\trousers\:\adidas\,\coat\:\Nike\},\friends\:[{\name\:\小明\,\fullName\:{\firstName\:\xxx_first\,\middleName\:\xxx_middle\,\lastName\:\xxx_last\},\age\:24,\birthday\:null,\hobbies\:[\篮球\,\游泳\,\coding\],\clothes\:{\shoes\:\安踏\,\trousers\:\adidas\,\coat\:\Nike\},\friends\:null},{\name\:\Tony\,\fullName\:{\firstName\:\xxx_first\,\middleName\:\xxx_middle\,\lastName\:\xxx_last\},\age\:24,\birthday\:null,\hobbies\:[\篮球\,\游泳\,\coding\],\clothes\:{\shoes\:\安踏\,\trousers\:\adidas\,\coat\:\Nike\},\friends\:null},{\name\:\陈小二\,\fullName\:{\firstName\:\xxx_first\,\middleName\:\xxx_middle\,\lastName\:\xxx_last\},\age\:24,\birthday\:null,\hobbies\:[\篮球\,\游泳\,\coding\],\clothes\:{\shoes\:\安踏\,\trousers\:\adidas\,\coat\:\Nike\},\friends\:null}]};}TearDownpublic void shutdown() {} } 执行后的结果图从上面的测试结果可以看出反序列化的时候Gson、Jackson和FastJson区别不大性能都很优异而那个Json-lib还是来继续搞笑的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络网站推广首荐乐云seo计算机专业做网站运营

正题 题目大意 将nnn个数分为222个非空的集合&#xff0c;要求两个集合内数的乘积的gcdgcdgcd为111。求方案数 解题思路 拥有相同质因子的数一定要在同一组&#xff0c;枚举质因数然后将拥有的数都用并查集合并然后用联通块数量来求即可。 codecodecode #include<cstdio&…

网站被抄袭怎么投诉建设网站备案不通过怎么办

小波分析是近30年来发展起来的数学分支&#xff0c;是Fourier分析划时代发展的结果&#xff0c;由法国工程师Morlet首先提出&#xff0c;后广泛应用于信号处理、图像处理与分析、地震勘探、故障诊断、自动控制等领域&#xff0c;小波就是小的波形&#xff0c;所谓“小”是指它具…

品牌宣传型企业网站网站推广到底应该怎么做

分析原因 众所周知&#xff0c;在JavaScript中计算两个十进制数的和&#xff0c;有时候会出现令人惊讶的结果&#xff0c;主要原因是计算机将数据存储为二进制所引起的&#xff0c;所以这并不是javascript存在的缺陷&#xff0c;而在其他语言中也有类似的问题。 例如下面的例子…

网站分析软件phpwind wordpress

说明 在开发中分页功能几乎是必不可少的一项功能&#xff0c;使用beego框架开发时&#xff0c;就遇到了分页功能的需求。可能是之前版本并不支持&#xff0c;我发现有很多自己实现的分页功能的封装&#xff0c;在阅读了官方源码时&#xff0c;我发现了分页功能的封装&#xff0…

微信手机网站设计杭州市做外贸网站的公司

1.前提&#xff1a;将连续的动作图片制为图集。 2.在Hierarchy中选中含图集的sprites对象。 3.打开animator组件&#xff0c;点击create创建动画组件 4.添加property选择sprite 5.选择图集需要的部分加入animation。&#xff08;animation使用见animator&#xff09;

响应式网站建站系统qq刷赞网站推广快速

iqoo neo3在不高的价格上还保证了自己的品质&#xff0c;有很高的性能&#xff0c;很不错的屏幕。那么这款手机可以支持无线充电吗&#xff1f;小编为大家介绍关于iqoo neo3的充电方面。1.iqoo neo3可以支持无线充电吗iQOO Neo3 配备了 44W 超级闪充&#xff0c;属于小刀&#…

网站开发是否交印花税棋牌游戏平台

项目场景&#xff1a; uni-app; 获取code&#xff0c;后台解密手机号 问题描述&#xff1a; 每次第一次登陆&#xff0c;后台都会解密失败 原因分析&#xff1a; code获取错误&#xff1b;导致后台的解密key与code不对应 解决方案&#xff1a; 小程序获取手机号之前&#xf…

网站友情链接与排名新网站建设银行提升转账额度

目录 一、调试介绍1.1 Debug和Release的介绍1.2 Windows环境调试介绍1.2.1 学会快捷键1.2.2 查看临时变量的值1.2.3 查看内存信息1.2.4 查看调用堆栈1.2.4 查看汇编信息1.2.5 查看寄存器信息 二、编程常见的错误2.1 编译型错误2.2 链接型错误2.3 运行时错误 三、易于调试的代码…

电商论坛网站模板我想弄个网站

作为一名资深记者&#xff0c;我始终致力于探索并分享那些以科技之力提升特殊群体生活质量的故事。最近&#xff0c;一款名为蝙蝠避障的盲人软件进入了我的视野&#xff0c;其强大的避障导航功能正悄然改变着视障人士的出行方式&#xff0c;赋予他们前所未有的独立生活能力。 …

网站怎么做登陆江门网站制作网站

文章目录 前言一、填空题二、判断题三、简答题总结前言 学习了项目的开发与发布之后,我们就可以单独对一个项目进行开发了,但是在企业中开发中,除了编码之外,还需要项目管理、团队协作开发等,这就是软件项目管理板块要学习的内容。本文是对《软件项目管理(第二版)》第 1…

中国空间站最新消息新闻赣州有店科技有限公司

AccessClient闪退的原因&#xff1a;苹果在MacOS12.3中将系统中的python2运行库移除了&#xff0c;导致AccessClient执行时找不到python 解决方案&#xff1a;在AccessClient点击鼠标右键&#xff0c;选中显示包内容&#xff0c;进入到Contents/Resources/Scripts目录下找到mai…

番禺网站制作企业wordpress 留言板制作

大家好&#xff0c;今天是周日&#xff0c;给大家搞个小抽奖&#xff0c;送30块。嵌入式猛男必备&#xff0c;学嵌入式看『我要学嵌入式』&#xff0c;知识持久有力。点击关注&#xff0c;回复【1031】参与抽奖&#xff0c;免费送 10块 树莓派最新PICO开发板。学C语言看『写代码…

网站备案成功后云南网站建设500

ElasticJob 通过弹性调度、资源管控、以及作业治理的功能&#xff0c;打造一个适用于互联网场景的分布式调度解决方案&#xff0c;并通过开放的架构设计&#xff0c;提供多元化的作业生态。 1 项目集成 1.1 springboot项目配置 导入依赖&#xff1a; <!--mysql连接基本配…

文字壁纸做背景处理的网站全椒网站建设

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

涨口碑说做的网站佛山html5网站建设

第十六章 i18n国际化 1.什么是i18n国际化2.i18n国际化三要素介绍3.i18n国际化基础示例4.通过请求头实现国际化5.通过语言类型选择实现国际化6.通过JSTL标签库fmt实现国际化 1.什么是i18n国际化 2.i18n国际化三要素介绍 3.i18n国际化基础示例 如果我要准备一个国际化的信息&…

如何提升网站排名百度指数十年

背景与动机 目前随着云原生技术和云市场的不断成熟&#xff0c;越来越多的 IT 厂商开始投入到跨云多集群的怀抱当中。以下是 flexera 在 2023 年中关于云原生市场对多云多集群管理的接受程度的调查报告&#xff08;http://info.flexera.com&#xff09; 从 flexera 的报告中可…

孝感58同城网站建设洛阳网新闻中心

为什么阿里巴巴的持久层抛弃hibernate&#xff0c;采用MyBatis框架&#xff1f; 原因大概有以下4点&#xff1a; 尤其是需要处理大量数据或者大并发情况的网站服务&#xff0c;这也阿里选择MyBatis的原因。 MyBatis整体架构 不多讲&#xff0c;先看目录图 MyBatis源码笔记文档…

常州网络公司中环互联网网站建设国家住房和城乡建设厅网站

有时候我们执行 git push 将一个 new branch 推送到远程仓库的时候&#xff0c;会被远程仓库阻止。 可能是我们没有相应的权限吧。然而&#xff0c;我在 git push 的时候加上 --no-thin 参数&#xff0c;就可以将其推送上去了。 $ git push --no-thin origin dev注意&#xff0…

网站设计 线框图接app推广

我也是因为一次偶然的机会得知了全球移动互联网大会&#xff08;缩写GMIC&#xff09;这样一个全球最大规模的移动互联网行业的盛会&#xff0c;并且因为偶然的机会有幸在今年五一假期时得到一张分会场的门票。面对这样难得的机会&#xff0c;果断把五一三天假给自己放成了七天…

网站排名不稳定怎么办网站推广策划思路与执行

一、SQL中SUBSTRING函数的用法1、功能&#xff1a;返回字符、二进制、文本或图像表达式的一部分2、语法&#xff1a;SUBSTRING ( expression, start, length )3、QL 中的 substring 函数是用来抓出一个栏位数据中的其中一部分。这个函数的名称在不同的数据库中不完全一样&#…