自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2023软件构造复习笔记(5)

针对动态类型的语言会检查除类型以外的其他语法错误,主要关于“类型”的检查(如a是int,b是int,则得出a/b也是int)防御性拷贝的关键就在于不把原本类中的对象提供给调用者,而是创建一个跟封装的类中相同的对象返回给调用者,这样,你对这个参数进行修改的时候跟封装类内部的相关参数无关,也就不会改变类中的参数。针对可变数据类型,为了保证行为等价性是一致的,就要用“==”来判断,只有指向同一个地址空间的两个变量,才认为是等价的,因为指向同一个地址空间,从一个变量处改变,另一个也跟着变;equals不需要重写。

2023-05-26 00:24:18 84

原创 2023软件构造复习笔记(4)

防御性拷贝的关键就在于不把原本类中的对象提供给调用者,而是创建一个跟封装的类中相同的对象返回给调用者,这样,你对这个参数进行修改的时候跟封装类内部的相关参数无关,也就不会改变类中的参数。如果final后面跟的数据类型本身是可变数据类型,则表示final的引用不可变,即final不可指向新的对象,而对象内部的值仍然是可变的,如list仍然可以使用mutator。如StringBuilder。当数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。

2023-05-26 00:18:05 79

原创 2023哈工大软件构造笔记(3)

本章重点:3.1 Data type in programming languages类型(type):一组值以及可以对这些值执行的操作。变量(variables):用特定数据类型定义,可存储满足类型约束的值。基本数据类型(primitve types)以及对象数据类型(object types):通常前者小写开始,后者大写开始。二者比较: 基本数据类型只有值没有ID也就代表,可以按照值来区分基本数据类型,而对于对象数据类型,即使值相同也未必相等。对象类型形成层次结构:object类是所有类的父类;一个类

2023-05-24 22:56:53 74

原创 2023哈工大软件构造笔记(2)

如果想把两个都有过更改的分支合并,例如下图中合并iss53分支,那么就找到共同点祖先节点,以祖先节点为起点,在两个分支的最后创建一个新的节点,该节点的两个父节点分别是两个分支的最后一个节点,然后令当前分支指针指向这个新的节点。传统VCS存储版本之间的变化(代码行),这样虽然所需存储空间小,但难以创建分支,而git存储发生变化的文件(而非代码行), 不变化的文件不重复存储,这样方便取出指定版本的文件,但是所需存储空间多。

2023-05-24 22:52:39 83 1

原创 2023哈工大软件构造复习笔记(1)

Unchecked异常也能用try/catch来进行捕获,但大多数时时不需要的,也不应该这样做——掩耳盗铃,对发现的编程错误充耳不闻!Unchecked异常也能用try/catch来进行捕获,但大多数时时不需要的,也不应该这样做——掩耳盗铃,对发现的编程错误充耳不闻!五个处理异常时使用的关键字:try,catch,finally,throws,throw。五个处理异常时使用的关键字:try,catch,finally,throws,throw。

2023-05-19 20:05:04 79 1

原创 网络编程引入

引入网络编程

2022-07-13 12:02:55 182

原创 线程安全入门

线程安全线程安全问题的提出实际上,在接触了线程概念之后,线程安全问题就不由自主地出现并引起了人们的关注。简单来说线程安全就是多线程执行的一种竞争行为。举例来说,就是在月末的时候,你的父母为你打来生活费,在同一时间节点上,你买了一双球鞋,那么在线程安全问题出现的情况下,就会由这样的事情发生:你买球鞋的支付线程被父母的生活费发送的线程夺取了执行权,使得你的扣费没有执行,而又增加了余额。对于你来说,可是件美差,但是对于运营者和程序员来说,这里面充斥着大量的问题和工作量去调整这样的错误。对于多线程来说,由

2022-05-28 17:13:12 67

原创 浅谈线程与进程

