编程技术

大话重构连载15:采用Mock技术完成测试

第五次重构我们引入了数据库的设计,用户信息要从数据库中读取,问候语库存储在数据库中,并支持添加与更新。数据库的引入使自动化测试变得困难了,因为数据状态总是变化着的,而这种变化使得测试过程不能复现,这是我们不愿看到的。因此,我们在设计时将业务与数据库访问分离,形成了UserDao与GreetingRuleDao。此时,我们的设计应当遵从“依赖反转”原则,即将UserDao与GreetingRuleDao设计成接口,并编写它们的实现UserDaoImpl与Gr

系统 2019-08-29 21:59:03 2063

编程技术

SSD04 Exercise04 个人解答

ProgrammingandHeuristicEvaluationThisexercisehastwoparts:Aprogrammingpart,inwhichyouwillcreateaVisualBasicformthatrespondstotheuser'sactionsratherthanmerelydisplayinginformationAHeuristicEvaluationpart,inwhichyouwillusetheheuristi

系统 2019-08-29 21:57:59 2063

编程技术

XSS 前端防火墙 —— 天衣无缝的防护

上一篇讲解了钩子程序的攻防实战,并实现了一套对框架页的监控方案,将防护作用到所有子页面。到目前为止,我们防护的深度已经差不多,但广度还有所欠缺。例如,我们的属性钩子只考虑了setAttribute,却忽视还有类似的setAttributeNode。尽管从来不用这方法,但并不意味人家不能使用。例如,创建元素通常都是createElement,事实上createElementNS同样也可以。甚至还可以利用现成的元素cloneNode,也能达到目的。因此,这些都

系统 2019-08-12 09:30:32 2063

编程技术

Qt4.8.1 帮助文档无效 用不了 怎么办?

Qt大名鼎鼎的是他的帮助文档非常好,无奈自然状态下安好qt4.8.1后竟然用不了,连输入Widget尽然都查找不到。以前qt4.8.0下,是可以的。不需要配置的,这里要先配置一下:点QtCreator----工具------选项------(左侧栏)帮助-----(右侧栏)文档-----点击添加,会自动打开QtSdk安装的位置。找到Documentation,选择qt.qch(56.2M),就可以了。或者将里面的所有文件都添加进去也可以。上张图:Qt4.8

系统 2019-08-12 09:29:59 2063

编程技术

Hibernate Map映射的composite-index案例

