---> 我的前端学习笔记
--->行业内最新最群的报告,工作日每日更新
DEBUG细节 :
不要把断点打在方法上
从配置文件中获取属性的值:
注意设置idea的编码格式
语法:@Value("${}")
作用:获取配置文件中的属性的值
缺点:获取多个需要频繁的取值
新知识点:
vo包的概念表示程序返回给前端页面的数据
dto包的概念表示程序给数据库的数据
谷歌插件JSON-handle用于更加直观的查看json字符串
@ConfigurationProperties(prefix = "")
//字符串写法
name: 云层
age: 18
id: 007
//list写法
list:
- 王一鸣
- 17
//map写法
map: {k1 : v1,k2 : v2}
多环境配置
为什么配置多环境:
解耦了各种环境的配置
开发环境(dev)
测试环境( test)
生产环境(prd)
配置文件规范写法:application-dev.properties
指定读取配置文件:spring.profiles.active=配置环境名(-符号后面的)
面试默写
-
使用@value注解的语法
@Value("${user.name}")
-
使用@ConfigurationProperties的语法
@ConfigurationProperties(perfix = "user")
-
使用@ConfigurationProperties扫描yml配置文件中读取list与map时候,properties中分别应该怎么写?
student: name: gavin age: 18 gender: man list: - name: coder - age: fullstack map: {薪资: many,address: 杭州} teacher: name: betty
student.list[0]=gavin
student.list[1]=18
student.map.name=gavin
student.map.age=18
-
@value与@configurationProperties注解分别在什么时候用
当我们从配置文件中取出一两条数据的时候,选用@value,因为方便快捷
当读取配合多的时候,如给一个对象配置赋值,我们需要@configurationProperties
-
多配置文件的写法
application-dev.properties
application-test.properties
application-prod.properties
后缀可替换为yml
-
多环境的切换命令
spring.profiles.active=dev
课外作业:
1 String s = “xx” 在内存中所在位置?
JVM对于
String
的存储有一点特殊的地方在于有一块String常量池
。
这个常量池里面存着对String对象的引用。比如,
String s = "abc"
会先去String常量池
中查找有没有已经存在的引用,如果没有,声明的abc会直接生成一个String对象,并且会在String常量池
中存入一个引用指向这个String对象。之后直接声明的字符串同样也会遵循上面的步骤,所以第二次
String s2 = "abc"
从String常量池
中找到了一个引用指向第一次声明的字符串对象。而
new String("abc")
这样会直接在堆中创建新的对象,不会进入String常量池
。要把这样的对象引用放入常量池中就涉及另一个String类的方法intern()
,这个方法就是返回一个String对象的常量池引用。如果这个对象不在常量池中,就会把这个String对象放入常量池中并返回对应的对象引用。
2 “” 与’'在java中的区别?
""是字符串
''是字符char
3 在泛型中?与T的区别?
通配符(?)
上面有泛型的定义和赋值;当在赋值的时候,上面一节说赋值的都是为具体类型,当赋值的类型不确定的时候,我们用通配符(?)代替了为了解决类型被限制死了不能动态根据实例来确定的缺点,引入了“通配符泛型” , 使用通配泛型格式为<? extends Collection>,“?”代表未知类型,这个类型是实现Collection接口。
注意:
如果只指定了<?>,而没有extends,则默认是允许Object及其下的任何Java类了。也就是任意类。
通配符泛型不单可以向下限制,如<? extends Collection>,还可以向上限制,如<? super Double>,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。
泛型类定义可以有多个泛型参数,中间用逗号隔开,还可以定义泛型接口,泛型方法。这些都与泛型类中泛型的使用规则类似。
限制泛型 T
由于没有限制class GenericsFoo类型持有者T的范围,实际上这里的限定类型相当于Object,这和“Object泛型”实质是一样的。限制比如我们要限制T为集合接口类型。只需要这么做:
class GenericsFoo,这样类中的泛型T只能是Collection接口的实现类,传入非Collection接口编译会出错。多接口限制
虽然Java泛型简单的用 extends 统一的表示了原有的 extends 和 implements 的概念,但仍要遵循应用的体系,Java 只能继承一个类,但可以实现多个接口,所以你的某个类型需要用 extends 限定,且有多种类型的时候,只能存在一个是类,并且类写在第一位,接口列在后面,也就是:
(泛型方法的类型限定)
<T extends SomeClass & interface1 & interface2 & interface3>
(泛型类中类型参数的限制)
public class Demo<T extends Comparable & Serializable> { // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了 }
4 <?extends T>是什么意思?
- <? extends T>:是指 **“上界通配符(Upper Bounds Wildcards)”**
- <? super T>:是指 **“下界通配符(Lower Bounds Wildcards)”**
PECS(Producer Extends Consumer Super)
3.1 Producer Extends 你写的类是主要作为生产者向外提供数据,那么就用
extends
3.2 Consumer Super 你写的类是主要作为消费者,需要吃进数据,那么就用
super