5. 对于计算密集型和 IO 密集型任务分别应该怎么处理?为什么这样处理?
多进程[系统级]、多线程[系统级]、协程[用户级线程]
计算密集型:
多进程。 cpu 忙, io 闲
IO 密集型:
多线程、协程。 cpu 闲, io 忙
上下文切换代价:
协程 < 线程 < 进程
CPython 因为 GIT[全局解释器锁]的原因,多线程、协程只能在单 cpu 内运行。
9. 数据库怎么设计表来存储树结构的数据?
http://www.ibase.ru/files/articles/programming/dbmstrees/sqltrees.html 1) 邻接表
CREATE TABLE Personnel (
emp CHAR(10) NOT NULL PRIMARY KEY,
boss CHAR(10) DEFAULT NULL REFERENCES Personnel(emp),
salary DECIMAL(6,2) NOT NULL DEFAULT 100.00
);
2) 嵌套
CREATE TABLE Personnel (
emp CHAR(10) NOT NULL PRIMARY KEY,
lft INTEGER NOT NULL UNIQUE CHECK (lft > 0),
rgt INTEGER NOT NULL UNIQUE CHECK (rgt > 1),
CONSTRAINT order_okay CHECK (lft < rgt)
);
例子:
django-mptt
https://github.com/django-mptt/django-mptt