小编f3l*_*lix的帖子

什么是鲜为人知但有用的数据结构?

周围有一些数据结构非常有用,但大多数程序员都不知道.他们是哪一个?

每个人都知道链接列表,二叉树和哈希,但是例如跳过列表布隆过滤器.我想知道更多不常见的数据结构,但值得了解,因为它们依赖于很棒的想法并丰富了程序员的工具箱.

PS:我也对像跳舞链接这样的技巧感兴趣,这些技巧巧妙地使用了常见数据结构的属性.

编辑:请尝试更详细地包含指向描述数据结构的页面的链接.此外,尝试添加几个关于数据结构为什么很酷的词(正如JonasKölker已经指出的那样).此外,尝试为每个答案提供一个数据结构.这将允许更好的数据结构根据他们的投票单独浮动到顶部.

language-agnostic computer-science data-structures

796
推荐指数
52
解决办法
35万
查看次数

使用.net测试SMTP

我需要配置一个SMTP服务器来测试我发送电子邮件的网站(用于注册确认等).

我真的不希望发送电子邮件,我只是想确保我的代码是正确的.所以我希望能够检查电子邮件是否放在队列文件夹中.

任何人都可以推荐一个易于配置的SMTP服务器吗?

.net testing smtp

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

C#或滑动窗口枚举器中的成对迭代

如果我有一个IEnumerable像:

string[] items = new string[] { "a", "b", "c", "d" };
Run Code Online (Sandbox Code Playgroud)

我想循环通过所有连续项目(大小为2的滑动窗口).这将是

("a","b"), ("b", "c"), ("c", "d")
Run Code Online (Sandbox Code Playgroud)

我的解决方案就是这样

    public static IEnumerable<Pair<T, T>> Pairs(IEnumerable<T> enumerable) {
        IEnumerator<T> e = enumerable.GetEnumerator(); e.MoveNext();
        T current = e.Current;
        while ( e.MoveNext() ) {
            T next = e.Current;
            yield return new Pair<T, T>(current, next);
            current = next;
        }
    }

 // used like this :
 foreach (Pair<String,String> pair in IterTools<String>.Pairs(items)) {
    System.Out.PrintLine("{0}, {1}", pair.First, pair.Second)
 }
Run Code Online (Sandbox Code Playgroud)

当我编写这段代码时,我想知道.NET框架中是否已经存在执行相同操作的函数,并且它不仅适用于对,而且适用于任何大小的元组.恕我直言应该有一个很好的方法来做这种滑动窗口操作.

我使用C#2.0,我可以想象使用C#3.0(w/LINQ)有更多(更好)的方法来做到这一点,但我主要对C#2.0解决方案感兴趣.不过,我也很欣赏C#3.0解决方案.

.net c# ienumerable iterator

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

Pocketsphinx - 添加单词并提高准确性

我已经设法最终构建并运行pocketsphinx(pocketsphinx_continuous).我遇到的问题是如何提高准确性.据我所知,您可以指定字典文件(-dict test.dic).所以我采用了默认的字典文件并添加了一些相同单词的发音,例如:

pencil P EH N S AH L
pencil(2) P EH N S IH L

spaghetti S P AH G EH T IY
spaghetti(2) S P UH G EH T IY
Run Code Online (Sandbox Code Playgroud)

然而,pocketphinx仍然无法识别任何一个词.我知道你也可以指定一个jsgf文件,但对于短语和语法来说似乎更多.如何让pocketphinx识别铅笔和意大利面等常用词?

谢谢

-麦克风

speech-recognition sphinx speech-to-text

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

进度条的现实时间估计等

我知道我不是唯一一个不喜欢进度条或时间估计的人,他们在软件中给出了不切实际的估计.最好的例子是安装程序,在10秒内从0%跳到90%,然后花一个小时完成最后的10%.

大多数时候程序员只是估计完成任务的步骤,然后以百分比显示currenttep/totalsteps,忽略了每个步骤可能需要不同时间才能完成的事实.例如,如果将行插入数据库,插入时间可能会随着插入行数的增加而增加(简单示例),或者复制文件的时间不仅取决于文件的大小,还取决于文件的位置.磁盘和碎片是多么碎片化.

今天,我问自己是否有人已经尝试过对此进行建模,并且可能创建了一个带有可配置稳健估算器.我知道很难给出可靠的估计,因为外部因素(网络连接,用户运行其他程序等)发挥了作用.

也许还有一种解决方案使用分析来建立更好的估算器,或者可以使用机器学习方法.

有谁知道这个问题的高级解决方案?


与此相关,我发现文章重新思考进度条非常有意义.它显示了进度条如何改变时间感,以及如何使用这些洞察力创建似乎更快的进度条.


编辑:我可以想办法如何手动调整时间估计,即使使用"估算器库",我将不得不微调算法.但我认为这个问题可以用统计工具解决.当然,估算器会在流程期间收集数据,以便为后续步骤创建更好的估算值.

我现在所做的是采取上一步所采取的平均时间(按类型分组的步骤,并通过例如文件大小,交易大小进行标准化),并将此平均值作为后续步骤的估计值(再次:计算不同类型和大小).

现在,我知道有更好的统计工具来创建估算器,我想知道是否有人将这些应用于问题.

language-agnostic statistics estimation machine-learning progress-bar

16
推荐指数
2
解决办法
2975
查看次数

我可以让在Windows上运行的Apache区分大小写吗?

