自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (2)
  • 收藏
  • 关注

原创 下载bee找不到bee.exe

bee安装报错记录

2022-07-12 01:36:06 519 1

原创 Lager使用说明

概述Lager(开源)是Erlang的日志框架。它的目的是在erlang应用程序中提供一种更传统的方式来执行日志记录,这种方式可以很好地与logrotate和syslog等传统UNIX日志记录工具兼容。特点更细粒度的日志级别 (debug, info, notice, warning, error, critical, alert, emergency)(调试、信息、通知、警告、错误、关键、警报、紧急) Logger calls是使用parse transform进行转换,以允许捕获Modul

2021-12-13 15:44:00 1637

原创 Cowboy2.8 - 函数参考

Cowboy函数参考名称cowboy -小型、快速、现代的Erlang/OTP HTTP服务器描述Cowboy是Erlang/OTP的HTTP服务器,支持HTTP/1.1、HTTP/2和Websocket协议。Cowboy的目标是提供一个完整的HTTP栈。这包括HTTP rfc的实现,也包括任何直接相关的标准,如Websocket或Server-Sent Events。模块函数:cowboy(3)-监听器管理 cowboy_req(3)- 请求和响应 cowboy...

2021-04-08 15:35:15 195

原创 Cowboy 用户指南 (二十四) - Performance

性能本章描述了Cowboy的性能特征,并提供了提高应用程序性能的建议每个连接一个进程Cowboy 的第一个版本的特点是每个连接一个进程,而Cowboy 的当前版本的特点是每个连接一个进程加上每个请求一个进程。这对性能有负面影响,但为了为HTTP/1.1和HTTP/2(以及未来的HTTP版本)提供公共接口,这是必要的。仍然可以对每个连接使用单个进程,并通过实现流处理程序来处理请求,从而避免为每个请求创建额外的进程。这可以针对所有请求,也可以仅针对单个端点,具体取决于应用程序的需求。流处理程

2021-04-08 15:34:49 173

原创 Cowboy 用户指南 (二十三) - Middlewares

中间件Cowboy将请求处理委托给中间件组件。默认情况下,定义了两个中间件,用于路由和处理请求,在本指南的大部分内容中有详细介绍。中间件让您完全控制如何处理请求。您可以将自己的中间件添加到其中,或者根据需要完全更改中间件链。Cowboy将按照给定的顺序执行所有中间件,除非其中一个决定停止处理。用法中间件只需要实现一个回调:execute/2。它在cowboy_middleware行为中定义。这个回调函数有两个参数。第一个是Req对象。第二是环境问题。中间件可以返回以下三种不同的值

2021-04-08 15:34:18 166

原创 Cowboy 用户指南 (二十二) - Streams

流流是一组形成HTTP请求/响应对的消息。术语流来自HTTP/2。在Cowboy中,它也用于谈论HTTP/1.1或HTTP/1.0。它不应该与流请求或响应主体相混淆。所有版本的HTTP都允许客户端发起流。HTTP/2是唯一一个允许服务器的协议,通过其服务器推送功能。客户端和服务器发起的流在Cowboy中都经过相同的过程。流处理程序流处理器必须实现五个不同的回调。其中4个是直接相关的;一个是特别的。所有回调函数都会接收流ID作为第一个参数。它们中的大多数都可以返回要由Cowboy执

2021-04-07 17:16:45 178

原创 Cowboy 用户指南 (二十一) - Websocket handlers

Websocket 处理程序Websocket处理程序提供了一个升级到Websocket的HTTP/1.1连接的接口,并在Websocket连接上发送或接收帧。由于Websocket连接是通过HTTP/1.1升级机制建立的,所以Websocket处理器需要能够首先接收升级的HTTP请求,然后切换到Websocket并接管连接。然后,它们可以接收或发送Websocket帧,处理传入的Erlang消息或关闭连接。升级当接收到请求时,调用init/2回调函数。要建立Websocket连接,你必须切

