小编Sof*_*Guy的帖子

我对HTTP轮询,长轮询,HTTP流和WebSockets的理解

我在SO和网上阅读了很多关于我的问题标题中的关键词的帖子,并从中学到了很多.我读到的一些问题与具体的实施挑战有关,而其他问题则侧重于一般概念.我只是想确保我理解为什么技术X是在技术Y上发明的所有概念和原因等等.所以这里:

Http Polling:基本上是AJAX,使用XmlHttpRequest.

Http Long Polling: AJAX但服务器保持响应,除非服务器有更新,一旦服务器有更新,它发送它然后客户端可以发送另一个请求.缺点是需要来回发送额外的头数据会导致额外的开销.

Http Streaming:类似于长轮询,但是服务器使用带有"Transfer Encoding:chunked"的标头进行响应,因此每次服务器发送一些数据时我们都不需要发起新的请求(因此节省了额外的头部开销).这里的缺点是我们必须"理解"并找出数据的结构,以区分服务器发送的多个块.

Java Applet,Flash,Silverlight:它们提供了通过tcp/ip连接到套接字服务器的能力,但由于它们是插件,开发人员不希望依赖它们.

WebSockets:它们是新的API,它试图通过以下方式解决上述方法的缺点:

  • 与Java Applet,Flash或Silverlight等插件相比,WebSockets的唯一优势是WebSockets本身内置于浏览器中,不依赖于插件.
  • WebSockets优于http流的唯一优势是您不必努力"理解"并解析收到的数据.
  • WebSockets优于长轮询的唯一优势是消除额外的标头大小以及为请求打开和关闭套接字连接.

我还缺少其他重大差异吗?如果我重新询问或将SO上已有的许多问题合并到一个问题中,我很抱歉,但我只是想从SO和网络上有关这些概念的所有信息中完全理解.

谢谢!

javascript web-applications comet websocket http-streaming

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

这是javascript关闭的有效用例吗?

我已经查看了SO上的所有其他(优秀)答案(尤其是:JavaScript关闭如何工作?)但我想要您对我对该概念的理解的反馈.

据我所知,一个用例是隐藏私有方法的实现,不受公共访问.

我想到的另一个是它作为工厂发电机:

<script>

function carFactory( make ) {

    var m = make;
    return { manufacture: function ( model ) 

        {console.log("A " + m + " " + model + " has been created");}

    }
}

toyotaFactory = carFactory("toyota");
hondaFactory = carFactory("honda");

toyotaFactory.manufacture("corolla");
toyotaFactory.manufacture("corolla");
hondaFactory.manufacture("civic");

</script>
Run Code Online (Sandbox Code Playgroud)

这输出:

A toyota corolla has been create
A toyota corolla has been created
A honda civic has been created 
Run Code Online (Sandbox Code Playgroud)

那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?

请注意,问题不在于闭包的技术实现,而在于应用程序设计/开发中的有效用例.

谢谢.

javascript closures application-design

9
推荐指数
1
解决办法
213
查看次数

在JavaFX中按顺序转换ImageView

我已经看过如何在javafx 2.1中等待转换结束?但它并没有完全解决我的问题.

我有一个ImageView对象列表,我想迭代这个List并在List的每个'slide'上执行以下操作:

  1. 淡入
  2. 停留几秒钟
  3. 淡出

我有以下代码,但由于转换是异步的,循环同时应用转换到所有'幻灯片':

// The method I am running in my class

public void start() {

    for (ImageView slide : slides) {

        SequentialTransition sequentialTransition = new SequentialTransition();

        FadeTransition fadeIn = Transition.getFadeTransition(slide, 0.0, 1.0, 2000);
        FadeTransition stayOn = Transition.getFadeTransition(slide, 1.0, 1.0, 2000);
        FadeTransition fadeOut = Transition.getFadeTransition(slide, 1.0, 0.0, 2000);

        sequentialTransition.getChildren().addAll(fadeIn, stayOn, fadeOut);               
        this.root.getChildren().add(slide);            
        sequentialTransition.play();

    }
}

// the method in the Transition helper class:

public static FadeTransition getFadeTransition(ImageView imageView, double fromValue, double toValue, int durationInMilliseconds) …
Run Code Online (Sandbox Code Playgroud)

java design-patterns javafx javafx-2

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

按日期范围分组的 SQL

我有以下数据:

Date        Code
2014-08-01  A
2014-08-02  A
2014-08-03  A
2014-08-04  A
2014-08-05  A
2014-08-06  A
2014-08-07  A
2014-08-08  XXXX
2014-08-09  XXXX
2014-08-10  BB
2014-08-11  CCC
2014-08-12  CCC
2014-08-13  CCC
2014-08-14  CCC
2014-08-15  CCC
2014-08-16  CCC
2014-08-17  CCC
2014-08-18  XXXX
2014-08-19  XXXX
2014-08-20  XXXX
2014-08-21  XXXX
2014-08-22  XXXX
2014-08-23  XXXX
2014-08-24  XXXX
2014-08-25  XXXX
2014-08-26  XXXX
2014-08-27  XXXX
2014-08-28  XXXX
2014-08-29  XXXX
2014-08-30  XXXX
2014-08-31  XXXX
Run Code Online (Sandbox Code Playgroud)

我想用代码和日期范围对数据进行分组,以便输出变为:

Min Date    Max Date    Code
2014-08-01  2014-08-07  A
2014-08-08  2014-08-09  XXXX
2014-08-10  2014-08-10  BB …
Run Code Online (Sandbox Code Playgroud)

sql database postgresql database-schema

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

困惑于n ^ 2和2 ^ n的大O.

我在一本书中读到,下面的表达式O(2^n + n^100)将被简化为:O(2^n)当我们删除无关紧要的部分时.我很困惑,因为根据我的理解,如果值n3那么部分n^100似乎有更高的执行次数.我错过了什么?

algorithm big-o runtime

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