书栈网 · BookStack 本次搜索耗时 0.042 秒,为您找到 250897 个相关结果.
  • 6.2 编译器的工作流程

    6.2 编译器的工作流程 6.2 编译器的工作流程 先让我们回忆一下我们在上一章中是如何手工将源程序翻译成中间代码的,想一想翻译的第一步是什么?第一步是我们的人脑要理解源程序,理解源程序的结构,理解源程序的含义、作用,然后才能根据我们的理解进行翻译。 要让计算机将源程序翻译成目标程序,我们也要让计算机真正的理解源程序,让计算机分析出源程序的结构,将...
  • 面向对象设计原则之里氏代换原则

    面向对象设计原则之里氏代换原则 面向对象设计原则之里氏代换原则 里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing教授于1994年提出。其严格表述如下:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程...
  • Atomic instructions

    Cacheline Memory fence wait-free & lock-free English version 我们都知道多核编程常用锁避免多个线程在修改同一个数据时产生race condition 。当锁成为性能瓶颈时,我们又总想试着绕开它,而不可避免地接触了原子指令。但在实践中,用原子指令写出正确的代码是一件非常困难的事,琢磨不透的...
  • 1.5 面向并发的内存模型

    4239 2019-02-27 《Go语言高级编程》
    1.5 面向并发的内存模型 1.5.1 Goroutine和系统线程 1.5.2 原子操作 1.5.3 顺序一致性内存模型 1.5.4 初始化顺序 1.5.5 Goroutine的创建 1.5.6 基于Channel的通信 1.5.7 不靠谱的同步 1.5 面向并发的内存模型 在早期,CPU都是以单核的形式顺序执行机器指令。Go语言的祖...
  • 23.2. 21.2 使用传统程序语言进行编译的简单范例

    21.2 使用传统程序语言进行编译的简单范例 21.2.1 单一程序:印出 Hello World 21.2.2 主、副程序链接:副程序的编译 include <stdio.h> 上面的 thanks_2(); 那一行就是调用副程序啦! include <stdio.h> 21.2.3 调用外部函数库:加入链接的函数库 2...
  • 多线程 Worker

    多线程 Worker 使用流程 1. 配置 Worker 信息 2. 添加 Worker 代码文件 3. 编写 Worker 代码 4. 在主线程中初始化 Worker 5. 主线程向 Worker 发送消息 注意事项 多线程 Worker 一些异步处理的任务,可以放置于 Worker 中运行,待运行结束后,再把结果返回到小程序主线程。...
  • 10.7 Java 8新特性简介

    10.7 Java 8新特性简介 10.7.1 Lambda表达式 10.7.2 接口的默认方法与静态方法 10.7.3 方法引用 10.7.4 重复注解 10.7.5 其他特性 10.7 Java 8新特性简介   Java 8是Java语言历史上变化最大的版本之一,是一个里程碑式的版本。   Java 8承诺要调整Java...
  • 界面控制器注解

    3.5.1.1.1. 界面控制器注解 3.5.1.1.1. 界面控制器注解 控制器上的类级别的注解用于向框架提供界面相关的信息。一部分注解适用于任何类型的界面,也有一部分仅用于实体编辑或查找界面。 以下示例演示了常见的界面注解的用法: package com . company . demo . web . screens ; impo...
  • 简介

    简介 C++ 计算分类(四个象限) Hana 库是干什么的 简介 自Boost.MPL 首发以来,它通过发布大量的模板接口为C++程序员 进行元编程提供了便利,这个突破极大地促进了C++模板元编程 的主流化,如今模板元编程已经深植于各种项目之中了。近期以来,C++11 和C++14 对语言带来了许多重大变化,其中一些使元编程更加容易,其它一些也大...
  • 6.6 共享数据

    6.6 共享数据 6.6.1 数据不一致 6.6.2 控制共享数据 6.6.3 多线程同步 6.6 共享数据   前面看到的多线程程序中各个线程大多都是独立运行的,但在真正的应用中,程序中的多个线程通常以某种方式进行通信或共享数据。在这种情况下,必须使用同步机制来确保数值被正确地传递,并防止数据不一致。 6.6.1 数据不一致  ...