代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

推荐文章

一路有趣的erlang建模练习

    一道有趣的erlang建模练习一道有趣的erlang建模练习 领域建模在于不断挖掘领域的本质,然后用优秀的代码简洁地表现出来。而函数式非常适合将领域映射到数学本质上。前一阵子学习erlang,用erlang做了一些练习,分享其中的一个。 practice 1 : count tiangle 题目: 数数如下图形中一共包含多少三角形? 答案是24,你数对了吗?回忆一下你刚才是怎么数的? 这道题如果由人来数,每个人数法各异!但是如果要交给计算机来做,就必须将数的方法描述成计算机可以执行的形式化算法。这种描述方法可以有非常多种,而我们希望找到一套抽象层次高的和领域非常贴切的描述,以降低后续理解、维护成本。 对于该问题,我们首先站在领域角度定义什么是三角形? triangle([A, B, C]) -> connected(A, B) andalso connected(B

    阅读全文>>

作者:coody分类:【_Erlang浏览(1429

2018-09-23

centos 6.5装配erlang和RabbitMQ

    centos 6.5安装erlang和RabbitMQ一、安装erlang 1、下载erlang源码 git clone https://github.com/erlang/otp.git   2、编译并安装erlang cd otp ./otp_build autoconf ./configure --prefix=/opt/erlang make make install   如果执行./configure报错可能是缺少依赖,使用yum安装依赖再重新./configure sudo yum install unixODBC-devel openssl-devel ncurses-devel 由于安装在/opt目录下,如果当前是非root账号登录,需要用sudo身份来执行。   3、配置环境变量 export ERL_HOME=/opt/erl

    阅读全文>>

作者:coody分类:【_Erlang浏览(1570

2018-09-20

[Erlang37]error/一 exit/1 exit/2 throw/1的区别

    [Erlang37]error/1 exit/1 exit/2 throw/1的区别 1. error/1 主要是系统用来定义内部错误的: Erlang内建的run time error 一共有10种: function_clause/case_clause/if_clause/badmatch/badarg/undef/badarith/badfun/badarity/system_limit, 比如:          1> erlang:binary_to_list(1). ** exception error: bad argument in function binary_to_list/1 called as binary_to_list(1)  这

    阅读全文>>

作者:coody分类:【_Erlang浏览(2162

2018-09-21

elixir 高可用系列(3) GenEvent

    elixir 高可用系列(三) GenEvent概述 GenEvent 是事件处理的通用部分的抽象。 通过 GenEvent ,我们给已有的服务 动态 的添加 事件处理。 GenEevent 和 GenServer 的区别 之前已经介绍了 GenServer ,GenServer 和 GenEvent 的主要区别在于: GenServer 是服务器的抽象,除了封装处理 同步/异步 事件的方法之外,还封装了服务器本身的启动/停止等方法。 GenEvent 是事件的抽象,封装了 同步/异步 事件的处理方法,GenEvent 可以绑定到任何服务器上,从而动态的 添加 服务器的处理方法。 基于上述的区别,GenEvent 和 GenServer 的应用场景也不同。 GenServer 可以帮助我们快速的创建服务,它类似于一个服务的脚手架,使用 GenServer,构建服务时,只需关注服务本身

    阅读全文>>

作者:coody分类:【_Erlang浏览(1743

2018-09-22

CentOS7 erlang RabbitMQ 装配并且配置远程访问

    CentOS7 erlang RabbitMQ 安装并且配置远程访问对于安装RabbitMQ,我也是着实废了一番力气,版本下载很多,但是都存在编译问题,编译不通过,报错找不到错误原因,甚至error都是***这样的存在。 其他的依赖, 我没有测试过,因为我环境中存在: Python,simplejson,安装 介于RabbitMQ是依赖erlang语言。  erlang安装比较重要,版本问题,编译问题,不能存在任何问题,否则RabbitMQ是绝对安装不了的,即便是二进制包也不能使用 可以使用yum安装,我找了很久,用下面的方式成功 1、下载源码wget http://www.erlang.org/download/otp_src_R16B02.tar.gz 2、安装erlang编译环境: yum -y install make gcc gcc-c++

    阅读全文>>

作者:coody分类:【_Erlang浏览(1788

2018-09-21

elixir 高可用系列(1) Agent

    elixir 高可用系列(一) Agent概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互。 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 send/receieve 的代码,就能方便的在进程之间共享状态。 使用方法 不用 Agent 来管理状态 首先,看一个在不用 Agent 的情况下,如何获取进程状态的例子。 defmodule WithoutAgent do def start do Map.new() end def get(map, key) do if Map.has_key?(map, key) do Map.get(map, key) else nil end end def put(map,

    阅读全文>>

作者:coody分类:【_Erlang浏览(939

2018-09-22

elixir 高可用系列(4) Task

    elixir 高可用系列(四) Task概述 之前学习的 Agent,GenSever以及GenEvent,都是用来管理状态或者处理消息的。 但是在很多时候,我们需要的是执行某个任务,这时如果使用 GenSever 或者 GenEvent,就会显得比较笨重。 这时,我们就可以使用 Task 模块,使用 Task 模块时注意以下几点: 每个 task 只执行一个特定的功能,要让 task 处理的业务尽量简单(如果业务复杂的话,考虑使用 GenSever 或者 GenEvent) task 之间尽量不要交互,也尽量不要和其他 process交互 ,保持 task 的独立性 task 最重要的特性是能够方便的将顺序执行的代码转变为并发执行的代码。 task 示例 示例一: 将顺序代码转为并发代码(类似多线程) defmodule TaskTest do def test_sync() d

    阅读全文>>

作者:coody分类:【_Erlang浏览(1691

2018-09-23

elixir 高可用系列(2) GenServer

    elixir 高可用系列(二) GenServer概述 如果我们需要管理多个进程,那么,就需要一个专门的 server 来集中监控和控制这些进程的状态,启停等。 OTP 平台中的 GenServer 就是对这个 server 通用部分的抽象。 利用 GenServer 中已经提供的通用操作, 可以很方便的开发出可靠,健壮的程序。 下面首先通过一个示例演示 GenServer 的方便和强大之处,然后再对其进行介绍。 GenServer 示例 这是一个 GenServer 管理多个进程的示例,模拟控制各个进程的启动,停止,以及状态查询。 defmodule ProcessMonitor do use GenServer #==================================================== # api for clients #======

    阅读全文>>

作者:coody分类:【_Erlang浏览(1017

2018-09-22

phoenix 开发API系列(1)- 创建简单的http api

    phoenix 开发API系列(一)- 创建简单的http api安装 phoenix framework 安装 phoenix 很简单: mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez 安装之后,mix 的子命令中就多了 phoenix 相关的内容了。 $ mix help | grep phoenix $ mix local.phoenix # Updates Phoenix locally $ mix phoenix.new # Creates a new Phoenix v1.2.1 application phoenix 工程介绍 接下来,我们创建一个 phoenix 的工程。 $ mix phoenix.new phoenix

    阅读全文>>

作者:coody分类:【_Erlang浏览(1047

2018-09-23

64位 CentOS 6.2 装配erlang及rabbitmq Server

    64位 CentOS 6.2 安装erlang及rabbitmq Server       原文   http://blog.csdn.net/leekwen/article/details/23333659 主题 RabbitMQ Erlang Centos CentOS 6.2 64bit 安装erlang及RabbitMQ Server 1、操作系统环境(CentOS 6.2 64bit)  [root@leekwen ~]# cat /etc/issue CentOS release 6.2 (Final) Kernel \r on an \m [root@leekwen ~]# cat /proc/cpuinfo |grep "clflush size" clflush size : 64 clflush size : 64 clflush s

    阅读全文>>

作者:coody分类:【_Erlang浏览(701

2018-09-23

phoenix 开发API系列(2)phoenix 各类 api 实现方式

    phoenix 开发API系列(二)phoenix 各类 api 实现方式概述 上一篇已经提到如何安装以及利用 phoenix framework 来开发一个简单的 api。 接着上次的工程,下面演示如何通过 phoenix framework 来构建各种类型的 api 来应对前端的各类请求。 注 下面使用的工程的完整代码已经公开在: http://git.oschina.net/wangyubin/phoenix-api 各类 api 的实现示例 restful url 的参数 introduce by code: controller 中相关代码: @doc "/api/param/:name" def rest_param1(conn, %{"name" => name}) do json conn, %

    阅读全文>>

作者:coody分类:【_Erlang浏览(1255

2018-09-22

elixir 高可用系列(5) Supervisor

    elixir 高可用系列(五) Supervisor概述 OTP 平台的容错性高,是因为它提供了机制来监控所有 processes 的状态,如果有进程出现异常, 不仅可以及时检测到错误,还可以对 processes 进行重启等操作。 有了 supervisor,可以有效的提高系统的可用性,一个 supervior 监督一个或多个应用, 同时, supervior 也可以监督 supervior,从而形成一个监督树,提高整个系统的可用性。 注意 ,supervior 最好只用于监督,不要有其他的业务逻辑处理,越是接近监督树根部的 supervior 就要越简单, 因为 supervior 简单就不容易出错,它是保证系统高可用的关键。 监督者示例 下面,使用 elixir 中提供的 Supervisor 模块,构造简单的监督示例来演示如何提高系统的可用性。 监督策略 监督策略有4种: :on

    阅读全文>>

作者:coody分类:【_Erlang浏览(1294

2018-09-22

Erlang中怎么实现分页效果

    Erlang中如何实现分页效果 1.前台 1.1.使用二维map来存储分页信息: 1.1.1.一维map存储页码和分页信息,key为页码,value为分页信息。 1.1.2.二维map存储分页的上一页,当前页,下一页信息。 1.1.3.当为第一页时,map[1]["prePage"]="",map[1]["currPage"]="",map[1]["nextPage"]=取到第一页数据后的continuation信息;当为第二页时,map[2]["prePage"]=map[1]["currPage"],map[2]["currPage"]=map[1]["nextPage"],map[2]["nextPage"]=取到第二页数据后的continuation信息。 2.后台 2.1.如果第一次获取: {Tab,Continue} = ets:match(users,'$1',10

    阅读全文>>

作者:coody分类:【_Erlang浏览(2249

2018-09-23
上一页 1/6页 下一页