小编Pim*_*kos的帖子

方法参数可以在C#中动态化

在c#4.0中,动态方法参数是否可能,如下面的代码?

public string MakeItQuack(dynamic duck)
{
  string quack = duck.Quack();
  return quack;
}
Run Code Online (Sandbox Code Playgroud)

我在C#4.0中有很多很酷的动态关键字示例,但不像上面那样.这个问题当然受到python如何工作的启发.

parameters methods dynamic c#-4.0

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

Lucene查询:bla~*(匹配以模糊的东西开头的单词),怎么样?

在Lucene查询语法中,我想在有效查询中组合*和〜,类似于:bla~*//无效查询

含义:请匹配以"bla"开头的单词或类似"bla"的单词.

更新:我现在所做的,适用于小输入,使用以下(SOLR模式的片段):

<fieldtype name="text_ngrams" class="solr.TextField">
  <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
  </analyzer>
  <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
Run Code Online (Sandbox Code Playgroud)

如果您不使用SOLR,则执行以下操作.

Indextime:通过创建包含my(短)输入的所有前缀的字段来索引数据.

搜索时间:仅使用〜运算符,因为前缀明确存在于索引中.

lucene fuzzy-search wildcard

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

使用grep过滤掉一个停用词文件中的单词

我想使用grep和一个stopwords文件来过滤掉另一个文件中的常用英语单词.文件"somefile"每行包含一个单词.

cat somefile | grep -v -f stopwords
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是:它检查停用词中的单词是否出现在某个文件中,但我想要相反,即检查某些文件中的单词是否出现在停用词中.

这该怎么做?

somefile包含以下内容:

hello
o
orange
Run Code Online (Sandbox Code Playgroud)

停用词包含以下内容:

o
Run Code Online (Sandbox Code Playgroud)

我想从somefile中过滤出单词"o",而不是hello和orange.

linux grep stop-words

7
推荐指数
2
解决办法
9047
查看次数

在线性时间内计算集合的模式(最常见元素)?

在Skiena的"算法设计手册"一书中,计算一组的模式(最常见的元素),据说有一个Ω(n log n)下界(这让我很困惑),但也(正确的我猜)没有更快的最坏情况算法用于计算模式.我只是被下限Ω(n log n)困惑了.

请参阅Google图书上的图书页面

但是在某些情况下,这肯定可以在线性时间(最好的情况)中计算,例如通过下面的Java代码(找到字符串中最常见的字符),"技巧"是使用哈希表计算出现的事件.这似乎很明显.

那么,在我对这个问题的理解中,我错过了什么?

编辑:(神秘解决)正如StriplingWarrior指出的那样,如果仅使用比较,则下限成立,即没有内存索引,另请参阅:http://en.wikipedia.org/wiki/Element_distinctness_problem