Windows文件系统(FAT,NTFS)不关心文件名的大小写(不区分大小写).因此,在Windows上运行的程序(如Apache Web服务器)处理文件不区分大小写.

在Windows上创建网站时,您无意中创建了与实际文件名不匹配的链接等.在将网站部署到区分大小写的文件系统之前,您通常会注意到这些错误(在Linux,UNIX,...上是默认的).

现在,我想知道是否有办法通过使Apache Web服务器以某种方式关心案例来避免这些错误,即使文件系统不关心.我的意思是NTFS在文件名中的大写和小写字母之间确实不同,因此理论上可以检查文件名是否以区分大小写的方式匹配.


我知道像" 只使用小写 " 这样的命名约定可以帮助避免这些问题,但这对现有文件没有帮助并且不太方便:-)

此外,不使用Windows不是一种选择.我不自愿使用Windows,在这种情况下不可能在不同的平台上运行Apache.

windows apache file

14
推荐指数
1
解决办法
8238
查看次数

13
推荐指数
1
解决办法
3007
查看次数

11
推荐指数
2
解决办法
618
查看次数

真(非伪)随机数生成器.有什么?

我正在寻找能产生真正随机数的经济实惠的解决方案.

我找到了LavaRnd,它是一个加密声音的随机数发生器.有没有人在这个领域有经验和/或了解其他解决方案?

PS:恕我直言,问题真正的随机数发生器并没有真正涵盖这一点


编辑:

我的好奇心更多是学术性的.我不想知道PRNG对于实际应用来说已经足够好了.我知道他们存在并且他们会这样做.

当然,生成真正的随机数将需要硬件设备.这就是我用硬件标记的原因.

hardware random

9
推荐指数
3
解决办法
6345
查看次数

gwidgets gtable刷新

我遇到以下问题:

library(gWidgets)
options(guiToolkit = "RGtk2")

aa <- c(1,2,3)
bb <- c(4,5,6)
cc <- cbind(aa,bb)
cc <-as.data.frame(cc)

t1 <- gtable(cc, container=TRUE)
Run Code Online (Sandbox Code Playgroud)

我想用以下内容刷新t1的内容:

dd <- c(7,8,9)
dd <- as.data.frame(dd)
Run Code Online (Sandbox Code Playgroud)

但是当我跑步的时候

t1[] <- dd
Run Code Online (Sandbox Code Playgroud)

我收到: Can't replace with fewer columns

阿波斯托

r gwidgets

8
推荐指数
1
解决办法
1385
查看次数

从Java中的非常大的图像文件中读取区域

是否有一个Java库可以读取非常大的图像(例如JPEG)文件(> 10,000 x 10,000像素)的区域,而不会将整个图像保留在内存中.

或者,哪个Java库能够以最小的开销处理非常大的图像文件.

java image-processing jai

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

用于评估计算机视觉算法的模拟和合成视频生成

我正在寻找一种简单的方法来生成合成视频来测试计算机视觉软件.

目前我只知道一种针对这种需求的工具: ObjectVideo虚拟视频(OVVV).它是一个HalfLife 2 mod,可以模拟虚拟世界中的相机.

但我正在寻找一个更开放的(如在开源中)和可能的便携式解决方案.一种方法是在十几个开源3D引擎之一上实现所需的功能.但是,如果有人知道已经实现像OVVV那样的库或工具,那将会很棒.

此外,如果您没有一个现成的解决方案:您将如何解决这个问题?

PS:我在这里问的原因是我想尽量减少我在这个问题上的努力.并不是我不知道该怎么做.但我的解决方案需要我投入大量时间.所以我在这里寻找具体的提示... :-)

testing simulation 3d video computer-vision

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

如何计算Sparql Query中的行数

我在Eclipse中工作并使用2个Java文件:Admin.java和SemanticSearch.java.通过Admin.java我登录并检查我的RDF文件中是否存在用户名和密码.Admin.java中的登录功能调用运行SPARQL查询的SemanticSearch.java.我的查询在Eclipse的Console中给我答案,甚至在另一个文件上.现在我的工作是通过返回值或通过计算行并将该值发送到Admin.java来回复Admin.java的答案.如果行数为1表示用户名和密码匹配,我可以允许用户登录.

但我无法这样做.我已经尝试使用count(),Count()作为CNT,甚至尝试过int res = results.next.但似乎没有任何帮助.

我粘贴下面的代码:

Admin.java

SemanticSearch semsearch = new SemanticSearch(request.getSession());
semsearch.loadData(REALPATH + RDFDATASOURCEFILE1);
semsearch.searchForUser(response.getOutputStream(),null, userName, password);
Run Code Online (Sandbox Code Playgroud)

在SemanticSearch.java中

public void searchForUser(OutputStream out, String xslfile1, String userName, String password) {
    String prolog = "PREFIX kb:<"+VUSER.getURI()+">";
    System.out.println("Search for user in semantic search.java"); 
    String queryString1 = prolog +"\n" +"SELECT * " +"WHERE {" +"?x kb:Uname ?username. ?x kb:Password ?password. ?x kb:Interest ?interest. " +"FILTER regex(?username, \"" +userName +"\")}";

    System.out.println(queryString1);
    Query query=QueryFactory.create(queryString1);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    ResultSet results1 = qexec.execSelect(); --> here …
Run Code Online (Sandbox Code Playgroud)

eclipse sparql

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