空安全

概述

为什么需要空安全?

当你选择使用空安全时,代码中的类型将默认是非空的,意味着除非你声明它们可空,它们的值都不能为空。有了空安全,原本处于你的 运行时 的空值引用错误将变为 编辑时 的分析错误。这样可以大大降低空指针问题。

比如以下代码,string参数可能会报NoSuchMethodError异常。

1
2
3
4
5
6
7
// Without null safety:
bool isEmpty(String string) => string.length == 0;

main() {
isEmpty(null);
}

Read More

isolate

定义

isolate是Dart对actor并发模式的实现。运行中的Dart程序由一个或多个actor组成,这些actor也就是Dart概念里面的isolate。isolate是有自己的内存和单线程控制的运行实体。isolate本身的意思是“隔离”,因为isolate之间的内存在逻辑上是隔离的。isolate中的代码是按顺序执行的,任何Dart程序的并发都是运行多个isolate的结果。因为Dart没有共享内存的并发,没有竞争的可能性所以不需要锁,也就不用担心死锁的问题。

由于isolate之间没有共享内存,所以他们之间的通信唯一方式只能是通过Port进行,而且Dart中的消息传递总是异步的。

isolate跟线程类似,但线程之间可以共享内存,isolate不可以。

原理

Read More

dart命令行工具

dart analyze 命令

代码分析工具

1
2
3
4
5
6
7

# 设置分析等级 --no-fatal-warnings
dart analyze --fatal-infos

# 指定目录或文件
dart analyze [<DIRECTORY> | <DART_FILE>]

dart compile 命令

编译dart文件

子命令

Read More

清华北大

历史背景

景点介绍

博雅塔

未名湖

图书馆

路线

游客只能从东侧门进入(地铁站北京大学A口向北),要求19:00前由东侧门离开。

就餐

家园四层、农园三层、艺园二层、勺园西餐厅

门票预约

北大公众号预约,每天早上8点开放,提前一周预约。