小编Mar*_*lli的帖子

运行一段时间后,Java程序变慢了

我有一个java程序,这是一个典型的机器学习算法,通过一些方程更新一些参数的值:

for (int iter=0; iter<1000; iter++) {
    // 1. Create many temporary variables and do some computations                         
    // 2. Update the value for the parameters                    
}
Run Code Online (Sandbox Code Playgroud)

更新参数的计算相当复杂,我必须创建许多临时对象,但它们不会在循环之外引用.循环中的代码是CPU密集型的,不访问磁盘.这个程序加载了一个相对较大的训练数据集,因此,我给JVM授予了10G内存(-Xmx10G),这比它要求的要大得多("top"命令或窗口的任务管理器在~6G处达到峰值).

我在几台linux机器(centos 6,24G内存)和一台窗口机器(win7,12G)上进行了测试,两者都安装了SUN Hotspot JDK/JRE 1.8.除了-Xmx之外,我没有指定其他JVM参数.这两台机器都专用于我的程序.

在Windows上,我的程序运行良好:每次迭代使用非常相似的运行时间.但是,所有centos机器的运行时间都很奇怪. 它最初运行正常,但在第7/8次迭代时显着减慢(~10倍慢),然后在每次迭代后保持减速~10%.

我怀疑它可能是由Java的垃圾收集器引起的.因此,我使用jconsole来监控我的程序.次要GC在两台机器上经常发生,这是因为程序在循环中创建了许多临时变量.此外,我使用"jstat -gcutil $ pid $ 1s"命令并捕获统计信息:

Centos:https://www.dropbox.com/s/ioz7ai6i1h57eoo/jstat.png dl = 0

窗口:https://www.dropbox.com/s/3uxb7ltbx9kpm9l/jstat-winpng.png?dl = 0

[已编辑]但是,两种机器的统计数据差异很大:

  1. Windows上的"S1"在0到50之间快速跳跃,而在centos上保持"0.00".
  2. Windows上的"E"从0变为非常快.当我每秒打印统计数据时,屏幕截图并没有显示其增量为100.但是,"E"会逐渐增加到100,然后减少到0,再次增加.

看来我的程序奇怪的行为是由于Java GC?我是Java性能监视器的新手,并不是一个优化GC参数设置的好主意.你有什么建议吗?非常感谢你!

java linux memory performance garbage-collection

17
推荐指数
1
解决办法
3313
查看次数

如何查看哪个选项卡打开(弹出)窗口?

问题

我已经有好几个月的问题,但这个概念很简单:我想阻止一些恶意网站™以编程方式打开标签或弹出窗口.

使用chrome.tabsAPI,我可以onCreated在创建新选项卡时监听,并且我可以轻松地检查谁(即哪个选项卡)打开该特定选项卡访问openerTabIdTab传递给回调函数对象属性.

现在,我想在创建一个新窗口时做同样的事情:我想知道哪个选项卡打开了窗口(如果有的话,因为它也可能已被用户打开),检查其URL以查看是否它是恶意网站™,并采取相应行动(即阻止弹出窗口).我尝试以完全相同的方式执行它:请求新窗口中的选项卡数组并检查它们的openerTabId属性,但不幸的是这样的属性没有定义!我搜索了文档和谷歌搜索几个小时,但遗憾的是,看起来没有简单的方法来检查谁打开了一个窗口.

一个非常笨拙的解决方案

说明以上内容,我能够做到甚至远远接近我真正想要的东西的唯一方法是:

  1. 每一个新的时间窗口创建,其ID被添加到称为阵列windowWatchlist.
  2. 每一个时间更新(注意:更新,而不是创建),脚本注入里面,以检查它document.referrer,它应该包含哪些打开的标签网站的URL:如果参照网址包含恶意网站™的地址我想阻止弹出窗口,然后关闭窗口并从中删除windowWatchlist.
  3. 每一个时间窗口关闭,如果它的ID是在windowWatchlist,它会从它删除.

这是代码(在我的background.js脚本中运行):

// Called on chrome.windows.onCreated
function watchPopupWindow(window) {
    windowWatchlist.push(window.id);
    console.log('Added window #' + window.id + ' to watchlist.');
}

// Called on chrome.windows.onRemoved
function …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

17
推荐指数
1
解决办法
1062
查看次数

电子邮件中的 URL 是否已被搜索引擎索引,以便可以公开搜索?

我在这里阅读了一些有关电子邮件客户端预取电子邮件中的 URL 的问题。对此的答案似乎是添加一个新的确认页面,用户必须在其中单击按钮来确认所需的操作。

但是,这个答案指出了以下内容:

