TEMP
java 中 final
继承
final是个修饰符,可以用来修饰类,类的成员,以及局部变量
被final修饰的类不可以被继承,但是可以继承其他类;
被final修饰的方法不可以被覆盖,但父类中没有被final修饰的方法,子类覆盖后可以加final
被final修饰的变量为常量,这些变量只能赋值一次
被final修饰的成员变量,需要在创建对象之前进行赋值,否则会报错
Static
能不能创建个对象,就进行调用方法
澳洲烤涮肥牛片 180g 13.8
8、 HashMap和Hashtable的区别?
HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,
主要区别是HashMap键值可以为空null,效率可以高于Hashtable。
HashMap是基于哈希表的 Map 接口的实现,以key-value的形式存在。
在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。
HashMap实现了Map接口,继承AbstractMap。
其中Map接口定义了键映射到值的规则,而AbstractMap类提供 Map 接口的骨干实现,以最大限度地减少实现此接口所需的工作.
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
其实AbstractMap类已经实现了Map,这里标注Map 大概是觉得这样更加清晰吧!
SQL code
USE [master] GO ALTER DATABASE [CSDN] COLLATE Chinese_PRC_CI_AS GO
暂时这样处理:
忽略写入数据库时的编码转换。即,服务器以Unicode编码的SQL语句对数据库进行操作(由系统提高的API接口负责编码转换),这部分的编码,可以不作考虑。而查询数据库返回的字符串,好像是系统默认的ANSI编码?这里回头需要抽空确认一下。
不过,暂时以系统默认的ANSI编码来处理,还没有出现过问题。
参数解释如下:
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分宽度WI不区分,WS区分
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项
//*[@id="container"]/div[2]/div[3]/div[1]
#container > div.boss-info > div.rec-position > div.info-labels
#container > div.boss-info > div.rec-position > div.info-labels
一.概述
cssSelector也是一种常用的选择器,CSS locator比XPath locator速度快,用CSS Selector能非常精准的定位到想测试的Elements
二.cssSelector常用符号说明
# 表示id
. 表示class
> 表示子元素,层级
一个空格也表示一个子元素,但是所有的子元素相当于xpath中的相对路径
三.cssSelector的常用用法
#input 选择id为input的节点
.Volvo 选择class为Volvo的节点
div#radio>input 选择id为radio的div下的所有的input节点
div#radio input 选择id为radio的div下的所有的子孙后代input节点
div#radio>input:nth-of-type(4) 选择id为radio的div下的第4个input节点
div#radio>nth-child(1) 选择id为radio的div下的第1个子节点
div#radio>input:nth-of-type(4)+label 选择id为radio的div下的第4个input节点之后挨着的label节点
div#radio>input:nth-of-type(4)~labe 选择id为radio的div下的第4个input节点之后的所有label节点
input.Vovlo[name='identity'] 选择class为.Volvo并且name为identity的input节点
input[name='identity'][type='radio']:nth-of-type(1) 选择name为identity且type为radio的第1个input节点
input[name^='ident'] 选择以ident开头的name属性的所有input节点
input[name$='entity'] 选择以'entity'结尾的name属性的所有input节点
input[name*='enti'] 选择包含'enti'的name属性的所有input节点
div#radio>*.not(input) 选择id为radio的div的子节点中不为input的所有子节点
input:not([type='radio']) 选择input节点中type不为radio的所有节点
如何通过testng.xml来实现设置依赖关系
我们主要学习dependOnGroups和如何在testng.xml中设置依赖关系。在Testng中依赖分两种,硬依赖和软依赖。
硬依赖就是所有的依赖方法必须成功执行,才会执行接下来的方法,如果其中有一个依赖的方法失败了,那么接下来的方法是不会被执行,会默认标记跳过(skip)。
上面重启tomcat服务的方法运行的前提是tomcatServiceIsDown(),只有tomcat服务确实挂了,才会执行重启的方法,这个就是硬依赖。
软依赖就是不管依赖的方法是否成功执行,接下来的方法都可以运行。软依赖的实现是在@Test中添加属性alwaysRun=true来实现。
上面依赖关系是tomcat这个group,而且设置了软依赖,最后都执行了startAppServer方法,如果你去除alwaysRun=true,或者true改成false,运行发现,第三个方法是跳过,忽略了没有执行。
来看看如何通过配置testng.xml来控制依赖关系。