鉴于此代码:
var arr = [];
for (var i = 0; i < 10000; ++i)
arr.push(1);
Run Code Online (Sandbox Code Playgroud)
前锋
for (var i = 0; i < arr.length; ++i) {}
Run Code Online (Sandbox Code Playgroud)
向后
for (var i = arr.length - 1; i >= 0; --i) {}
Run Code Online (Sandbox Code Playgroud)
硬编码转发
for (var i = 0; i < 10000; ++i) {}
Run Code Online (Sandbox Code Playgroud)
为什么向后退得这么快?
例如,假设我有一个类Temp:
class Temp
{
public:
int function1(int foo) { return 1; }
void function2(int bar) { foobar = bar; }
private:
int foobar;
};
Run Code Online (Sandbox Code Playgroud)
当我创建Temp类的对象时,我如何计算它需要多少空间,以及它如何在内存中表示(例如| foobar | 4个字节| function1 | 8的8个字节|)
我想弄清楚为什么 VSCode 有时会决定随机插入“不间断空格”U+00A0
而不是常规空格,以及如何阻止这种情况发生?
这是导致问题的不同类型的空格字符,如我之前的问题GitHub markdown not rendering 和 git detection changes when no changes 中所见
这在 Mac OS 和 Windows 上都发生在我身上,其他人也遇到过这个问题。虽然这个问题是关于 VSCode 的,但这也发生在在线的 GitHub 降价编辑器上。
我该如何解决这个问题?
重现步骤
.md
在 VSCode 中编辑一个 markdown文件一段时间。
放入许多标题,例如# my heading
或## my sub-heading
。
如果你有降价扩展,你可以CTRL/CMD + SHIFT + P
和Open preview to the side
.
您最终应该会注意到其中一个标题没有呈现,如果您在十六进制编辑器(如 HxD)中打开文件,您会注意到#
字符后面有一个不间断空格而不是常规空格。
可能的原因
`
Windows 上的反引号字符可以与键盘上的字母组合,例如a
导致à
. 也许使用反引号会导致空格字符变成不间断空格?然而,这不能解释 Mac OS 上的问题,因为反引号不能与其他字符组合。在 JavaScript 中,通过在全局范围内使用堆栈,可以轻松地将某些上下文与同步函数调用相关联。
// Context management
let contextStack = [];
let context;
const withContext = (ctx, func) => {
contextStack.push(ctx);
context = ctx;
try {
return func();
} finally {
context = contextStack.pop();
}
};
// Example
const foo = (message) => {
console.log(message);
console.log(context);
};
const bar = () => {
withContext("calling from bar", () => foo("hello"));
};
bar();
Run Code Online (Sandbox Code Playgroud)
这允许我们编写特定于上下文的代码,而不必到处传递上下文对象,并且我们使用的每个函数都依赖于该上下文对象。
这在 JavaScript 中是可能的,因为保证了顺序代码执行,也就是说,这些同步函数在任何其他代码可以修改全局状态之前运行完成。
我们可以使用生成器函数实现类似的功能。生成器函数使我们有机会在生成器函数的概念执行恢复之前进行控制。这意味着,即使执行暂停几秒钟(即,该函数在任何其他代码运行之前都没有运行完成),我们仍然可以确保其执行附加了准确的上下文。
const iterWithContext = function* (ctx, generator) {
// not a perfect implementation
let …
Run Code Online (Sandbox Code Playgroud) 在我的javascript中,我有两个元素.
我记录了两个元素,它显示了......
要素1.
要素2.
有问题.
当我console.log
的element
小号.children
他们显然还有些HtmlCollection
小号
您将在一分钟内理解以下内容:但奇怪的是,一个HtmlCollection为空(并且长度为0),但有3个元素(并且长度为3).
如果您console.log
为元素的孩子阅读下面的s,您将理解我在说什么...
元素1儿童和长度:
元素2儿童和长度:(搞砸了)
有谁知道这里发生了什么?
我如何解决这个问题,我需要通过HtmlCollection循环,但它不会让我因为长度是0 ...?
提前致谢!所有帮助赞赏.
这是一个愚蠢的问题,但我已经查了很久,我找不到任何东西,所以我不得不问它.
你怎么clone
上的东西git
用不同的帐户?
例如,如果我登录abcdef
,并且我想在帐户上克隆某些内容12345
,我该怎么办?
我记得这样做之前:git clone url -l username
.然后它会问我一个password
,我会输入它.但这要么不再起作用,要么我的大脑正在弄乱我!
谢谢您的帮助.
我创建了一个 firebase 云函数项目,它默认添加了以下依赖项和以下引擎:
"dependencies": {
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.1.0"
},
"engines": {
"node": "8"
}
Run Code Online (Sandbox Code Playgroud)
每当我运行时,yarn add
我都会收到以下错误并且未添加依赖项:
error firebase-admin@8.4.0: The engine "node" is incompatible with this module. Expected version "^8.13.0 || >=10.10.0". Got "8.11.4"
Run Code Online (Sandbox Code Playgroud)
然后我尝试将节点引擎版本更改为 10 "engines": {"node": "10"}
,但现在当我添加纱线时出现以下错误:
error functions@: The engine "node" is incompatible with this module. Expected version "10". Got "8.11.4"
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题呢?
概括
这个问题是用 JavaScript 编写的,但是用任何语言、伪代码或数学来回答都会很棒!
我一直在尝试实施Separating-Axis-Theorem来完成以下工作:
我已成功完成第一个要点,您可以在问题末尾看到我的 javascript 代码。我在其他部分遇到困难。
解决交叉点
网上有很多关于如何解决圆的最小/最短重叠方向上的交点的例子。你可以在我最后的代码中看到我已经计算过了。
但是,这不适合我的需求。我必须解决与圆轨迹相反方向的碰撞(假设我已经有了圆的轨迹,并希望将其作为单位向量或角度,以适合的方式传递到我的函数中)。
您可以在下图中看到最短分辨率和预期分辨率之间的差异:
如何计算用于解析test_CIRCLE_POLY
函数内部相交的最小平移向量,但要应用于特定方向,与圆的轨迹相反?
我的想法/尝试:
确定碰撞的侧面/轴
我已经找到了一种方法来确定圆与多边形的哪一边碰撞。对于多边形的每个测试轴,我只会检查重叠。如果有重叠,那一边就是碰撞。
该解决方案是不能接受的一次,因为我想弄清楚只有一个视圆的轨迹上。
我的预期解决方案会告诉我,在下面的示例图像中,轴 A 是碰撞轴,而不是轴 B。这是因为一旦解决了交点,轴 A 就是与多边形边对应的轴只是勉强触及圆圈。
我的想法/尝试:
目前我假设碰撞轴垂直于 MTV(最小平移向量)。这目前是不正确的,但是一旦我在问题的前半部分更新了相交解析过程,它应该是正确的轴。所以这部分应该首先解决。
或者,我已经考虑从圆的先前位置和它们的当前位置 + 半径创建一条线,并检查哪边与这条线相交。然而,仍然存在歧义,因为有时会有不止一侧与线相交。
到目前为止我的代码
function test_CIRCLE_POLY(circle, poly, circleTrajectory) {
// circleTrajectory is currently not being used
let axesToTest = [];
let shortestOverlap = +Infinity;
let shortestOverlapAxis;
// Figure out polygon axes that must be checked …
Run Code Online (Sandbox Code Playgroud) javascript math collision-detection game-physics separating-axis-theorem
我在元素上有keydown事件。
$("#element").keydown(function() {
// do stuff!
});
Run Code Online (Sandbox Code Playgroud)
现在我要删除它。
我尝试过unbind
,off
但都没有工作。
$("#element").unbind("click");
$("#element").off("click");
Run Code Online (Sandbox Code Playgroud)
我是否需要做.on("click", function...)
或.bind("click", function...)
代替,.click
如果使用unbind
或off
。如果是这样,那么这不是我的代码,并且不允许我对其进行修改,因此我需要一种替代方法。
除了“解除绑定”或“关闭”以外,还有其他可行的方法吗?
谢谢,非常感谢帮助!!
当我逐渐习惯 VS code 中的 Vim 扩展时,我发现自己经常退回到使用鼠标。
是否可以配置一个设置,以便每当我使用鼠标单击并移动光标时,vim 都会自动切换到插入模式?
如果我不想切换到插入模式,我一开始就不会看到自己使用鼠标。所以这个设定对我来说是有意义的。
javascript ×5
async-await ×1
c++ ×1
class ×1
clone ×1
firebase ×1
game-physics ×1
git ×1
html ×1
jquery ×1
math ×1
memory ×1
method-call ×1
node.js ×1
npm ×1
optimization ×1
performance ×1
size ×1
vscodevim ×1
yarnpkg ×1