在分析完gen module (http://www.cnblogs.com/--00/p/4271386.html)之后,就可以开始进入gen_server 的主体module 了.gen_server 的主体 module 暂不涵括terminate, hibernate, debug trace 相关的内容,这些会单独拉出来分析. gen_server 主要包括start 初始化部分, MAIN loop. 其中MAIN loop 为gen_server的主体结构, 其中,处理Label…
这是Erlang generic standard behaviors gen_server 分析的系列的最后一篇,主要分析gen_server module 辅助性的功能函数. 在gen_server 的MAIN loop 流程中,除了处理Parent 的'EXIT' 消息, user module 常规消息之外, 还处理了一类 system 消息. 这一类system 消息的来源是一个sys 的module,在Erlang OTP体系中,sys module 主要有两大类的作用,一个是热更,…
hibernate 主要用于在内存空闲时,通过整理进程的stack,回收进程的heap 来达到回收内存节省资源的效果. hibernate 可用于OTP 进程以及普通进程, hibernate 的官方文档 erlang:hibernate/3 Puts the calling process into a wait state where its memory allocation has been reduced as much as possible, which is useful if…
gen_server 主体 module 已经分析完了(http://www.cnblogs.com/--00/p/4271982.html),接着,分析下gen_server 中的terminate .首先分析一个问题, 这个问题是之前在weibo 上和别人讨论过的一个问题: Why will a rpc:call started gen_server process terminate with normal reason? 注:被call 的gen_server 进程 trap_exit…
在Erlang 系统中,经常需要gen_server 进程来处理共享性的数据,也就是总希望一个gen_server 进程来为多个普通进程提供某种通用性的服务,这也是gen_server 设计的初衷.但是,由于公平调度的原因,在Erlang体系中,每个process 能获得的资源都是同等的:同等的CPU时间片(还有默认情况下同等的初始化内存). 也就是gen_server 进程只能获得1/(N+1)的CPU时间片,为N个进程提供通用性的服务,而无法违背公平调度的原则使gen_server 进程获得…
在分析 gen_server (或者是gen_fsm )之前,首先应该弄明白,gen 这个module . -module(gen). -compile({inline,[get_node/1]}). %%%----------------------------------------------------------------- %%% This module implements the really generic stuff of the generic %%% standard…
gen_server 相关的片段分析得也差不多了, 这篇作为一个简要的总结.这一系列相关的分析暂且告一段落(之后如有必要,还会回来的 ^^ ),下一个系列主要是以pool 相关, 包括但不仅限于开源项目pooler, poolboy, emysql 中的pool 的管理, rabbitmq-server 中的worker_pool 角色等. lapse request 对于gen_server handle_call callback, 主要处理同步请求,如果gen_server 进程在Time…
  来源:http://www.cnblogs.com/puputu/articles/1701017.html erlang程序设计里面有个设计原则就是把你的进程构造成树,把共用代码提出来,特定功能用自己的module实现,这也就是behaviour了,应用behaviour可以减少与本身事务无关的代码量,设计逻辑更加清晰.老纪边学习边记录吧. gen_server实现服务器/客户端模型,用于多个客户共用一个资源的这种情况.他由几个接口函数和几个回调函数组成(回调函数必须在你的module里定…
erlang程序设计里面有个设计原则就是把你的进程构造成树,把共用代码提出来,特定功能用自己的module实现,这也就是behaviour了,应用behaviour可以减少与本身事务无关的代码量,设计逻辑更加清晰.老纪边学习边记录吧. gen_server实现服务器/客户端模型,用于多个客户共用一个资源的这种情况.他由几个接口函数和几个回调函数组成(回调函数必须在你的module里定义)这些可以参考erlang的doc 举个例子: -module(ch3). %这是我们的回调模块,也是我们实现业…
gen_server 概要: 通用服务器行为描述: 行为模块实现服务器的客户端-服务器关系.一个通用的服务器进程使用这个模块将实现一组标准的接口功能,包括跟踪和错误报告功能.它也符合OTP进程监控树.了解更多信息参考OTP设计原则. gen_server假定所有特定部分位于一个回调模块,它导出的一组预定义的功能.行为函数和回调函数的关系可以说明如下: gen_server module Callback module ----------------- --------------- gen_s…
Erlang简单并行服务器(金庆的专栏)Erlang并行服务器为每个Tcp连接创建对应的连接进程,处理客户端数据.参考 Erlang程序设计(第2版)17.1.3 顺序和并行服务器并行服务器的诀窍是:每当gen_tcp:accept收到一个新连接时就立即分裂一个新进程.为每个新套接字连接创建一个并行进程.-module(gs_svr).-author("jinqing").-behaviour(gen_server).%% API-export([start_link/0]).init…
1.erlang中创建进程(非操作系统线程,比其要轻量很多)非常方便,运用spawn函数即可 spawn(Fun) -> pid() spawn(Node, Fun) -> pid() spawn(Module, Function, Args) -> pid() 使用eg:spawn(io,format,["123"]). 123 ---------------------------------------------------------------------…
erlang behaviour小结之gen_server OTP入门 分类: Erlang2012-08-06 18:55 867人阅读 评论(0) 收藏 举报 servererlangcallback框架服务器编程 首先清楚gen_server提供C/S架构中的服务端的实现,即定义了自己一套规范的服务器框架. 在以上基础上,具体学习下gen_server的实现过程. 先是定义模块的行为模式为gen_server -module(lqg). -behaviour(gen_server). .…
-module(first_gen_server).-behaviour(gen_server).-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). %% ====================================================================%% API functions%% ===================…
Erlang简单并行服务器 (金庆的专栏) Erlang并行服务器为每一个Tcp连接创建相应的连接进程,处理client数据. 參考 Erlang程序设计(第2版)17.1.3 顺序和并行服务器 并行服务器的诀窍是:每当gen_tcp:accept收到一个新连接时就马上分裂一个新进程. 为每一个新套接字连接创建一个并行进程. -module(gs_svr).-author("jinqing"). -behaviour(gen_server). %% API-export([start_…
暂时搞不到<Programming Erlang>,最近就一直在看Erlang自带的例子和Reference Manual.基础语法方面有一些过去遗漏或者没有注意的,断断续续仅记于此. 1.Erlang的保留字有: after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor 基本都是些用于…
目标 (1)       了解在多核cpu环境下,erlang并发进程调度对各个cpu核负载的影响: (2)       Erlang虚拟机的内存添加机理: (3)       Erlang进程的调度情况: (4)       Linux下监控cpu的使用状况 实验环境 联想小型机:操作系统:RedHat Enterprise LinuxServer release6.4(Santiago) 内核版本号:Linux server1 2.6.32-358.el6.x86_64#1 SMP CPU型…
随着erlang的不断发展,它的语法越来越复杂,不便于诸如分析器,调试器此类程序在源码层次直接进行解析,而CORE Erlang旨在为Erlang提供一个人类可读可改的中间表示(Intermediate representation),这样就能方便面向程序源码的工具的开发. 千言万语不如代码一句.这里我们通过一个例子来直观的了解究竟什么是CORE Erlang.在helloworld.erl中输入如下代码: -module (helloworld). -export([simple/0, com…
The module The tests Unit tests Integration tests Java integration tests JavaScript integration tests Ruby integration tests Groovy integration tests Python integration tests Run tests in your IDE Debug tests in your IDE Run your module and see your…
摘要: 本机装有python2.7和python3.6,执行pip和pip2时没有问题,执行pip3时提示: C:\Users\>pip3 Traceback (most recent call last): File , in _run_module_as_main "__main__", mod_spec) File , in _run_code exec(code, run_globals) File , in <module> File , in <mo…
1.找到pycharm 目录下的 \helper\packaging_tool.py 文件 2.用新版pycharm 的packaging_tool.py 替换 旧版 同名文件 文件代码如下: import sys import traceback import getopt import os   ERROR_WRONG_USAGE = 1 ERROR_NO_PIP = 2 ERROR_NO_SETUPTOOLS = 3 ERROR_EXCEPTION = 4   os.putenv("PIP…
erlang分布式入门(一)-ping pong 测试环境和http://willvvv.iteye.com/blog/1523918 一样,192.168.0.182(centos-182)和192.168.0.183(centos-183), 1.按照上面链接(步骤1-4)设置通过ssh hostname 免输入密码直接登录. 2.设置erlang的magiccookie,由于都是以root账号操作,分别在两台机子上执行以下命令 cd /root vi .erlang.cookie 输入 c…
1.Install [Anaconda](https://docs.continuum.io/anaconda/install#anaconda-install) 实际上安装了anaconda就已经安装好了jupyter,但是为了便于一些分析,我们配置一些环境. 2.配置环境 conda env create -f environment.yml 其中environment.yml中的内容如下: name: vdl dependencies: - cycler==py35_0 - decorat…
jQ作为javascript的库( ▼-▼ ), 尽善尽美, 代码优美,  值得学习.  这一周平常上班没啥事也看jQ1.5的代码, 今天周六差不多看完了(Sizzle部分还没看), 重新看了一下, 又有很多新东西; 相对与1.4版本的ajax部分, 整个进行了重写, 实在是坑爹,  现在还有很多没弄懂,  ajax可以非常简单地: var xhr = new XMLHttpReques || new window.ActiveXObject("Microsoft.XMLHTTP");…
转自:http://developer.51cto.com/art/201507/483510.htm 很多来自世界各地的程序员不求回报的写代码为别人造轮子.贡献代码.开发框架.开放源代码使得分散在世界各地的程序员们都能够贡献他们的代码与创新. Python就是这样一门受到全世界各地开源社区支持的语言.Python可以用来开发各种小工具软件.web应用.科学计算.数据分析等等,Python拥有大量的流行框架,比如Django.使用Python框架时,可以根据自己的需求插入不同的模块,比如可以用S…
Awesome Python  A curated list of awesome Python frameworks, libraries, software and resources. Inspired by awesome-php. Awesome Python Environment Management Package Management Package Repositories Distribution Build Tools Interactive Interpreter Fi…
Machine and Deep Learning with Python Education Tutorials and courses Supervised learning superstitions cheat sheet Introduction to Deep Learning with Python How to implement a neural network How to build and run your first deep learning network Neur…
最近觉得实在是该梳理梳理erlang的框架内容了,所以整理了下. OTP(开放电信平台):并发系统平台, 特点:容错(erlang:get_stacktrace(),try-catch,trap_exit进程退出时候发送信息{'Exit',Pid,Reason},不会所有进程都崩溃而且可以由supervisor重启)--链路来容错. 监督(supervisor,重启机制). 可升级(code_change(gen_server)). 并发(spawn,消息(而非java|c的锁))--进程&消息…
A curated list of awesome Python frameworks, libraries, software and resources. Inspired by awesome-php. Admin Panels Libraries for administrative interfaces. Ajenti - The admin panel your servers deserve. django-suit - Alternative Django Admin-Inter…
Detailed Description Generic CAN Driver. This module implements a generic CAN (Controller Area Network) driver allowing the exchange of information at frame level. Precondition: In order to use the CAN driver the HAL_USE_CAN option must be enabled in…