- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 零拷贝
1.为什么使用零拷贝 我们假设一个场景,将本地文件上传到网络上,伪代码如下: read(file, tmp_buf, len); write(socket, tmp_buf, len); 注意,别看代码操作就读和写两个,实际在操作系统中涉及到4次以上的数据复制以及上下文切换,如图 注意:该图分成上下两部分,上面是上下文切换,下面是对应的数据在内存中的操作 过程是这样的: 步骤一:...
2019-07-30 22:25:50 433
原创 链表实现栈结构及应用场景描述
1.栈的特点 仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。如果用链表实现栈,怎么利用链表去做呢,我们可以把链表头看成栈顶,链尾堪称栈底,添加元素的时候,元素添加到链表头,删除的时候,删除链表头即可。 2.代码实现 2.1先构建一个链表实现,方便自定义链表的操作 代码如下,具体实现可参考上篇文章 public class StackBaseLink&l...
2019-07-08 23:37:28 964
原创 java实现单向链表和优化
1.链表的时间复杂度分析 查询元素时间复杂度 链表是不支持随机访问的,在链表中只有从头节点开始一个一个往下找,找到查询的元素为止,比如链表的长度为n,最好的情况是头节点就是需要找的元素,那么就是一个时间单元1*unit_time,,最坏的情况是最后一个节点是需要找的元素,那么就是n*unit_time,那么平均时间复杂度就是n/2*unit_time;根据大O推导出,时间复杂度为O(n); ...
2019-07-08 16:13:55 452
原创 先从算法时间复杂度分析开始
1.为什么要进行复杂度分析 在编写和使用数据结构和算法的时候,怎么去比较它们之间的优劣,需要一个评判标准,目前主要的分析维度是两方面,时间和空间,什么意思呢,时间复杂度分析就是这个算法在一定的运算量级下的消耗时间,时间越少越优,空间复杂度分析可以看作是占用内存空间的大小,空间越小越优。 2.时间复杂度分析 大O复杂度表示法 如下代码 public int sum(int n) { ...
2019-07-08 10:18:16 257 1
原创 怎么学习数据结构和算法
1.先叨叨几句 说实话,之前代码的时候很少考虑数据结构,一方面是因为写的主要是业务代码,另外一方面是因为很多编程语言都已经封装好了基本的数据结构,拿来即用,最多也就了解基本的一个数组和链表的特点以及效率问题,因为最近重新找工作,也趁着这段时间好好的了解了数据结构这一块,有了深入的了解后,感觉还确实不一样,因为只有了解后,才知道到每种数据结构特点及应用场景,甚至针对特殊场景进行结构优化,当然,一般...
2019-07-07 22:32:27 887 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人