当前位置: 首页 > news >正文

1.2婚庆网站建设的目的保定建站

1.2婚庆网站建设的目的,保定建站,建设通app,重庆高端设计公司jaxb注解使用并没有很多例子可以说明这一点#xff0c;但是如何在应用程序中使用JAXB可以在性能#xff08;和内存使用#xff09;方面产生巨大差异。 这个例子 在此博客文章中#xff0c;我将使用一个名为Membership的示例对象#xff0c;看起来像这样#xff1a; 我们… jaxb注解使用 并没有很多例子可以说明这一点但是如何在应用程序中使用JAXB可以在性能和内存使用方面产生巨大差异。 这个例子 在此博客文章中我将使用一个名为Membership的示例对象看起来像这样 我们将使用JAXB将对象与XML之间的封送进行封送处理。 在静态块中创建上下文或至少一次 我通常看到的最大错误是每个请求都会创建JAXB上下文 public String marshal(Membership membership){ StringWriter stringWriter new StringWriter(); try { JAXBContext context JAXBContext.newInstance(Membership. class ); Marshaller m context.createMarshaller(); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(membership, stringWriter); String xml stringWriter.toString(); stringWriter.close(); return xml; } catch (JAXBException | IOException ex) { throw new RuntimeException(ex); } } public Membership unmarshal(String xml) { try { JAXBContext context JAXBContext.newInstance(Membership. class ); Unmarshaller u context.createUnmarshaller(); return (Membership)u.unmarshal( new StringReader(xml)); } catch (JAXBException ex) { throw new RuntimeException(ex); } } 也可参见示例代码这里 这里的问题是创建上下文的JAXBContext.newInstance方法。 上下文仅在对象结构更改时更改并且仅在代码更改时发生因此我们可以安全地只执行一次因此将其更改为在静态块中创建如下所示 public String marshal(Membership memberships){ StringWriter stringWriter new StringWriter(); try { Marshaller m context.createMarshaller(); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(memberships, stringWriter); String xml stringWriter.toString(); stringWriter.close(); return xml; } catch (JAXBException | IOException ex) { throw new RuntimeException(ex); } } public Membership unmarshal(String xml) { try { Unmarshaller u context.createUnmarshaller(); return (Membership)u.unmarshal( new StringReader(xml)); } catch (JAXBException ex) { throw new RuntimeException(ex); } } private static JAXBContext context; static { try { context JAXBContext.newInstance(Membership. class ); } catch (JAXBException ex) { throw new RuntimeException(ex); } } 也可参见示例代码这里 因此让我们看看有什么不同。 批处理示例。 如果我们在一个循环中一次一个将10000个对象与XML相互转换则结果如下 with Bad util Testing 10000 Marshal took: 10804 ms 13762 Unmarshal took: 13762 ms 然后加上静态块 with Good util Testing 10000 Marshal took: 90 ms Unmarshal took: 428 ms 那就是将编组速度提高120倍将编组速度提高32倍 这里有完整的示例 并发示例。 同样当对多个并发请求执行此操作时您应该看到相同的结果。 因此当我们将其部署到某个服务器上在我的示例中是扎带 并将REST端点暴露给封送和封送时我们可以使用诸如siege之类的东西来生成并发流量到服务器 错误示例的输出 Transactions: 255 hits Availability: 100.00 % Elapsed time: 7.91 secs Data transferred: 0.54 MB Response time: 5.13 secs Transaction rate: 32.24 trans/sec Throughput: 0.07 MB/sec Concurrency: 165.52 Successful transactions: 255 Failed transactions: 0 Longest transaction: 6.88 Shortest transaction: 3.47 好例子的输出 Transactions: 255 hits Availability: 100.00 % Elapsed time: 1.80 secs Data transferred: 0.53 MB Response time: 0.52 secs Transaction rate: 141.67 trans/sec Throughput: 0.30 MB/sec Concurrency: 73.12 Successful transactions: 255 Failed transactions: 0 Longest transaction: 0.78 Shortest transaction: 0.05 注意“并发性”值的差异并发性是平均同时连接数该数字随着服务器性能下降而增加 这里有完整的示例 当文件很大时。 如果输入文件太大则可能会收到java.lang.OutOfMemoryError异常。 为了确保可以有效地处理大文件可以确保在创建输入时正在使用SAX Parser public Membership unmarshalWithSAX(InputStream xml){ try { InputSource inputSource new InputSource(xml); SAXParserFactory spf SAXParserFactory.newInstance(); spf.setNamespaceAware( true ); spf.setValidating( true ); SAXParser saxParser spf.newSAXParser(); saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); XMLReader xmlReader saxParser.getXMLReader(); SAXSource source new SAXSource(xmlReader, inputSource); Unmarshaller u context.createUnmarshaller(); return (Membership)u.unmarshal(source); } catch (ParserConfigurationException | SAXException | JAXBException ex) { throw new RuntimeException(ex); } } private static final String JAXP_SCHEMA_LANGUAGE http://java.sun.com/xml/jaxp/properties/schemaLanguage ; private static final String W3C_XML_SCHEMA http://www.w3.org/2001/XMLSchema ; 这里有完整的示例 全部得到 您可以在一个简单的库中获得所有“好”的东西 在代码中使用它 参见https://github.com/phillip-kruger/jaxb-lib dependency groupIdcom.github.phillip-kruger.jaxb-library/groupId artifactIdjaxb-lib/artifactId version 1.0 . 0 /version /dependency 元帅 JaxbUtil jaxbUtil new JaxbUtil(); byte [] xml jaxbUtil.marshal(myJAXBObject); 元帅 JaxbUtil jaxbUtil new JaxbUtil(); MyJAXBObject myJAXBObject jaxbUtil.unmarshal(MyJAXBObject. class ,xml); 获取JAXB对象的XSD XsdUtil xsdUtil new XsdUtil(); String xsd xsdUtil.getXsd(MyJAXBObject. class ); 翻译自: https://www.javacodegeeks.com/2019/05/using-jaxb.htmljaxb注解使用
http://www.pierceye.com/news/457718/

