您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    每个开发人员都应该了解这些术语中更深的纤细差别
    时间:2020-07-09 08:30 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    当您说某个特定的框架是"异步","非阻塞"和"事情驱动"时,请确保运用正确的词。

    每个开发人员都应该了解这些术语中更深的纤细差别

    当您的同事将某种东西描画为非阻塞的异步I / O时,这意味着什么。 能否可以运用阻塞的异步I / O? 假设不是,非阻塞和异步意味着同一件事吗? 在本文中,我将解释这些(以及许多其他)常用(常常被滥用)的软件工程术语的正确含义和用法。

    并发与并行执行并发-堆叠执行或时间分片。 并发是一种编程属性,即使关于单核计算机也能够发作。

    并行性-同时执行。 这是执行硬件的属性,其中义务虚际上同时停止。

    同步与AsyncSynchronous-在同步操作的状况下,发起操作的一方必须等候操作完成。

    异步-在异步操作中,启动器不需求等候操作完成。 它可以继续停止下一步,而无需等候对方的结果。 稍后可以经过其他某种机制来检测操作的完成。 除了编程,该概念还可以运用于其他范围。 电子邮件是异步通讯的一个示例,而电话对话是同步的。

    阻塞与非阻塞这是一个编程概念,与编写代码的方式有关(与同步与异步不同)。 假设函数调用立刻前往一个值,则称为非阻塞。 在某些状况下,例如I / O,功用的逻辑完成结果无法立刻取得。 但是,它将援用前往到占位符,该值稍后将可用。 例如,Java Future。 即使该值仅在10秒钟后可用,以下函数也会立刻前往。

    public Future<Integer> calculate(Integer input) {  

      return executor.submit(() -> {  

        Thread.sleep(10000); return input * input;  

        });  

    异步函数调用不能阻塞。

    取决于上下文,非阻塞和异步能够意味着相反,也能够不同。 虽然电子邮件通讯是异步的,但将电子邮件称为非阻塞性呼叫并没有任何意义。

    命令式与声明式编程作风

    声明式编程是一种编程范例,用于表达计算的逻辑(要做什么)而不描画其控制流程(如何做)。 例如SQL命令。

    命令式编程是一种编程范式,它依据更改顺序形状的语句来描画计算。

    下面的示例循环遍历数字1到10,并找到偶数。

    List<Integer> numbersOneThroughTen = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); 

    //With imperative programming, we'd step through this, and decide //what we want: 

    List<Integer> evenNumbers = new ArrayList<>(); 

    for (Integer eachValue : numbersOneThroughTen) { 

        if (eachValue % 2 == 0) { 

            evenNumbers.add(eachValue); 

        } 

    //The following code uses declarative programming to accomplish the //same thing. 

    // Here, we're saying "Give us everything where it's odd" 

    evenNumbers = numbersOneThroughTen.stream().filter(num -> num % 2 == 0) 

                  .collect(Collectors.toList()); 

    留意:这是一个笼统概念。 在下面的示例中,您可以进一步说我们没有失掉" foreach"的实践完成,因此从某种意义上说,它是在描画"做什么"而不是"如何做"。 从地道的命令式到地道的声明式,每种编程作风都处在某种范围内。 函数式编程比进程式编程更具声明性。

    功用编程一种顺序设计范例,其中经过运用和组合功用来结构顺序。 在函数式编程中,将函数视为一等公民,这意味着它们可以绑定到称号(包括本地标识符),作为参数传递并从其他函数前往,就像任何其他数据类型一样。 这允许顺序以声明性和可组合的方式编写,其中将小的功用组合在一同以创立更大的功用和顺序。 纯函数式编程是一切函数均为纯函数的函数式编程的子集。 我将写另一篇有关函数式编程的详细博客文章。

    (责任编辑:admin)