目录
C++语言基础
inline
指针
错这个题,只能说对指针的理解还不到位了~
结构体
emmm,忘记struct要内存对其了,这里补一下结构体的知识:
结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的"最宽基本类型成员"的整数倍.不足的要补齐.
容器操作
emmm,erase接受一个迭代器参数返回删除的元素的下一个迭代器,然后加1,结果是最后只删除了两个300
一个类的静态成员
类的静态成员属于整个类 而不是某个对象,可以被类的所有方法访问,子类当然可以父类静态成员;
静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,所有静态方法只能访问静态成员,不能访问非静态成员;
静态成员可以被任一对象修改,修改后的值可以被所有对象共享。
排序算法复杂度
没有细想了,没考虑已经排序好的情况...
下图是常见排序算法复杂度:
计算机网络
time_wait是拆除阶段的(还未学计网
linux相关
select
- select能监控的描述符个数由内核中的FD_SETSIZE限制,仅为1024,这也是select最大的缺点,因为现在的服务器并发量远远不止1024。即使能重新编译内核改变FD_SETSIZE的值,但这并不能提高select的性能。
- 每次调用select都会线性扫描所有描述符的状态,在select结束后,用户也要线性扫描fd_set数组才知道哪些描述符准备就绪,等于说每次调用复杂度都是O(n)的,在并发量大的情况下,每次扫描都是相当耗时的,很有可能有未处理的连接等待超时。
- 每次调用select都要在用户空间和内核空间里进行内存复制fd描述符等信息。
poll
- poll使用pollfd结构来存储fd,突破了select中描述符数目的限制。
- 与select的后两点类似,poll仍然需要将pollfd数组拷贝到内核空间,之后依次扫描fd的状态,整体复杂度依然是O(n)的,在并发量大的情况下服务器性能会快速下降。
epoll
- epoll维护的描述符数目不受到限制,而且性能不会随着描述符数目的增加而下降。
- 服务器的特点是经常维护着大量连接,但其中某一时刻读写的操作符数量却不多。epoll先通过epoll_ctl注册一个描述符到内核中,并一直维护着而不像poll每次操作都将所有要监控的描述符传递给内核;在描述符读写就绪时,通过回掉函数将自己加入就绪队列中,之后epoll_wait返回该就绪队列。也就是说,epoll基本不做无用的操作,时间复杂度仅与活跃的客户端数有关,而不会随着描述符数目的增加而下降。
- epoll在传递内核与用户空间的消息时使用了内存共享,而不是内存拷贝,这也使得epoll的效率比poll和select更高。
这个说实话不大懂,没怎么接触过linux
价值相关
实习还有这种题目,不过不大懂,第一次见:
选项AB是对称的,所以肯定正确,由AB可以看出题目的意图是,这次交换靠的是物品的相对价值相当(小张觉得橡皮比小刀更好, 小王觉得小刀比橡皮更好 ),但明显最后一个选项等值指的是他们的绝对价值
思维题目
均可获得。
2:7L装满,倒满5L,剩2L
3:5L装满,倒7L;再装满5L,倒满7L,剩3L
6:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,再倒满7L,剩1L;倒给7L,5升装满,共6L。
8:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,共8L
11:7L装满,倒满5L,剩2L;倒给5L,7L装满,再倒满5L,剩4L;倒给5L,7L倒满,共11L
其实这个倒来倒去有点像那个什么减损术求最大公约数