我们得到两个列表xs :: [a]和ys :: [Int]。例如:
xs = ["some", "random", "text"]
ys = [2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
我们必须生成一个新列表zs :: [a],它zs是xs生成 using的排列ys。对于上面的例子:
zs = ["random", "text", "some"]
Run Code Online (Sandbox Code Playgroud)
解释:“random”出现在第 2 个位置xs,“text”出现在第 3 个位置,“some”出现在第一个位置。
到目前为止,我已经找到了这个解决方案:
f :: [a] -> [Int] -> [a]
f xs ys = getList (listArray (1, n) xs) ys where
n = length xs
getList :: Array Int a -> [Int] -> [a]
getList a ys = [ …Run Code Online (Sandbox Code Playgroud) 在我的rake任务中,我通过pgbouncer设置连接到postgresql.对于某些查询,我收到此错误:
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() could not receive data from server: Connection timed out
Run Code Online (Sandbox Code Playgroud)
在我的pgbouncer日志中,我看到了这个条目:
closing because: client unexpected eof (age=3110)
Run Code Online (Sandbox Code Playgroud)
我在我的config/database.yml文件中禁用transaction pool_mode了预准备语句,并在我的pgbouncer配置文件中启用.当我直接连接到postgres时,我没有收到此错误.
同样在我的rake任务中,我正在创建多个线程.我ActiveRecord::Base.connection.reconnect!按照这里的建议尝试在我的线程内运行.这也没有帮助.
我正在使用rails版本4.2.5,它有此修复程序.我仍然收到此错误"无法从服务器接收数据:连接超时".
postgresql activerecord multithreading ruby-on-rails pgbouncer