💼 工作记录

        std::string origin_response_body = "test_content";
        const int body_len = origin_response_body.length();
        std::unique_ptr<char[]> response_body(new char[body_len]);
        memcpy(response_body.get(), origin_response_body.c_str(), body_len);
        std::string body = response_body.get(); 

    这段代码是有隐患的,但是却比较难发现。因为如果这个数组中最后一位不是\0 结束符,构造string的过程中就会一直按照地址递增访问内存直到找到结束符为止,这个过程会导致内存异常访问等问题

    但在真实环境中,可能不一定会导致崩溃,因为当我们new[body_len] 申请一段内存的时候,由于内存对齐以及操作系统的差异性,分配的大小会大于申请的大小,因此在body_len 位置的内存很可能就是结束符。 C++Tips

    📝 每日记录 「自我觉察」

    今天晚上在写一篇“读后感”,写了1小时左右发现自己进入了“状态”了,从而发现进入状态的重要性。
    之前可能觉得“进入状态”只是一个形容词,而今天发现它确实是做好事情的一个具体的步骤。

    这里列举目前想到的一些条件:

    1. 良好的环境:环境是重要的,比如安静环境下更容易专注。但是很多的时候可能没有那么好的环境,因此可以尝试更好的环境,比如耳塞或者纯音乐,文档全屏等,但注意不要为此舍本逐末了。
    2. 第一个可以看到显著效果的行动:如果是写文章,很容易一下午一个字也憋不出来,原因很可能是我们脑子里想的太多了,从文章的摘要到各种细节都在脑子里面转,而不在纸上,导致无法聚焦到一点,因此可以考虑先写下几点,然后不用太关注格式,再去展开第一点,等写完第一点后,就会发现后面的内容自然的有了思路。如果是写代码,可以尝试从UT开始写起,完成第一个可验证通过的UT。如果不具备写UT的条件,可以从完成第一个可以编译通过的代码开始,再到实际上产生具体作用的函数。一定不要一开始就kuchikuchi的创建一堆文件,也编译不通过,希望一次性写完编译,这是非常严重的错误。
    3. 进入状态的决心:必须要有想进入状态的决心,比如今晚你确实计划想完成某项任务,这非常重要。
    4. 较长的时间长度:进入状态的时间最好是1小时起。如果太短,则完成的事情有限,因此需要确保这一小时不被其他事情打断(比如开会,其他人找过来问问题等)
    5. 单一工作内容:只专注在一件事,而非同时多个任务切换

    💬 随便聊聊 最近很火的 AI 认为 9.11 > 9.8 我的第一反应居然和AI一样... 可能是版本号看多了吧

    💬 随便聊聊 看到一个评论很有意思:“至少我从来没听说过有人死前还会想着,这辈子没有赚更多的钱没有为当年的公司做更多的牛马之事。”

    💼 工作记录

    最近的两个需求尝试以 “面向测试开发”来开发。所谓“面向测试开发”,或者“测试驱动开发”,我理解就是先去写UT,先去在UT里面写好调用的函数和预期的接口。每写一个EXPECT,对应去实现类的功能,这样写完UT,功能也开发完成了,保证了模块的质量。

    通过这种方式发现写代码的阻力更小一些。之前写代码脑子里可能混杂多个接口的设计想法,通过UT,每次只增加一个新的case,实现该case,能够“小步快走”,会更不容易出错。

    这对项目代码质量是有比较大的要求的,如果是一个新的独立模块,还好一些,可以从零开始写UT,如果这个模块有依赖外部模块,需要mock或者外部模块也具有可测性。

    如果是在已有的功能模块里新增新的功能,这就要求已有模块可测性非常强才行。历史的很多代码都没有UT,这也是困难之一吧。

    💼 工作记录

    “当你排除一切不可能的情况,剩下的,不管多难以置信,那都是事实。”

    工作中排查bug的时候很像是侦探🕵️寻找真相。简单的bug可能很快从代码review就能发现,比如空指针等。这周遇到了一个bug ,简单来说,

    • 正常情况下是先执行B操作,再执行 C操作。
    • 执行A 操作后,预期就不可能有B操作或者C操作了,但是A操作它是跨线程异步过程(一般时间很短几毫秒或者几十毫秒之内)。

    线上的问题是在A操作过程中,出现了B操作,导致后续C操作的时候直接崩溃。所以线上会有概率非常小的情况下崩溃。

    这里写代码的时候没有考虑到这个异步过程,同时B操作或者C操作中应该增加判断,如果A操作后,就是空操作。

    💬 分享 vscode一直使用的都是深色主题。最近上午显示器因为光线太亮了,黑色看不太清,改用了浅色主题「Solarized Light」,不刺眼,而且颜色很柔和浅黄色,很喜欢,推荐!

    💬 随便聊聊 “学习的最佳效率,是抽空 做事的最好状态是兼职” 多多视频看到的一句话,甚是觉得有理。很多时候都在想,不上班就好了,就可以干嘛干嘛了,但实际上真不上班了,又会有经济上的负担,因此,在上班基础上,抽空做事未尝不是一种办法

    🍃 handsome主题 增加了一个引用说说的功能: 牙疼的时候才想起早干嘛不勤刷牙,生病时候才想起早不锻炼身体,不合理饮食了,快死的时候才想起早干...

    但没有增加反向引用,因为如果一个页面中每条说说都去查询反向列表,sql 查询可能有些耗时

    🍃 handsome主题 增加了一个有趣功能,在文章下方会显示反向引用和引用的列表

    (PS: v10.0 目前在开发阶段,正式发布仍需要一段时间)

联系方式

关于我

  • 来自南部的一个小城市,个性不张扬,讨厌随波逐流。

那年今日

💬 分享 很早之前试过很多记账app,都没办法坚持下来,很大的原因就是每笔消费都手动记录太琐碎,而且对于我来说必要性不是特别大。因此自己设计了一个周期性的记账表格,这样能看到每个周期自己的所有账...

📝 每日记录 今晚才知道Tim和小鱼离婚了,吃惊到下巴要掉下来。我是最近一年才开始关注「影视飓风」的。看到Tim和小鱼结婚相关的视频最早是一期介绍装修后房子的,当时我就在羡慕。后来又看了一期度蜜...

📝 每日记录 「自我觉察」今天晚上在写一篇“读后感”,写了1小时左右发现自己进入了“状态”了,从而发现进入状态的重要性。之前可能觉得“进入状态”只是一个形容词,而今天发现它确实是做好事情的一个...

你的显示器分辨率是多少呀?

📝 每日记录 五一假期结束了。这可能是这几年最为放松的假期,前两年每个假期都会或多或少忙工作上的事情,这次假期里没有打开看过一次工作上相关的内容,真的很满足了!假期回家了,爸妈和姐姐都回来了。吃...