小编Att*_*Kun的帖子

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

“Hello world”Rust 网络服务器从 Chrome 而非 curl 测量时比 Node 慢

我创建了一个存储库,其中包含基于 Node.js和基于Rocket.rs 的Web 服务器。

考虑以下步骤:

  1. 通过以下方式启动 Rocket.rs 服务器 cargo run --release
  2. 通过以下方式启动 Node.js 服务器 node server.js
  3. 在 Chrome 中并排打开 http://localhost:8000/ (Rocket) 和 http://localhost:8090/ (Node)。
  4. 打开开发者控制台后,我不断刷新两个选项卡,并观察到 ​​Node 选项卡总是在 5 毫秒内完成,而火箭选项卡有时需要超过 300 毫秒才能完成:

在此处输入图片说明

我也用 actix-web 观察到类似的事情,但程度较小:在这种情况下,如果我没有刷新选项卡大约 5 秒,我只会得到大约 300 毫秒的延迟。如果我不断刷新它,那么请求会在 5 毫秒内完成。

有趣的是,延迟似乎如果我通过像袅袅衡量不会出现这种。我的两台服务器都有大约 4 毫秒的延迟。

我注意到 Rocket 和 actix-web 不会在他们的响应中发送 Keep-Alive 标头。如果我理解正确,这对于 HTTP 1.1 请求应该无关紧要。

我正在使用安装了 Ubuntu 的 WSL 2。Chrome 在主机 Windows 中运行。

有人可以解释一下这里发生了什么吗?

更新:忘了说我是使用夜间编译器来构建火箭服务器的(Rocket v0.4.6 似乎需要它)。直接从主分支更改为稳定和构建摆脱了延迟。尽管如此,actix-web 延迟仍然有点令人担忧,因为我使用了稳定的编译器。

performance latency node.js rust rust-rocket

11
推荐指数
1
解决办法
469
查看次数

iPad Safari上的iframe CSS3缩放问题(iOS 5.0.1)

我需要扩展iframe以使其更大(我无法控制iframe内容的源代码).我试图通过-webkit-transform: scale(1.3)CSS属性实现它.

iframe的内容是按比例放大的,但是当我尝试触摸iframe中的任何控件时,似乎触摸事件正在错误的位置被接收(我可以看到控件的"阴影"在触摸错误的地方).因此事件处理程序不起作用(我怀疑它们没有被调用,因为在错误的位置检测到触摸).有人遇到过这个问题吗?可以解决吗?

我创建了一个产生问题的测试用例(在iPad Safari中试用):http://jsfiddle.net/9vem2/

源代码更易读:

父页面(iframe的容器):

<!DOCTYPE html>
<html>
<head>
    <title>Parent</title>

    <style type="text/css"> 
        iframe
        {        
            left: 200px;
            -webkit-transform: scale(1.3);
        }
    </style>    
</head>

<body>
    <h2>Parent</h2>
    <iframe src="child.html"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

子页面(iframe内容):

<!DOCTYPE html>
<html>
<head>
    <title>Child</title>
</head>

<body>
    <h2>Child</h2>
    <input type="text"></input>
    <button onclick="alert('hello');">Button</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

safari iframe scale css3 ipad

10
推荐指数
1
解决办法
3025
查看次数

在调用超类的构造函数之前,有没有办法在Java中初始化子类的成员变量?

我需要这个,因为超类中的构造函数正在调用在子类中重写的方法.该方法返回一个传递给子类构造函数的值.但必须在子类构造函数之前调用超类构造函数,因此我没有机会保存传入的值.

java oop

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

为什么.sln文件在.NET中不使用XML格式?

这个决定背后的特殊原因是什么?由于.csproj文件具有XML格式,因此它让我更加困惑.

.net projects-and-solutions visual-studio

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

也许monad绑定函数优先级

教程中,我发现了以下代码段:

deposit :: (Num a) => a -> a -> Maybe a
deposit value account = Just (account + value)

withdraw :: (Num a,Ord a) => a -> a -> Maybe a
withdraw value account = if (account < value) 
                         then Nothing 
                         else Just (account - value)

eligible :: (Num a, Ord a) => a -> Maybe Bool
eligible account =
  deposit 100 account >>=
  withdraw 200 >>=
  deposit 100  >>=
  withdraw 300 >>=
  deposit 1000 >>
  return …
Run Code Online (Sandbox Code Playgroud)

monads haskell maybe

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

如何在旋转对象时在OpenGL中固定光源?

我有一个glutSolidTeapot(根据opengl.org自动生成表面法线)和一个发射漫射光的光源.当我尝试旋转茶壶时出现问题:似乎光源也在进行旋转,而不是保持在我定义的相同位置(它基本上跟随茶壶).正如你在我的代码中看到的那样,我只在初始化时修改了光照位置,所以它不受glRotatef()的影响,因为它设置光位置后被调用.

