3.可变更性前面我提到了,软件的变更性是所有软件理论的核心,那么什么是软件的可变更性呢?按照现在的软件理论,客户对软件的需求时时刻刻在发生着变化。当软件设计好以后,为应对客户需求的变更而进行的代码修改,其所需要付出的代价,就是软件设计的可变更性。由于软件合理地设计,修改所付出的代价越小,则软件的可变更性越好,即代码设计的质量越高。一种非常理想的状态是,无论客户需求怎样变化,软件只需进行适当地修改就能够适应。但这之所以称之为理想状态,因为客户需求变化是有大有
系统 2019-08-29 21:58:57 1830
1:mvn构建一个web工程[img][/img]resources文件中定义系统资源文件包括applicationContext.xml和dispatcher-servlet.xml文件java文件中是.java文件static文件中包括cssimgjsconfig.properties文件jsp中主要包含系统个模块的试图文件tags是自定义标签文件tiles是模板文件login.jsp登陆页面2:pom.xml
系统 2019-08-12 09:30:24 1830
使用List和Map有很多共性,比如说不能再1方设置inverse="true"不同的是,list可以保留元素的顺序,这个使通过一个idx字段来实现的,比如说Team和Student的1对多关系,我们给team加入学生的时候,需要记录加入的顺序,这时候我们可以使用list方式,并在student表中新增加一个idx字段(但在Student实体类中不定义idx属性)数据库结构:createtableteamList(idvarchar(32),teamnam
系统 2019-08-12 09:29:27 1830
一:背景CentOS7里内置了一些应用,比如python2。现在需要在系统中安装python3。二:实验环境CentOS7系统中一个普通用户(root也无所谓,如果你愿意的话三:实验步骤准备工作(1)更新yum源。yum是基于RedHat的Linux系统中常用的包管理工具,可以使用yum安装、更新、移除软件安装包。使用sudoyum-yupdate,-y的主要作用就是省略确认步骤,详情见manyum。(2)安装yum-utils。yum-utils是拓展y
系统 2019-09-27 17:56:06 1829
学了面向对象三大特性继承,多态,封装。今天我们看看面向对象的一些进阶内容,反射和一些类的内置函数。一、isinstance和issubclassclassFoo:passclassSon(Foo):passs=Son()#判断一个对象是不是这个类的对象,传两个参数(对象,类)print(isinstance(s,Son))print(isinstance(s,Foo))#type更精准print(type(s)isSon)print(type(s)isFo
系统 2019-09-27 17:54:00 1829
1.基础内容[](中括号)用于描述正则表达式中的字符集,可以通过向字符集内部输入字符来自定义匹配的内容。importreregex1=re.compile('[ABC]')message1="Hello.ThisisABCclub.Amanwillserveyouthen."print(regex1.findall(message1))输出:[‘A’,‘B’,‘C’,‘A’]正则表达式会根据中括号里的任意一个字符进行匹配。如果想要匹配的字符很多,例如所有的
系统 2019-09-27 17:52:45 1829
使用threading.Event可以实现线程间相互通信,之前的Python:使用threading模块实现多线程编程七[使用Condition实现复杂同步]我们已经初步实现了线程间通信的基本功能,但是更为通用的一种做法是使用threading.Event对象。使用threading.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到线程对象中,Event默认内置了一个标志,初始值为False。一旦该线程通过wait()方法进入等待状态
系统 2019-09-27 17:50:54 1829
num1=-1whilenum1<1ornum1>500:print("请输入一个整数(1-500):")num1=int(input())dividend=[3,5,7,9,11,13,15]fornum2individend:ifnum1%num2==0:print(f"{num1}被{num2}整除")else:print(f"{num1}不能被{num2}整除")请输入一个整数(1-500):2900请输入一个整数(1-500):-13请输入一个整
系统 2019-09-27 17:50:51 1829
Python窗体输入、展示并存储数据利用python的tkinter进行窗体开发,可以实现输入框,以及利用get函数获取输入框的数据,并将这些数据存储到本地,如果利用数据库,也可以把窗体获取的数据导入到数据库中fromtkinterimport*importtkinter.messageboxasmessageboxroot=Tk()root.title("信息输入框")root.geometry('300x300')input1=Label(root,t
系统 2019-09-27 17:50:46 1829
pickle包的dump函数和load函数分别实现了数据的序列化和反序列化。一、dump()方法pickle.dump(obj,file,[,protocol])注释:序列化对象,将对象obj保存到文件file中去。参数protocol是序列化模式,默认是0(ASCII协议,表示以文本的形式进行序列化),protocol的值还可以是1和2(1和2表示以二进制的形式进行序列化。其中,1是老式的二进制协议;2是新二进制协议)。file表示保存到的类文件对象,f
系统 2019-09-27 17:47:49 1829