当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉
Python引入了机制:引用计数与分代回收。
Python提供了对内存的垃圾收集机制,
但是它将不用的内存放到内存池而不是返回给操作系统。
2.谈谈你对线程安全的理解?
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,
其他线程不能进行访问直到该线程读取完,其他线程才可使用。
不会出现数据不一致或者数据污染。
3.事务的特性 ?
1.原子性
2.一致性
3.隔离性
4.持久性
4.什么是阻塞,什么是非阻塞?
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
5.父子进程间有哪些异同,是否共享数据?(共享哪些数据?)
父子进程共享“文件表项”(file对象),同dup一样,这会增加“文件达开计数”
(file对象的引用计数),只不过fork增加的引用计数来自不同进程(父进程和子进程)
中的描述符,dup增加的引用来自同一文件描述符。
但父子进程独立运行后再打开的文件就不在共享file对象,
这个两个独立进程打开文件情况一样。
父子进程传递文件描述符和两独立进程传递描述符性质一样。
共享数据是线程
创建一个线程后他们的数据是共享的
他们是同一个数据
6.Mysql的常用引擎及选择?
1.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。
并且还提供了行级锁和外键的约束。
它的设计的目标就是处理大数据容量的数据库系统。
它本身实际上是基于Mysql后台的完整的系统。
Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。
但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。
当进行Select count(*) from table指令的时候,需要进行扫描全表。
所以当需要使用数据库的事务时,该引擎就是首选。
由于锁的粒度小,写操作是不会锁定全表的。
所以在并发度较高的场景下使用会提升效率的。
2.MyIASM引擎,它是MySql的默认引擎,但不提供事务的支持,也不支持行级锁和外键。
因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。
所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,
于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。
所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的。
可以将MyIASM作为数据库引擎的首先。