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

零基础学做网站难吗济南营销网站制作公司哪家好

零基础学做网站难吗,济南营销网站制作公司哪家好,wordpress外链图本地化,毕设做网站什么能过meetup本文将涉及多个主题#xff1a;响应式编程#xff0c;HTTP#xff0c;解析JSON以及与社交API集成。 完全在一个用例中#xff1a;我们将通过非夸张的RxNetty库实时加载和处理新的metup.com事件#xff0c;结合Netty框架的强大功能和RxJava库的灵活性。 Meetup提供了… meetup 本文将涉及多个主题响应式编程HTTP解析JSON以及与社交API集成。 完全在一个用例中我们将通过非夸张的RxNetty库实时加载和处理新的metup.com事件结合Netty框架的强大功能和RxJava库的灵活性。 Meetup提供了公开可用的流API 可实时推送世界各地注册的每个Meetup。 只需浏览至stream.meetup.com/2/open_events并观察JSON块如何缓慢地出现在屏幕上。 每当有人创建新事件时自包含的JSON就会从服务器推送到您的浏览器。 这意味着这样的请求永无止境相反只要需要我们就会不断接收部分数据。 我们已经在将Twitter4J变成RxJava的Observable中研究了类似的情况。 每个新的Meetup事件都会发布一个独立的JSON文档与此类似省略许多细节 { id : 219088449,name : Silver Wings Brunch,time : 1421609400000,mtime : 1417814004321,duration : 900000,rsvp_limit : 0,status : upcoming,event_url : http://www.meetup.com/Laguna-Niguel-Social-Networking-Meetup/events/219088449/,group : { name : Former Flight Attendants South Orange and North San Diego Co,state : CA...},venue : { address_1 : 26860 Ortega Highway,city : San Juan Capistrano,country : US...},venue_visibility : public,visibility : public,yes_rsvp_count : 1... } 每当我们长时间轮询的HTTP连接带有Transfer-Encoding: chunked响应标头推送此类JSON时我们都希望对其进行解析并以某种方式进一步传递。 我们讨厌回调因此RxJava似乎是一个合理的选择认为 ObservableEvent 。 步骤1使用RxNetty接收原始数据 我们不能使用普通的HTTP客户端因为它们专注于请求-响应语义。 这里没有任何响应我们只是永远保持打开的连接并在数据到达时使用它们。 RxJava具有开箱即用的RxApacheHttp库但它假定为text/event-stream内容类型 。 相反我们将使用底层的通用RxNetty库。 它是Nettyduh的包装并且能够实现任意的 TCP / IP包括HTTP以及UDP客户端和服务器。 如果您不了解Netty则它是基于数据包的而不是面向流的因此我们可以预期每次Meetup推送都会有一个Netty事件。 该API当然不是简单明了的但是一旦您使用它它就会变得有意义 HttpClientByteBuf, ByteBuf httpClient RxNetty.ByteBuf, ByteBufnewHttpClientBuilder(stream.meetup.com, 443).pipelineConfigurator(new HttpClientPipelineConfigurator()).withSslEngineFactory(DefaultFactories.trustAll()).build();final ObservableHttpClientResponse responses httpClient.submit(HttpClientRequest.createGet(/2/open_events)); final Observable byteBufs responses.flatMap(AbstractHttpContentHolder::getContent); final Observable chunks byteBufs.map(content - content.toString(StandardCharsets.UTF_8)); 首先我们创建HttpClient并设置SSL请注意关于服务器证书的trustAll()可能不是最佳的生产设置。 稍后我们submit() GET请求并返回ObservableHttpClientResponseByteBuf 。 ByteBuf是Netty对通过网络发送或接收的一堆字节的抽象。 此观察结果将立即告诉我们从Meetup收到的每条数据。 从响应中提取ByteBuf 我们将其转换为包含上述JSON的String 。 到目前为止一切正常。 步骤2将数据包与JSON文档对齐 Netty非常强大因为它不会掩盖泄漏抽象所固有的复杂性。 每次通过TCP / IP线路接收到某些内容时都会通知我们。 您可能会相信当服务器发送100字节时客户端的Netty会将收到的这100字节通知我们。 但是TCP / IP堆栈可以自由地拆分和合并您通过有线发送的数据尤其是因为它假定是流因此如何将其拆分为数据包应该是无关紧要的。 Netty的文档中对此警告做了很大的解释。 对我们意味着什么 当Meetup发送单个事件时我们可能仅收到一个可观察到的chunks String 。 但是同样可以将其划分为任意数量的数据包因此chunks将发出多个String 。 更糟糕的是如果Meetup接连发送两个事件则它们可能适合一个数据包。 在这种情况下 chunks将发出一个带有两个独立JSON文档的String 。 事实上我们不能假设JSON字符串和收到的网络数据包之间有任何对齐。 我们所知道的是代表事件的各个JSON文档由换行符分隔。 令人惊讶的是 RxJavaString官方附加组件RxJavaString提供了一种精确的方法 Observable jsonChunks StringObservable.split(chunks, \n); 实际上甚至还有更简单的StringObservable.byLine(chunks) 但它使用的是平台相关的行尾。 最好在官方文档中解释split()作用 现在我们可以安全地解析jsonChunks发出的每个String了 步骤3解析JSON 有趣的是这一步骤并不是那么简单。 我承认我排序的享受WSDL时间因为我很容易可预见生成如下web服务的合同Java模型。 JSON特别是在JSON模式的边缘市场渗透方面基本上是集成的“狂野西部”。 通常您会得到非正式的文档或请求和响应的样本。 没有类型信息或格式无论字段是否为必填项等等。此外由于我不情愿使用地图映射 在那里Clojure程序员为了使用基于JSON的REST服务我必须自己编写映射POJO。 好吧有解决方法。 首先我举了一个由Meetup流API生成的JSON的典型示例并将其放在src/main/json/meetup/event.json 。 然后我使用jsonschema2pojo-maven-plugin 也存在Gradle和Ant版本。 插件的名称令人困惑它还可以与JSON示例不仅是架构一起使用以生成Java模型 plugingroupIdorg.jsonschema2pojo/groupIdartifactIdjsonschema2pojo-maven-plugin/artifactIdversion0.4.7/versionconfigurationsourceDirectory${basedir}/src/main/json/meetup/sourceDirectorytargetPackagecom.nurkiewicz.meetup.generated/targetPackageincludeHashcodeAndEqualstrue/includeHashcodeAndEqualsincludeToStringtrue/includeToStringinitializeCollectionstrue/initializeCollectionssourceTypeJSON/sourceTypeuseCommonsLang3true/useCommonsLang3useJodaDatestrue/useJodaDatesuseLongIntegerstrue/useLongIntegersoutputDirectorytarget/generated-sources/outputDirectory/configurationexecutionsexecutionidgenerate-sources/idphasegenerate-sources/phasegoalsgoalgenerate/goal/goals/execution/executions /plugin 此时Maven将创建与Jackson兼容的Event.java Venue.java Group.java等 private Event parseEventJson(String jsonStr) {try {return objectMapper.readValue(jsonStr, Event.class);} catch (IOException e) {throw new UncheckedIOException(e);} } 很好它很好 final Observableevents jsonChunks.map(this::parseEventJson); 步骤5获利 有了ObservableEvent我们可以实现一些非常有趣的用例。 是否要查找刚刚创建的波兰所有聚会的名称 当然 events.filter(event - event.getVenue() ! null).filter(event - event.getVenue().getCountry().equals(pl)).map(Event::getName).forEach(System.out::println); 寻找统计信息每分钟创建多少个事件 没问题 events.buffer(1, TimeUnit.MINUTES).map(List::size).forEach(count - log.info(Count: {}, count)); 或者您是否想继续搜索将来最远的聚会而跳过比已发现的聚会更近的聚会 events.filter(event - event.getTime() ! null).scan(this::laterEventFrom).distinct().map(Event::getTime).map(Instant::ofEpochMilli).forEach(System.out::println);//...private Event laterEventFrom(Event first, Event second) {return first.getTime() second.getTime() ?first :second; } 此代码过滤掉没有已知时间的事件发出当前事件或前一个事件 scan() 具体取决于后面的事件过滤出重复事件并显示时间。 这个运行了几分钟的微型程序已经发现一个计划于2015年11月创建的聚会而在撰写本文时它是2014年12月。 可能性是无止境的。 希望我能对如何轻松地将各种技术融合在一起有一个很好的了解React式编程以编写超快速的网络代码无样板代码的类型安全的JSON解析和RxJava来快速处理事件流。 请享用 翻译自: https://www.javacodegeeks.com/2014/12/accessing-meetups-streaming-api-with-rxnetty.htmlmeetup
http://www.pierceye.com/news/537730/

