- 博客(41)
- 资源 (1)
- 收藏
- 关注

翻译 Rust编程(八)复合类型 元组,数组
如果你想让你的数据被分配到栈上而不是堆上,数组比较有用(后面我们将更多讨论栈和堆),然而你必须总是确定数组的长度。在许多低级语言中,不会执行此类检查,并且当您提供不正确的索引时,可以访问无效内存。每一个数字在元组中都有类型,不同的类型在元组中类型可以不同。你运行下面的第二章的代码,你输入一个超过数组长度的索引。在此例中,first变量的值为数组a的第一个元素,second为数组中的第二个元素。和下面代码相同,上面是一个方便的版本。我们也可以通过.(点运算符)直接访问元组中的元素,点号后面跟的是元素索引。
2022-11-24 13:20:49
337

翻译 Rust编程(六)数据类型-整型
Rust中的每个值都有一个特定类型,这是告知Rust数据是哪种类型,便于Rust怎样处理数据。我将看到两种数据型分类:标量和组合记住Rust是一个静态类型语言,这意味着它必须在编译时知道所有变量的类型。编译器通常推断出我们想使用什么类型的值并且怎样使用它。如果有一些可能的类型,比如将String转换成数值类型,如在第二章猜数字的游戏中,我们必须添加类型声明,像下面这样:(这里的意思是,在声明一个变直接赋值时,变量可以不指定类型,但在转型时必须指定)你将看到其他数据类型的不同类型注解。
2022-11-24 11:41:07
333

翻译 Vert.x Web Client (三)复用请求
发送方法可以安全调用多次,达到这个目的可以如下配置实现重用HttpRequest对象小心HttpRequest实例是可变的。因此在修改缓存实例之前调用copy方法。
2022-11-24 10:58:02
378

翻译 Vert.X Web Client (二)
在OAuth 2.0,一个请求中包含表单请求头Authorization:Bearer , bearerToken是认证服务器分发的持票人Token用来保护资源的访问。在Basic Http认证中,一个请求中保含表单头字段:Authorization:Basic ,id和密码字段采用Base64编码并用:号进行分隔。请求头是MultiMap实例,MultiMap提供了添,设置,和移除头的方法。可以使用multi-map向请求添加请求头。
2022-11-24 10:11:33
222

翻译 Vert.x Web Client (一)
Vert.x Web Client使用vert.x core的核心API ,所以了解HttpClient基本概念是有用的。
2022-11-24 09:50:35
653

原创 Rust编程(四)猜数字游戏
标准输入读取一行,expect()部分处理可能的错误。Cargo.toml 添加对rand包的引用。将会显示下载依赖包并进行编译。Shell中运行以下命令。试运行查看是否创建成功。
2022-11-23 12:34:07
503

翻译 Rust编程(五)变量的可变性
当我们试图改变一个被设计成不可变变量的值时,运行时错误是很重要的,因为这是导致Bug的情况。如果我们的代码的一部分基于一个值永远不会改变的假设而运行,而我们的另一部分代码改变了这个值,那么代码的第一部分就有可能无法完成它的设计任务。正如你在第二章猜数字游戏中看到的,可以用相同的名字声明一个变量。虽然变量在默认情况下是不可变的,但您可以像第2章中所做的那样,通过在变量名称前面添加mut来使其可变。mut和遮蔽另外的不同是,当我们再次用let关键字时,我们创建了一个新变量,我们可以重用变量名并改变其类型。
2022-11-23 12:13:31
349

翻译 Rust 编程 (三)cargo应用
您的Rust之旅已经开始了!使用rustup安装最新稳定版本的Rust更新到更新的Rust版本打开本地安装的文档编写并运行“Hello world!”直接使用rustc的程序使用Cargo的创建并运行新项目现在是构建一个更丰富的程序以习惯阅读和编写Rust代码的好时机。因此,在第2章中,我们将构建一个猜谜游戏程序。如果您希望从学习Rust中常见的编程概念如何工作开始,请参阅第3章,然后返回第2章。
2022-11-23 11:15:46
1539

