杂项01

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日 星期三

  1. 关于实体类使用包装类还是基本类型:包装类是引用类型,默认值为null,不小心就报空指针异常,但是对于数据库比较好,没有赋值时显示null而不是0显得更为合理;int是基本类型,初始值为0,不存在空指针异常,但是默认值怎么设置合理
  2. 概念
    • 回调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.包装类

  1. 抽象方法不能有方法体, 也不能有{}
    • 抽象方法也不能使用private修饰, 其他三个可以
  2. 方法体类不能有private修饰变量, 因为定义在方法体内的变量本身就是一个局部变量, 访问范围就是局部范围,
    • 延伸: 方法体类不能定义静态static变量, 因为静态变量是属于类, 可以通过类名进行访问, 应该在类中定义
    • 方法体内页不能定义常量, 常量一般声明为public static final
  3. new Integer(123) 和 Integer.valueOf(123) 的区别
    • new每次肯定都会创建一个新对象
    • 编译器在自动装箱的过程会调用valueOf()方法, 使用享元模式
    • valueOf()会使用缓存对象
    • new Integer(123) == Integer.valueOf(123) 为false
  4. 不能隐式的向下转型, 但是 += 可以执行隐式类型转换
  5. 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()获取元素,并移动指针

  1. ArrayList默认容量10
  2. HashMap默认容量16(数组超过64,链表超过8,才会转为红黑树)
posted @ 2024-03-13 14:20  好滴都  阅读(34)  评论(0)    收藏  举报