自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 SpringBoot3版本下SpringSecurity的HttpSecurity配置

springSecurity中配置HttpSecuritry部分方法爆红

2023-05-29 22:24:18 2698

原创 软构复习12 Construction for Robustness and Correctness

client希望使用checked异常,因为可以提示更清晰的错误信息并加以补救,避免程序的直接推出。尽量使用unchecked exception来处理编程错误,因为不用使客户端代码显式的处理他们,衙门会在出现的地方挂起程序并打印出异常信息。对于Error,程序员通常无能为力,一旦发生了,只能想办法让程序优雅的结束。可以不处理,编译没问题,但执行时出现就代表程序失败,代表程序中的潜在bug。非运行时异常是程序员无法完全控制的外在问题所导致的,比如IO异常。

2023-05-23 20:49:25 140

原创 软构复习 11 Design Patterns for Reuse and Maintainability

所以我们可以将那些频繁出现的对象创建,封装到一个工厂类中,当我们需要创建对象的时候,直接调用工厂类中的工厂方法来为我们生成对象,这样,就算出现了变动,我们也只需要修改工厂中的代码即可。创建一个工厂类,里面可以生产多个物品(手机,平板,路由器),然后我就就只需创建三个具体的工厂(小米工厂,华为,苹果工厂)但是这样的话,当我们需要添加新的物品的时候,就难免需要在具体的工厂中添加,违反了OCP开闭原则。例如,如果我们还是按照上面的工厂模式,那么我们需要创建9个具体的工厂类,这时我们可以通过抽象工厂。

2023-05-23 20:47:39 143

原创 软构复习10 Construction for Change

就是尽量不要让接口太大,可以将一个方法很多的接口划分为很多小的接口,然后按需实现,避免实现很多不需要的方法。对扩展性的开放:模块的行为应该是可拓展的,从而该模块可表现出新的行为以满足需求的变化。1.SRP原则:不应该有多于一个的原因使得一个类发生变化,一个类一个责任。3.ISP原则:不能强迫客户端依赖于它们不需要的接口,只提供必须的接口。4.DIP原则:抽象的模块不应该依赖于具体的模块,具体应该依赖于抽象。对修改的封闭:模块自身的代码是不应该被修改的。例如:[a-c]:表示匹配a或b或c。

2023-05-21 14:57:22 115

原创 软构复习9 Construction for Reuse

由于能处理父类的,也都能处理所有的子类,那么子类要有比父类更强的规约,即:更弱的(或者相同)前置条件,更强的(或相同)的后置条件。同样,子类也要有比父类更强的RI(比如,父类要求人数num必须大于0,如果子类的num为负数,那么子类用父类的操作会出问题)对于方法的参数,子类型的参数要更加"宽泛",不仅要接受父类可以接受的,还能接受一些父类不能接受的(子类型参数"逆变")子类型中重写的方法必须:相同类型的返回值或者是父类返回值的子类。子类方法抛出的异常比父类抛出的异常范围小。

2023-05-21 14:56:34 39

原创 软构复习8 Equality in ADT and OOP (ADT和OOP中的“等价性“)

当list集合添加了一个“b”,那么他的哈希值会改变,不再是a了,但set集合不会因此改变list的哈希桶位置,所以查找就永远不会找到它了。首先put的时候,会把int的130转换为Integer的130,注意这里因为130不在缓存的范围内,所以a和b放入的不是一个Integer对象,所以两者地址不同,返回false。一个为我们上面新加的,另一个为Object类中的equals方法(所有的类均为Obejct的子类)2.声明一个Class接口实现类的对象,判断obj是否为Class接口实现类的实例对象。

2023-05-20 18:59:48 50

原创 软构复习7Object-Oriented Programming(OOP)

/animal的编译类型为Animal,运行类型为Dog。//animal的运行类型变为了Cat,编译类型仍然为Animal。//运行机制:首先先去Cat类中找有没有f1和f2方法,如果有,就运行,没有的话才会去Animal类中去找。1.要求父类的引用必须指向的是当前目标类型的对象(要求a原先必须指向Cat类型)a.f1()和a.f2()是正确的,a.f3()是错误的!的,a的编译类型为Animal,根本不知道cat中的方法。和a.f2()运行的是Cat中的方法!

2023-05-16 22:39:21 50

原创 软构复习6 Abstract Data Tyoe(ADT)抽象数据类型

