自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python os.system时启用其他的conda环境

Python os.system时启用其他的conda环境

2022-05-08 20:58:10 2106

原创 linux宿主机ssh访问windows10虚拟机

linux宿主机ssh访问windows10虚拟机

2022-04-13 16:12:40 1923

原创 java中的线程安全(Threadsafe)及其四种策略

1.    线程安全:    线程之间存在“竞争条件”,作用于同一个mutable数据上的多个线程,彼此之间存在对该数据的访问竞争并导致interleaving,导致post-condition可能被违反,这是不安全的。    线程安全:ADT或方法在多线程中要执行正确。    要做到:不违反spec,保持RI。与多少处理器,如何调度线程无关,不需要在spec中强制要求client满足某种“线程安...

2018-06-22 11:05:57 6136

原创 设计模式(四):代码调优的设计模式

1.    概述:    本文将介绍四种面向代码调优的设计模式:    (1)Singleton Pattern(单例模式)    (2)Flyweight Pattern(轻量模式)    (3)Prototype Pattern(原型模式)    (4)Object Pool Pattern(对象池模式)2.    Singleton Pattern(单例模式)    某些类在应用运行期间只需...

2018-06-21 22:12:49 331

原创 黑盒测试用例的设计:等价类划分与边界值分析

1.    白盒测试:对程序内部代码结构的测试       黑盒测试:对程序外部表现出来的行为的测试           用于检查代码的功能,不关心内部实现细节。           即检查程序是否符合规约。           下面介绍用例设计的两种方法:            等价类划分与边界值分析。2.    等价类划分定义:基于等价类划分的测试,将被测函数的输入域划分为等价类,从等价类中导...

2018-06-21 10:37:37 2347

原创 java中的Error 与 Exception

1.    综述    java中有java.lang.Throwable,以及其子类 java.lang.Exception和java.lang.Error    Error:描述内部系统错误或资源枯竭的状态。(例如VirtualMachineError,             LinkageError)程序员通常对此无能为力,一旦发生,想办法令其优雅地结束    Exception:自己程序...

2018-06-21 00:01:26 296

原创 设计模式(二):基于状态的设计模式:State与Memento

1.    基于状态的编程:     使用有限状态机来定义程序的行为、使用状态来控制程序的执行。     根据当前状态,决定下一 步要执行什么操作、执行操作之后要转移到什么新的状态 。2.    State Pattern状态模式(一个行为类模式)    思想:    最好不要使用if/else结构在ADT内部实现状态转换(考虑将来的扩展与修改)    使用delegation,将状态转换的行为委...

2018-06-20 16:25:29 540

原创 设计模式(一)面向可维护性的,基于委派和继承的设计模式

1.    概述(1)Creational patterns(创建型模式)    a.    Factory method pattern(工厂方法模式)    b.    Abstract factory pattern(抽象工厂模式)    c.    Builder pattern(构造器模式)(2)Structural patterns(结构型模式)    a.    Bridge pat...

2018-06-20 15:56:05 503

原创 面向对象的五个设计原则:SOLID

1.    SOLID(1)SRP(The Single Responsibility Principle)单一责任原则(2)OCP(The Open-Closed Principle)开放-封闭原则(3)LSP(The Liskov Substitution Principle)Liskov替换原则(4)ISP (The Interface Segregation Principle)接口聚合原...

2018-06-19 15:02:27 1437

原创 设计模式(三):面向复用的设计模式

