小编0xA*_*xAX的帖子

带有抽象数据类型的C双链表

我需要C中的双链表,但它必须适用于不同的类型.在C++中,我们使用模板.我在哪里可以找到C中的示例,用于带有抽象类型项的双链表.

谢谢

c list data-structures

7
推荐指数
1
解决办法
3625
查看次数

我是否需要了解Emacs Lisp才能使用GNU/Emacs

最近,我开始研究GNU/Emacs.是非常容易使用的程序.研究了它的结构.为我调好色.在C编程中将其配置为类.一切似乎都很正常.但现在问题出现在GNU/Emacs lisp上.如果我没有自己开发Emacs并且只使用它像ide进行C/C++开发,邮件,jabber等,我是否真的应该花时间研究Emacs Lisp ...

事实上,当我编辑我的.emacs时,我理解我写的.但我写的大多是现成的脚本,或者它的内容非常简单.

谢谢.

emacs elisp

6
推荐指数
3
解决办法
867
查看次数

Erlang从文件中读取前5行

例如,我有10个文本字符串的txt文件.我怎么能用erlang读取这个文本的前5个字符串?

谢谢.

erlang file-io file

6
推荐指数
1
解决办法
2975
查看次数

Erlang记录项目列表

例如,我有erlang记录:

-record(state, {clients
            }).
Run Code Online (Sandbox Code Playgroud)

我可以从客户字段列表中制作吗?

我可以保留在正常列表中的客户端?如何在此列表中添加一些值?

谢谢.

erlang list record

6
推荐指数
1
解决办法
5043
查看次数

提升从'boost :: filesystem3 :: path'到非标量类型'std :: string的错误转换

我有代码:

std::string firstFile = boost::filesystem::path(first->name()).leaf();
Run Code Online (Sandbox Code Playgroud)

但得到错误:

error conversion from ‘boost::filesystem3::path’ to non-scalar type ‘std::string
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

谢谢.

c++ string boost std

6
推荐指数
1
解决办法
5058
查看次数

找不到erl_nif.h

我尝试使用erlang nif,

我做了:

#include <erl_nif.h>
Run Code Online (Sandbox Code Playgroud)

但得到错误:

致命错误:erl_nif.h:没有这样的文件或目录

我在哪里可以找到它?我安装了erlang R14B(erts-5.8.1)

OS Arch linux.

谢谢.

c erlang erlang-nif

6
推荐指数
1
解决办法
2602
查看次数

Erlang完成或杀死进程

我有erlang应用程序.在这个应用程序中我运行过程spawn(?MODULE, my_foo, [my_param1, my_param2, my_param3]).

而my_foo:

my_foo(my_param1, my_param2, my_param3) ->
  ...
  some code here
  ...
  ok.
Run Code Online (Sandbox Code Playgroud)

当我打开etop时,我看到这个my_foo/3功能状态: proc_lib:sync_wait/2

比我尝试将exit(self(),normal)放在我的函数结尾,但我看到相同的行为:proc_lib:sync_wait/2在etop中.

我怎样才能正确杀死或退出流程?

谢谢.

parallel-processing erlang process

6
推荐指数
1
解决办法
2万
查看次数

懒惰的数据结构评估

我正在读关于haskell的懒惰评估,并有一个问题.例如,我们有以下计算:

Prelude> let x = 1 + 1 :: Int
Prelude> let y = (x,x)
Run Code Online (Sandbox Code Playgroud)

获得价值之后x:

Prelude> :sprint x
x = _
Run Code Online (Sandbox Code Playgroud)

它没有评估.好的,现在让我们获得y的价值:

Prelude> :sprint y
y = (_,_)
Run Code Online (Sandbox Code Playgroud)

它也没有评估,因为y依赖x and it's unevaluated.现在让我们尝试相同的例子但没有::Int:

Prelude> let x = 1 + 1
Prelude> let y = (x, x)
Prelude> :sprint y
y = _
Run Code Online (Sandbox Code Playgroud)

为什么y_,而不是(_, _)当我们试图不::Int

我看到他们有不同的类型:

Prelude> let x = 1 + 1
Prelude> :t …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

6
推荐指数
1
解决办法
109
查看次数

ETS性能的减慢

我围绕ets表的选择性能进行了一些测试,并注意到了奇怪的行为。例如,我们有一个简单的ets表(没有任何特定选项),该表存储键/值-随机字符串和数字:

:ets.new(:table, [:named_table])

for _i <- 1..2000 do
    :ets.insert(:table, {:crypto.strong_rand_bytes(10) 
    |> Base.url_encode64 
    |> binary_part(0, 10), 100})
end
Run Code Online (Sandbox Code Playgroud)

还有一个具有已知密钥的条目:

:ets.insert(:table, {"test_string", 200})
Run Code Online (Sandbox Code Playgroud)

现在有一个简单的愚蠢的基准测试函数,它试图test_string从ets表中多次选择并测量每次选择的时间:

test_fn = fn() ->
  Enum.map(Enum.to_list(1..10_000), fn(x) ->
    :timer.tc(fn() ->
      :ets.select(:table, [{{:'$1', :'$2'}, 
                           [{:'==', :'$1', "test_string"}], 
                           [:'$_']}])
    end)
  end) |> Enum.unzip
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我看看最大时间,Enum.max(timings)它将返回的值大约是所有其他选择值的10倍。因此,例如:

iex(1)> {timings, _result} = test_fn.()
....
....
....
iex(2)> Enum.max(timings)
896
iex(3)> Enum.sum(timings) / length(timings)
96.8845
Run Code Online (Sandbox Code Playgroud)

在这里我们可以看到最大值几乎是平均值的10倍。

这里发生了什么事?它与GC,内存分配时间或诸如此类有关吗?您是否有任何想法,为什么从ets表中进行选择有时会导致这种变慢,或者如何进行分析。

UPD。

这是时序分布图: 在此处输入图片说明

performance elixir ets

6
推荐指数
1
解决办法
87
查看次数

qt写入结束文件

我需要在txt文件的末尾写一些文本.但我只能重写所有文件.如何在文件末尾添加文本?

谢谢.

c++ qt

5
推荐指数
1
解决办法
5316
查看次数