2021-04-07 17:12:40 684

原创 Cowboy 用户指南 (二十) - The Websocket protocol

Websocket协议本章将解释什么是Websocket,以及为什么它是软实时Web应用程序的重要组件。描述Websocket是对HTTP的扩展,它模拟客户端(通常是Web浏览器)和服务器之间的纯TCP连接。它使用HTTP升级机制建立连接。Websocket连接是完全异步的,不像HTTP/1.1(同步)和HTTP/2(异步,但是服务器只能发起流来响应请求)。使用Websocket,客户端和服务器都可以在任何时间发送帧而不受任何限制。它比任何HTTP协议都更接近TCP。Websocket是

2021-04-07 16:31:56 270

原创 Cowboy 用户指南 (十九) - 设计资源处理程序

设计资源处理程序本章旨在为您提供一个问题列表,您必须回答这些问题才能编写一个好的资源处理器。它是一个可用的一步一步指南。服务服务会不可用吗?当它不可用时,我们能检测到它吗?例如,数据库连接问题可以及早检测到。我们也可能计划停用系统的全部或部分。实现service_available回调。服务实现了哪些HTTP方法?我们需要更多的标准OPTIONS,HEAD, GET, PUT, POST, PATCH和DELETE吗?我们不用这些东西吗?实现known_methods回调函数。资源处理程

2021-04-07 16:13:22 180

原创 Cowboy 用户指南 (十八) - REST流程图

REST 流程图本章将通过许多不同的图来解释REST处理程序状态机。请求可以遵循四种主要路径。一个用于方法OPTIONS;一个用于方法GET和HEAD;一为PUT、POST、PATCH方法;一个用于方法DELETE。所有路径都从“开始”图开始,如果资源存在,那么除了选项路径之外的所有路径都会经过“内容协商”图,或者可以选择的“条件请求”图。红色方块代表另一个图表。浅绿色方块表示响应。其他方块可能是Cowboy自己应答的一个问题或回调。如果回调函数未定义,绿色箭头往往指示默认行为。值旁边的星号

2021-04-07 15:47:31 468

原创 Cowboy 用户指南 (十八) - REST 处理程序

REST 处理程序REST在Cowboy中作为一个子协议实现。请求被作为一个状态机处理,其中包含许多描述资源和修改机器行为的可选回调。REST处理程序是处理HTTP请求的推荐方法。初始化首先,调用init/2回调函数。这个回调对所有处理程序都是通用的。为了在当前请求中使用REST,这个函数必须返回一个cowboy_rest元组。init(Req, State) -> {cowboy_rest, Req, State}.然后Cowboy将切换到REST协议并开始

2021-04-07 15:24:05 212

原创 Cowboy 用户指南 (十七) - REST 原理

REST 原理本章将尝试定义REST背后的概念,并解释什么使服务具有RESTful。REST常常与根据HTTP方法执行不同的操作相混淆,同时使用的方法比GET和POST方法更多。这充其量是一种高度误导。我们将首先尝试定义REST,并研究它在HTTP和Web上下文中的含义。要想更深入地解释REST,你可以阅读Roy T. Fielding's dissertation,因为它很好地解释了REST的来源和成就。REST 架构REST是一种客户机-服务器架构。客户端和服务器都有不同的关注点。.

2021-04-07 15:16:15 291 1

原创 Cowboy 用户指南 (十六) - Multipart requests

multipart(多部件)请求Multipart(多部件)源自MIME, MIME是一种扩展电子邮件格式的互联网标准。multipart消息是一个部件列表。一个部件包含报头和主体。部件的主体可以是任何媒体类型,并包含文本或二进制数据。部件可以包含多部件媒体类型。在HTTP上下文中,multipart最常与multipart/form-data媒体类型一起使用。浏览器使用它通过HTML表单上传文件。multipart/byteranges也很常见。它是用于从资源发送任意字节的媒体类型,使客户

2021-04-07 15:04:04 212

