多技 1. I/O复用 这个跟select、poll、epoll有关,一个tcp链接一个进程,少的时候没关系,但是多了就有问题。于是有了一个进程里面有多个线程进行链接,但是没有立刻执行,在系统有数据返回的时候再循环这些线程,给需要的线程进行执行。这是select。 而这样子循环也是很缓慢的,有性能问题。于是记录下每个线程的一个id,当系统返回数据的时候也传回id,就能直接去线程里查找这些id,不要每次都循环遍历。这是epoll。poll只是对select进行记录,并没有实质性的大变化。 2. redis为什么快 首先redis是将记录在内存当中的。而内存的速度原本就要比硬盘快上很多,不需要进行硬盘读取的I/O。 数据结构简单,他是Nosql。 单线程阻塞I/O。不需要进行线程之间的切换(历史问题,现已经改成多线程)。 3. 258M的服务器内存,如何对1G的文件进行排序。 这是一个很典型使用归并算法的题目,还是需要申请磁盘空间,时间复杂度是nlogn。优化之后最好能达到n。 4. 简单的依赖注入和控制反转 依赖注入很简单,构造函数,然后传特定的类进去。控制反转则需要进行判断他需要什么类,然后传进去。 5. 并发时QPS多少。 这个由于是运维当时观察,我并没有看到是多少,至于升级的服务器还是由运维来决定的。 pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站的pv就算加了一次; tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加; qps是指每秒内查询次数,比如执行了select操作,相应的qps会增加。
多技
I/O复用
这个跟select、poll、epoll有关,一个tcp链接一个进程,少的时候没关系,但是多了就有问题。于是有了一个进程里面有多个线程进行链接,但是没有立刻执行,在系统有数据返回的时候再循环这些线程,给需要的线程进行执行。这是select。
而这样子循环也是很缓慢的,有性能问题。于是记录下每个线程的一个id,当系统返回数据的时候也传回id,就能直接去线程里查找这些id,不要每次都循环遍历。这是epoll。poll只是对select进行记录,并没有实质性的大变化。
redis为什么快
首先redis是将记录在内存当中的。而内存的速度原本就要比硬盘快上很多,不需要进行硬盘读取的I/O。
数据结构简单,他是Nosql。
单线程阻塞I/O。不需要进行线程之间的切换(历史问题,现已经改成多线程)。
258M的服务器内存,如何对1G的文件进行排序。
这是一个很典型使用归并算法的题目,还是需要申请磁盘空间,时间复杂度是nlogn。优化之后最好能达到n。
简单的依赖注入和控制反转
依赖注入很简单,构造函数,然后传特定的类进去。控制反转则需要进行判断他需要什么类,然后传进去。
并发时QPS多少。
这个由于是运维当时观察,我并没有看到是多少,至于升级的服务器还是由运维来决定的。
pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站的pv就算加了一次;
tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加;
qps是指每秒内查询次数,比如执行了select操作,相应的qps会增加。