|
|
1
8
我是客户,我需要一些东西, 拉 它来自服务器。 我是服务器,我有东西, 推 交给客户。 |
|
|
2
4
这意味着您的LINQ查询将根据查询从数据源中提取数据,并且仅在执行时执行。与推送模型不同,在推送模型中,服务器在其端部生成数据,然后将数据推送到客户机。推送模式类似于黑莓企业服务器,它将电子邮件推送到黑莓设备,而不是设备不断地查询电子邮件。这也意味着,自LINQ查询以来所做的任何更改都不会反映在数据集中。 |
|
|
3
3
要真正理解(和欣赏)区别,你需要考虑 陈述 和一个 表达 . 如您所知,命令式编程语言(如C和VB)通常使用按顺序执行的语句来实现某些目标。在这种方案中,您检索数据,然后将其推送到其他一些语句中。相反,函数式编程倾向于使用 表达 这只是价值观。在LINQ的情况下,您声明一个查询表达式,在某个时刻它将计算为一个值,但直到需要它时才会这样做。这让您,作为程序员,更专注于您的程序做什么,而不是它怎么做。更广泛地说,懒惰描述了一种通常由函数式编程语言使用的评估策略。例如,如果您有如下声明:
一种懒惰的编程语言不会费心计算表达式,除非它显式地需要,但同时您可以通过绑定引用它。 X . 同样,当您在LINQ中进行如下声明时:
您声明了一个表达式并将其绑定到 收集 但在你做一些事情之前你并不真正需要它 收集 . 因此,您可以在代码中的任何地方声明它,而不必担心它在不使用时占用内存,因此,您现在更多地考虑要解决的问题,而不是详细说明计算机应该如何解决它。 因此,总之,在一种(迫切的)命令式编程中,您可以获取数据,然后 推 它将作用于某个函数。在一种(懒惰的)函数式编程中,您声明一个表达式,在某个时刻它将在需要的时候被计算出来,在数据库中,这意味着需要查询表达式值的函数将 拉 当它需要的时候。然而,推/拉确实是个糟糕的术语。 |
|
|
4
1
在拉模型中,处理是由结果的使用者启动的(结果是通过处理管道“拉”的)。 在推送模型中,处理由数据的生产者启动(数据被“推送”到处理管道中)。 因此,无论在哪种情况下,将要处理的数据都是正在处理的,并且它移动的“方向”(推/拉)相对于触发处理的人。 |
|
|
theblitz · 仅将最新提交拉入浅克隆 8 年前 |
|
|
Sajith Silva · golang git回购 8 年前 |
|
|
user8238012 · 远程和本地git存储库 8 年前 |
|
|
Q-BiC · 在git pull之后显示提取的提交--rebase 11 年前 |