2012年3月18日星期日

常用正则表达式


正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
用户名:/^[a-z0-9_-]{3,16}$/
密码:/^[a-z0-9_-]{6,18}$/
十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 标签:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
Unicode编码中的汉字范围:/^[u4e00-u9fa5],{0,}$/
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国大陆邮政编码:[1-9]\d{5}(?!\d)
评注:中国大陆邮政编码为6位数字
匹配身份证:\d{15}|\d{18}
评注:中国大陆的身份证为15位或18位
匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

表达式全集

正则表达式有多种不同的风格。下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表:
字符描述
\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。
+匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m}mn均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
.匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[.\n]”的模式。
(pattern)匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。
(?:pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。
[a-z]字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d匹配一个数字字符。等价于[0-9]。
\D匹配一个非数字字符。等价于[^0-9]。
\f匹配一个换页符。等价于\x0c和\cL。
\n匹配一个换行符。等价于\x0a和\cJ。
\r匹配一个回车符。等价于\x0d和\cM。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。
\S匹配任何非空白字符。等价于[^\f\n\r\t\v]。
\t匹配一个制表符。等价于\x09和\cI。
\v匹配一个垂直制表符。等价于\x0b和\cK。
\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。.
\num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若nm均为八进制数字(0-7),则\nm将匹配八进制转义值nm
\nml如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。
\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(?)。
以下是以PHP的语法所写的示例
验证字符串是否只含数字与英文,字符串长度并在4~16个字符之间
<?php
$str = 'a1234';
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
    echo "驗證成功";
} else {
    echo "驗證失敗";
}
?>
简易的台湾身份证字号验证
<?php
$str = 'a1234';
if (preg_match("/^\w[12]\d{8}$/", $str)) {
    echo "驗證成功";
} else {
    echo "驗證失敗";
}
?>
以下示例是用 Perl 语言写的,与上面的示例功能相同
print $str = "a1234" =~ m:^[a-zA-Z0-9]{4,16}$: ? "COMFIRM" : "FAILED";
print $str = "a1234" =~ m"^\w[12]\d{8}$" ? "COMFIRM" : "INVAILD";

如何写出高效率的正则表达式