翻译 Rust编程语言Helloworld (二)
你已经安装了Rust,现在让我们写出第一个Rust程序。当学习一个新的语言时,在屏幕上打印Hello,Worldr!的一小段程序是一个传统。所以让我们开始吧。注意:本书假序曲你基本熟悉命令行。Rust并不指定需要特定的编辑工具编写代码,所以如果你喜欢使用集成IDE代替命令行,你可使自由使用你最爱的IDE。一些IDE开始支持Rust,查看IDE文档获取详细信息。Rust团队已经开始构建rust-analyzer去支持Rust。
2022-11-23 09:58:50
238

翻译 Rust编程语言接触 (一)
Rust用这个程序将编译的输出到一个文件。一个C编译器也是有用的,因为一些通用的Rust包依赖于C代码并且也需要一个C编译器。换句话说,你用下面步聚安装的一些较新的,稳定的Rust版本应能按你的期望工作。你安装某些点,你将收到需要安装VisualStudio2013或较新MSVC构建工具的提示。这个命令下载一个脚本并且安装rustup工具,rustup将安装最新的稳定版Rust。如果所有的都正确,并且Rust不正常,有很多地方你可以得到帮助。
2022-11-22 19:35:05
254

翻译 Vert.x web模块(八) 一个真实案例
到目前为止,您已经学习了如何使用Oauth2处理程序,但是您会注意到,对于每个请求,您都需要进行身份验证。这是因为处理程序没有状态,并且在示例中没有应用状态管理。尽管对于面向API的端点建议没有状态,例如,对于面向用户的端点使用JWT(我们稍后将介绍这些),我们可以将身份验证结果存储在会话中。Oauth2与JWT混用一个提供者使用jwt tokens作为访问token,在想混合基于客户端认证和API认证,这是符合RFC6740标准且十分有用的。
2022-11-22 12:06:04
584

