zoukankan      html  css  js  c++  java
  • 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中会消除这点。

  • 相关阅读:
    遗传算法python实现
    lambda的一些用法
    Python遗传和进化算法框架(一)Geatpy快速入门
    电脑连接小爱同学音箱无法调节音量
    Shell脚本批量修改文件编码为UTF-8
    java实现 批量转换文件编码格式为UTF8
    POM添加规范
    SOFA框架跨包调用报错NoClassDefFoundError
    logger打印日志时加if (logger.isInfoEnabled())/if (logger.isDebugEnabled())
    对象,JSON,字符串,map之间的互转
  • 原文地址:https://www.cnblogs.com/immortal-worm/p/10345052.html
Copyright © 2011-2022 走看看