千万不要试图硬想!

今天在做一个东西,有一个细节忘掉了,但窝以为可以用脑子想出来,就一直在想。
想了1个小时左右,也没有想出来,其实上网查的话一秒就出来了,为什么不去上网查呢... 白白浪费了一个小时!

std::map 的一个很机智用法

前提是你的编译器必须支持 C++11,否则编译不通过。

#include <iostream>
#include <typeindex>
#include <typeinfo>
#include <string>
#include <map>

class foo
{
public:
    foo()
    {}

    template <typename T>
    void test(T type, std::string msg)
    {
        // 将对应type的msg修改
        map_[typeid(type)] = &msg;
        // 输出对应值
        std::cout << *map_.at(typeid(type)) << std::endl;
    }
private:
    std::map<std::type_index, std::string*> map_;

};

int main()
{
    foo f;
    f.test(2333, "Hello"); // int
    f.test(2333.3, "World"); // double

}

分析

typeid 返回 std::type_index。
foo::test有两个参数,一个是模板参数,一个是 std::string。
map_[typeid(type)] = &msg; 的意思是,设置 map_[typeid(type)] 的值。
这个时候,f.test(2333, "Hello"); 会处理到 int,就会设置 map_[typeid(int)] 的值 (注意int)。
以此类推。这个一般应用在消息处理上(夏幻菊苣说的),或者这个上面。

千万不要用 Arch Linux 作为服务器系统!

Hmm.. 今天在服务器上 pacman -Syu,在更新内核的时候挂掉了,出的错误是硬盘满了(在mkinitcpio的时候上)。
窝认为应该没问题,直接 reboot 了,重启完,ssh 登不上了,看下服务器面板的vnc,发现说没 /sbin/init 文件;
服务器不支持挂载 cd lived,也等不到 grub 界面(启动太快,vnc太慢),这真的没办法了(对窝来说)。

尤其是用 testing 作为优先源

使用树莓派作为电视视频源的正确姿势

电视系统是 Android 6.0,使用 Kodi 作为视频播放器。
尝试了 SMB,发现效果不理想,播放 4k 视频会很卡,可以用 HTTP(nginx) 协议或者 FTP 作为文件服务器,这样的话速度就可以了。
另外,现在 Raspbian 最新版本已经是 Kernel 4.9,可以开启 tcp_bbr 来提升速度。