我对人工智能感兴趣,并希望跟上最新的人工智能研究.有人可以推荐我应该阅读的前2-3种AI期刊吗?
((请原谅我,我在一个帖子中提出了不止一个问题.我认为它们是相关的.))
您好,我想知道,Erlang中有关每模块预编译数据的最佳实践.
示例:我有一个模块,它在一个熟悉的知识,复杂的正则表达式上运行.re:compile/2的文档说:"编译一次并执行多次比每次想要匹配时编译效率要高得多".由于没有指定re的mp()数据类型,因此如果你想要一个目标独立的梁,就不能在编译时放入,因此必须在运行时编译RegEx.((注意: re:compile/2只是一个例子.任何复杂的memoize函数都适合我的问题.))
Erlang的模块(可以)有一个-on_load(F/A)属性,表示在加载模块时应该执行一次的方法.因此,我可以将我的正则表达式编译为此方法并将结果保存在名为的新ets表中?MODULE.
我的问题是:
工作范例:
-module(memoization).
-export([is_ipv4/1, fillCacheLoop/0]).
-record(?MODULE, { re_ipv4 = re_ipv4() }).
-on_load(fillCache/0).
fillCacheLoop() ->
receive
{ replace, NewData, Callback, Ref } ->
true = ets:insert(?MODULE, [{ data, {self(), NewData} }]),
Callback ! { on_load, Ref, ok },
?MODULE:fillCacheLoop();
purge ->
ok
end
.
fillCache() ->
Callback = self(),
Ref = make_ref(),
process_flag(trap_exit, true),
Pid = …Run Code Online (Sandbox Code Playgroud) 我刚刚发现了一个仍然使用CVS的开源项目.我想知道现在还有什么理由比CVN或Git更喜欢CVS.(我不认为懒得迁移作为答案!;-))
CVS有其他两个缺乏的东西吗?比如说,支持$ OS或$ fancy_tool?
在" 使用SVN而不是CVS有什么好处?"有详细解释为什么不使用CVS.但我想反过来问问.CVS不可能都是坏事.或者是吗?
在Erlang中,当您有一个可打印字符列表时,它是一个字符串,但字符串也是一个项目列表,列表的所有功能都可以应用到字符串中.理想情况下,数据结构:字符串在erlang中不存在.
我的部分代码需要确保某些东西不仅是一个列表,而且是一个字符串.(一个真正的字符串).它需要将列表分开,例如 [1,2,3,a,b,"josh"] ,从字符串中分离出来 "Muzaaya" .保护表达式is_list/1将对true字符串和列表说明.没有这样的警卫,所以这意味着我需要一个代码片段来确保我的数据是一个字符串.在这种情况下,字符串是仅可打印的列表(字母,两种情况,上部和下部),并且可以包含数字,例如is_string/1"Muzaaya2536 618 Joshua".我需要一个代码片段(Erlang)来检查我并确保变量是一个字符串,而不仅仅是一个列表.谢谢
我想你可以把它归类为拼字游戏风格的问题,但它起初是因为一位朋友提到了英国电视智力竞赛节目Countdown.在节目中的各种轮次涉及参赛者被提出一组乱七八糟的字母,他们必须提出他们可以用的最长的单词.我朋友提到的那个是"RAEPKWAEN".
在相当短的时间内,我用Python来处理这个问题,使用PyEnchant处理字典查找,但是我注意到它实际上无法很好地扩展.
这是我目前的情况:
#!/usr/bin/python
from itertools import permutations
import enchant
from sys import argv
def find_longest(origin):
s = enchant.Dict("en_US")
for i in range(len(origin),0,-1):
print "Checking against words of length %d" % i
pool = permutations(origin,i)
for comb in pool:
word = ''.join(comb)
if s.check(word):
return word
return ""
if (__name__)== '__main__':
result = find_longest(argv[1])
print result
Run Code Online (Sandbox Code Playgroud)
这对他们在节目中使用的9个字母的例子来说很好,9 factorial = 362,880和8 factorial = 40,320.在那个等级上,即使它必须检查所有可能的排列和字长,也不是那么多.
然而,一旦你达到14个字符,那就是87,178,291,200可能的组合,这意味着你很依赖运气,很快找到一个14个字符的单词.
通过上面的示例单词,我的机器大约需要12 1/2秒才能找到"重新唤醒".有了14个字符的乱码,我们可以用23天的规模来讨论所有可能的14个字符排列.
有没有更有效的方法来处理这个?
Fabric.js有这个非常酷的方面,默认情况下它允许所有对象都是"可选择的",这意味着它们可以被拖动,调整大小和旋转.但是,我希望它们只能被拖拽,不能调整大小或旋转.这可能吗?如果需要的话,我不介意与源码混淆,这比自己重新实现更好.
我正在阅读http://docs.python.org/2/tutorial/modules.html#more-on-modules,并想知道以下内容是否正确:
模块可以导入其他模块.习惯但不要求将所有import语句放在模块的开头(或脚本,就此而言).导入的模块名称放在导入模块的全局符号表中.
显然不是:
>>> def foo(): import sys
...
>>> foo()
>>> sys.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
Run Code Online (Sandbox Code Playgroud)
有关在线演示,请访问http://ideone.com/cLK09v.
那么,它是Python文档中的错误还是我不明白?
我需要使用pthreat但我不需要将任何参数传递给函数.因此,我将NULL传递给pthread_create上的函数.我有7个pthreads,所以gcc编译器警告我有7个未完成的参数.如何在C编程中将这7个参数定义为未使用?如果我没有将这些参数定义为未使用,是否会导致任何问题?提前感谢您的回复.
void *timer1_function(void * parameter1){
//<statement>
}
int main(int argc,char *argv[]){
int thread_check1;
pthread_t timer1;
thread_check1 = pthread_create( &timer1, NULL, timer1_function, NULL);
if(thread_check1 !=0){
perror("thread creation failed");
exit(EXIT_FAILURE);
}
while(1){}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要在SQLAlchemy中创建一个BEFORE INSERT 触发器:
DELIMITER |
CREATE TRIGGER set_rank BEFORE INSERT ON authors
FOR EACH ROW BEGIN
IF NEW.rank = 0 THEN
SET NEW.rank = (SELECT IFNULL(MAX(a.rank),0) + 1
FROM authors AS a
WHERE a.id = NEW.pub_id);
END IF;
END |
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
在mysql-workbench中执行代码的工作正常,但在我的实际代码中执行时会出现"你的SQL语法中有错误"异常:
from sqlalchemy.sql.expression import text
connection = db.session.connection()
text(..., connection).execute();
Run Code Online (Sandbox Code Playgroud)
跑步SELECT SLEEP(1),CREATE TABLE test (id INT)甚至USE some_db工作得很好.
这是我得到的mysql错误消息:
(1064,"你的SQL语法有错误; ...'DELIMITER附近| \n \n \n创建TRIGGER set_rank BE ...")
我很确定我错误地使用了DELIMITER.在这个环境中什么是正确的语法/如何解决我的问题?
我的情况是这样的:
多个线程必须同时写入同一个集合(add和addrange).物品的顺序不是问题.当所有线程都完成(加入)并且我回到我的主线程上时,我需要以foreach样式快速读取所有收集的数据,因为所有线程都完成后不需要实际锁定.
在"过去的日子"中,我可能会在List上使用读写器锁,但是对于新的并发集合,我想知道是否有更好的选择.我只是无法弄清楚哪些并发集合似乎假设读者也在并发线程上.