数据库结构CREATETABLE`team3`(`id`varchar(50)NOTNULL,`name`varchar(50)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=gb2312;CREATETABLE`member3`(`id`varchar(50)NOTNULL,`name`varchar(50)defaultNULL,`age`varchar(50)defaultNULL,`

系统 2019-08-12 09:29:54 2063

Python

Python 分析天气,告诉你中秋应该去哪里

中秋佳节以到,不知道各位小伙伴儿有没有想好去哪里玩呢。不过说实在的,每到节假日,到处都是人山人海,那句“我动也不能动”,还不时的出现在我的耳畔呢。但是又说回来,假期出游,除了人的因素外,天气的因素是不是也要考虑下呢,今天,我们就带大家来看看,中秋小长假,哪些地方适宜出游。获取数据数据的获取,就从中国天气网站上直接抓取,网络上的一些API,有的信息不是很全,只能获取最近3天的数据,有的又需要付费,还不如自己抓来的痛快。http://www.weather.c

系统 2019-09-27 17:57:15 2062

Python

python2爬取百度贴吧指定关键字和图片代码实例

目的:在百度贴吧输入关键字和要查找的起始结束页,获取帖子里面楼主所发的图片思路:获取分页里面的帖子链接列表获取帖子里面楼主所发的图片链接列表保存图片到本地注意事项:问题:在谷歌浏览器使用xpathhelper插件时有匹配结果,但在程序里面使用python内带的xpath匹配却为空的原因。原因:不同服务器会对不同的浏览器返回不同的数据,导致在谷歌浏览器看到的和服务器返回的有区别解决方法:使用IE浏览器的User-agenet,而且越老的版本,报错几率相对越小

系统 2019-09-27 17:57:03 2062

Python

python中几个常见的魔法方法

首先,什么是魔法方法呢?在python中方法名如果是xxxx()的,那么就有特殊的功能,因此叫做“魔法”方法。__init__()方法当一个实例被创建的时候调用的初始化方法,在创建对象时默认调用。__init__()方法中默认有一个参数名字为self,如果在创建对象时传递了2个参数,那么__init__()方法除了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)。之前我们是这样给对象添加属性的:classStudent:pa

系统 2019-09-27 17:56:52 2062

Python

因为Python的这3个优点,我的薪资涨了一倍

如果你对数据分析有所了解,一定听说过一些亲民的工具如Excel、Tableau、PowerBI等,都能成为数据分析的得力助手。但它们的不足也是显而易见的:操作繁琐,复用性差,功能相对局限单一。怎么解决呢?——PythonPython有很多优点,如果你能很好的运用到工作中,会发现工作效率大大提升,涨薪也是再正常不过的事情。Python优点一:“流程可控,工作高效”举个例子,Excel做分析的过程:定位空值-删除空值-修改数据格式-去除异常值-公式计算-数据透

系统 2019-09-27 17:56:50 2062

Python

python常用知识梳理(必看篇)

接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n'等特殊字符的两种方式:a)利用转义字符‘\'b)利用原始字符‘r'printr'c:\now'2)单行注释,使用一个#,如:#helloPython多行注释,使用三个单引号(或三个双引号),如:'''hellopythonhelloworld'''或"""hellopythonhelloworld"""另外跨越多行的字符串。也可以使用三个单引号或三个双引号,如:

系统 2019-09-27 17:56:22 2062

Python

详解使用pymysql在python中对mysql的增删改查操作(综合)

这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结:先查阅数据库:现在编写源码进行增删改查操作,源码为:#!/usr/bin/python#coding:gbkimportpymysqlfrombuiltinsimportint#将MysqlHelper的几个函数写出来defconnDB():#连接数据库conn=pymysql.connect(host="localhost",user="root",passwd=

系统 2019-09-27 17:56:04 2062

Python

python中bs4.BeautifulSoup的基本用法

导入模块frombs4importBeautifulSoupsoup=BeautifulSoup(html_doc,"html.parser")下面看下常见的用法print(soup.a)#拿到soup中的第一个a标签print(soup.a.name)#获取a标签的名称print(soup.a.string)#获取a标签的文本内容print(soup.a.text)#获取a标签的文本内容print(soup.a["href"])#获取a标签的href属性

系统 2019-09-27 17:55:49 2062

Python

python实现递归查找某个路径下所有文件中的中文字符

本文实例为大家分享了python实现递归查找某个路径下所有文件中的中文字符,供大家参考,具体内容如下#-*-coding:utf-8-*-#@description:#@author:#@created:2018/7/21importreimportsysimportosreload(sys)sys.setdefaultencoding("utf8")deftranslate(str):out=set()line=str.strip().decode('u

系统 2019-09-27 17:55:46 2062

Python

python的types的使用

types.MethodType(第一个参数是要绑定的方法,第二个参数是要绑定的对象,第三个参数是类名(可省略))例如:importtypesclassperson():pass##为对象动态增加成员函数defjoin_age(self,age):self.a=agep=person()p.join_age=types.MethodType(join_age,p,person)

系统 2019-09-27 17:55:17 2062

Python

详解Python 切片语法

Python的切片是特别常用的功能,主要用于对列表的元素取值。使用切片也会让你的代码显得特别Pythonic。切片的主要声明如下,假设现在有一个list,命名为alist:alist=[0,1,2,3,4]切片语法的基本形式为:alist[start:stop:step]可以看出对于列表的切片操作有三个参数,分别为:start:起始位置stop:终止位置step:步长三个参数都是可选参数,意义为list的下标,即index。step参数默认值为1。表现形式

系统 2019-09-27 17:54:32 2062