2.Producers 生产器:例如String的concat()方法,让两个String拼接,并产生一个新的String。我们应当随时检查RI是否满足:可以定义一个checkRep()函数,在所有可能改变rep的方法内都要检查。表示R-->A的映射,R为开发者关注的表示空间,A为client关注的抽象空间。可以将RI看做:表示值的一个子集,包含了所有合法的表示值 或者。表示泄露的安全声明:给出理由,证明代码并未对外泄露其内部表示。可变类型的对象:提供了可改变其内部数据的值的操作。

2023-05-16 22:37:56 50

原创 软件构造5 Designing Specification复习

5.客户端无需阅读调用函数的代码,只需要理解spec即可。1.前置条件:对客户端的约束,在使用方法时必须满足的条件。以判断是否可以用一个规约去替换另一个?2.后置条件:对开发者的约束,方法结束时必须满足的条件。3.契约:如果前置条件满足了,后置条件必须满足。给“供需双方”都确定了责任,在调用的时候。是一种契约,规定程序与客户端之间达成的一致。2.不写下来,那么不同开发者的理解就不同。如果前置条件不满足,则方法。1.很多bug来自于双方之间的误解。3.没有规约,难以定位错误。什么样的规约强度更强?

2023-05-11 21:27:57 50

原创 软件构造4Data Type and type Checking复习笔记

可以使用final关键字.final类无法派生子类,final变量无法改变值、引用,final方法无法被子类重写。注意:如果分母为float和double类型的0的时候,结果为Infinity。如果是引用类型,其指向的对象也是不可以被改变的。包括:语法错误、类名(函数名)错误、参数数目错误、参数类型错误、返回值类型错误。包括:非法的参数值(比如分母为0)、非法的返回值(区别返回值类型错误)、改变一个变量的值:将该变量当前指向的值的存储空间写入一个新的值。静态检查关于“类型“的检查,不考虑值。

2023-05-11 20:22:18 39

原创 Maven使用jar打包,运行jar文件出现“没有主清单”问题

mainClass>运行方法的主类(路径,比如com.xx.xx.app)</mainClass>问题原因:是因为我们没有指定main函数的入口。解决方法:在pom.xml文件中添加。

2023-04-30 09:19:07 1227

原创 Idea+JavaSwing实现快速界面设计

Java Swing 在Idea中的快速开发

2023-04-26 10:27:01 2421 1

原创 软构设计模式

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素)的书,该书首次提到了软件开发中设计模式的概念。四位作者合称GOF(四人帮,全拼 Gang of Four)

2023-04-19 22:17:54 43

原创 当需要删除时,如何正确遍历List集合中的元素?

不会把List的每个元素都给遍历一边,比较不容易发现。因此,我们需要多加注意!首先这一种代码,很明显的会出现数组下标越界的异常,会提醒我们注意。错误2:for循环+删除LIst集合的元素。

2023-03-25 15:38:10 389

原创 软件构造Specification笔记

可以根据规约来判断是否行为等价。例如上述蓝色框里的五条,方法所做的都是正确的,因为前置条件违反了,我方法怎么做都可以。:如果前置条件满足了,后置条件必须满足。相反,如果前置条件不满足,则方法可以做。3.规约扮演着防火墙的角色,用户不需要了解具体实现,只需知道是干什么的。1.Spec给“供需双方”都确定了责任,在调用的时候双方都要遵守。2.规约可以隔离”变化“,无需通知客户端,可以提高代码效率。前置条件:对客户端的约束,在使用方法时候必须满足的条件。后置条件:对开发者的约束,方法结束时必须满足的条件。

2023-03-14 22:48:12 89

原创 JSP页面空白问题

jsp空白问题

2023-03-06 15:01:39 827

原创 软构软件测试学习笔记

软件构造课程学习笔记---02软件测试

2023-02-27 18:48:49 44

原创 MyBatis学习笔记

MyBatis学习笔记

2023-02-26 14:21:02 45

原创 Git学习笔记

Git学习笔记

2023-02-25 16:18:53 34

原创 Maven学习笔记

Maven学习笔记

2023-02-24 16:54:04 47

原创 德鲁伊连接池学习笔记

德鲁伊连接池简单使用

2023-02-22 10:43:03 1038

原创 连接池:C3P0学习笔记

C3P0学习笔记

2023-02-22 10:09:25 378

原创 @Test使用事项

@Test使用注意事项

2023-02-20 14:54:06 66

原创 Java值传递和引用传递学习笔记

Java值传递和引用传递学习笔记

2022-08-24 18:55:15 90

原创 二分查找学习笔记

二分查找错题心得

2022-08-23 14:49:30 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除