erlang原始碼參考

2021-06-28 12:46:11 字數 780 閱讀 7358

1、資料型別的記憶體

2、siyao同學一系列介紹資料型別實現的文章

erlang資料型別的表示和實現(1)——資料型別回顧

erlang資料型別的表示和實現(2)——eterm 和立即數

erlang資料型別的表示和實現(3)——列表

erlang資料型別的表示和實現(4)——boxed 物件

erlang資料型別的表示和實現(5)——binary

3、erlang/erts**筆記 - 通用hash表

4、erlang原子(atom)的內部實現及應用

5、erlang中list和tuple的構建及轉換的內部實現

題外話,去年,線上伺服器出了atom爆掉的問題(但是後來說又不是,是其他問題),但是我們主程(算吧)看了litaocheng的開發雜記 ,其中有一段,「* 避免使用list_to_atom/1,因為erlang中atom數量最大為1048576, 且不進行gc控制。因此如果持續性的呼叫list_to_atom/1 可能很容易達到系統上限,從而導致emulator terminate。請使用list_to_existing_atom/1。 」,然後將list_to_atom改為catch list_to_existing_atom,崩了,再list_to_atom。現在看來,atom實現是基於index和hash,如果本身出現過的,index和hash是不會變,何來達到系統上限呢?詳細可以看看qingliang的[erlang]list_to_atom與list_to_existing_atom 或者自己去看 實現。

最後,知其然知其所以然。

原始碼分析參考 Dupefilter

負責執行requst的去重,實現的很有技巧性,使用的redis的設定資料結構。但是注意排程並不使用其中用於在這個模組中實現的dupefilter鍵做請求的排程,而是使用queue.py模組中實現的佇列。當請求不重複時,將其存入到佇列中,排程時將其彈出。這個檔案看起來比較複雜,重寫了scrapy本身已...

Spring原始碼學習參考

spring源 解析 一 ioc容器 spring源 解析 二 ioc容器在web容器中的啟動 spring源 解析 三 spring jdbc spring源 解析 四 spring mvc spring源 解析 五 spring aop獲取proxy spring源 解析 六 spring宣告式...

erlang遊戲原始碼 英雄遠征分析

erl p 1024000 k true smp disable name sd2 127.0.0.1 setcookie sd2 mnesia extra db nodes sd1 127.0.0.1 boot start sasl config log s sd gateway start ex...