小编Bri*_*y37的帖子

运算符| =在JavaScript中做什么?

我在JS项目中找到了以下代码:

var a = new Array();
a[0] = 0;
for (var b = 0; b < 10; b++) {
  a[0] |= b; 
}
Run Code Online (Sandbox Code Playgroud)

|=for循环体内有什么作用?

代码示例是可疑的,但V8 已经在这里提供了一个改进性能的示例.

更新的示例

上面的例子相当于var a = [15];大多数意图和目的.|=操作员的一个更现实的例子是在单个变量中设置二进制标志,例如在权限对象上:

//Set up permission masks
var PERMISSION_1_MASK = parseInt('0001',2);
var PERMISSION_2_MASK = parseInt('0010',2);
..

//Set up permissions
userPermissions = 0;
userPermissions |= hasPermissionOne && PERMISSION_1_MASK;
userPermissions |= hasPermissionTwo && PERMISSION_2_MASK;
..

//Use permissions
if(userPermissions & PERMISSION_1_MASK){
    ..//Do stuff only allowed by permission 1 …
Run Code Online (Sandbox Code Playgroud)

javascript operator-keyword

41
推荐指数
4
解决办法
8052
查看次数

跨表索引是否可行?

考虑一种结构,在这种结构中,您与两个表上的条件(where,order by等)具有多对一(或一对多)关系.例如:

CREATE TABLE tableTwo (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    eventTime DATETIME NOT NULL,
    INDEX (eventTime)
) ENGINE=InnoDB;

CREATE TABLE tableOne (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    tableTwoId INT UNSIGNED NOT NULL,
    objectId INT UNSIGNED NOT NULL,
    INDEX (objectID),
    FOREIGN KEY (tableTwoId) REFERENCES tableTwo (id)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

并为一个示例查询:

select * from tableOne t1 
  inner join tableTwo t2 on t1.tableTwoId = t2.id
  where objectId = '..'
  order by eventTime;
Run Code Online (Sandbox Code Playgroud)

让我们说你索引tableOne.objectIdtableTwo.eventTime.如果您然后解释上面的查询,它将显示"使用filesort".本质上,它首先应用tableOne.objectId索引,但它不能应用tableTwo.eventTime索引,因为该索引是tableTwo的整体(不是有限的结果集),因此它必须进行手动排序. …

mysql indexing join

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

你能为被劫持的JavaScript数组添加一个函数吗?

这个问题与在Javascript中声明数组时要遵循的最佳实践有关


假设一个客户端,我们称之为"DB Cooper",首先要求以下代码必须在任何其他JavaScript代码之前运行:

Array = function(){
    alert('Mwahahahaha');
};
Run Code Online (Sandbox Code Playgroud)

此外,Cooper要求必须将自定义函数添加到内置Array对象(而不是被劫持的对象).例如,如果Array未被劫持,则可以通过以下方式完成:

Array.prototype.coolCustomFunction = function(){
    alert('I have ' + this.length + ' elements!  Cool!');
};
Run Code Online (Sandbox Code Playgroud)

哪个能买得起:

var myArray = [];
myArray.coolCustomFunction();
Run Code Online (Sandbox Code Playgroud)

但是,这与第一个要求不兼容.那么,您如何才能最好地满足DB Cooper的要求呢?

注意: DB甚至写了一个测试小提琴来帮助确保解决方案满足他的要求......真是个男人!


更新: 对于那些喜欢挑战的人:请尝试找到解决此问题的无法解决的跨浏览器解决方案.例如,这是一个更劫持的测试用例(感谢重新格式化这个Bergi),它劫持了Array,Object,Array.prototype.constructor和Object.prototype.constructor.到目前为止,看起来可能有一个特定于浏览器的解决方案(参见Bergi对他的回答的评论,如果你找到一种方法在FF中劫持它,请告诉我们),但目前还不清楚是否有这是一个跨浏览器的解决方案.

javascript arrays method-interception

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

在 Oracle 中为大表的新列创建索引

我有一个包含超过 1000 万行的表。我在该表上创建了一个新列,然后尝试对其进行索引:

create index myTable_idx_myColumn on myTable(myColumn);
Run Code Online (Sandbox Code Playgroud)

该查询在大约一个小时后超时。然后我用该NOLOGGING选项重试了它,大约一个小时后成功完成。

问题解决了,对吧?不幸的是不是,因为这仅适用于开发数据库。prod 数据库有超过 2500 万行,因此理想情况下,我希望在创建索引之前找到更快的解决方案,以避免不必要的停机。

对我来说奇怪的是,根据我的理解,Oracle 默认情况下不包含null索引值(这正是我想要的)。对我来说,这意味着它应该只创建一个空白索引,因为新列中的所有值都是null创建索引时的。我知道它需要检查所有 1000 万行以确保它们是null,但即使这样似乎也不需要花费近一个小时......

有没有一种快速方法可以将索引添加到null大型表上的新列(即所有值都在其中)?

oracle indexing oracle10g database-performance

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

如何使光标与背景形成对比?

对于我尝试过的浏览器(Chrome,Firefox和IE),内置的十字光标在黑色图像上变为白色,在白色图像上变为黑色.有没有办法制作这样做的自定义游标?

这是一个小提琴,看看我的意思.

非常感谢!

html css cursor

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

异步getter的命名约定

对于同步getter函数,命名约定是明确定义的:

var getFerby = function(){
    ..
    return ferby;
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要的ferby不是本地(同步)可用的,那么常见的方法是使用回调来处理这种情况:

/**
 * Asynchronously gets a ferby and passes it to the callback.
 *  
 *     Once the ferby is retrieved, these rules MUST be followed:
 *       1) Don't feed it after midnight.
 *       2) Don't give it water.
 *       3) Don't let it near bright light.  
 *
 * @param {ferbyCallback} callback - The callback function that expects a ferby.
 */
var fooFerby = function(callback){
    getFerbyLoader().load(function(ferby){
        callback(ferby);
    });
};

/**
 * The …
Run Code Online (Sandbox Code Playgroud)

javascript getter naming-conventions callback

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

Math.random会重复吗?

对于不同的JavaScript实现Math.random:

抛开记忆和长度问题,以下最终会有一个永远重复的数字序列(例如,它只取决于内部种子,当种子回到它的起始点时,数字会重复)?

sequence = Math.random();
while(true){
    sequence += ', ' + Math.random();
}
Run Code Online (Sandbox Code Playgroud)

每个客户端是否具有相同的重复序列(例如,客户端不将特定于客户端的数据合并到随机数生成过程中)?


我问,因为如果可能的数字序列是有限的子集,那么像生成具有Math.random的UUID这样的事情将有更大的碰撞机会.

javascript random

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

将分数约束添加到oracle中的列

我正在使用oracle 10gr2.我试图对名为"得分"的列强制执行约束,以便只能输入分数.

更具体地,格式应包含在分子中一个数字,并在分母一个数位,使得用户只能输入一个分数例如3/4,2/5,或7/8.该列仅接受数字作为输入.谁能告诉我使用的SQL?

sql oracle constraints

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

如何在 MySQL 中检索已删除的表?

所以我只是朝自己的脚开枪,感觉自己像个白痴。在向我的一个数据库添加user表的同时,我正在尝试授予和撤销对我的 MySQL 数据库的权限。无论如何,我犯了运行的错误:

Drop table user;
Run Code Online (Sandbox Code Playgroud)

使用我的 MySQL 服务器管理员帐户而不是我在主 MySQL 数据库上的特定于数据库的管理员帐户,并将自动提交设置为 true。现在我当然会收到如下错误:

SQL Error: Table 'mysql.user' doesn't exist
Run Code Online (Sandbox Code Playgroud)

我还没有设置任何数据库,所以这没什么大不了的,但是有什么办法可以运行create table user ..语句来恢复我的用户表,还是应该硬着头皮重新安装我的 MySQL 服务器?

谢谢!

更新:

这是我能够用来mysql.user恢复我的表的创建脚本。运行此脚本后,我需要手动创建用户,但我的 root 用户仍然存在并且可以访问数据库。不用说,我的下一个任务将是为我的 MySQL 服务器安排一个备份任务:)

CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

为Oracle迁移将“ WM_CONCAT(col)”定义为“ LISTAGG(col,',')”

我们正在从环境数据库的Oracle 10g迁移到18c。为了使事情复杂化,并非计划立即迁移所有环境,因此该应用程序必须同时支持这两种环境。发现的不兼容性之一WM_Concat是在10g ListAgg中受支持,但在18c中不受支持,而(新的等效功能)在18c中受支持,但在10g中不受支持。因此,我正在寻找一种暂时可以在两个数据库版本中使用的实现。

我的想法是wm_concat(myColumn)10g等同listagg(myColumn, ',')于18c,因此我想wm_concat(myColumn)在新的18c数据库中定义为传递给listagg(myColumn, ',')幕后并返回结果的函数。这样,该应用程序就可以安全地继续wm_concat在10g和18c数据库上正常使用,直到所有环境都在18c上运行为止,此后该应用程序可以交换使用,listagg并且wm_concat可以从18c数据库中删除临时自定义功能,从而完成迁移。

总而言之,什么是正确的定义方式,wm_concat使其wm_concat(myColumn)行为与listagg(myColumn, ',')查询完全相同?

oracle database-migration listagg wm-concat

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