小编CAF*_*FxX的帖子

SQL中二进制字符串的汉明距离

我的数据库中有一个表,我将SHA256哈希存储在BINARY(32)列中.我正在寻找一种方法来计算列中条目的汉明距离到提供的值,即:

SELECT * FROM table 
  ORDER BY HAMMINGDISTANCE(hash, UNHEX(<insert supplied sha256 hash here>)) ASC 
  LIMIT 10
Run Code Online (Sandbox Code Playgroud)

(如果您想知道,字符串A和B的汉明距离定义为BIT_COUNT(A^B),其中^是按位XOR运算符,BIT_COUNT返回二进制字符串中的1的数量).

现在,我知道^运算符和BIT_COUNT函数都只能在INTEGER上运行,所以我想说可能唯一的方法就是分解子字符串中的二进制字符串,将每个二进制子字符串转换为整数,计算汉明距离子串,然后添加它们.这个问题是它听起来非常复杂,效率不高,绝对不优雅.因此,我的问题是:你能提出更好的建议吗?(请注意我在共享主机上,因此我无法修改数据库服务器或加载库)

编辑(1):显然在PHP中加载整个表并进行计算是可能的,但我宁愿避免它,因为这个表可能会变得非常大.

编辑(2):数据库服务器是MySQL 5.1

编辑(3):我的答案包含我刚才描述的代码.

编辑(4):我刚刚发现使用4个BIGINT来存储哈希而不是BINARY(32)会产生大量的速度提升(速度提高100倍以上).请参阅下面的评论.

mysql sql hash binary-data hamming-distance

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

在linux中更改文件夹的所有者

我的子域中有一个文件夹,它是通过WHM创建的,因此该子域的所有者不是主域的所有者.

我想将子域文件夹之一的所有者更改为域所有者,我试过这个但是当我检查winscp它时显示所有者为500.

  chown users:user /home/xyz/somnething/photo/
Run Code Online (Sandbox Code Playgroud)

我试图从winscp更改但是winscp没有选项所以我使用putty以root身份登录并运行上面的命令但它没有帮助,我无法从主域中上传子域中的任何文件,因为它给出错误权限被拒绝.

$ ls -l /home/xyz/somnething/photo/
total 8 
drwxr-xr-x 2 sujit sujit 4096 Feb 21 23:39 ./ 
drwxr-x--- 5 rohan nobody 4096 Feb 22 02:28 ../ 
Run Code Online (Sandbox Code Playgroud)

我想将rohan的所有权赋予sujit,以便我可以将文件从sujit域上传到子域rohan

现在它正在将所有者更改为500

php linux apache permissions file-upload

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

在HTML文档中使用自定义实体

TL;博士

我想了解在HTML文档中使用自定义实体进行本地化是否可能(以及,如果支持得多).


我想象的是做这样的事情:

<!DOCTYPE html "/locales/en-us.ent">
<html>
  <head>
    <title>&contactus.title;</title>
  </head>
  <body>
    <p>&contactus.youcanreach;<br>123, Example Road<br>12345 Example City</p>
    <ul id="menu">
      <li>&menu.home;</li>
      <li>&menu.products;</li>
      <li>&menu.contactus;</li>
    </ul>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并且所有实体都将存储在文件顶部的文件中(每种语言一个,在上面的示例中为en-us.ent),例如

<!ENTITY menu.home "Home">
<!ENTITY menu.products "Products">
<!ENTITY menu.contactus "Contact us">
...
Run Code Online (Sandbox Code Playgroud)

最终,这甚至可以扩展到HTML片段(不确定是否真的允许),这可能对所有页面都有用(例如标题,菜单等;在上面的例子中,整个<ul>可能是这样的片段)

现在,我的理解是这在XHTML中理论上是可行的,但我想知道是否也可以在HTML中完成,以及浏览器(和爬虫)应该如何处理.

html xhtml localization html-entities

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

检测iframe何时获得或失去焦点

检测iframe何时获得或失去焦点(即将接收或不接收键盘事件)的正确方法是什么?以下内容在Fx4中不起作用:

var iframe = /* my iframe */;
iframe.addEventListener("focus", function() { /* never gets called */ }, false);
Run Code Online (Sandbox Code Playgroud)

html javascript dom dom-events

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

换行符的CSS选择器

假设我有一些相邻的元素:

<div class="container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>
Run Code Online (Sandbox Code Playgroud)

样式如下:

.container > div {
  display:inline-block;
  white-space:nowrap;
}
Run Code Online (Sandbox Code Playgroud)

自从我们使用以来display:inline-block,divs将作为内联元素流动.我想要做的是能够指定一个CSS规则,当兄弟姐妹div布置在同一条线上时应该应用该规则(即中间没有插入换行符).

作为一个例子,我们假设div上面的s布局如下图所示:

[ 1 ][ 2 ][ 3 ][ 4 ]
[ 5 ][ 6 ] 
Run Code Online (Sandbox Code Playgroud)

