亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Erlang初學:Erlang的一些特點和個人理解總結

Erlang初學:Erlang的一些特點和個人理解總結

熱門標簽:地圖標注如何弄全套標 萬利達綜合醫院地圖標注點 南京電銷外呼系統哪家好 在電子版地圖標注要收費嗎 電銷機器人 深圳 實體店地圖標注怎么標 股票配資電銷機器人 外呼系統會封嗎 武漢AI電銷機器人

我對 Erlang 編程理念的理解:以分布式架構師的角度寫代碼。

函數式編程

Erlang 里面的函數是數學里面的函數:必須有返回值。 只要是函數必然有返回值,函數是一個過程,以英文的句號為函數結束符。 函數結束之前的表達式就是該函數的返回值。 所以這也是在 Erlang 里面的函數不會看到任何 return 語句的原因。 C++ 等其他語言的函數和函數之前可以通過共享變量來實現消息傳遞。 Erlang 里面的函數不可以,消息的傳遞通過函數的傳入和傳出。 也只是為什么 Erlang 號稱天生之處并行處理的原因, 因為他們不共享變量,也就不需要加鎖。

很多人聽到函數式編程都會覺得高大上或者晦澀難懂。 因為函數是編程沒有 for 循環語句, 但是在我看來,關鍵在于會使用【列表推倒】和【尾遞歸】來進行循環遍歷。 說到函數式編程就會拿快速排序說事,下面這個示例是 Erlang 版本的快速排序:

復制代碼 代碼如下:

-module(sort).

-export([qsort/1]).

