小编Seb*_*olm的帖子

使用套接字进行进程间通信的限制是什么?

我正在创建一个Firefox扩展,允许在Firefox中使用Standard ML(SML)作为客户端编程语言.它的工作方式如下:

  1. 该扩展启动了PolyML进程(具有顶级交互式shell的SML编译器).
  2. 然后在扩展和PolyML过程之间建立套接字通信.
  3. 从网页读取SML代码,并通过套接字发送到PolyML流程进行评估.
  4. 然后,该代码可以使用我提供的库来处理DOM.

以下是DOM库的实现方式:

  1. 假设有人执行SML函数DOM.getElementById
  2. 此请求通过套接字转发到扩展,扩展在页面上执行JavaScript函数getElementById,并通过套接字将结果发送回PolyML进程.

我的问题是,理论上,在套接字通信方面,我应该期待在性能方面有什么限制?

我做了一些非常近似的分析,似乎在扩展和PolyML之间使用这个接口,我可以大约发送2500条消息/秒,平均大小为70字节/消息.

为了说明这一点,我想在浏览器中使用Canvas元素绘制一些动画.如果我想达到20fps,这意味着我需要在0.05秒内绘制每一帧,这意味着我每帧只能发送大约125条消息.这些消息对应于JavaScript函数调用.例如,下面的代码绘制一个路径并进行9次JavaScript函数调用,这些调用对应于套接字通信中的9条消息.

val _ = Canvas.beginPath context;
val _ = Canvas.setFillStyle context fillColor;
val _ = Canvas.setStrokeStyle context fillColor;
val _ = Canvas.setLineWidth context size;
val _ = Canvas.moveTo context posx posy;
val _ = Canvas.lineTo context posx_new posy_new;
val _ = Canvas.stroke context;
val _ = Canvas.arc context posx_new posy_new (size/2.0) 0.0 6.28 true;
val _ = Canvas.fill context;
Run Code Online (Sandbox Code Playgroud)

显然,JavaScript有更好的性能,我想你可以在0.05秒内完成数千(数百)次Canvas/DOM函数调用,用于绘制帧.

所以,我想我的问题是,您是否有使用套接字通信进行非常快速的消息交换的经验.我想知道2500条小信息/秒(在这种情况下,相当于150千字节/秒)是否正确或者我可能做错了什么.