相关文章:

  • 遵义网站开发公司舟山网站建设企业
  • 外贸网站一站式服务招网站建设销售
  • 绚丽的网站wordpress进入后台显示500
  • 威海城乡与住房建设部网站小颜自助建站系统
  • 域名怎么解析到网站做响应式网站需要学哪些知识
  • wordpress手机端慢seoer是什么意思
  • wordpress添加站点江苏廉政建设网站
  • 网站seo是什么做二维码推送网站
  • win7 iis默认网站设置游戏推广员
  • 湖北二师网站建设排名潍坊专业捞泵电话
  • 个人网站设计内容和要求萍乡网站制作公司
  • 合肥网站seo费用怎么把文章导入wordpress
  • 赣州网站推广哪家最专业阿里云wordpress数据库备份
  • 珠海专业网站建设公司做网站虚拟主机好还是
  • 做美图 网站有哪些wordpress哪些插件
  • 倒计时网站模板全屋定制设计培训学校哪里有
  • 凡客做网站网站排名的重要性
  • 怎么问客户做不做网站企业网站源码 多语言
  • wordpress网站基础知识信息网络公司经营范围
  • 智汇隆网站建设wordpress建字段
  • 广东专业商城网站建设软文投稿平台有哪些
  • 广告公司起什么名字好seo教程有什么
  • 搭建网站什么意思网站制作网址
  • 哈尔滨站建筑松原市建设局网站
  • 浙江网站建设 seo深圳建设岗位证书报名网站
  • c 做彩票网站想在网上做开发网站接活儿
  • 医疗网站建设基本流程图怎样进行文化建设
  • 在深圳学网站设计我想创业做网站
  • seo网站优化公司住房和城乡建设厅证书查询
  • 江苏建设通网站创业项目