- 博客(4)
- 收藏
- 关注
原创 用golang实现简单的线程池
背景当我们在使用其他语言时,为了减少线程的创建与销毁的开销,一般都会创建一个线程池来高效管理线程。而在golang中,利用goroutine与channel,我们可以高效的管理我们的任务,实现一个类似的goroutine pool十分简单实现// 开启一定数量的goroutine执行工作for i := 0; i < worker; i++ { go startWorker(args, jobs, results)}// 将任务发送到jobsfor j := 1; j <
2021-07-14 14:56:32 1755
原创 最大子数列问题,这也是动态规划!
Leetcode上一道标记为简单的题,是这样描述的:嗯? 连续子序列,第一眼看到这个关键词,我第一个想法就是利用滑动窗口做。如果我设定一个窗口,那么窗口内的元素是可能可以产生最大和的子数列,那么我该如何维护这个窗口?当窗口需要往右扩展的时候,加入窗口中的数必须使得在加入这个数后,窗口中的子序列的和不能小于这个数本身,否则直接缩小窗口,令这个数作为窗口中的第一个元素最大和即每一个可能窗口中的序列和的最大值按照上面的想法,我们可以写出如下代码:public int maxSubArray(in
2021-03-31 21:39:24 232
原创 进程间通信IPC
进程间通信进程间通信是多进程协作的基础,利用多进程协作,我们可以将功能模块化,增强模块间的隔离,以及提高容错能力。进程间通信的一个重要功能就是在进程间传递数据,“消息”就是IPC中常用的数据传递方式。消息一般包含一个头部和数据体,头部中存有元信息(例如 Magic Number,校验码,消息长度等),数据体里可以是字符串,或者系统资源信息(例如文件描述符等)消息的传递一般需要一个中间人,一般可分为两种形式:直接用共享内存进行消息传递,操作系统在通信过程中不干预数据传输。即操作系统只是在需要通
2021-03-23 19:55:07 170
原创 背包问题之求方案总数
@TOC问题背景以0-1背包作为讨论(完全背包和多重背包问题可以转化为0-1背包),如果问题要求我们对于一个给定了背包容量、物品费用的背包问题,除了在给定每个物品的价值后求可得到的最大价值外,还要求得到装满背包或将背包装至某一指定容量的方案总数,此时我们应该如何求解问题?0-1背包回顾作为一个典型的动态规划问题,我们可以设一个二维数组dp[i][j],其语义为我们选前i件物品,使得其总重量加起来不超过j时,可以得到的最大价值。也就是说,我们的容量j将分配给i个物品,但事实上,我们是不管这i个物品是否
2021-03-20 20:34:01 1161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人