我想写一个CSS规则,它匹配元素2,3,4和6(即divs与同一行上布置的兄弟)或反向集(元素1和5,即divs没有先前的兄弟姐妹)在同一条线上布置).

这对样式非常有用,例如(假设++我正在寻找的选择器)

.container > div ++ .container > div {
  /* separator between elements on the same line */
  border-right:1px solid #000; 
}
Run Code Online (Sandbox Code Playgroud)

css css-selectors

12
推荐指数
2
解决办法
3582
查看次数

从加载的类中获取字节码

假设在我的JVM中我有一个加载的类Class<C> myClass.有可靠吗?方法向JVM询问字节码.class的内容?就是这样的:

<C> byte[] getClassBytecode(Class<C> myClass) {
    return /* the contents of the .class resource where C was loaded from */;
}
Run Code Online (Sandbox Code Playgroud)

(显然InputStream会和它一样好byte[]).我知道我可以使用myClass.getResource()(和朋友)来获取类文件,但是在类名上敲击以获取一个提供给getResource的URL感觉不对.此外,我不确定在C动态生成(例如使用javax.tools.JavaCompiler)的情况下这将如何表现.

任何(更好)的想法?

注意:目标是能够推动 字节码 类到不同的JVM并使用自定义类加载器在那里加载它们

java class classloader

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

在大海捞针中查找字符串*和*的子字符串

假设你有一个字符串(例如needle).它的19个连续子串是:

needle
needl eedle
need eedl edle
nee eed edl dle
ne ee ed dl le
n e d l
Run Code Online (Sandbox Code Playgroud)

如果我要建立一个正则表达式,在大海捞针中,我可以简单地做任何子串:

/(needle|needl|eedle|need|eedl|edle|nee|eed|edl|dle|ne|ee|ed|dl|le|n|e|d|l)/
Run Code Online (Sandbox Code Playgroud)

但它看起来并不优雅.有没有更好的方法来创建一个贪婪地匹配给定字符串的任何一个子串的正则表达式?

另外,如果我提出另一个约束,想要仅匹配长于阈值的子串,例如对于至少3个字符的子串:

/(needle|needl|eedle|need|eedl|edle|nee|eed|edl|dle)/
Run Code Online (Sandbox Code Playgroud)

注意:我故意没有提到任何特定的正则表达方言.请说明您在答案中使用的是哪一个.

regex string substring

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

LLVM中的参数转发

我需要一些关于向被调用方"转发"参数的建议(在LLVM-IR中).

假设我有一个在模块F所有其他函数开头调用的函数.从F我需要访问(读取)传递给其直接调用者的参数.

现在要做到这一点,我在结构中的调用者中包含所有参数,并将i8*指针传递给结构F,以及一个标识符,告诉调用哪个调用者F.F然后有一个巨大的开关,分支到适当的拆箱代码.必须这样做,因为模块中的函数具有不同的签名(不同的参数/返回值计数和类型;甚至不同的调用约定),但它显然是次优的(从性能和代码大小的角度来看)因为我需要在堆栈上分配结构,复制其中的参数,传递一个额外的指针F,然后执行拆箱.

我想知道是否有更好的方法来做到这一点,即从函数访问其直接调用者的堆栈帧的方法(知道,由于标识符,调用函数的调用者),或者更一般地,任意在其直接调用者中定义的值.有什么建议?

注意:我正在研究的重点是拥有完成所有这一切的单一功能F; 拆分/内联/专门化/模板化F不是一种选择.


澄清一下,假设我们有以下功能FuncAFuncB(注意:以下只是伪C代码,永远记住我们在谈论LLVM-IR!)

Type1 FuncA(Type2 ArgA1) {
  F();
  // ...
}

Type3 FuncB(Type4 ArgB1, Type5 ArgB2, Type6 ArgB3) {
  F();
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我需要的是一个有效的方法F来执行以下功能:

void F() {
  switch (caller) {
    case FuncA:
      // do something with ArgA1
      break;
    case FuncB:
      // do something with …
Run Code Online (Sandbox Code Playgroud)

performance callstack function llvm argument-passing

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

获取JAR编译时间

我试图获取从Eclipse导出的可运行JAR文件的编译时间.一种方法可能是获取META-INF/MANIFEST.MF文件的修改时间.不幸的是,我似乎无法找到一种方式来获得这些信息(我知道如何使用阅读清单本身getResourceAsStream("/META-INF/MANIFEST.MF"),但我似乎无法能够读取其修改时间).

有没有人知道如何做到这一点?

java jar manifest.mf compilation-time

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

从附加工具包修改Firefox下载对话框的内容

我希望能够在启动文件下载时在Firefox中弹出的下载对话框中添加一个选项.是否可以使用新的附加SDK来实现,或者我是否必须以旧的方式执行此操作?

编辑:显然,如果选择了新选项,我需要一种方法来了解它并根据它执行代码.

firefox firefox-addon firefox-addon-sdk

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