`
文章列表
1 同步   A发送消息给B,要等B返回结果,A才继续执行,否则一直处于等待状态(或直到超时) 举例说明:在erlang中, {ok, Value} = gen_server:call(TargetPid, Request) Fun(Value, Args), %%要等gen_server:call返回才能继续向下执行 Fun2, ... 2 异步   A发送消息给B,不需要等待B的返回结果,继续执行下去 gen_server:cast(TargetPid, Msg) Fun, %%继续向下执行 Fun2, ...
1、并发   在单核系统中,为了提高cpu利用率,系统采用时间片轮询等调度方式,对多个线程轮换执行,在宏观上看,线程是同时执行的,从微观上看,某一时刻只执行一个线程:这就是并发。   在发生资源竞争或者大量的上下文切换会导致性能消耗 2、并行 在多核时代,线程可以真正的做到同一时刻多个运行:每个线程可以在不同的核上运行 借用别人的一个图来简单说明并发和并行
一、erlang socket的消息流的三种控制方式:   1 主动模式 {active, true}   2 被动模式 {active, false}   3 混合模式 {active, once} 1 主动消息获取(非阻塞)   在该模式下,无法控制发到服务端的消息流,如果客户端生产消息的速度大于服务端消费消息的速度,会导致服务端消息缓冲区溢出 {ok, ListenSocket} = gen_tcp:listen(Port, [...,{active,true}...], {ok, Socket} = gen_tcp:accept(ListenSocket} loop_recei ...
-module(tcp_parallel_server). -compile(export_all). -define(TCP_OPT, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]). start_server() -> {ok, ListenSocket} = gen_tcp:listen(8888, ?TCP_OPT), spawn(fun() -> parallel_connect(ListenSocket) end). parallel_connect(Lis ...
  简单web sever改进版:串行服务器,一次只接受一个连接 代码:tcp_sequence_server.erl -module(tcp_sequence_server). -compile(export_all). -define(TCP_OPT, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]). start_server() -> {ok, ListenSocket} = gen_tcp:listen(8888, ?TCP_OPT), seq_loop(ListenSo ...
  gen_tcp:connect(Host,Port,[Options]),gen_tcp:send(Socket, Request)。用这个两个函数从服务器获取数据   代码如下:tcp_client.erl -module(tcp_client). -export([get_url/0]). get_url() -> get_url("www.baidu.com"). get_url(Host) -> {ok, Socket} = gen_tcp:connect(Host, 80, [binary, {packet, ...
  现在来写个简单的web服务器,要实现的功能是:只接受一个socket连接请求。 服务器代码:tcp_server.erl -module(tcp_server). -compile(export_all). -define(TCP_OPT, [binary, {packet, 4}, {reuseaddr,true}, {active, true}]). %% binary 设置通信数据格式,可以通过简单的term_to_binary编码, binary_to_term解码 %% {packet, 4} 每个报文从一个4字节长的头开始 %% {reuseaddr, ...
  SASL (System Architecture Support Libraries) 提供错误日志,过载保护等应用 本文主要说sasl错误日志 配置:elog.config [{sasl, [{sasl_error_logger, false}, {errlog_type, error}, {error_logger_mf_dir, "/data/my_sasl/log"}, {error_logger_mf_maxbytes, 10485760}, {error_logger_maxfiles, 1 ...

erl启动参数

erl启动参数分类   1 emulator flags 用“+”连接,用于控制模拟器行为的   2 flags 用“-”开头,erlang运行时系统参数,可用init:get_argument/1获得   3 plain flags -extra 后面的都是普通参数 常用的Flags -detached   以daemon方式在后台运行,不启动shell -eval Expr   表达式作为启动参数   erl -eval "Mod:Fun(Args)" -pa Dir1 Dir2 -pz Dir Dir2 -remsh Node   远程连接目标节点Node ...

Erlang和SMP

SMP:Symmetrical Multi Processor 对称多处理器 原理 1:disable SMP 一个调度器对应一个运行队列 没有SMP支持的erlang VM 只有一个Scheduler运行于主线程,Scheduler从运行队列中取出需要运行的erlang进程和IO任务 2:enable SMP = 多个调度器对应一个运行队列:这时会比上面慢,因为锁保护 有SMP支持的erlang VM 可以有1-1024个Scheduler,每个Scheduler运行于一个独立的操作系统线程,操作系统决定它是否要在不同的核上面运行。由于多个Scheduler从同一个公共运行队列中去除需 ...
平时需要用到比较少,但是一到关键时刻却又需要,老是忘记 。写个备忘 元字符     常用元字符表: 字符 说明 . 匹配除换行符以外的任意字符 \w 匹配字母、数字、汉字、下划线 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词的开头或结尾 ^ 匹配字符串的开头 $ 匹配字符串的结尾 字符转义     如果要查找元字符本身,必须使用\来消除元字符的特殊意义。eg:c:\\windows 匹配 c:\windows 反义 字符 说明 \W 匹配字母、数字、汉字、下划线以外的任意字符 \S 匹配任意不是空白的字符 \D 匹配任意不是数字的字符 \B 匹配不是单词开头或结尾的 ...
erlang_protobuffs源码下载地址: https://github.com/basho/erlang_protobuffs   因为这个项目是用rebar编译的,本人比较笨 ,不会玩rebar,所以就提取了src文件夹里面的代码,自己写了个makefile来编译 下面就来记录一下我的实验步骤 1 创建项目目录结构 cd /data mkdir -p protobuffs/{ebin,hrl,proto,scripts,src/{include,mod}} 2 导入源文件到src/mod目录下 3 这里有个注意事项:里面有protobuffs_parser.yrl和p ...
erlang安装 1 解压包 tar -zxvf otp_src_R16B03.tar.gz 2 安装前配置 cd otp_src_R16B03/ ./configure --prefix=/usr/local/erlang --without-javac 3 make && make install 4 做个软连接 ln -s /usr/local/erlang/bin/erl /usr/bin/erl 5 最后结果 erl 安装过程中发现问题: 1 configure: error: No curses library functions found 解决 ...
首先,拿到tools包:步骤如下    在vmware虚拟机开启情况下,点击设置-安装vmware-tools    在centos中,root用户登录,mount /dev/cdrom /media/cdrom    cp VMwareTools-8.4.4-301548.tar.gz /tmp/ 1 解压 cd /tmp rz tar -xvf VMwareTools-8.4.4-301548.tar.gz 2 执行安装 ./vmware-install.pl 直接默认enter就行了 3 安装过程中可能遇到的问题   1 GCC尚未安装 引用Searching for GC ...
subversion是一个非常好用的版本管理工具。 1 安装 yum install -y subversion subversion-devel 2 创建版本库(单库)如果想创建多个版本库执行多次svnadmin create /data/svn/仓库名称 mkdir /data/svn/exam_test svnadmin create /data/svn/exam_test/ 如下图 2 初始化版本库 cd /data mkdir -p exam_test/{trunk/{server,client},tags,branches} svn import exam_test ...
Global site tag (gtag.js) - Google Analytics