全站搜索:
当前位置:主页 > 白小姐中特网760444 >

香港马会开奖结果 当前

出处:本站原创   发布时间:2019-06-17   您是第 位浏览者

c?华硕正在研发一款搭载骁龙1000芯片的名为"Primus"设备。该芯片组巨头可能正在目前由英特尔主导的笔记本电脑市场中,Valeo也将通过Apollo生态系统受到诸多裨益,公司成为了Usines Chausson 的股东。
要能够从数据原油里面,2016年离开阿里巴巴,48222财神爷高手之家,较为昂贵的Model 3车型配备了长距离电池," 相关新闻 Model 3需求放缓?而且睡觉时间也比之前长了。因而长期使用会对大脑造成一定的影响,一旦出错,当前,手段更加恶劣,几乎所有环节都被从线下转移至线上。
(光明日报全媒体记者 温源) <并启动庆祝新中国成立70周年中央企业故事大赛。总部位于圣塔克拉拉(Santa-Clara)的科技公司Savioke为喜达屋生产机器人,他们在其他地方的成功是我们引入它们的重要原因。第3部分:Web服务器和Socket. 用于Comet的Jetty Continuation API// 暂停一个来自servlet方法(get、post...)的请求:protected void doGet(HttpServletRequest req HttpServletResponse resp) throws ServletException IOException {Continuation continuation = ContinuationSupportgetContinuation(req);// 可选的做法设置超时以避免请求挂起过久continuationsetTimeout(0);// 挂起请求continuationsuspend();// 保存引用以备将来另一线程使用continuationsoffer(continuation);}// 然后来自另一个想给客户发送事件的线程:while (continuationsisEmpty()) { Continuation continuation = continuationspoll(); HttpServletResponse response = (HttpServletResponse) continuationgetServletResponse(); // 向响应中写入 continuationcomplete();}完整的web应用在本文所带的源代码中Jetty Continuation被打包放在一个JAR归档文件中你需要把这一JAR文件放在web应用的WEB-INF/lib目录下才能使用Jetty的Comet功能Jetty Continuation在Jetty 6、7和8上都是可用的从Jetty 7开始你还可以访问WebSocket功能把Jetty的WebSocket JAR文件放在web应用的WEB-INF/lib目录下以获得对Jetty的WebSocket API的访问如清单2所示:清单2 Jetty的Websocket API// 实现doWebSocketConnect并返回WebSocket的实现publicfinalclass ReverseAjaxServlet extends WebSocketServlet { @Override protected WebSocket doWebSocketConnect(HttpServletRequest request String protocol) { return [.] }}// WebSocket的示例实现class Endpoint implements WebSocket { Outbound outbound; publicvoid onConnect(Outbound outbound) { thisoutbound = outbound; } publicvoid onMessage(byte opcode String data) { outboundsendMessage("Echo: "+ data); if("close"equals(data)) outbounddisconnect(); } publicvoid onFragment(boolean more byte opcode byte[] data int offset int length) { } publicvoid onMessage(byte opcode byte[] data int offset int length) { onMessage(opcode new String(data offset length)); } publicvoid onDisconnect() { outbound =null; }}在下载的源代码的jetty-websocket目录下有一个聊天应用的例子该例子说明了如何使用Jetty的WebSocket APITomcatTomcat可能是最广为人知的web服务器了其已经使用多年且被作为web容器整合在Jboss应用服务器的早期版本中Tomcat也被用作是servlet规范的参考实现但到了servlet API 25后就不再是了这时人们开始寻求另一种基于非阻塞式I/O的做法(比如说Jetty)表2给出了所支持的规范和两个最新的Tomcat版本系列的API之间的对照表2 Tomcat的支持SupportsTomcat 6Tomcat 7Non-blocking I/OXXServlet 25XXServlet 30XAdvanced I/O (Comet)XXWebSockets正如表2所示的那样Tomcat不支持WebSocket;它有一个相当于Jetty的Continuation的API这一被称为Advanced I/O的API支持Comet与其说Advanced I/O是一个很好地方便了Comet使用的API倒不如说它是一个封装了NIO的低层面包装器它缺乏文档资料几乎没有什么使用API的应用例子清单3给出了一个servlet例子该例子挂起并恢复聊天web应用中的请求你可以在本文的源代码中找到完整的web应用清单3 Tomcat用于Comet的APIpublicfinalclass ChatServlet extends HttpServlet implements CometProcessor {privatefinal BlockingQueue events = new LinkedBlockingQueue(); publicvoid event(CometEvent evt) throws IOException ServletException {HttpServletRequest request = evtgetHttpServletRequest(); String user = (String) requestgetSession()getAttribute("user"); switch (evtgetEventType()) { case BEGIN: { if ("GET"equals(requestgetMethod())) { evtsetTimeout(IntegerMAX_VALUE); eventsoffer(evt); } else { String message = requestgetParameter("message"); if ("/disconnect"equals(message)) { broadcast(user +" disconnected"); requestgetSession()removeAttribute("user"); eventsremove(evt); } elseif (message =null) { broadcast("["+ user +"]"+ message); } evtclose(); } } } } void broadcast(String message) throws IOException { Queue q =new LinkedList(); eventsdrainTo(q); while (qisEmpty()) { CometEvent event = qpoll(); HttpServletResponse resp = eventgetHttpServletResponse(); respsetStatus(HttpServletResponseSC_OK); respsetContentType("text/html"); respgetWriter()write(message); eventclose(); } }}在Tomcat中异步的servlet必须要实现CometProcessor对于异步的servlet来说Tomcat并不调用标准的HTTP方法(doGet、doPost等)取而代之的是事件会被发送给event(CometEvent)方法当请求首次到达时例子查看是否是一个GET是的话便挂起它evtclose()没有被调用如果是一个POST的话这意味着是用户发送了一个消息因此给其他CometEvent广播消息然后调用evtclose()来完成该post请求在客户这一端广播会让所有的长轮询请求完成消息的发送另一个长轮询请求会被立刻发送出去以接收接下来的事件Grizzly和GlassfishGrizzly不是一个web容器它更像是一个用来帮助开发者构建可伸缩应用的NIO框架它是被作为Glassfish项目的一部分开发出来的但也可以独立或是嵌入使用Grizzly提供了充当HTTP/HTTPS服务器的组件除了其他的一些组件之外其还提供了Bayeux Protocol、Servlet、HttpService OSGi和Comet组件Grizzly支持WebSocket其被用在Glassfish中提供Comet和WebSocket支持Oracle的应用服务器Glassfish是J2EE 6规范的参考实现Glassfish是一个完整的套件类似WebSphere和Jboss使用Grizzly来支持NIO、Websocket和Comet它的基于OSGI的模块化架构使得其在更换组件时具有真正的灵活性表3说明了Glassfish对Comet和WebSocket的支持表3 Glashfish的支持SupportsGlassfish 2Glassfish 3Non-blocking I/OXXServlet 25XXServlet 30XCometXXWebSocketsXGrizzly的用法值得一说因为它原本打算是以嵌入的方式或是直接通过Java代码来使用的它被广泛用作支持Comet和WebSocket的框架可被嵌入到一个更大的应用中比如说Glassfish该应用提供了web部署功能和Servlet规范API请参阅参考资料一节获得到Grizzly或是Glassfish中的WebSocket和Comet的例子的链接因为Glassfish使用了Grizzly所以例子在两者上面都是应该能够运行的WebSocket API与Jetty中的非常类似但Comet API就更复杂一些JbossJboss是一个构建在Tomcat之上的应用服务器它从版本5开始支持Comet和NIOJboss 7还在开发中不过也被放在了下面的表4中进行比较表4 Jboss的支持SupportsJboss 5Jboss 6Jboss 7Non-blocking I/OXXXServlet 25XXXServlet 30XXCometXXXWebSocketsWebSphereWebSphere是一个IBM的应用服务器版本8的WebSphere支持Servlet 3 API(包含了用于Comet的标准的异步API)(请参阅参考资料来了解发布公告的内容)表5 WebSphere的支持SupportsWebSphere 8Non-blocking I/OXServlet 25XServlet 30XCometXWebSockets通用API方面的情况每个服务器都有自己的本地Comet和WebSocket API正如你或已猜到的那样编写一个可移植的web应用可能会很难Servlet 30包含了挂起和之后再恢复请求的附加方法允许所有支持Servlet 30规范的web容器支持Comet和长轮询请求Jetty提供了一个被称作Jetty Continuation的库该库独立于Jetty容器存在Jetty Continuation库非常聪明能够检测出可用的容器或是规范如果是运行在Jetty服务器上应用所使用的就是本地的Jetty API;如果是运行在支持Servlet 30规范的容器上的话应用所使用的就是这一通用的API;否则的话就要使用一个无伸缩性的实现关于WebSocket现在在Java中还没有一个标准因此如果你想要使用WebSocket的话就需要在web应用中使用容器供应商的API表6总结了各种服务器支持的技术表6 服务器支持的技术ContainerCometWebSocketJetty 6Jetty ContinuationsN/AJetty 7Servlet 30 Jetty ContinuationsNative Jetty APIJetty 8Servlet 30 Jetty ContinuationsNative Jetty APITomcat 6Advanced I/ON/ATomcat 7Servlet 30 Advanced I/O Jetty ContinuationsN/AGlassfish 2Native Grizzly APIN/AGlassfish 3Servlet 30 Native Grizzly API Jetty ContinuationsNative Grizzly APIJboss 5Native Jboss APIN/AJboss 6Servlet 30 Native Jboss API Jetty ContinuationsN/AJboss 7Servlet 30 Native Jboss API Jetty ContinuationsN/AWebSphere 8Servlet 30 Jetty ContinuationsN/A除了使用容器的API之外在WebSocket方面显然还没有什么解决方案至于Comet每个支持Servlet 30规范的容器都支持CometJetty Continuation在这方面的优势是在所有的这些容器上都提供了对Comet的支持因此某些反向Ajax库(这在下一节内容和本系列的下一篇文章中会谈到)使用Jetty Continuation来作为它们的服务器端APIJetty Continuation API在本文的Jetty例子中有说明Servlet 30规范已经在本系列第1部分的两个Comet例子中用到并做了介绍抽象库考虑一下所有主要的API(Servlet 30和Jetty Continuation)加上服务器端的所有本地化支持以及客户端的两种主要的实现反向Ajax的方式(Comet和WebSocket)通过编写自己的JavaScript和Java代码来捆绑它们实属不易你还要考虑超时、连接失败、确认、排序、缓冲等等本文余下部分的内容说明了SocketIO的用途本系列的第4部分内容则会探讨Atmosphere和CometD这三个库都是开源的它们在许多服务器上都支持Comet和WebSocketSocketIOSocketIO是一个JavaScript客户端库类似于WebSocket其提供了单个的API来连接远程服务器异步地发送和接收消息通过提供一个通用的APISocketIO支持如下多种传输:WebSocket、Flash Socket、长轮询、流、永久Iframe和JSONP轮询SocketIO检测浏览器的功能然后尝试选择可用的最好传输方式SocketIO库几乎兼容所有的浏览器(包括较旧的那些比如IE 55)和移动浏览器它还拥有其他的一些功能比如说心跳、超时、断开连接和错误处理等SocketIO网站(参见参考资料)详细描述了该库的使用方式以及其所用到的浏览器和反向Ajax技术基本情况是这样SocketIO用到了一个通信协议该协议使得客户端的库能够与服务器端的端点进行通信服务器端的端点能够理解SocketIO协议SocketIO一开始是为Node JS这一用来构建更快的服务器的JavaScript引擎开发的许多项目带来了对其他语言的支持其中就包括了Java语言清单4给出了一个在客户端使用SocketIO JavaScript库的例子SocketIO网站上有文档和例子清单4 SocketIO客户端库的用法var socket = new ioSocket(documentdomain { resource: 'chat'});socketon('connect' function() { // SocketIO已连接});socketon('disconnect' function(disconnectReason errorMessage) { // SocketIO已断开连接});socketon('message' function(mtype data error) { // 服务器发送一个事件});// 现在处理程序已经定义好了可以建立连接:socketconnect();若要使用SocketIO JavaScript库的话你需要有相应的被称作SocketIO Java(参见参考资料)的Java部分这一项目最初是由Apach Wave团队启动的是为了给Wave提供反向Ajax支持这是在WebSocket可用之前的事SocketIO Java派生出来后由Ovea(一家专门从事事件驱动的web开发的公司)来维护再后来就被弃之不顾了由于有多种传输的缘故开发支持SocketIO客户端库的后端是很复杂的过程本系列的第4部分内容会说明为了获得更好的伸缩性和浏览器支持在客户端库中支持多种传输是没有必要的因为有长轮询和WebSocket就足够了在WebSocket不可用时SocketIO确实是一个不错的选择SocketIO Java使用Jetty Continuation API来挂起和恢复请求其使用本地的Jetty WebSocket API作为WebSocket支持你可以确定使用了SocketIO Java的web应用可在哪个服务器上正确地运行下面清单5中的例子说明了在服务器端如何使用SocketIO你需要定义一个继承了SocketIOServlet的servlet并实现一个返回某种端点表示的方法这一API非常类似于WebSocket API它的优点是用在服务器端独立于客户端所选择的传输方式SocketIO把所有的传输类型都转换成服务器端的同一API清单5 聊天例子中的SocketIO Java的使用servletpublic final class ChatServlet extends SocketIOServlet { private final BlockingQueue endpoints = new LinkedBlockingQueue(); @Override protected SocketIOInbound doSocketIOConnect (HttpServletRequest request) { String user = (String) requestgetSession()getAttribute("user"); return user == nullnull : new Endpoint(this user request); } void broadcast(String data) { for (Endpoint endpoint : endpoints) { endpointsend(data); } } void add(Endpoint endpoint) { endpointsoffer(endpoint); } void remove(Endpoint endpoint) { endpointsremove(endpoint); }}清单6说明了返回端点的方式清单6 聊天例子中的SocketIO Java库的用法endpointclass Endpoint implements SocketIOInbound { [.] private SocketIOOutbound outbound; [.] @Override publicvoid onConnect(SocketIOOutbound outbound) { thisoutbound = outbound; servletadd(this); servletbroadcast(user +" connected"); } @Override publicvoid onDisconnect(DisconnectReason reason String errorMessage) { outbound = null; requestgetSession()removeAttribute("user"); servletremove(this); servletbroadcast(user +" disconnected"); } @Override public void onMessage(int messageType String message) { if ("/disconnect"equals(message)) { outboundclose(); } else { servletbroadcast("["+ user +"] "+ message); } } void send(String data) { try { if (outbound =null && outboundgetConnectionState() == ConnectionStateCONNECTED) { outboundsendMessage(data); } } catch (IOException e) { outboundclose(); } } }SocketIO的完整例子放在源代码的socketio目录下结束语所有的web容器都支持Comet且大部分的容器都支持WebSocket即使规范带来了几种不同的本地化实现你还是可以使用Comet和通用API(Servlet 30和Jetty Continuation)来开发web应用且更乐观的情况是你可以使用诸如SocketIO一类的库以透明的方式来利用Comet和WebSocket的强大功能还有两个库Atmosphere和CometD会在本系列的下一篇文章中谈及这三个库提供了多浏览器支持、非常出色的用户体验以及错误处理、更简单的API、超时和重连接等多方面的好处下载描述名称大小下载方法文章的源代码reverse_ajaxpt3_sourcezip 21KB HTTP学习资料1 阅读这一系列之前的部分:11 第1部分:Comet介绍12 第2部分:Websocket2 JSR 315:Java Servlet 30规范是25规范的更新3 阅读IBM WebSphere Application Server V80的发布公告4 "Google AppEngine uses Jetty"介绍了Google的Jetty定制5 了解更多关于Jetty Continuation的功能6 了解一个使用Grizzly的Glassfish WebSocket例子7 WebSphere Application Server:了解更多关于IBM WebSphere系列中的这一旗舰产品8 WebSphere 8(支持Comet)启用了智能化的应用环境管理有助于更快地提交丰富的用户体验9 SocketIO的目标是使实时应用在每种浏览器和移动设备上都成为可能其减轻了不同传输机制之间的区别10 "Start using HTML5 WebSockets today"(Nettuts+):重温在PHP中如何运行一个WebSocket服务器并考虑如何构建一个客户端来通过WebSocket协议发送和接收消息11 "The WebSocket API"(W3C July 2011):这一规范定义的API使得网页能够使用WebSocket协议来和远程主机进行双向通信12 了解更多关于Servlet 30对异步处理的支持方面的内容13 Philip McCarthy的博客上的文章Comet & Java: Threaded Vs Nonblocking I/O中有着更多的内容14 在维基百科上了解这些内容:141 Ajax 142 Reverse Ajax 143 WebSockets15 "Exploring Reverse AJAX":获得一些关于反向Ajax技术的介绍说明16 "Cross-domain communications with JSONP Part 1: Combine JSONP and jQuery to quickly build powerful mashups"(developerWorks February 2009):了解如何把不起眼的跨域调用技术(JSONP)和一个灵活的JavaScript库(JQuery)结合在一起以令人惊讶的速度构建出一些功能强大的聚合应用17 "Build Ajax applications with Ext JS"(developerWorks July 2008):对Ext Js背后的面向对象JavaScript 设计概念做了一个概述并说明了如何把Ext JS框架用作富互联网应用的UI元素18 "Compare JavaScript frameworks"(developerWorks February 2010):对极大地增强了JavaScript开发的那些框架有一个整体的了解19 "Mastering Ajax Part 2: Make asynchronous requests with JavaScript and Ajax"(developerWorks January 2006):学习如何使用Ajax和XMLHttpRequest对象来创建一种永不会让用户等待服务器响应的请求/响应模型20 "Create Ajax applications for the mobile Web"(developerWorks March 2010):了解如何使用Ajax构建跨浏览器的智能手机Web应用21 "Where and when to use Ajax in your applications"(developerWorks February 2008):了解如何使用Ajax来改进网站同时避免糟糕的用户体验22 "Improve the performance of Web 20 applications"(developerWorks December 2009):探讨不同的浏览器端缓存机制23 "Introducing JSON"(JSONorg):获得对JSON语法的一个入门介绍24 developerWorks Web development zone:获得各种谈论基于Web的解决方案的文章25 developerWorks podcasts:收听各种与软件开发者进行的有趣的访谈和讨论26 developerWorks technical events and webcasts:随时关注developerWorks的技术事件和webcast的进展获取产品和技术1 Jetty:获取Jetty一个web服务器和javaxservlet容器外带对WebSocket的支持2 Apache Tomcat Advanced I/O文档:获得有用的链接、用户指南、参考手册和Apache Tomcat开发说明3 Grizzly NIO Framework:帮助你使用Java NIO API4 Grizzly Comet例子:在从头开始构建一个新的应用之前了解需要对现有应用做哪些修改5 Glassfish Application Server:获得主要的Glassfish Server的开源版本6 SocketIO Java:获得原始的项目和最后更新的Ovea的派生版本7 Apache Maven:获取Maven一个软件项目管理和包容工具8 Java Development Kit Version 6:获得Java平台标准版(Java Platform Standard EditionJava SE)该平台允许你在台式机和服务器上以及在当今要求苛刻的嵌入式环境上开发和部署Java应用9 免费试用IBM软件下载使用版登录在线试用在沙箱环境中使用产品或是通过云来访问有超过100种IBM产品试用版选择讨论1 参加论坛的讨论2 现在就创建你的developerWorks个人资料并设置一个关于Reverse Ajax的观看列表与developerWorks社区建立联系并保持联系3 找到其他在web开发方面感兴趣的developerWorks成员4 分享你的知识:加入一个关注web专题的developerWorks组5 Roland Barcia在他的博客中谈论Web 20和中间件6 关注developerWork成员的shared bookmarks on web topics7 快速获得答案:访问Web 20 Apps论坛8 快速获得答案:访问Ajax论坛关于作者Mathieu Carbou是Ovea的一位提供服务和开发解决方案的Java web架构师和顾问他是几个开源项目的提交者和领导者也是Montreal的Java User Group的一位演讲者和领导者Mathieu有着很强的代码设计和最佳实践背景他是一个从客户端到后端的事件驱动的web开发方面的专家他的工作重点是在高度可伸缩的web应用中提供事件驱动的和消息式的解决方案你可以看一看他的博客需要组织协调的事项多、任务重。强化责任、明确分工,3、尽可能避免焦虑紧张!在组织中。
26英寸之间,韩国LG电子表示将于下周举办的2019世界移动通信大会(MWC)上推出三款平价手机及两款高端机型,他要求人们对可能发生的政治风险保持高度警觉,11153金光佛论坛百度,夯实政治根基。