一.问题的提出我常常在思考一个问题,我们如何能设计出高水平、高质量的软件出来。怎样是高水平、高质量的软件?它应当是易于维护、易于适应变更、可重用性好的一个系统。如何做到这一点呢?答案当然是“低耦合、高内聚”了。低耦合就是软件在构造的时候,各个模块、各个功能、各个类都不会过度依赖于它周围的环境。只有这样,才能使我们的模块(功能、类)在周围发生变更时不受影响,做到易于维护和易于适应变更。正因为如此,也使它更易于重用到其它功能类似的环境中,提高了重用性。高内聚则
系统 2019-08-29 21:59:02 2056
3)职责驱动设计和领域驱动设计前面我提到,当我们尝试写一些复杂功能的时候,我们把功能分解成一个个相对独立的函数。但是,应当将这些函数分配到哪个类中呢?也就是系统中的所有类都应当拥有哪些函数呢?或者说应当表现出哪些行为呢?答案就在这里:以职责为中心,根据职责分配行为。我们在分析系统时,首先是根据客户需求进行用例分析,然后根据用例绘制领域模式和分析模型,整个系统最主要的类就形成了。通过以上分析形成的类,往往和现实世界的对象是对应的。正因为如此,软件世界的这些类
系统 2019-08-29 21:58:56 2056
本文是本人毕业时发表的论文.原文地址:http://www.ahcit.com/lanmuyd.asp?id=1972摘要文章提出一种集混沌加密技术,小波变换,扩频技术为一体的彩色图像水印算法。该算法先将水印信息通过混沌序列加密,再进行扩频调制弱化水印信息,然后在彩色载体图像绿色分量上进行小波变换,利用人类视觉模型(HVS)特性,在低频系数上嵌入处理后的水印信息。实验结果和攻击测试表明,该算法具有很好的鲁棒性以及安全性。关键词扩频;鲁棒性;盲水印;混沌序列
系统 2019-08-29 21:57:46 2056
CriteriaQuery通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,CriteriaQuery可以看作是传统SQL的对象化表示,如:Criteriacriteria=session.createCriteria(User.class);criteria.add(Expression.eq("name","Erica");criteria.add(Expression.eq("sex",newInteger(1)));这里的criteri
系统 2019-08-12 09:30:03 2056
偶然发现了for…else…这种用法,使用这个实现了break跳出嵌套的for循环In[31]:foriinrange(1,5):...:forjinrange(5,10):...:print(i,j)...:ifj==6:...:break...:else:...:continue...:break1516for…else…的运行逻辑是当for循环正常执行结束就会运行其else语句,如果中途break的话,就不会执行else中的内容上面的代码实现了内存f
系统 2019-09-27 17:57:18 2055
在爬虫前,需要知道这两个知识点!!!字符串转字节类型str-->bytesencode()字节类型转字符串bytes-->strdecode()1.以一个简单的例子讲解urllib.request方法read读取相应内容,内容geturl获取请求的urlgetheaders获取头部信息getcode获取状态码readlines按行读取,返回列表,都是字节类型1.1获取百度的网页代码importurllib.requesturl="https://www.b
系统 2019-09-27 17:57:13 2055
编码0,12进制,8,16进制;ACSII是127个不到1个byte=8bit由于时间发现欧洲使用第8个bit,有256个字符,到了中国不足够。所以中国人gb2312,gbk开发。。为了python程序方便。。。不能说python,世界和平,规定了unicode(在内存运营)unicode不人性化,什么都要占2个byte16个bit,然后utf-8出现了机会。。。。中文3个byte,英文1个byte..#####################"aaa".
系统 2019-09-27 17:56:48 2055
前言玩ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍:字符串与十六进制转换例如百度ctf12月的第二场第一个misc666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D比较简单的一种做法就是直接调用字符串的.decode('hex')解密即可,但如果不用这个函数你会怎么解呢?一种思路就
系统 2019-09-27 17:55:09 2055
Mac中python多版本切换管理step1.$sudovi~/.bashrcstep2.命令行中输入aliaspython2=’/…/Versions/2.x/bin/python2.x’aliaspython3=’/…/Versions/3.x/bin/python3.x’Step3.刷新$source~/.bashrcStep4、验证在终端输入python2即代表是Python2.x版本,输入python3即代表是Python3.x版本。Mac设置默
系统 2019-09-27 17:55:04 2055
mock简介mock原是python的第三方库python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装Mock这个词在英语中有模拟的意思,因此我们可以猜测出这个库的主要功能是模拟一些东西准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为既然mock已经被整合到了unittest单元测试框架中,可想而知mock的目的就是为了让我们更好的进行测
系统 2019-09-27 17:54:56 2055