编程技术
文章平均质量分 72
wangxin0314
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。
展开
-
基于webdriver的web UI自动化测试框架(系统架构+测试脚本应用架构)
基于webdriver的web UI自动化测试框架(系统架构+测试脚本应用架构)自动化测试系统及应用架构原创 2015-12-08 16:32:10 · 13659 阅读 · 28 评论 -
SpringMVC 使用JSR-303进行校验 @Valid
SpringMVC 使用JSR-303进行校验 @Valid使用注解一、准备校验时使用的JARvalidation-api-1.0.0.GA.jar:JDK的接口;hibernate-validator-4.2.0.Final.jar是对上述接口的实现;log4j、slf4j、slf4j-log4j 二、编写需要校验的bean转载 2016-07-23 15:57:51 · 431 阅读 · 0 评论 -
spring mvc 中使用spring的validator
前面完成了mvc基本框架,现在学习一下对表单输入的验证:目前我所知道的带表单验证功能的是一个协议JSR303,包括EJP、hibernate、spring和apache都有类似库1.使用spring自带的Validator:建立一个"Validator" (如果验证的类中的属性是一个需要验证的类,可以将它的validator嵌入到这里,详见reference)使用spring mv转载 2016-07-25 12:55:59 · 1243 阅读 · 0 评论 -
系统登录页面拉动验证滑块进行验证
有如下登录页面:登录过程中输入账号密码后 需要拉动图中 滑块 后 才可登录成功:如何使用webdriver 实现拉动滑块的功能?代码如下:创建公共功能类并加入方法:public class ActionUtil { private static Actions act; public static void setAction(WebDriver原创 2016-06-22 10:29:47 · 16627 阅读 · 3 评论 -
实体类(VO,DO,DTO)的划分
经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。一、实体类百度百科中对于实体类的定义如下:实体类的主要职责是存储和管理系统内部的信息,它也可以有转载 2016-07-19 11:26:45 · 49784 阅读 · 3 评论 -
如何做一个让人看得起的测试人员
做测试做了5年,开发做了2年,“只有开发才是生产力”,因为这种现象的存在,所以很多国内企业,尤其是一些小型的企业,对测试重视程度不够,甚至没有专门的测试人员,可能有的是为了项目需要,设立了测试团队,1人测试团队也屡见不鲜,我就知道好多企业是一人测试组,而且还是应届生的也有。对于这样的企业,您无法想象测试人员的地位会是什么样,老板都觉得设置测试人员是组织架构需要,而不是为了质量需要,那开发人员对测试原创 2016-07-19 11:45:47 · 1026 阅读 · 1 评论 -
深入浅出Java回调机制
前几天看了一下Spring的部分源码,发现回调机制被大量使用,觉得有必要把Java回调机制的理解归纳总结一下,以方便在研究类似于Spring源码这样的代码时能更加得心应手。 注:本文不想扯很多拗口的话来充场面,我的目的是希望以最简明扼要的语言将Java回调的大概机制说清楚。好了,言归正传。 一句话,回调是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方,这就叫回转载 2016-07-19 17:00:28 · 527 阅读 · 0 评论 -
eclipse 快速查找DAO层使用的mybatis的sql的配置文件
如果DAO层接口名和 sqlmap中的namespace名 一致:1,鼠标在项目树种点击 sqlmap 的文件夹根目录:2,使用快捷键 ctrl+h ,输入接口名,选择“selected resources”3,点击“Search” 即可搜索到sqlmap文件:如果sqlmap没有namespace 则直接使用DAO层接口 定义的方法名进行搜索,步原创 2016-08-22 10:13:25 · 5724 阅读 · 0 评论 -
java BigDecimal 和DecimalFormat用法
java.math.BigDecimal不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。与之相关的还有两个转载 2016-07-19 12:45:35 · 3912 阅读 · 0 评论 -
java 解析 yaml
当前还在维护的YAML解析器/生成器有:SnakeYAML完整的YAML 1.1解析器,尤其是SnakeYAML能够分析来自于规范的所有示例支持Unicode,包括UTF-8/UTF-16的输入/输出为序列化和反序列化本地的Java对象提供了高级API支持YAML类型库中的所有类型比较理性的错误信息YamlBeans:支持YAML 1.0和1.1FasterXML/jackso转载 2016-06-15 23:22:36 · 6014 阅读 · 1 评论 -
eclipse开发velocity实例(初学)
开发环境 Eclipse Java EE IDE for Web Developers.(Version: Helios Service Release 1) jdk1.6.0_07 apache-tomcat-6.0.10 首先需要为eclipse安装velocity编辑插件:转载 2016-04-24 18:00:04 · 2391 阅读 · 0 评论 -
velocity 新手入门
velocity环境搭建1 根据自己的系统环境下载velocity和velocity tool (http://velocity.apache.org/download.cgi),本人下载的是velocity-1.7.zip、velocity-tools-2.0.zip 2 新建一个web项目(比如web),将velocity-1.7下的velocity-1.7.jar,vel原创 2016-04-24 17:58:27 · 932 阅读 · 0 评论 -
Webdriver UI自动化测试定义工具类方便用例获取资源
Webdriver UI自动化测试定义工具类方便用例获取资源1.测试用例中需要上传图片的时候,图片作为测试数据,维护在测试数据文件中:2.为了方便用例里面随用随拿 定义如下工具类 :package ec.qa.autotest.ui.utility;/** * @author xin.wang * 获取测试图片地址 */public class PictureUtil { private static Strin原创 2015-12-17 14:49:45 · 1231 阅读 · 0 评论 -
Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例
Webdriver Ui自动化测试,使用工厂方法生产不同浏览器的webdriver实例定义浏览器驱动实例的接口:package ec.qa.autotest.ui.utility.base;import org.openqa.selenium.remote.RemoteWebDriver;/** * 实例化目标浏览器接口 * @author xin.wang * */public interface IBrowserDriverBase { public原创 2015-12-16 18:10:52 · 2182 阅读 · 8 评论 -
webdriver UI自动化测试执行JS脚本
webdriver UI自动化测试执行JS脚本不管是selenium RC 还是 webdriver 其在浏览器端 最终还是通过JS来操作页面元素实现自动化测试的(可参见2者的实现原理),在做自动化测试的时候,如果webdriver现有的java API 不满足测试需要的时候,我们可以尝试执行js脚本在协助自动化测试的运行,还好webdriver提供了执行JS脚本的接口:webdriver.executeScript(String jsCMD原创 2015-12-25 17:04:41 · 3833 阅读 · 0 评论 -
Java语言中没有引用传递,只有值传递。到底对不对?
在传递引用的时候其实是复制了一份引用传进去的.A a=new A();test(a)相当于(A b=a;test(b))如果传的是基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本。 如果传的是一个对象的引用,也是一样的,也是一个副本,但是这个副本和作为参数传进来的那个引用指向的是内存中的同一个对象,所以你通转载 2016-04-27 23:27:54 · 1327 阅读 · 0 评论 -
动态生成java文件的方法
动态生成java文件的方法转载 2016-05-16 19:13:15 · 2066 阅读 · 0 评论 -
利用mybatis-generator自动生成代码
利用mybatis-generator自动生成代码原创 2016-05-16 19:31:40 · 2439 阅读 · 1 评论 -
mybatis实战教程(mybatis in action),mybatis入门到精通
mybatis实战教程(mybatis in action),mybatis入门到精通转载 2016-05-16 20:30:35 · 471 阅读 · 0 评论 -
hashmap 快速查找原理
转自:http://blog.csdn.net/vking_wang/article/details/141665931. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是转载 2016-04-23 11:59:02 · 12525 阅读 · 1 评论 -
git rebase简介(基本篇)
原文:http://gitbook.liuhui998.com/4_2.html一、基本git rebase用于把一个分支的修改合并到当前分支。假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。$ git checkout -b mywork origin假设远程分支"origin"已经有了2个提交,如图 现在我们在这个分支做转载 2016-10-05 13:02:29 · 558 阅读 · 0 评论 -
git 使用详解-- tag打标签
Git 的标签管理。跟大多数的 VCS 工具一样,git 也有在历史状态的关键点“贴标签”的功能,一般人们用这个功能来标记发布点(例如’v1.0′)。列出git中现有标签要想列出git中现有的所有标签,输入’git tag’命令运行即可:$ git tagv0.1v1.3这个列表是按照字母表顺序给出的,其实排名先后跟重要程度没有直接联系。当然,你也可转载 2016-10-05 13:28:03 · 8830 阅读 · 0 评论 -
Java 序列化ID的作用
序列化ID的作用: 其实,这个序列化ID起着关键的作用,它决定着是否能够成功反序列化!简单来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序转载 2016-11-15 08:51:38 · 4526 阅读 · 1 评论 -
关于.getClass()和.class的区别
一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享。原来为就是涉及到Java的反射~~~~~Java反射学习所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码转载 2016-06-22 17:47:07 · 5061 阅读 · 3 评论 -
浏览器的渲染机制
Google Web Fundamentals 是一个非常优秀的文档,里面讲到了跟web、浏览器、前端的方方面面。我总结一下其中的 Ilya Grigorik 写的 Critical rendering path 浏览器渲染机制部分的内容如下:几个概念1、DOM:Document Object Model,浏览器将HTML解析成树形的数据结构,简称DOM。2、CSSOM转载 2017-04-19 11:44:57 · 272 阅读 · 0 评论 -
JVM源码分析之javaagent原理完全解读
概述本文重点讲述javaagent的具体实现,因为它面向的是我们Java程序员,而且agent都是用Java编写的,不需要太多的C/C++编程基础,不过这篇文章里也会讲到JVMTIAgent(C实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。对于javaagent,或许大家都听过,甚至使用过,常见的用法大致如下:java -javaagent:m转载 2017-04-06 16:43:24 · 551 阅读 · 0 评论 -
JAVA8新特性下的接口和抽象类的异同
Java中,抽象类和接口有相似的地方。下面我们就来细说说接口和抽象类的异同。首先是相同的地方:1. 接口和抽象类都能定义方法和属性。2. 接口和抽象类都是看作是一种特殊的类。大部分的时候,定义的方法要子类来实现3. 抽象类和接口都可以不含有抽象方法。接口没有方法就可以作为一个标志。比如可序列化的接口Serializable,没有方法的接口称为空接口。没有抽象方法转载 2017-04-26 15:38:07 · 4068 阅读 · 3 评论 -
JAVA8 十大新特性详解
“Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字。一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:复制代码代码如下:转载 2017-04-26 16:04:42 · 509 阅读 · 0 评论 -
java获取System.out输出内容
ByteArrayOutputStream baoStream = new ByteArrayOutputStream(1024);PrintStream cacheStream = new PrintStream(baoStream);PrintStream oldStream = System.out;System.setOut(cacheStream);//不打印到控制台Sy转载 2017-06-01 13:27:41 · 5767 阅读 · 0 评论 -
微服务优点缺点
转自:https://blog.csdn.net/varyall/article/details/78905332微服务架构采用Scale Cube方法设计应用架构,将应用服务按功能拆分成一组相互协作的服务。每个服务负责一组特定、相关的功能。每个服务可以有自己独立的数据库,从而保证与其他服务解耦。 耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。...转载 2018-11-26 16:24:45 · 2856 阅读 · 0 评论 -
关于BIO和NIO的理解
转自:https://www.cnblogs.com/zedosu/p/6666984.html摘要: 关于BIO和NIO的理解最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO。下面是我结合网络资料自己总结的,为了节约时间图示随便画的,能达意就行。 简介:BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户...转载 2019-02-27 15:57:25 · 2571 阅读 · 0 评论 -
git 放弃本地修改强制更新& Git中分支merge和rebase的适用场景及区别
git 放弃本地修改强制更新本地有修改和提交,如果想放弃这些修改和提交 可以使用如下命令强制用远程的库更新:git fetch --allgit reset --hard origin/mastergit fetch --all 只是下载远程的库的内容,不做任何的合并git reset --hard origin/master 把HEAD指向刚刚下载的最新的版本原创 2016-01-27 10:42:05 · 13372 阅读 · 0 评论 -
设计模式六大原则
设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,转载 2017-04-11 17:30:37 · 220 阅读 · 0 评论 -
使用ASM操作Java字节码,实现AOP原理
本文通过一个的例子来实现:使用ASM动态生成Java字节码文件(.class) 或者 加载字节码后动态修改字节码,添加我们需要执行的代码,来模拟实现spring AOP。年底了,也没心情抠字了,把写demo包含的几个类代码直接贴出来吧,代码拷贝下来后可以直接使用,不会有什么其他错误。 使用 asm-5.0.3.jar demo工程的package为com.shanhy.demo.a转载 2017-03-23 15:50:48 · 734 阅读 · 0 评论 -
git cherry-pick&git 分支重命名
Git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了。就是对已经存在的commit 进行 再次提交;简单用法:g转载 2016-12-10 13:44:29 · 506 阅读 · 0 评论 -
JAVA List删除时需注意的地方
JAVA的LIST在删除时,一般会用list.remove(o); 但这样往往会出现问题,先来看下面的这段代码:1234567891011121314151617181920212223转载 2016-11-22 20:05:48 · 395 阅读 · 0 评论 -
过滤器、监听器、拦截器的区别
1.过滤器Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面转载 2016-12-07 13:20:35 · 259 阅读 · 0 评论 -
SpringMVC 中的Interceptor 拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。 一、定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在转载 2016-12-07 19:06:30 · 263 阅读 · 0 评论 -
java 使用javassist 动态修改注解的值
如下实例: @Test public void aetTestCaseAtrributes() throws NotFoundException { ClassPool pool = ClassPool.getDefault(); // 获取需要修改的类 CtClass ct = pool.get("com.tmall.test.scv.testcases.SCVDRCSc原创 2017-02-23 19:29:56 · 7520 阅读 · 1 评论 -
使用java获取md5值
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,是一种比较常用的哈希算法。 java中可以用两种方法实现,我们先说麻烦一点的,代码: 复制代码代码如下:public class md5_test { //MD5的字符串常量 private final static String[] h原创 2017-03-30 11:10:59 · 1763 阅读 · 0 评论