翻译 Vert.x Web模块(二)
上下文数据可以用RoutingContext维护和使用上下文数据,此数据将在请求生命周期的所有处理器之间共享。这是一个例子描述了,在某个处理器里向上下文中设置了数据,在接下来的处理器中接收数据。可用RoutingContext中的put方法添加一些对象,get方法获取一些对象。发送到/some/path/other路径的请求将匹配两个路由。router.get("/so
2016-09-27 10:24:27
3795

翻译 Vert.x Web 模块(一)
Vert.x-Web是用Vert.x创建Web应用程序的一组构建模块的集合。可以将Vert.x想象成构建现代,伸缩we应用的瑞士军刀。Vert.x核心模块提供相当低层功能用于处理HTTP,和应用充分使用的功能。Vert.x-Web构建于Vert.x核心模块之上,用于提供更丰富的构建真实web应用程序的功能集,并更加简单。 对于使用Vert.x 2.x的Yok
2016-09-27 10:20:44
2831

翻译 Vert.x内核模块 结束
Vert.x命令行接口APIVert.x内核模块提供一个用向程序传递命令行参数的API。此API也可以打印出命令行工具可获取选项的详细帮助信息。既使此特性与Vert.x核心主题相差甚远,此AP在fat jar的Launcher类中使用,并且也在vertx命令行工具中使用。此外此API支持多语言(在支持的语言中使用)并且在Vert.x Shell中被使用。Vert
2016-09-20 10:01:29
1558

翻译 Vert.x 内核模块 集群管理(十八)
集群管理器在Vert.x中群集管理器被用于多个功能,包括:发现和编组群集中Vert.x节点成员。维护全局主题订阅列表(因为需要知道哪个节点对哪个事件总线地址感兴趣)分布式映射支持分步式锁分步式计数器集群管理器不处理事件总内节点传输这是Vert.x直接通过TCP连接完成的。在Vert.x分布环境下默认
2016-09-20 09:56:41
5915
2

翻译 Vert.x核心模块(十七) 命令行
Vertx的命令行vertx命令被用于命令行与Vert.x进行交互。这是在运行Vert.x的 verticle的主要方式。为了运行命令行,需要下载并安装Vert.x发行版,并添加安装路径中的bin路径到PATH环境变量。同时必须确认安装了Java8的JDK,并在命令行可执行。注意:需要JDK是为了支持运行时编译java代码。 运行Verticles可以使用vertx run命令从命
2016-09-15 19:24:35
5057

翻译 Vert.x 核心模块(十六) 流 线程安全 SPI OSGi
流(Stream)在Vert.x中有一些对象允许读取或写入数据。在以前的版本中,stream.adoc包是唯一操作Buffer的包。从现在开始,流将不与任何Buffer藕合并且可与其他类别的对象协同工作。在Vert.x中,写调用会立既返回,内部对写进行队列排序。因此很难明白是向一个对象写快还是直接向底层资源写快,写队列可以无限扩充,最终导致内存耗尽。为了解决这个问题,在Vert.x API
2016-09-15 19:22:51
3489

翻译 Vert.x 核心模块 DNS(十五)
DNS客户端通常你将发现处在一个需要以异步方式获取DNS信息的状况。不幸的是,这在JVM自身的API不可能做到。正因为此,Vert.x提供了自己完全异步的DNS解析。为了获取DnsClient实例,可以通过Vert.x实例进行创建。DnsClient client = vertx.createDnsClient(53,"10.0.0.1");注意,可通传入InetSocketAddre
2016-09-15 19:19:03
1972

翻译 Vert.x 核心模块 UDP数据报访问(十四)
数据报SOCKET(UDP)用Vert.x中的用户数据报文协议是很好的。UDP是无连接传输这基本意味着你不必保存远程端点的连接。相返可以接收或发送数据包,而远程地址包含在数据包中。除了UDP没有TCP一样使用安全,这就是说,采用UDP发送数据不保证发出的数据报文一定会被收到。仅有的保证是要么完整收到要么没收到。也就是说不能发送超过网卡MTU大小的数据,这是因为每个数据报将被作为一个包发送。必须
2016-09-14 10:28:14
4287
1

翻译 Vert.x核心模块 访问文件系统(十三)
用Vert.x使用文件系统Vert.x的FileSystem对象提供了一些维护文件系统的操作。每一个Vert.x实例都有一个文件系统对象,用fileSystem获取。每一个操作都提供了阻塞和非阻塞版本。非阻塞版本执行器在操作完成或出现错误时被调用。这里有一个异步复制文件的例子:FileSystem fs = vertx.fileSystem(); // Copy file from
2016-09-14 10:23:40
8000

翻译 Vert.x内核模块 共享数据,分布式锁,集群范围计数器(十二)
用Vert.x使用共享数据共享数据包含允许,在应用的不同部分,或者在同一个Vert.x实例的不同应用中,或者集群中的不同Vert.x实例中安全共享数据的功能。共享数据包括本地共享映射表,分布的,群集范围的映射表,异步群集范围的锁和异步群集范围的计数器。重要:分布式数据结构的行为依赖于你使用集群管理器。在面对网络分区时,备分(复制)和行为由集群管理器及其配置进行定义。参考集群文档以及下面的框
2016-09-14 10:20:34
3294

翻译 Vert.x 核心模块 HTTP websocket(十一【6】)
客户端WebSocketVert.x之HttpClient支持WebSockets.可以调用任一websocket操作并提供一个处理器连接一个WebSocket到客户端。在连接成功后,处理器将会得到WebSocket实例参数并且被调用。client.websocket("/some-uri",websocket -> { System.out.println("Connected!")
2016-09-13 14:27:08
3687
1

翻译 Vert.x核心模块 HTTP客户端推送 (九【4】)
客户端推送服务器推送是HTTP/2的一个新特性,此特性使得可以在单一客户端请求中可以并行发出多个响应。推送处理器可以被设置到请求上用来接收服务器推送的请求/响应。HttpClientRequest request =client.get("/index.html", response -> { //Process index.html response}); // Set
2016-09-13 09:35:16
4034

翻译 Vert.x 内核模块 编写HTTP服务器(七【2】)
获取定制的HTTP/2帧HTTP/2是HTTP请求响应模型多帧协议。协议允许其他类型帧发送和接收。为了接收定制帧,应访在请求上应用customFrameHandler。这会在每当定制帧到达时会被调用。这里有个例子:request.customFrameHandler(frame -> { System.out.println("Received a frame type=" + f
2016-09-13 09:30:36
2649

翻译 Vert.x 内核模块 编写HTTP服务器(六【1】)
编写HTTP服务器与客户端Vert.x使编写非阻塞的HTTP客户端和服务器更加容易。Vert.x支持HTTP/1.0,HTTP/1.1,HTTP/2等协议。HTTP基本的API与HTTP/1.x和HTTP/2是相同的,为了处理HTTP/2协义需要获取特殊的API。创建HTTP服务器使用默认的配置创建HTTP服务器是最简单的方法:HttpServer server = vertx.c
2016-09-13 09:26:39
2022

翻译 Vert.x 内核模块 Buffer( 四 )
在Vert.x中大多数数据会转换成缓存器。一个缓存器是零个或多个字节的序列,这个序可以被读写,并且在需要的时候自动扩展容纳写入的字节。可以将缓存器想象成一个智能字节数组。
2016-09-13 09:16:01
1544

翻译 Vert.x内核模块 内核组件 EventBus (三)
一件总线是Vert.x中令人兴奋的系统。在每个Vert.x实例中都有一个单线程的事件总线,可以使用evenBus方法包括进来。通过事件总线,应用程序中的不同部分可以彼此通迅,也不用关心用什么语言编写,是否在同一个Vert.x实例或在不同的Vert.x实例。甚至可以在浏览器的客户端javaScript中被桥接到同一个事件总中进行通迅。事件总线构建了一个点对点的分布式消息系统驱动着多个服务器节点和多个浏览器。事件总线支持发布/定阅,点对点,请求响应得模式。事件总线API非常简单。只涉及注册或解注册处理器和发送,
2016-09-13 09:13:17
3977

翻译 Vert.x 核心模块 内核组件Verticle(二)
Vert.x俱有简单,伸缩,actor-like部署和并发模型的创新,这样可以省去自己去实现。这个模型是完全可选的,Vert.x不强迫你使用这种方式创建应用,如果你不想那样做。Verticle是一个代码块,此代码块由Vert.x部署和运行。一个Vert.x实例维护N个事件循环线程(默认N为CPU核数*2)。Verticles可以使用Vert.x支持的任一语言编写,并且单一应用可以包含用多种语言编写的verticles.
2016-09-13 09:10:34
6489

翻译 Vert.x 核心模块 特性介绍(一)
Vert.x内核是小而轻量的,你仅使用你想要用到的。它也是全部被嵌进你现存的应用中。我们不强迫你以特别的方式结构化你的应用去使用Vert.x。你可以在任何其他Vert.x支持的编程语言中使用Vert.x内核,但是有点较酷的是,我们不强迫你直接使用JAVA API,javascript或者Ruby,毕竟不同的语言有不同的方式与语法,并且强迫在Ruby中使用java语法显得奇怪。相返,我们自动为每个语言生成语和java API相同的语言习惯。从现在开始,我们次使用内核替代Vert.x核心模块
2016-09-13 09:06:35
5613
翻译 Rust编程 (七)数据类型-浮点型,布尔型,字符型
Rust有两种基本的浮点类型,是f32和f64,分别代表32类和64位大小,默认浮点类型为f64,因为在现代的cpu上,它的速度与f32大致相同,但具有更高的精度。所有的浮点类型都是有符号的。下面代码展示浮点类型的用法浮点类型遵循IEEE-754标准,f32是单精度浮点类型f64是双精度浮点类型。
2022-11-24 12:30:42
789
翻译 Vert.x Web模块(九)
有些是松散的,允许任何方法,大多数方法只允许一个小而得体的集合,有些则只允许GET和POST。这种限制的原因各不相同:浏览器或客户端的限制,或者是非常严格的公司防火墙。为了解决这个问题,我们创建了X-HTTP-METHOD-OVERRIDE HTTP头作为解决方法。通过使用GET/POST发送请求以及请求应该在X-HTTP-method-OVERRIDE HTTP头中真正处理的方法,服务器应该识别头并重定向到适当的方法。因为这段代码将重定向请求,避免不必要的请求是明智的。
2022-11-22 12:27:00
171
翻译 vert.x web模块(七)
CSRF跨站请求伪装CSRF也叫作XSRF,这是一项用来获取未认证站点私有数据的一种技术。vert.x-web模块包含CSRFHandler处理器,你可以使用它阻止伪装的请求。对于每个请求,CSRFHandler会将一个唯一个的token添加到响应头。客户端再请求时会将此token设置在请求头返回给服务器。因此需要发送需要的cookie并且cookie处理器必须放在路由之前。当开发非单一页面应用时,主要依赖User-Agent头去执行Post动作。请求头不能在HTML表单中指定。
2022-11-22 11:38:02
330
翻译 vert.x web模块(三)
使用认证处理器重定向,如果一用户试图访问一个被保护的资源并且用户未登录,那么用户会被重定向到一个登录页面。用户填写登录表单并提交。服务器端处理器进行用户认证,如果认证成功,用户将会定向回原资源。为了使用重定用认证,需要配置一个RedirectAuthHandler处理器代替basic Authentication handler处理器。并将在实际登录页面中配置认证URL处理认证请求。vert.x提供了一个默认的FormLoginHandler。
2022-11-22 10:34:32
257
翻译 Vert.x Web模块(六)
SockJSSockJS是一个客户端JavaScript库和协议,SockJS提供类似WebSocket的接口,此接口允许与SockJS服务器建立连接,而不论浏览器或者网络允许真实的WebSockets。SockJS通过支持浏览器与服务间的多样传输来完成这样工作。并在运行时根据浏览器和网络的能边选择其中之一。所有这一切对你都是透明的,你只简单看到类似WebSocket接口的工作
2016-10-08 13:24:08
3445
翻译 Vert.x Web模块(五)
模板Vert.x-Web通过支持一些流行的模板引擎,提供了动态页面生成的能力,可以简单添加。模板引擎用TemplateEngine进行描述。用render方法进行模板渲染。使用模板最简单的方法不是直接调用模板引擎,而是使用TemplateHandler处理器。此处理器为你的HTTP请求中的路径,调用调用模板引擎。默认模板处理器在叫templates路径下查找模板。此路径是可设置
2016-10-08 13:20:33
2647
翻译 Vert.x Web模块(四)
配置缓存静态处理器默认设置缓存头使得浏览器有效缓存文件。Vert.x-Web设置的头有cache-control,last-modified和date。cache-control被默认设置为max-age=86400,这代表一天。如果需要,可以用setMaxAgeSeconds方法进行设置。如果浏览器如果发送带有if-modifies-since头的GET或者HEAD请求,
2016-10-08 13:18:43
1394
翻译 Vert.x Web模块(三)
认证/授权Vert.x有一些创新的处理器用于认证和授权。 创建一个认证处理器为了创建一个认证处理器,需要一个AuthProvider的实例。认证提供者被用于用户的认证和授权。Vert.x在vertx-aut项目中提供了多个认证提供者创新实例。关于认证提供者的及怎样使用和配置的完整信息,请咨询认证文档。这是一个用认证提供者创建基本认证处理器的例子:
2016-10-08 13:16:41
2229
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人