自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TangTag的博客

学习经验

  • 博客(14)
  • 资源 (4)
  • 收藏
  • 关注

原创 面向百度学习

最近在看设计模式,看了很久都不是很明白,于是百度了一下,找到一个网址:www.runoob.com/design-pattern/factory-pattern.html,上边详细的记载了Java的各种设计模式,通俗易懂,记下以防备用。...

2018-04-21 08:52:36 593

原创 软件构造之设计可重用的类

如果q(x)是为一个关于T型对象x的属性,S是T的子类型,那么q(y)为S类型的对象y的属性是可以证明的。行为子类型化和Liskov替代原则。行为子类型化子类型可以增加方法,但不可删除原有的方法子类型需要实现抽象类型中的所有未实现方法 子类型中重写的方法必须有相同或子类型的返回值 子类型中重写的方法必须使用同样类型的参数 子类型中重写的方法不能抛出额外的异常 具体体现为:子类型具有更强的不变量 子...

2018-04-15 11:38:37 463

原创 软件构造之软件复用

软件复用是使用现有软件组件实现或更新软件系统的过程。软件重用的两个视角:面向复用编程:开发出可复用的软件基于复用编程:利用已有的可复用软件搭建应用系统为什么需要复用降低成本和开发时间 产生可靠的软件实现标准化,在不同应用中保持一致 可重用组件的级别和形态代码级别复用两种类型:白盒复用:源代码可见,可修改和扩展,复制已有代码当正在开发的系统,进行修改优点:可定制化程度高缺点: 对其修改增加了软件的复...

2018-04-15 09:50:11 4458

原创 软件构造之等价性

介绍对于抽象数据类型,抽象函数解释了如何将具体表示值解释为抽象类型的值,并且抽象函数的选择会决定我们如何编写实现每个ADT操作的代码。三种判断等价方式从形式上讲,我们可以通过几种方式来观察等价性。使用抽象函数。抽象函数f:R→A将数据类型的具体实例映射到它们相应的抽象值。 我们可以使用抽象函数f作为等价的定义,a等价于b当且仅当f(a)= f(b)。使用关系。 等价关系E是二元关系 T X T 的...

2018-04-08 08:47:55 457

原创 软件构造之不变量

不变量一个好的抽象数据类型最重要的属性是它保留了它自己的不变量。对于程序的每种可能的运行状态,不变量都是程序中永远为真的属性。不变性是我们遇到的第一个至关重要的不变量:不可变对象一旦创建,在整个程序的生命周期内,他都应该保持相同的值。当抽象数据类型保留自己的不变量时,推理代码变得容易很多。如果我们可以确认字符串永远不变,那么当我们调试使用了字符串的代码时,就可以排除字符串发生改变的可能性不变性让我...

2018-03-31 10:51:16 1212

原创 软件构造之抽象数据类型

什么是抽象抽象数据类型是软件工程中一般原理的一个实例,它有许多名称,其意义略有不同:抽象。用更简单,更高层次的概念来省略或隐藏底层细节。模块化。将系统划分为组件或模块,每个组件可以与系统的其他部分分开设计,实施,测试,推理和重复使用。封装。围绕模块构建墙壁(硬壳或胶囊),使模块对其自身的内部行为负责,并且系统其他部分的错误不会损害其完整性。信息隐藏。从系统的其他部分隐藏模块实现的细节,以便稍后可以...

2018-03-29 09:25:36 3681

原创 软件构造之设计Java规约

在这篇文章中,我们将看看描述相同行为的不同规约,并讨论它们之间的权衡。我们将看三个维度来比较规约:             它有多大的确定性。这个规范是否只定义了一个对于给定输入的一个可能的输出?或是否允许实现者从一系列合法的输出中选择一个?             它是如何声明的。规范仅仅描述了输出应该是什么,还是明确地说明了输出是如何得来的?             它有多强。规约是有一小部分...

