自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git快速入门

`git remote add origin <远程仓库地址>`:将本地仓库关联到远程仓库。- `git pull origin <分支名>`:从远程仓库拉取更新到本地分支。- `git commit -m "提交信息"`:将暂存区的文件提交到本地仓库。- `git push origin <分支名>`:将本地分支推送到远程仓库。- `git merge <分支名>`:将指定分支的更改合并到当前分支。- `git checkout -- <文件名>`:撤销对文件的修改。

2023-05-26 22:26:46 74

原创 LSP原则

2. 子类型可以进行方法的扩展,但不能修改父类型方法的预期行为,也不能缩小父类型方法的前置条件(pre-conditions)和后置条件(post-conditions)。LSP原则强调了继承关系的可替代性和一致性。"如果S是T的一个子类型,那么在任何T类型的对象都可以用S类型的对象替换,而不会影响程序的正确性。4. 子类型应该通过重写父类型的方法来提供自己的实现,但必须确保在替代时不会改变方法的预期行为。1. 子类型必须遵守父类型所定义的行为约定,即子类型的方法和属性应该符合父类型的契约。

2023-05-26 22:19:49 418

原创 几种常见的设计模式

策略设计模式是一种行为型设计模式,用于在运行时选择算法或行为的不同策略。工厂设计模式是一种创建型设计模式,用于创建对象的过程封装和实例化的逻辑。适配器设计模式是一种结构型设计模式,用于将一个类的接口转换成另一个接口,以使两个不兼容的类能够协同工作。适配器模式通过创建一个适配器类,该类实现目标接口并包装了需要适配的类,将对目标接口的调用委托给被适配的类,实现接口之间的转换。观察者模式是一种行为型设计模式,用于在对象之间建立一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会收到通知并自动更新。

2023-05-26 22:18:00 80 1

原创 软构复习总结

对于继承于统一接口的子类,有时我们会需要这两个子类的叠加类,甚至更过子类的叠加或重叠,如果只采用继承方法,会创建大量的子类,也会使大量重复代码冗余。面临的问题:对一个父类的方法,我们希望不同的对象有不同的实现,但实际上,在同一等级的对象上,仍可能存在差异,差异体现在对象层面而非类层面。对于这两种创建对象的形式:以接口形式创建的对象,无法访问实现类中的细节,可以认为是接口的实现(实现类辅助实现),满足接口的规约和方法。程序快照图表示程序运行时刻的状态,程序的栈(正在运行的方法和局部变量),堆(对象)。

2023-05-26 22:14:19 75 1

原创 ADT与基本变量与引用变量

当你将'ab'这个字符串赋给两个变量x和y时,如果字符串常量池中尚未存在'ab'这个字符串,那么会在常量池中创建一个新的字符串对象,并让x和y都指向该对象。在 Java 中,静态变量(static variable)是属于类的变量,而不是属于对象实例的变量。因为静态变量与对象实例无关,所以它们的存储位置通常是在特定的内存区域中,称为"方法区"或"元数据区"(Metaspace)。对于通过new关键字创建的字符串对象,每次创建都会在堆内存中分配一个新的对象,因此它们的地址是不同的。

2023-05-26 22:11:18 54

原创 软件构造设计的一些工具

它可以通过分析堆转储文件(例如通过jmap生成的文件)来查找内存泄漏、大对象、过多的对象等问题,而无需执行正在开发的软件代码。JUnit可以帮助开发人员验证代码的正确性,捕获和修复潜在的缺陷,并确保代码在修改过程中不会破坏现有的功能。它可以检查代码中的格式错误、命名约定、代码风格和其他潜在的问题,并生成相应的报告。这些工具都是在软件开发和调试过程中非常有用的,它们提供了各种功能和特性,帮助开发人员编写高质量的代码、调试和优化应用程序。根据具体的需求和项目要求,可以选择适合的工具来提高开发效率和质量。

