Java 开发
Java 语法
方法重写
以下示例不能称为 方法重写,虽然满足里氏替换,但是不符合子类的思想。
1 | class SuperClass { |
泛型
TlensuProjectGenerationController
DefaultProjectGenerationController extends ProjectGenerationController
这样写在 idea 中不报错,但编译的时候会报错。
泛型方法定义的关键:返回值前的
lambda 表达式
- 定义
一个不用被绑定到一个标识符上,并且可能被调用的函数定义。(一段带有输入参数的可执行语句块)
- 注意
外部变量必须用 final修饰;this指向 声明它的外部对象。
- method reference
objectName::instanceMethod;ClassName::staticMethod. 把lambda的参数直接当成 instanceMethod|staticMethod 的参数来调用;
ClassName::instanceMethod. 把lambda表达式的第一个参数当成 instanceMethod 的目标对象,其他剩余参数当成该方法的参数。 - construct reference
ClassName::new,把lambda表达式的参数直接当成 ClassName构造器的参数来调用。
常用工具类
java.util.*
- Arrays,Collections,Comparators,
- Objects
- Optional
- Spliterators
function
- Consumer: void accept(T t);
- Function: R apply(T t);
- Predicate: boolean test(T t);
- Supplier: T get();
stream
- 定义
Stream是元素的集合,可以支持顺序和并行的对原Stream进行汇聚的操作;
- 使用Stream的基本步骤
- 创建Stream;
- 转换Stream,每次转换原有Stream对象不改变,返回一个新的Stream对象(可以有多次转换);
- 对Stream进行聚合(Reduce)操作,获取想要的结果;
- 创建Stream
- 通过Stream接口的静态工厂方法:of方法;generator方法,iterate方法(生成一个无限长度的Stream,配合limit方法来用);
- 通过Collection接口的默认方法;
- 转换Stream:filter, map, peek(提供一个消费函数), limit(对Stream进行截断操作)
- Reduce Stream
- 可变汇聚:把输入的元素们累积到一个可变的容器中,比如Collection。.collect(Collectors.toList())
- 其他汇聚:通过把前一次的汇聚结果当成下一次的入参,反复如此。比如reduce,count,anyMatch,findFirst;
spring
- ClassUtils,ReflectionUtils,TypeUtils
- CollectionUtils
- NumberUtils,ObjectUtils,StringUtils
- FileCopyUtils,FileSystemUtils,ResourceUtils,SocketUtils,StreamUtils
- SystemPropertyUtils
字符串、日期时间处理
数学、Money处理
Java 运算符
- 算术运算符:除法 /, 取余 %
- 关系运算符:==, >=
- 位运算符:A = 0011 1100(60), B = 0000 1101(13)
- (A&B)得到12,即 0000 1100
- (A | B)得到61,即 0011 1101
- (A ^ B)得到49,即 0011 0001,异或
- (~A)得到-61,即1100 0011,取反
按位左移,符号位不动,低位补0操作
按位右移,符号位不动,高位补0操作
按位无符号右移,符号位动,高位补0操作
- 逻辑运算符:&&, !
- 赋值运算符:>>= 右移位赋值运算符, |= 按位或赋值操作符
- 条件运算符:(?:)
其它
- “ & < ("&<) 等等属于 xml 的特殊字符,需要转义 org.apache.commons.lang3.StringEscapeUtils.unescapeXml(“”);
- 浮点数在计算机中的表示规则(国际标准IEEE 754),分成 S,E,M 三部分,V = (-1)^S * M × 2^E;
- sso:// 点单登录协议,需要安装单点登录器。
- 如何识别文本文件的编码方式?
- 文件的最前面分别加入一个表示编码方式的字符(FFFE:Unicode、FEFF:Unicode big endian、EFBBBF:UTF-8、默认:ANSI)。
- 编辑工具打开时右下角有编码格式显示。
- 重复对给定的种子值(seed)调用用户指定函数。
密码学
不可逆加密算法
不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的。不可逆加密:SHA(Secure Hash Algorithm)系列,MD5;
对称加密算法:AES、3DES;
非对称加密算法:RSA;