小编Rob*_*obV的帖子

快速简单的哈希码组合

人们可以推荐快速简单的方法来组合两个对象的哈希码.我并不太担心碰撞,因为我有一个Hash Table可以有效地处理这个问题我只想要尽可能快地生成代码的东西.

阅读SO和网络似乎有几个主要候选人:

  1. 异或
  2. 使用Prime乘法进行异或
  3. 简单的数字运算,如乘法/除法(溢出检查或环绕)
  4. 构建一个String然后使用String类的Hash Code方法

人们会推荐什么?为什么?

c# algorithm hash hashcode

55
推荐指数
5
解决办法
3万
查看次数

将点文件(graphviz)转换为图像时如何设置分辨率?

我试过了

$ dot -Tpng rel_graph.gv > rel_graph.png
Run Code Online (Sandbox Code Playgroud)

但是生成的图像质量很差.

dot graphviz

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

三重商店与关系数据库

我想知道在关系数据库中使用Triple Stores有什么好处?

semantic-web sparql relational-database jena

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

如果我在调用JVM时多次指定一个System属性使用哪个值?

如果我在调用JVM时多次指定系统属性,当我检索属性时,我将实际得到哪个值?例如

java -Dprop=A -Dprop=B -jar my.jar
Run Code Online (Sandbox Code Playgroud)

我打电话的结果是什么System.getProperty("prop");

关于这个的Java文档并没有真正告诉我这方面有用的东西.

在我对运行不同JVM的几台机器进行的非科学测试中,似乎最后一个值是返回的值(这实际上是我需要的行为)但是我想知道这种行为是否在任何地方正式定义,或者它是否可以在JVM之间变化?

java jvm system-properties

19
推荐指数
2
解决办法
8922
查看次数

为什么C#中没有ReverseEnumerator?

有没有人知道是否有特定原因或设计决定不在C#中包含反向调查员?如果有一个与C++ reverse_iterator相同的东西,就像Enumerator相当于C++ 那样会很好iterator.可以反向迭代的集合只会实现像IReverseEnumerable这样的东西,可以做类似的事情:

List<int>.ReverseEnumerator ritr = collection.GetReverseEnumerator();
while(rtir.MoveNext())
{
 // do stuff
}
Run Code Online (Sandbox Code Playgroud)

这样,您就可以以相同的方式迭代Lists和LinkedLists,而不是使用索引器为另一个链接和之前的链接,从而实现更好的抽象

c# enumerator

17
推荐指数
2
解决办法
7700
查看次数

高效的笛卡尔积算法

有人可以为我演示一个比我目前使用的更有效的笛卡尔积算法(假设有一个).我环顾四周,谷歌搜索了一下,但看不到任何明显的东西,所以我可能会遗漏一些东西.

foreach (int i in is) {
   foreach (int j in js) {
      //Pair i and j
   }
}
Run Code Online (Sandbox Code Playgroud)

这是我在代码中所做的高度简化的版本.两个整数是查找键,用于检索一个/多个对象,两个查找中的所有对象一起组合成新对象.

在一个更大更复杂的系统中,这个小块代码成为一个主要的性能瓶颈,因为它在规模上运行的数据集.其中一些可能通过改进用于存储对象的数据结构和所涉及的查找来减轻,但我认为主要问题仍然是笛卡尔积本身的计算.

编辑

关于我对算法的具体用法的更多背景,看看是否有任何技巧可以用来回应Marc的评论.整个系统是一个SPARQL查询引擎,它处理多组Graph数据的SPARQL查询,SPARQL是一种基于模式的语言,因此每个查询都包含一系列与Graph匹配的模式.在两个后续模式没有公共变量(它们是不相交的)的情况下,有必要计算由两个模式产生的解的笛卡尔积,以获得整个查询的可能解的集合.可能存在任何数量的模式,我可能需要多次计算笛卡尔积,如果查询由一系列不相交的模式组成,则可能导致可能解决方案的相当指数级扩展.

从现有的答案不知何故,我怀疑是否有任何技巧可以应用

更新

所以我想我会发布我实施的内容的更新,以便最大限度地减少对笛卡尔积的需求,从而优化查询引擎.请注意,并不总是可以完全消除对产品的需求,但几乎总是可以进行优化,因此连接的两组的尺寸要小得多.

由于作为一组三元模式的每个BGP(基本图形模式)作为一个块执行(实质上),引擎可以自由地重新排序BGP中的模式以获得最佳性能.例如,考虑以下BGP:

?a :someProperty ?b .
?c :anotherProperty ?d .
?b a :Class .
Run Code Online (Sandbox Code Playgroud)

按原样执行查询需要笛卡尔积,因为第一个模式的结果与第二个模式不相交,因此前两个模式的结果是其各自结果的笛卡尔积.这个结果将包含比我们实际需要的结果多得多的结果,因为第三个模式限制了第一个模式的可能结果,但我们直到之后才应用此限制.但如果我们这样重新排序:

?b a :Class .
?a :someProperty ?b .
?c :anotherProperty ?d .
Run Code Online (Sandbox Code Playgroud)

我们仍然需要笛卡尔积来获得最终结果,因为第二和第三种模式仍然是不相交的,但通过重新排序我们限制第二种模式的结果大小意味着我们的笛卡尔积的大小将小得多.

