高性能组件_线程内存redis_Mysql_内存序_malloc
目的(Why):异步处理、并行计算(提升响应性和吞吐量)
手段(How):线程复用(降低成本、保障稳定性)
逻辑核心:通过超线程技术,将一个物理核心虚拟成两个逻辑核心,让一个物理核心能够同时管理两个线程的状态
如果是 IO 密集型(网络请求、数据库查询、文件读写、复杂计算),那就是需要两倍,至少要两倍的 CPU 核心数,因为一个需要在内核里面处理,另外一个需要在我们的用户态去进行处理,具体还是看qps因为具体还是要看具体测试数据之后的单位时间内处理任务的个数再做判断
select poll epoll
select/poll
痛点:
-
将完整的连接列表从用户空间拷贝到内核空间。
-
内核需要线性遍历整个列表来检查状态。
epoll
通过在内核维护一个动态的监视表,并仅返回就绪的事件,实现了高性能的 IO 多路复用,其效率不会随着连接数的增加而线性下降
堆和栈的区别:
-
栈:用于管理程序的 “执行流”。它关心的是函数如何调用、如何返回。它高效、自动,但僵化。
-
堆:用于管理程序的 “数据”。它关心的是数据如何被创建、如何共享、以及何时销毁。它灵活、强大,但需要手动管理,代价高。
虚函数的作用:
核心解决方案:利用 RAII 机制,将内存资源的生命周期与对象的生命周期绑定。|
死锁的几个条件