Thymeleaf 表达式工具类
Thymeleaf默认提供了丰富的表达式工具类,这里列举一些常用的工具类。
Objects工具类
1
2
3
4
5
6
7
8
|
/*
* 当obj不为空时,返回obj,否则返回default默认值
* 其同样适用于数组、列表或集合
*/
${#objects.nullSafe(obj,default)}
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}
|
String工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/*
* Null-safe toString()
*/
${#strings.toString(obj)} // 也可以是 array*、list* 或 set*
/*
* 检查String是否为空(或null)。在检查之前执行trim()操作也同样适用于数组、列表或集合
*/
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}
/*
* 对字符串执行“isEmpty()”检查, 如果为false则返回它, 如果为true则默认为另一个指定的字符串。
* 也同样适用于数组、列表或集合
*/
${#strings.defaultString(text,default)}
${#strings.arrayDefaultString(textArr,default)}
${#strings.listDefaultString(textList,default)}
${#strings.setDefaultString(textSet,default)}
/*
* 检查字符串中是否包含片段,比如 ${#strings.containsIgnoreCase(user.name,'kang')}
* 也同样适用于数组、列表或集合
*/
${#strings.contains(name,'ez')} // 也可以是 array*、list* 或 set*
${#strings.containsIgnoreCase(name,'ez')} // 也可以是 array*、list* 或 set*
/*
* 检查字符串是否以片段开始或结束
* 也同样适用于数组、列表或集合
*/
${#strings.startsWith(name,'Don')} // 也可以是 array*、list* 或 set*
${#strings.endsWith(name,endingFragment)} // 也可以是 array*、list* 或 set*
/*
* 子串相关操作
* 也同样适用于数组、列表或集合
*/
${#strings.indexOf(name,frag)} // 也可以是 array*、list* 或 set*
${#strings.substring(name,3,5)} // 也可以是 array*、list* 或 set*
${#strings.substringAfter(name,prefix)} // 也可以是 array*、list* 或 set*
${#strings.substringBefore(name,suffix)} // 也可以是 array*、list* 或 set*
${#strings.replace(name,'las','ler')} // 也可以是 array*、list* 或 set*
/*
* 附加和前置
* 也同样适用于数组、列表或集合
*/
${#strings.prepend(str,prefix)} // 也可以是 array*、list* 或 set*
${#strings.append(str,suffix)} // 也可以是 array*、list* 或 set*
/*
* 大小写转换
* 也同样适用于数组、列表或集合
*/
${#strings.toUpperCase(name)} // 也可以是 array*、list* 或 set*
${#strings.toLowerCase(name)} // 也可以是 array*、list* 或 set*
/*
* 拆分和拼接
*/
${#strings.arrayJoin(namesArray,',')}
${#strings.listJoin(namesList,',')}
${#strings.setJoin(namesSet,',')}
${#strings.arraySplit(namesStr,',')} // 返回String []
${#strings.listSplit(namesStr,',')} // 返回List<String>
${#strings.setSplit(namesStr,',')} // 返回Set<String>
/*
* Trim
* 也同样适用于数组、列表或集合
*/
${#strings.trim(str)} // 也可以是 array*、list* 或 set*
/*
* 计算长度
* 也同样适用于数组、列表或集合
*/
${#strings.length(str)} // 也可以是 array*、list* 或 set*
/*
* 缩写文本, 使其最大大小为n。如果文本较大, 它将被剪辑并在末尾附加“...”
* 也同样适用于数组、列表或集合
*/
${#strings.abbreviate(str,10)} // 也可以是 array*、list* 或 set*
/*
* 将第一个字符转换为大写(反之亦然)
*/
${#strings.capitalize(str)} // 也可以是 array*、list* 或 set*
${#strings.unCapitalize(str)} // 也可以是 array*、list* 或 set*
/*
* 将每个单词的第一个字符转换为大写
*/
${#strings.capitalizeWords(str)} // 也可以是 array*、list* 或 set*
${#strings.capitalizeWords(str,delimiters)} // 也可以是 array*、list* 或 set*
/*
* 转义字符串
*/
${#strings.escapeXml(str)} // 也可以是 array*、list* 或 set*
${#strings.escapeJava(str)} // 也可以是 array*、list* 或 set*
${#strings.escapeJavaScript(str)} // 也可以是 array*、list* 或 set*
${#strings.unescapeJava(str)} // 也可以是 array*、list* 或 set*
${#strings.unescapeJavaScript(str)} // 也可以是 array*、list* 或 set*
/*
* 空安全比较和连接
*/
${#strings.equals(first, second)}
${#strings.equalsIgnoreCase(first, second)}
${#strings.concat(values...)}
${#strings.concatReplaceNulls(nullValue, values...)}
/*
* 随机数
*/
${#strings.randomAlphanumeric(count)}
|
Dates工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/*
* 使用标准区域设置格式格式化日期
* 也同样适用于数组、列表或集合
*/
${#dates.format(date)}
${#dates.arrayFormat(datesArray)}
${#dates.listFormat(datesList)}
${#dates.setFormat(datesSet)}
/*
* 使用ISO8601格式格式化日期
* 也同样适用于数组、列表或集合
*/
${#dates.formatISO(date)}
${#dates.arrayFormatISO(datesArray)}
${#dates.listFormatISO(datesList)}
${#dates.setFormatISO(datesSet)}
/*
* 使用指定的格式格式化日期,比如 ${#dates.format(date,'yyyy-MM-dd HH:mm:ss')}
* 也同样适用于数组、列表或集合
*/
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
/*
* 获取日期属性
* 也同样适用于数组、列表或集合
*/
${#dates.day(date)} // 也可以是 arrayDay(...), listDay(...)之类的
${#dates.month(date)} // 也可以是 arrayMonth(...), listMonth(...)之类的
${#dates.monthName(date)} // 也可以是 arrayMonthName(...), listMonthName(...)之类的
${#dates.monthNameShort(date)} // 也可以是 arrayMonthNameShort(...), listMonthNameShort(...)之类的
${#dates.year(date)} // 也可以是 arrayYear(...), listYear(...)之类的
${#dates.dayOfWeek(date)} // 也可以是 arrayDayOfWeek(...), listDayOfWeek(...)之类的
${#dates.dayOfWeekName(date)} // 也可以是 arrayDayOfWeekName(...), listDayOfWeekName(...)之类的
${#dates.dayOfWeekNameShort(date)} // 也可以是 arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...)之类的
${#dates.hour(date)} // 也可以是 arrayHour(...), listHour(...)之类的
${#dates.minute(date)} // 也可以是 arrayMinute(...), listMinute(...)之类的
${#dates.second(date)} // 也可以是 arraySecond(...), listSecond(...)之类的
${#dates.millisecond(date)} // 也可以是 arrayMillisecond(...), listMillisecond(...)之类的
/*
* 根据year,month,day创建日期(java.util.Date)对象,比如 ${#dates.create('2008','08','08')}
*/
${#dates.create(year,month,day)}
${#dates.create(year,month,day,hour,minute)}
${#dates.create(year,month,day,hour,minute,second)}
${#dates.create(year,month,day,hour,minute,second,millisecond)}
/*
* 创建当前日期和时间创建日期(java.util.Date)对象,比如 ${#dates.format(#dates.createNow(),'yyyy-MM-dd HH:mm:ss')}
*/
${#dates.createNow()}
${#dates.createNowForTimeZone()}
/*
* 创建当前日期创建一个日期(java.util.Date)对象(时间设置为00:00)
*/
${#dates.createToday()}
${#dates.createTodayForTimeZone()}
|
Calendars工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/*
* 使用标准区域设置格式格式化日历
* 也同样适用于数组、列表或集合
*/
${#calendars.format(cal)}
${#calendars.arrayFormat(calArray)}
${#calendars.listFormat(calList)}
${#calendars.setFormat(calSet)}
/*
* 使用ISO8601格式格式化日历
* 也同样适用于数组、列表或集合
*/
${#calendars.formatISO(cal)}
${#calendars.arrayFormatISO(calArray)}
${#calendars.listFormatISO(calList)}
${#calendars.setFormatISO(calSet)}
/*
* 使用指定的格式格式化日历
* 也同样适用于数组、列表或集合
*/
${#calendars.format(cal, 'dd/MMM/yyyy HH:mm')}
${#calendars.arrayFormat(calArray, 'dd/MMM/yyyy HH:mm')}
${#calendars.listFormat(calList, 'dd/MMM/yyyy HH:mm')}
${#calendars.setFormat(calSet, 'dd/MMM/yyyy HH:mm')}
/*
* 获取日历属性
* 也同样适用于数组、列表或集合
*/
${#calendars.day(date)} // 也可以是 arrayDay(...), listDay(...)之类的
${#calendars.month(date)} // 也可以是 arrayMonth(...), listMonth(...)之类的
${#calendars.monthName(date)} // 也可以是 arrayMonthName(...), listMonthName(...)之类的
${#calendars.monthNameShort(date)} // 也可以是 arrayMonthNameShort(...), listMonthNameShort(...)之类的
${#calendars.year(date)} // 也可以是 arrayYear(...), listYear(...)之类的
${#calendars.dayOfWeek(date)} // 也可以是 arrayDayOfWeek(...), listDayOfWeek(...)之类的
${#calendars.dayOfWeekName(date)} // 也可以是 arrayDayOfWeekName(...), listDayOfWeekName(...)之类的
${#calendars.dayOfWeekNameShort(date)} // 也可以是 arrayDayOfWeekNameShort(...), listDayOfWeekNameShort(...)之类的
${#calendars.hour(date)} // 也可以是 arrayHour(...), listHour(...)之类的
${#calendars.minute(date)} // 也可以是 arrayMinute(...), listMinute(...)之类的
${#calendars.second(date)} // 也可以是 arraySecond(...), listSecond(...)之类的
${#calendars.millisecond(date)} // 也可以是 arrayMillisecond(...), listMillisecond(...)之类的
/*
* 从其组件创建日历(java.util.Calendar)对象
*/
${#calendars.create(year,month,day)}
${#calendars.create(year,month,day,hour,minute)}
${#calendars.create(year,month,day,hour,minute,second)}
${#calendars.create(year,month,day,hour,minute,second,millisecond)}
${#calendars.createForTimeZone(year,month,day,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,second,timeZone)}
${#calendars.createForTimeZone(year,month,day,hour,minute,second,millisecond,timeZone)}
/*
* 为当前日期和时间创建一个日历(java.util.Calendar)对象
*/
${#calendars.createNow()}
${#calendars.createNowForTimeZone()}
/*
* 为当前日期创建日历(java.util.Calendar)对象(时间设置为00:00)
*/
${#calendars.createToday()}
${#calendars.createTodayForTimeZone()}
|
Numbers工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/*
* ==========================
* 格式化整数
* ==========================
*/
/*
* 设置最小整数位数。
* 也同样适用于数组、列表或集合
*/
${#numbers.formatInteger(num,3)}
${#numbers.arrayFormatInteger(numArray,3)}
${#numbers.listFormatInteger(numList,3)}
${#numbers.setFormatInteger(numSet,3)}
/*
* 设置最小整数位数和千位分隔符:
* 'POINT'、'COMMA'、'WHITESPACE'、'NONE' 或 'DEFAULT'(根据本地化)。
* 也同样适用于数组、列表或集合
*/
${#numbers.formatInteger(num,3,'POINT')}
${#numbers.arrayFormatInteger(numArray,3,'POINT')}
${#numbers.listFormatInteger(numList,3,'POINT')}
${#numbers.setFormatInteger(numSet,3,'POINT')}
/*
* ==========================
* 格式化十进制数
* ==========================
*/
/*
* 设置最小整数数字和(精确的)十进制数字。
* 也同样适用于数组、列表或集合
*/
${#numbers.formatDecimal(num,3,2)}
${#numbers.arrayFormatDecimal(numArray,3,2)}
${#numbers.listFormatDecimal(numList,3,2)}
${#numbers.setFormatDecimal(numSet,3,2)}
/*
* 设置最小整数数字和(精确的)小数位数, 以及小数分隔符。
* 也同样适用于数组、列表或集合
*/
${#numbers.formatDecimal(num,3,2,'COMMA')}
${#numbers.arrayFormatDecimal(numArray,3,2,'COMMA')}
${#numbers.listFormatDecimal(numList,3,2,'COMMA')}
${#numbers.setFormatDecimal(numSet,3,2,'COMMA')}
/*
* 设置最小整数数字和(精确的)十进制数字, 以及千位和十进制分隔符。
* 也同样适用于数组、列表或集合
*/
${#numbers.formatDecimal(num,3,'POINT',2,'COMMA')}
${#numbers.arrayFormatDecimal(numArray,3,'POINT',2,'COMMA')}
${#numbers.listFormatDecimal(numList,3,'POINT',2,'COMMA')}
${#numbers.setFormatDecimal(numSet,3,'POINT',2,'COMMA')}
/*
* ==========================
* 实用方法
* ==========================
*/
/*
* 创建一个从x到y的整数序列(数组)
*/
${#numbers.sequence(from,to)}
${#numbers.sequence(from,to,step)}
|
比如:
1
2
3
4
|
<p th:utext="${#numbers.formatInteger(0.1024,3)}"></p>
<p th:utext="${#numbers.formatInteger(1.024,3)}"></p>
<p th:utext="${#numbers.formatInteger(10.24,3)}"></p>
<p th:utext="${#numbers.formatInteger(102.4,3)}"></p>
|
页面输出:
1
2
3
4
5
6
7
8
9
10
11
|
<p th:utext="${#numbers.formatInteger(1.024,2,'POINT')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'POINT')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'POINT')}"></p>
<p th:utext="${#numbers.formatInteger(1.024,2,'COMMA')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'COMMA')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'COMMA')}"></p>
<p th:utext="${#numbers.formatInteger(1.024,2,'WHITESPACE')}"></p>
<p th:utext="${#numbers.formatInteger(1024,3,'WHITESPACE')}"></p>
<p th:utext="${#numbers.formatInteger(1024,10,'WHITESPACE')}"></p>
|
页面输出:
POINT指的是.
,COMMA指的是,
,WHITESPACE指的是空格。三个数位为一组,使用指定的分隔符分割。比如1.024并不是小数,而是使用了.
分隔的1024。
Booleans工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/*
* 评估条件, 类似于 th:if 标签
* 也同样适用于数组、列表或集合
*/
${#bools.isTrue(obj)}
${#bools.arrayIsTrue(objArray)}
${#bools.listIsTrue(objList)}
${#bools.setIsTrue(objSet)}
/*
* 用否定来评估条件
* 也同样适用于数组、列表或集合
*/
${#bools.isFalse(cond)}
${#bools.arrayIsFalse(condArray)}
${#bools.listIsFalse(condList)}
${#bools.setIsFalse(condSet)}
/*
* 评估条件并执行与操作
* 接收数组、列表或集合作为参数
*/
${#bools.arrayAnd(condArray)}
${#bools.listAnd(condList)}
${#bools.setAnd(condSet)}
/*
* 评估条件并执行或操作
* 接收数组、列表或集合作为参数
*/
${#bools.arrayOr(condArray)}
${#bools.listOr(condList)}
${#bools.setOr(condSet)}
|
Arrays工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/*
* 转换为数组, 试图推断数组组件类。注意, 如果结果数组为空, 或者目标对象的元素不是全部相同的类, 则
* 此方法将返回Object []。
*/
${#arrays.toArray(object)}
/*
* 转换为指定组件类的数组。
*/
${#arrays.toStringArray(object)}
${#arrays.toIntegerArray(object)}
${#arrays.toLongArray(object)}
${#arrays.toDoubleArray(object)}
${#arrays.toFloatArray(object)}
${#arrays.toBooleanArray(object)}
/*
* 计算数组长度
*/
${#arrays.length(array)}
/*
* 检查数组是否为空
*/
${#arrays.isEmpty(array)}
/*
* 检查数组中是否包含元素或元素集合
*/
${#arrays.contains(array, element)}
${#arrays.containsAll(array, elements)}
|
Lists工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/*
* 转化为 list
*/
${#lists.toList(object)}
/*
* 计算大小
*/
${#lists.size(list)}
/*
*/
${#lists.isEmpty(list)}
/*
* 检查list中是否包含元素或元素集合
*/
${#lists.contains(list, element)}
${#lists.containsAll(list, elements)}
/*
* 排序给定列表的副本。列表的成员必须
* 实现comparable, 或者必须定义comparator。
*/
${#lists.sort(list)}
${#lists.sort(list, comparator)}
|
Sets工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/*
* 转化为 to set
*/
${#sets.toSet(object)}
/*
* 计算大小
*/
${#sets.size(set)}
/*
* 检查set是否为empty
*/
${#sets.isEmpty(set)}
/*
* 检查set中是否包含元素或元素集合
*/
${#sets.contains(set, element)}
${#sets.containsAll(set, elements)}
|
Maps工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/*
* 计算大小
*/
${#maps.size(map)}
/*
* 检查map是否为空
*/
${#maps.isEmpty(map)}
/*
* 检查map中是否包含key/s或value/s
*/
${#maps.containsKey(map, key)}
${#maps.containsAllKeys(map, keys)}
${#maps.containsValue(map, value)}
${#maps.containsAllValues(map, value)}
|
注意事项
值得注意的是,在使用工具类对某个表达式进行处理时候,你可能会写成:
1
|
${#strings.isEmpty(${session.user.name})}。
|
实际上这种写法是错误的,将抛出异常。正确的写法为:
1
|
${#strings.isEmpty(session.user.name)}。
|
Thymeleaf 表达式工具类的更多相关文章
- spring boot 与 thymeleaf (4): 基本对象、工具类对象
如果在前台, 我需要获取session中的信息, 或者需要获取url中的参数信息, 是不是需要在后台手动处理好, 然后放到Model中去, 在前台通过${}来取呢? 当然, 这种方式, 是可以的, 但 ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- Thymeleaf+Spring使用自己的工具类
第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...
- Guava库介绍之实用工具类
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- C# 异步工具类 及一点小小的重构经验
2015年新年第一篇随笔, 祝福虽然有些晚,但诚意还在:新年快乐. 今天主要是想分享一异步工具类,在C/S架构中.先进行网络资源异步访问,然后将回调函数 Invoke到UI线程中进行UI处理. 这样的 ...
- Java操作字符串的工具类
操作字符串的工具类 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStre ...
- JS 日期工具类-基于yDate
源码下载 前言:最近在用到JS日期操作时,发现有一些不方便,于是搜素了一些网上的资料,基于一个开源工具类-yDate 进行了个性化定制,封装成了一个日期工具类工具函数大概介绍:1.普通的日期操作2. ...
随机推荐
- hdu 3262 09 宁波 现场 C - Seat taking up is tough 暴力 难度:0
Description Students often have problems taking up seats. When two students want the same seat, a qu ...
- jmeter4.0---自带录制功能录制脚本
1.前言 Jmeter录制脚本有两种方式.1.通过第三方工具录制比如:Badboy,然后转化为jmeter可用的脚本:2.使用jmeter本身自带的录制脚本功能. 对于小白来说可用先使用jmeter录 ...
- [转载]MySQL索引原理与慢查询优化
好文,以防丢失,故转之,另对排版做简单优化.原文地址:http://ourmysql.com/archives/1401 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查"mys ...
- 第1课 学习C++的意义
C++是C语言的加强,它们之间并不是对立的关系. 学习C++的优势: 现代软件产品的架构图: 操作系统抽象层:可有可无,但是作为一个移植性好的软件一定需要这一层.这一层的作用就是把操作系统提供的接口做 ...
- I.MX6 CAAM
/********************************************************************************* * I.MX6 CAAM * 说明 ...
- IO的概念
什么是IO: 在内存中存在数据交换的操作都可以认为是IO操作 和终端交互:input print 和磁盘交互:read write 和网络交互:recv send IO密集型程序:在程序执行过程中存在 ...
- web 安全相关(一):Log注入(转)
在网上有很多关于安全的文章,但是 OWASP 开发指导 涵 盖了几乎所有关于Web站点安全的东西.(注:OWASP(开放Web应用安全项目- Open Web Application Security ...
- mac终端下修改MySQL的编码格式--找不到my-default.cnf及my.cnf
首先请确认正确安装好MySQL. 1- 先配置环境变量path 1.1 打开终端,输入: cd ~ 会进入~文件夹, 1.2 然后输入:touch .bash_profile 回车执行后, 1.3 再 ...
- Visual Studio 2005 自带单元测试
一 单元测试简介 单元测试是代码正确性验证的最重要的工具,也是系统测试当中最重要的环节.也是唯一需要编写代码才能进行测试的一种测试方法.在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的 ...
- 【转】UBUNTU 下GIT的安装
原文网址:http://www.cnblogs.com/perseus/archive/2012/01/06/2314069.html linux下软件的安装方式有多种,最简单的莫过于从软件中心直接安 ...