6、锁:如何根据业务场景选择合适的锁?

你好,我是陶辉。 上一讲我们谈到了实现高并发的不同方案,这一讲我们来谈谈如何根据业务场景选择合适的锁。 我们知道,多线程下为了确保数据不会出错,必须加锁后才能访问共享资源。我们最常用的是互斥锁,然而,还有很多种不同的锁,比如自旋锁、读写锁等等,它们分...

5、协程:如何快速地实现高并发服务?

你好,我是陶辉。 上一讲谈到,零拷贝通过减少上下文切换次数,提升了文件传输的性能。事实上高并发服务也是通过降低切换成本实现的,这一讲我们来看看它是如何做到的。 如果你需要访问多个服务来完成一个请求的处理,比如实现文件上传功能时,首先访问Redis缓存...

4、零拷贝:如何高效地传输文件?

你好,我是陶辉。 上一讲我们谈到,当索引的大小超过内存时,就会用磁盘存放索引。磁盘的读写速度远慢于内存,所以才针对磁盘设计了减少读写次数的B树索引。 磁盘是主机中最慢的硬件之一,常常是性能瓶颈,所以优化它能获得立竿见影的效果。 因此,针对磁盘的优化技...

3、索引:如何用哈希表管理亿级对象?

你好,我是陶辉。 上一讲我们谈到,Ptmalloc2为子线程预分配了64MB内存池,虽然增大了内存消耗,但却加快了分配速度,这就是以空间换时间的思想。 在内存有限的单片机上运行嵌入式程序时,我们会压缩数据的空间占用,以时间换空间;但在面向海量用户的分...

2、内存池:如何提升内存分配的效率?

你好,我是陶辉。 上一讲我们提到,高频地命中CPU缓存可以提升性能。这一讲我们把关注点从CPU转移到内存,看看如何提升内存分配的效率。 或许有同学会认为,我又不写底层框架,内存分配也依赖虚拟机,并不需要应用开发者了解。如果你也这么认为,我们不妨看看这...

16768697071243