Skip to content

Instantly share code, notes, and snippets.

View redink's full-sized avatar

taotao redink

  • Sunnyvale
  • 23:21 (UTC -07:00)
View GitHub Profile
defmodule T do
# refc binary
def test do
for _ <- 1..600, do: spawn fn -> start() end
end
defp start do
me = self()
@redink
redink / pmap.ex
Last active April 16, 2019 15:25
defmodule Pmap do
@moduledoc """
Documentation for Pmap.
"""
def pmap(list, func) do
pmap(self(), 0, list, func, [])
end
@doc false
@redink
redink / c2.rs
Created April 13, 2019 03:17
chapter 2 code example
use std::collections::VecDeque;
use std::collections::BTreeMap;
use std::fmt::Debug;
fn main() {
answer();
transfer_ownership();
ref_example();
fn_example();
scope_example();
defmodule Trade.MatchServer do
use GenServer
require Logger
@buy_queue :buy_queue
@sell_queue :sell_queue
@unhandled 0
@before_generate_tx 1
@after_generate_tx 2

对于beam 来说,一般有几种存储数据的方式:

  • process dictionary
  • ETS table

如果把gen server 的state 也算是一种方式的话,那么还有:

  • gen server state

在Elixir 的Macro 中,提供了很方便的方式,可以在编译期将数据编译成beam,最简单的方式就是使用 @expr,关于@ 的详细文档,可以参见 here.

% sys.erl
get_state(Name) ->
case send_system_msg(Name, get_state) of
{error, Reason} -> error(Reason);
State -> State
end.
send_system_msg(Name, Request) ->
case catch gen:call(Name, system, Request) of
{ok,Res} -> Res;
This file has been truncated, but you can view the full file.
#Fields: timestamp time-taken c-ip filesize s-ip s-port sc-status sc-bytes cs-method cs-uri-stem - rs-duration rs-bytes c-referrer c-user-agent customer-id x-ec_custom-1
1523756544 3 86.45.165.83 1845784 152.195.141.240 80 TCP_HIT/200 1846031 GET http://c13.adrise.tv/04C0BF/v2/sources/content-owners/sgl-entertainment/275211/v0401185814-1389k.mp4+740005.ts - 0 486 "-" "TubiExoPlayer/2.12.9 (Linux;Android 6.0) ExoPlayerLib/2.4.2" 49343 "-"
1523756611 58 86.165.81.111 3364824 152.195.141.240 80 TCP_HIT/200 3365071 GET http://c13.adrise.tv/04C0BF/v2/sources/content-owners/sgl-entertainment/326260/v20169101326-1256x544-3063k.mp4+3713710.ts - 0 616 "-" "Mozilla/5.0 (Linux; Android 5.1.1; AFTT Build/LVY48F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36" 49343 "-"
1523756639 3 88.110.35.157 2227424 152.195.141.240 80 TCP_HIT/200 2227671 GET http://c13.adrise.tv/04C0BF/v2/sources/content-owners/cinedigm-tubi/398629/v201711170053-2061k.mp4+4582327.ts - 0 604 "-" "Mozi
%%%-------------------------------------------------------------------
%%% @author redink
%%% @copyright (C) , redink
%%% @doc
%%%
%%% @end
%%% Created : by redink
%%%-------------------------------------------------------------------
-module(rcursor).
-module('1e_sort').
-compile(export_all).
-define(max_scope, 100000000).
-define(start_step, 1000000).
-define(user_table_num, 10).
start(N) ->
ets:new(scope_total_table, [named_table, ordered_set, public]),
-module(gen_server_call_timeout).
%% API
-behaviour(gen_server).
%% API
-export([start/0]).
-export([run/2]).
-export([multi_run/0]).
-export([i/0]).