如果纯粹是为了挑战自己的正则水平,用来实现一些特效(例如使用正则表达式计算质数、解线性方程),效率不是问题;如果所写的正则表达式只是为了满足一两次、几十次的运行,优化与否区别也不太大。但是,如果所写的正则表达式会百万次、千万次地运行,效率就是很大的问题了。我这里总结了几条提升正则表达式运行效率的经验(工作中学到的,看书学来的,自己的体会),贴在这里。如果您有其它的经验而这里没有提及,欢迎赐教。
为行文方便,先定义两个概念。
误匹配:指正则表达式所匹配的内容范围超出了所需要范围,有些文本明明不符合要求,但是被所写的正则式“击中了”。例如,如果使用\d{11}来匹配11位的手机号,\d{11}不单能匹配正确的手机号,它还会匹配98765432100这样的明显不是手机号的字符串。我们把这样的匹配称之为误匹配。
漏匹配:指正则表达式所匹配的内容所规定的范围太狭窄,有些文本确实是所需要的,但是所写的正则没有将这种情况囊括在内。例如,使用\d{18}来匹配18位的身份证号码,就会漏掉结尾是字母X的情况。
写出一条正则表达式,既可能只出现误匹配(条件写得极宽松,其范围大于目标文本),也可能只出现漏匹配(只描述了目标文本中多种情况种的一种),还可能既有误匹配又有漏匹配。例如,使用\w+\.com来匹配.com结尾的域名,既会误匹配abc_.com这样的字串(合法的域名中不含下划线,\w包含了下划线这种情况),又会漏掉ab-c.com这样的域名(合法域名中可以含中划线,但是\w不匹配中划线)。
精准的正则表达式意味着既无误匹配且无漏匹配。当然,现实中存在这样的情况:只能看到有限数量的文本,根据这些文本写规则,但是这些规则将会用到海量的文本中。这种情况下,尽可能地(如果不是完全地)消除误匹配以及漏匹配,并提升运行效率,就是我们的目标。本文所提出的经验,主要是针对这种情况。
掌握语法细节。正则表达式在各种语言中,其语法大致相同,细节各有千秋。明确所使用语言的正则的语法的细节,是写出正确、高效正则表达式的基础。例如,perl中与\w等效的匹配范围是[a-zA-Z0-9_];perl正则式不支持肯定逆序环视中使用可变的重复(variable repetition inside lookbehind,例如(?<=.*)abc),但是.Net语法是支持这一特性的;又如,JavaScript连逆序环视(Lookbehind,如(?<=ab)c)都不支持,而perl和python是支持的。《精通正则表达式》第3章《正则表达式的特性和流派概览》明确地列出了各大派系正则的异同,这篇文章也简要地列出了几种常用语言、工具中正则的比较。对于具体使用者而言,至少应该详细了解正在使用的那种工作语言里正则的语法细节。
先粗后精,先加后减。使用正则表达式语法对于目标文本进行描述和界定,可以像画素描一样,先大致勾勒出框架,再逐步在局步实现细节。仍举刚才的手机号的例子,先界定\d{11},总不会错;再细化为1[358]\d{9},就向前迈了一大步(至于第二位是不是3、5、8,这里无意深究,只举这样一个例子,说明逐步细化的过程)。这样做的目的是先消除漏匹配(刚开始先尽可能多地匹配,做加法),然后再一点一点地消除误匹配(做减法)。这样有先有后,在考虑时才不易出错,从而向“不误不漏”这个目标迈进。
留有余地。所能看到的文本sample是有限的,而待匹配检验的文本是海量的,暂时不可见的。对于这样的情况,在写正则表达式时要跳出所能见到的文本的圈子,开拓思路,作出“战略性前瞻”。例如,经常收到这样的垃圾短信:“发*票”、“发#漂”。如果要写规则屏蔽这样烦人的垃圾短信,不但要能写出可以匹配当前文本的正则表达式 发[*#](?:票|漂),还要能够想到 发.(?:票|漂|飘)之类可能出现的“变种”。这在具体的领域或许会有针对性的规则,不多言。这样做的目的是消除漏匹配,延长正则表达式的生命周期。
明确。具体说来,就是谨慎用点号这样的元字符,尽可能不用星号和加号这样的任意量词。只要能确定范围的,例如\w,就不要用点号;只要能够预测重复次数的,就不要用任意量词。例如,写析取twitter消息的脚本,假设一条消息的xml正文部分结构是<span class=”msg”>…</span>且正文中无尖括号,那么<span class=”msg”>[^<]{1,480}</span>这种写法的思路要好于<span class=”msg”>.*</span>,原因有二:一是使用[^<],它保证了文本的范围不会超出下一个小于号所在的位置;二是明确长度范围,{1,480},其依据是一条twitter消息大致能的字符长度范围。当然,480这个长度是否正确还可推敲,但是这种思路是值得借鉴的。说得狠一点,“滥用点号、星号和加号是不环保、不负责任的做法”。
不要让稻草压死骆驼。每使用一个普通括号()而不是非捕获型括号(?:…),就会保留一部分内存等着你再次访问。这样的正则表达式、无限次地运行次数,无异于一根根稻草的堆加,终于能将骆驼压死。养成合理使用(?:…)括号的习惯。
宁简勿繁。将一条复杂的正则表达式拆分为两条或多条简单的正则表达式,编程难度会降低,运行效率会提升。例如用来消除行首和行尾空白字符的正则表达式s/^\s+|\s+$//g;,其运行效率理论上要低于s/^\s+//g; s/\s+$//g; 。这个例子出自《精通正则表达式》第五章,书中对它的评论是“它几乎总是最快的,而且显然最容易理解”。既快又容易理解,何乐而不为?工作中我们还有其它的理由要将C==(A|B)这样的正则表达式拆为A和B两条表达式分别执行。例如,虽然A和B这两种情况只要有一种能够击中所需要的文本模式就会成功匹配,但是如果只要有一条子表达式(例如A)会产生误匹配,那么不论其它的子表达式(例如B)效率如何之高,范围如何精准,C的总体精准度也会因A而受到影响。
巧妙定位。有时候,我们需要匹配的the,是作为单词的the(两边有空格),而不是作为单词一部分的t-h-e的有序排列(例如together中的the)。在适当的时候用上^$\b等等定位锚点,能有效提升找到成功匹配、淘汰不成功匹配的效率。

2012年3月11日星期日

DB2 v9.5在Ubuntu10.x下安装


以前用的是Ubuntu9.0.4,装DB2 v9.5非常轻松,一路下去,什么问题也没有。
这次情况不妙,Ubuntu升级到10.04以后,缺了libstdc++.so.5,系统中只有.so.6,
使用apt-get intall libstdc++5,也找不到安装包。无奈,只能在网上苦苦搜索,找了半天也没找到可下载的源。
最后在http://ishare.iask.sina.com.cn/f/14409917.html?retcode=0 上找到一个。
再补充后边的几个步骤:
1. dpkg -x libstdc++5_3.3.6-10_i386.deb libstdc++5
cd libstdc++5/usr/lib
mv * /usr/lib
 
结果如下:
root@linux11:/usr/lib# ls -al libstdc++*lrwxrwxrwx 1 root root 18 2010-12-09 11:54 libstdc++.so.5 -> libstdc++.so.5.0.7
-rw-r--r-- 1 root root 737496 2005-10-26 20:25 libstdc++.so.5.0.7
lrwxrwxrwx 1 root root 19 2010-11-26 00:02 libstdc++.so.6 -> libstdc++.so.6.0.14
-rw-r--r-- 1 root root 930044 2010-09-28 05:01 libstdc++.so.6.0.14
 
补充安装gcc-3.3-base和openssh, rsh-server:
wget -c http://free.nchc.org.tw/ubuntu//pool/universe/g/gcc-3.3/gcc-3.3-base_3.3.6-15ubuntu4_i386.deb
dpkg -i gcc-3.3-base_3.3.6-15ubuntu4_i386.deb
apt-get install openssh-server

export DB2USELOCALJRE=yes
 
3. 运行db2setup开始安装,选择install a Product,进入DB2 Setup Wizard

后边基本上不会碰到什么问题。

Oracle11.2.0非安装版(简装版)制作完成(仅供开发人员参考使用)