qsort([]) -> [];
qsort([Pivot | T]) ->
    qsort([X || X - T, X Pivot]
         ++ [Pivot] ++
         qsort([X || X - T, X >= Pivot]).


非常簡潔,[Pivot | T] 就是拿列表的第一個元素當快排中的 Pivot 。
復制代碼 代碼如下:

[X || X - T, X Pivot]

上式就是【列表推導】, 含義就是找出列表 T 中所有元素小于 Pivot 中的元素組成一個新的列表。 不過,這個例子顯然性能不高,只是一個示例。

很多人一直在鼓吹函數式語言馬上就要迎來朝陽, 但是在我看來,函數式編程永遠只能是小眾語言, 這就像當年的 lisp machine ,被鼓吹的天花亂墜還是夭折了。 現在主流的計算機架構都是馮諾依曼體系的,并不是最適合函數式語言的生存土壤。

一切都是常量

沒有變量,也就沒有通過變量共享狀態導致的資源競爭,也就不需要加鎖。 任何狀態的變化都是通過函數的輸入輸出來進行改變, 輕量級進程的狀態變化也是靠消息傳遞(函數的輸入輸出)來實現。 這也是為什么有人說函數式編程適合高并發的原因,因為他們沒有變量, 一切都是常量。

輕量進程

Erlang 里面有 spawn 函數,可以快速的創建一個 process , 這里的 process 不是操作系統的進程,而是 Erlang 自己的輕量進程。 Erlang 輕量到超乎你想象, 構建 kv 數據庫的時候,甚至可以對不同的 key 分配給不同的進程。 而且進程的表示單位是 Pid ,只要知道進程的 Pid, 哪怕該進程是在別的機器上面,都可以很輕易的發送給它。 原因是 Erlang 的【天生自帶RPC通信】和【自帶端口映射】

天生自帶RPC通信

復制代碼 代碼如下:

ToPid ! Data

ToPid 是接受方進程的id , Data 可以是 Erlang 的任何類型,比如
復制代碼 代碼如下:

Pid ! {name, "jb51.net"}.

也就是可以直接把任何數據結構當成消息發送,天生自帶 RPC 通信。 (雖然本來 RPC 的含義是“遠程過程調用”,不過其實反正就是幫你序列化了數據結構,Erlang 的 ! 操作符也是如此。)

進程端口映射

節點之間發消息在代碼里面的表示也還是

復制代碼 代碼如下:

ToPid ! Data

也就是在寫代碼的時候,根本不用考慮該進程是在哪臺機器上面, 無論是本 Erlang 進程(這里的進程是操作系統級別的進程,不是 Erlang 的輕量進程) 內, 還是其他機器的進程,都不用管。 這是因為有 epmd 的存在。

Epmd是Erlang Port Mapper Daemon的縮寫,在Erlang集群中相當于dns的作用,供給節點名稱到端口的查詢辦事,epmd綁定在總所周知的4369端口上。

有了 epmd ,寫分布式程序就好像寫單機程序一樣簡單。

嚴密的模塊化管理

Erlang 的模塊類似 C++ 中的 namespace(命名空間),但是比命名空間更利于高效的軟件工程管理。

在 Erlang 項目源碼中處處可見如下代碼。

復制代碼 代碼如下:

-module(my_app).
-export([start/2, stop/1]).

-module 指明模塊名,-export 指明導出的函數。 未被導出的函數都無法被外界調用。 從軟件工程上看的話,這樣使得模塊功能和使用方法更加清晰。 使用者只需要關心如何 -export 里面的函數即可。 相比較之下 C++ 對這方面特別不規范,而 Java 通過對類聲明為 public class 指明可以被外界使用, Node.js 也是使用 export 來顯示聲明可以被外界使用的函數。

行為模式

復制代碼 代碼如下:

-module(ecomet_app).

-behaviour(application).

%% comment: Application callbacks
-export([start/2, stop/1]).
-behavior(application).

Erlang/otp 里面的【行為模式】概念等價于 OOP 里面的接口概念。 上面代碼示例的意思就是該模塊(ecomet_app)遵守的行為模式是(application)。 剛行為模式需要實現的兩個接口函數就是 -export([start/2, stop/1]). 。

另一個示例如下是遵守監督者(supervisor)行為模式, 實現的一個接口函數是 -export([init/1]). 。

復制代碼 代碼如下:

-module(ecomet_sup).

-behaviour(supervisor).

%% Supervisor callbacks
-export([init/1]).

監督者機制

Erlang/otp 的天生分布式特性在監督機制里面體現的很好, 每一個 otp 應用啟動的時候,都是啟動監督者(supervisor)和工作者(worker)。 他們的關系是樹形結構,每個工作者的上級都會有監督者, 每個監督者的上級也可能有監督者。 當工作者異常退出的時候,監督者會根據相應的參數決定是否對工作者進行重啟。 如果重啟失敗的話監督者也會退出,而更加上層的監督者收到信號后會對他們進行重啟等處理。 這個監督者機制非常好理解,其實就是 OOP 編程里面的 try ... catch 異常處理機制。 當出現異常的時候一層一層的往上拋出,直到有人重啟。

otp平臺

Erlang 最強大的地方也是最讓我感覺難學的地方,就是它的 otp 平臺。 各種行為模式, 讓我感覺就像多年以前學習 MFC 的時候, 感覺很強大,但是卻總是感覺自己被按死在一條特定的軌道上面奔跑, 有種不自由的疲憊感。

代碼熱切換

熱切換也叫熱升級,大部分情況下,如果需要對 C++/Java 程序進程版本升級, 則需要重啟進程。 Erlang 支持熱切換的意思就是可以在運行的時候進行代碼升級。 升級過程不影響進程的運行, 而且在過渡階段新舊版本還可以共存。 是不是碉堡了。這個功能對于那些需要 7x24 高可用的服務來說簡直就是爽爆了。

Erlang 進程本身可以通過一個類似“后門”的控制臺 erl 來實時的查看狀態, 甚至直接使用控制臺來修改配置等,非常方便,這對于大部分其他語言來說, 簡直就是黑魔法般神奇的存在。

典型缺點

1.文檔太少,出現問題搜索出來的答案也少。
2.Erlang 人才稀缺,招聘不易。
3.動態語言最典型的就是調試不易。
4.上手門檻較高。

最后,我只是 Erlang 的入門初學者, 因為工作中需要使用 ejabberd (Erlang 的開源項目), 從而學習了 Erlang , 欠缺實戰經驗,所以這篇文章標題起為 【Erlang初體驗】。

您可能感興趣的文章:
  • Go/Python/Erlang編程語言對比分析及示例代碼
  • python讀取excel表格生成erlang數據
  • Erlang實現的一個Web服務器代碼實例
  • Erlang中的Record詳解
  • CentOS 6.5源碼安裝Erlang教程
  • ERLANG和PYTHON互通實現過程詳解

標簽:臺州 泰安 濟源 安徽 廣東 汕頭 武威 濟寧

巨人網絡通訊聲明:本文標題《Erlang初學:Erlang的一些特點和個人理解總結》,本文關鍵詞  Erlang,初學,的,一些,特點,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Erlang初學:Erlang的一些特點和個人理解總結》相關的同類信息!
  • 本頁收集關于Erlang初學:Erlang的一些特點和個人理解總結的相關信息資訊供網民參考!
  • 推薦文章
    国产不卡在线观看| 欧美a级v片不卡在线观看| 尤物视频网站在线观看| 国产麻豆精品hdvideoss| 亚洲精品影院久久久久久| 九九免费高清在线观看视频| 免费一级生活片| 午夜家庭影院| 亚洲 国产精品 日韩| 四虎影视久久久| 国产原创中文字幕| 亚洲精品影院| 精品在线观看国产| 可以免费看毛片的网站| 日韩欧美一二三区| 黄色免费三级| 国产不卡精品一区二区三区| 国产视频一区在线| 久久99中文字幕久久| 99久久精品国产高清一区二区| 国产一区二区精品| 精品视频一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成人精品影视| 日韩一级精品视频在线观看| 精品久久久久久中文| 九九九网站| 一级片片| 一级女人毛片人一女人| 99色视频在线观看| 午夜在线影院| 日韩免费在线观看视频| 精品国产三级a| 亚欧乱色一区二区三区| 日韩专区在线播放| 欧美大片aaaa一级毛片| 午夜精品国产自在现线拍| 一本高清在线| 久久国产一久久高清| 欧美1卡一卡二卡三新区| 可以免费在线看黄的网站| 在线观看成人网| 精品国产一区二区三区国产馆| 国产成a人片在线观看视频| 九九久久国产精品| 免费国产在线视频| 麻豆系列 在线视频| 国产成a人片在线观看视频| 日日夜人人澡人人澡人人看免| 成人免费福利片在线观看| 91麻豆高清国产在线播放| 二级特黄绝大片免费视频大片| 国产精品自拍一区| 精品国产一区二区三区精东影业 | 99久久精品费精品国产一区二区| 亚欧成人毛片一区二区三区四区| 欧美日本免费| 免费的黄色小视频| 韩国妈妈的朋友在线播放| 中文字幕一区二区三区精彩视频 | 天天做日日爱夜夜爽| 国产一区二区精品久久91| 国产精品自拍在线观看| 毛片成人永久免费视频| 免费国产在线视频| 青青青草影院 | 一级女性大黄生活片免费| 黄视频网站在线看| 日本伦理片网站| 日韩专区在线播放| 精品国产一区二区三区免费| 亚洲 国产精品 日韩| 日韩男人天堂| 日韩在线观看免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久99中文字幕| 四虎久久影院| 欧美激情一区二区三区视频高清| 精品视频在线观看视频免费视频| 二级片在线观看| 黄色福利片| 美女免费毛片| 国产韩国精品一区二区三区| 国产精品自拍亚洲| 在线观看成人网 | 国产不卡在线看| 久久精品欧美一区二区| 日韩综合| 精品视频一区二区| 国产成+人+综合+亚洲不卡| 欧美a级片免费看| 国产伦理精品| 国产一区二区精品久久| 欧美激情影院| 日韩中文字幕在线播放| 中文字幕Aⅴ资源网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩在线观看视频黄| 日本免费乱理伦片在线观看2018| 国产成人精品影视| 欧美一区二区三区在线观看| 中文字幕一区二区三区 精品 | 日本伦理片网站| 色综合久久手机在线| 青青久久网| 欧美电影免费| 午夜欧美福利| 日本特黄特色aa大片免费| 四虎影视久久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎论坛| 一级毛片视频在线观看| 亚洲第一页色| 国产不卡在线播放| 尤物视频网站在线观看| 精品视频一区二区三区| 精品在线观看国产| 免费国产在线观看| 美女免费精品视频在线观看| 日韩专区在线播放| 久久久久久久免费视频| 精品久久久久久中文字幕一区| 深夜做爰性大片中文| 色综合久久手机在线| 欧美大片毛片aaa免费看| 日本在线不卡免费视频一区| 美女被草网站| 精品国产一区二区三区久久久狼| 亚洲精品久久久中文字| 九九久久99| 四虎影视库国产精品一区| 亚洲精品中文一区不卡| 国产精品免费精品自在线观看| 欧美激情在线精品video| 欧美一级视频高清片| 一级女人毛片人一女人| 久久久久久久免费视频| 国产一区二区精品| 成人免费一级毛片在线播放视频| 国产成a人片在线观看视频| 亚洲精品中文一区不卡| 久久国产精品只做精品| 国产一级强片在线观看| 亚飞与亚基在线观看| 欧美一级视频免费| 91麻豆精品国产片在线观看| 午夜精品国产自在现线拍| 国产精品1024在线永久免费| 99热精品在线| 欧美电影免费| 亚欧视频在线| 欧美国产日韩在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草影院 | 国产伦精品一区二区三区在线观看| 精品久久久久久免费影院| 成人高清视频免费观看| 香蕉视频一级| 成人影视在线观看| 免费的黄视频| a级精品九九九大片免费看| 一级女性全黄久久生活片| 国产美女在线观看| 高清一级毛片一本到免费观看| 成人免费福利片在线观看| 国产成人欧美一区二区三区的| 日韩中文字幕在线观看视频| 一级毛片视频播放| 天天做日日爱| 日韩免费片| 成人a级高清视频在线观看| 免费毛片播放| 国产a毛片| 亚洲女初尝黑人巨高清在线观看| 日韩在线观看视频网站| 欧美激情一区二区三区在线| 色综合久久天天综合| 亚欧视频在线| 国产伦久视频免费观看视频| 天堂网中文在线| 久久99这里只有精品国产| 国产网站免费视频| 麻豆系列 在线视频| 台湾毛片| 亚洲女人国产香蕉久久精品| 一级毛片看真人在线视频| 日本在线不卡视频| 成人高清视频免费观看| 午夜欧美福利| 国产一区二区高清视频| 国产亚洲男人的天堂在线观看| 免费一级生活片| 国产欧美精品午夜在线播放| 久久精品免视看国产成人2021| 精品国产一区二区三区久 | 99色视频在线观看| 国产91精品一区二区| 91麻豆精品国产片在线观看| 成人影视在线播放| 亚久久伊人精品青青草原2020|