1.    设计模式的分类:    (1)Creational patterns(创建型模式)            关注于对象的创建    (2)Structural patterns(结构型模式)            处理类和对象的组成。            本文介绍Adapter,Decorator,Facade三种关于可复用的模式。    (3)Behavioral patterns(...

2018-06-19 13:58:10 1431

原创 复用形式之:委派(delegation)

1.    委派/委托:一个对象请求另一个对象的功能        委派是复用的一种常见形式         一个简单例子:            正如一下所示:    Receiver 对象将操作委派给Delegate对象执行。    Client调用Receiver,而不使用Delegate对象    2.    利用委派可以扩展功能:    例如:我们要建立一个LoggingList,功能与...

2018-06-18 20:45:14 1985

原创 Liskov Substitution Principle (LSP)与子类型多态

1.    子类型多态:    客户端可用统一的方式处理同类型的对象     2.    LSP:例如:    (1)java编译器的规则(静态类型检查):    a.    子类型可以增加方法,但不可删     b.    子类型需要实现抽象类型中的所有未实现方法    c.    子类型中重写的方法必须有相同或子类型的返回值     d.    子类型中重写的方法必须使用同样类型的参数    ...

2018-06-18 15:46:23 549

原创 java的参数多态与泛型

1.    类型变量:是一个无条件的标识符       泛型类:其定义中包含了类型变量2.    如果一个接口/方法声明了类型变量,则其是泛型的。3.    类型变量位于<>中,方便识别:        例如:                类型变量也是一种特殊的参数。    例1:    例2:      泛型只出现在编译阶段,运行时是没有泛型的      4.    泛型接口的两种...

2018-06-18 13:32:35 2241

原创 Overriding与Overloading(重写与重载)

1.    (Override)重写的函数:在继承时使用,需要完全同样的signature        在实际执行时调用哪个方法,在run-time时决定,因此其是动态的        若在子类中调用父类的方法,可采用super关键字2.    (Overload)重载:多个方法具有相同的名字,但有不同的参数列表或返回值类型         方便client调用,client可用不同的参数列表,...

2018-06-18 13:18:26 582

原创 ADT中的等价性:== VS equals,equals()与hashCode()的重写

1.    ADT是对数据的抽象,体现为一组对数据的操作       抽象函数AF:内部表示->外部表示       因此要基于抽象函数AF定义ADT的等价操作2.    ADT的等价性:    (1)现实中每个对象实体都是独特的    (2)所以无法完全相等,但有“相似性”    (3)而在数学中,绝对相等是存在的3.    保证等价性的三条方式:    (1)通过AF:AF若映射到同样的...

2018-06-18 13:02:50 290

原创 ADT的表示独立性,测试ADT的方法,不变量,RI与AF

1.    表示独立性    client使用ADT时无需考虑内部如何实现,ADT内部表示的变化不应影响外部spec与client    除非ADT的操作指明了具体的pre-condition和post-condition,否则不能改变ADT的内部    表示,因为spec规定了client和和implementer之间的契约。2.    测试ADT的方法:    (1)测试creators,pr...

2018-06-17 17:37:01 1953

原创 ADT操作的四种类型

1.    ADT操作分为:    a.    creators(构造器)    b.    producers(生产器),从旧的对象中创造新的对象    c.    observers(观察器),获得对象中的各种属性    d.    mutators(变值器),改变对象属性的方法2.    操作符的含义举例:3.    creator的特征:可以为构造函数或静态函数,而静态函数又被称为工厂方法...

2018-06-17 16:20:54 2750

原创 ADT与OOP:设计规约(specifications)

1.    前言       本文章的内容:       (1)理解方法的规约,理解其前置/后置条件与开发者和使用者的关系。

2018-06-17 12:42:11 866

原创 java随着遍历list,从中移除元素的方法

1.    在java中,若在使用for遍历的同时,对list进行remove操作,会由于各元素标号的变化,而跳过几个元素。       从而未达到“遍历”的目的。因此有两种解决方案:        (1)从list的尾部向前遍历,这样就避免了移除元素导致的标号的变化。        (2)利用java提供的迭代器Iterator类进行遍历。                      由于该迭代器...

2018-06-16 11:30:46 449

原创 Snapshot diagram:以code-level,run-time,moment的视角看软件构造

1.    Snapshot diagrams:       用于描述程序运行时内部状态的快照图。       其作用:        (1)便于程序员之间的交流        (2)便于刻画各类变量随时间变化的过程        (3)便于解释设计思路2.    Snapshot diagrams的具体画法:    (1)基本类型的值:通过常数来表示,其箭头为变量或object域对其的引用。  ...

2018-06-16 11:17:33 615

原创 java数据类型的Mutability与Immutability

1.    前言:    (1) 改变一个变量、改变一个变量的值,二者有何区别?         改变一个变量:将该变量指向另一个值的存储空间。        改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。    (2)“Change is a necessary evil.”变化是“罪恶”,但程序不能没有变化,         要尽量避免变化,来避免程序中的副作用    (3...

2018-06-16 10:41:58 644

原创 Java中的数据类型简介

1.    数据类型:    (1)基本数据类型(primitive types):        例如:           (2)对象数据类型(object types):        例如:    (3)其间的区别:        (4)对象类型形成层次结构:    所有非基本数据类型都是由object继承而来的:        所有除了object的类都有一个父类,特别是带有extend...

2018-06-15 16:25:44 272

原创 图解Git:一个软件配置管理工具(简介)

1.    Git 是由linux内核的开发者linus Torvalds于2005年发行的软件配置管理工具,用于管        理软件进化过程中的变化。        2.    Git 仓库:    (1)由三个部分组成:        a.    .git 目录:为本地的CMDB        b.    工作目录:为本地的文件系统        c.    暂存区(staging are...

2018-06-15 15:37:15 9231

原创 软件配置管理SCM和版本控制系统(VCS)

1.  几个基本概念       SCM:软件配置管理,用来追踪和控制软件的变化的任务。    SCI:软件配置项,软件中发生变化的基本单元(例如:文件)。    Baseline:基线,软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)        CMDB:配置管理数据库,存储软件的各配置项随时间发生变化的信息+基线。    Version:版本,为软件的任一特定时刻(Monment)...

2018-06-14 21:20:59 4245

原创 软件的生命周期与开发过程模型

1.    软件开发的生命周期(SDLC)(1)From 0 to 1:从无到有    Software Development Life Cycle (SDLC):   (2)From 1 to n:从有到好    软件在其生命周期中会有多个版本。2.    传统的软件开发过程模型(1)两个基本种类:线性过程(Linear)和迭代过程(Iterative)         存在的模型:     ...

2018-06-14 20:19:55 3883

原创 软件构造的质量指标

1.    软件系统的质量指标包括:外部质量因素和内部质量因素。    外部质量因素:使用是否简易,速度性能是否优秀等,其影响到    的是用户。而内部质量因素影响到的是软件本身和开发者。虽然    在结果上看,只有外部质量因素重要,但外部质量因素是取决于    内部质量的。2.    外部质量因素的种类:(1) 正确性(correctness)。关注有关软件是否按照预先定义    的“规约”执行...

2018-06-14 18:04:55 647

原创 软件构造的多维度构图

1.    从三个维度看软件系统的构成。2.    从八个视图看软件系统的构成。(1)Build-time Views    Build-time,即构造阶段,有以下流程    idea->requirement->design->code->installable/executable package.    包括以下视角:    (a)Code-level view:即...

2018-06-13 22:56:47 401

原创 Java中创建Thread的方式-Java中Thread类的使用

1.    前言线程与进程的理解详见:https://blog.csdn.net/qq_38969070/article/details/80424079多线程处理(Multithreaded execution)是Java平台的基本特征:(1)    每个应用至少有一个线程。(2)    从程序员的角度来看,你在应用中开始时,应该只有一个线程,             称之为主线程(main t...

2018-05-23 22:02:31 3378

原创 理解Process(进程)与Thread(线程)的特点,以及之间的联系。

1.     Process的一些特点:(1)    进程是一个运行程序的实例,是一个私有空间,与相同机器上的其他进程来说,是彼此隔离的。(2)

2018-05-23 21:13:32 3366

转载 各种度中心性的定义与区别

作者:何燕杰 链接:https://www.zhihu.com/question/22610633/answer/143644471 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。ps:知识储备度中心性(degree)设想一下,你在微信上有个账号,那么是不是意味着微信好友数量越多,那么你的社交圈子越广?(假设都是真实好友,不考虑微商神马的奇葩情况)比如我有20个好...

2018-04-16 15:04:56 7668

空空如也

空空如也

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

TA关注的人

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