正如我从"Erlang and OTP in action"一书中所理解的那样,行为一词指的是:
题:
Erlang/OTP初学者应该了解哪些行为?是否有可能简单地描述和理解OTP行为的概念?
什么'回调函数'在Elang/OTP的上下文中实际意味着什么?
我们可以考虑行为实现中的回调,因为Java中的方法会覆盖吗?
该书说,以下代码中库函数'gen_server:start_link/4'的关联回调函数是'Module:init/1'.
这是否意味着使用init/1我们调用gen_server:start_link/4库函数?或者这意味着什么呢?
-module(tr_server).
-behaviour(gen_server).
-include_lib("eunit/include/eunit.hrl").
%% API
-export([
start_link/1,
start_link/0,
get_count/0,
stop/0
]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-define(SERVER, ?MODULE).
-define(DEFAULT_PORT, 1055).
-record(state, {port, lsock, request_count = 0}).
%%%===================================================================
%%% API
%%%===================================================================
%%--------------------------------------------------------------------
%% @doc Starts the server.
%%
%% @spec start_link(Port::integer()) -> {ok, Pid}
%% where
%% Pid = pid()
%% @end
%%--------------------------------------------------------------------
start_link(Port) ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [Port], []).
%% @spec start_link() …Run Code Online (Sandbox Code Playgroud) 我有一些Ruby和Java背景,我习惯于在错误日志中有确切的行数.
因此,如果编译代码中存在错误,我将在控制台输出中看到导致异常的行数.
就像在这个Ruby示例中一样:
my_ruby_code.rb:13:in `/': divided by 0 (ZeroDivisionError)
from my_ruby_code.rb:13
Run Code Online (Sandbox Code Playgroud)
它简单而快速 - 我只需转到第13行并修复错误.
相反,Erlang只是说:
** exception error: no match of right hand side value [xxxx]
in function my_module:my_fun/1
in call from my_module:other_fun/2
Run Code Online (Sandbox Code Playgroud)
没有行号可供查看.
如果我有两行像
X = Param1,
Y = Param2,
Run Code Online (Sandbox Code Playgroud)
在'my_fun'中,怎么能理解问题出在哪一行?
另外,我试图从Vim切换到Emacs + Elang模式,但到目前为止我唯一的奖励就是能够在Emacs(Ck`)中循环编译错误.
因此,编写代码和寻找简单的逻辑错误(如"右手边不匹配")的过程似乎有点麻烦.
我试图在代码中添加许多"io:format"行,但这是需要时间的额外工作.
我也尝试过使用distel,但只需要10步就可以打开调试器一次.
问题:
我已经实现了一个简单的Dijkstra算法,用于在Java上查找.osm地图上的最短路径.
从.osm文件创建的图形中的路径查找效果非常好.但是,如果用户的当前位置和/或目标不是此图的节点(只是原始坐标),我们如何将这些坐标"链接"到图形以使路径查找工作?
简单直接的解决方案"找到最接近当前位置节点并绘制直线"似乎并不现实.如果我们遇到附图所示的情况怎么办?(UPD)

这里的问题是,在我们开始任何"智能"寻路算法(如Dijkstra's)之前,我们将当前位置与图形"链接",但它只是根据毕达哥拉斯定理的一个愚蠢的公式(斜边是一个斜边)来找到最近的节点.地理坐标和这个公式不是"寻路" - 它不能考虑障碍和节点类型.
换句话说 - 如果B是图中的节点,我们如何找到A和B之间的最短路径,而A不是节点?
您是否听说过此问题的其他解决方案?
要求的结果:
具有两个表,"边缘"和"节点"的数据库,可用于生成表示某个区域(例如城市)中所有可行驶道路(高速公路)的图形.数据集是从.osm文件解析的.
背景:
我要第二次尝试创建一个包含两个表的数据库 - 节点和边,可用于对其进行不同的最短路径计算.
首先,我尝试手动将不同的数据提取到数据库中(php脚本):
问题是这个序列非常不可靠,它只能在小型数据集上运行"如此",例如数千个节点,而不是数百万个.
问题:
对于由数百万个节点和边组成的数据库,道路提取(基于某个标签过滤器生成边缘)非常慢.
可能的方法:
我这次要做的事情:
题:
如何正确地将.osm文件解析为数据库以使"边"和"节点"表成为结果?
如何从.osm中仅将可行驶的道路提取到数据库中?
我该如何快速完成(我的意思是为数百万个节点和边缘表运行数小时的脚本,而不是数周)?
我应该考虑到关系吗?
如果是的话,我该怎么做?
SQL和数据库新手的一个问题:
我读过一些关于数据库并发的文章,但同时更新是其中描述最频繁的事情。
但是,我只想从数据库中获取信息。
所以,有以下问题:
是否可以同时从数据库中执行多个 SELECT?这些 SELECT 会干扰吗?情况2可能吗?
通常情况(1):
并发查询案例(2):
erlang ×2
postgresql ×2
callback ×1
debugging ×1
dijkstra ×1
emacs ×1
erlang-otp ×1
geospatial ×1
java ×1
mysql ×1
pythagorean ×1
vim ×1
xml-parsing ×1