python2.7
macOS Monterey已经移除python2.7,即便是操作系统通过升级到最新版本的macOS Monterey以后,也会移除了随系统发行的 Python 2.7,所以如果找不到python2.7,需要重新安装一次。
下载安装python2.7
https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg 一路一直点下一步安装即可
Coder
macOS Monterey已经移除python2.7,即便是操作系统通过升级到最新版本的macOS Monterey以后,也会移除了随系统发行的 Python 2.7,所以如果找不到python2.7,需要重新安装一次。
https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg 一路一直点下一步安装即可
Dart 是单线程模型,有类似与线程的isolate,它是有自己的内存和单线程控制的运行实体,一个Fluuer程序由一个或多个isolate组成,代码默认都在main isolate中执行,而在main isolate中是以Looper消息循环机制来实现dart的事件机制,looper其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue,且微任务的优先级高于事件。基于dart的单线程,代码是按顺序执行,其中的优先级分为:
入口函数 main() 执行完后,消息循环机制便启动了。首先会按照先进先出的顺序逐个执行微任务队列中的任务,当所有微任务队列执行完后便开始执行事件队列中的任务,事件任务执行完毕后再去执行微任务,一直循环。
所有的外部事件任务都在事件队列中,如IO、计时器、点击、以及绘制事件等;
而微任务通常来源于Dart内部,并且微任务非常少。这是因为如果微任务非常多,就会造成事件队列排不上队,会阻塞任务队列的执行(比如用户点击没有反应的情况);
Dart 是单线程实体的语言,一般的异步操作实际上还是通过单线程通过调度任务优先级来实现的,方式大概有以下几种:
相对于 async + await,最主要的功能就是提供了链式调用,默认在事件队列中执行,也可以通过Future.microtask来使用微任务执行,提高优先级。
使用async + await关键字修饰函数,即可向事件队列中插入事件来实现异步操作,用同步的代码格式,去实现异步的调用过程,但其实也是用了Future;
相对于Future,stream可以接受多个异步结果,但是要注意的是,普通的 Stream 只可以有一个订阅者,如果想要多订阅的话,要使用 asBroadcastStream()来转换;
如果jdk是通过yum安装的OpenJDK,则需要卸载之后重新安装,否则编译时会报错
1
2
3
4
5
6
7
8
9
10
11
12
13
* What went wrong:
Execution failed for task ':base:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre contains a valid JDK installation.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.6.4/userguide/command_line_interface.html#sec:command_line_warnings