截至 2017 年 2 月,Outlook ( https://outlook.live.com/ ) 会扫描到达收件箱的电子邮件,并将所有找到的 URL 发送到 Bing,以便由 Bing 爬网程序编制索引。

这实际上使得所有一次性使用的链接(例如登录/密码重置/等)变得毫无用处。

(我的服务的用户抱怨一次性登录链接对其中一些人不起作用,而且 BingPreview/1.0b 似乎在用户打开收件箱之前就点击了该 URL)

Drupal 似乎遇到了同样的问题: https ://www.drupal.org/node/2828034

我主要关心的是这个声明:

截至 2017 年 2 月,Outlook ( https://outlook.live.com/ ) 会扫描到达收件箱的电子邮件,并将所有找到的 URL 发送到 Bing,以便由 Bing 爬网程序编制索引。

如果是这种情况,则电子邮件中用于确认操作(例如确认登录、订阅或取消订阅)的任何 URL 最终都可以在搜索引擎中搜索到(如果这就是上面引用中的含义)indexed。在本例中,它是 Bing。即使是用户确认所需操作的专用确认页面也无法真正缓解这种情况。

场景#1

如果我通过电子邮件向用户发送一个登录链接,其中 URL 中包含一次性令牌,则该 URL 最终将出现在 Bing 中。该令牌的生命周期很短,比如说 5 分钟,因此我怀疑是否有人会在用户点击该令牌或令牌过期之前在 Bing 上进行搜索并找到该 URL。

场景#2

用户会收到一封电子邮件,其中包含确认订阅的链接。此链接的有效期可能为 24 小时。这可能(?)足够长,以至于其他人在搜索引擎上偶然发现该链接并意外(或故意)代表用户确认订阅。

场景 #2 并不罕见,据我所知,使用双重选择加入甚至是最佳实践。

场景#3

取消订阅时事通讯底部的 URL。也许永远有效?您不希望在搜索引擎中公开搜索此内容。

假设所有一次性确认链接都位于用户确认所需操作的确认页面上。

电子邮件中的 URL 被搜索引擎(至少是 Bing)索引真的是问题所在吗?它们最终真的会被公开搜索吗?indexed如果不是,那么上面引用的内容是什么意思? …

security email search-engine

16
推荐指数
1
解决办法
2854
查看次数

Javascript:在字符串中查找最长的单词

function longestWord(string) {
    var str = string.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length - 1; i++) {
        if (longest < str[i].length) {
            longest = str[i].length;
            word = str[i];
        }
    }
    return word;
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时longestWord("Pride and Prejudice"),它会返回'Pride'而不是'偏见'这是最长的单词......为什么?我检查了一些其他类似的问题,但解决方案看起来很像我的代码.

javascript

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

如何防止PuTTY shell在Windows中从批处理文件执行命令后自动退出?

我写了一个这样的批处理文件:

Start putty.exe -ssh 172.17.0.52 -l root -m dummy.txt
Run Code Online (Sandbox Code Playgroud)

然后dummy.text我写了这个命令:

avahi-daemon --no-drop-root -D
export XVHMI_USERCONFIG_PATH=/home/UserProfileConfig
export XDG_RUNTIME_DIR=/tmp
cd /opt/bosch/airis/bin
Run Code Online (Sandbox Code Playgroud)

当我运行.bat文件时,PuTTY启动,命令执行(希望,不确定)并退出.

如何保持窗口打开?

我用谷歌搜索了同样的,但没有坚实的帮助.我读到堆栈溢出本身,我们需要在txt文件中定义一些东西,但是最重要的是什么?

windows shell putty cmd batch-file

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

当window.open触发print onLoad时,父窗口会冻结

我有一个场景,在我的网页上我做了一个window.open(),打开另一个窗口onLoad()调用window.print().在此流程中,父级window仍然被冻结,不允许点击任何链接.如何摆脱这个问题?

例如:

HTML页面有三个链接:创建,管理和打印.打印链接的javascript代码如下:

    var url = '/actions/print/';
    var win = window.open(url,"Title_","resizable=yes,scrollbars=yes,directories=no,titlebar=no,location=no,status=no,menubar=no,width="+width+",height="+height);
Run Code Online (Sandbox Code Playgroud)

现在,呈现的HTML /actions/print是:

<html><body onload="window.print();"> ... Content goes here ...</body></html>
Run Code Online (Sandbox Code Playgroud)

如您所见,单击打印将打开一个新窗口并立即触发打印.在这种状态下,当我回到具有三个链接的父窗口并尝试单击其他链接时,它不起作用并显示为冻结.

html javascript printing window

13
推荐指数
1
解决办法
1310
查看次数

如何在PHP中检测互联网速度?

如何创建一个PHP页面来检测用户的互联网速度并在页面上显示?就像是,

你的网速是??? Kbps的

php performance

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

我该如何处理SIGCHLD?

我需要SIGCHLD妥善处理.如何在现有代码中使用它.目前我不能等待孩子的过程,除非我用0而不是WNOHANG|WUNTRACED.

status = 0; 
pid_t child, endID;

if(amp == 1)
        signal( SIGCHLD, SIG_IGN ); 

child = fork(); 

if (child  <  0) {    
        perror("fork() error\n");
        exit(EXIT_FAILURE);

} else if (child == 0) { 
        // do sth here
        perror("error\n");

} else { 
        //sleep(1)
Run Code Online (Sandbox Code Playgroud)

如果我删除sleep然后父执行第一..为什么?

c sigchld

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

什么是JavaScript的Object.prototype行为?

我遇到了一段奇怪的代码片段,我根本无法理解,这里是:

var obj = function() {};
obj.prototype.x = 5;

var instance1 = new obj();

obj.prototype = {y: 6};

var instance2 = new obj();

console.log(instance1.x, instance1.y, instance2.x, instance2.y);
// 5, undefined, undefined, 6
Run Code Online (Sandbox Code Playgroud)

现在,问题是:

  1. 为什么这个日志记录5, undefined, undefined, 6而不是undefined, 6, undefined, 6
  2. 为什么替换原型并不像通常那样改变对象的所有实例的原型?
  3. 在此代码中,V8引擎一步一步地做什么?
  4. 编辑:我将如何改变所有实例的原型?

每个解释都表示赞赏.

javascript prototype object javascript-objects

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

在Twitter上共享时URL中的阿拉伯字符

我正试图在Twitter上分享包含阿拉伯字符的URL:

http://example.com/????-??????-???????-???-?????-???????/
Run Code Online (Sandbox Code Playgroud)

当我点击"分享"时,推文框中会显示相同的网址,但是当我实际发推文时,它只会链接到http://example.com,而其余​​的网址则会丢失.

我尝试过使用urlencode(),但生成的网址太长且无法发送推文.我该怎么解决这个问题?

php twitter urlencode utf-8 arabic

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