常见重构技巧 - 去除不必要的!= 项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢?@pdai 常见重构技巧 - 去除不必要的!= 场景一:null无意义之常规判断空 场景二:null无意义之使用断言Assert 场景三:写util类是否都需要逐级判断空 场景四:让null变的有意义 场景五:Java8中使用Optional 场景一:null无意义之常规判断空 通常是这样的 private void xxxMethod(String key){ if(key!=n…
常见重构技巧 - 去除多余的if else 最为常见的是代码中使用很多的if/else,或者switch/case:如何重构呢?方法特别多,本文带你学习其中的技巧. 常见重构技巧 - 去除多余的if else 出现if/else和switch/case的场景 重构思路 方式一 - 工厂类 方式二 - 枚举 方法三 - 命令模式 方法四 - 规则引擎 方法五 - 策略模式 一些反思 参考文章 出现if/else和switch/case的场景 通常业务代码会包含这样的逻辑:每种条件下会有不同的处理逻…
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /*1.请简述Map 的特点 2.请简述HashMap的特点 3.请简述LinkedHashMap的特点 4.使用代码依次完成: a).将如下键值对信息存入Map集合中: "黄晓明", "Baby" "邓超&quo…
[Java实现]剑指Offer53.2--0~n-1中缺失的数字:面试真题,两种思路分享 前面有另一道面试题[Java实现]剑指offer53.1--在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)都是二分类型的,可以借鉴一下思路 题意解析: 这道题很特别,所有的测试用例都很有特点,都是形如[0,1,2,3,5,6,7]这样的,突然跳跃这个数值的索引,即是问题的解 具体如下: 前半部分数组中:索引和数值相等 后半部分数组中:索引比数值小1 第一种:二分思想 不同于以往…
我总结一些我发现的比较实用的功能,内容来自日常工作中用到的功能.图片来自PPT,是在公司内部的分享. 你不知道的webstorm进阶使用技巧 1.双击shift 全局搜索,可以搜索代码.设置等. 如果你不知道有些配置在哪里,只管双击shift按键,然后在搜索框输入关键词即可. 如下如所以,输入模板 template,既可以搜到代码中有关template关键字的代码文件,又可以搜到和template相关的设置. 2.Emmet,这个就不用说了,谁用谁知道,特别是jQuery时代.现在估计写三大框架…
一.Java 基础 1.JDK 和 JRE 有什么区别? JRE=JVM+各种基础类库+java类库(String\System) JDK>JRE>JVM JRE:是java运行时环境  JDK:是java开发工具包 2. == 和 equals 的区别是什么? 1.对象类型不同:a:equals():是超类Object中的方法.b:==:是操作符. 2.比较的对象不同:a:equals():用来检测两个对象是否相等,即两个对象的内容是否相等.b:==:用于比较引用和比较基本数据类型时具有不同…
1.mybatis 中 #{}和 ${}的区别是什么? #{}是预编译处理,${}是字符串替换: Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值: Mybatis在处理${}时,就是把${}替换成变量的值: 使用#{}可以有效的防止SQL注入,提高系统安全性. 2. mybatis 有几种分页方式? 数组分页 sql分页 拦截器分页 RowBounds分页 3. mybatis 是否支持延迟加载?延迟加载的原理是什么? My…
Java实现线程的三种方式和区别 Java实现线程的三种方式: 继承Thread 实现Runnable接口 实现Callable接口 区别: 第一种方式继承Thread就不能继承其他类了,后面两种可以: 使用后两种方式可以多个线程共享一个target: Callable比Runnable多一个返回值,并且call()方法可以抛出异常: 访问线程名,第一种直接使用this.getName(),后两种使用Thread.currentThread().getName(). 下面我们通过代码来看一下实现…