- 博客(9)
- 收藏
- 关注
原创 保证线程安全方法
线程安全是编程过程中很容易被忽略的问题,而一旦出现线程安全问题,会导致程序dubug过程变得异常艰难,这里总结了几种保证线程安全的方法:1、拒绝多个线程访问同一个变量,也就是将多线程任务变成单线程,但这会大大降低程序的运行效率,这显然是不可取的。2、使用immutable变量,immutable变量由于其不可修改的特性,他们往往都是线程安全的,这也就是要求各线程仅能读变量而不能写。但这种约束也往往是不实际的,很少有程序不会修改变量的值。3、使用java提供的线程安全的类,java提供了一些线程安全的类
2020-07-11 20:58:29
609
原创 面向可维护的设计模式
可维护性是程序的一个重要指标,良好的可维护性可以帮助程序更快,更容易的改变以适应新的需求,在面向可维护性的编程过程中,传统的模式显然不那么实用,这里总结了几个更好的设计模式:1、代理模式:当某个对象比较重要,不希望被直接访问到时,就可以采用这种模式,这种模式的关键在于使用一个代理类继承与实际被访问的类相同的接口,在代理类里调用实际被访问类的方法,实现代理模式2、观察者模式:观察者模式可以在被观测者发生变化时立刻通知所有观测者,而实现观察者模式的关键就是在被观测者的mutator方法中将消息传递给观测
2020-07-11 20:48:42
200
原创 工厂模式
当我们不希望向客户端暴露创建对象的逻辑时,工厂模式是个好的选择。工厂模式通过一个聚合了其他不希望被暴露的类的类,在其内部调用其他类的构造函数,将其封装起来,给客户端使用。举例来讲。我们有车vehicle这个接口,并通过了bus和car类实现了这个接口。当我们建立bus类和car类时,并不想将他们的构造方法暴露给客户端,就可以使用一个factor类,在其内部调用car和bus的构造方法,把这个类给客户端,用户使用他构造car和bus。public interface vehicle{...}publi
2020-07-10 19:16:37
127
原创 装饰器模式
当我们建立了一个类后,我们可能需要为其添加一些功能,而这些功能又往往会是多个这样的类都需要的。如果我们仍然使用传统的建立子类的方法,必然导致许多代码被一次次的重复书写,而且即使在我们完成这些类后,很难对其进行修改。既然新建子类的方法太过死板,我们就考虑是否可以将这些新的功能“摘”出来,变成一个个零件,当我们需要他的时候便将其加在我们的类上,这样之后我们如果需要改变功能,也只需要改变零件,不需要对我们的类重写。这样我们就想到了装饰器模式。适配器模式的关键就是通过一个抽象类,实现我们所要添加功能的接口,同时
2020-07-10 18:57:52
79
原创 构建immutable类
不变性是一个重要的设计原则,设计一个immutable类可以保证一个类是安全的,不会被其他类有意或无意的修改,从而保证其内部数据的安全。而如何构建一个immutable类有一下几个关键:1、对类使用final修饰,为了防止子类在继承一个immutable类时改变了其属性,是其变得mutable,我们要限制其他类继承immutable类。2、对field使用final和private修饰,使用private可以保证数据只在这个类中有效,不会被其他类使用,而使用final可以保证数据不会被修改,当被设置后就
2020-07-09 16:20:05
202
原创 通过接口组合实现局部共性特征的复用
在面向对象的编程中,我们会设计许多的ADT,每个ADT分别执行不同的功能。但在设计这些ADT时,不免要考虑不同的ADT之间存在着相同的方法,如何将这些相同的方法实行复用是避免重复,加快效率的关键。通过接口组合实现局部共性特征的复用是一种简单有效的进行复用的方法。举例来讲,我们希望实现一个可以复用的管理系统,这个系统可以同时被航班管理系统,铁路管理系统和课程管理系统,内存管理系统复用。这四个系统之间存在着一些方法,这类方法可以被其中几个系统公用,但并非全部系统都可以使用,我们如果将这些方法全放在子类的具体实
2020-07-08 15:37:35
351
原创 正则表达式的使用
正则表达式可以用于检测输入文档的格式是否符合规范,并将其中的信息存入相应数据类型中。在java中若想使用正则表达式,需要引入`import java.util.regex.*;`在匹配中,首先定义格式化字符串`String pattern = “...”;Pattern r = Pattern'.compile(pattern);Match m = r.match(str); //str为待检测的字符串`而后通过m.find()判断是否找到所需字符串,通过m.group()将字符串中的信息读出。
2020-06-17 16:40:33
181
原创 Java 调用HashMap的set方法
调用HashMap方法时需要重写equal方法和hashCode方法HashMap使用hashCode方法判断储存位置,如果不重写hashCode方法会导致即使两个相等的变量储存进map仍会出现两个值。例如对于Person类,假设我们认为同名的人为同一个人,在使用map时,就需要判断两个人名是否相等并储存。重写hashCode方法: @Override public int hashCo...
2020-04-12 17:40:44
1119
原创 HIT-CSAPP大作业
计算机系统大作业题 目 程序人生-Hello’sP2P专 业 计算机科学与技术学 号 1180300814班 级11803008学 &nbs...
2019-12-30 16:46:16
217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人