ARTS-WEEK7

"ARTS打卡记录"

Posted by Simon on July 10, 2020

“Better code, better life. ”

ARTS打卡第七周

Algorithm

[题目] :https://leetcode-cn.com/problems/unique-paths-ii/solution/

[题解]

一道最典型的动态规划题目,这里注意一下如何用malloc来创建二位数组

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>> &obstacleGrid) {
        int **p = nullptr, i, j, row = obstacleGrid.size(), col = obstacleGrid[0].size();
        p = static_cast<int **>(malloc(sizeof(int *) * row));
        for (i = 0; i < obstacleGrid.size(); ++i) {
            *(p + i) = static_cast<int *>(malloc(sizeof(int) * col));
            std::memset(*(p + i), '\0', sizeof(int) * col);
        }
        for (i = 0; i < col; ++i) {
            if (obstacleGrid[0][i] == 1)break;
            p[0][i] = 1;
        }
        for (j = 0; j < row; ++j) {
            if (obstacleGrid[j][0] == 1)break;
            p[j][0] = 1;
        }
        for (i = 1; i < col; ++i) {
            for (j = 1; j < row; ++j) {
                if (obstacleGrid[j][i] == 1)continue;
                p[j][i] = p[j - 1][i] + p[j][i - 1];
            }
        }
        return p[row - 1][col - 1];
    }
};

Review

[文章链接] :http://www.wangafu.net/~nickm/libevent-book/Ref6_bufferevent.html

[笔记] :

延迟回调

默认情况下,当发生相应条件时,会立即执行bufferevent回调。(evbuffer回调也是这样)当依赖关系变得复杂时,这种直接调用会造成麻烦。例如,假设有一个回调,如果evbuffer A变为空,它将数据移到A中;而另外一个回调,当A为满时,处理A中的数据。由于这些调用发生在栈上,如果情况足够复杂,有可能出现栈溢出。

为了解决这个问题,您可以告诉bufferevent(或evbuffer)应推迟其回调。 当满足延迟回调的条件时,而不是立即调用它,则将它作为event_loop()调用的一部分排队,并在常规事件的回调之后调用。

Tips

上周写的CTP程序会在非交易时间断开连接,需要一个守护进程来自动拉起该服务,于是看了下monit的官方文档,搭建了一个守护进程服务

monit的配置与使用

Share

Redis数据结构-跳跃表