1.StringUtils.isBlank()判断是否为null/“”/“ “/
StringUtils.hasLengh()功能同上
2.CollectionUtils.isEmpty(list),代替list.isEmpty()
能同事判断list是null还是size为0
3.return Collections.emptyList(),代替return null
4.List.nwArrayList() = new ArrayList()
如果需要返回空list,可以使用Collections.emptyList()
5.BeanUtils.copyProperties(entity1,entity2)
将entity1的值一次性赋值给entity2中的每个字段
6.ConvertUtils.convert(list,class)类型转换
7.Arrays.asList()创建可add、remove的list
Collections.singletonList()创建不可变的list
8.StringUtils.isNotBlank()
9.@JSONFiled(name=“aa”)定义json串中key的值
@JSONField(alternateNames = {“user”, “person”})匹配多个name
@JSONType(naming = PropertyNamingStrategy.SnakeCase)蛇形命名自动转化
10.entity instanceof entity2 判断实体类1是不是实体类2的子类
11.@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。
12.@EqualsAndHashCode(callSuper = true),让子类生成的方法中调用父类的方法
13.TypeUtils.castToLong(value),将obj转化为long类型
14.Lists.newArrayListWithExpectedSize( int estimatedSize) 构造一个期望长度为estimatedSize的ArrayList实例
15.doubleValue()是intValue()四舍五入向下取整
16.java.math.BigInteger.signum() 返回此BigInteger的函数正负号。
17.getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
18.StringUtils.equals(a,b)
19.@kafkaListener
20.Math.pow(a,b) 求a的b次方,如果要求n次方跟,可以给b赋值1.0/n,注意此处必须是浮点类型
22.DecimalFormat.getNumberInstance().format(amountStart)
BigDecimal转String
23.JsonUtils.jsonToBean(dataJson, EsArticleEntity.class)
24.StringUtils.equalsIgnoreCase比较两个字符串是否相等并且忽略大小写
equalsAny方法比较字符串与给定的数组中的任何一个字符串相等就返回true
equalsAnyIgnoreCase方法比较字符串与给定的数组中任何一个字符串相等就返回true
25.用StringUtils.equals(a,b)代替a.equals(b)方法,这样可以避免null带来的错误
27.String.format("","")拼接字符串
详见https://blog.csdn.net/anita9999/article/details/82346552
注:如果要拼接%,由于%在format是特殊符号,要对%进行转译,应该写成%%
28.springboot热部署
https://www.cnblogs.com/a8457013/p/8065489.html
29.Collections工具类对list进行排序
Collections.sort(list);升序
Collections.reverse(list);反转
30.Map
Maps.newHashMapWithExpectedSize(3),初始化一个大小合适的map集合,避免在向集合添加元素的时候,因为大小不合适而resize,
每次resize都得执行以下步骤:再次去分配空间,再次去计算所以元素的hashcode,再次根据hashcode计算数组的分配位置,然后数组拷贝。
这样就可以大大提升 在使用hashmap时候的性能。和不必要的空间浪费。
https://www.cnblogs.com/hahajava/p/9042919.html
31.Collections.singletonList(something)是不可变的,
对Collections.singletonList(something)返回的列表所做的任何更改将导致UnsupportedOperationException 。
Arrays.asList(something)允许Arrays.asList(something) 更改 。
此外,由Collections.singletonList(something)返回的List的容量将始终为1,
而Arrays.asList(something)的容量将为已支持数组的大小。
https://www.cnblogs.com/xingzc/p/9144375.html
32.数据库连接池一般最大连接数在30左右
数据库请求层面的的请求应答时间必须在100ms以内
超过三个表禁止join,关联字段要有索引并且数据类型绝对一致
33.java.time包
https://www.jianshu.com/p/19bd58b30660
https://www.cnblogs.com/lxyit/p/9442135.html
34.@Builder 构造方法会影响java反射注入
35.静态方法通常用于定义工具类的方法,并且通常和单例(私有构造方法)相伴而生
36.AggregationBuilder的学习笔记
https://www.cnblogs.com/xionggeclub/p/7975982.html
37.什么是java的方法签名
方法名称+所有参数类型(也称参数列表)
38.String.Join 方法 (A (String), B (String[]));
在指定 String 数组B的每个元素之间串联指定的分隔符 A,从而产生单个串联的字符串
string [] tmpStr={abc,def,ghi};
string jn = string.Join(“-“, tmpStr);
此时jn=”abc-def-ghi”;
https://blog.csdn.net/qq_39949109/article/details/80481765
39.String endsWith(String suffix)方法
此方法如果参数所表示的字符序列是由该对象表示的字符序列的后缀返回true, 否则为false; 请注意,如果参数是空字符串或等于此String对象由equals(Object)方法确定结果为 true。
https://blog.csdn.net/weixin_37627441/article/details/82893799
40.String removeFirst(String text, String regex)
功能:移除字符串text中第一个能匹配上正则表达式的子串。
https://blog.csdn.net/zuodongmei0921/article/details/54617666
41.Map.getOrDefault(String key,Object defaultValue)
当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue
42.Java String类的compareTo()
用来比较两个字符串的字典顺序
StringUtils.compare(String a,String b)==0 相等
43.List和Json的相互转换
https://www.cnblogs.com/hmpcly/p/10439002.html
44.包装类型大小比较
如Integer类型,在赋值的时候,数据会由IntegerCache.cahe产生,会复用范围内(-127-128)已有对象,如果比较的数值在-127~128之间,可以直接用==来比较,但是超过这个范围的数据都会在堆上生产,不会复用已有对象,因此推荐用equals()方法来比较
45.在POJO类中给布尔类型变量命名时,尽量避免命名成isxxx,如isDeleted,因为框架在反向解析的时候,会误认为对应的属性名是deleted而找不到吧变量,在是在数据库建表中,则推荐使用is_xxx的方式命名
46.阿里的fastJson.jar:
//list转换为json
List list = new ArrayList();
String str=JSON.toJSON(list).toString();
//json转换为list
List list = new ArrayList();
list = JSONObject.parseArray(jasonArray, Person.class);
https://blog.csdn.net/JoneZ/article/details/82699446
47.map获取所有key
map.keySet()
map获取所有values
map.values()
map获取所有键值对
map.entrySet()
48.concurrentMap
https://www.cnblogs.com/shan1393/p/9020564.html
49.System.nanoTime与System.currentTimeMillis
nanoTime精确度更高,适合做计时器
currentTime适合做时钟
https://blog.csdn.net/tuoni123/article/details/80236048
50.线程池处理事务的优先级
核心线程corePoolSize、任务队列workQueue、最大线程 maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。
https://www.cnblogs.com/redcool/p/6426173.html
51死循环有两种写法
for(;;)、while(true)
推荐使用前一种,因为底层代码更加简洁,耗费资源更少
52.统计Map集合中元素的个数
map.size()
concurrentHahMap.mappingCount()
53.public String substring(int beginIndex)
截取该子字符串始于指定索引处的字符,一直到此字符串末尾。
54.File.separator
便于跨平台兼容的间隔符
separatorChar
public static final char separatorChar
与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 ‘/’;在 Microsoft Windows 系统上,它为 ‘’。
separator
public static final String separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 separatorChar。
pathSeparatorChar
public static final char pathSeparatorChar
与系统有关的路径分隔符。此字段被初始为包含系统属性 path.separator 值的第一个字符。此字符用于分隔以路径列表 形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为 ‘:’;在 Microsoft Windows 系统上,它为 ‘;’。
pathSeparator
public static final String pathSeparator
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar。
https://www.cnblogs.com/zhxn/p/7206786.html
55.MySQL CURDATE()、NOW() 、CURTIME()函数
SELECT NOW(),CURDATE(),CURTIME()
56.this关键字的用法
(1)引用成员变量
用于区分同名的成员变量和局部变量,带有this的就是成员变量
(2)调用类的构造方法
根据this()中的参数列表,来区分调用的是哪个构造方法
注:一般来说,利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参数的构造方法。否则的话,翻译的时候,就会有错误信息
(3)返回对象的值
return this
57.查看指定版本springboot下的tomcat版本
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat/2.0.6.RELEASE
查看不同版本的springboot只需要替换最后的版本号即可
58.函数 toPlainString() 和 toString()区别
String toPlainString() 返回不带指数字段的此 BigDecimal 的字符串表示形式。通俗来讲就是直接显示,不用科学计数法表示。
https://blog.csdn.net/zw792346763/article/details/80186266
59.与配置文件关联的prefix不支持驼峰命名和蛇形命名
https://blog.csdn.net/LMAKE_nbsp/article/details/88803983
60.Error:elasticsearch this is not a http port
访问的是elastic search的tcp端口,需换成http端口
elastic search默认tcp端口9300,http端口9200
https://blog.csdn.net/truong/article/details/62046063
61.springboot2.0整合redis
https://www.cnblogs.com/laoash/p/9799322.html
62.Objects.requireNonNull(obj)
获取对象,若对象为空则抛出空指针异常
63.RegexUtils正则工具
64.@Mapper和@Repository的区别
@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中,BaseRepository实现BaseMapper其中的insert、updateById、selectOne、selectList、selectCount、delateById等封装方法。
@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。
65.java序列化
其好处一是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里),二是,利用序列化实现远程通信,即在网络上传送对象的字节序列
writeObject实现序列化
readObject实现反序列化
66.fastJson
json转object:JSON.parseObject
object转json:JSONObject.toJSONString
67.DAO类型
表名
@TableName(“ads_amazon_category_index_sm_v15”)
字段名
@TableField(“marketplace”)
68.JSON类型对应实体类
首先序列化
类名(确认转化格式,驼峰/蛇形)
@JSONType(naming = PropertyNamingStrategy.SnakeCase)
字段名
@JSONField(alternateNames = “image”)