周围有一些数据结构非常有用,但大多数程序员都不知道.他们是哪一个?
每个人都知道链接列表,二叉树和哈希,但是例如跳过列表和布隆过滤器.我想知道更多不常见的数据结构,但值得了解,因为它们依赖于很棒的想法并丰富了程序员的工具箱.
PS:我也对像跳舞链接这样的技巧感兴趣,这些技巧巧妙地使用了常见数据结构的属性.
编辑:请尝试更详细地包含指向描述数据结构的页面的链接.此外,尝试添加几个关于数据结构为什么很酷的词(正如JonasKölker已经指出的那样).此外,尝试为每个答案提供一个数据结构.这将允许更好的数据结构根据他们的投票单独浮动到顶部.
我需要配置一个SMTP服务器来测试我发送电子邮件的网站(用于注册确认等).
我真的不希望发送电子邮件,我只是想确保我的代码是正确的.所以我希望能够检查电子邮件是否放在队列文件夹中.
任何人都可以推荐一个易于配置的SMTP服务器吗?
如果我有一个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解决方案.
我已经设法最终构建并运行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识别铅笔和意大利面等常用词?
谢谢
-麦克风
我知道我不是唯一一个不喜欢进度条或时间估计的人,他们在软件中给出了不切实际的估计.最好的例子是安装程序,在10秒内从0%跳到90%,然后花一个小时完成最后的10%.
大多数时候程序员只是估计完成任务的步骤,然后以百分比显示currenttep/totalsteps,忽略了每个步骤可能需要不同时间才能完成的事实.例如,如果将行插入数据库,插入时间可能会随着插入行数的增加而增加(简单示例),或者复制文件的时间不仅取决于文件的大小,还取决于文件的位置.磁盘和碎片是多么碎片化.
今天,我问自己是否有人已经尝试过对此进行建模,并且可能创建了一个带有可配置稳健估算器的库.我知道很难给出可靠的估计,因为外部因素(网络连接,用户运行其他程序等)发挥了作用.
也许还有一种解决方案使用分析来建立更好的估算器,或者可以使用机器学习方法.
有谁知道这个问题的高级解决方案?
与此相关,我发现文章重新思考进度条非常有意义.它显示了进度条如何改变时间感,以及如何使用这些洞察力创建似乎更快的进度条.
编辑:我可以想办法如何手动调整时间估计,即使使用"估算器库",我将不得不微调算法.但我认为这个问题可以用统计工具解决.当然,估算器会在流程期间收集数据,以便为后续步骤创建更好的估算值.
我现在所做的是采取上一步所采取的平均时间(按类型分组的步骤,并通过例如文件大小,交易大小进行标准化),并将此平均值作为后续步骤的估计值(再次:计算不同类型和大小).
现在,我知道有更好的统计工具来创建估算器,我想知道是否有人将这些应用于问题.
language-agnostic statistics estimation machine-learning progress-bar
Windows文件系统(FAT,NTFS)不关心文件名的大小写(不区分大小写).因此,在Windows上运行的程序(如Apache Web服务器)处理文件不区分大小写.
在Windows上创建网站时,您无意中创建了与实际文件名不匹配的链接等.在将网站部署到区分大小写的文件系统之前,您通常会注意到这些错误(在Linux,UNIX,...上是默认的).
现在,我想知道是否有办法通过使Apache Web服务器以某种方式关心案例来避免这些错误,即使文件系统不关心.我的意思是NTFS在文件名中的大写和小写字母之间确实不同,因此理论上可以检查文件名是否以区分大小写的方式匹配.
我知道像" 只使用小写 " 这样的命名约定可以帮助避免这些问题,但这对现有文件没有帮助并且不太方便:-)
此外,不使用Windows不是一种选择.我不自愿使用Windows,在这种情况下不可能在不同的平台上运行Apache.
我遇到以下问题:
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
阿波斯托
是否有一个Java库可以读取非常大的图像(例如JPEG)文件(> 10,000 x 10,000像素)的区域,而不会将整个图像保留在内存中.
或者,哪个Java库能够以最小的开销处理非常大的图像文件.
我正在寻找一种简单的方法来生成合成视频来测试计算机视觉软件.
目前我只知道一种针对这种需求的工具: ObjectVideo虚拟视频(OVVV).它是一个HalfLife 2 mod,可以模拟虚拟世界中的相机.
但我正在寻找一个更开放的(如在开源中)和可能的便携式解决方案.一种方法是在十几个开源3D引擎之一上实现所需的功能.但是,如果有人知道已经实现像OVVV那样的库或工具,那将会很棒.
此外,如果您没有一个现成的解决方案:您将如何解决这个问题?
PS:我在这里问的原因是我想尽量减少我在这个问题上的努力.并不是我不知道该怎么做.但我的解决方案需要我投入大量时间.所以我在这里寻找具体的提示... :-)
我在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) .net ×3
testing ×2
3d ×1
apache ×1
c# ×1
c#-4.0 ×1
eclipse ×1
estimation ×1
file ×1
gwidgets ×1
hardware ×1
ienumerable ×1
iterator ×1
jai ×1
java ×1
progress-bar ×1
r ×1
random ×1
simulation ×1
smtp ×1
sparql ×1
sphinx ×1
statistics ×1
video ×1
windows ×1