课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
前后端分离是目前大多数软件编程开发行业的一个发展趋势,而本文我们就通过案例分析来简单了解一下,后端编程开发程序员需要掌握哪些知识点。
1、零拷贝
零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。
零拷贝技术常见linux中,例如用户空间到内核空间的拷贝,这个是没有必要的,我们可以采用零拷贝技术,这个技术就是通过mmap,直接将内核空间的数据通过映射的方法映射到用户空间上,即物理上共用这段数据。
2、为什么要内存对齐?
平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。
性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。
3、vector
连续存储的容器,内存分配在堆上面,动态数组
底层实现:数组
两倍容量增长:vector一次性分配好内存,在增加新元素的时候,如果没有超过当前的容量,那么直接添加,然后调整迭代器,如果超过了当前的容量,则vector会重新配置原数组的内存的2倍空间,将原空间元素内存拷贝到新空间,释放掉原空间,且此时迭代器会失效
4、list
动态链表,内存分配在堆上,每增加一个数据,则会开辟一个数据的空间,删除一个数据,则会释放掉一个数据的空间
底层实现:双向链表
访问:性能很差,只能快速访问头尾节点
插入:很快,常数的时间
删除:很快,常数的时间
适用场景:大量增删的场景
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。