浅谈线程与进程线程与进程的简单介绍线程和进程的引入,目的是在于使程序能够几近同时地完成一些所需要功能,它的实现机制是通过不同进程或线程的切换运行,在切换间隔在毫秒级别时,用户无法察觉,从而形成视觉上的并行。那么我们会有一个疑惑,为什么需要线程和进程两个组件实现切换功能的目的呢?实际上进程包含着线程,进程是程序实现的最小单位,而线程则是对进程的再一次细分,我们可以理解为“进程的进程”,多个线程拥有同一个进程的一些系统信息,类似于地址,文件打开类的信息。由于进程是程序实现的最小单位,那么如果我们想在一个

2022-04-27 22:28:54 636

原创 美颜相机的基本功能实现

美颜相机的基本功能实现基本知识在学习了在标准绘制图形库中进行简单的递归图像实现后,我们把目光聚焦到了对于复杂图片文件的处理上,在这里需要简单介绍一下关于图像色彩的知识,以及缓存图片类的介绍。图形色彩参数“ARGB”在一个复杂图片文件中,不管图片的大小和整体的色彩有何等的差异,它都可以被拆分成一个个小的像素块,每个像素块具有A:透明度,R:红色参数,G:绿色参数,B:蓝色参数,由于红绿蓝三种颜色的组合可以匹配所有的颜色,所以运用这四个参数,可以标识一个像素块的颜色情况,在实际编码过程中,正向设置各个参

2022-03-27 10:45:01 1161

原创 递归与图形中的应用

递归与图形中的应用递归的理解在一长段时间内,我对递归和循环一直没有理清楚,在此以此篇文章梳理一下递归的思路,以供自己复习和他人借鉴。递归的本质是自己调用自己,所以我们要有一个本体,可以进行调用,然后递归需要规定界限,否则就会走向无限,我们认为在这样的一个界限下需要结束递归;我们还需要在调用时有递推关系,否则就会陷入死循环,至此递归的三要素已经完整了。而递归的运作过程是什么呢,和循环又有什么联系和区别呢?首先我们在开始时触发递归的条件,即让本体满足条件,然后用本体通过递推关系表达出下一个过程体,让过

2022-02-27 15:17:59 334

原创 接口的理解与简单应用

接口的理解与简单应用接口,本质上来说,是类的进一步抽象。我们知道,类有方法和属性,类的属性抽象,因为它没有被赋值,它总体概括了一个对象的特点;但是类的方法并不抽象,它就是对变量的一种实质性的操作,没有可变的余地,由此,我们引入了接口,使得方法的抽象得以实现。基本语法创建接口的关键字是“interface”,基本格式以及接口内容的要求如下。public interface nf{/*static final*/int a=1;//属性必须初始化public void function();//没有

2022-02-21 19:56:05 271

原创 简单界面实现

简单界面实现基础知识了解包在前面的学习中,我们简单地掌握了类与对象,类与类的作用关系,对于不同代码文件的整理,我们提出了包的概念,可以理解为一种文件夹,用来为代码文件分类,方便后人引用,在今天的界面实现中我们会大量地调用包。IDEA环境下包的建立1.在scr文件上右键,点击new;2.点击package;3.设置包名;注意:在过程如果没有找到package或者建立包后没有找到建立类的选项时可以参考这篇文章:解决:Idea中创建包包的调用方法包的调用是在使用的类之前,使用关键字“impo

2022-02-19 03:39:31 323

原创 Java继承详解

Java继承详解继承关系介绍例子语法子类重写转型继承关系介绍继承,一个不难理解的词,从上一辈得到的,受益于自己的东西,却又不限制自己的发展,实际上和我们今天介绍的类与类的关系是基本一致的。例子首先,和现实世界一样,我们把一个类定义为父类,一类定义为子类,父类具有子类共有的一些属性和方法(暂时不考虑重写);一系列的子类对应同一个父类,就像你的哥哥姐姐和你有同一个父亲一样,同时,每个子类有自己独特的属性和方法,就像你和哥哥姐姐不会完全一样。语法为了继承父类的一些属性和方法,我们需要使用到关键字“ex

2022-02-18 15:47:10 69

空空如也

空空如也

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

TA关注的人

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