Mochiweb和webmachine是非常有前途的应用程序,当你看到那些发现他们周围的人正在使用它时.我需要被引导到我可以在mochiweb上找到初学者的教程.似乎没有专门用于该框架的网站.我认为我需要的是一个pdf,一个博客网站或mochiweb的教程,提供了几个如何使用它的例子.我已经是一名二郎程序员,使用氮气,雅司病,Mnesia和OTP等请告诉我方式......
在两对给定的比较中,对于Erlang中的系统资源,哪一对(每对)更昂贵:
Qn1: lists:append(L1,L2)与erlang:'++'(L1,L2)
Qn2相反写入列表的头部说:[NewHead|List]与写入列表末尾的对象:List ++ [NewValue]
我之所以问这个问题,是因为我的程序中有一部分是读写列表的.我需要决定是否要写到列表的头部或写到他们的目的,反之亦然.
我现在已经使用了mnesia一段时间了.我必须承认,我觉得我并不完全理解mnesia的概念:wait_for_tables/2.引用下面的文档说:
Some applications need to wait for certain tables to be accessible in order to do现在,对于我开发的所有应用程序,我必须在启动后端时调用它.在上面的文档中,上下文
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
"Some applications"没有很好地扩展,这就是我的问题所在.
RAM (ram_copies)表,那么我不需要这个我的代码中的方法.现在,我认为如果我只有disc_only_copies,我也不需要这个功能.disc_copies为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?
问题:
帮助和检查我的想法1,2和3.一般来说,只有在处理mnesia表类型时才需要此功能:disc_copies因为这种类型与光盘和RAM上的数据复制有关吗?
如果我的表都是碎片,(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我是否必须调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的碎片的表格类型对此功能也有影响吗?
我一直在HP Proliant服务器上运行高度并发的应用程序.该应用程序是我在erlang中编码的文件系统索引器.它在文件系统上找到每个文件夹的进程,并在碎片化的Mnesia数据库中记录所有文件路径.(数据库由disc_only_copies表的类型组成,其文件系统的屏幕截图可在此处查看.)
执行文件系统的高密度工作的代码片段如下所示:
%%% -------- COPYRIGHT NOTICE -------------------------------------------------------------------- %% @author Muzaaya Joshua, <joshmuza@gmail.com> [http://joshanderlang.blogspot.com] %% @version 1.0 free software, but modification prohibited %% @copyright Muzaaya Joshua (file_scavenger-1.0) 2011 - 2012 . All rights reserved %% @reference <a href="http://www.erlang.org">OpenSource Erlang WebSite</a> %% %%% ---------------- EDOC INTRODUCTION TO THE MODULE ---------------------------------------------- %% @doc This module provides the low level APIs for reading, writing, %% searching, joining and moving within directories.The module implementation %% took place on @date at …
在文档中,我发现了一个实例化如下的商店:
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: "User",
proxy: {
type: 'ajax',
url : 'users.json',
reader: {
type: 'json',
root: 'users'
}
}
});
代理有一个url配置.我对读者特别感兴趣.阅读器指定数据交换格式(json)和根('用户').现在,换句话说,如果存储设置为:autoLoad = true,那么EXT JS将与指定的URL建立Ajax连接read.现在,我如何为上面的同一个商店配置一个作家?有人还告诉我这个:如果我配置一个编写器,它会使用代理中指定的相同URL吗?我仍然对上面显示的代码的上下文中的作者和读者感到困惑,你会帮助我使用上面的例子来展示读者和作者的配置.谢谢.
是否有Erlang的文本压缩库?使用非常长的字符串时,压缩字符数据可能是有利的.有没有人在Erlang中压缩文本或想办法?
我正在考虑使用该zip模块,但我没有使用文件,而是在内存中工作,如下所示:
compress(LargeText)->
Binary = list_to_binary(LargeText),
{ok,{_,Zipped}} = zip:zip("ZipName",[{"Name",Binary}],[memory]),
Zipped.
Run Code Online (Sandbox Code Playgroud)
然后我会unzip在需要时将文本重新记忆.像这样:
{ok,[{"Name",Binary}]} = zip:unzip(Zipped,[memory]).
Run Code Online (Sandbox Code Playgroud)
我的Erlang应用程序应该是中间层的一部分,其中大文本可能必须传递到存储系统和从存储系统传出.存储系统用于存储大文本.要优化存储,需要在发送之前对其进行压缩.假设文本值类似于CLOBOracle数据库中的数据类型.我在想,如果我把拉链和拉链结合起来erlang:garbage_collect/0,我可以把它拉下来.
或者如果在Erlang中不可能,也许可以使用system callvia os:cmd({Some UNIX script})然后我会在Erlang中获取输出?如果有更好的方法,请展示它.
当您向shell进程发送消息时,可以通过调用以下命令清除所有消息: c:flush().
C:\Windows\System32>erl Eshell V5.9 (abort with ^G) 1> self() ! josh. josh 2> self() ! me. me 3> self() ! you. you 4> flush(). Shell got josh Shell got me Shell got you ok 5>
在我的想法中,这会清空shell进程的邮箱.清空任何erlang进程邮箱的等效方法是什么?
Erlang一直是许多"新时代"(淫秽快速和容错)消息传递系统的良好应用.例如可以RabbitMQ的,ejabberd,WhatsApp的移动等不管邮件系统是如何构建的,它需要知道什么会话回事,谁登录,等我认为保持数据IN-MEMORY是不可避免的此类系统.
对于二郎,最大可能是什么,或者允许的最大什么或什么是在记录的正式通知最大数量ETS table还是mnesia RAM table?是否存在特定的表大小,如果超过则会导致整个VM崩溃?不要ETS Tables或Mnesia RAM Tables只要底层操作系统允许它增长到任何金额是多少?我听说过Mnesia Table Limit的2 or 4GB,但我认为这是对磁盘表.
那将需要处理大量的内存数据的未来应用的一个典型例子是OLAP Systems,Real Time analytics,Social Gaming等在这种思路已经激发了这个问题.
当我将原子作为信息发送时,原子是否从一个过程复制到另一个过程?我的想法是,因为这个原子已经存在于VM中,所以不必复制.我知道从一个进程发送到另一个进程时二进制文件更有效.
如果我发送一个触发器消息,从一个进程到另一个进程的常量消息,最好使用:atom或binary?
找到总和 = 100 的任何 5 个数字。这可以在循环中完成,但我向朋友展示了列表理解,结果发现这在我的 Mac Book Pro、酷睿 i7、2.2GHz 上需要 30 多分钟
[[A,B,C,D,E] || A <- lists:seq(1,100),B <- lists:seq(1,100),C <- lists:seq(1,100),D <- lists:seq(1,100),E <- lists:seq(1,100),(A + B + C + D + E) == 100]
如果将问题更改为连续的 5 个数字,则构建的列表理解甚至需要更长的时间。如果我要使用列表理解来解决这个问题,我做得对吗?如果是,为什么需要太长时间?请提供一个可能更快的解决方案,也许使用循环。
erlang ×8
mnesia ×3
linux ×2
append ×1
compression ×1
cryptography ×1
database ×1
elixir ×1
erlang-shell ×1
extjs ×1
extjs4 ×1
html ×1
javascript ×1
jquery ×1
list ×1
mochiweb ×1
mysql ×1
oracle ×1
solaris ×1
unix ×1
webmachine ×1
windows ×1