// Linear time
char computeMode(String input) {
  // initialize currentMode to first char
  char[] chars = input.toCharArray();
  char currentMode = chars[0];
  int currentModeCount = 0;
  HashMap<Character, Integer> counts = new HashMap<Character, Integer>();
  for(char character : chars) {
    int count = putget(counts, character); // occurences so far
    // test whether character should be the new currentMode
    if(count > currentModeCount) { …
Run Code Online (Sandbox Code Playgroud)

algorithm mode manual

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

在Java和Python中实现XorShift相同

我想在Java,Python和JavaScript中实现XorShift PRNG.给定相同的种子,不同的实现必须生成完全相同的序列.到目前为止,我还没能做到这一点.

我在Java中的实现

在Java中使用以下XorShift PRNG实现(其中x是一个long字段):

public long randomLong() {
    x ^= (x << 21);
    x ^= (x >>> 35);
    x ^= (x << 4);
    return x;
}
Run Code Online (Sandbox Code Playgroud)

如果我播种x到1,前四个调用randomLong()将生成:

35651601
1130297953386881
-9204155794254196429
144132848981442561
Run Code Online (Sandbox Code Playgroud)

我在Python中的实现

无论有没有numpy我都尝试过.下面是使用numpy的版本.

def randomLong(self):
    self.x ^= np.left_shift(self.x, 21)
    self.x ^= np.right_shift(self.x, 35)
    self.x ^= np.left_shift(self.x, 4)
    return self.x
Run Code Online (Sandbox Code Playgroud)

使用相同的种子,Python函数将生成:

35651601
1130297953386881
-9204155787274874573 # different
143006948545953793   # different
Run Code Online (Sandbox Code Playgroud)

我的JavaScript实现

我还没有尝试过,因为JavaScript的唯一数字类型似乎是基于IEEE 754的双打,这开启了不同的蠕虫病毒.

我认为原因是什么

Java和Python有不同的数字类型.Java有32位和64位整数,而Python有很时髦的大型int.

看起来移位运算符具有不同的语义.例如,在Java中有逻辑和算术移位,而在Python中只有一种移位(逻辑?).

问题

我很高兴能得到一个答案,让我用这三种语言写一个PRNG,而且速度很快.它不一定非常好.我已经考虑将C libs实现移植到其他语言,虽然它不是很好.

  • 我可以修复上面的实现,以便它们工作吗?
  • 我应该切换到另一个更容易在prog.langs上实现的PRNG函数吗?

我已经读过有人建议使用Python的java.util.Random类的SO.我不想要这个,因为我也需要JavaScript中的函数,我不知道这个包存在于那里.

javascript python java random numpy

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

导致编译器或类型检测器(javac)中的堆栈溢出的Java片段?

昨天在一次研讨会上,主持人(Peter Sestoft)展示了一个小型的java程序,有3个类,同时具有协方差和反差.尝试使用javac进行编译时,类型检查器将抛出StackOverflowException.

该片段是由一些在微软工作的人开发的(想想一个叫做肯尼迪).

无法使用Google找到它.有没有人知道代码片段,你可以在这里粘贴它(最多10行代码),供大家看吗?:)

这很有趣......

java stack-overflow covariance contravariance typechecking

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

Spark/Hadoop会抛出大型LZO文件的异常

我正在对存储在S3中的一些LZO压缩日志文件运行EMR Spark作业.有几个日志文件存储在同一个文件夹中,例如:

...
s3://mylogfiles/2014-08-11-00111.lzo
s3://mylogfiles/2014-08-11-00112.lzo
...
Run Code Online (Sandbox Code Playgroud)

在spark-shell中,我正在运行一个计算文件中行数的作业.如果我为每个文件单独计算行数,则没有问题,例如:

// Works fine
...
sc.textFile("s3://mylogfiles/2014-08-11-00111.lzo").count()
sc.textFile("s3://mylogfiles/2014-08-11-00112.lzo").count()
...
Run Code Online (Sandbox Code Playgroud)

如果我使用通配符加载带有单行的所有文件,我会得到两种异常.

// One-liner throws exceptions
sc.textFile("s3://mylogfiles/*.lzo").count()
Run Code Online (Sandbox Code Playgroud)

例外情况是:

java.lang.InternalError: lzo1x_decompress_safe returned: -6
    at com.hadoop.compression.lzo.LzoDecompressor.decompressBytesDirect(Native Method)
Run Code Online (Sandbox Code Playgroud)

java.io.IOException: Compressed length 1362309683 exceeds max block size 67108864 (probably corrupt file)
    at com.hadoop.compression.lzo.LzopInputStream.getCompressedData(LzopInputStream.java:291)
Run Code Online (Sandbox Code Playgroud)

在我看来,解决方案是由最后一个例外给出的文字暗示,但我不知道如何继续.LZO文件允许的大小是有限制的,或者问题是什么?

我的问题是:我可以运行Spark查询加载S3文件夹中的所有LZO压缩文件,而不会获得与I/O相关的异常吗?

每个文件有66个大约200MB的文件.

编辑:只有在使用Hadoop2核心库(ami 3.1.0)运行Spark时才会出现异常.当使用Hadoop1核心库(ami 2.4.5)运行时,一切正常.两个案例都使用Spark 1.0.1进行了测试.

hadoop lzo elastic-map-reduce apache-spark

5
推荐指数
2
解决办法
3491
查看次数

为什么Spark ML NaiveBayes输出的标签与训练数据不同?

我使用Apache Spark ML(版本1.5.1)中的NaiveBayes分类器来预测一些文本类别。但是,分类器输出的标签与我的训练集中的标签不同。我做错了吗?

这是一个可以粘贴到例如Zeppelin笔记本的小例子:

import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.classification.NaiveBayes
import org.apache.spark.ml.feature.{HashingTF, Tokenizer}
import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.sql.Row

// Prepare training documents from a list of (id, text, label) tuples.
val training = sqlContext.createDataFrame(Seq(
  (0L, "X totally sucks :-(", 100.0),
  (1L, "Today was kind of meh", 200.0),
  (2L, "I'm so happy :-)", 300.0)
)).toDF("id", "text", "label")

// Configure an ML pipeline, which consists of three stages: tokenizer, hashingTF, and lr.
val tokenizer = new Tokenizer()
  .setInputCol("text")
  .setOutputCol("words")
val hashingTF …
Run Code Online (Sandbox Code Playgroud)

scala machine-learning apache-spark naivebayes apache-spark-ml

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

使多方加密方案中的密钥子集过期

假设一种多方加密方案,类似于以下答案:使用多个不同密钥加密?.那是.一组密钥K可用于解密密文.

有没有办法到期:

K'? K
Run Code Online (Sandbox Code Playgroud)

这样K \ K'仍然可以破译密文,但不再K'

我当然假设密文已经因为到期而更新了K'.我不确定如何攻击它,或者它是否可能?

cryptography

4
推荐指数
1
解决办法
900
查看次数

排序大numpy矩阵的单元格

我已经创建了一个很大的(例如,4000 X 4000)numpy浮动矩阵.我正在通过浮点值对矩阵的单元格进行排序,从而生成(row,col,value)元组列表.这是我的代码(简化):

def cells(matrix):
  shape = np.shape(matrix)
  for row in range(shape[0]):
    for col in range(shape[1]):
      yield (row, col, matrix[row,col])

# create a random matrix
matrix = np.random.randint(100, size=(4000,4000))
# sort the cells by value
sorted_cells = sorted(cells(matrix), key=lambda x: x[2])
Run Code Online (Sandbox Code Playgroud)

我知道,逐个单元格的产量是低效的,但我不知道如何(row, col, value)使用纯粹的numpy 迭代矩阵的元组?也许那是真正的问题!

我目前的方法的问题是我的计算机在分拣步骤中完全死亡.

如果我这样做不是问题:sorted(matrix.flatten())实际上工作正常,速度很快,但是我没有得到行和列...

python numpy

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

动态加载Java接口的实现

我正在寻找类似于.NET托管扩展框架(http://mef.codeplex.com/)的Java功能。对于那些不了解MEF的人,我想要这样的东西:

给定接口

public interface IFoo {
 ...
}    
Run Code Online (Sandbox Code Playgroud)

通过查看已加载的jar,动态加载接口的实现。

IFoo foo = loadClassThatImplementsInterface<IFoo>();
Run Code Online (Sandbox Code Playgroud)

关键是程序员在代码时不知道实现的名称,但在代码中提供了扩展点。

在Java中根本不可能吗?我发现一些Google命中说这是不可能的,但这似乎有点...是吗?

当在编译时知道实现的完全限定名称时,有许多使用类加载器的示例。那不是我想要的。

java reflection classloader

0
推荐指数
1
解决办法
2397
查看次数

jquery:只保留一个选定的div

描述:在BODY以下某处是DIV,比方说<div id="keepme"></div>应该保留.其他一切都应该是remove()'ed.

你如何用jQuery做到这一点,即保留这个元素,删除正文下的其他所有内容.

javascript jquery dom

0
推荐指数
1
解决办法
119
查看次数