Start HttpServer /** * 启动 HttpServer * multi instances 采用 synchronized防止线程安全问题 * addHandlers 方法是actor模式的实现(EventLoopPoolSize >= instances): * 1 instances : 1 verticle(actor) : 1 VertxThread(Eventloop) */ public synchronized HttpServer listen(int port…
WSGI接口 了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是: 浏览器发送一个HTTP请求: 服务器收到请求,生成一个HTML文档: 服务器把HTML文档作为HTTP响应的Body发送给浏览器: 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示. 所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回.Apache.Nginx.Lighttpd等这些常见的静态服务器就是干这件事情…
在web开发中,用的最多的就是表单了,用户通过表单提交数据到系统后台,系统又可以通过表单传递的数据做业务分析.那么这章就学习在vert.x中怎么使用表单,获取表单的参数值. 编写一个表单模板代码resources/templates/user.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></tit…
这篇学习在动态模板里面引入css,把动态模板与静态文件结合起来使用. 编写DynamicReference.java package com.javafm.vertx.helloworld; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServer; import io.vertx.ext.web.Router; import io.vertx.ext.web.handler.StaticHandler; import io…
做web开发,css.js.图片等静态资源是必不可少的,那么vert.x又是怎么来加载这些静态资源呢.请看StaticHandler 编写HelloStaticResource.java package com.javafm.vertx.helloworld; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServer; import io.vertx.ext.web.Router; import io.vertx.ext.w…
在vert.x中使用模板解析,可以为我们带来很多方便.我这里学习了一下ClassLoaderTemplateResolver的简单使用.这次工程配置与上篇一样,不需要做任何多的配置.直接编写代码就可以了. 编写HelloThymeleafResolver.java package com.javafm.vertx.helloworld; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServer; import io.vert…
在vert.x中使用Thymeleaf模板,需要引入vertx-web-templ-thymeleaf依赖.pom.xml文件如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu…
这里需要用到vertx-web依赖了,依然是在pom.xml里面导入 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht…
如果你对Node.js感兴趣,Vert.x可能是你的下一个大事件:一个建立在JVM上一个类似的架构企业制度. 这一部分介绍Vert.x是通过两个动手的例子(基于Vert.x 2.0). 当Node.js出现,许多开发者兴奋的感到可以用不寻常的方法来构建可扩展的服务器端应用程序. 而不是开始,将服务使用多线程的请求重量级的容器.Node.js是启动多个轻便单线程的服务器和流量路由到他们. 现在,类似的框架已经出现,它的服务器部署在一个JVM中,使用JVM设施来管理流量轻量级服务器进程. 本批中的开…
分支:auth static添加文件 css文件夹: app.css    自定义css样式[*] bootstrap.min.cs    bootstrap样式 compomemts文件夹: 插件用到的样式 animate.min.css    弹出提示框要到的样式 bootstrap-datepicker3.min.css    日期选择控件用到的样式 select2.min.css    下拉选择框用到的样式 fonts文件夹 bootstrap用到的字体 images文件夹 用到的一些图…
说明         需要理解阻塞和非阻塞的区别,特别要注意非阻塞和异步不是一个概念,这个很容易弄错.云盘里面netty的书会讲这几个方面的区别,nodejs深入浅出关于异步编程章节里面        也会讲到网络通信底层的知识,可以看看下面文章: http://blog.csdn.net/hguisu/article/details/7453390 http://www.cnblogs.com/dolphin0520/p/3916526.html Handler接口类 package stud…
一.Tornado之架构概述图 二.Application类详细分析: #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/5/17 11:45 import tornado.web class Application(object): """A collection of request handlers that make up a web…
Vert.x Core 文档手册 中英对照表 Client:客户端 Server:服务器 Primitive:基本(描述类型) Writing:编写(有些地方译为开发) Fluent:流式的 Reactor:反应器,Multi-Reactor即多反应器 Options:配置项,作为参数时候翻译成选项 Context:上下文环境 Undeploy:撤销(反部署,对应部署) Unregister:注销(反注册,对应注册) Destroyed:销毁 Handler/Handle:处理器/处理,有些特定…
编写HTTP 服务器与客户端 Vert.x让编写非阻塞的HTTP 服务器与客户端变得非常轻松. 创建HTTP 服务器 缺省状况: HttpServer server = vertx.createHttpServer(); 配置HTTP 服务器 创建时也可以传入HttpServerOptions实例: HttpServerOptions options = new HttpServerOptions().setMaxWebsocketFrameSize(1000000); HttpServer s…
目的:    Java平台下的内部组件之间的通信.    1.WebService 由于感觉本身Java平台下的Web Service标准就不够统一,相互之间的调用就会有一些问题,更不用说与.net等其他平台了.而且WebService也是对HTTP请求的一次封装,效率上肯定会有损失,所以就不考虑用WebService了.    2.Socket,包括Java原生的Socket API和nio,本身都很好,效率也会不错,它们之间的区别大概就是资源占用上了.但是使用Socket的通信,有几个比较复…
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本教程针对的是已掌握Python语言基本用法并且掌握其任一Web框架的用户. 本教程使用的Python版本为3.5.0, Web框架为Tornado, IDE开发工具为PyCharm,整个开发过程是在Windows环境下测试开发,最终上线部署至centos服务器. 备注: (1) 如果您是python小白,建议参考 Pyth…
Filter 顺便看看,Android中过滤器是怎么实现的? 注释中提到,Filter一般通过继承Filterable实现 具体实现 这是SimpleAdapter出现的一个过滤首字母item的一个过滤器 private class SimpleFilter extends Filter { @Override protected FilterResults performFiltering(CharSequence prefix) { FilterResults results = new F…
客户端跟服务器交互的时候我们使用json实现 但是 在交互的时候除了传送json对象数据意外 我们还需要传输标志位等 比如我们现在的交互方式格式 对象 { "data": { "age": 29, "name": "wangzhiqiang", "sex": 1 }, "message": "ok", "status": 200 } 列表 { &q…
一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集.可以通过调用 require("fs") 来获取该模块.文件系统模块中的所有方法均有异步和同步版本. (1),文件系统模块中的异步方法需要一个完成时的回调函数作为最后一个传入形参. (2),回调函数的构成由调用的异步方法所决定,通常情况下回调函数的第一个形参为返回的错误信息. (3),如果异步操作执行正确并返回,该错误形参则为null或者undefined.如果使用的是同步版本的操作方法,一旦出现错误…
在Web服务中会有用户登录后的一系列操作, 如果一个客户端的http请求要求是用户登录后才能做得操作, 那么 Web服务器接收请求时需要判断该请求里带的数据是否有用户认证的信息. 使用Tornado框架开发Web服务, 框架里提供了tornado.web.authenticated的 decorator 的辅助开发者做用户登录认证, 即开发者在实现一个 handler(对应一个url资源, 继承于tornado.web.RequestHandler)时,该 url的资源操作需要有用户认证或者登录…
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处理能力和处理中的等待时间,达到提高服务能力的目的. 多线程的引入,容易为本来就略显复杂的 NIO 代码进一步降低可读性和可维护性.引入良好的设计模型,将不仅带来高性能.高可靠的代码,也将带来一个惬意的开发过程. 线程模型 NIO 的选择器采用了多路复用(Multiplexing)技术,可在一个选择器…
NIO 的选择器采用了多路复用(Multiplexing)技术,可在一个选择器上处理多个套接字, 通过获取读写通道来进行 IO 操作.由于网络带宽等原因,在通道的读.写操作中是容易出现等待的, 所以在读.写操作中引入多线程,对性能提高明显,而且可以提高客户端的感知服务质量.所以本文的模型将主要通过使用读.写线程池 来提高与客户端的数据交换能力. 如下图所示,服务端接受客户端请求后,控制线程将该请求的读通道交给读线程池,由读线程池分配线程完成对客户端数据的读取操作:当读线程完成读操作后,将数据返回…
首先抛出问题: 程序1---错误版本 import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class HttpSimpleServer { public void startServer() throws IOException { ServerSocket s…
Netty介绍: Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议.Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开发. “快速和简单”并不意味着应用程序会有难维护和性能低的问题,Netty是一个精心设计的框架,它从许多协议的实现中吸收了很多的经验比如FTP.SMTP.HTTP.许多二进制和基于文本的传统协议,Ne…
第1部分 TCP和UDP TCP:是一种可靠地传输协议,是把消息按一个个小包传递并确认消息接收成功和正确才发送下一个包,速度相对于UDP慢,但是信息准确安全:常用于一般不要求速度和需要准确发送消息的场合. UDP:是一种不可靠的传输协议,常用于视频直播.游戏等及时性比较强的场景. 进行相关编程可以查询API手册. 第2部分 多人聊天室 下面是利用Java的TCP协议的API实现多人聊天室的案例代码: 服务端: 运行在服务端的SeverSocket主要负责: 1 向系统申请服务端口号,客户端是通过…
作者:林冠宏 / 指尖下的幽灵 前序: 路印协议功能非常之多及强大,本文只做入门级别的分析. 理论部分请细看其白皮书,https://github.com/Loopring/whitepaper 实际代码部分:https://github.com/Loopring/relay 目录 路印协议 一般应用于 作用 模块组成部分 交易流程 代码核心业务逻辑 relay源码概述 路印协议 简称Loopring 和 0x.Kyber 一样,是区块链应用去中心化交易协议之一,协议明确了使用它来进行买卖交易的…
okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿.就是唯一可以更新UI的线程.这个只是点会在给okHttp填坑的时候用到.而且,这个内容本身在日常的开发中也经常用到,值得好好学一学. okHttp发起同步请求 第一个列子是一个同步请求的例子. private void performSyncHttpRequest() { OkHttpClient…
第七章 异常处理 * 异常处理机制中的try-catch * 语法: * try{ * 代码片段 * }catch(XXXException e){ * 当try中的代码片段出现了XXXException后的处理代码 * } * try中的代码片段报错行以下的代码都不会运行* 应当有一个好习惯,在最后一个catch处捕获Exception* 这样能避免因为一个未捕获的异常导致程序中断 * finally * finally块是异常处理机制的最后一块,只能跟在最后一个catch之后或直接跟在try…
TCP通信(小程序) server端: package chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; imp…
代码地址如下:http://www.demodashi.com/demo/11715.html 教之道 贵以专 昔孟母 择邻处 子不学 断机杼 随着苹果新品iPhone x的发布,正式版iOS 11也就马上要推送过来了,在正式版本到来之前比较好奇,于是就去下载了个Beat版本刷了下,感觉还不错.WWDC 2017推出了机器学习框架和ARKit两个比较有意思的东西,本想先来学习学习AR,无奈手机刚好不在版本中.....真受伤,只好来学习学习机器学习了,下面进入正题吧. 先看看大概效果吧 什么是机器…