我知道在正常的php正则表达式(ASCII模式)中,"\ w"(单词)表示"字母,数字和_".但是当你使用带有"u"修饰符的多字节正则表达式时,它意味着什么?
preg_replace('/\W/u', '', $string);
Run Code Online (Sandbox Code Playgroud) 应用程序中的标准问题是如果记录不存在则插入记录 - 如果记录存在则更新.在PRIMARY KEY未知的情况下,通过发出a SELECT然后运行INSERT或者UPDATE如果找到记录,通常可以解决这个问题.
但是,我知道至少有三种方法可以将记录插入到数据库中,即使记录已经存在.就个人而言,如果已经存在,我宁愿删除新的插入请求,但是在某些情况下,您可能希望删除数据库中的记录并使用新记录.
CREATE TABLE IF NOT EXISTS `table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`foo` int(10) unsigned NOT NULL,
`bar` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `row` (`foo`,`bar`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
以下是三种方法:
INSERT IGNORE INTO table (foo, bar) VALUES (2,3);
INSERT INTO table (foo, bar) VALUES (2,3) ON DUPLICATE KEY UPDATE;
REPLACE INTO table (foo, bar) VALUES (2,3);
在什么时候应该使用这些方法?
有人能给出一些正确的使用场景的例子吗?
我想仅使用客户端Javascript生成SHA1或类似哈希.换句话说,使用IE,FF和Webkit提供的Javascript引擎.我想知道存在什么哈希实现?
我想知道是否有办法检查给定序列的子模式匹配,以便我可以阻止它.
例如,假设我想捕获除了重复早期捕获之外的所有内容.因此,如果我有句子,[word plus word]则以下内容应该捕获所有内容(word plus)直到第二次出现word.
(\w+)[^\1]+
Run Code Online (Sandbox Code Playgroud)
第一次(\w+)捕获word.第二个[^...]捕获组尝试排除它(它是\1之前捕获的),但它只适用于字符 - 而不是子模式捕获.
那么反正这样做呢?
我计划为我正在构建的应用程序实现一些客户端哈希(可能还有加密).在桌面上使用Stanford Javascript Crypto Library需要花费一分钟来完成我要求浏览器在Javascript中执行的一些计算.
我想知道这是否是对Silk,Mobile Safari等移动浏览器的过多要求.除了在大多数现代智能手机上进行测试外,是否有针对他们的过多的一般指导原则?它们与桌面浏览器有多强大的比例?
在构建Web应用程序时,我想知道我需要多长时间的秘密(多少位)作为加密中的密钥 - 以及我是否可以在键盘上捣乱随机字符序列或者我是否需要一些特殊软件为我生成一些东西?
(即从ssh-keygen之类的东西窃取私有RSA)
更新:我manly将在PHP的mcrypt库中使用此密钥,但我也对c ++选项感兴趣(两者都在linux上).
与其他所有内容一样,PostgreSQL似乎对表有更强大/更复杂的索引.也许有人可以帮助我知道索引列的默认方式.
默认情况下,我的意思是整数/布尔列,它们在90%的时间内用于过滤表格结果.
在MySQL中,我只需在列上创建一个与该列同名的索引.我不确定使用了什么类型(btree?)或命名索引与列相同的含义 - 但它有效.
现在转移到PostgreSQL我想知道是否有任何问题命名索引具有相同的名称(或任何原因不是).另外,我想知道哪种类型的索引应该用于int/bool值.
我想要SQL格式的WordNet数据库所以我正在考虑尝试为WordNet文件编写解析器.但是,在我开始之前,我想知道是否有任何现有的解析器,或者是否有人已经创建了数据库的SQL版本?
我想测试一些东西,我需要一个运行速度相当慢的PostgreSQL查询(持续.01到10秒),以便我可以检查我对异步请求的处理是否正确.如果可能的话,我还需要该查询来返回结果.
起初我开始用数千条记录填充数据库,但必须有一种更好的方法来提供对查询运行时间的更多控制.
我有一系列unigrams(单字),bigrams(两个单词)和trigrams(三个单词),我从一堆文件中提取出来.我的目标是静态分析报告以及我可以在这些文档上使用的搜索.
John Doe
Xeon 5668x
corporate tax rates
beach
tax plan
Porta San Giovanni
Run Code Online (Sandbox Code Playgroud)
ngrams由日期和文档标记.因此,例如,我可以找到双字母组合之间的关系,以及它们的短语首次出现时以及文档之间的关系.我还可以搜索包含这些X个un/bi/trigram短语的文档.
所以我的问题是如何存储它们来优化这些搜索.
最简单的方法只是每个短语的一个简单的字符串列,然后每次在文档中找到该单词/短语时,我都会向document_ngram表添加关系.
table document
{
id
text
date
}
table ngram
{
id
ngram varchar(200);
}
table document_ngram
{
id
ngram_id
document_id
date
}
Run Code Online (Sandbox Code Playgroud)
但是,这意味着如果我想通过三字母搜索单个单词,我必须使用字符串搜索.例如,假设我想要所有包含"summer"字样的三元组.
所以,如果我将这些单词分开,以便ngram中存储的唯一内容是单个单词,那么添加三列,以便所有1,2和3个单词链可以放在里面document_ngram?
table document_ngram
{
id
word1_id NOT NULL
word2_id DEFAULT NULL
word3_id DEFAULT NULL
document_id
date
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?他们是更好的方式吗?我目前正在使用PostgreSQL和MySQL,但我相信这是一个通用的SQL问题.