我们还有一些其他的优化方法,但是我不打算在这里发布它们,因为它开始对SPARQL引擎内部进行相当详细的讨论.如果有人对更多细节感兴趣,请发表评论或发送推文@RobVesse

c# algorithm performance cartesian-product

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

.Net HashSet唯一性计算完全基于哈希码吗?

我想知道.Net HashSet<T>是完全基于哈希码还是它是否也使用了相等?

我有一个特定的类,我可能会实例化数百万个实例,并且有一些合理的可能性,在这一点上一些哈希码会发生冲突.

我正在考虑使用HashSet来存储这个类的一些实例,我想知道它是否真的值得做 - 如果一个元素的唯一性只是根据它的哈希码确定那么那对我来说对于实际的应用程序毫无用处

MSDN文档在这个主题上似乎相当模糊 - 任何启示都会受到赞赏

.net c# hashset gethashcode

12
推荐指数
1
解决办法
946
查看次数

HttpWebRequest长URI解决方法?

我遇到了HttpWebRequest的问题,如果URI长度超过2048个字符,则请求失败并返回404错误,即使服务器完全能够为URI长的请求提供服务.我知道这一点,因为如果通过HttpWebRequest提交导致错误的相同URI在直接粘贴到浏览器地址栏时工作正常.

我目前的解决方法是允许用户设置一个兼容性标志,以便将参数作为POST请求发送是安全的,而不是在URI太长的情况下,但这并不理想,因为我使用的协议是RESTful和GET应该用于查询.此外,没有任何保证协议的其他实现者将接受POSTed查询

在.Net中是否有另一个类具有与HttpWebRequest相同的功能,而不受我可以使用的URI长度限制的影响?
我知道WebClient,但我真的不想使用它,因为我需要能够完全控制WebClient限制其能力的HTTP标头.

编辑

因为Shoban要求它:

http://localhost/BBCDemo/sparql/?query=PREFIX+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+xsd%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%23%3E%0D%0APREFIX+skos%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0D%0APREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0APREFIX+po%3A+%3Chttp%3A%2F%2Fpurl.org%2Fontology%2Fpo%2F%3E%0D%0APREFIX+timeline%3A+%3Chttp%3A%2F%2Fpurl.org%2FNET%2Fc4dm%2Ftimeline.owl%23%3E%0D%0ASELECT+*+WHERE+{%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+dc%3Atitle+%3Ftitle+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Ashort_synopsis+%3Fsynopsis-short+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Amedium_synopsis+%3Fsynopsis-med+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Along_synopsis+%3Fsynopsis-long+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Amasterbrand+%3Fchannel+.%0D%0A++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Agenre+%3Fgenre+.%0D%0A++++%3Fchannel+dc%3Atitle+%3Fchanneltitle+.%0D%0A++++OPTIONAL+{%0D%0A++++++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Abrand+%3Fbrand+.%0D%0A++++++++%3Fbrand+dc%3Atitle+%3Fbrandtitle+.%0D%0A++++}%0D%0A++++OPTIONAL+{%0D%0A++++++++%3Chttp%3A%2F%2Fwww.bbc.co.uk%2Fprogrammes%2Fb00n4d6y%23programme%3E+po%3Aversion+%3Fver+.%0D%0A++++++++%3Fver+po%3Atime+%3Finterval+.%0D%0A++++++++%3Finterval+timeline%3Astart+%3Fstart+.%0D%0A++++++++%3Finterval+timeline%3Aend+%3Fend+.%0D%0A++++}%0D%0A}&default-graph-uri=&timeout=30000
Run Code Online (Sandbox Code Playgroud)

以下编码到查询字符串中的是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX po: <http://purl.org/ontology/po/>
PREFIX timeline: <http://purl.org/NET/c4dm/timeline.owl#>
SELECT * WHERE {
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> dc:title ?title .
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:short_synopsis ?synopsis-short .
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:medium_synopsis ?synopsis-med .
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:long_synopsis ?synopsis-long .
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:masterbrand ?channel .
  <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:genre ?genre .
  ?channel dc:title ?channeltitle .
  OPTIONAL {
    <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:brand ?brand .
    ?brand dc:title ?brandtitle .
  }
  OPTIONAL {
    <http://www.bbc.co.uk/programmes/b00n4d6y#programme> po:version ?ver .
    ?ver po:time …
Run Code Online (Sandbox Code Playgroud)

.net c# uri httpwebrequest

11
推荐指数
1
解决办法
7959
查看次数

Virtuoso作为图形商店的任何替代品?

我喜欢(非常)支持SPARQL/Update和它附带的SPARQL端点,但是

  • 我有点担心供应商锁定
  • 我认为这对我的要求来说太过分了(我想要一个有五亿三倍的图形商店)
  • 我很乐意使用开源和免费产品

到目前为止,我找不到任何血统和类似的产品(商业或其他).它们对我来说几乎看起来不成熟或不实验.想法?

rdf graph triplestore virtuoso

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

按SPARQL中的日期范围过滤

我正在使用Jena的SPARQL引擎并尝试编写一个查询来过滤日期范围,因为我需要在固定日期之后找到属性的值.

我的日期属性采用以下格式:

 Fri May 23 10:20:13 IST 2014 
Run Code Online (Sandbox Code Playgroud)

如何编写SPARQL查询以获取日期大于此值的其他属性?

datetime rdf sparql jena

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