2023-05-26 19:46:00 315 1

原创 OOP的基本概念

对于这两种创建对象的形式:以接口形式创建的对象,无法访问实现类中的细节,可以认为是接口的实现(实现类辅助实现),满足接口的规约和方法。而对于非静态方法,其他的非静态方法是可以直接调用它的。super:在类的继承中,子类的构造方法中默认会有super()语句存在,相当于执行父类的相应构造方法中的语句。一个接口,由几个不同的等价的类继承,然后对同一个方法进行重写,最后呈现不同的效果,这个过程就体现了多态。泛型接口可以用非泛型的实现类,也可以用泛型实现类实现。类方法(静态方法)、类变量,可以通过类直接调用,

2023-05-24 21:38:07 172

原创 ADT相关基础概念

保持不变性和避免泄露是ADT最重要的不变性,对应方法:使用不可变类型和防御性拷贝。表示独立性:用户使用ADT不需考虑内部设计,内部变化不影响SPEC和客户端。ADT(抽象数据型),只关心作用于数据上的操作,不关心如何存储。R中的部分值并非合法,在A中不体现。由ADT来负责其不变量,与client的任何行为无关。不可变数据类型不能改变内部的值,而是创建一个新的对象。ADT的操作:构造器,观察器,变值器,生成器。表示不变量(RI)和抽象函数(AF)满足RI的值则在A中必有对应的映射。

2023-05-23 23:53:27 123 1

原创 软件构造第四章

final 在 Java 中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作 final,你将不能改变这个引用了,编译器会检查代码,如果试图将变量再次初始化的话,编译器会报编译错误。当使用可变数据类型的时候,要采用防御使拷贝,使用不可变数据类型时,则不用。变量不会改变,就提示错误,这也是静态类型检查的一部分。种类:语法错误,函数名错误,参数返回值类型数量错误。静态语言:java,在程序运行前声明了变量的类别。动态检查:越界,空指针,非法参数。变量被创建后其值不能被改变。

2023-05-23 17:32:32 30 1

原创 哈工大软件构造第一、二章总结

它标识一组测试用例未执行的程序区域。一旦发现用例覆盖空白域,就可以创建测试用例以验证未经测试的代码部分,从而提高软件产品的质量。回归测试:修复好bug之后将引发bug的作为测试用例,并重新测试所有测试用例。等价类划分方法:将被测函数的输入与划分为能派生不同等价类的数据域。白盒测试的主要技术是代码覆盖率分析。代码覆盖率分析消除了。测试效果:路径覆盖>分支覆盖>语句覆盖。黑盒测试围绕spec、需求和参数构建。用于检查程序功能,不关心内部代码。根据程序执行路径设计测试用例。边界值分析(BVA)

2023-05-22 23:33:18 34 2

原创 java web项目servlet界面无法打开

初学javaweb项目时,使用maven构建项目,tomcat正常运行,但是servlet界面404。我原来使用的是10.1.7,后来换成了9.0.73就可以正常打开了(jdk版本是11)可能是tomcat servlet配置的问题,换一个版本即可。新建一个项目的servlet依然404。保证地址正确的情况下。

2023-03-24 11:20:18 1646 1

原创 java ADT 用例规约、RI、AF

用例规约(Specification)是开发者和客户端的一种协议,由前置条件(pre-condition)和后置条件(post-condition)组成,前置条件则为客户端需要遵守的规范,若前置条件满足,则开发者必须满足后置条件。当一个规约的前置条件更弱或后置条件更强时,我们称它是更强的,更强的规约可以替换其他规约,意味着对开发者的自由度和任务更重,而客户端的任务更轻。由于我们不能将程序内部直接暴露给客户端,所以在客户端生成一个抽象空间(不是实际存在的),在这个空间内是客户端需要的内容。

2023-03-20 21:54:32 160

空空如也

空空如也

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

TA关注的人

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