原创 Cowboy 用户指南 (十五) - Using cookies

使用cookiecookie是一种允许应用程序在无状态HTTP协议之上维护状态的机制。cookie是一种name/value存储,其中的名称和值以纯文本形式存储。它们会在浏览器关闭或延迟后过期。它们可以配置在特定的域名或路径上,并限制为安全资源(通过HTTPS发送或下载),或限制为服务器(不允许客户端脚本访问)。Cookie名称实际上是区分大小写的。cookie存储在客户端,并随着与存储它们的域和路径相匹配的每个后续请求一起发送,直到它们过期。这将产生不可忽略的成本。不应该认为cooki

2021-04-07 14:51:35 168

原创 Cowboy 用户指南 (十四) - Sending a response

发送一个响应必须使用Req对象发送响应。Cowboy提供了两种不同的发送响应的方式:直接发送或通过流传递主体。响应报头和响应主体可以预先设置。一旦响应或流应答函数被调用,响应就被发送。Cowboy还提供了一个发送文件的简化接口。它也只能发送文件的特定部分。虽然每个请求只允许一个响应,但HTTP/2引入了一种机制,允许服务器推送与响应相关的额外资源。本章还描述了这个特性在Cowboy中的工作原理。响应Cowboy提供了三个函数来发送整个回复,这取决于您是否需要设置报头和正文。在任何情况

2021-04-07 14:43:33 285

原创 Cowboy 用户指南 (十三) - Reading the request body

读取请求主体可以使用Req对象读取请求主体。Cowboy不会试图读取主体,除非有人要求。您需要调用主体读取函数来检索它。Cowboy不会缓存主体,因此只能读取一次。但是,你不需要阅读它。如果有主体存在但没有被读取,Cowboy会取消或跳过它的下载,这取决于协议。Cowboy提供了一些函数来读取主体原始信息,并从urlencoded或多部分主体中读取和解析。后者在它自己的章节中有讨论。请求主体的存在并不是所有的请求都伴随着一个主体。你可以用这个函数来检查请求体是否存在:c

2021-04-06 20:18:46 287

原创 Cowboy 用户指南 (十二) - Request details

请求对象Req对象是一个变量,用于获取关于请求的信息、读取请求体或发送响应。在面向对象的意义上,它并不是一个真正的对象。它是一个简单的映射,可以在调用cowboy_req模块的函数时直接访问或使用。Req对象是几个不同章节的主题。在本章中,我们将了解Req对象,并了解如何检索有关请求的信息。Direct accessReq映射包含许多文档化的字段,可以直接访问这些字段。它们是直接映射到HTTP的字段:使用的HTTP版本;有效的URI组件方案、主机、端口、路径和qs请求头;连接对端地址和端

2021-04-06 19:30:27 664

原创 Cowboy 用户指南 (十一) - Static files

静态文件Cowboy附带了一个可用于提供静态文件的处理程序。它是为了方便在开发过程中提供文件。对于生产中的系统,考虑使用市场上可用的多种内容分发网络(CDN)中的一种,因为它们是提供文件服务的最佳解决方案。静态处理程序可以为给定目录中的一个文件或所有文件提供服务。可以配置etag生成和mime类型。提供一个文件您可以使用静态处理程序为应用程序私有目录中的特定文件提供服务。这对于提供索引特别有用。例如,当客户端请求/ path时。配置的路径是相对于给定应用程序的私有目录的。下面的规则将

2021-04-04 22:22:55 259

原创 Cowboy 用户指南 (十) - Loop handlers

循环处理程序循环处理程序是一种特殊的HTTP处理程序,当响应不能立即发送时使用。处理程序进入一个接收循环,等待正确的消息,然后才能发送响应。循环处理程序用于响应可能不能立即可用,但您希望在响应到达时保持连接打开一段时间的请求。这种做法最著名的例子就是长轮询。循环处理程序还可以用于响应部分可用且需要在连接打开时流化(stream)响应体的请求。这种实践最著名的例子是服务器发送事件(server-sent events),但它也适用于任何需要很长时间发送的响应。虽然使用普通HTTP处理程序也可以

