Spring测试
一直记错怎么测试Spring方法
依赖:junit依赖不需要,下面已经整合包括了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
测试类:
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = WppApplication.class)
public class SpringbootInfluxApplicationTests {
@Autowired
private WeatherForecastMapper weatherForecastMapper;
@Test
public void test() throws Exception {
System.out.println(weatherForecastMapper.getFutureWeatherForecastList());
}
}
2024年3月13日 星期三
- 关于实体类使用包装类还是基本类型:包装类是引用类型,默认值为null,不小心就报空指针异常,但是对于数据库比较好,没有赋值时显示null而不是0显得更为合理;int是基本类型,初始值为0,不存在空指针异常,但是默认值怎么设置合理
- 概念
- 回调callback:指被传入到另一个函数的函数
- 异步编程:指在代码执行时不会阻塞程序运行的方式
- 事件驱动:指程序的执行是由外部事件触发而不是顺序执行的方式
1.1小知识
1.命令行编译
javac HelloWorld.java
—进行编译,生成.class文件,也就是字节码文件。
java HelloWorld
—启动Java虚拟机,Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为类加载,它是由类加载器完成的,然后虚拟机针对加载到内存中的Java类进行解释执行,便可看到运行结果。
- char是Java的基本数据类型之一(默认值
\u0000
)占16位;
char定义在方法体内,是局部变量,不赋初始值,所以编译不通过;如果定义成类变量在类里面可以通过! - 事实证明声明为一个public的类时,文件名也必须保持一致;
同时如果不声明public,在调用命令行命令时,会找不到或无法加载主类;
class a{ //未声明public 在命令行执行会找不到zhu类
public static void main(String[] args){
char a='\u0000';
System.out.println(a);
//不赋初值此处会报错,只要不调用可以不赋值(因为在方法体内属于局部变量)
}
}
获取不同的数据类型的长度
length——数组的属性; length()——String的方法; size()——集合的方法
// 获取字符串长度
String str = "hello, world!";
int strLength = str.length();
// 获取StringBuffer的长度
StringBuffer sb = new StringBuffer("Hello");
int sbLength = sb.length();
// 获取字符数组的长度
char[] arr = {'H', 'e', 'l', 'l', 'o'};
int arrLength = arr.length;
// 获取列表的长度
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int size = list.size();
// 集合的大小
Set<Character> set = new HashSet<>();
set.add('a');
set.add('b');
System.out.println(set.size());
// map的大小
int size = map.size();
this
- this在类中代表当前对象,可以通过this关键字完成当前对象的成员属性、成员方法和构造方法的调用;
- this只能用于方法体内,当一个对象创建后,Java虚拟机会给这个对象分配一个引用自身的指针,这个指针就是this。因此this只能在类中的非静态方法中使用,this属于对象而不属于类
- 当在定义类中的方法时,如果需要调用该类对象,就可以用this来表示这个对象
静态变量
- 方法体内不能定义静态变量。静态变量是属于类的属性,用static关键字修饰,只能在类中定义。在方法内部进行定义是不合法的。一些代码语句也是不能直接在类里写的,需要写在方法体内,或者代码块;
2.内存泄漏和内存溢出
- 内存泄漏是指程序在使用完动态分配的内存后未正确释放该内存,导致内存无法被再次使用,造成内存的浪费。当程序中存在内存泄漏时,频繁执行该部分代码可能会导致内存资源耗尽,最终导致系统性能下降甚至崩溃。内存泄漏通常是由于程序中存在逻辑错误、资源管理错误或程序设计不合理等原因引起的。
- 内存溢出是指程序在申请内存空间时,超过了已分配给该程序的可用内存容量,导致程序崩溃或异常退出。内存溢出通常发生在程序需要存储大量数据或者执行复杂任务时,但没有足够的内存来满足需求。这种情况可能是由于算法错误、递归调用产生堆栈溢出、无限循环或内存管理不当等原因引起的。
- 内存泄漏的最终结果就是内存溢出,内存溢出是Java程序内存泄漏的最直接的表现
3.包装类
- 抽象方法不能有方法体, 也不能有{}
- 抽象方法也不能使用private修饰, 其他三个可以
- 方法体类不能有private修饰变量, 因为定义在方法体内的变量本身就是一个局部变量, 访问范围就是局部范围,
- 延伸: 方法体类不能定义静态static变量, 因为静态变量是属于类, 可以通过类名进行访问, 应该在类中定义
- 方法体内页不能定义常量, 常量一般声明为public static final
- new Integer(123) 和 Integer.valueOf(123) 的区别
- new每次肯定都会创建一个新对象
- 编译器在自动装箱的过程会调用valueOf()方法, 使用享元模式
- valueOf()会使用缓存对象
- new Integer(123) == Integer.valueOf(123) 为false
- 不能隐式的向下转型, 但是 += 可以执行隐式类型转换
- boolean默认值是false, Boolean不赋初始值是null
1.2集合
框架体系
List:有序、可重复、有索引
Set:无序、不重复、无索引
复杂度
时间复杂度
时间复杂度表示了算法的执行时间与数据规模之间的增长关系
常对幂指阶:
O(1) 、O(n) 、O(n * log(n)) 、O(n^2) 、O(2^n) 、O(n!)
空间复杂度
一般不计算,也比较简单
迭代器
hasNext()
判断当前位置是否有元素,有元素返回true,没有元素返回false
next()
获取元素,并移动指针
- ArrayList默认容量10
- HashMap默认容量16(数组超过64,链表超过8,才会转为红黑树)