erlang

Erlang学习--windows环境搭建

微笑、不失礼 提交于 2020-04-30 02:31:40
1. 下载Erlang运行环境,windows64位安装包18.2.1版本。 https://www.erlang.org/downloads OTP 18.2.1 Windows 32-bit Binary File 并安装之。 2. 安装myeclipse插件,我的myeclipse是2014,如果用eclipse也是可以的,最好是用最新的版本。 help->install from site->add 添加如下网址,ErLang - http://download.erlide.org/update 参考网站: http://erlide.org/articles/120_Installing-and-updating.html 如果打不开,需要翻墙。 3. 编写第一个helloworld 程序 file->new->Erlang project起个项目名字hello 在src目录下面新建模块hello会自动生成代码,在代码最下面写上自己的say(Something)函数 -module(hello). -export([say/1]). say(Something)->Something. ok做为erlang project运行 输入 hello:say(“Hello World”). 控制台成功打印”Hello World” 来源: oschina 链接: https:

Why my supervisor terminating?

倾然丶 夕夏残阳落幕 提交于 2020-04-29 09:17:25
问题 I'm very new to OTP, I'm trying to create simple example to understand supervisor behaviour: Here is simple increment server -module( inc_serv ). -behaviour( gen_server ). -export( [ start/0, inc/1, stop/0 ] ). -export( [ init/1, handle_call/3, terminate/2 ] ). start() -> gen_server:start_link( { local, ?MODULE }, ?MODULE, no_args, [] ). stop() -> gen_server:call( ?MODULE, stop ). inc( Num ) -> gen_server:call( ?MODULE, { num, Num } ). init( no_args ) -> io:format( "~p~n", [ "Increment server

Why my supervisor terminating?

空扰寡人 提交于 2020-04-29 09:17:21
问题 I'm very new to OTP, I'm trying to create simple example to understand supervisor behaviour: Here is simple increment server -module( inc_serv ). -behaviour( gen_server ). -export( [ start/0, inc/1, stop/0 ] ). -export( [ init/1, handle_call/3, terminate/2 ] ). start() -> gen_server:start_link( { local, ?MODULE }, ?MODULE, no_args, [] ). stop() -> gen_server:call( ?MODULE, stop ). inc( Num ) -> gen_server:call( ?MODULE, { num, Num } ). init( no_args ) -> io:format( "~p~n", [ "Increment server

In Erlang, when do I use ; or , or .?

折月煮酒 提交于 2020-04-29 05:26:11
问题 I've been trying to learn Erlang and have been running into some problems with ending lines in functions and case statements. Namely, when do I use a semicolon, comma, or period inside my functions or case statements? I've gotten stuff to work, but I don't really understand why and was looking for a little more information. 回答1: Comma at the end of a line of normal code. Semicolon at the end of case statement, or if statement, etc. The last case or if statement doesn't have anything at the

In Erlang, when do I use ; or , or .?

拈花ヽ惹草 提交于 2020-04-29 05:18:25
问题 I've been trying to learn Erlang and have been running into some problems with ending lines in functions and case statements. Namely, when do I use a semicolon, comma, or period inside my functions or case statements? I've gotten stuff to work, but I don't really understand why and was looking for a little more information. 回答1: Comma at the end of a line of normal code. Semicolon at the end of case statement, or if statement, etc. The last case or if statement doesn't have anything at the

RabbitMQ 的使用

守給你的承諾、 提交于 2020-04-28 21:56:17
1. RabbitMQ安装 安装参考: https://www.rabbitmq.com/download.html a. 默认是C:/Program Files/....,这个目录中是存在空格符的,注意需要改变安装目录 b.RabbitMQ 与ERLANG 版本要保持一致 2.原理 RabbitMQ提供了6种消息模型 参考 https://www.rabbitmq.com/getstarted.html 2.1 基本消息模型 一对一只有一个消费者,起到一个缓冲作用。 2.2 工作队列 有多个消息者,但消费者消费消息的多少,完全取决于消费者的处理能力,能者多劳,相当于消费者主动从mq中取消息,而不是被mq安排消息,能消费者是公平的。 消费端消费数据时,会有一个确认消费完成的动作,mq收到消费完成的通知后,才会继续向该消费者发送消息 。 2.3 发布订阅模式 RabbitMQ 中有一个交换机Exchanges的概念,发布订阅就是通过交换机实现的。生产端先把消息发送到交换机,然后交换机再把消息发送到与其绑定的消息队列,这样就解决了生成端如何把一条消息批量发送到多个消息队列的问题。 2.4 routing 路由模式 路由模式较发布订阅模式,交换机直接向所有与之绑定的消息队列发送消息,而路由模式对交换机做了一些限制,它指定了一个route key,生产端向交换机发送消息时

【原创】图解 hotwheels

家住魔仙堡 提交于 2020-04-28 04:48:48
项目地址: tolbrino/hotwheels 项目说明: Erlang messaging server optimized to send 1 message to 40k subscribers to a topic in < 1s 概述 Janus 是一种消息服务器,专门被优化以便能够处理,以 TCP 单播方式同时发消息给数以千计客户端的场景。这些客户端可以订阅到各种 topic 上。 终极目标是能够在 20k 客户端同时在线的情况下,进行消息推送时保证延时低于 2 秒。 关于 Janus 的历史 在罗马神话中 Janus 是 天门神 ,早晨打开天门,让阳光普照人间,晚上又把天门关上,使黑暗降临大地。他的头部前后各有一副面孔,同时看着两个不同方向,一副看着过去,一副看着未来,因此也称两面神,或被尊称为时间之神。罗马有好几座 Janus 神庙。Janus 掌管所有的出入门户,因此罗马人在战时永远将 Janus 神殿的门敞开着,以便军人在败阵时躲入殿内以求庇护,或是在战胜时凯旋入殿。早期的 Janus 神像的两副面孔都有胡子,后来没有胡子,但是一副面孔年轻,另一副面孔年老。Janus 的右手指上刻有数字 CCC(300),左手指上刻着数字 LXV(65),合在一起恰是一年的天数。从纪元前 1 世纪起,罗马人把祭祀 Janus 的节日和新年结合在一起

RabbitMQ几个常用面试题

梦想与她 提交于 2020-04-28 04:37:28
原文来自: https://www.cnblogs.com/woadmin/p/10537174.html 1、什么是RabbitMQ?为什么使用RabbitMQ? 答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件; 可以用它来:解耦、异步、削峰。 2、RabbitMQ有什么优缺点? 答:优点:解耦、异步、削峰; 缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低; 增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。 3、如何保证RabbitMQ的高可用? 答:没有哪个项目会只用一搭建一台RabbitMQ服务器提供服务,风险太大; 4、如何保证RabbitMQ不被重复消费? 答:先说为什么会重复消费:正常情况下,消费者在消费消息的时候,消费完毕后,会发送一个确认消息给消息队列,消息队列就知道该消息被消费了,就会将该消息从消息队列中删除; 但是因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将消息分发给其他的消费者。 针对以上问题,一个解决思路是:保证消息的唯一性,就算是多次传输

消息中间件——RabbitMQ

蓝咒 提交于 2020-04-27 22:30:51
RabbitMQ介绍 RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP ,即 Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ 是一个开源的 AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 Rabbitmq 安装 http://www.rabbitmq.com 先安装 erlang环境 直接下一步下一步安装完成 配置系统环境: 新建一个系统变量:名称 ERLANG_HOME,值为本机中erlang的安装目录。 然后再在用户变量