2021-04-04 22:02:00 141

原创 Cowboy 用户指南 (九) - Handlers

Handlers(处理程序)处理程序是处理HTTP请求的Erlang模块。普通的HTTP处理程序Cowboy中最基本的处理程序实现了强制的init/2回调,操作请求,可选地发送响应,然后返回。这个回调接收到Req对象和路由器配置中定义的初始状态。一个不做任何事情的处理程序是这样的:init(Req, State) -> {ok, Req, State}.尽管没有发送应答,一个204 No Content响应将发送到客户端,因为Cowboy确保为每个请求发送响

2021-04-04 21:50:51 198

原创 Cowboy 用户指南 (八) - Constraints

约束约束是用来验证和转换用户输入的函数。它们被用于Cowboy中的各个地方,包括路由器和cowboy_req匹配函数。语法约束以字段列表的形式提供。对于列表中的每个字段,可以应用特定的约束,如果字段缺失,还可以应用默认值。字段可以是一个atom的字段、一个带约束的{field, constraints}元组或一个带约束(默认值为{field, constraints, default})的元组。字段形式表示该字段为必选字段。注意,当与路由器一起使用时,只有第二种形式才有意义,因为它不

2021-04-04 21:40:11 222

原创 Cowboy 用户指南 (七) - Routing

路由Cowboy 默认不执行任何操作.要使Cowboy有用,需要将URI映射到负责处理请求的Erlang模块。这被称为路由。URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。Cowboy使用以下算法路由请求:如果没有配置的主机与请求URI匹配,则返回400响应。 否则,将使用第一个配置的和请求URI匹配的主机。只考虑为该主机配置的路径。 如果上

2021-04-04 21:27:33 389

原创 Cowboy 用户指南 (六) - Listeners

监听器监听器是一组在端口上监听新连接的进程。传入的连接由Cowboy处理。连接握手,可以使用一种或另一种协议。这一章是针对Cowboy的。有关监听器的更多信息,请参阅Ranch User Guide。Cowboy提供了两种类型的监听器:一种监听clearTCP连接,另一种监听安全的TLS连接。它们都支持HTTP/1.1和HTTP/2协议。Clear TCP 监听器clearTCP监听器将接受给定端口上的连接。典型的HTTP服务器将监听端口80。然而,端口80在大多数平台上需要特殊的权..

2021-04-02 16:39:56 427 3

原创 Cowboy 用户指南 (五) - Flow diagram

流程图Cowboy是一个轻量级的HTTP服务器,支持HTTP/1.1、HTTP/2和Websocket。它建立在Ranch的基础上。有关如何处理网络连接的更多信息,请参阅Ranch指南。Overview正如您在图中看到的,客户端首先连接到服务器。这个步骤由Ranch acceptor处理,这是一个专门用于接受新连接的进程。Ranch接受新连接后,无论是HTTP/1.1还是HTTP/2连接,Cowboy都会开始接收并处理请求。在HTTP/1.1中,所有的请求都是顺序来的。在HTTP

2021-04-02 16:10:14 287

原创 Cowboy 用户指南 (四) - Getting started

入门指南Erlang不仅仅是一种语言,它还是应用程序的操作系统。Erlang开发人员很少编写独立的模块,他们编写库或应用程序,然后将它们捆绑到所谓的发布中。发布版包含Erlang VM以及运行该节点所需的所有应用程序,因此可以直接将其push到生产环境。本章将带领您完成设置Cowboy、编写第一个应用程序和生成第一个发行版的所有步骤。在本章的最后,你应该知道将你的第一个Cowboy应用push到产品所需的一切。预备知识我们将使用Erlang.mk来构建系统。如果您正在使用Windows,请阅

2021-04-02 15:43:11 271

