Dart语法总结

Dart 语言介绍

  • Dart 是Google发布的一门开源编程语言
  • Dart 目前可用于全平台开发
  • Dart是一门面向对象的编程语言
阅读全文 »

happens-before 和 as-if-serial

happens-before

happens-before 用来指定两个操作之间的执行顺序。
由于这两个操作可以在一个线程之内,也可以是在不同线程之间。因此,JMM可以通过happens-before关系向程序员提供跨线程的内存可见性保证(如果A线程的写操作a与B线程的读操作b之间存在happens-before关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见)。

阅读全文 »

基于栈和基于寄存器的指令集区别

  • 基于栈的指令集
    优点:可移植(寄存器由硬件提供,程序依赖硬件寄存器会收到硬件约束),基于栈的指令集架构,用户不会直接使用这些寄存器,由虚拟机实现决定把一些访问频繁的数据放到寄存器中获得尽量更好的性能;还有优点是代码相对紧凑(字节码中每个字节对应一条指令)、编译器实现简单(无需考虑空间分配)等;
    缺点:执行速度慢,效率较低。因为操作本身伴随着大量的入栈出栈,导致完成相同功能所需的指令数量增加;更重要的是栈实现在内存中,频繁的栈访问意味着频繁的内存访问,这大大降低了效率。
  • 基于寄存器的指令集
    优点:效率相对较高。
    缺点:平台依赖,可移植性差。编译实现复杂。(相对于基于栈来说)。