前言
主要用来记录整理最近一周工作学习中遇到,学到的一些小知识,积少成多,聚沙成塔
小细节
Swagger-ui显示枚举类型的时候
定义的枚举类型的头上不需要加一些莫名其妙的注解,就可以在Swagger-ui界面自动生成
public enum GreyTaskType {
SCALE,
PERSON,
DEMAND,
HOST
;
}
Swagger-ui的参数显示的问题
这个是在帮忙解决朋友的问题的时候发现的,其实就是Getter的问题,他定义了俩Getter,这样就会有俩参数跑出来了。
双向的验证
在两个模块相互依赖的时候,一方在进行某些操作的时候,需要判断另一方的状态,同样,另一方在进行某些操作的时候,也需要对这边的状态进行判断。 (主要是在删除和发布操作的时候)
Burp Suite和Kali系统
能够用于web应用攻击的,主要使用这个工具来进行网络安全方面的测试。而Kali系统主要就是黑客使用的系统了,用于网络渗透
Spring cloud配置中心
能够使用这个工具,实现项目发布在不同环境的情况下, 自行加载对应环境下的配置,而不再用手动修改
配置的优先级顺序:
- 配置中心的/-(env).yml (一般不存在)
- 配置中心的application-env.yml (一般不存在)
- 配置中心的 /-test.yml
- 配置中心的application-test.yml
- 配置中心的 /.yml
- 配置中心的application.yml
- 项目内的application.yml
从上到下,优先级依次降低
debug的时候的细节
在debug的时候,停到某一行的时候,可以按optional+f8,可以单独对函数进行调试,包括修改参数等等操作
栈和队列有什么区别
吃多了拉就是队列,吃多了吐就是栈(段子区看到的23333对栈和队列最形象生动的解释了)
Java中的装箱和拆箱
这个是一个前辈教授于我的,同时还推荐了一些书籍给我
spring 相关书籍推荐
spring boot 编程思想 原生类型,装箱和拆箱(int 和Integer) https://www.cnblogs.com/dolphin0520/p/3780005.html
为什么会有装箱和拆箱
我的理解,是将一个基本类型装箱,变成一个类,比如int 比那成Integer,这样做了之后,就能赋予这个类其他的各种方法和函数操作。
当然这只是我很浅显的理解,下面是我在网上查阅相关的资料所了解到原因
- 将一个基本类型包装成一个类, 可以使得这个类有很多可以调用的方法
- java还不算纯面向对象的语言,真正的面向对象,是没有基本数据类型的
- 在java的泛型中,基本类型是不能够作为泛型参数的,因此需要使用包装类的类型解决泛型参数的问题
- 这也是早期java的设计缺陷,基本的数据类型是数据,不是对象,也不是Object的子类,因此需要装箱,才能和其他的Object子类公用一个接口
基本数据类型和对应的包装类
基本数据类型 | 包装类 |
---|---|
int(4字节) | Integer |
byte(1字节) | Byte |
short(2字节) | Short |
long(8字节) | Long |
float(4字节) | Float |
double(8字节) | Double |
char(2字节) | Character |
boolean(未定) | Boolean |
装箱和拆箱的过程
- 装箱过程:通过调用包装器的valueOf方法实现的
- 拆箱过程:通过调用包装器的xxxValue方法实现的。(xxx代表对应的基本数据类型)。
其他注意点
- 通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。有面试题考察Integer A=100,B=100,问A==B结果是什么,答案是true,但是如果是200的话,答案就是false。原因就是前面所说的那样。
- Double类的valueOf方法会采用与Integer类的valueOf方法不同的实现,因此上面那一点里面的题,如果是200.0的话,答案都是false。原因是因为,在某个范围内的整型数值的个数是有限的,但是浮点数的个数可以说是无数个。(Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的。而Double、Float的实现方式是类似的)
- Boolean类型,在遇到上面的问题的时候,答案都是true
- Integer i = new Integer(xxx)和Integer i =xxx;这两种方式的区别,前者不会触发自动装箱,后者会触发自动装箱,其次,在一般情况下,第二种执行方式在执行效率和资源占用方面优于第一种情况
- 对于包装类型,equals函数不会触发自动转换,