编程技术

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

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

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

编程技术

使用JSTL开发jsp自定义标签开发

借助于jstl,我们可以方便的开发自定义标签,而不需要使用sun的jsptagapi本文以开发一个简单的if标签为例首先编写标签执行类,最重要的一点,继承javax.servlet.jsp.jstl.core.ConditionalTagSupport;代码简单的返回了true.大家可以加入自己的业务逻辑代码packagettt;importjavax.servlet.jsp.JspTagException;importjavax.servlet.jsp.

系统 2019-08-12 09:30:27 2178

编程技术

认识项目管理

目前,随着IT项目规模和复杂性不断提高,尤其是一个软件项目,它成功的关键点已从原来的技术上转移到管理上。目前,政府、企业、大公司包括一些小公司和个人也逐渐意识到项目管理的重要性,但是现今国外内项目成功率都不高。据斯坦迪什咨询集团的调查数据,美国1995年所有IT技术项目平均成功率只有16.2%,到1998年,这个数据也仅仅达到了26%,2006年,成功率为36%,而国内信息技术项目的成功率则还要低很多。不成功的原因很多,个人认为主要问题是,管理人员的“管理

系统 2019-08-12 09:30:27 2178

编程技术

jFreeChart(动态web应用)

JFreeChart1.0.2的动态应用,根据数据库中的数据生成饼图:(部分来自网页)本文用的是JFreeChart1.0.2(根据版本不同需要根据类修改部分代码)下载:http://www.jfree.org/jfreechart/index.html下载后解压jfreechart-1.0.2.zip,会发现在lib下有几个jar文件,本文只介绍生成饼图的例子:1,首先将lib下的jcommon-1.0.5.jar和jfreechart-1.0.2.ja

系统 2019-08-12 09:30:12 2178

编程技术

UNIX环境高级编程 守护进程

相关函数列表//syslog函数#includevoidopenlog(constchar*ident,intoption,intfacility);voidsyslog(intpriority,constchar*format,...);voidcloselog(void);intsetlogmask(intmaskpri);//除syslog,很多平台还提供它的一种变体来处理可变参数列表#include#incl

系统 2019-08-12 09:29:37 2178

编程技术

为什么要进行数据同步

转载:http://java.chinaitlab.com/line/779590.htmlJava中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些

系统 2019-08-12 09:29:27 2178

Python

Python 数据结构之队列的实现

Python队列Queue队列是一种先进先出(FIFO)的数据类型,新的元素通过入队的方式添加进Queue的末尾,出队就是从Queue的头部删除元素.用列表来做Queue:queue=[]#初始化一个列表数据类型对象,作为一个队列defenQ():#定义一个入栈方法queue.append(raw_input('EnterNewString:').strip())#提示输入一个入队的String对象,调用Str.strip()保证输入的String值不包含

系统 2019-09-27 17:56:49 2177

Python

Python 文件处理注意事项总结

Python文件处理注意事项总结文件处理在编程中是常见的操作,文件的打开,关闭,重命名,删除,追加,复制,随机读写非常容易理解和使用。需要注意的是文件的安全关闭,采用with语句轻松便捷:withopen(pathname,”r”)asmyfile:do_some_with(myfile)1.CSV的文件处理csv模块可以很好地处理csv文件,而Pandas模块则可以较好的处理大型的csv文件,还可以处理HTML等,并提供分块处理。2.XML的文件处理对于

系统 2019-09-27 17:56:11 2177

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 2177

Python

LeetCode刷题笔记78:子集(Python实现)

题目描述:给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入:nums=[1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]SOLUTION1:迭代法比较常规的迭代法思路,循环nums数组,每次访问其中元素,将其转化为数组并加到result二维数组当中。CODE:classSolution:defsubsets(self,nums):'''n

系统 2019-09-27 17:55:12 2177

Python

windows上安装python2和python3虚拟环境

一、windows上安装1.安装python分别安装了Python2和Python3python3.7默认安装目录C:\Users\Administrator\AppData\Local\Programs\Python\Python37安装目录里的python.exe,pip.py自定是否修改2.安装virtualenv和virtualenvwrapper-winpip2installvirtualenv2-ihttps://pypi.douban.com

系统 2019-09-27 17:55:05 2177

Python

python中的break、continue、exit()、pass全面解析

1、breakbreak是终止本次循环,比如你很多个while循环,你在其中一个while循环里写了一个break,满足条件,只会终止这个while里面的循环,程序会跳到上一层while循环继续往下走以简单的for循环来举例foriinrange(10):print("-----%d-----"%i)forjinrange(10):ifj>5:breakprint(j)这里遇到j>5的时候第二层的for就不循环了,继续跳到上一层循环2、continueco

系统 2019-09-27 17:54:11 2177

Python

经验拾忆(纯手工)=> Python-ORM之peewee:插件拓展(三)

声明本篇主要讲,关于peewee的一些拓展:包括新式CRUD-数据导入导出-信号-数据库反向生成模型。扩展官档:http://docs.peewee-orm.com/en...作者友好与peewee提问方式当我用到拓展模块的新CRUD时,文档给的内容少之又少。因为拓展的新CRUD是真的方便好用,和(PyMongo的用法差不多)但是功能却不全。并且与我们第二篇,讲的CRUD又不兼容。所以在难以取舍之际,我选择了提问。peewee作者在官档中详细说到。如果你有

系统 2019-09-27 17:52:46 2177

Python

第5课 python列表和字典

到今日,已经去到python的第5课了,是不是很激动,已经对Python产生兴趣了,感觉python人家说胶水语言,比其他语言都简单,我还是觉得学习python再去学其他可能会更加高效。今日我们来学习列表和字典。这2个东西跟之前说的3数据类型有什么区别(字符串,整数int,浮点数float)有什么关系?这个还真是别疑惑。我们从变量这块去说吧。name="samly71"####这个name赋值字符串samly71这串;number=111####numbe

系统 2019-09-27 17:51:24 2177

Python

Python3.4 tkinter,PIL图片转换

先给大家分享一下全部代码importosfromPILimportImageimporttkinterimporttkinter.filedialogimporttkinter.messageboxclassWindow():def__init__(self):self.root=root=tkinter.Tk()self.menu=tkinter.Menu(root)self.submenu=tkinter.Menu(self.menu,tearoff=

系统 2019-09-27 17:50:59 2177