- 博客(6)
- 收藏
- 关注
原创 软件构造:多线程中interrupted和isinterrupted区别及sleep时的线程中断
在多线程中若想中断一个线程T,则需要在其他线程中调T.interrupt()方法。然而这样并不会让线程直接结束,在T线程中我们还需要有判断T是否被中止的代码,其中就有两种返回true与false来标明线程是否被中断过的方法interrupted()和isinterrupted()。简单说一说他们的区别:interrupted()是static的(是类方法),返回的是当前线程的中断标志;isinterrupted()不是static的(是实例对象方法),返回的是滴具体线程的中断标志。这表明,若我们在另外
2020-07-11 22:37:45 397
原创 软件构造:logging记录异常日志
在软件开发过程中有些异常需要在特定环境下才能够触发,而且在多线程的情况下有些异常或bug无法重现,这时就需要我们记录相关日志,以快速定位相应代码。JAVA库中自带了logging库文件,现在来简单讲一讲怎么用logging库规范地记录日志到文件中。首先为了按照我们设定的格式来记录日志,就需要先创建我们自己的日志格式类MyFormatter,该类继承原有的Formatter,并重写Stringformat(LogRecord record) 方法,其中record就是我们日志的基本信息,同时该方法返回
2020-06-30 13:58:27 446
原创 软件构造:JUnit抽象类和父类
在创建一个接口后,我们可能会有很多不同的类来实现该接口,同时这些类中对于各方法的具体实现各有差异,但这不变的是这些方法的具体实现的前置条件(pre-condition,参数类型和规范等)和后置条件(post-condition,返回值的类型和规范等)以及功能都遵循在接口中的声明(specification,简称Spec)。那么在编写JUnit测试的时候,是不是我们要对这些类的每个方法都编写测试呢?在编程时,我们通常遵循的原则都是在写完每个方法的Spec后,不先编写具体实现代码,而是直接根据Spec来编写J
2020-06-29 13:45:44 553
原创 软件构造:用接口组合实现面向接口编程并提高代码复用度
在JAVA编程中,我们为了提高代码的复用度和理清各个类的关系,通常采用继承和委托混合使用的编程方式,同时采用接口组合的方式来扩展每个类的行为。这同样有利于我们面对接口编程。我们可以看一看JAVA中一个经典的动物类对象案例:现在我们有一个Animal类,该类只存储某某个动物的名称name,同时只有一个方法eat()。public class Animal { String name;//动物名称 public Animal(String name) { this.name=name;
2020-06-28 15:56:55 311
原创 软件构造:将HashMap数据按Value排序
在写实验程序时,需要将HashMap按照Value值进行排序。首先我们需要了解一下HashMap的数据存储方式。按我个人的理解,可以将HashMap就看做一个根据Key值的hashCode进行散列的散列表(哈希),而每个hashCode对应一个K-V对,这个K-V对和我们在C语言中的struct结构体类似,在JAVA中可以看做一个对象中存储了两个值,这个对象就叫做Entry。HashMap的内部方法entrySet()可以将其存储的Entry转化为集合Set形式存储,获得了这个Set之后,就可以将其加入
2020-06-24 13:53:13 494
原创 软件构造:JAVA学习集合类Set转化为Array类型的toArry类型
在学校实验中,需要对这两个不同类型进行转化,但转化之后发现原来的Set中的对象将被转化为Object类型,用强制类型转化,将抛出异常。产生异常Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lfirst.Cat; public static vo...
2020-05-06 18:55:43 283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人