面试记录7.14
作者:互联网
mysql中一张表两个字段建了联合索引,需要单独查询两个字段,需要对每个字段单独加索引吗?
最左前缀原则规定了联合索引在何种查询中才能生效,规则如下:
如果想使用联合索引,联合索引的最左边的列必须作为过滤条件,否则联合索引不会生效。
这也就是说,联合索引其实拥有单列索引的作用。
怎么去除多个平级的ifelse?
表驱动法
Map<?, Function<?> action> actionMappings = newHashMap<>(); // 这里泛型 ? 是为方便演示,实际可替换为你需要的类型
// 初始化
actionMappings.put(value1, (someParams) -> { doAction1(someParams)});
actionMappings.put(value2, (someParams) -> { doAction2(someParams)});
actionMappings.put(value3, (someParams) -> { doAction3(someParams)});
// 省略多余逻辑语句
actionMappings.get(param).apply(someParams);
策略模式加工厂
工厂类维护一个类型->处理类的一个map,处理类有一个公共的父类。
public class MedalServicesFactory {
private static final Map<String, IMedalService> map = new HashMap<>();
static {
map.put("guard", new GuardMedalServiceImpl());
map.put("vip", new VipMedalServiceImpl());
map.put("guest", new GuestMedalServiceImpl());
}
public static IMedalService getMedalService(String medalType) {
return map.get(medalType);
}
}
public class Test {
public static void main(String[] args) {
String medalType = "guest";
IMedalService medalService = MedalServicesFactory.getMedalService(medalType);
medalService.showMedal();
}
}
标签:7.14,someParams,索引,记录,面试,map,static,put,actionMappings 来源: https://www.cnblogs.com/autowin/p/16477278.html