Contents

ARST打卡第221周[221/521]

Algorithm

lc141_环形链表

思路: 快慢指针,快指针每次走两步,慢指针每次走一步,如果快指针没有结束,走到了慢指针的原来的走过的地方了,就是有环

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* f = head;
        ListNode* s = head;
        while (true) {
            // [] 空输入 RE (runtime error) 了一波,所以要判断 head
            if (f && f->next && f->next->next) {
                f = f->next->next;
            } else {
                return false;
            }
            if (s->next) {
                s = s->next;
                if (f == s || f->next == s) {
                    return true;
                }
            } 
            // else 慢节点不会先到 NULL
        }
    }
};

Review

【TED演讲】如何掌控人生中的艰难转变?

当你想要讲述自己的人生故事的时候,你就会想撑过人生的艰难时刻,让自己的人生有一个 happy ending.

你面对"人生地震",可以采取如下措施:

  1. 接纳现实和自己的悲伤情绪
  2. 尝试新事物
  3. 从你的超能力开始,然后再走下去(超能力就是你擅长的,有的人擅长列to do-list,有人擅长告别)
  4. 向他人寻求帮助
  5. 改写你的人生故事(讲新故事)

Tips

VSCode VIM插件高效使用

Share-linux下生成core_dump配置和用法

启用 Core dump,系统默认关闭

Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。

用到的命令是: ulimit

1
2
3
# 输入目录查看状态, 0 说明是禁止生成 core 文件。
[root@ ~]# ulimit -c
0

我们可以直接在 ulimit -c 后面加上参数,当为数字时表示限制 core 文件大小不超过 1024KB[ulimit -c 1024]:

如果每次登录都变成 0 的话,可以持久化到自己的 .bashrc 或者 .zshrc 中

1
2
3
4
5
# unlimited: 字面意思,没有限制 core 文件大小。
[root@ ~]# ulimit -c unlimited
# 不是 root 用户可能会失败,如 Ubuntu 启用了 root,但不能用 sudo 去执行,而要 su root 切换过去才能成功执行
[非root用户@ ~]$ ulimit -c unlimited
bash: ulimit: core file size: 无法修改 limit 值: 不允许的操作

设置 core 文件的存储目录和命名格式

设置 core 的存储目录和命名格式,主要是修改配置文件 /proc/sys/kernel/core_pattern:

1
2
3
4
# 1. 默认在当前程序执行目录下生成,core-程序名-程序pid-时间 [core-test-3451-1516257740]
[root@ ~]# echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
# 2. 添加路径,可以把所有的 core 集中到一个文件夹里 [把所有的core文件放到 /root/core-file 目录下]
[root@ ~]# echo "/root/core-file/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

core dump 用法

  1. 编写自己的代码,然后 gcc/g++ 编译,加 -g 调试选项
  2. 运行代码如果 core,会生成 core 文件
  3. gdb your_proc_exec core-test-19317-151xxxx
    1. wherebt 调试

参考

linux 下生成 core dump 配置和用法