• Re: [转载]为什么现代软件让我悲伤

    配置文件的话,我宁愿用 xml 都不用 json

    不支持注释

    key 必须用双引号,不支持单引号或无引号

    列表结尾不能有多余的逗号

    【 在 No1 () No1 () 的大作中提到: 】

    : json做配置、传数据都很好

    : 易读易写易解析,数据格式不多不少正合适

    07月25日
  • Re: [转载]为什么现代软件让我悲伤

    有些扩展实现支持了注释(比如 json5),标准的 json 不支持的

    【 在 lwp (再也不跟人吵架了!!!) 的大作中提到: 】

    : json现在到底支持注释吗

    : 我怎么发现好多地方都不支持注释,tmd没有注释做个毛的配置文件....

    07月25日
  • Re: GCC这是搞啥呢?

    现在没什么人用32位了,可能ubsan开发者都忘了..

    【 在 moudy (moudy) 的大作中提到: 】

    : 确实是32位编译。关键这时候ubsan 32位库为啥还要报warning呢?

    07月24日
  • Re: GCC这是搞啥呢?

    32位系统?

    很多32位ABI里面int64确实只对齐到4字节

    【 在 moudy (moudy) 的大作中提到: 】

    : void main() {

    :   sint64 data;

    :   read(&data);

    : ...................

    07月24日
  • Re: 为什么vector<float[4]>可以list<float[4]>不行?

    你确定 std::vector<float[4]> b 可以用?

    你能把 b.size() 变成非零值,编译不报错,算我输。

    【 在 capriccio (小草|长相守) 的大作中提到: 】

    :         std::vector<float[4]> b;

    :         std::list<float[4]> s;

    : 去掉第二行就可以编译通过,运行的数据也都对。

    : ...................

    06月21日
  • Re: 小白请教个关于继承的问题

    为什么要这样设计可以看这里的解释:

    https://stackoverflow.com/questions/1628768/why-does-an-overridden-function-in-the-derived-class-hide-other-overloads-of-the

    另外,C++11 以后,要在子类暴露父类的全部同名重载,直接写 using Base::f 即可。

    【 在 xueyandy (xueyandy) 的大作中提到: 】

    : 父类有两个同名方法:A()和A(int c)。

    : 当子类不覆盖A()和A(int c)时,子类的实例可以调用A()和A(int c)。

    : 当子类覆盖了方法A()时,子类的实例调用方法A()的时候没问题,但是调用方法A(int c)的时候出问题了。

    : ...................

    06月21日
  • Re: 返回值是函数指针,参数是函数指针,的函数指针你们用的多

    经常用,标准库函数 signal 就是:

    void (*signal(int signum, void (*handler)(int))) (int);

    【 在 happysoul (happysoul) 的大作中提到: 】

    : 哈哈,够绕的

    06月21日
  • Re: 怎么实现一个和bitset有类似功能的 tritset?

    你可以用封装两个 bitset,第一个 set 的第 i 位和第二个 set 的第 i 位联合起来表示你在第 i 位的数。

    bitset<N> a;

    bitset<N> b;

    获取第 i 位的数:a.at(i) << 1 | b.at(i)

    统计 0 的个数:(~a & ~b).count()

    统计 1 的个数:(~a & b).count()

    统计 2 的个数:(a & ~b).count()

    【 在 fangniuwawa (兰州放牛) 的大作中提到: 】

    : 是一个办法,但是我要统计这个set里面1的个数就不那么容易

    02月24日
  • Re: 请教一段C++代码的优化

    你提供一个注册函数,每一个 demo 子类的作者自行负责注册

    std::map<int, std::function<Demo *()> > factory_map;

    void register_demo(int demo_id, std::function<Demo *()> factory) {

    factory_map[demo_id] = factory;

    }

    【 在 flyacat (放·逐) 的大作中提到: 】

    :     switch (demoID) {

    :         case 1: { scene = Demo01::create(); break;}

    :         case 2: { scene = Demo02::create(); break;}

    : ...................

    2018-12-02
  • Re: 请教一段C++代码的优化

    没有效率问题,switch-case 又不是一个一个比..

    【 在 Xaoyao (劳动最光荣) 的大作中提到: 】

    : 你只想过优化写法

    : 没想过优化运行效率吗?

    : 这1万个case

    : ...................

    2018-12-02
  • Re: C++有啥好用的内存池?

    先试一下 tcmalloc 和 jemalloc,仍然无法解决问题再考虑自己折腾

    【 在 speedboy2998 (极品飞车) 的大作中提到: 】

    : 我们打算把我们系统里日志单独用一个线程来写入,就成了典型的多个生产者一个消费者的问题。

    : 产生日志的各个线程把日志塞入到FIFO,写日志的线程从FIFO里获取然后写入或者发送给日志服务器。

    : 因为日志写入非常频繁,所以往FIFO里塞的时候new和写入完成后的delete数量巨大,考虑用内存池,想自己写一个简单的,但是从内存池里获取以及往里回收的时候线程互斥的代价估计挺高。

    : ...................

    2018-12-02
  • Re: fseek(fp,ftell(fp),SEEK_SET)

    读之后 fflush 是 undefined behavior

    【 在 prog2000 (世间有真情) 的大作中提到: 】

    : 因按读写方式打开文件后,不能读后马上写,反之亦然,需要加fflush/fseek, fsetpos 或 rewind.

    : 那句话换成 fflush(fp) 也可。

    2018-05-16
  • Re: lambda不用定义变量也能用?

    这是14还是17引入的糖

    【 在 dpblue (deep blue) 的大作中提到: 】

    : std::generate(v.begin(), v.end(), [n = 0] () mutable { return n++; });

    2018-04-25
  • Re: python如何获取一个大文件的行数

    不要说“只想”。。如果没有额外信息,获取文本文件行数的唯一办法就是整个文件读一遍

    如果文件不大,直接 len(open(filename).readlines())

    文件太大不想一次性读进内存,那就 sum(1 for line in open(filename))

    【 在 lzd82 (灯,等灯,等灯) 的大作中提到: 】

    : 只想获取行数,文件很大。。

    2017-12-30
  • Re: 现在 linux 发行版的 init system 的主流选择只有 systemd

    我怀疑若不是因为vapier不喜欢,恐怕也是早把systemd作默认了

    【 在 Comux (Comux) 的大作中提到: 】

    : gentoo默认openrc,但是有systemd的profile

    2017-12-30
  • Re: 这两天面试时遇到一个考哈希的,我说哈希算法复杂度大致可

    这最理想,但是对面试官要求比较高

    【 在 jackychoi (jobhunting) 的大作中提到: 】

    : 或者让候选人讲他最擅长的,然后问细节

    2017-11-04
  • Re: 有没有人试过把自己的程序全部改成 template<> 函数?

    不用做到完美。有多少信息,做多少事嘛

    【 在 jjfz (每天两壶茶) 的大作中提到: 】

    : 没可能的,总不能用到所有的第三方组件都给源代码吧

    2017-11-04
  • Re: 有没有人试过把自己的程序全部改成 template<> 函数?

    gcc、clang 的 LTO 都有 devirtualization

    GCC 除了能做确定性的 devirtualization,还支持一种基于概率的:

    假设 B 是 A 的子类

    A *p = ....;

    p->foo();

    如果编译器认为在这里 p 大概率指向的是 B 类型,可能会编译成这样(伪码):

    if (p->vptr == &B::vtable)

    static_cast<B*>(p)->B::foo(); // 这里可以inline

    else

    p->foo(); // Fallback,走虚表调用

    PGO 的情况下这样做很好理解。但我在非 PGO 的代码里也见过这种,至于编译器在非 PGO 时凭什么认为 p 大概率是 B 就不知道了……

    【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】

    : 也可能在链接时优化做这个?我不清楚目前实用的 LTO 都做些什么。

    2017-11-04
  • Re: 请教一个用os.system调用外部程序的问题

    最好的办法是用 subprocess

    【 在 opin (opin) 的大作中提到: 】

    : 我觉得很有启发性。所以就查了一下cmd.exe的帮助(help cmd.exe),发现这个命令还挺复杂的,有不少参数选项。现在怀疑os.system相当于以

    : cmd.exe \c cmd_str

    : 的方式执行用户命令字符串cmd_str。而此时cmd.exe对双引号有一些特殊处理,在一些情况下会:

    : ...................

    2017-10-14
  • Re: 问一个sql的优化

    另外,下面这样写完全是多余的。如果建了这个联合索引,mysql就知道这么用。

    【 在 sjfdesolve (dfljsdklfjsdlkfjsd) 的大作中提到: 】

    : 标  题: 问一个sql的优化

    : 发信站: 水木社区 (Fri Oct 13 16:51:19 2017), 站内

    : SELECT *

    : FROM table

    : WHERE code = 'x83'

    : AND start_time &lt;= now()

    : AND end_time &gt;= now()

    : ORDER BY `priority`, `created_at`

    : 我的优化想法是建立一个(code, priority, created_at)的联合索引

    : 然后用子查询

    : SELECT *

    : FROM (SELECT * FROM table WHERE WHERE code = 'x83' ORDER BY `priority`, `created_at`)AS new_table

    : WHERE start_time &lt;= now()

    : AND end_time &gt;= now()

    : 请问这种优化OK吗?外面的WHERE start_time &lt;= now()

    : AND end_time &gt;= now()会扰乱子查询排好的顺序吗?

    : 还有更好的优化吗?

    : --

    2017-10-14