作者: iihero@CSDN, 2012.3.11. 请尊重个人劳动。如若转载,请注明原始出处。Thanks.
下载地址:

(免责声明):
这是一个精简版的oracle11g for windows 32bit x86平台.
此压缩包,仅供学习研究使用,本文作者不负任何责任。适合于开发人员使用。切不可将其用于商业用途,请遵守
Oracle公司相关商业规定。如因私自将其用于商业用途,由此带来的法律纠纷或其它问题,概与本人无关.
author: iihero@CSDN  (iiihero AT hotmail.com;  iihero AT qq.com)

0. 如果你已经安装了别的版本的oracle,
请自行备份注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE], 这样即算有冲突,
你也可以重新导入以前的注册项而得已恢复

1. 将压缩包解压至目录,设该目录值为: d:\,
其下将有目录:
<D>/oracle/*
<D>/oracle/11.2.0

2. 新的ORACLE_HOME将为:<D>/oracle/11.2.0
运行完iihero.ora11g.bat运行完以后,(一个批处理一次安装全部完成)
你需要将<D>/oracle/11.2.0/BIN添加到path里头
缺省的ORACLE_SID为iihero,你可以自行修改iihero.ora11g.bat中的SID值,不要超过8个字符。

3. 安装完以后,别忘了添加环境变量ORACLE_SID=iihero以及将%ORACLE_HOME%/bin
添加到PATH环境变量里头,在这之后,
即可使用sqlplus system/manager进入并修改密码,执行表空间、用户管理相关操作。
如:
  1. D:\Oracle>sqlplus system/manager  
  2.   
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期日 3月 11 13:14:35 2012  
  4.   
  5. Copyright (c) 1982, 2010, Oracle.  All rights reserved.  
  6.   
  7.   
  8. 连接到:  
  9. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production  
  10. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  11.   
  12. SQL> quit  
  13. 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production  
  14. With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开  

欢迎大家试用,如果发现有什么问题,可以与本人联系。

这个11g的包,既可充当server,同时也可以用作oci, jdbc,sqlplus,odbc等的客户端工具。还是比较齐全的。
11g比10g的非安装包,确实大了不少。10g的时候,总共才50M不到,这不,到了11g,压缩完以后,也有100来兆。不过,不管怎样,比原始的安装包,那可是小了很多了。

10g的非安装包,详见我以前的文章:

2012年3月6日星期二

九州出版社征稿合作(长期有效)

征稿范围:
自费出书要求: 一书一号管理费15000元, 稿件应该符合出版“齐、清、定”的要求,必须政治方向正确,不得抄袭。 
非常欢迎自费出版文史哲或社科论文集的和我联系。量大有优惠。

联系方式:

地址:北京市西城区阜城门外大街甲35号九州出版社
邮编:100037

电话:131 4610 2875
周编辑 (周老师)

qq: 35824648
邮箱:spring.zhou@qq.com


九州出版社是中央级综合性出版社,以弘扬中华文化、促进海峡两岸文化交流为宗旨,出版社会科学、自然科学、文学和艺术方面的图书、画报和画册。是国内最具规模和权威的跨越两岸学术文化出版基地。2009年被新闻出版总署评为国家一级出版社,授予“全国百佳图书出版单位”荣誉称号。

九州出版社将设立出版基金,并面向社会诚征书稿,以更加灵活的出版方式,高质量服务于两岸读者,为繁荣包括两岸在内的中国出版事业添柴加薪。

2012年3月5日星期一

业余乒乓球手的答疑总结

问:我是成年人,以前打球有几年的时间,不好的动作定型了,还能改过来吗? 

答:成年人由于以前打球把动作打定型了,要想改动作的确是比较困难的,因为肌肉发力活动已经形成了较为深刻的"记忆",如果要改动作,那么这种新的"肌肉记忆"必须用大脑来想着做,等上台打球的时候注意力又要集中在盯球上,这样就变成"一心二用",精力容易疲惫,从而造成动作与手感脱节打不到球。 
我们说成年人动作不容易改,但是要通过练习调整得相对发力合理却是很容易的,这时候只要能够找到一个熟悉的发力参照对象,那么肌肉就有了这种参照发力记忆,这时候再上台打球就可以集中精力在盯球环节上了,通过一段时间练习,就可以改掉以前不正确的发力方式。
问:我打反胶老是吃别人的旋转怎么办?能不能改用长胶或生胶,应该怎么练?

答:很多球友在比赛的时候都有这个问题,吃发球,吃转,老是处理不好,无奈之下想到换用颗粒胶以减轻吃转的摩擦,殊不知有得必有失,颗粒胶旋转弱了,相对来说控制难度也就增大了,正所谓欲伤人,先伤己,要想打好颗粒胶,自己难受在先,等自己习惯了,才轮到别人难受。 
所以我们说首先要明确你打球的目的是什么,是要健身,还是娱乐,还是纯粹为了比赛?从反胶换到颗粒胶,开始是很不容易感受到打乒乓球的乐趣的,因为长胶和生胶回过来的球有反旋转,球路不同,动作也不一样;同样,别人打得难受了,也就不太愿意和你练,所以这也是颗粒胶难练好的一个重要的因素。而打反胶只要有正确的方法,就可以学会接发球的原理,明白了旋转的原理,自然就会调整拍型去适应各式各样的旋转,这其实也是乒乓球最大的乐趣之一。 
要练好颗粒胶,如长胶,其实也不是没有办法,除了找教练以外,还可以找想和长胶练习以适应长胶的球友。只要能找到一个合适的球友,两人可以通过攻防磕搓这种有规律的转换方式来练习,具体方法是:反胶发球,长胶磕过来为下旋,反胶搓,然后长胶攻(拱或者挑打),反胶防一板过去,长胶再磕一板下旋...如此反复练习;这也是长胶打比赛最基本的规律,同时反胶要想适应长胶,这也是最基本的方法。
问:我打球有一段时间状态特别好,有时候却又老是没有状态,球友都说这是要涨球(进步)的表现,这是怎么回事啊?

答:练习乒乓球技术,其进步是螺旋式或者说波浪式上升的,也就是说在球技上涨到一定程度的时候状态会有所"下滑",回落到一个"状态低谷期",这是很正常的表现,这个"低谷期"也就是我们常说的"瓶颈期",只要能克服这个瓶颈期,那么我们的球技又会达到一个新的提升空间。 

那么"瓶颈期"是怎么产生的呢?我们在练球的期间肯定是要通过不断地比赛才能把平时练的这些技术融汇到比赛中去,形成各种战术。那么我们知道,练球给的是定点,或者是有规律的变化落点,哪怕是不定点练习所给的球也是力度、弧线基本没有太大变化的;而比赛的时候两人都是想方设法地去变化,去控制对方,然后抓住机会给予致命一击。这样完全不同的打球方式就会对我们打乒乓球的一个最基本的要素――节奏感――造成影响,打比赛的期间越长,对节奏感的影响也就越大,等到量变积累到一定程度以后,就会形成质变,这样你混乱的节奏感就会突然爆发出来,造成状态低迷,打球找不到"点"。

每个人在练球比赛的过程中都会有"瓶颈期",在初学到提高这个阶段,"瓶颈期"不会很明显,而在提高阶段"瓶颈期"是最明显的,也是最容易频繁出现的,要想快速度过"瓶颈期",就需要用正确的方法来练球,把动作、节奏感调整回来,逐渐地,越到后来"瓶颈期"的间隔时间也就会越长,而持续时间也会变得越短。
问:我练球也有几次了,为什么和别人打球的时候动作还是改不过来,始终是原来的动作? 
答:这个问题也是许多正在改动作的成年人的疑惑之处,为什么练球的时候动作很好,而一打起比赛来就被"打回原形"呢? 

前面我们曾经说过,练球给的是定点,或者是有规律的变化落点;而比赛的时候两人都是想方设法地去变化,去控制对方,这样不定点的球想要打上台,注意力就必须高度集中在盯球上,而此时新改的动作还没能够形成较为深刻的肌肉记忆(用俗话说就是还没练到家),因此出手的时候自然会变回以前的下意识动作,这个时候比赛和练球两者间会造成一个矛盾效应,互相影响。 

所以我们在给初学者练球以固定动作的时候,一般是不提倡他们打比赛的,因为这样会对练球的效果产生负面影响。我们一般建议许多初学者如果在时间允许的情况下,尽可能地经常练球,训练密度大一些,就越容易在较短的时间内把动作固定下来,等自身技术达到一定的条件之后,我们就会建议初学者去和水平相当的球友打比赛,以便把练球的动作融汇到比赛中去。 
而对于以前不合理动作定型的学球者来说,我们的建议同样和对初学者差不多,刚开始改动作的时候尽量少打比赛,并且在时间允许的情况下增大训练密度,在训练完了以后可以适当地打一下比赛(最好和水平比自己弱的打,这样对方的控制能力不会太强,不容易造成你的动作变形),尽可能地把新练习的发力方式转化为下意识的肌肉记忆,这样才能逐渐把以前不合理的动作改正过来。
问:我的发球为什么发不出强烈的旋转? 

答:大家跟发球好的球友过招,都能感觉到对方发的转球旋转特别强烈,很容易直接吃发球,郁闷之余也会经常琢磨一下自己怎么也能发出这样旋转强烈的球,但是往往尝试过若干次之后还是不得要领。下面我就介绍发强旋转球需要注意的三个最基本的因素。 

一、非持拍手的抛球 
发球靠持拍手,但大家往往忽略了非持拍手的抛球动作。能否发出好球,首先取决于非持拍手抛球的弧线位置是否能让持拍手击球很舒服,发得出力来,如果连最基本的力度都使不出来,那你再怎么找摩擦的感觉也是徒劳的。 
刚开始练习的时候,许多初学者往往怕身子挡到持拍手,都会面向前,把球抛到自己的前方或侧前方,这样持拍手是无法发足力的,正确的方法应该是侧向站位(右手持拍者站于球台的左侧,左脚在前,右脚在后),抛球于自己身体偏右的位置(右手为例),而一些高手抛球甚至还要靠后,这样更利于逆旋转发球加力,就好像弓拉得越满,力度越足。 

二、引拍动作以及球拍摩擦球体时的切入角度 
先说引拍动作,很多球友发球使不出力度,除了抛球的位置不好之外,就是引拍的距离太短,正所谓拉弓射箭,弓都不拉开哪里来射箭的力度呢?这时候要注意适当地增加引拍弧度,刚开始靠小臂带动手腕发力,手腕要放松,逐渐地还要学会带上一点腰的转动。 
其次,摩擦切入角度是最重要的,摩擦吃球的"厚"与"薄"指的就是拍型接触球一瞬间的力度方向切入球体的角度,切入越厚,那么力度轴越靠近球中心,那么这时候球体得的撞击力越多,速度也就越快;反之,摩擦越薄,球体旋转就越强。 
直观一点来举个例子,球拍正面与球台夹角,90度为垂直,180度为平行,比如发下旋球,130度夹角摩擦出来的球和放平球拍摩擦出来的球,哪个转?那么有的球友就问了,放平了擦不到球啊,当然,球拍放得越平,相对触球面积也就越小,这时候要想提高击球的精准性,就进入下面第三点。

三、发球节奏 
乒乓球的控制、进攻都是靠节奏的变化来掌握的,发球也不例外,从抛球到下落这个时间段,节奏感决定了你的摩擦精准度。许多初学者刚开始练习发球的时候,都是用眼睛去"瞄",看球落下来差不多了,就出手去碰,这样造成什么问题?注意力集中在球下落的过程中,就不可能去找摩擦的厚薄感了,精确性大打折扣。所以什么时候该出手,要靠节奏感来掌握,凭感觉去判断出手时机,第一次失误了,分析一下是出手早了还是晚了,下次再调整节奏,慢慢地,你的发球精准度就会提高。

PS一个练习发球的小技巧:在家里的床单上练习发球,找摩擦的感觉,如果力度足,摩擦得好,球落到床单上以后就会有强烈的旋转,如果是下旋球就会马上向后窜。这样练习的好处就是不用经常去捡球,只需要一个球就可以,而且旋转强度可以立马看出来,待找到摩擦手感后,再去球台上练习,调整力度落点。
问:练习正手攻球的时候总是腿、腰和手脱节怎么办?

答:练习正手攻球回合的时候讲究腰腿配合,这是进一步发力的基础,业余爱好者如果经过很长时间的练习还是不能做到很协调地"重心蹬转-转腰带手"的话,除了练习方法问题以外,就是自身协调能力比较差了。

首先要说的一点是练习方法的问题,通过观看技术动作图片、教学视频,大家能把动作模仿到大致相似的程度,但是乒乓球是非常细节化的一项运动,要求在身体协调的情况下还要找准节奏、击球点、击球位置等,不像学舞蹈,动作到位好看了就行。在练习正手攻球的时候很多成年人身体协调不起来,是因为思想的"分心"导致动作和球感脱节,为什么这么说呢?你想,你原先的动作仅限于手上,那么这时候你只需要控制手去击球就可以,假如突然让你蹬腿、转腰,还要用腰带着手去迎前击球,你一心N用,注意力还怎么集中在盯球环节上呢?这时候势必造成你想着腿就忘了腰,想着球就忘了蹬地,一环脱节,动作全散。

因此,要做到所谓的"动力定型",最好的方法就是找到一个平日最熟悉的、和攻球发力相似的动作,在这种参照动力的作用下,相信你就比较容易把注意力放在盯球环节上而不会"分心"了,那么这个动作可以有好几种:泼水、甩包、挥铁拍等。物体虽然不同,但是都有一个特点,就是重量增加了很多,这时候要发上力,如果只用手那可是费力不讨好哦!在这种重量下,蹬地转腰带手自然而然会成为最合理、最轻松的发力方式。假如换回重量轻的球拍后还能把它想象成重的东西,手臂自然就能够放松了。

当然上面说的仅仅是相近似的发力方式,具体的动作准确度还需要教练指导或者自己再进一步固定。如果在重心蹬转环节练习过程中,有重心交换,转腰到位的话,有一个简单的方法可以证明出来,我称之为"单摆效应"。就是说,当你脖子上挂上一个吊坠,形成一个可以甩动的单摆(当然挂绳要稍微长一点,20多厘米吧,这样吊坠垂下正好在胸前),在反复做重心交换带转腰这个动作时,只要频率均匀,挂着的吊坠就会慢慢左右摆动,继而向两边"甩"动,打在两肩上。

如果不会出现这种情况的话,就是有蹬无转,或者有转无蹬。因为当只有重心蹬过来蹬过去而没有转腰时,吊坠只会左右摆,而不会出现"甩"起来打在两边肩头上的情况;而只有转腰无重心交换时(有些人做这个动作就像在扭转盘那样)吊坠也是不容易两边甩打起来。当然如果腰髋同转的话也能形成"单摆效应",不过这样在桌前练习进台正手攻球时会觉得腿部很费力。
问:为什么有的人练球后比赛能力提高很快,有的人总是不能很好地把练习和实战结合起来? 

答:练习和实战的有机结合无疑是乒乓球训练内容里难度最大的一个环节,无论是小孩还是成年人,一般刚开始练习基本功的时候都是从正手攻球、反手拨球、正反手转换、搓球、高吊起下旋、起下旋后转为上旋连续推拨攻这些技术练起,这些基本技术熟练后再加上一个合适的发球技术,基本就具备了进行简单比赛的能力,而相对来说小孩的训练还更要系统些,要多包括两点走位、三点走位、侧身走位扑正手等涵盖步法的练习。 

在练习的过程中由于各人的先天意识(天分)差异会产生两种练习效果,一种是主动练习,一种是被动练习。一些球友经过这些相对系统的练习以后球技提升得很快,就属于前者;而大多数球友系统练习了很长时间但实战能力仍然得不到质的提高,这就是因为在练球的时候思维意识不够"主动"。这里所说的"主动",并不是简单地指你练球的态度是否积极,而是包含了在练球细节中的"调控意识"和"潜意识记忆能力"。 

"调控意识"指的是在多回合练习一个单项技术中,对来球弧线落点微小差别的判断能力,以及自己回球弧线落点的微调控制能力。调控意识强的球友在一个单项技术练习了多回合以后能够注意到每个回球很细微的弧线落点变化,进而不断微调,逐渐把回球节奏感和手感定得很精确,一旦达到一定要求后,马上又可以加强回合频率、速度等进一步提升;而调控意识弱的球友在练习某一单项技术时,往往就成了"死练",在多回合的练习过程中仅仅注意到上台、不失误、练得舒服等,成了"应付式"练习,而不会去主动观察、微调整回球的弧线落点进而进一步加强节奏感手感的精确性,这样他们所表现出来最明显的一个现象就是只会和教练、控球好的球友或者一起练得很熟的人练球,而换一个人(也具有同样的练球能力)以后就对不上点,练不起多回合来了,至少是不能马上相互适应。

"潜意识记忆能力"则体现在技战术结合练习以及和实战结合练习中,这种潜意识记忆能力好的球友能够举一反三,俗话说叫做"长记性",比如练习搓中拉高吊,要素有放松腰腿发力、摩擦厚薄、击球点等,在一段练习过程中一旦他找准了整体感觉,对于逐渐加强一些难度或者有变化的回搓球也能够很好地去调整,他能够在有一定变化的回球中找准拉球成功的若干"要素",即使失误了也能够马上下意识想到是哪一点出了问题,是不够放松而没力度还是击球太厚等;而记忆能力差的球友就吃亏了,同样经过一段时间练习,低难度练习能够拉得好,难度稍高些拉球质量就下降,再稍微有些变化就不会拉球了,而最关键的是他自己搞不清楚是哪一个要素出了问题导致失误。这一"长不长记性"的能力差别就造成日后你的比赛能力能够有多大提高。
问:我拉下旋球总是失误,比赛的时候不敢上手,如何解决这个问题?

答:拉下旋球技术相对于攻球技术来说,难度要大一些,因为要自身主动发力,所以很多初学者在刚开始练习起下旋的时候往往整个身子会很僵硬,这是由于正手攻球基本功练习不到位的缘故,需要弥补。 刚开始练习拉下旋,一般都是从拉高吊弧圈球开始,这里需要注意三个要素:1.发力;2.引拍击球节奏;3.摩擦点和厚薄比例。三个要素都具备了,起下旋就会很轻松,某个要素没做好就容易失误。

1.发力是拉球的基础,这里所说的发力不是发死力、发蛮力,而是全身发力的顺畅和集中,如果发力方式不合理,球拍在空中运行的加速度就出不来,自然也就无法拉起下旋球来。

2.这一点包含了两个方面,引拍的时机和出拍击球的时机。和正手攻球一样,引拍要在对手击球(搓球)后球过来的一瞬间开始,这个节奏过早则造成"等球",等了以后就只能用眼睛去瞄,出手时机就不准确,过晚则会被来球顶住发不出力;出手时机需要找准来球的弧线顶点,这时候球会"定住"一瞬间然后开始下降,此时出手命中率最高,如果抢点过早,在来球上升期就出手拉球则容易失误。这一点综合起来看,整体的动作就是球过来瞬间开始引拍-到位-找准击球点马上出手,这个动作需要一气呵成,每个环节都不能有明显停顿,否则就会影响拉球质量。

3.这一点也包含了两个方面,摩擦球上的位置和摩擦厚薄。摩擦球上的位置位于球体中上部或者中部,而且要"正",如果摩擦位置偏了则拉下旋球的上升力度也会由于角度偏斜而减弱从而造成下网。那么从动作上看,一些初学者拉球时手腕习惯"勾"着,内扣太多,这样一拉球摩擦点总是偏到侧面,难怪使很大的劲还是感觉球容易往下掉,这时候一定要把手腕外撇开,拍型适当前倾,在身体前面击球,这样才能发上力。摩擦厚薄可以通过听击球响声来判断,俗话说"响球不转,转球不响",就是这个道理。击球太厚,则会听到很脆的"啪"声,弧线不好,不容易上台,这时候要增加吃球的摩擦,也就是薄一些,就能够纠正这个问题了。 

上面所说的是练习拉下旋时的注意事项,而在比赛中,如果要想上手拉起下旋球,那么首先要过了对方的控球关,也就是说,在搓球控制上的能力必须高于对手或和对手差不多,这样才能通过搓球控制迫使对方出现低质量的回球,自己才有机会上手。否则对方搓过来的下旋球都是弧线又低、又顶又快、落点又偏的高质量,你又如何能够保证自己的上手质量?所以在练习中学会拉下旋以后,应该先和控球水平低于自己的球友打练习比赛,在"菜鸟"身上找准感觉,这样才能够尽快把练习和比赛结合起来。很多人认为必须和高手过招才会有进步,和菜鸟打只会越打越差的观点是很片面的。
问:球在起跳飞行的不同时期旋转会有变化吗?为什么会说高吊弧圈球上升期旋转还没出来所以容易打,而到了高点以后旋转就出来所以不好打了?球擦网后旋转如何变化?

答:从物理角度来分析,球在飞行过程中会受到空气的阻力,接触到台面以后也会受到一个来自台面的摩擦力。球体产生旋转,是靠球拍胶皮给予的一个摩擦力所作用的结果,而空气阻力在球体飞行过程中所起到减弱球体旋转的持续效果是很小的,可以忽略,所以不会出现很明显的"由强变弱"这种感觉,更不会有"由弱变强"这种现象。

有些人说快攻打高吊弧圈球在上升期打容易,而到高点以后球的旋转出来就不好打了,因为在上升期击打容易上台,而在高点期后触球就会感觉压不住球的旋转,所以就有一种"直观"上的说法,认为球起跳到高点以后旋转会变得更"强"。实际上这是一种感觉上的误差,因为旋转是不会有很明显变化的,而明显变化的环节在于球体的行进动能上,也就是上升前冲力的减弱程度上,在高点以后因为借不到球体的上升力度而无法产生足够的"合力"把球的弧线压下来。

在拉下旋球的时候,最佳击球点是在弧线的顶点期至下降前期,这时候难度最低,如果是在上升期拉下旋球,由于球体上升时带有的动能冲量较多,就容易造成击球摩擦过厚,而不好控制回球弧线。 对于擦网球来说,会感到旋转变化比较明显,这里面也有一个节奏变化和球体前冲力变化的因素影响。比如下旋球擦网以后球体的旋转会因球体底部受到网带的阻力而减弱,这一点会搓球的球友应该都有体会。 

而拉球时如果擦网比较重的话,最明显的一个感觉是球一下就定住不往前走了,而这时候迎上去击球往往会压不住球的旋转,一碰就飞,感觉旋转变强了好多。对于这一点,我感觉球的旋转强度应该是会有所增加的,因为上旋球球体在前冲的过程中被球网截了一下底部后,一部分前冲动能会损失掉,而有一部分前冲动能会转化为旋转动能而增强了球体旋转。但是这时候压不住球旋转的原因主要还是由于球体前冲动能的损失造成击球合力减小,按照正常速度的时候拍面倾斜到30度就可以把旋转抵消而使球上台,但是如果前冲力度没了,拍面还压到30度就借不上力,这样去碰球会下网,所以一般我们下意识都会把拍面立起来去触球,这时候就吃转。会反拉的球友应该尝试过,对于对方拉球擦网后球速变慢的半高球,如果用反带或者发力反拉的方式去击球的话,命中率反而能提高。
问:正手攻球练习要达到什么样的程度才算过关,才可以进一步进阶练习?

答:正手攻球达到什么样的熟练程度可以算过关,这是很多初学者觉得模糊的一个概念。有的人认为,可以打到几十个回合就差不多了,就可以进一步学习弧圈球了,可是在这里我要告诉你,回合数量仅仅是评判技术达标的一个附加条件,而非主要条件! 

刻意以回合数量的多少来判定正手攻球是否过关,对于很多人来说容易陷入一个误区――我已经可以打到几十个回合了,应该过关了吧(实际上他自己也不清楚什么是"过关"),可以练弧圈球了吧?可是很奇怪,当他们兴致勃勃地开始练"弧圈"时,问题却又接二连三地出来了,感觉起起伏伏,反反复复,时常懊恼不已却又很不甘心。 
要想衡量自己的攻球技术是否过关,我教你一个评测的方法: 

1.在回合练习的时候能否放松精力,也就是说不需要100%地集中注意力才不会失误(达到几十个甚至上百个回合)?一般如果能够集中60%的注意力就可以多回合的话就算过了"固定节奏关"。 

2.在回合练习的时候能否想快则快,想重则重;想慢则慢,想轻则轻?快和重一般比较容易做到(尤其是只会用手扇球的),但是真正要想慢和轻就不那么容易了,"慢"和"快"的变化体现在节奏击球点的变化上,"重"和"轻"则是力度的控制,但是这里的力度要求用全身(腰腿)来掌握,而非只用手发力和减力。假如能做到快慢自如,随心所欲,可以全身协调柔和地进行攻球练习,那你就过了"变化节奏关"和"身体控制关"。 

3.在回合练习中能否去观察每一个回球的落点差距,看自己的回球会不会让对方难受(最明显的就是对方一会儿伸胳膊一会儿夹手,为了回接你落点偏差大的球),假如两个人都有这种调控意识,都会在对方回接了一个难受球后在下一球尽量去调整自己的回球节奏,尽量让对方打得舒服,那就很容易进入多回合,但若只顾自己打得痛快而不顾对方,那就会让对手很累,这样也就无法起到一个互利的练球效果。有时候总是调节不过来,那是因为回合节奏频率超出了你自身的节奏控制范围,这时候就要学会"慢"下来,把球回轻,稳定后再快。如果能够有这样的意识,并且慢慢能够发现其中的诀窍,那你就过了"微调节奏关"。 

4.在上面三点都过了以后你可以尝试一下,能否在中等慢节奏回合练习的基础上一边打球一边看书(或者让别人拿一张写着一段文字的纸在你旁边),你能否在不失误的情况下把这段文字读出来。如果做到这一点,那恭喜你,基本大致过关,可以进行中台攻球练习以及弧圈球练习了(实际上不用说,你自己已经有感觉了)
问:如何才能练好弧圈球?

答:弧圈球技术作为当今乒坛的主流,不少球友在练球时都跃跃一试,可大多数都是要么拉不好,要么只能拉一板,一旦对方把球挡回来就没有连续,自己都乱了方寸,苦恼之余总是找不到正确的方法。

其实弧圈球技术作为一项高级技术,它也是从一个基本技术上衍生出来的,这个基本技术就是正手近台快攻。正手近台攻球看似很简单,但能真正体会到其本质的球友并不多,地基越深,楼层越高,这个道理表面上谁都懂,但看看球馆里打球的球友,又有几个踏踏实实地在琢磨这个"简单"的技术呢?
问:我(或者我的小孩)想学乒乓球,是打直拍好还是横拍好?

答:以前很多人都问这个问题:"是直拍厉害还是横拍厉害",其实我们说直拍和横拍打法各有各的特点和优势所在,直拍的优势在于台内球控制灵活,变化多,而横拍则打相持的稳定型比较好,护台面积比较宽。

成年人学球的话完全可以根据自己以前的喜好选择横拍或直拍;而少儿刚开始学球,一般我们都推荐大多数小孩儿学习横拍,因为相对来说,少儿学习横拍上手快,比较容易,而能练得好直拍的小孩必须有很高的天赋,直拍的难度就在于反手违背人体正常的生理结构,无论是推挡还是直拍横打都是易学难精的。
问:小孩要学乒乓球是跟大班上课好还是单独找教练一对一来教好? 

答:小孩要学乒乓球,最重要的就是培养孩子的兴趣,如果没有兴趣,靠强制性让孩子学球是肯定学不好的。那么怎么能够培养孩子对乒乓球的兴趣呢? 

当然,如果在一个大班环境里,学球的孩子很多,那么互相之间打球比赛就会很有意思,这样孩子的兴趣也会比较浓厚,而且还能有一定的竞争意识。但是大班带课,教练毕竟精力是有限的,正所谓一壶水灌不满若干杯,那么这时候教练的精力只会集中在那些悟性教高,自觉性较高的小孩身上,其余的也只能随便糊弄一下了。那么这样对于其他孩子来说,能学到的东西可谓少之又少。而且大班里的孩子之间互相练球,一般来说失误都会比较高,这样对于培养扎实基本功底是很不利的。这时候如果想要快速提高小孩的水平,就需要找教练"开小灶",进行一对一的基本功训练。 

对小孩进行一对一的训练通常会比较枯燥,可能开始小孩还会有些兴趣,但是时间长了以后小孩都会产生厌烦感,会有一定的抵制情绪,自觉性差的比如练球偷懒不认真,精力只能集中20分钟左右等,这时候就需要教练用一定的方法来克服这个问题,充分调动起小孩练球的积极性,否则就是浪费时间了。 

我建议,如果要让小孩子学习乒乓球,刚开始先找教练一对一进行教学,待小孩练出一定的基本功,有一些比赛能力之后,可以让孩子参加一个大班,在这种氛围中增强其兴趣,并且同时再进行着一对一的训练,这样的效果肯定要比只选择大班或者单陪好得多。 
问:别人常说某某人手感特别好。什么叫手感?怎么样练习能提高? 

答:手感,从字面意义上来理解,就是指打球时手上感觉的细腻程度。具体来说,主要指的是击球时的力度控制感觉,以及切球摩擦的厚薄及角度。不同的人天生的手感细腻程度不一样,有的人手感细,而有的人感觉粗,不过通过一定的练习方法每个人的手感都能够有不同程度的提高。 

那么手感怎么练习呢?当然,如果多打练习比赛,通过观察别人怎么去控制,然后自己模仿尝试,这样能够提高自己的手感控制能力;但是如果没有时间经常去打球怎么办呢?有三种简单的方法可供大家平时练习。 

一、对墙托球练习 
距离由近到远,然后由远到近,不落地托球,反复练习,直到能够做到很随意也能控制得住(很随意指的是注意力不用像刚开始练习的时候那么使劲集中才盯得住球,有时候偶尔瞟一眼别的地方球也不会丢),像有的小孩开始这么练习的时候可以落地一点,跳起来以后再对着墙上打。 
二、对球摩擦与反摩擦练习 
先用合力发球的方式摩擦球的下部,使其产生强烈旋转,并且基本垂直向上弹起,待球落下来时拍面倾斜去接触旋转强的球,再使其垂直向上弹起。反复练习找摩擦与反摩擦的感觉。 
三、缓冲接球练习 
把球向上抛起,然后在球下落的时候用拍子通过缓冲的方法接住球,使球直接停在拍子上而不会弹起来。 

以上三种方法只要经常练习,一定时间之后打球的手感必然会有提高的,当然提高速度的快慢视各人悟性的高低而各有不同。