软件构造(java)
xydoo
这个作者很懒,什么都没留下…
展开
-
彻底解决java多窗口程序,主窗口需要等待子窗口执行结果的问题
这几天一直在写GUI,后来遇到一个问题,就是当程序打开多个窗口,而主窗口需要等待子窗口的执行结果后才能向下执行时,出现了一点问题。如果子窗口是用JFrame写的,那么主窗口不会等待子窗口运行结束,主窗口会直接执行子窗口下面的语句。请看示例:import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax原创 2020-05-27 16:47:39 · 1289 阅读 · 5 评论 -
关于java正则表达式匹配时进入死循环或者栈溢出的可能解决办法
最近在写java程序时遇到了文本处理问题。明明自己的程序写的没有什么问题,但是却进入了死循环或者是栈溢出。下面给出大家几个可能的解决方法尽量少使用+或者*。虽然这两种符号用起来很方便,但是在匹配时是递归进行匹配的,所以开销会比较大。使用Pattern.compile()来构建新的Pattern类对象,这样做性能会比直接使用Matcher类要好。想办法简化自己的正则表达式。如果文本的长度过长,建议可以先手动进行简单的文本分割。比如先按段落分开,或者划分为比较短的文本块。之后再使用正则表达式去匹配原创 2020-05-15 14:21:33 · 1493 阅读 · 0 评论 -
java状态模式例子+分析
状态模式适用于自己的程序或者某个对象有几种不同的状态,每个状态下都有不同的操作,这样的情况下我们可以采用状态模式。为什么要采用状态模式在我们介绍状态模式之前,我们先想一想我们会怎么写。最正常的想法无非是在每个方法里面先判断当前对象处于什么状态,也就是说,要采用大量的if else语句或者switch语句。而这样可维护性上面就比较差,试想,如果后期我们需要增添或者减少一个状态,是不是每一处判断对...原创 2020-04-26 09:53:32 · 1079 阅读 · 0 评论 -
对java接口的理解
我们知道java里面已经有了继承,子类可以继承父类。那java里面为什么还要定义接口呢。我觉得其中一个原因是一个类只能继承一个类,而它却可以实现多个接口,这样就弥补了一部分不足。那么,怎么理解接口这个概念呢。接口在物理意义上是指统一对外的一种标准,是为了实现功能多样化的。以我们生活中常用的插头为例。插头的功能是充电,但我可以实现多种功能:给电脑供电,给洗衣机,给冰箱等等。只要满足这个接口的标准我...原创 2020-04-04 21:35:58 · 197 阅读 · 0 评论 -
关于ArrayList迭代器遍历删除的分析
在java的List遍历删除时,如果我们不采用迭代器就会出现很令人烦恼的情况。请看如下代码示例:List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); for(int i = 0; i < ...原创 2020-03-22 11:16:02 · 372 阅读 · 0 评论 -
Git的分支
本文是基于Github Desktop来进行一些演示以及处理的,首先力推Github Desktop的原因是它操作简单,对使用者十分友好。如果对这款软件不熟悉的话建议先看一下这篇博客:GitHub Desktop图文教程里面有相当详细的操作介绍。而本文主要介绍的是对Git项目管理策略中分支的理解。分支的概念如上图所示,这是一个软件构造过程中分支的示例。有5条横线,每条横线代表一个分支。...原创 2020-03-13 22:04:38 · 115 阅读 · 0 评论 -
凸包算法的实现思路
背景由于最近在做软件构造的实验,里面的凸包算法可真是写的人头大。这里就简单分析一下凸包算法的思路,代码的话暂时先不贴,以后可能有补充。问题介绍凸包算法是给定由一些固定坐标的点构成的点集,找出点集中的尽可能少的一些点使这些点连起来构成的多边形可以把所有的点包含在里面。即是凸包算法的目的。如上图所示,就是凸包算法的一个示例。凸包算法的思路选点首先我们先把这些点都选出来。选择第一个点...原创 2020-03-06 11:23:03 · 785 阅读 · 0 评论 -
java的文件读写
近来由于要用java写代码,用到了java的文件读写。看了看许多方法都比较乱。因为java的文件流有三四种。这里就简单总结一下一种实用性比较广的读写文件的方法:按行读取和也不说太多。毕竟对于初学者而言,介绍太多方法容易让人迷惑。我们首先看一下需要用到哪些包:import java.io.BufferedReader;//用来按行读取的包import java.io.FileInputStr...原创 2020-03-01 12:12:32 · 162 阅读 · 0 评论