第五章: 超越回调 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖了 回调及其限制,如网关/边缘服务示例所示 Futures 和 Promise - 链接异步操作的简单模型 反应式扩展 - 一种更强大的模型,特别适合组合异步事件流 Kotlin 协程 - 对异步代码执行流程的语言级支持 在开发响应式应用程序时,您将需要编写各种各样的业务逻辑,并不是所有的逻辑都很容易用异步形式表示。虽然回调是异步事件通知的一种简单形式,但它们很容易使异步代码变得复杂。 让我们看一个真实的例子,说明为什么回调并不总是最好的异步编程模型。 然后我们将探索 Vert.x 支持的多个选项。 5.1 组合异步操作:边缘服务示例 我们将以一个“边缘服务”为例来说明如何使用不同的异步编程模型组合异步操作。 边缘服务也经常被称为 API 网关。 它是一种服务,作为其他服务的外观,因此请求者只需处理一个服务接口,而不必与每个服务进行对话。 边缘服务还可以执行其他任务,例如数据转换和与其他服务交互,因此它不仅仅是方便地聚合来....
第四章: 异步数据和事件流 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖了 为什么流是事件之上的有用抽象 什么是背压,以及为什么它是异步生产者和消费者的基础 如何从流中解析协议数据 到目前为止,我们一直在使用 callbacks 处理来自各种来源(例如 HTTP 或 TCP 服务器)的事件。回调函数允许我们一次推理一个事件。 处理来自TCP连接、文件或HTTP请求的传入数据缓冲区并没有太大的不同:您需要声明一个回调处理程序来响应每个事件并允许自定义处理。 也就是说,大多数事件需要作为一个系列而不是作为孤立事件来处理。处理HTTP请求正文就是一个很好的例子,因为需要组装几个不同大小的缓冲区来重新构建整个正文负载。由于响应式应用程序处理非阻塞I/O,高效和正确的流处理是关键。在本章中,我们将看看为什么流会带来挑战,以及Vert.x如何提供全面统一的流模型。 4.1 统一的流模型 Vert.x 提供跨多种类型资源的流的统一抽象,例如文件、网络套接字等。 read stream 是可以读取的事....
第三章: 事件总线:Vert.x 应用程序的支柱 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖了 事件总线是什么 如何通过事件总线进行点对点、请求-回复 和 发布/订阅 通信 用于通过网络进行verticle到verticle通信的分布式事件总线 上一章介绍了verticles。 一个 Vert.x 应用程序由一个或多个 Verticle 组成,每个 Verticle 形成一个处理异步事件的单元。 通常通过功能和技术问题来专门化 Verticle,例如有一个 Verticle 用于公开 HTTP API,而另一个 Verticle 用于处理数据存储。 这种设计还鼓励部署给定 Verticle 的多个实例以实现可扩展性目的。 我们尚未介绍的是verticles如何相互交流。 例如,如果较大的Vert.x应用程序要执行任何有用的事情,则HTTP API Verticle需要与数据存储verticle交谈。 连接verticles并确保它们能够合作是“事件总线”的作用。在构建响应式应用程序时....
第二章: Vert.x的基本处理单元-Verticles 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖了 什么是 verticles 如何编写、配置和部署 verticles Vert.x线程模型 如何混合Vert.x和非Vert.x线程 简单地说,verticle是Vert.x中的基本处理单元。verticle的作用是封装一个处理事件的“技术功能单元”,例如公开HTTP API和响应请求、在数据库之上提供存储库接口或向第三方系统发出请求。与Enterprise JavaBeans等技术中的组件一样,verticle也可以被部署,并且它们有一个生命周期。 异步编程是构建响应式应用程序的关键,因为它们必须具有伸缩性,而verticle是Vert.x中结构化(异步)事件处理代码和业务逻辑的基础。 2.1 编写一个verticle 如果您熟悉actor并发模型,您将发现Vert.x的verticle和actor之间的相似之处。简单地说,在actor模型中,自治实体(actor)通过发送和响应....
第十三章: 最后说明:容器原生的Vert.x 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖 使用Jib高效地构建容器图像 配置Vert.x集群以在Kubernetes集群中工作 在Kubernetes集群中部署Vert.x服务 使用Skaffold和Minikube进行本地开发 公开运行状况检查和度量 到目前为止,您应该对什么是响应式应用程序有了深刻的理解,以及Vert.x如何帮助您构建可伸缩的、资源高效的和有弹性的服务。在本章中,我们将讨论一些与在Kubernetes集群容器环境中部署和操作Vert.x应用程序相关的主要问题。您将学习如何准备Vert.x服务以便在Kubernetes中良好地工作,以及如何使用有效的工具打包容器映像并在本地运行它们。您还将了解如何公开运行状况检查和指标,以便在容器环境中更好地集成服务。 这一章是可选的,因为这本书的核心目标是教会你自己反应式的概念和实践。尽管如此,Kubernetes仍然是一个流行的部署目标,并且值得学习如何使Vert.x应用程序在这种....
第十二章: 通过负载和混乱测试实现响应性 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖 用Locust模拟用户 使用Hey负载测试HTTP端点 使用Pumba进行混乱测试 通过显式超时、断路器和缓存来减少故障 现在,我们涵盖了1万步挑战应用程序的所有重要技术部分:如何构建Web API,Web应用程序和边缘服务,以及如何使用数据库并执行事件流处理。 通过使用Vert.x的异步和响应式编程,我们可以期望形成该应用程序的一组服务是 响应式:当工作负载增长时可伸缩,当故障发生时具有弹性。 我们构建的服务实际上是响应式的吗?现在让我们通过测试和实验来发现这一点,并看看我们可以在哪些方面做出改进。 为此,我们将使用负载测试工具来强调服务和测量延迟。然后,我们将使用混乱测试工具添加失败,以了解这是如何影响服务行为的,我们将讨论修复我们发现的问题的几种选项。您也可以在自己的项目中应用此方法。 软件版本 本章使用以下工具版本编写和测试: Locust 1.0.3 Python 3.8.2 Hey 0.....
第十一章: 端到端的实时反应式事件处理 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖 结合RxJava操作符和Vert.x客户端来支持高级处理 使用RxJava操作符在事件流上执行内容充实和聚合数据处理 将Vert.x事件总线扩展到web应用程序,以统一后端和前端通信模型 在流处理设置中管理状态 在本章中,我们将探索高级反应式流处理,其中应用程序状态会根据事件进行实时更改。 通过对事件执行转换和聚合,我们将计算有关在更大的 1万 步应用程序中发生的事情的实时统计信息。 您还将了解事件流如何通过在 Vert.x 事件总线保护伞下统一 Java 和 JavaScript 代码来影响实时 Web 应用程序。 本章首先介绍使用 RxJava 运算符和 Vert.x 客户端的高级流处理。 然后,我们将讨论通过事件总线连接的实时 Web 应用程序这一主题,最后我们将介绍在连续事件的上下文中正确处理状态(尤其是 initial 状态)的技术。 11.1 使用 Kafka 和 RxJava 进行高级流....
第十章: 使用数据库进行持久状态管理 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 本章涵盖 使用 MongoDB 存储数据和验证用户 从 Vert.x 使用 PostgreSQL 与数据库交互的事件驱动服务的集成测试策略 响应式应用程序倾向于无状态设计,但是状态必须在某个地方进行管理。 数据库在大多数应用程序中都是必不可少的,因为需要存储、检索和查询数据。 数据库可以存储各种数据,例如应用程序状态、事实或用户凭据。 市场上有不同类型的数据库:一些是通用的,而另一些则专门用于某些类型的用例、访问模式和数据。 在本章中,我们将通过深入研究用户和活动服务的实现来探索 Vert.x 的数据库和状态管理。 这些服务将允许我们使用面向文档的数据库 (MongoDB) 和关系数据库 (PostgreSQL)。 您还将了解如何使用 MongoDB 对用户进行身份验证,以及如何为数据驱动的服务编写集成测试。 10.1 数据库 和 Vert.x Vert.x 提供了广泛的客户端来连接数据源。 这些客户端包含与服务....
第一章: Vert.x 异步编程的基础知识 翻译: 白石(https://github.com/wjw465150/Vert.x-in-Action-ChineseVersion) 构建反应式系统的第一步是采用异步编程。基于阻塞I/O的传统编程模型的可伸缩性不如使用非阻塞I/O的模型。用更少的资源服务更多的请求是非常有吸引力的,那么问题在哪里呢?这里确实存在一个小问题:如果您从未接触过异步编程,那么它是一种重要的范式转换! 本书这部分的章节将通过使用Vert.x工具包教你异步编程的基本概念。使用Vert.x思考异步操作绝对是可行的(而且很有趣!),我们将探讨Vert.x应用程序的主要构建块。 本章涵盖了 Vert.x 是什么 为什么不能避免分布式系统 编程资源高效的网络应用程序的挑战 什么是异步和非阻塞编程 什么是响应式应用程序,以及为什么异步编程还不够 Vert.x 的替代品 我们开发人员生活在一个充满流行语、技术和实践炒作周期的行业。 我长期教大学生设计、编程、集成和部署应用程序的要素,我亲眼目睹了新手在当前技术的狂野海洋中航行是多么的艰难。 Asynchronous 和 reac....
使用gradle最大的坑应该就是墙了吧! 创建一个gradle想他会给你指定某些版本如图 将 bin 改为 all ,因为下完bin之后还需要下载src。如果网速不好就等着哭吧 复制链接,使用迅雷下载 这样可以跑满你的网速 将下载的文件放到idea自动下载的目录点击gradle他会自动解压 注意这两个脱线位置 剩下的就是等jar包自己下载了 如果上面的方法不行 将distributionUrl 改为 Index of /gradle/ (tencent.com)这里面的地址再转一下
设置鼠标左键选中即复制,右键粘贴。 选择【工具】-【选项】-【键盘和鼠标】,[ 向右按钮 ] 改为 [ 粘贴剪贴板内容 ],下面勾选将选定的文本自动复制的剪贴板即可。
下载地址:PotPlayer下载 - PotPlayer中文网 (potplayercn.com) PotPlayer64.reg
配置 { "$help": "https://aka.ms/terminal-documentation", "$schema": "https://aka.ms/terminal-profiles-schema", "actions": [ { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, { "command": "find", "keys": "ctrl+shift+f" }, { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }, { "command": { "action": "closeTab" }, "keys": "f4" }, { "command": { "action": "clearBuffer", "clear": "....
创建证书 点击 Main Menu | Build | Generate Signed Bundle / APK… 好了!
手机设置 首先打开 【蓝牙共享网络】 移动网络》移动网络共享》蓝牙共享网络 电脑连接手机 略 链接windows 链接之后 跳转到【控制面板\硬件和声音\设备和打印机】 完成~
不太明白什么个原理,正在收集资料 coturn穿透服务器搭建与测试——小白入门-CSDN博客 烂泥:openvpn tun模式下客户端与内网机器通信-烂泥行天下 (ilanni.com) Ubuntu20.04 安装 libevent_libevent2安装-CSDN博客 安装和配置 WebRTC 的 STUN/TURN 服务 coturn | 代码手工艺人 (xueshi.io) 部署私有的turn/stun服务器_coturn服务架构图-CSDN博客 无公网IP搭建openNPV虚拟网配置详细过程,及外网的连接访问 - nat123内网穿透使用交流 免费端口映射工具_内网穿透软件_内网映射外网教程交流_nat123论坛客服 (natbbs.com)
函数描述 annotated(“annotation qname”)使用驻留在指定位置的注释创建类型符号。 例如,请参见迭代组中的活动模板。 anonymousSuper()为Kotlin对象表达式建议一个超类型。 arrayVariable()建议当前作用域中适用的所有数组变量。 例如,请参见迭代组中的活动模板。 blockCommentEnd返回在当前语言上下文中指示块注释结束的字符。 blockCommentStart返回在当前语言上下文中指示块注释开始的字符。 camelCase(String)将字符串转换为camelCase。 例如,camelCase(my-text-file)、camelCase(my text file)和camelCase(my_text_file)都返回myTextFile。 capitalize(String)将参数的第一个字母大写。 capitalizeAndUnderscore(sCamelCaseName)将作为参数传递的CamelCase名称的所有字母大写,并在各部分之间插入下划线。例如,大写和下划线(FooBar)返回FOO_BAR。 c....
电脑电源所说的金牌、银牌、铜牌是什么意思?详细介绍电源80PLUS认证 很多小伙伴购买台式机电源的时候会看到一个有些电源标注着金牌、铜牌等,这里对以下用户比较关系的问题进行讲解。 这些金牌和铜牌到底什么意思呢? 金牌电源一定比铜牌电源更好吗? 为了省电买更高规格80PLUS认证的电源合适吗? 没有80plus认证的电源可以买吗? 想了解金牌和铜牌什么意思,首先要了解下电源的转化率 台式机电源的作用:将家里220V交流电转化为12V、5V、3V的直流电供给CPU、显卡、内存、硬盘等部件 我们的家用电是220V的交流电,而我们电脑中的各种部件,包括CPU、显卡、内存、硬盘等是不能直接使用220V的交流电的,而是需要12V、5V、3V等这样的直流电,这就需要我们的台式机电源把家里220V的交流电给转化成台式机各种部件需要的电压,而完成这些转化是需要各种电路结构的,这些电路结构中会用到各种元器件,比如,电容,开关管,变压器等各种元器件,这些元器件本身都是存在电阻的,这也就意味着电源本身也会耗电,**这部分电能会以热量的形式散发掉,**举个例子:你给你的电源输入一个300w的电量,但是输出端可能....
在公司中难免会遇到内外网的问题,有些公司还不能上外网。这个时候我们就需要在搞个网卡(手机共享网络)来让电脑上网了,之前配置了好久也没解决这个问题。后来发现是我的想的不对不理解路由的配置,其实很简单;只需要几条命令就可以! 第一步找到两个网卡的ip地址和网格 网卡1 网卡2 查看路由表 命令route print -4内容如下: 可以看出有两个主要网卡,wifi和NDIS这两个:wifi是公司内网是10段的,NDIS是我无线网卡192段的。这里需要设置的是让内网的访问都走内网,其它的请求走外网。 操作 首先需要把这个0.0.0.0的这个干掉route delete 0.0.0.0干掉后就上不了外网了,如果内网没配置的话也上不了了。 添加外网的路由命令route add 0.0.0.0 mask 0.0.0.0 192.168.0.1这里192.168.0.1是我的网关 添加其它网段需要访问路由比如:内网需要访问10.191.64.0这个网段就需要添加route add 10.191.64.0 mask 255.255.255.0 10.191.64.254这条命令,其它网段也一样都要指定....
chrome-search://theme/IDR_THEME_NTP_BACKGROUND@2x 后面的@2是尺寸 @1 1080P @2 4K @3 8K 其它的尺寸自己可以试一下