相关文章:

  • 个人网站开发的意义自己建设网站需要什么手续
  • 网站的建设流程怎样使用仿站小工具做网站
  • 佛山企业模板建站企业微信管理系统
  • 百度推广登录网站网站开发需要什么技术人员
  • 有关网站升级建设的申请书中国工业设计公司
  • 线上销售怎么做优化网站哪家好
  • 成都网站建设备案audio player wordpress 使用
  • 做网站设计的公司上海装修公司名字
  • 处理器优化软件se 网站优化
  • 网站制作公司汉狮网络电子商务网站建设评估的指标有哪些?
  • asp网站伪静态教程网站建设多少钱实惠湘潭磐石网络
  • wordpress 外贸网站建设wordpress模板安装
  • 中国精准扶贫网站建设现状惠安规划局建设局网站
  • 营销型网站制作建设网络营销推广技巧
  • 哪里有做网站推广的宁波招聘网站开发
  • 建站工具帝国双语网站开发
  • 呼和浩特企业网站建设赞叹天河网站建设公司
  • 新郑做网站公司吉林省建设项目招标网
  • 深圳做网站哪里最好南宁seo外包平台
  • 新开传奇网站推荐做百度推广怎么做才能有电话
  • 文件夹里内容做网站的分类做网站上线一般要多久
  • 企业网站页头背景图河南网络优化服务
  • 成品网站nike源码免费现在装宽带要多少钱
  • 綦江建设银行网站外贸精品网站建设
  • 互动性的网站做第一个php网站
  • 移动网站开发视频怎样嵌入遵义市公共资源交易平台
  • 教做美食的视频网站青岛手机网站建设报价
  • 校园网站建设网成功做网站
  • 网站策划方案如何做网页设计师职业认知
  • 助孕网站优化推广项目名称有创意大全