原创 Cowboy 用户指南 (三) - Introduction

介绍Cowboy是面向Erlang/OTP的小型、快速、现代的HTTP服务器Cowboy的目标是提供一个完整的现代Web堆栈。这包括HTTP/1.1, HTTP/2, Websocket,Server-Sent Events和Webmachine-based REST。Cowboy提供了内省和跟踪功能,使开发人员能够在任何时候准确地知道发生了什么。它的模块化设计也使开发人员能够轻松地添加工具。Cowboy是一个高质量的工程。它有一个小的代码库,非常高效(在延迟和内存使用方面),并且可以很容易

2021-04-02 15:19:23 485

原创 Cowboy 用户指南 (二) - Erlang and the Web

Erlang 和 WebErlang是编写Web应用程序的理想平台。它的特性完全符合现代Web应用程序的需求。Web是并发的当你只访问一个网站时是几乎没有并发性的。打开几个连接,并通过这些连接发送请求。然后web页面就会显示在您的屏幕上。您的浏览器将只打开4或8个连接到服务器,取决于您的设置。这不是很多。但是想想看。您不是同时访问服务器的唯一用户。在同一时间,可能有成百上千甚至数百万的连接连接到同一台服务器。即使在今天,生产中使用的许多系统都没有解决C10K问题(1万个并发连接)。而那些

2021-04-01 18:00:31 494

原创 Cowboy 用户指南 (一) - The modern Web

现代网络Cowboy是一个现代网络服务器. 这一章解释了它的含义,并详细介绍了所有涉及的标准。Cowboy支持本文档中列出的所有标准。HTTP/2HTTP/2是消费Web服务最有效的协议。它允许clients保持一个长时间打开的(connection),为了并发的发送requests;还可以通过压缩HTTP headers来减少requests的size;等等。该协议是binary(二进制)的,大大减少了解析它所需的资源。HTTP/2也允许Server向Client推送消息。这可以用于各种目

2021-04-01 17:26:44 504

原创 Nine Nines Cowboy用户指南

Cowboy 用户指南基本原理现代网络The modern Web Erlang 和 WebErlang and the Web介绍介绍-Introduction 入门指南 -Getting started 流程图-Flow diagram配置监听器Listeners 路由-Routing 约束 -ConstraintsHandlers(处理器)处理器-Handlers 循环处理器-Loop handlers 静态文件-Static files...

2021-04-01 16:52:15 213

原创 Erlang旧误区记录

以前的误区误区1:Funs运行速度很慢fun曾经非常慢,比apply/3慢。最初,fun的实现仅仅是使用编译器的技巧、普通元组、apply/3以及大量的约定。但那是历史。在R6B中,fun被赋予了自己的数据类型,并在R7B中进行了进一步的优化。现在,一个fun调用的消耗大约在普通的函数调用和apply/3之间。误区2:列表解析很慢列表解析过去是使用fun来实现的,在过去,fun确实很慢。现在,编译器将列表推导式重写为普通的递归函数。使用尾部递归函数并在末尾执行反向操作会更快。还是吗.

2021-02-05 17:58:19 89

原创 Erlang的常见警告

本节列出了一些需要注意的模块和bif,不仅仅是从性能的角度。3.1 定时器模块使用erlang:send_after/3和erlang:start_timer/3创建计时器要比使用STDLIB中的计时器模块提供的计时器高效得多。计时器模块使用一个单独的进程来管理计时器。如果许多进程频繁地创建和取消计时器(特别是在使用SMP仿真器时),该进程很容易超载。timer模块中的函数不管理定时器(如timer:tc/3或timer:sleep/1),不调用timer-server进程,因此是无害的。.

2021-02-05 17:26:02 204

翻译 Erlang性能误区 otp23.2

The Seven Myths of Erlang PerformanceErlang的七个性能误区otp23.2http://erlang.org/doc/efficiency_guide/myths.html1 Myth: Tail-Recursive Functions are Much Faster Than Recursive Functions误区1:尾递归函数比递归函数快得多According to the myth, using a tail-recursive fu..

