- 博客(24)
- 收藏
- 关注
原创 epoll简单介绍
epoll里面有三个重要的函数epoll_create、epoll_wait、epoll_ctl,其中epoll_create会给你创建一个eventpoll对象,里面有两个重要的区域,一块是用来存放需要监听的socket文件描述符列表(监听列表),另一块存放的就是就绪的socket的信息即就绪队列。epoll_ctl可以根据eventpoll-id去增删改eventpoll对象的检查列表,就是监听socket的列表,去增加删除需要检查的socket列表的文件描述符。当程序执行到epoll_wait时,如果
2021-03-09 12:26:31 746
原创 select和poll的区别
select和poll的本质原理其实差不多,他们最大的区别在于select使用的是bitmap来表示需要检查的socket集合,poll使用的是数组表示它需要去检查的socket集合,poll主要是为了解决bitmap是1024的问题,poll没有限制,可以监听的socket数量可以超过1024...
2021-03-09 11:01:57 555
原创 select函数的执行过程
当前进程调用select函数时,会把当前进程从工作队列中取出来,放入你需要监听的socket的等待队列,socket包含三个部分,读缓冲区,写缓冲区,等待队列。当你的网卡有数据过来的时候,DMA设备会把数据写进内存,然后向cpu发起一个硬中断,cpu会保存当前的环境,取执行中断程序,cpu要做两件事,一是根据数据报TCP的首部的目的端口号找到对应的socket,将数据写进socket的缓冲区,然后唤醒在socket等待队列的进程,放进工作队列,然后会在就绪的socket的文件描述符中做个标记,标记它就绪了,
2021-03-09 10:56:23 618
原创 算法-动态规划-乘积最大子数组
这个题有符号,所以不好搞class Solution { public int maxProduct(int[] nums) { if(nums == null || nums.length == 0) { return 0; } int len = nums.length; int[] maxF = new int[len]; int[] minF = new int[len]; ...
2021-03-06 16:45:58 104
原创 算法-动态规划-打家劫舍
分析既然是动态规划,就要写出状态转移方程,如果只有一间房子,直接偷,金额肯定最大,如果两间房子,偷里面金额最大的一间房,用一个数字dp[k]表示从0到k号房子中偷取金额的最大值,如果第k号房子偷,则dp[k]=nums[k]+dp[k-2],如果不偷dp[k]=dp[k - 1],所以dp[k]=max{dp[k-1], nums[k]+dp[k - 2]}边界条件可以根据状态转移方程得出要求dp[0]和dp[1],显然dp[0]=nums[0],dp[1] = max{nums[0], nums[.
2021-03-06 15:33:49 90
原创 算法-动态规划-单词拆分
分析一个单词从中间切多刀,其实就可以看成只切了两刀,不过前面一段可以继续切,后面一段不可以继续切,就和我之前总结切绳子是一个道理,如果前面一段可以找到(这里其实可以继续分,只要分割后的几段也能在集合中找到也算是找的到),后面这一段也可以找到,拼接在一起后,就一定可以满足要求,可以用一个数组dp[j]表示0到j-1这个字符串存不存在(即使是分割后),只要这个字符串存在dp[j],s.substring(j, i)也存在,就表示这个字符串可以class Solution { public bool.
2021-03-06 14:32:27 210
原创 URL缓存机制
class LRUCache { class Node { int key; int value; Node pre; Node post; public Node() {} public Node(int key, int value) { this.key = key; this.value = value; } } .
2021-03-04 15:18:21 422 2
原创 算法-动态规划-剪绳子
向这种求最值一般用到动态规划用一个数组dp[n]表示长度为n的绳子分成m段乘积的最大值分析:和那个青蛙跳台阶有点像,青蛙一次可以跳一阶、二阶,所以青蛙第一次跳一阶后,剩下有n-1个台阶有dp[n-1]种跳法,第一次跳2阶,剩下的n-2阶有dp[n-2]种跳法,结合这两者可得,青蛙跳n个台阶有dp[n] = dp[n - 1] + dp[n - 2]。对于剪绳子来说,我可以把它只剪一刀的长度k,那么剩下的长度就为n-k, 如果剩下的n-k不剪就是k*(n-k),如果剩下的绳子剪就是k*dp[n-k],.
2021-03-03 21:09:58 110 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人