我在SO和网上阅读了很多关于我的问题标题中的关键词的帖子,并从中学到了很多.我读到的一些问题与具体的实施挑战有关,而其他问题则侧重于一般概念.我只是想确保我理解为什么技术X是在技术Y上发明的所有概念和原因等等.所以这里:
Http Polling:基本上是AJAX,使用XmlHttpRequest.
Http Long Polling: AJAX但服务器保持响应,除非服务器有更新,一旦服务器有更新,它发送它然后客户端可以发送另一个请求.缺点是需要来回发送额外的头数据会导致额外的开销.
Http Streaming:类似于长轮询,但是服务器使用带有"Transfer Encoding:chunked"的标头进行响应,因此每次服务器发送一些数据时我们都不需要发起新的请求(因此节省了额外的头部开销).这里的缺点是我们必须"理解"并找出数据的结构,以区分服务器发送的多个块.
Java Applet,Flash,Silverlight:它们提供了通过tcp/ip连接到套接字服务器的能力,但由于它们是插件,开发人员不希望依赖它们.
WebSockets:它们是新的API,它试图通过以下方式解决上述方法的缺点:
我还缺少其他重大差异吗?如果我重新询问或将SO上已有的许多问题合并到一个问题中,我很抱歉,但我只是想从SO和网络上有关这些概念的所有信息中完全理解.
谢谢!
我已经查看了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)
那么你认为它是闭包的有效用例(即使用相同的代码库创建多个工厂)吗?或者我可以使用更好的东西来实现同样的目标吗?
请注意,问题不在于闭包的技术实现,而在于应用程序设计/开发中的有效用例.
谢谢.
我已经看过如何在javafx 2.1中等待转换结束?但它并没有完全解决我的问题.
我有一个ImageView对象列表,我想迭代这个List并在List的每个'slide'上执行以下操作:
我有以下代码,但由于转换是异步的,循环同时应用转换到所有'幻灯片':
// 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) 我有以下数据:
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) 我在一本书中读到,下面的表达式O(2^n + n^100)
将被简化为:O(2^n)
当我们删除无关紧要的部分时.我很困惑,因为根据我的理解,如果值n
是3
那么部分n^100
似乎有更高的执行次数.我错过了什么?