2021-02-05 16:55:34 375

原创 win10环境Docker下启动多个mysql构建主从服和遇到的问题

第一步:下载mysql镜像:docker pull mysql查看镜像第二步:启动两个mysql容器主服务器:docker run --name master -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql从服务器:docker run --name slave -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql查看容器:第三步:配置master容器运行dock

2021-01-21 19:43:14 263 1

原创 更新mysql最新版后无法正常使用

Client does not support authentication protocol requested by server; conside..........mysql8.0较旧版更新了密码加密方式mysql -uroot -p******use databasealter user 'root'@'localhost' identified with mysql_native_password by '******';flush privileges;...

2020-10-15 09:20:49 145

原创 快捷键收录

windows常用快捷键Ctrl + Shift + N – 创建一个新的文件夹你需要在文件夹窗口中按 Ctrl + Shift + N 才行,在 Chrome 中是打开隐身窗口的快捷键。Win + 空格 – 闪现桌面效果与鼠标停留在任务栏最右端相同,松开 Win 键即恢复窗口。恩,你可以用来看看桌面背景的美女。Win+ 上/下/左/右 – 移动当前激活窗口其中,Win +...

2019-03-01 01:12:08 121

转载 Erlang lib_chan 源码

转自:http://blog.csdn.net/wwh578867817/article/details/49935199lib_chan 是《Programming Erlang》 作者写的一种构建分布式系统的组件,思想很值得学习。 刚开始学习 Erlang,感觉编写代码的风格不是很适应,但感觉思想非常 nice。 看到书的中间部分用到了它,不想用的不明不白,所以打算阅读下,并做

2017-01-10 12:52:44 596

转载 Erlang 中的并发 -- Actor 模型

转载自:http://blog.csdn.net/wwh578867817/article/details/49774169首先,我们聊聊现实世界中的并发。我曾经举过一个并发和并行的例子:老妈在很短的时间给我安排了很多任务,吃包子,拖地,洗碗…等等 由于我母亲大人比较严厉,所以我“愉快”地接受了所有任务。 这就是所谓的并发,在某一时段,能接受的事件。

2017-01-10 12:50:20 362

原创 MySQL报错 Mysql Row Size too large (>8126) 和 Unknow Table Engine InnoDB 解决方案

报错提示:Mysql Row Size too large (>8126);原因:表数据超过数据库表限制大小解决办法:修改my.ini配置文件里的参数参数参考:http://www.jb51.net/article/27069.htm可能会有另一个报错Unknow Table Engine InnoDB.解决方案报错原因:修改了my.ini 文件

2016-10-22 12:38:01 822

原创 erlang binary:match和binary:matches接口简易区分

binary:match和binary:matches的对比match的接口返回的是符合字符串中第一个匹配到的字母的{下标,词组长度}举例binary:match("abcde">>, ["bcde">>, "a">>]).会返回{0,1},0代表原字符串中第一个匹配到的字母下标("abcde"中的'a'下标为0),1是匹配到的数组长度,下标相同的按字符串长度比较binary:

2016-10-22 12:35:14 715

原创 erlang 排序算法

-module(sort).-author("Administrator").%%API-export([buddle/2,selection/1,quick/1,insert/1,merge/1,bubbles/1]).%% 冒泡算法:每次step得到一个最大值,对余下的列表再进行递归调用buddle([], SortedList) -> SortedList;buddle(Li

2016-08-06 18:50:41 1247

C# 版 2048

游戏很简单,也很快写完了,但玩了下感觉怪怪的,原来是合并方式和原版有出入 {比如:当一列或一行都是同一数字时,原版合并是两两合并的(2|2|2|2 →4|4),而我的最初没注意到这规则,导致结果是直接合并成(8)了} 现在已解决了,实现了和原版一样的效果,但方法却并不好,希望大家给予更好的实现。

2014-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除