2018-03-28 20:31:22 358

原创 软件构造之为什么需要规约

什么是规约规约是团队合作的关键。它就像一个合同:实现者负责满足合同的要求,使用该方法的客户端就可以依靠这个合同。事实上,就像真正的法律合同一样,规约对双方都有要求:当一个规约具有前提条件时,客户端需要满足这个前提条件;当客户端满足这个前提条件时,我们的方法需要满足合同中提出的要求。为什么需要规约在程序中最严重的bug产生于两个代码块之间交互时不同的行为之间的误解。虽然每个每个程序员心里都记着一个规...

2018-03-28 18:30:11 371

原创 软件构造之Java 类型

什么是类型类型是由一系列值的集合,以及可以在这些值上执行的操作组成。在Java中有几种基本的数据类型,他们是:整型(如5和200,范围为在正负2的31次方之间,大致为正负20亿)。 长整型(较大的整数,最大为2的63次方)  布尔类型(值为true或false)            双精度浮点数(用于浮点数,表示实数的子集)           字符(如“A”和“$”等单个字符)java也有对象...

2018-03-25 08:15:32 226

原创 软件构造之测试

软件测试目的:发现程序中的问题,从而提高程序员对程序正确性的信心程序正确性确认的基本方法形式化推理:验证构造程序正确的形式证明。单调乏味的手工操作,需要自动化工具代码评审:让别人仔细阅读你的代码,是发现错误的好方法测试:在仔细选择的输入上运行程序并检查结果 什么是测试测试提高软件质量的重要手段,执行程序或应用程序的过程,目的是发现错误(错误或其他缺陷),并验证软件产品是否适合使用。确认是否达到可用...

2018-03-16 20:05:08 527

原创 软件构造之软件的生命周期

软件开发的基本过程 计划 --- 分析 --- 设计 --- 实现 --- 测试和部署 --- 运维 (循环往复)传统软件开发过程模型两个主要的类型:线性过程和迭代过程已有模型:瀑布过程:线性非迭代过程。该过程是软件开发的基本过程的线性推进,各阶段划分清楚,整体推进,管理简单但无法适应需求的变化。 增量过程:非迭代过程。产品的设计、实现和测试都是渐进的(每次增加一点),直到产品完成为止。该模型逐步...

2018-03-08 10:04:44 453

原创 使用Travis-CI在线build

利用Travis-CI 在线build Java工程什么是CI (Continuous Integration)持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个:快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续集成的目的,就是让产品可以快速迭...

2018-03-07 15:54:50 909

原创 软件构造的多维视角与质量目标

软件构造的多维视角三个维度By dynamics: Moment/Period viewsBy phases:Build-time/Run-time viewsBy levels:Code-level/Component-level views 八个视图Build-time,moment,and code-level view源代码是如何通过基本程序块组织起来的。如函数、类、方法、接口等,以及他们...

2018-03-03 15:37:48 296

原创 IDEA运行从Git中导入的Java工程

第一次接触GitHub和运行从GitHub导入的工程,期间遇到了一些问题,花了一些时间才得以解决。运行从Git导入的Java工程的方法如下。从Git将工程导入IDEA过程:1.File --- New --- Project from Version Control2. 输入Git Repository URL,点击clone。(因为我已经将工程导入了IDEA,提示目录已存在)导入后的项目文件:这...

2018-03-03 12:06:58 5949

统计与自然语言处理

NLP,short for natural language processing, is very important

2018-12-20

计算机网络笔记传输层

计算机网络传输层知识笔记,包括TCP,UDP、TCP三次握手的建立等

2018-11-22

计算机网络应用层笔记

计算机网络知识笔记应用层部分,包括HTTP,SMTP,DNS缓存技术等

2018-11-22

软件构造实验

判断某一个矩阵是否是一个幻方,如果是,将其输出到文件

2018-05-03

空空如也

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

TA关注的人

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