例如,有人怀疑firefox中的套接字实现(特别是通过JavaScript接口https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIServerSocket使用它)对于这种快速交互并不是很好.例如,从套接字读取是通过事件循环机制完成的.那就是我依靠Firefox ..来通知我有关传入套接字消息的可用性,有时在发送消息和接收它之间有一个很大的(例如250ms)延迟(虽然这似乎只有在firefox忙于做的时候才会发生其他的事情,我对套接字通信的理论限制更感兴趣 …

sockets firefox sml firefox-addon interprocess

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

jQuery - 使用attr('src',newimage)刷新同名图像的问题

我正在尝试刷新页面上的图像,但它没有发生.我有一个带图像的页面,我需要根据需要更新这些图像.要更新图像,我将图像上传到灯箱,然后关闭灯箱.页面上的图像应自行更新.现在,我尝试了$('#imageid').attr('src',newimage).我想在这里特别提一下,旧图像和新图像的名称是相同的.我觉得这是问题所在.如果我硬编码任何其他图像,它会在灯箱关闭后立即出现.但是,当我尝试通过为'src'属性添加相同的图像名来刷新图像时,没有任何反应.

有人可以帮助我解决这个问题,并显示更新的图像.

谢谢.

编辑:这可能是缓存吗?

javascript jquery

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

将String转换为泛型类型

我的程序必须从文件中接收输入,输入可以是字符,整数或字符.有了这个,我必须从文件中给出的元素创建一个树.输入的类型在文件的开头给出.我的问题是我的insertNode函数将该元素作为泛型类型T接收,但该文件被读作字符串.如何将String转换为T型?

尝试编译:

String element = br.readLine();  
T elem = (T)element; 
Run Code Online (Sandbox Code Playgroud)

导致编译错误:

"发现:需要java.lang.String:T"

java string generics

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

Google appengine将本地gif作为电子邮件附件发送

我正在尝试将一个本地gif作为电子邮件附件发送到Google appengine上.电子邮件将发送但没有附件.

message = mail.EmailMessage(sender="My image <whomever@gmail.com>",
subject="image")

message.to = "Jim <whomever@gmail.com>"

message.body = my_body_text

message.html = my_body_html

image = open('./bust.gif', 'r')

attachments=[(image.name, image.read())]

message.send()

image.close()
Run Code Online (Sandbox Code Playgroud)

python google-app-engine image gif email-attachments

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

在一天中迭代几个小时

有一个DateTime变量,例如:

DateTime testDate = new DateTime(2011,12,15,00,00,00);
Run Code Online (Sandbox Code Playgroud)

如何在今天的每个小时实现一个foreach循环?

就像是:

foreach (int myHour in testDate.Date)
{

}
Run Code Online (Sandbox Code Playgroud)

但是这种方式不能编译.

c#

4
推荐指数
2
解决办法
5425
查看次数

有条件地关闭HAML中的标签

我正在迭代一组项目并将它们显示在嵌套在div中的列表中.目标是每天都有一个div,每个div中显示当天的项目.

我如何在HAML中执行此操作?我不认为我可以(或应该)有条件地关闭并创建一个新的标签,就像我在erb中所做的那样.

我试过了:

- @items.each do |item|
  - if item date is diff from previous make a new container
    .container
      %h2 #{item.date}
      = yield_content :display_item item
  - else
    = yield_content :display_item item
Run Code Online (Sandbox Code Playgroud)

但这会产生以下结果:

<div class="container">
<h2>01/28/2012</h2>
      <ul>
            <li>
              ... item
        </li>
      </ul>
</div>
        <li>
        ...item
      </li>
Run Code Online (Sandbox Code Playgroud)

但是我希望同一个div中的其他项目.我正在使用ruby,sinatra(包括content_for帮助器)

haml

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

.NET中的标准输入和输出

如何从标准输入读取并写入标准输出.System.Diagnostics.Process.StandardInput的MSDN引用没有帮助,因为它单独启动进程,然后重定向标准输入/输出但是如果进程已经运行并调用我的应用程序来为它提供一些数据.这是一个让事情变得清晰的例子:

我只是使用Unix管道,即cygwin中的cat命令(类似Linux的环境中的Linux),它基本上只读取标准输入并打印到标准输出.以下是命令:

%cat input/sample.txt | SRC/CSHARP/maptest

但这似乎不起作用.

如果有人知道ruby在这里,因为我不在这里我想在C#中做同样的事情:

#!/usr/bin/env ruby 

STDIN.each_line 
do |line| 
some code here 
end
Run Code Online (Sandbox Code Playgroud)

这里有一些我希望在c#或vb.net中完成的python等效代码:

#!/usr/bin/env python 

import re 
import sys 

for line in sys.stdin: 
val = line.strip() 
Run Code Online (Sandbox Code Playgroud)

有解决方案吗

提前致谢.

.net c#

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

PHP mktime()适用于1900年前的日期

所以我正在研究这个按日期排序日期的系统.我正在使用制作时间,我一切正常,直到它击中1900年或以下.一切都返回12月24,1644类型的日期.任何人都可以为什么会发生这种情况并且可能解决这个问题?

这个代码:

//$decades is a string ex: '1950-1960'

$decade_array=explode('-',$decades);

$date_active=date("M-d-Y", mktime(0, 0, 0, 1,1 , trim($decade_array[0]) ));
$date_inactive=date("M-d-Y", mktime(0, 0, 0, 1, 1, trim($decade_array[1]) ));

echo $date_active.' '.$date_inactive;
Run Code Online (Sandbox Code Playgroud)

php datetime mktime

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

C++ cURL每次都是"来自服务器的空回复"

我正在尝试编写一个C++程序,使用cURL从网站上读取.我已经开始使用cURL示例simple.c中的代码了.如果我完全使用该代码,无论我尝试访问哪个URL,我都会收到错误#52:"来自服务器的空回复".这适用于我尝试的任何网址.如果我从命令行使用cURL,它似乎工作正常.

我的程序的冗长响应是:

*About to connect() to www.google.com port 80 (#0)
* Trying 74.125.91.99...* connected
*connected to www.google.com (74.125.91.99) port 80 (#0)
>GET / HTTP/1.1
Host: www.google.com
Accept: */*

* Empty reply from server
* Connection #0 to host www.google.com left intact
* server returned nothing (no headers, no data)
*Closing connection #0
Run Code Online (Sandbox Code Playgroud)

代码是:

CURL *curl; 
CURLcode res;

curl = curl_easy_init(); 
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com"); 
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl); 
Run Code Online (Sandbox Code Playgroud)

c++ curl

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

r - 计算每秒的事务数

如果我有一个日期如下的数据集:

head(ds$TransStartTmdte) 

[1] "2011-05-09 08:50:12" "2011-05-09 09:03:46" "2011-05-09 09:06:49" "2011-05-09 09:13:05" "2011-05-09 14:21:58" "2011-05-09 14:23:00"
Run Code Online (Sandbox Code Playgroud)

如果每行重新表示"事务",我如何计算每秒的事务数.

日期格式为POSIXt

dput(head(ds$TransStartTmdte))

structure(list(sec = c(0.007, 0.013, 0.018, 0.012, 0.043, 0.039
), min = c(34L, 34L, 34L, 34L, 34L, 34L), hour = c(14L, 14L, 
14L, 14L, 14L, 14L), mday = c(9L, 9L, 9L, 9L, 9L, 9L), mon = c(4L, 
4L, 4L, 4L, 4L, 4L), year = c(111L, 111L, 111L, 111L, 111L, 111L
), wday = c(1L, 1L, 1L, 1L, 1L, 1L), yday = c(128L, 128L, …
Run Code Online (Sandbox Code Playgroud)

r

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