我正在构建单页webapp.这意味着在一段时间内我会获得新的DOM元素,删除不需要的元素.例如,当我获取一个新表单时,我只需用该表单HTML替换特定div的内容,并设置该表单元素的唯一侦听器.一段时间后,我用一个新的表格实例(具有不同的ID)替换此表单的内容.
我为这个新表单再次设置了事件监听器.现在前一个表单不再是DOM的一部分,所以我应该自动对DOM元素进行垃圾回收.我也期望指向从DOM中删除的元素的侦听器函数消失.
但是,从Chrome收集的以下个人资料表明,我的听众数量会随着时间的推移而增加.你能告诉我为什么会这样吗?我试着点击"收集垃圾"按钮.但这是我得到的个人资料.我构建应用程序的方式有问题吗?是否存在问题,如果存在问题,我该如何解决?

如果它很重要我正在使用JSP模板语言与jquery,jquery-ui和其他一些插件.这就是我在页面上添加/删除的动态片段的样子.
<script>
$(document).ready(function() {
$("#unique_id").find(".myFormButton").button().click(
function() {
$.ajax({url: "myurl.html",
success: function(response) {
console.log(response);
}
});
});
});
</script>
<div id="unique_id">
<form>
<input name="myvar" />
<button class="myFormButton">Submit</button>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
更新
如果你想查看实际代码,请参阅相关部分. 此链接显示当按下清除按钮时,调用函数clearFindForm,它使用ajax请求有效地重新获取内容(HTML片段),并用获取的内容替换此jsp中的整个div.refetchContent函数的工作方式如下:以下是代码的链接,以帮助提供更好的答案.
function refetchContent(url, replaceTarget) {
$.ajax({
url: url,
data: {},
type: "GET",
success: function (response) {
replaceTarget.replaceWith(response);
},
error: function (response) {
showErrorMessage("Something went wrong. Please try again.");
}
});
}
Run Code Online (Sandbox Code Playgroud) javascript jquery garbage-collection memory-leaks google-chrome
我已将文件转换为三种不同的格式:mp4,web和ogv.根据caniuse, Firefox据说支持ogg和webm,但没有任何东西在播放.
我使用Miro转换器转换文件,据其他人说这应该工作得很好.我相信Chrome会选择webm文件(如果我右键单击 - >在新标签页中打开,它会显示我的webm文件),这很棒.
该网站的URL:http://dev.fristil.se/hbh/
我有一个静态图像作为背景.视频假设显示在它上面,所以如果它没有移动你可以告诉它不起作用.
有任何想法吗?
请考虑以下代码段:
struct Foo {
};
template<typename T>
struct Bar {
const T foo;
};
int main() {
Bar<Foo> test;
}
Run Code Online (Sandbox Code Playgroud)
我用g ++ - 4.9.2用[-std = c ++ 11 -O0 -g3 -pedantic -Wall -Wextra -Wconversion]编译它并得到它error: uninitialized const member in ‘struct Bar<Foo>’.这很明显.
但是尝试添加std :: string作为Foo成员和程序编译!
#include <string>
struct Foo {
std::string test;
};
// (...)
Run Code Online (Sandbox Code Playgroud)
发生了什么?将测试类型替换为double会导致程序无法再次编译.什么字符串成员在课堂上变化?
从版本4.6开始,gcc似乎就像那样.
我希望在从OTA安装我的应用程序后,设备的主页按钮将无法正常工作,因此用户无法从应用程序中退出.我的挖掘让我得到了结果
A)我有办法通过"mobileconfig"配置文件禁用主页按钮,但它需要重新启动设备,用户必须在启动后打开我的应用程序,我想这样做而不重新启动非监狱的私人框架破碎的设备.我想知道可能的非越狱设备?
C)如果无法禁用私有框架的主页按钮,那么在启动设备后是否有办法打开应用程序?,因为启动时会加载某些越狱应用程序/进程.
[注意:我不想将我的应用程序提交到iTunes.]
在我读到Hover Zoom是邪恶的(yikes!)之后,两篇文章让我立即切换到另一篇文章,名为Imagus:
Imagus似乎很适合Hover Zoom也可以做到这一点,但此外,它似乎支持自定义过滤器(支持更多网站),除了它已经包装的庞大数量.
在选项页面中,在Chrome上,过滤器部分看起来很美味:

然而,与此同时,它似乎写在我称之为Perl Javascript的内容中.