尽管花了很多时间试图解决这个问题,我真的不知道这种行为可归因于什么.

粘贴glEnable(GL_NORMALIZE); 在初始化中也没有解决问题.

我认为所需的输出应该是一个带有光泽右侧的茶壶(因为光线来自那个方向),无论茶壶旋转的角度是多少.

如果要测试我的代码,请按空格键旋转茶壶.

#include <math.h>
#include <stdlib.h>

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
#include <windows.h>     
#endif

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>     

void onInitialization( ) { //creating the light source
 glEnable(GL_LIGHTING);
 glEnable(GL_DEPTH_TEST); 

 GLfloat diffuse[]={0.8, 0.8, 0.8, 1.0};
 GLfloat pos[]={0.5, 0.0, 0.8, 0.0};

 glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
 glLightfv(GL_LIGHT0, GL_POSITION, pos);

 glEnable(GL_LIGHT0);

 glRotatef(-90, 1, 0, 0); //we want to see the top of the teapot
}

void onDisplay( ) {
    glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | …
Run Code Online (Sandbox Code Playgroud)

opengl lighting

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

如何通过jQuery在keypress事件期间获取HTML文本输入的NEW值?

我只能在没有新按下的键的情况下检索值.使用keyup事件不是一个选项,因为如果用户没有释放密钥,它就不会触发.这很重要,因为我想对每一个按键动作.

与从事件的参数可达键代码结合旧的价值是不能接受要么,因为它不能保证用户将键入的文本字符串的结尾.

html javascript jquery keypress javascript-events

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

Knockout.js消耗太多内存

我保持Process Explorer打开并检查firefox.exe进程的"Private Bytes"列.在此示例中按"添加"按钮后:

<script id="tmplComment" type="text/x-jquery-tmpl">
    <div>
        <span>Comment:&nbsp;</span>
        <span data-bind="text: $data"></span>
    </div>
</script>    

<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">        
</div>
Run Code Online (Sandbox Code Playgroud)

使用此代码:

var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function()
{
    for(var i = 0; i<500; i++)
        vm.Comments.push(i.toString());
});
Run Code Online (Sandbox Code Playgroud)

(也看到这个jsfiddle)

我觉得Firefox使用的私有字节增加了大约50-100 MByte.

在我将它与缺乏依赖性跟踪的实现进行比较时,执行时间也相当长,给出了这个例子:

<script id="tmplComment" type="text/x-jquery-tmpl">
    <div>
        <span>Comment:&nbsp;</span>
        <span data-bind="text: $data"></span>
    </div>
</script>    

<input type="button" id="btnAdd" value="Add"/>
<div id="Content" data-bind="template: {name: 'tmplComment', foreach: Comments}">        
</div>
Run Code Online (Sandbox Code Playgroud)

使用此代码:

var vm = {Comments: ko.observableArray(["a", "b"])};
ko.applyBindings(vm);
$("#btnAdd").click(function() …
Run Code Online (Sandbox Code Playgroud)

javascript performance jquery-templates knockout.js

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

为什么Dialyzer没有发现此代码错误?

我已经根据教程创建了下面的代码片段.最后两行(feed_squid(FeederRP)feed_red_panda(FeederSquid))显然违反了定义的约束,但Dialyzer发现它们没问题.这是非常令人失望的,因为这正是我想要使用执行静态分析的工具捕获的错误类型.

教程中提供了解释:

在使用错误的馈线调用函数之前,首先使用正确的类型调用它们.从R15B01开始,Dialyzer不会在此代码中发现错误.观察到的行为是,只要对函数体内的给定函数的调用成功,Dialyzer就会忽略同一代码单元中的后续错误.

这种行为的理由是什么?我理解成功打字背后的哲学是"从不哭狼",但在目前的情况下,Dialyzer明显地忽略了故意定义的函数规范(在它看到之前已正确调用函数之后).我知道代码不会导致运行时崩溃.我可以以某种方式迫使Dialyzer始终认真对待我的功能规格吗?如果没有,是否有可以做到的工具?

-module(zoo).
-export([main/0]).

-type red_panda() :: bamboo | birds | eggs | berries.
-type squid() :: sperm_whale.
-type food(A) :: fun(() -> A).

-spec feeder(red_panda) -> food(red_panda());
            (squid) -> food(squid()).
feeder(red_panda) ->
    fun() ->
            element(random:uniform(4), {bamboo, birds, eggs, berries})
    end;
feeder(squid) ->
    fun() -> sperm_whale end.

-spec feed_red_panda(food(red_panda())) -> red_panda().
feed_red_panda(Generator) ->
    Food = Generator(),
    io:format("feeding ~p to the red panda~n", [Food]),
    Food.

-spec feed_squid(food(squid())) -> squid().
feed_squid(Generator) ->
    Food = …
Run Code Online (Sandbox Code Playgroud)

erlang static-analysis dialyzer

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