• 1月学习问题整理


    1、BDD和TDD的区别

    BDD是Behavior Driven Development行为驱动开发,

    TDD是Test Driven Development测试驱动开发

    二者都是敏捷开发中的核心技术和实践,其中TDD是以测试为导向,以抓住开发中的bug为目的,而BDD则是以贴近项目需求为导向,引导和关注行为规范。TDD的核心价值是“测试驱动整个系统的开发和进行”,BDD的核心价值则是“正确的对系统行为进行设计”。

    TDD通常使用代码层级的测试工具,使用者多为开发人员和测试人员,而BDD通常使用“很有辨识力的行为测试用例格式”,项目中的各路人员包括非技术岗的都可以参与spec的编写,信奉的哲学是“Specification,not Verification”。

    2、Go的反射机制

    Go的反射是基于接口interface变量的,类型是concrete type,而非像int这样的static type。反射可以将“接口类型变量”和“反射类型对象”互相转换,可以修改反射类型对象的value,但是其值必须是addressable的,可以通过反射类型对象动态的调用方法。

    3、leveldb的compaction过程的意义

    leveldb中直接像log和memtable中写入KV记录,但是要删除一条记录的时候,不会直接在memtable中去删除它,而是再做一条删除的“记录”,写入memtable中,等稍后的memtable做compaction变成immutable memtable的时候再执行该删除操作。另,leveldb中每做一次更改操作,version都回变动一次,即leveldb的MVCC机制。

    4、为什么level0的不同SSTable文件会有重叠的key?

    因为memtable和immutable memtable是可能有相同的key,而从im到level0进行的minor compaction并没有删除多余的key,所以一开始堆叠的level0不同文件是会有重叠key的,在之后的major compaction中会消除这点。

  • 相关阅读:
    CMDB表结构设计
    mysql数据库密码
    web之提取状态码
    ELK的启动脚本
    ELK的轻量级搭建使用
    liunx安装JDK
    liunx的urandom生成随机字符
    vim快捷键
    升级系统的python程序
    Mysql的进阶小记
  • 原文地址:https://www.cnblogs.com/immortal-worm/p/10345052.html
Copyright © 2020-2023  润新知