我认为自己精通Javascript,DOM和Regex,但尝试猜测这是做什么只是痛苦,所以我寻找文档.似乎有一个MyOpera博客,现在该项目的网站暂时托管在Google Docs上.
该页面没有提及如何开发"过滤器"(或"sieves",如该页面中所写的那样?)
那么,我该如何开发自定义过滤器?我不知道所有可能性(它似乎非常灵活),但即使只是修改URL这样的简单例子也会很好.(/thumb/123.jpg变成/large/123.jpg什么东西).
甚至只是对字段的解释.他们似乎是:
linkurlresimgtonote < - 可能是评论我正在处理应用数据库架构更新的脚本.我使用start transaction/commit设置了所有SQL更新脚本.我在命令行上将这些脚本传递给psql.
我现在需要在一个事务中同时应用多个脚本.到目前为止,我提出的唯一解决方案是从原始脚本集中删除启动事务/提交,然后在新的启动事务/提交块中将它们一起阻塞.我正在编写perl脚本来动态执行此操作.
实际上我想要嵌套事务,我无法弄清楚如何在postgresql中做.
有没有办法为此目的做或模拟嵌套事务?我有设置为自动纾困任何错误,所以如果任何较低的错误失败,我不需要继续在顶级交易.
我有一个Qt应用程序(Qt 4.8.1)正在做一些Windows串口任务.我发现有时我打开串口的CreateFileA调用最多需要30秒才能完成!显然我正在做一些事情来触发这种奇怪的行为,我想知道我可能做的是什么导致这种情况.
m_portHand = CreateFileA( portDevice.c_str(),
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // default security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
FILE_FLAG_OVERLAPPED, // overlapped I/O
NULL ); // hTemplate must be NULL for comm devices
Run Code Online (Sandbox Code Playgroud)
m_portHand是一个HANDLE,portDevice是一个std :: string并包含"COM5".
此调用是由我的应用程序主线程中的按钮按下触发的.当它发生时,应用程序最多只有一个其他线程,但那些线程(如果有的话)是空闲的.
系统中唯一的主要功能是运行Linux的虚拟机,但系统是四核的,其中3个核心就像你在Windows机箱上看到的那样几乎处于空闲状态,只有一个在VM上做任何事情.
串口是8端口USB串口盒,可能是相关的吗?
这是否与Overlapped IO有某种关系?
回应评论:
端口未被其他应用程序打开.之前通过此应用程序的调用打开了端口,该应用程序已正确关闭,端口以"CloseHandle"关闭.
我无法确定它与30秒之间的任何相关性 - 有时我启动应用程序,单击按钮我们即将参加比赛,有时需要30秒.
VM正在拦截同一串行盒上的其他一些USB设备.
除了串行盒(VM轮询4个端口寻找设备),USB总线被卸载.
我没有看到其他应用程序中的行为.我将尝试切换到内置端口(主板上的COM1),看看是否有任何影响.
我想到了一个想法:端口寻址的形式可以与它有什么关系吗?我工作的其他类似应用程序使用qestserialport库,它使用'\\.\ COM#'表示法打开端口.是否有某种方式使用的符号会影响时间?
USB串行设备在其上显示"VScom",通常它立即打开(CreateFile调用<10毫秒).这只是一个偶然的事情,事情变得充实,我有其他程序,似乎从来没有表现出这种行为.
我正在谈论的设备是使用IEEE 11073协议的医疗监视器.无论如何,我与设备的连接工作正常,只有串口打开才有问题.串口控制线在开放时间的状态是否与此有关?另一端的设备正在轮询它的端口,寻找各种可以交谈的东西,所以我不知道在出现问题的时候串行线路是什么样的.
我刚刚在代码中修复了一个非常微妙的错误,这是由异常切片造成的,我现在想确保我完全理解发生了什么.
这是我们的基本异常类,派生类和相关函数:
class Exception
{
public:
// construction
Exception(int code, const char* format="", ...);
virtual ~Exception(void);
<snip - get/set routines and print function>
protected:
private:
int mCode; // thrower sets this
char mMessage[Exception::MessageLen]; // thrower says this FIXME: use String
};
class Derived : public Exception {
public:
Derived (const char* throwerSays) : Exception(1, throwerSays) {};
};
void innercall {
<do stuff>
throw Derived("Bad things happened!");
}
void outercall {
try {
innercall();
}
catch(Exception& e)
{
printf("Exception seen here! …Run Code Online (Sandbox Code Playgroud) 我正在尝试为视频获取有代表性的帧,以便删除可能出现在视频中的冗余帧.这是我用来获取帧的方法.
./ffmpeg -i video.mp4 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 2 -s 320x240 thumb-%02d.png
我也试过了
./ffmpeg -i video.mp4 -f image2 -vf "select=gt(scene\,.4)" -vsync vfr thumb%04d.png
这方面的主要问题是模糊.如果我只是每5秒对帧进行一次采样,我看不到任何模糊,但是使用上面两个命令我会得到很多模糊.
该视频可在此处找到,http://www.cs.umd.edu/~bharat/video.mp4
为了每10秒对视频进行一次采样,我使用以下内容:
./ffmpeg -i video.mp4 -r 1/10 filename%03d.jpg
使用正常采样输出:

使用select输出:

但是,对于某些视频,正常采样可能不好,并且可能会创建冗余帧.有没有办法在ffmpeg中使用一些选项并获得没有这种模糊的帧?如果正常采样可以获得良好的帧,则附近应该存在没有模糊的帧.我已经查看了ffmpeg中的场景切换等选项,但我不熟悉将它们用于此应用程序.
video ffmpeg image-processing video-processing computer-vision
c++ ×3
javascript ×2
video ×2
android ×1
c++11 ×1
exception ×1
ffmpeg ×1
firefox ×1
gcc ×1
html5 ×1
html5-video ×1
ios ×1
iphone ×1
jquery ×1
memory-leaks ×1
objective-c ×1
postgresql ×1
regex ×1
sdk ×1
serial-port ×1
sql ×1
transactions ×1
windows ×1