Fcitx
sudo apt-get install im-switch fcitx
sudo im-switch -s fcitx -z default
im-switch -s fcitx -z default #注意:不加sudo
完成设置最好重启一下X,输入法就生效了
某些情况下可能,在安装了fcitx输入法以后可能会出现和SCIM并存的问题,解决方法如下:
sudo gedit /usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-gtk2-immodule.immodules
将内容改为如下:
# automatically generated by dh_gtkmodules, do not edit
“/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so”
“scim” “SCIM Input Method” “scim” “/usr/share/locale” “ja:ko”
#就是将最后一行中的"ja:ko:zh"修改为"ja:ko",这样修改以后,scim在中文环境下将不被启动
更多设置,请访问中文输入法fcitx 以及 英文Locale下使用中文输入法
[编辑] 激活输入法
* 重新启动Xwindow完成。按 Ctrl + 空格 键激活输入法。
sudo apt-get install im-switch fcitx
sudo im-switch -s fcitx -z default
im-switch -s fcitx -z default #注意:不加sudo
完成设置最好重启一下X,输入法就生效了
某些情况下可能,在安装了fcitx输入法以后可能会出现和SCIM并存的问题,解决方法如下:
sudo gedit /usr/lib/gtk-2.0/2.10.0/immodule-files.d/scim-gtk2-immodule.immodules
将内容改为如下:
# automatically generated by dh_gtkmodules, do not edit
“/usr/lib/gtk-2.0/2.10.0/immodules/im-scim.so”
“scim” “SCIM Input Method” “scim” “/usr/share/locale” “ja:ko”
#就是将最后一行中的"ja:ko:zh"修改为"ja:ko",这样修改以后,scim在中文环境下将不被启动
更多设置,请访问中文输入法fcitx 以及 英文Locale下使用中文输入法
[编辑] 激活输入法
* 重新启动Xwindow完成。按 Ctrl + 空格 键激活输入法。
添加Ubuntu的源
Feisty (7.04) 版本
* 请参阅 [[[Ubuntu简介]]]
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
sudo gedit /etc/apt/sources.list
* 用以下内容替换文件中的所有内容
deb http://archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ feisty main restricted universe multiverse
这里你也可以直接使用更快速的ubuntu.cn99.com的源(推荐):
deb http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ feisty main restricted universe multiverse
这里你还可以使用速度也非常快的的mirror.lupaworld.com的源:
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-proposed main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn/ feisty main restricted universe multiverse
如果是教育网用户请使用上海交通大学的源:
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-updates main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu-cn/ feisty main multiverse restricted universe bleeding
上海电信的一个源:
deb http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu-cn/ feisty main restricted universe multiverse
* 保存编辑好的文件
sudo apt-get update
Feisty (7.04) 版本
* 请参阅 [[[Ubuntu简介]]]
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
sudo gedit /etc/apt/sources.list
* 用以下内容替换文件中的所有内容
deb http://archive.ubuntu.com/ubuntu/ feisty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ feisty main restricted universe multiverse
这里你也可以直接使用更快速的ubuntu.cn99.com的源(推荐):
deb http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ feisty main restricted universe multiverse
这里你还可以使用速度也非常快的的mirror.lupaworld.com的源:
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/archive/ feisty-proposed main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu/ubuntu-cn/ feisty main restricted universe multiverse
如果是教育网用户请使用上海交通大学的源:
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-updates main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ feisty-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu-cn/ feisty main multiverse restricted universe bleeding
上海电信的一个源:
deb http://mirror.rootguide.org/ubuntu/ feisty main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ feisty-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu-cn/ feisty main restricted universe multiverse
* 保存编辑好的文件
sudo apt-get update
断断续续的学习C++也有三两个月了,(2006年8月下旬起)。很感谢C++,可以说它是
一种催化剂,让我自身的修养和人生观都有很大的提高。(当然这也离不开个人自身
的基础)
在C++大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离让我受益颇
浅,现将其中心得奉献出来,欢迎老鸟指正,以供刚接触的新人参考。心得中,尽量减少对语言技术上的评论,以另一种心理来分析指正学习。
注:别人的心得和经验你可以学习,但是不可以完全照而搬之。因为每个人的心理,生活方式,看待事物及个人志向立场等等其他都不同,我的方法不一定适合你,但是可以学习借鉴。
在写之前,想先写一句话,千万不要以为你是天才,所谓天才即胜别人N倍的人,如果你真认为你是天才,请以天才的标准来要求自己,将自己付出和别人的比例以N:1来进行。
学习编程无外乎跟三者打交道,第一自己,第二编程,第三计算机。
第一自己:
心态:很多朋友都是在刚步入大学校门开始接触计算机或者其他。大学是一个很让人迷茫颓废的地方,可能你在高中踌躇满志,但在大学的管理机制下却心态渐糜。能够在大学(大一)里找到自己人生之志的人才是通过了大学的考验,能够真正迈上社会的人。
目标要明确,不要得过且过,不要追逐热门的东西。不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。
要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔丹的都知道,乔老爷子最常说的一句就是要享受比赛的时间。因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。
要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。我个人认为搞编程的英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。
转换的生活方式。要学会生活,在人的一生中,都会遇到一些很不开心的事,或者大大小小的意外,孙子兵法里面一句大意就是说,战场上要会将劣势转成优势,即最大的劣势很可能就是你的优势所在。一个打击你可以把他变为前进的动力,不必为了一点挫折和捶胸顿足,不必为了一点小事争吵不休。空闲的时候可以躺下来看看天,你就会明白自强不息,厚德载物之理。(看到一些为了失恋或者其他而堕落的人真的很难受和可惜)
要给人以帮助。别人有困难时或者一些举手之劳在自己解决范围内的尽力帮之,这对自己不会损失什么,相反在对方心里能够树立你的形象和增加好感。记住,给人之恩时也是给你自己铺路,这个世界不是靠你一个人可改变的。
第二编程:
语言的争论。几个月来,看到最有争议的帖子即关于某种语言好坏得,往往能顶个几百几千的人气。试问,中国牌子有几个不被骂的,试问,世界上哪部影片没人说他坏话的?术业有专攻,各司其职,每个语言的出现肯定都有自己价值和领域的范围,不同的只是价值和领域的高级和大小。就像高,矮,胖,瘦组成一个“型”。但是技术是进步的,这个进步也是在旧的基础上。放心,技术再飞跃也不会今天奔I,明天扣肉的迅速,在学习的同时也要时时关注整个语言界的走势(貌似哪个伟人说的与时俱进),保持一种同步曲线的前进。
语言能干什么?能问这句话,很欣慰。表明你是从基础学起才会问出这样的话来。但换而言之你一开始对这门语言调查的信息不足。庙算者胜,对自己身边的事物了解是非常重要的,这也能说明说你的教材或者教导你的人不够充分。如果是我对新手交流,我会花足时间让他明白这门语言是什么,能干什么,整个体系等等。这样在学的时候,对同一条语句上的理解你可能跟别人就不一样了, 因为你知道这门语言的体系架构,你可以从更多的特性角度去挖掘使用它。
提高自己对语言阅读能力。如何快速的进步?可以告诉你没有一步登天的办法,但是也可以告诉你如何让你快速掌握你所学的技术。多读他人代码,多领悟他人思维,多给自己出难题,多几种方法来解问题,多将语言的思想和身边的事物联系起来。想想你是怎么掌握普通话的,方法就不具体说了。
编程的思维。计算机是充满诱惑的东西,很多人都说热爱计算机,那只是它的表面,你热爱的只是他的一种扩展性的东西。能学计算机我很高兴,因为计算机从某种意义上来说将空间的距离给消除掉了。这里没有流血,没有牺牲。你可以以一种艺术家的思维来塑造它,可以以侦探的逻辑思维来破解它,可以以一种战争狂人的思维来摧毁它。你可以将你的这种思维体现在代码和整个布局里,不要惊异别人代码思维的异风,你也有自己的思维风格,你也可以,你也可以用自己代码让别人惊异。记住你学东西时更多的要体会他的思维,比如数学,微积分,离散,无数的定理,你学完以后可能永远都用不到,但是你可能有这种感觉,在你碰到某一问题时,这一问题的性质和你学到的东西很类似,但是中间就是差了一点东西,对了,这就是它思维上的一种运用,一种抽象,一种转换。
第三计算机
前面从说了很多,但是基本都是从理论上来说。因为我也没走到技术的高端(刚窥门槛还不到),说技术只是班门弄斧,但是我想我一些入门的方法还是可以和大家共享的。
前面提过,学一个东西首先要了解它,这样你才能知道你学的东西特性这个词。
不管你是什么目的学它的,你都要让自己喜欢上它。
建议新手们先从微机原理入手,弄懂后,再在自己脑中重绘一遍计算机的布局,学的时候,尽量将自己模拟的布局和语言给联系起来
接着学习英语,和数学,切记,学习数学是锻炼自己的逻辑,抽象和转换。
搞定这三个后再重新定位一下自己对计算机哪部分感兴趣,再从前辈中那里获取一些信息,这里教材和入门的准备很重要。一开始我也走了很多弯路,现在只能狂补英语和数学。
遇到问题时先不要问他人(常谈的问题了),应先以自己的所掌握的知识和思维来推敲问题,做个大胆的假设。
一种催化剂,让我自身的修养和人生观都有很大的提高。(当然这也离不开个人自身
的基础)
在C++大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离让我受益颇
浅,现将其中心得奉献出来,欢迎老鸟指正,以供刚接触的新人参考。心得中,尽量减少对语言技术上的评论,以另一种心理来分析指正学习。
注:别人的心得和经验你可以学习,但是不可以完全照而搬之。因为每个人的心理,生活方式,看待事物及个人志向立场等等其他都不同,我的方法不一定适合你,但是可以学习借鉴。
在写之前,想先写一句话,千万不要以为你是天才,所谓天才即胜别人N倍的人,如果你真认为你是天才,请以天才的标准来要求自己,将自己付出和别人的比例以N:1来进行。
学习编程无外乎跟三者打交道,第一自己,第二编程,第三计算机。
第一自己:
心态:很多朋友都是在刚步入大学校门开始接触计算机或者其他。大学是一个很让人迷茫颓废的地方,可能你在高中踌躇满志,但在大学的管理机制下却心态渐糜。能够在大学(大一)里找到自己人生之志的人才是通过了大学的考验,能够真正迈上社会的人。
目标要明确,不要得过且过,不要追逐热门的东西。不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。
要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔丹的都知道,乔老爷子最常说的一句就是要享受比赛的时间。因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。
要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。我个人认为搞编程的英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。
转换的生活方式。要学会生活,在人的一生中,都会遇到一些很不开心的事,或者大大小小的意外,孙子兵法里面一句大意就是说,战场上要会将劣势转成优势,即最大的劣势很可能就是你的优势所在。一个打击你可以把他变为前进的动力,不必为了一点挫折和捶胸顿足,不必为了一点小事争吵不休。空闲的时候可以躺下来看看天,你就会明白自强不息,厚德载物之理。(看到一些为了失恋或者其他而堕落的人真的很难受和可惜)
要给人以帮助。别人有困难时或者一些举手之劳在自己解决范围内的尽力帮之,这对自己不会损失什么,相反在对方心里能够树立你的形象和增加好感。记住,给人之恩时也是给你自己铺路,这个世界不是靠你一个人可改变的。
第二编程:
语言的争论。几个月来,看到最有争议的帖子即关于某种语言好坏得,往往能顶个几百几千的人气。试问,中国牌子有几个不被骂的,试问,世界上哪部影片没人说他坏话的?术业有专攻,各司其职,每个语言的出现肯定都有自己价值和领域的范围,不同的只是价值和领域的高级和大小。就像高,矮,胖,瘦组成一个“型”。但是技术是进步的,这个进步也是在旧的基础上。放心,技术再飞跃也不会今天奔I,明天扣肉的迅速,在学习的同时也要时时关注整个语言界的走势(貌似哪个伟人说的与时俱进),保持一种同步曲线的前进。
语言能干什么?能问这句话,很欣慰。表明你是从基础学起才会问出这样的话来。但换而言之你一开始对这门语言调查的信息不足。庙算者胜,对自己身边的事物了解是非常重要的,这也能说明说你的教材或者教导你的人不够充分。如果是我对新手交流,我会花足时间让他明白这门语言是什么,能干什么,整个体系等等。这样在学的时候,对同一条语句上的理解你可能跟别人就不一样了, 因为你知道这门语言的体系架构,你可以从更多的特性角度去挖掘使用它。
提高自己对语言阅读能力。如何快速的进步?可以告诉你没有一步登天的办法,但是也可以告诉你如何让你快速掌握你所学的技术。多读他人代码,多领悟他人思维,多给自己出难题,多几种方法来解问题,多将语言的思想和身边的事物联系起来。想想你是怎么掌握普通话的,方法就不具体说了。
编程的思维。计算机是充满诱惑的东西,很多人都说热爱计算机,那只是它的表面,你热爱的只是他的一种扩展性的东西。能学计算机我很高兴,因为计算机从某种意义上来说将空间的距离给消除掉了。这里没有流血,没有牺牲。你可以以一种艺术家的思维来塑造它,可以以侦探的逻辑思维来破解它,可以以一种战争狂人的思维来摧毁它。你可以将你的这种思维体现在代码和整个布局里,不要惊异别人代码思维的异风,你也有自己的思维风格,你也可以,你也可以用自己代码让别人惊异。记住你学东西时更多的要体会他的思维,比如数学,微积分,离散,无数的定理,你学完以后可能永远都用不到,但是你可能有这种感觉,在你碰到某一问题时,这一问题的性质和你学到的东西很类似,但是中间就是差了一点东西,对了,这就是它思维上的一种运用,一种抽象,一种转换。
第三计算机
前面从说了很多,但是基本都是从理论上来说。因为我也没走到技术的高端(刚窥门槛还不到),说技术只是班门弄斧,但是我想我一些入门的方法还是可以和大家共享的。
前面提过,学一个东西首先要了解它,这样你才能知道你学的东西特性这个词。
不管你是什么目的学它的,你都要让自己喜欢上它。
建议新手们先从微机原理入手,弄懂后,再在自己脑中重绘一遍计算机的布局,学的时候,尽量将自己模拟的布局和语言给联系起来
接着学习英语,和数学,切记,学习数学是锻炼自己的逻辑,抽象和转换。
搞定这三个后再重新定位一下自己对计算机哪部分感兴趣,再从前辈中那里获取一些信息,这里教材和入门的准备很重要。一开始我也走了很多弯路,现在只能狂补英语和数学。
遇到问题时先不要问他人(常谈的问题了),应先以自己的所掌握的知识和思维来推敲问题,做个大胆的假设。
曾经有个小国到中国来,进贡了三个一模一样的金人,金壁辉煌,把皇帝高兴坏了。可是这小国不厚道,同时出一道题目:这三个金人哪个最有价值?
皇帝想了许多的办法,请来珠宝匠检查,称重量,看做工,都是一模一样的。怎么办?使者还等着回去汇报呢。泱泱大国,不会连这个小事都不懂吧?
最后,有一位退位的老大臣说他有办法。
皇帝将使者请到大殿,老臣胸有成足地拿着三根稻草,插入第一个金人的耳朵里,这稻草从另一边耳朵出来了。第二个金人的稻草从嘴巴里直接掉出来,而第三个金人,稻草进去后掉进了肚子,什么响动也没有。老臣说:第三个金人最有价值!使者默默无语,答案正确。
这个故事告诉我们,最有价值的人,不一定是最能说的人的人。老天给我们两只耳朵一个嘴巴,本来就是让我们多听少说的。善于倾听,才是成熟的人最基本的素质。
2\
陈阿土是台湾的农民,从来没有出过远门。攒了半辈子的钱,终于参加一个旅游团出了国。
国外的一切都是非常新鲜的,关键是,陈阿土参加的是豪华团,一个人住一个标准间。这让他新奇不已。
早晨,服务生来敲门送早餐时大声说道:“GOODMORNING SIR!”
陈阿土愣住了。这是什么意思呢?在自己的家乡,一般陌生的人见面都会问:“您贵姓?”
于是陈阿土大声叫道:“我叫陈阿土!”
如是这般,连着三天,都是那个服务生来敲门,每天都大声说:“GOODMORNING SIR!”而陈阿土亦大声回道:“我叫陈阿土!”
但他非常的生气。这个服务生也太笨了,天天问自己叫什么,告诉他又记不住,很烦的。终于他忍不住去问导游,“GOODMORNING
SIR!”是什么意思,导游告诉了他,天啊!!真是丢脸死了。
陈阿土反复练习“GOODMORNING SIR!”这个词,以便能体面地应对服务生。
又一天的早晨,服务生照常来敲门,门一开陈阿土就大声叫道:“GOODMORNING SIR!”
与此同时,服务生叫的是:“我是陈阿土!”
这个故事告诉我们,人与人交往,常常是意志力与意志力的较量。不是你影响他,就是他影响你,而我们要想成功,一定要培养自己的影响力,只有影响力大的人才可以成为最强者。
皇帝想了许多的办法,请来珠宝匠检查,称重量,看做工,都是一模一样的。怎么办?使者还等着回去汇报呢。泱泱大国,不会连这个小事都不懂吧?
最后,有一位退位的老大臣说他有办法。
皇帝将使者请到大殿,老臣胸有成足地拿着三根稻草,插入第一个金人的耳朵里,这稻草从另一边耳朵出来了。第二个金人的稻草从嘴巴里直接掉出来,而第三个金人,稻草进去后掉进了肚子,什么响动也没有。老臣说:第三个金人最有价值!使者默默无语,答案正确。
这个故事告诉我们,最有价值的人,不一定是最能说的人的人。老天给我们两只耳朵一个嘴巴,本来就是让我们多听少说的。善于倾听,才是成熟的人最基本的素质。
2\
陈阿土是台湾的农民,从来没有出过远门。攒了半辈子的钱,终于参加一个旅游团出了国。
国外的一切都是非常新鲜的,关键是,陈阿土参加的是豪华团,一个人住一个标准间。这让他新奇不已。
早晨,服务生来敲门送早餐时大声说道:“GOODMORNING SIR!”
陈阿土愣住了。这是什么意思呢?在自己的家乡,一般陌生的人见面都会问:“您贵姓?”
于是陈阿土大声叫道:“我叫陈阿土!”
如是这般,连着三天,都是那个服务生来敲门,每天都大声说:“GOODMORNING SIR!”而陈阿土亦大声回道:“我叫陈阿土!”
但他非常的生气。这个服务生也太笨了,天天问自己叫什么,告诉他又记不住,很烦的。终于他忍不住去问导游,“GOODMORNING
SIR!”是什么意思,导游告诉了他,天啊!!真是丢脸死了。
陈阿土反复练习“GOODMORNING SIR!”这个词,以便能体面地应对服务生。
又一天的早晨,服务生照常来敲门,门一开陈阿土就大声叫道:“GOODMORNING SIR!”
与此同时,服务生叫的是:“我是陈阿土!”
这个故事告诉我们,人与人交往,常常是意志力与意志力的较量。不是你影响他,就是他影响你,而我们要想成功,一定要培养自己的影响力,只有影响力大的人才可以成为最强者。
经营爱情
经营婚姻
一切的一切都要用心去经营
幸福要靠自己把握 用心把握
用心 努力
让生活的每一天充满快乐
让生活的每一天都满是激情
让生活的时时刻刻都溢满幸福
用心
经营婚姻
一切的一切都要用心去经营
幸福要靠自己把握 用心把握
用心 努力
让生活的每一天充满快乐
让生活的每一天都满是激情
让生活的时时刻刻都溢满幸福
用心
写在前面的话
由于原来的帖子掺杂了太多的其他内容,使得文章已经变调了,因此重新整理补充后新开这个帖子。很多朋友希望我给予一些职业生涯上的建议,我只能说,我也只是一个普通人,不是来当上帝给标准答案的,我也不知道什么答案适合你,何况社会学范畴里也没有什么标准答案,写这个帖子的目的是为了帮助你自己找到自己的答案。授人以鱼不如授人以渔,我不会拿出一个答案给你,这样对你也不负责,我只能告诉你应该怎么想这个问题。
这一篇权当做求职的入门初级读物,或许对于已经过了这个阶段的朋友来说浅显了一点。
在开始以前,要把本文的立意申明一下,如果读者并不认同,请离开这个帖子。
1.如果你觉得这个世界太黑暗,你的一切不幸都是外界原因造成的,如果你觉得一切都不公平,那么这篇文章不适合你,这篇文章适合那些对于生活还有希望,并且能够面临最惨痛的失败仍不泯灭那一点希望的人。
2.如果你想不劳而获,你觉得通过什么样轻松快速的手段或者什么立竿见影的窍门就能够获得高薪高福利,这篇文章也不适合你,因为我只会用笨办法获得成功,我认为一切取巧的方式或许会取得一时的成功,但总有一天会让人付出代价的,而你不能控制付代价的时间和大小。
3.这篇文章也不适合认为自己已经了解整个社会的人,如果你是那样的人,应该写篇文章给我看,而不是来看我的文章,至少我还不太了解我所处的这个社会,很多时候我也会迷茫。
4.这篇文章也不适合没有经历过失败或者在失败中打滚不肯爬起来的人,人生当中不知道要经历多少次失败,每一次失败中我们不断成熟起来,要想成功,只能擦干眼泪咬着牙继续上路。
5.我们身边的绝大多数人包括我们的老板或者公司领导也是普通人,和我们大多数人一样,他们并不是特别恶劣的想要骗人的阴险家伙,等我们当了领导或许我们还不如他们,当我们觉得他们恶劣的时候,问题不一定全在他们身上,如果你不相信这一点,这篇文章也不适合你。
6.我不会教你具体怎么做(不是不教而是我的方法不一定适合你),我只会说可能你应该这样想,答案在每个人自己的心里,不在我的手里。
7.我承认有些人提到的厚黑学的非正常手段是有用的,但我不会传播这些,这是我的选择。
8.关于面试或者一些其他的具体经验,市面上有很多书,这个版也有很多很好的文章,本文就不再赘述首页推荐帖】
一次面试
故事先从昨天下午的一次面试说起,来面试的是一个刚刚毕业的大学生,85年的,男生。一见面印象就不太好,稀疏的胡子长长短短地留着,脸上很油,头发窝在脑袋上,看不出发型,眼镜片上乌蒙蒙的,我非常怀疑他能不能看得清我,好在从头到尾他都没看我一眼。他的表情一直让我摸不透,好像是那种不太高兴的表情,微皱着眉头,常常有那种“这我也没办法”的表情。
按耐下有些不愉快的心情,我还是开始正常给他面试,对于刚刚进社会的大学生,我也没报太高期望,但几个问题的问答还是迅速让我对他失去了兴趣,于是他开始和我谈薪水的事情。
“你们公司的薪水一般是多少?”
“这,相差比较大,没有一个统一的概念。”
“那象我这样的呢?”
“你能做什么呢?我总要根据你能做什么来考虑薪水吧?”
“反正应聘这个职位的应该总有个大概的薪水吧?”
“这个岗位,我们刚入职的员工从一千多到三千多都有的,情况不同。”
“一千多,大学本科的太低了吧?”
“我说也有三千多的,可是大学本科并不代表更多薪水哦。”
“你们是不是都喜欢选专科的?我去应聘会上,大多数公司都喜欢选专科的。”
“他们选专科的自然有他们的理由。”
“他们都觉得专科的比较能吃苦,我觉得这是不一定的。”
……
零七八碎还说了些其他的,只是我已经没有心情听下去了,最终我告诉他准备得太不够充分,很快就打发他走了。
其实我十分怀疑80年代人传说中的就业难,如果就业真的这么困难,那么为什么每次收到的简历中一般只有10%左右的人会来面试,而来面试的人大多数又往往如上面所说的这位,不能做好充分的准备。我知道如果我们公司是IBM的话情况会大不相同,但问题是,IBM这样的公司能有几家?前面碰到的这种应聘人员应该属于特别差的,大多数人的情况会比他好些,但还是有不少,我也记不得我曾经面试过多少这样的人了,总有很多无奈。写下这些文字的目的也是为了能帮上这些人,以此对社会尽自己一点绵薄之力罢了。
人这一辈子
我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽,最后大多跳到民企,比方说,唐骏。外企员工的成功很大程度上是公司的成功,并非个人的成功,西门子的确比国美大,但并不代表西门子中国经理比国美的老板强,甚至可以说差得很远。而进外企的人往往并不能很早理解这一点,把自己的成功90%归功于自己的能力,实际上,外企公司随便换个中国区总经理并不会给业绩带来什么了不起的影响。好了问题来了,当这些经理人40多岁了,他们的薪资要求变得很高,而他们的才能其实又不是那么出众,作为外企公司的老板,你会怎么选择?有的是只要不高薪水的,要出位的精明强干精力冲沛的年轻人,有的是,为什么还要用你?
从上面这个例子,其实可以看到我们的工作轨迹,二三十岁的时候,生活的压力还比较小,身体还比较好,上面的父母身体还好,下面又没有孩子,不用还房贷,也没有孩子要上大学,当个外企小白领还是很光鲜的,挣得不多也够花了。但是人终归要结婚生子,终归会老,到了40岁,父母老了,要看病要吃药,要有人看护,自己要还房贷,要过基本体面的生活,要养小孩……那个时候需要挣多少钱才够花才重要。所以,看待工作,眼光要放远一点,一时的谁高谁低并不能说明什么。
从这个角度上来说,我不太赞成过于关注第一份工作的薪水,更没有必要攀比第一份工作的薪水,这在刚刚出校园的学生中间是很常见的。正常人大概要工作35年,这好比是一场马拉松比赛,和真正的马拉松比赛不同的是,这次比赛没有职业选手,每个人都只有一次机会。要知到,有很多人甚至坚持不到终点,大多数人最后是走到终点的,只有少数人是跑过终点的,因此在刚开始的时候,去抢领先的位置并没有太大的意义。刚进社会的时候如果进500强公司,大概能拿到3k-6k/月的工资,有些特别技术的人才可能可以到8k/月,可问题是,5年以后拿多少?估计5k-10k了不起了。起点虽然高,但增幅有限,而且,后面的年轻人追赶的压力越来越大。
我前两天问我的一个销售,你会的这些东西一个新人2年就都学会了,但新人所要求的薪水却只是你的一半,到时候,你怎么办?
职业生涯就像一场体育比赛,有初赛、复赛、决赛。初赛的时候大家都刚刚进社会,大多数都是实力一般的人,这时候努力一点认真一点很快就能让人脱颖而出,于是有的人二十多岁做了经理,有的人迟些也终于赢得了初赛,三十多岁成了经理。然后是复赛,能参加复赛的都是赢得初赛的,每个人都有些能耐,在聪明才智上都不成问题,这个时候再想要胜出就不那么容易了,单靠一点点努力和认真还不够,要有很强的坚忍精神,要懂得靠团队的力量,要懂得收服人心,要有长远的眼光……
看上去赢得复赛并不容易,但,还不是那么难。因为这个世界的规律就是给人一点成功的同时让人骄傲自满,刚刚赢得初赛的人往往不知道自己赢得的仅仅是初赛,有了一点小小的成绩大多数人都会骄傲自满起来,认为自己已经懂得了全部,不需要再努力再学习了,他们会认为之所以不能再进一步已经不是自己的原因了。虽然他们仍然不好对付,但是他们没有耐性,没有容人的度量,更没有清晰长远的目光。就像一只愤怒的斗牛,虽然猛烈,最终是会败的,而赢得复赛的人则象斗牛士一样,不急不躁,跟随着自己的节拍,慢慢耗尽对手的耐心和体力。赢得了复赛以后,大约已经是一位很了不起的职业经理人了,当上了中小公司的总经理,大公司的副总经理,主管着每年几千万乃至几亿的生意。
最终的决赛来了,说实话我自己都还没有赢得决赛,因此对于决赛的决胜因素也只能凭自己的猜测而已,这个时候的输赢或许就像武侠小说里写得那样,大家都是高手,只能等待对方犯错了,要想轻易击败对手是不可能的,除了使上浑身解数,还需要一点运气和时间。世界的规律依然发挥着作用,赢得复赛的人已经不只是骄傲自满了,他们往往刚愎自用,听不进去别人的话,有些人的脾气变得暴躁,心情变得浮躁,身体变得糟糕,他们最大的敌人就是他们自己,在决赛中要做的只是不被自己击败,等着别人被自己击败。这和体育比赛是一样的,最后高手之间的比赛,就看谁失误少谁就赢得了决赛。
根源
你工作快乐么?你的工作好么?
有没有觉得干了一段时间以后工作很不开心?有没有觉得自己入错了行?有没有觉得自己没有得到应有的待遇?有没有觉得工作像一团乱麻每天上班都是一种痛苦?有没有很想换个工作?有没有觉得其实现在的公司并没有当初想象得那么好?有没有觉得这份工作是当初因为生存压力而找的,实在不适合自己?你从工作中得到你想要得到的了么?你每天开心么?
天涯上愤怒的人很多,你有没有想过,你为什么不快乐?你为什么愤怒?
其实,你不快乐的根源,是因为你不知道要什么!你不知道要什么,所以你不知道去追求什么,你不知道追求什么,所以你什么也得不到。
我总觉得,职业生涯首先要关注的是自己,自己想要什么?大多数人大概没想过这个问题,唯一的想法只是——我想要一份工作,我想要一份不错的薪水,我知道所有人对于薪水的渴望,可是,你想每隔几年重来一次找工作的过程么?你想每年都在这种对于工作和薪水的焦急不安中度过么?不想的话,就好好想清楚。饮鸩止渴,不能因为口渴就拼命喝毒药。越是焦急,越是觉得自己需要一份工作,越饥不择食,越想不清楚,越容易失败,你的经历越来越差,下一份工作的人看着你的简历就皱眉头。于是你越喝越渴,越渴越喝,陷入恶性循环。最终只能哀叹世事不公或者生不逢时,只能到天涯上来发泄一把,在失败者的共鸣当中寻求一点心理平衡罢了。大多数人都有生存压力,我也是,有生存压力就会有很多焦虑,积极的人会从焦虑中得到动力,而消极的人则会因为焦虑而迷失方向。所有人都必须在压力下做出选择,这就是世道,你喜欢也罢不喜欢也罢。
一般我们处理的事情分为重要的事情和紧急的事情,如果不做重要的事情就会常常去做紧急的事情。比如锻炼身体保持健康是重要的事情,而看病则是紧急的事情。如果不锻炼身体保持健康,就会常常为了病痛烦恼。又比如防火是重要的事情,而救火是紧急的事情,如果不注意防火,就要常常救火。找工作也是如此,想好自己究竟要什么是重要的事情,找工作是紧急的事情,如果不想好,就会常常要找工作。往往紧急的事情给人的压力比较大,迫使人们去赶紧做,相对来说重要的事情反而没有那么大的压力,大多数人做事情都是以压力为导向的,压力之下,总觉得非要先做紧急的事情,结果就是永远到处救火,永远没有停歇的时候。(很多人的工作也像是救火队一样忙碌痛苦,也是因为工作中没有做好重要的事情。)那些说自己活在水深火热为了生存顾不上那么多的朋友,今天找工作困难是当初你们没有做重要的事情,是结果不是原因。如果今天你们还是因为急于要找一份工作而不去思考,那么或许将来要继续承受痛苦找工作的结果。
我始终觉得我要说的话题,沉重了点,需要很多思考,远比唐笑打武警的话题来的枯燥乏味,但是,天下没有轻松的成功,成功,要付代价。请先忘记一切的生存压力,想想这辈子你最想要的是什么?所以,最要紧的事情,先想好自己想要什么。
什么是好工作
当初微软有个唐骏,很多大学里的年轻人觉得这才是他们向往的职业生涯,我在清华bbs里发的帖子被这些学子们所不屑,那个时候学生们只想出国或者去外企,不过如今看来,我还是对的,唐骏去了盛大,陈天桥创立的盛大,一家民营公司。一个高学历的海归在500强的公司里拿高薪水,这大约是很多年轻人的梦想,问题是,每年毕业的大学生都在做这个梦,好的职位却只有500个。
人都是要面子的,也是喜欢攀比的,即使在工作上也喜欢攀比,不管那是不是自己想要的。大家认为外企公司很好,可是好在哪里呢?好吧,他们在比较好的写字楼,这是你想要的么?他们出差住比较好的酒店,这是你想要的么?别人会羡慕一份外企公司的工作,这是你想要的么?那一切都是给别人看的,你干吗要活得那么辛苦给别人看?另一方面,他们薪水福利一般,并没有特别了不起,他们的晋升机会比较少,很难做到很高阶的主管,他们虽然厌恶常常加班,却不敢不加班,因为“你不干有得是人干”,大部分情况下会找个台湾人香港人新加坡人来管你,而这些人又往往有些莫名其妙的优越感。你想清楚了么?500强一定好么?找工作究竟是考虑你想要什么,还是考虑别人想看什么?
我的大学同学们大多数都到美国了,甚至毕业这么多年了,还有人最近到国外去了。出国真的有那么好么?我的大学同学们,大多数还是在博士、博士后、访问学者地挣扎着,至今只有一个正经在一个美国大学里拿到个正式的教职。国内的教授很难当么?我有几个表亲也去了国外了,他们的父母独自在国内,没有人照顾,有好几次人在家里昏倒都没人知道,出国,真的这么光彩么?就像有人说的“很多事情就像看A片,看的人觉得很爽,做的人未必。”
人总想找到那个最好的,可是,什么是最好的?你觉得是最好的那个,是因为你的确了解,还是因为别人说他是最好的?即使他对于别人是最好的,对于你也一定是最好的么?
对于自己想要什么,自己要最清楚,别人的意见并不是那么重要。很多人总是常常被别人的意见所影响,亲戚的意见,朋友的意见,同事的意见……问题是,你究竟是要过谁的一生?人的一生不是父母一生的续集,也不是儿女一生的前传,更不是朋友一生的外篇,只有你自己对自己的一生负责,别人无法也负不起这个责任。自己做的决定,至少到最后,自己没什么可后悔。对于大多数正常智力的人来说,所做的决定没有大的对错,无论怎么样的选择,都是可以尝试的。比如你没有考自己上的那个学校,没有入现在这个行业,这辈子就过不下去了?就会很失败?不见得。
我想,好工作,应该是适合你的工作,具体点说,应该是能给你带来你想要的东西的工作,你或许应该以此来衡量你的工作究竟好不好,而不是拿公司的大小,规模,外企还是国企,是不是有名,是不是上市公司来衡量。小公司,未必不是好公司,赚钱多的工作,也未必是好工作。你还是要先弄清楚你想要什么,如果你不清楚你想要什么,你就永远也不会找到好工作,因为你永远只看到你得不到的东西,你得到的,都是你不想要的。
可能,最好的,已经在你的身边,只是,你还没有学会珍惜。人们总是盯着得不到的东西,而忽视了那些已经得到的东西。
长跑
我妻子在一家美国的IT公司工作,是家跨国公司,当初她进这家公司的时候,人事经理说“能进到我们这种公司工作,是件很Lucky的事情。”必须要说当时他们的福利在某种角度上来说,很好。除了一切应有的福利,公司免费供应早餐和饮料,车贴,饭补,取暖费,13个月工资,很多国外培训的机会……薪水应该说也不低,至少在外企也是中上水平。可是,这样的一家公司,人员流动率非常高,常常有人辞职,刚开始的时候我很奇怪,既然是这么Lucky地加入公司,为什么还有人想走?后来发现,这个公司加班很频繁,加班到7、8点算正常,有的时候会加班到半夜。
常常加班的日子偶尔过过还能忍受,持续几个月甚至一年就会很让人难受了,大约没有很多人能够持久加班的。所以加班频繁的公司,人员基本也待不久,最多3年,大多还是要走的。开始的时候我妻子也觉得加班很正常,我一直不同意她过多加班,倒不是因为要她顾家。我认为一份正常的工作应该能够在上班时间内完成,如果上班时间完不成,只有两种可能,一种是工作方法有问题,另一种是工作太多,第一种是自己的问题,必须找到问题的所在。第二种是工作的安排不合理,必须和老板沟通调整,否则人就是在干耗精力。在我看来,除了工作狂,大多数人需要正常的休息和休闲,才能保证工作效率,否则,反而容易夭折。
我妻子开始的时候对我的话也很不理解,认为大家都加班,我不加班那不是显得很那个?我说你应该把时间花在让自己如何不加班就完成工作,而不是花在加班本身上面。很多人刚刚进公司的时候很有干劲,也希望用这种诚意来表达自己是很努力的,但是,往往事与愿违,加班多的人,人在心不在,其实能力也没有提高,工作质量也没有提高,时间长了,产生厌恶工作的情绪,干不了多久就辞职了。
之前我说,人生的职业生涯就像一场马拉松比赛,很多人跑了一半就跑不动了。上面说的就是这种情况,我常常告诉我妻子,路还长着呢,这个时候不用急,虽然开始的时候大家都急于表现,急于成功,没有关系,让他们去,一两年之后他们就坚持不住了,那个时候,你还跑得正轻松,他们却已经退出比赛了。正如我所预言的,当初和她资历相当甚至表现突出的,大多辞职了,没辞职的也每日过的苦不堪言。大多数人辞职都是因为不快乐,而加班不是唯一的不快乐的理由。
要让自己在职业的道路上走得更远,首先要让自己工作得快乐,如果一份工作让你觉得不快乐,甚至很受罪,那么你就是那个坚持不到终点的选手,即使你坚持到终点了,这样痛苦的人生有意思么?其次要对未来做好规划,尽量让自己劳逸结合,要知道那是个很漫长的过程,不要在一开始就把力气和耐心耗尽了,当力气耐心耗尽而又遭遇挫折,大多数人就会陷入沮丧悲观,跳槽换工作也就变成很自然的事情。对于初入职场还不能很好控制自己心态的人,掌握好自己的节奏,不要跟着别人的脚步乱了自己的节奏,清楚自己在做什么,清楚自己的目标,至于别人上去了还是下去了,让他去吧,就当没看见。
一定会有人说,我们公司就是提倡加班,这一点后面我们还会提到,也一定会有人说,我如果不每天加班老板就把我给炒了,如果真的只是因为这个原因就把你给炒了,你应该庆幸才对,还好没在这公司耽误太久时间。
普通人
我发现中国人的励志和国外的励志存在非常大的不同,中国的励志比较鼓励人立下大志愿,卧薪尝胆,有朝一日成富成贵。而国外的励志比较鼓励人勇敢面对现实生活,面对普通人的困境,虽然结果也是成富成贵,但起点不一样,相对来说,我觉得后者在操作上更现实,而前者则需要用999个失败者来堆砌一个成功者的故事。
我们都是普通人,普通人的意思就是,概率这件事是很准的。因此,我们不会买彩票中500万,我们不会成为比尔盖茨或者李嘉诚,我们不会坐飞机掉下来,我们当中很少的人会创业成功,我们之中有30%的人会离婚,我们之中大部分人会活过65岁……
所以请你在想自己要什么的时候,要得“现实”一点,你说我想要做李嘉诚,抱歉,我帮不上你。成为比尔盖茨或者李嘉诚这种人,是靠命的,看我写的这篇文章绝对不会让你成为他们,即使你成为了他们,也绝对不是我这篇文章的功劳。“王侯将相宁有种乎”但真正当皇帝的只有一个人,王侯将相,人也不多。目标定得高些对于喜欢挑战的人来说有好处,但对于大多数普通人来说,反而比较容易灰心沮丧,很容易就放弃了。
回过头来说,李嘉诚比你有钱大致50万倍,他比你更快乐么?或许。有没有比你快乐50万倍,一定没有。他比你最多也就快乐一两倍,甚至有可能还不如你快乐。寻找自己想要的东西不是和别人比赛,比谁要得更多更高,比谁的目标更远大。虽然成为李嘉诚这个目标很宏大,但你并不见得会从这个目标以及追求目标的过程当中获得快乐,而且基本上你也做不到。你必须听听你内心的声音,寻找真正能够使你获得快乐的东西,那才是你想要的东西。
你想要的东西,或者我们把它称之为目标,目标其实并没有高低之分,你不需要因为自己的目标没有别人远大而不好意思,达到自己的目标其实就是成功,成功有大有小,快乐却是一样的。我们追逐成功,其实追逐的是成功带来的快乐,而非成功本身。职业生涯的道路上,我们常常会被攀比的心态蒙住眼睛,忘记了追求的究竟是什么,忘记了是什么能使我们更快乐。
社会上一夜暴富的新闻很多,这些消息,总会在我们的心里面掀起很多涟漪,涟漪多了就变成惊涛骇浪,心里的惊涛骇浪除了打翻承载你目标的小船,并不会使得你也一夜暴富。“只见贼吃肉,不见贼挨揍。”我们这些普通人既没有当贼的勇气,又缺乏当贼的狠辣绝决,虽然羡慕吃肉,却更害怕挨揍,偶尔看到几个没挨揍的贼就按奈不住,或者心思活动,或者大感不公,真要叫去做贼,却也不敢。
我还是过普通人的日子,要普通人的快乐,至少,晚上睡得着觉。
选择目标
你可能没有办法一下子就搞清楚自己想要什么,这很正常,如果这是个很容易想明白的事情,我也就没有必要在这里大费笔墨了。
想要一次想明白一个大的命题,其实是一件自欺欺人的事情。像“今年要如何达成销售指标”这种问题,绝对不是一个下午能够像明白的。要想清楚这个事情,先要把这个问题细化成几个小问题,比如“代理商体系要如何建立”“销售人员要什么时候招聘到位,什么时间培训完成”等等。这些问题可能还是没有办法一次想明白,那就继续细化,直到细化成一个个一次能够想明白的小问题。
我之前的文字语焉不详地提出了一些需要人思考的问题,这些问题很多人会觉得一下子想不到答案,人们更希望我给出直接的解决方法。其实,只要掌握了思考的方法,自己想也不难。只是有一点需要注意的,注意循序渐进的原则,不要一开始就给自己一个非常有难度的题目,否则很快就会有挫折感,很快就会让自己失掉信心。很多事情做不下去就是因为开始的时候给自己设立了过高的目标。你大概要做一个计划来想明白这个事情,而不是在一个无聊的下午决定想一下,我保证你想不出任何结果。
你可以找张纸,把自己要的东西写下来,越具体越好,因为目标越是具体,就越容易达到。我们举个例子,环游地球这个目标很不具体,我根本不知道要怎么实现,如果我把这个目标具体化,今年去东南亚旅游,明年去日本澳大利亚,后年中东,大后年美国加拿大,然后是南非和摩洛哥,这样的安排并不难做到,到东南亚预算¥5000一周时间,日本澳大利亚¥30000两周时间,中东¥20000一周时间,美国加拿大再加上墨西哥¥40000两周时间,非洲¥40000两周时间,总共需要¥135000,加上2个月的假期,一个最基本的环游世界过程,通过5年时间来实现并不那么困难。
当你把想要的东西写在了纸上,就请你坚持去追求这个目标,直到实现。你有了个目标,也有了一条基本可以实行的达成这个目标的路,接下来按着路走就是了。但实际上,很多人会被各种各样的原因或者诱惑引偏了目标,最终自己都不知道要追求什么了。比如上面的那个目标,可能,有人突然觉得朋友们都开辆车挺酷,决定还是买辆车,可能觉得买个房子让自己舒服一点也不错,决定买房子,可能过两年觉得还是现实一点,大家做啥我也做啥吧,最终没有去坚持。
绝大多数时候,成功与不成功,只是差那坚持的一步而已。很多时候的不能坚持,并不是因为太艰苦,而是因为目标的不明确。譬如赶夜路,四周黑漆漆的一片,如果前面有一盏清晰的明灯,是不是比较容易走到?如果前面有很多闪烁不定的灯光,或者什么亮光也没有,那么你该往哪里走呢?
先不要想做销售还是做管理,也不要想是做服装还是做IT,这些东西都是之后才要选择的,你先要想什么能使你快乐,你想要变得富有?你想要家庭和睦?你想要生活悠闲?你想要很好的人缘?……你,大概不可能什么都想要,什么都想要的结果是什么都得不到,追求目标需要专注而坚持。不要管别人得到了什么,不要去和别人攀比,别人得到的那些东西你并不一定真正想要,你真正需要关心的是你要什么。很多人的不快乐是因为别人有的他都想得到,所有得到的又都不喜欢,其实根本不知道自己想要什么。想好了要什么,然后心要定,不要今天才下定决心好好工作,明天觉得股市大涨也按奈不住。即使是赌博,赢的也是心定的人,心不定的人,永远是输家。
有很多时候如果你选择了一样东西,也就意味着你必须放弃很多其他的东西,你选择事业的发达,那么你就没有选择跟谁做朋友喜欢谁不喜欢谁的权利了。你的客户你的上司你的合作伙伴,你喜欢也得喜欢,不喜欢也得喜欢,你基本上没有选择的权利,你非要张扬个性,要么你还是不要选择事业发达,要么等你有资本了再说。这不是对错的问题,是成本的问题。成功永远是有成本的,一年挣一百万和十年挣一百万,前者叫作成功,后者叫做普通。接受一个可以接受的结果,往往比追求一个完美的结果的成本低得很多。选择目标也是一样,要考虑成本,选择一个可以接受的目标往往比选择一个宏大的目标成本要低得多。
期望
期望是一件很重要的事情,期望是对于未来的评估,比如买股票我们一定会对一个股票有期望,我们期望它会涨才会买。事实上我们却往往缺乏期望的本事,买股票如此,做其他事情也是如此。
还是我妻子的例子,她有一天跟我抱怨说“为什么我都跟他们说得那么清楚了,他们还是会做错?”我说,你知道他们每次都会犯错,而这一次你期望他们会不犯错?其实这是你的问题,你对别人期望太高。既然你都知道他们每次都会错,这一次你就应该假定他们还是会犯错,然后你准备好给他们改错的时间,准备发现他们为什么会犯错的原因。我们总是会对别人期望太高,然后失望又太深。
以大多数人现在的心态,90%的情况下,别人会让你失望的,那不是他的错,而是你期望太高。如果你降低你的期望值,你会发现生活美好了很多。如果你的成功是基于过高的期望,大概,你不会成功。你必须以对别人比较低的期望值来构筑自己的未来,打个比方,做明年指标的时候,手下的销售人员都说他们能做2000万生意,你要是真信,你就惨了,最好先打好算盘,他们也就做500万,剩下的赶紧找其他办法来补足,指标也不要报太高。需要注意的是,心里降低对别人的期望值,但嘴巴上不能对别人讲,对别人还是要用积极鼓励的方式。
很多人跟自己的直接上司搞不好关系,其实是因为对直接领导期望过高。有了功劳他上,有了责任你扛,有的时候他把领导当奴隶主,觉得可以对你呼来喝去,有的时候他简单粗暴,有的时候他拿不出什么好办法却打压你的方法……这是正常的期望值。他友善,他谦虚,他耐心,他脾气很好不乱骂人,他总是能看到你的努力和成绩,他总是在你失败的时候循循善诱,他总是会给你公平的待遇,他总会体谅你的苦衷,这属于过高的期望值。如果我们期望值过高,后果可想而知,巨大的落差带来巨大的失落感,觉得这公司真糟糕,怎么会让这么个烂人做领导?巨大到原来可能他只有20分坏而在强大的失落和愤懑中感觉有80分。如果你期望值比较低,原来就预计他有40分坏,结果他只有20分坏,反而你会觉得这份工作还不错,没你预期的那么糟糕。如果你都已经期望他会抢功劳,推责任,拍老板马屁,那么你还想不出办法来避免这些事情么?就像你明明知道马路上会有人抢你,你还被他抢到,那么你也有点问题了。这样做,不论结果怎样,都是惊喜。
我们也会对我们的下属期望过高,你觉得他会自己没事的时候多研究研究专业知识,那你恐怕要失望了,无聊的时候MSN和QQ乃至“连连看”才是他做得最多的事情。如果你期望过高你会觉得很失败,为什么我这么拼命而这些人天天打游戏?为什么我那么多次苦口婆心他们就一点没有反应?如果你本来就预计他会偷懒,他会报销的时候做点小手脚,你还会那么震惊那么失望么?
我们还会对我们的同事期望过高,你觉得他应该理解你的苦衷的时候他会摆你一道,你觉得他会和你一起承担责任的时候他假装没看见,你期望他能对你的帮助感恩的时候,他说这都是他的功来,而你是不怀好意来抢功劳的。
我们甚至会对自己期望太高,我们说我们很牛B,能做啥做啥,结果没做到。我们觉得自己跟某人关系很好很好,结果发现关键时刻他从来不帮忙。我们觉得自己能经得起诱惑,等诱惑真的摆在眼前,却说,死就死吧,顾不得那么多了。我们觉得我们能够控制自己的情绪,却常常会一时冲动。没有达到期望值,人们就会给自己找借口,等找借口成为了一种习惯,人也就废掉了。
对于工作的很多愤怒很多不满意其实是期望太高,如果期望不那么高,会发现你的工作其实还不错。而降低了期望值以后,根据比较低的期望值来做准备,就会发现结果都能在你的掌控之中,没有那么多“意外”了。有句话叫做“Hope for the best, prepare for the worst.”
跳槽与积累
首先要说明,工作是一件需要理智的事情,所以不要在工作上耍个性,天涯上或许会有人觉得你很有个性而叫好,煤气公司电话公司不会因为觉得你很有个性而免了你的帐单。当你很帅地炒掉了你的老板,当你很酷地挖苦了一番招聘的HR,账单还是要照付,只是你赚钱的时间更少了,除了你自己,没人受损失。
我并不反对跳槽,但跳槽决不是解决问题的办法,而且频繁跳槽的后果是让人觉得没有忠诚度可言,而且不能安心工作。现在很多人从网上找工作,很多找工作的网站常常给人出些馊主意,要知道他们是盈利性企业,当然要从自身盈利的角度来考虑,大家越是频繁跳槽频繁找工作他们越是生意兴隆,所以鼓动人们跳槽是他们的工作。所以他们会常常告诉你,你拿的薪水少了,你享受的福利待遇差了,又是“薪情快报”又是“赞叹自由奔放的灵魂”。至于是否会因此让你不能安心,你跳了槽是否解决问题,是否更加开心,那个,他们管不着。
要跳槽肯定是有问题,一般来说问题发生了,躲是躲不开的,很多人跳槽是因为这样或者那样的不开心,如果这种不开心,在现在这个公司不能解决,那么在下一个公司多半也解决不掉。你必须相信,90%的情况下,你所在的公司并没有那么烂,你认为不错的公司也没有那么好。就像围城里说的,“城里的人拼命想冲出来,而城外的人拼命想冲进去。”每个公司都有每个公司的问题,没有问题的公司是不存在的。换个环境你都不知道会碰到什么问题,与其如此,不如就在当下把问题解决掉。很多问题当你真的想要去解决的时候,或许并没有那么难。有的时候你觉得问题无法解决,事实上,那只是“你觉得”。
人生的曲线应该是曲折向上的,偶尔会遇到低谷但大趋势总归是曲折向上的,而不是象脉冲波一样每每回到起点,我见过不少面试者,30多岁了,四五份工作经历,每次多则3年,少则1年,30多岁的时候回到起点从一个初级职位开始干起,拿基本初级的薪水,和20多岁的年轻人一起竞争,不觉得有点辛苦么?这种日子好过么?
我非常不赞成在一个行业超过3年以后换行业,基本上,35岁以前我们的生存资本靠打拼,35岁以生存的资本靠的就是积累,这种积累包括人际关系,经验,人脉,口碑……如果常常更换行业,代表几年的积累付之东流,一切从头开始,如果换了两次行业,35岁的时候大概只有5年以下的积累,而一个没有换过行业的人至少有了10年的积累,谁会占优势?工作到2-3年的时候,很多人觉得工作不顺利,好像到了一个瓶颈,心情烦闷,就想辞职,乃至换一个行业,觉得这样所有一切烦恼都可以抛开,会好很多。其实这样做只是让你从头开始,到了时候还是会发生和原来行业一样的困难,熬过去就向上跨了一大步,要知道每个人都会经历这个过程,每个人的职业生涯中都会碰到几个瓶颈,你熬过去了而别人没有熬过去你就领先了。跑长跑的人会知道,开始的时候很轻松,但是很快会有第一次的难受,但过了这一段又能跑很长一段,接下来会碰到第二次的难受,坚持过了以后又能跑一段,如此往复,难受一次比一次厉害,直到坚持不下去了。大多数人第一次就坚持不了了,一些人能坚持到第二次,第三次虽然大家都坚持不住了,可是跑到这里的人也没几个了,这点资本足够你安稳活这一辈子了。
一份工作到两三年的时候,大部分人都会变成熟手,这个时候往往会陷入不断的重复,有很多人会觉得厌倦,有些人会觉得自己已经搞懂了一切,从而懒得去寻求进步了。很多时候的跳槽是因为觉得失去兴趣了,觉得自己已经完成比赛了。其实这个时候比赛才刚刚开始,工作两三年的人,无论是客户关系,人脉,手下,和领导的关系,在业内的名气……还都是远远不够的,但稍有成绩的人总是会自我感觉良好的,每个人都觉得自己跟客户关系铁得要命,觉得自己在业界的口碑好得很。其实可以肯定地说,一定不是,这个时候,还是要拿出前两年的干劲来,稳扎稳打,积累才刚刚开始。
你足够了解你的客户吗?你知道他最大的烦恼是什么吗?你足够了解你的老板么?你知道他最大的烦恼是什么吗?你足够了解你的手下么?你知道他最大的烦恼是什么吗?如果你不知道,你凭什么觉得自己已经积累够了?如果你都不了解,你怎么能让他们帮你的忙,做你想让他们做的事情?如果他们不做你想让他们做的事情,你又何来的成功?
实干
很久以前炎帝有个小女儿,叫做女娃,在东海游玩,被淹死了。女娃死了以后,气愤难平,化身作鸟,书中记载“有鸟焉,其状如乌;文首、白喙、赤足,名曰精卫。”
陶渊明说“精卫衔微木,将以填沧海。”我总是被祖先身上这股子执著劲感动,不过今天要说的不是执著而是行动。精卫气愤之下没有上论坛发一篇帖子,把东海一通臭骂,然后控诉天下的黑暗世事的不公,而是立刻动手,化身为鸟开始填海。不知道后来东海被她填平了没有,但是相信总有一天会被她填平的。
“人因梦想而伟大。”有了梦想还是要动手去做的,无论梦想得多么好,永远停留在梦想上最终不过是做梦而已。精卫的办法虽然笨了点,好在马上就动手做,也许做起来以后她会发觉这个方法效率不好,然后想办法改进,但是如果不动手去做,永远也实现不了梦想。与此有异曲同工之妙的,愚公是也。愚公想好了就动手做,换作现代网络人,一定是发一帖子《论门前有山的不合理性》,然后有人回《十个理由驳门前有山的不合理性》,双方开始论战,又发文《看看人家河曲智叟是如何对待门前大山的》,开始那人回曰《坚决反对智叟文化对我传统文化的侵蚀》,高帽子大理论满天飞舞,简直可以出一本论文集。最后一路论战到《从门前的大山看社会的黑暗和神仙的腐败》,责问为何天帝不过问此事,难道天帝是白吃供奉的么?门前的大山虽然是小事,但是神仙的责任不就是照护天下百姓么?岂能因善小而不为?众人一通感慨,是啊,是啊,但愿有圣人出,平乱世,大庇我等寒士俱欢颜。感概完毕,大家回家该睡觉睡觉,该吃饭吃饭,第二天就当这事情从来没发生过。
生活中人们总是有着很多美好的想法和计划,可是大多数只是睡觉前躺在床上想想而已,总是想“等什么时候”有时间了再去做,岂知,若不动手开始做,这“什么时候”永远也不会到来,因此就只能总是做梦了。生活中并不会平白跳出一段空白的时间,即使有了这样的空白时间,大多数人也是在想办法找事情打发时间,看看电视,上上网,挖挖地雷,翻翻纸牌,而从不把这时间当作“什么时候”。
快乐工作不会从天上掉下来,只有靠自己去创造,不能坐在那里等,做就比不做好,按照电影《霸王别姬》里面说的,“人得自己成全自己。”开始的时候可能做得不好,没什么关系,有谁是一开始就会的,不会学起来就是了。做事情不像开灯,一拨开关,灯就亮了,再一拨灯就灭了。没这么简单容易,往往就和锻炼身体一样,花了很多时间,很多努力才能积累起一点点来,而这一点点,稍稍放纵就前功尽弃了。所以不可能有那么一天,突然想做就做成了,一定是不断积累,失败,成功,再失败,再成功。也没有那种特效药,只要一个方法事情就做成了,不会有的。开始的时候方法笨一点没有关系,只要认真做就能不断改进,越早开始动手,积累的东西越多,越早碰到失败越接近成功。所以,不要等到那“什么时候”。
人们说“什么时候”的时候,大多也就是说“没有时候”的意思,以前做销售的时候,如果我的客户对我说“什么时候”,我就知道他不想跟我做生意了,他如果想,他一定知道具体是什么时候。
前两天看一文章,里面提到电影学院招生,问道如何发展中国电影,答什么的都有,有说要学习好莱坞的,有说要加大投入多拍片的,有说要更加商业化的,惟独一女士答曰“应该每星期去看一次电影。”这,才是国人缺乏的实干精神。我相信很多人在工作当中都有很好的想法,宏大的理想,眩目的理论,但真要动手,却常常在等“什么时候”,岁月蹉跎,“什么时候”始终也没有来,而这些想法也始终只是想法,没变成具体的东西,你也就还是那样不成功。
看人家精卫,一句废话没有,心里气,立刻动手。人生也是如此,最终回首自己这一辈子,总是问自己做了什么,而不是说了什么,或者想了什么。
等待
这是个浮躁的人们最不喜欢的话题,本来不想说这个话题,因为会引起太多的争论,而我又无意和人争论这些,但是考虑到对于职业生涯的长久规划,这是一个躲避不了的话题,还是决定写一写,不爱看的请离开吧。
并不是每次穿红灯都会被汽车撞,并不是每个罪犯都会被抓到,并不是每个错误都会被惩罚,并不是每个贪官都会被枪毙,并不是你的每一份努力都会得到回报,并不是你的每一次坚持都会有人看到,并不是你每一点付出都能得到公正的回报,并不是你的每一个善意都能被理解……这个,就是世道。好吧,世道不够好,可是,你有推翻世道的勇气么?如果没有,你有更好的解决办法么?有很多时候,人需要一点耐心,一点信心。每个人总会轮到几次不公平的事情,而通常,安心等待是最好的办法。
有很多时候我们需要等待,需要耐得住寂寞,等待属于你的那一刻。周润发等待过,刘德华等待过,周星驰等待过,王菲等待过,张艺谋也等待过……看到了他们如今的功成名就的人,你可曾看到当初他们的等待和耐心?你可曾看到金马奖影帝在街边摆地摊?你可曾看到德云社一群人在剧场里给一位观众说相声?你可曾看到周星驰的角色甚至连一句台词都没有?每一个成功者都有一段低沉苦闷的日子,我几乎能想象得出来他们借酒浇愁的样子,我也能想象得出他们为了生存而挣扎的窘迫。在他们一生最中灿烂美好的日子里,他们渴望成功,但却两手空空,一如现在的你。没有人保证他们将来一定会成功,而他们的选择是耐住寂寞。如果当时的他们总念叨着“成功只是属于特权阶级的”,你觉得他们今天会怎样?
曾经我也不明白有些人为什么并不比我有能力却要坐在我的头上,年纪比我大就一定要当我的领导么?为什么有些烂人不需要努力就能赚钱?为什么刚刚改革开放的时候的人能那么容易赚钱,而轮到我们的时候,什么事情都要正规化了?有一天我突然想,我还在上学的时候他们就在社会里挣扎奋斗了,他们在社会上奋斗积累了十几二十年,我们新人来了,他们有的我都想要,我这不是在要公平,我这是在要抢劫。因为我要得太急,因为我忍不住寂寞。二十多岁的男人,没有钱,没有事业,却有蓬勃的欲望。
人总是会遇到挫折的,人总是会有低潮的,人总是会有不被人理解的时候的,人总是有要低声下气的时候,这些时候恰恰是人生最关键的时候,因为大家都会碰到挫折,而大多数人过不了这个门槛,你能过,你就成功了。在这样的时刻,我们需要耐心等待,满怀信心地去等待,相信,生活不会放弃你,机会总会来的。至少,你还年轻,你没有坐牢,没有生治不了的病,没有欠还不起的债。比你不幸的人远远多过比你幸运的人,你还怕什么?路要一步步走,虽然到达终点的那一步很激动人心,但大部分的脚步是平凡甚至枯燥的,但没有这些脚步,或者耐不住这些平凡枯燥,你终归是无法迎来最后的那些激动人心。
逆境,是上帝帮你淘汰竞争者的地方。要知道,你不好受,别人也不好受,你坚持不下去了,别人也一样,千万不要告诉别人你坚持不住了,那只能让别人获得坚持的信心,让竞争者看着你微笑的面孔,失去信心,退出比赛。胜利属于那些有耐心的人。
在最绝望的时候,我会去看电影《The Pursuit of Happyness》《Jerry Maguire》,让自己重新鼓起勇气,因为,无论什么时候,我们总还是有希望。当所有的人离开的时候,我不失去希望,我不放弃。每天下班坐在车里,我喜欢哼着《隐形的翅膀》看着窗外,我知道,我在静静等待,等待属于我的那一刻。
原贴里伊吉网友的话我很喜欢,抄录在这里:
每个人都希望,自己是独一无二的特殊者
含着金匙出生、投胎到好家庭、工作安排到电力局拿1w月薪这样的小概率事件,当然最好轮到自己
红军长征两万五、打成右派反革命、胼手胝足牺牲尊严去奋斗,最好留给祖辈父辈和别人
自然,不是每个吃过苦的人都会得到回报
但是,任何时代,每一个既得利益者身后,都有他的祖辈父辈奋斗挣扎乃至流血付出生命的身影
羡慕别人有个好爸爸,没什么不可以
问题是,你的下一代,会有一个好爸爸吗?
至于问到为什么不能有同样的赢面概率?我只能问:为什么物种竞争中,人和猴子不能有同样的赢面概率?
物竞天择。猴子的灵魂不一定比你卑微,但你身后有几十万年的类人猿进化积淀。
成功的态度
必须要承认成功是一件很困难的事情,有太多的因素在阻止我们成功,甚至我们自己也在阻止我们自己成功。
我看到过很多销售在去客户那里之前忧心忡忡,“他会不会赶我出来?”“如果他不理我怎么办?”“我的东西会不会太贵了?”我也看到过很多人面对机会停步不前,“这样做大概不行吧。”“他大概不会理我吧?”“我的方案他估计会不喜欢吧?”“好工作斗数属于特权阶层的,我们这种小老百姓只能苟延残喘。”……没试过怎么知道不行,试一下会怎样?有这种想法的大多是生活态度比较消极的人,而消极的人通常不是把脑筋放在怎么做才行,而是把脑筋放在为什么不行。外界的障碍已经够多了,为什么还要自己给自己设立障碍?
态度决定很多事情,你可以悲观地看待事情,然后用悲观的做法,等待失败,把自己的悲观带给别人,也可以乐观地看待事情,用乐观的做法,让别人也乐观起来。往往,成功的人,大多是乐观的。我们也必须相信,我们所处的这个历史环境,既不是特别好,也不是特别差,我们的周围的人和环境,既不是特别优秀,也不是特别烂。我们没什么好抱怨的。这个世界基本上,有两种人,一种人永远在解释自己为什么做不到,一种人从不解释,因为他不是已经成功就是花时间在研究如何成功,没时间解释。
我们改变不了这个社会,面对这种我们改变不了的情况,我们可以选择抱怨,也可以选择面对。我一直是不太喜欢负面悲观的态度的,很多人总是喜欢把目光放在社会的黑暗面,似乎自己的所有不幸都是这个社会的错。这样的心态对自己一点帮助也没有,只会让自己的心情更加糟糕,更何况,实际上我们的生活并没有那么糟糕,至少大多数人没有像前外交部长那样的挨饿的经历。戴尔(Dell的老板)原来在一家公司打工做最基层的销售,他每天和一些社会底层的人打交道,他自己也很不喜欢这份工作,但是他并没有抱怨,他告诉自己如果他要摆脱现在这个环境,只有在现在这个环境里做得更好,然后才会得到提升,脱离这个环境,否则跳槽也解决不了这个问题,只是从一个底层换到另一个底层罢了。在之前的帖子里,有人说我是哪个公司的HR,我从来都没有管过人事,相反我是从销售做起的,有人说我有着稳定高薪的工作,也许吧,但是我想我最初的状况应该比这个版里的大多数人要差,当我刚刚开始工作的时候,租住在一个6平米的地下室里,地下室里只有一张床,一个书架,一张书桌,一把椅子,我所有的现金不到1000元,还是向同学借的,我没有一套西装,我没有电视机,我每天花两个小时骑着一辆50元买来的自行车上下班,那一年我24岁,我没有抱怨过。我并没有特别了不起,我想我能做到的事情,你应该也能。
我们还在常常做的一件事情就是给自己树立假想敌,臆想一些迫害自己的人,给自己制造悲情,而且用负面的角度去揣测别人。我的妻子曾经跟我说“我们公司鼓励加班”。我说这基本上是个不负责任的说法,请问,公司是谁?如果是你们老板,你们老板有没有公开表示过或者对你说过“员工应该多加班?”如果是某个部门负责人,他有没有资格代表公司讲话?如果是周围同事的议论,这究竟是猜测还是真相?每个人都在传说“我们公司鼓励加班”,每个人都很不开心,每个人都在制造和传播谣言,每个人都觉得公司在迫害自己,事实上就像动画片《咕咚来了》的故事,自己编故事吓唬自己。我妻子又说“有人得到了公司的表扬,理由是加班多。”我说,那如果你是老板你怎么办?他加班这么多难道你还批评他?理由是谁提的?为什么不去找比加班更好的值得表扬的理由?就像我小时候没事就捡到一毛钱交给老师以求表扬,因为实在想不出什么其他办法,也没见老师批评我呀。我相信有不少想要压迫员工让员工多加班的老板,但是我也相信他们不是绝大多数,如果不加班业绩就已经很好,为什么要加班?你一定要把老板想像成虐待狂,我也没办法,但要知道你有一天也可能成为别人的老板,你希望别人把你想象成虐待狂么?能不能公允地就事论事,而不要掺杂自己的情绪,这也是个态度问题。
以前上大学的时候,有个老师,对我们说,你们现在碰到的这些事情算什么事情,相对我们这些人来说∑=0,那个时候我们是很不服气的,觉得老头在倚老卖老,随着年龄的增长,才知道,果然,年轻时候那点经历那点荣誉那点知识那点郁闷相对于整个人生来说,基本可以忽略不计。我在天涯上常常看到《为了工作,我抛弃了尊严》这样的文章,我都不知道现代人哪来那么多尊严,动不动就觉得自己被冒犯了,这样活在社会上,很难。这,也是态度问题。
好与不好是个相对的概念,基本上是个人感觉的事情,就看你怎么看,同样一份工作,当你以积极正面的态度去看,就是一份好工作,当你以消极负面的态度去看,就是一份烂工作。人,还是要阳光一点。
入对行跟对人
在中国,大概很少有人是一份职业做到底的,虽然如此,第一份工作还是有些需要注意的地方,有两件事情格外重要,第一件是入行,第二件事情是跟人。第一份工作对人最大的影响就是入行,现代的职业分工已经很细,我们基本上只能在一个行业里成为专家,不可能在多个行业里成为专家。很多案例也证明即使一个人在一个行业非常成功,到另外一个行业,往往完全不是那么回事情,“你想改变世界,还是想卖一辈子汽水?”是乔布斯邀请百事可乐总裁约翰·斯考利加盟苹果时所说的话,结果这位在百事非常成功的约翰,到了苹果表现平平。其实没有哪个行业特别好,也没有哪个行业特别差,或许有报道说哪个行业的平均薪资比较高,但是他们没说的是,那个行业的平均压力也比较大。看上去很美的行业一旦进入才发现很多地方其实并不那么完美,只是外人看不见。
说实话,我自己都没有发大财,所以我的建议只是让人快乐工作的建议,不是如何发大财的建议,我们只讨论一般普通打工者的情况。我认为选择什么行业并没有太大关系,看问题不能只看眼前。比如,从前年开始,国家开始整顿医疗行业,很多医药公司开不下去,很多医药行业的销售开始转行。其实医药行业的不景气是针对所有公司的,并非针对一家公司,大家的日子都不好过,这个时候跑掉是非常不划算的,大多数正规的医药公司即使不做新生意撑个两三年总是能撑的,大多数医药销售靠工资撑个两三年也是可以撑的,国家不可能永远捏着医药行业不放的,两三年以后光景总归还会好起来的,那个时候别人都跑了而你没跑,那时的日子应该会好过很多。有的时候觉得自己这个行业不行了,问题是,再不行的行业,做得人少了也变成了好行业,当大家都觉得不好的时候,往往却是最好的时候。大家都觉得金融行业好,金融行业门槛高不说,有多少人削尖脑袋要钻进去,竞争激励,进去以后还要时时提防,一个疏忽,就被后来的人给挤掉了,压力巨大,又如何谈得上快乐?也就未必是“好”工作了。
太阳能这个东西至今还不能进入实际应用的阶段,但是中国已经有7家和太阳能有关的公司在纽交所上市了,国美苏宁永乐其实是贸易型企业,也能上市,鲁泰纺织连续10年利润增长超过50%,卖茶的一茶一座,卖衣服的海澜之家都能上市……其实选什么行业真的不重要,关键是怎么做。事情都是人做出来的,关键是人。
有一点是需要记住的,这个世界上,有史以来直到我们能够预见得到的未来,成功的人总是少数,有钱的人总是少数,大多数人是一般的,普通的,不太成功的。因此,大多数人的做法和看法,往往都不是距离成功最近的做法和看法。因此大多数人说好的东西不见得好,大多数人说不好的东西不见得不好。大多数人都去炒股的时候说明跌只是时间问题,大家越是热情高涨的时候,跌的日子越近。大多数人买房子的时候,房价不会涨,而房价涨的差不多的时候,大多数人才开始买房子。不会有这样一件事情让大家都变成功,发了财,历史上不曾有过,将来也不会发生。有些东西即使一时运气好得到了,还是会在别的时候别的地方失去的。
年轻人在职业生涯的刚开始,尤其要注意的是,要做对的事情,不要让自己今后几十年的人生总是提心吊胆,更不值得为了一份工作赔上自己的青春年华。我的公司是个不行贿的公司,以前很多人不理解,甚至自己的员工也不理解,不过如今,我们是同行中最大的企业,客户乐意和我们打交道,尤其是在国家打击腐败的时候,每个人都知道我们做生意不给钱的名声,都敢于和我们做生意。而勇于给钱的公司,不是倒了,就是跑了,要不就是每天睡不好觉,人还是要看长远一点。很多时候,看起来最近的路,其实是最远的路,看起来最远的路,其实是最近的路。
跟对人是说,入行后要跟个好领导好老师,刚进社会的人做事情往往没有经验,需要有人言传身教。对于一个人的发展来说,一个好领导是非常重要的。所谓“好”的标准,不是他让你少干活多拿钱,而是以下三个。
首先,好领导要有宽广的心胸,如果一个领导每天都会发脾气,那几乎可以肯定他不是个心胸宽广的人,能发脾气的时候却不发脾气的领导,多半是非常厉害的领导。中国人当领导最大的毛病是容忍不了能力比自己强的人,所以常常可以看到的一个现象是,领导很有能力,手下一群庸才或者手下一群闲人。如果看到这样的环境,还是不要去的好。
其次,领导要愿意从下属的角度来思考问题,这一点其实是从面试的时候就能发现的,如果这位领导总是从自己的角度来考虑问题,几乎不听你说什么,这就危险了。从下属的角度来考虑问题并不代表同意下属的说法,但他必须了解下属的立场,下属为什么要这么想,然后他才有办法说服你,只关心自己怎么想的领导往往难以获得下属的信服。
第三,领导敢于承担责任,如果出了问题就把责任往下推,有了功劳就往自己身上揽,这样的领导不跟也罢。选择领导,要选择关键时刻能抗得住的领导,能够为下属的错误买单的领导,因为这是他作为领导的责任。
有可能,你碰不到好领导,因为,中国的领导往往是屁股决定脑袋的领导,因为他坐领导的位置,所以他的话就比较有道理,这是传统观念官本位的误区,可能有大量的这种无知无能的领导,只是,这对于你其实是好事,如果将来有一天你要超过他,你希望他比较聪明还是比较笨?相对来说这样的领导其实不难搞定,只是你要把自己的身段放下来而已。多认识一些人,多和比自己强的人打交道,同样能找到好的老师,不要和一群同样郁闷的人一起控诉社会,控诉老板,这帮不上你,只会让你更消极。和那些比你强的人打交道,看他们是怎么想的,怎么做的,学习他们,然后跟更强的人打交道。
选择
我们每天做的最多的事情,其实是选择,因此在谈职业生涯的时候不得不提到这个话题。
我始终认为,在很大的范围内,我们究竟会成为一个什么样的人,决定权在我们自己,每天我们都在做各种各样的选择,我可以不去写这篇文章,去别人的帖子拍拍砖头,也可以写下这些文字,帮助别人的同时也整理自己的思路,我可以多注意下格式让别人易于阅读,也可以写成一堆,我可以就这样发上来,也可以在发以前再看几遍,你可以选择不刮胡子就去面试,也可以选择出门前照照镜子……每天,每一刻我们都在做这样那样的决定,我们可以漫不经心,也可以多花些心思,成千上万的小选择累计起来,就决定了最终我们是个什么样的人。
从某种意义上来说我们的未来不是别人给的,是我们自己选择的,很多人会说我命苦啊,没得选择阿,如果你认为“去微软还是去IBM”“上清华还是上北大”“当销售副总还是当厂长”这种才叫选择的话,的确你没有什么选择,大多数人都没有什么选择。但每天你都可以选择是否为客户服务更周到一些,是否对同事更耐心一些,是否把工作做得更细致一些,是否把情况了解得更清楚一些,是否把不清楚的问题再弄清楚一些……你也可以选择在是否在痛苦中继续坚持,是否抛弃掉自己的那些负面的想法,是否原谅一个人的错误,是否相信我在这里写下的这些话,是否不要再犯同样的错误……生活每天都在给你选择的机会,每天都在给你改变自己人生的机会,你可以选择赖在地上撒泼打滚,也可以选择咬牙站起来。你永远都有选择。有些选择不是立杆见影的,需要累积,比如农民可以选择自己常常去浇地,也可以选择让老天去浇地,诚然你今天浇水下去苗不见得今天马上就长出来,但常常浇水,大部分苗终究会长出来的,如果你不浇,收成一定很糟糕。
每天生活都在给你机会,他不会给你一叠现金也不会拱手送你个好工作,但实际上,他还是在给你机会。我的家庭是一个普通的家庭,没有任何了不起的社会关系,我的父亲在大学毕业以后就被分配到了边疆,那个小县城只有一条马路,他们那一代人其实比我们更有理由抱怨,他们什么也没得到,年轻的时候文化大革命,书都没得读,支援边疆插队落户,等到老了,却要给年轻人机会了。他有足够的理由象成千上万那样的青年一样坐在那里抱怨生不逢时,怨气冲天。然而在分配到边疆的十年之后,国家恢复招研究生,他考回了原来的学校。研究生毕业,他被分配到了安徽一家小单位里,又是3年以后,国家第一届招收博士生,他又考回了原来的学校,成为中国第一代博士,那时的他比现在的我年纪还大。生活并没有放弃他,他也没有放弃生活。10年的等待,他做了他自己的选择,他没有放弃,他没有破罐子破摔,所以时机到来的时候,他改变了自己的人生。你最终会成为什么样的人,就决定在你的每个小小的选择之间。
你选择相信什么?你选择和谁交朋友?你选择做什么?你选择怎么做?……我们面临太多的选择,而这些选择当中,意识形态层面的选择又远比客观条件的选择来得重要得多,比如选择做什么产品其实并不那么重要,而选择怎么做才重要。选择用什么人并不重要,而选择怎么带这些人才重要。大多数时候选择客观条件并不要紧,大多数关于客观条件的选择并没有对错之分,要紧的是选择怎么做。一个大学生毕业了,他要去微软也好,他要卖猪肉也好,他要创业也好,他要做游戏代练也好,只要不犯法,不害人,都没有什么关系,要紧的是,选择了以后,怎么把事情做好。
除了这些,你还可以选择时间和环境,比如,你可以选择把这辈子最大的困难放在最有体力最有精力的时候,也可以走一步看一步,等到了40岁再说,只是到了40多岁,那正是一辈子最脆弱的时候,上有老下有小,如果在那个时候碰上了职业危机,实在是一件很苦恼的事情。与其如此不如在20多岁30多岁的时候吃点苦,好让自己脆弱的时候活得从容一些。你可以选择在温室里成长,也可以选择到野外磨砺,你可以选择在办公室吹冷气的工作,也可以选择40度的酷热下,去见你的客户,只是,这一切最终会累积起来,引导你到你应得的未来。
我不敢说所有的事情你都有得选择,但是绝大部分事情你有选择,只是往往你不把这当作一种选择。认真对待每一次选择,才会有比较好的未来。
与别人相处
如果你认为很多人都是SB,你认为人和人之间就像狗和狗一样不是你咬我就是我咬你,那么这一段不看也罢。
我们在社会里没办法不跟人打交道,也没办法自己一个人做成什么了不起的事情,要做成事情就要相互依靠。和你打交道的人,基本上你没得挑选,就像你的父母你也没得挑选,你只能面对现实,你再不喜欢也没办法,因为这些人上帝不是为你创造的。更让人沮丧的是,往往喜欢你的人对你的事业没啥帮助,而你讨厌的人却掌握着你需要的资源。你怎么办?怎样和别人发展成为一种相互支持的关系而不是相互攻讦的关系,这其实就是情商的最大作用。要讨厌一个人很容易,要让人讨厌也很容易,反过来却很难。
你大概只有一种办法——让和你交往的人获得利益,前提是你也要获得利益,这个有个流行的说法叫做双赢。你想获得利益,那么你必须让你的雇主获得利益,你的客户获得利益,你的下属获得利益,你的同事获得利益,大多数时候所谓关系好,就是利益平衡得好,所谓关系不好就是利益平衡得不好。“亲兄弟,明算账。”利益平衡得不好,亲兄弟也是会翻脸成仇的。你是领导是因为你会平衡利益,你不是领导是因为你不会。这一方面中国人是行家了,整篇的《三国演义》都是在讲这个故事。大多数情况下,最聪明成本最低的方法就是让大家都获利,没有办不成的事情,成本最高方法就是把其他人都干掉自己独得利益。
如果你想要双赢,你就要考虑对方要什么,比如找工作,员工也必须考虑一下公司要什么,要知道雇主并不欠你一份工作,只有你的产出大于雇主付你的薪水,雇主才会乐意雇用你。所以应聘者需要考虑的一个问题就是,雇佣我对方能得到什么利益,而不是急于问薪水多少?急于问薪水给对方的信号就是,我只关心我想要什么,我不关心你想要什么,这样不可能双赢的。同样当你作为雇主或者领导的时候,不考虑员工想要什么,也不可能获得员工的全心投入,做一天和尚敲一天钟的和尚是成本最高的员工。
很多时候,你有求于人,而人无求于你,比如你要销售东西给别人的时候,这个时候发现对方的需求就很重要了。发现需求最简单的方法就是“倾听”,人长了两个耳朵,一张嘴,就是要我们多听少说。多听少说不是为了礼貌,而是为了弄清楚对方的需求。想必很多人都有这样的经历,有人向你推销东西,他口若悬河,滔滔不绝,可是你却一点也不想听,只想快点打发他走,因为他不关心你的需求。根据我的观察,人都还是喜欢别人听自己讲些东西的,哪怕再沉默寡言的人也是希望有人听自己讲话的,之所以不讲是因为还不信任,这是人性。抛开了刚刚认识的紧张以后,人们还是比较喜欢说的。即使是国家主席也有需要和人分享的东西,无论是高兴的还是不高兴的事情。肯听别人说,不去打断是个美德。人们往往也管不住自己的嘴,说着说着就把自己的心理话说出来了,这个时候才能抓住他的需求究竟是什么。好的销售是会听的销售,不是会说的销售。而会平衡利益的人是会听别人需求的人,而不是会说自己需求的人。
和人相处很大程度上就像对着一面镜子,你对镜子愤怒,镜子里的人对你也愤怒,你对镜子微笑,镜子里的人对你也微笑。不少新人觉得人际关系不好处,记得这个道理就好了。你如果总是看到别人的缺点,别人自然看你的缺点,你如果看不上别人,别人也会看不上你。你伪装不了的,你的表情神态会告诉对方你究竟是怎么看待他的,所以,要搞好人际关系,先要从自己内心愿意和人打交道,愿意接触别人,愿意放开心扉,愿意接受别人的缺点,否则,很难。中国人有个道理,花花轿子人抬人,人在社会上要取得成就,需要相互抬举,而不是相互拆台。有些人的不成功就是因为他只会给别人拆台,不会抬举别人,比如击鼓骂曹的弥衡。要清高就别出来趟浑水,要趟浑水就别清高。
和人相处的最好武器就是“从别人的立场上思考问题”。从别人的角度来思考问题,这句话说起来简单,做起来很难,我听过一个例子,有个人要跳楼,劝他的人说“活着多好呀,生活多美好呀,不要跳楼。”这看上去是从跳楼者的角度来思考,实际上没有,对于要跳楼的人来说,他才不觉得生活美好,他正是因为觉得生活糟透了才要跳楼的。或许这个时候对他说“是的,我也觉得这个社会很tmd操蛋,但是你死了,你爸妈怎么办?妻子孩子怎么办?”会好一些。很多时候我们都觉得我们替别人考虑了,其实我们是站在自己的立场上替别人考虑的,而不是站在别人的立场上替别人考虑的。比如餐馆的服务员,总是说这个鱼翅比较好吃,这个老虎斑比较好吃,他们是站在自己要多赚钱的角度替顾客考虑的,并没有站在顾客要吃得实惠的立场上来替顾客考虑问题。
学会从别人的角度来思考问题,就会知道他要什么,什么是对他重要的,什么事不重要的,什么是他能够妥协的,什么是他会坚持的。了解着这些,他基本已经在你的掌控之中了,凡事总归能够找到一个双方都能接受的办法,这才是长久与人相处的办法。这种协调不见得是公平的,弱势的时候吃些亏,强势的时候占些便宜,目的是用最小的代价达到目的。成功的人控制别人,不成功的人被人控制。而控制别人不是靠官大靠命令,而是靠控制别人的利益和需求。
选择职业
职业的选择,总的来说,无非就是销售、市场、客服、物流、行政、人事、财务、技术、管理几个大类,有个有趣的现象就是,500强的CEO当中最多的是销售出身,第二多的人是财务出身,这两者加起来大概超过95%。现代IT行业也有技术出身成为老板的,但实际上,后来他们还是从事了很多销售和市场的工作,并且表现出色,公司才获得了成功,完全靠技术能力成为公司老板的,几乎没有。这是有原因的,因为销售就是一门跟人打交道的学问,而管理其实也是跟人打交道的学问,这两者之中有很多相通的东西,他们的共同目标就是“让别人去做某件特定的事情。”而财务则是从数字的层面了解生意的本质,从宏观上看待生意的本质,对于一个生意是否挣钱,是否可以正常运作有着最深刻的认识。
公司小的时候是销售主导公司,而公司大的时候是财务主导公司,销售的局限性在于只看人情不看数字,财务的局限性在于只看数字不看人情。公司初期,运营成本低,有订单就活得下去,跟客户也没有什么谈判的条件,别人肯给生意做已经谢天谢地了,这个时候订单压倒一切,客户的要求压倒一切,所以当然要顾人情。公司大了以后,一切都要规范化,免得因为不规范引起一些不必要的风险,同时运营成本也变高,必须提高利润率,把有限的资金放到最有产出的地方。对于上市公司来说,股东才不管你客户是不是最近出国,最近是不是那个省又在搞严打,到了时候就要把业绩拿出来,拿不出来就抛股票,这个时候就是数字压倒一切。
前两天听到有人说一句话觉得很有道理,开始的时候我们想“能做什么?”,等到公司做大了有规模了,我们想“不能做什么。”很多人在工作中觉得为什么领导这么保守,这也不行那也不行,错过很多机会。很多时候是因为,你还年轻,你想的是“能做什么”,而作为公司领导要考虑的方面很多,他比较关心“不能做什么”。
我并非鼓吹大家都去做销售或者财务,究竟选择什么样的职业,和你究竟要选择什么样的人生有关系,有些人就喜欢下班按时回家,看看书听听音乐,那也挺好,但就不适合找个销售的工作了,否则会是折磨自己。有些人就喜欢出风头,喜欢成为一群人的中心,如果选择做财务工作,大概也干不久,因为一般老板不喜欢财务太积极,也不喜欢财务话太多。先想好自己要过怎样的人生,再决定要找什么样的职业。有很多的不快乐,其实是源自不满足,而不满足,很多时候是源自于心不定,而心不定则是因为不清楚究竟自己要什么,不清楚要什么的结果就是什么都想要,结果什么都没得到。
我想,我们还是因为生活而工作,不是因为工作而生活,生活是最要紧的,工作只是生活中的一部分。我总是觉得生活的各方方面都是相互影响的,如果生活本身一团乱麻,工作也不会顺利。所以要有娱乐、要有社交、要锻炼身体,要有和睦的家庭……最要紧的,要开心,我的两个销售找我聊天,一肚子苦水,我问他们,2年以前,你什么都没有,工资不高,没有客户关系,没有业绩,处于被开的边缘,现在的你比那时条件好了很多,为什么现在却更加不开心了?如果你做得越好越不开心,那你为什么还要工作?首先的首先,人还是要让自己高兴起来,让自己心态好起来,这种发自内心的改变会让你更有耐心,更有信心,更有气质,更能包容……否则,看看镜子里的你,你满意么?
有人会说,你说得容易,我每天加班,不加班老板就会把我炒掉,每天累得要死,哪有时间娱乐、社交、锻炼?那是人们把目标设定太高的缘故,如果你还在动不动就会被老板炒掉的边缘,那么你当然不能设立太高的目标,难道你还想每天去打高尔夫?你没时间去健身房锻炼身体,但是上下班的时候多走几步可以吧,有楼梯的时候走走楼梯不走电梯可以吧?办公的间隙扭扭脖子拉拉肩膀做做俯卧撑可以吧?谁规定锻炼就一定要拿出每天2个小时去健身房?你没时间社交,每月参加郊游一次可以吧,周末去参加个什么音乐班,绘画班之类的可以吧,去尝试认识一些同行,和他们找机会交流交流可以吧?开始的时候总是有些难的,但迈出这一步就会向良性循环的方向发展。而每天工作得很苦闷,剩下的时间用来咀嚼苦闷,只会陷入恶性循环,让生活更加糟糕。
沟通
根据哈佛的研究资料,有70%的人工作中的不顺利是因为不善于沟通,不会和老板沟通就得不到支持,不会和客户沟通就得不到订单,不会和下属沟通就没人帮你做事,不会和平级同事沟通就会常常被其他部门打小报告。我们面临的绝大多数的矛盾误会其实是可以通过更有效地沟通解决的,有人举过这样一个例子,一次过错,开发部门的经理把责任推给了测试部门,于是测试部门觉得被排斥了,觉得只能辞职了。先假设事情真的如他所说,问题其实也没有那么难以解决,测试部门的人可以私下找到开发部门的经理谈谈,请问他,如果测试部门的人都走了,你猜接下来公司里谁的日子最难过?你觉得多久老板能找齐新人?多久新人能真正上手?在此之前老板会自己多干些活还是让其他人来加班分担掉这些工作?有多大概率新人会不再和开发部发生矛盾?如果开发部门的经理是聪明人,他会知道怎么办好的。开发部和测试部是公司里一根绳上的两只蚂蚱,谁也跑不了,跟自己的平级同事把共同利益沟通清楚,很多矛盾不会以这样的方式爆发出来。
很多人觉得沟通是一件非常简单的事情,我们每天都在说话,听别人说话,写email,打电话,写帖子回帖子,不都是在和人沟通?是的,但说话是一回事,别人听懂是另一回事,别人听懂而且乐意照办就又是一回事。实际上沟通是件非常困难的事情,脑子里想的事情如果是100,往往嘴巴里讲出来的是80,别人听到60,理解40。一件事情从一个人的脑子到另一个人的脑子,往往只剩下40%的内容和意思。见面的沟通和不见面的沟通又不一样,听得见声音的沟通和听不见声音的沟通又不一样。 同一件事情,不同的口气说出来又不一样。关系好不好沟通的效果又不一样,往往你说的是A对方听的是B。
沟通的内容,不是这里能说清楚的,但是沟通的方法,却是可以讨论的。你可以在公司做这样一个试验,先画一张简单的图,比如一个方块加一个圆圈加一个三角,请一位你觉得最有沟通能力,口才最好的人,看着这张图然后背对大家描述他所看到的图形,请大家按照他描述的画出来,并且不允许提问。然后你可以让这个人转过身来面对大家,再描述一次,再让大家画一次。最后这个人接受所有人的提问,再让大家画一次。你会发现,第一次几乎没有人能画对,不是尺寸不对就是位置不对,就是形状不对,第二次还是很少有人能画对,但是比第一接近很多。第三次就几乎所有人都能画对了。
为什么会这样?因为沟通是要有来有往的,不是单方面就可以完成沟通的,有很多人觉得自己已经跟别人说得很清楚了,怎么别人还是做不好?很大的原因就是因为单方面沟通的关系。公司里面一封email来就想让别人能够按照办理,这就像试验中的第一次,根本没有人能够做到。
沟通的时候,尽量把别人当成傻子,用最基本的词语来解释你的话,少说专业术语,有很多人说的话自己听得懂,别人听不懂,就因为说得不够简单。我要求我的销售找个不相关的人,比如他女朋友,跟他女朋友介绍产品,如果她听懂了,那么客户也能听懂,如果她听不懂,就要改进到她能听懂为止。如果找三个这种不想干的人都能说明白,那么介绍产品这一段算是过关了。
沟通要开放,不要预设立场,有些时候我们会事先觉得对方不会同意,或者觉得跟他说不通,我们沟通的效率就会大打折扣,因为一旦预设立场,别人可能只是问一句,在我们听起来都象刁难。一旦预设立场,我们满脑子都是防卫的念头,拼命找对方话里的问题,最后变成是面子之争,而非就事论事。以我的经验来看,至少有一半的机会,我们预设的立场是错误的。
沟通要形象生动,为什么我们要多媒体,为什么我们要看电影电视,为什么我们不喜欢看枯燥无味的理论书?只因为“形象生动”这四个字,我们必须把我们想要表达的东西形象生动地表述给对方,而不是讲抽象的概念。什么是形象生动?就是你说完了,在对方的脑子里直观地出现了具体的形象,而不是仍旧空空如也。这是个必须持续练习的本事,有这种本事的人,不怕在社会上没饭吃。
沟通能力强的人,比较容易得到别人的帮助,比较容易办成事情,比较容易不会引起误会,办事效率比较高。从某种角度上来说,你为什么还没有好工作?因为你还不会很好地沟通。沟通,不仅仅要考虑自己脑袋里想的东西,还要考虑别人脑袋里想的东西。如果你很了解别人脑袋里想的东西,你离成功还会远么?
心魔
大多数情况下,困难并不是来自困难本身,而是来自不明白自己的心。生活当中的事情往往纠缠在一起像一团乱麻,让人很难理清楚头绪,更难明白自己的心绪。
我一直都很反感麦当劳等单位搞一些慈善活动,他们要求你捐款给什么机构,但钱是给他们的,最后也是以他们的名义捐给慈善机构。反感的原因是,且不说钱到底去了哪里,我的钱为什么要以麦当劳的名义来捐?麦当劳又凭什么拿别人的钱去做好人。突然有一天反省自己,如果我那么在意究竟是谁的名字捐的款,那么我究竟在意的是捐款助人本身,还是在意的是乐善好施的名声。如果捐款是为了其他目的,那似乎也就失去了慈善的本意了,只要钱能够真正起到作用,至于什么途径就不那么重要了。每一次弄明白自己的心,我都会变得快乐很多。
有个故事叫做“二桃杀三士”,齐王说,把桃子赐给齐国最勇敢的武士,就引得三位武士自相残杀。这种故事在现实中多得很,今天公司老板拿个主任的职务就能让兄弟反目姐妹翻脸,明天为了个经理的职务就能让员工自相猜忌勾心斗角,后天评个优秀员工又让人大喜大悲又哭又闹。不大的输赢,却让参与的人付出巨大的代价,最后无论谁赢得桃子,大家都是输家,包括喜欢玩弄权术的老板。虽然看起来始作俑者并非参与者本人,但在这个游戏中,每个人都在向悲剧的结果努力,参与角逐的,没有人是无辜的。因为每个人的心中都燃烧着欲望的火焰,而又缺乏同等旺盛的智慧。常常我们蒙住自己的眼睛,不知道究竟为什么要这样做,也不知道自己究竟在做什么。
每个人都知道股市已经泡沫,但看着周围的人大把捞钱,总还是忍不住诱惑,自己告诉自己,没事的,不会那么巧正好轮到我。而一旦进去,就再也无法控制自己的心态,涨了想要更多,跌了还想翻本。泡沫总是会要破灭的,只是不知道谁赶上末班车,赶上的人会觉得是因为自己太贪婪么?不会,还是会觉得世道不好。在股市中的人,没有一个是无辜的。
我们刚刚开始工作的时候想,等我做了经理就好了,没想到做了经理却更不快乐,我们想等我们做了副总就好了,做了副总加倍不快乐,我们想做了老板就好了,结果发现,还是不快乐。一个月挣3000块的时候想一个月挣6000那多爽啊,挣了6000发现没啥感觉,挣12000大概会好些,挣12000的时候好像也没比挣3000的时候更开心,我们越来越不开朗,情绪越来越暴躁。似乎只有越来越强烈的物质刺激,才能暂时抚平我们的饥渴。
我们,究竟是怎么了?为什么追求了半天的东西,却让我们越来越不快乐?
我想,大约是因为我们看不清楚,浮躁而充满诱惑的环境点燃了我们的贪婪,虚荣和傲慢,我们却要在这种状态下作判断和决定,就像坐一个不认识路的司机开的车,越走越远,越走越烦躁。我们的许多不快乐,都是来自自己的心魔。
如果,每天你都很烦躁,很愤怒,很苦恼,很疲惫,你觉得你能做出正确的选择和判断么?你知道你应该学习,你嘴巴里也说你想学习,可你心里却学不进去,你批评这个,批评那个,不同的意见你都急于反驳,看不惯的事情急于讽刺谩骂。你知道你应该正面积极,你嘴巴里也这么说,可是明天你就忍不住打击自己打击别人。自己买了马六觉得不错,忍不住有的时候还会跟亲戚朋友炫耀,但看到别人买悍马却恼火起来。或许,是心态已经扭曲了,不解掉心魔,什么都不能使你快乐起来。
一些观念
其实一个国家的硬件改造速度是可以很快的,我们在用的手机,比美国人欧洲人在用的手机要好,上海陆家嘴的城市建设水平不比任何一个国际都市差。但是一个国家的软件——人的观念的改造速度却是很慢很慢的。有些观念受我们父辈的影响,还根深蒂固,无法改变。前两天我站在街边过马路,正好赶上红灯,一个母亲拉着一个小女孩就要闯红灯,那个小女孩大约四五岁年纪,挣扎着,小声地说这样不好,还不时不好意思地看看我,那母亲大约和我差不多的年纪,却在大声地说“这又不要紧的咯”。我有些难过,不是为了这个母亲,是为了这个小女孩,不知道她长大以后会对她的孩子怎么说。
这里提几个我觉得工作中应该改变的观念:
一,我们的应聘者往往会想“我值多少钱?”其实老板关心的是“你做的事情值多少钱?”这是两个不同的概念,“我值多少钱?”的意思是我只要每天到公司坐着哪怕不干活或者不努力干活你就应该给我多少钱,而如果我努力干活你应该再给我多少钱。而“你做的事情值多少钱?”的意思是,你如果不做事情,你一分钱也不值,我只对你做的事情付费。前一种想法多多少少带了点以前的大锅饭和铁饭碗的意思在里面,而后者则是干得越多得到越多。如果单纯地说“我值多少钱?”那么其实老板出1000多已经很慷慨了,如果说“我做的事情值多少钱?”那么我们讨论的薪水其实是没有上限的(至少针对大多数人追求的范围来说)。
天涯上时常有人会说“台巴子(或者小日本)很扣的,**工作才给**薪水”。其实,台企里面的台湾干部薪水很高,而且公司要负责健保、驻外补贴,定期返台的机票钱等很多福利费用。为什么会对大陆员工给得比较少?一个简单的逻辑,如果大陆员工和台湾员工一样好用,老板为什么要多花10倍100倍的薪水去请台湾员工?他钱多得没处花了么?之所以薪酬不一样是因为做的事情不一样。
二,一个常常出现的怪现象是应聘者常常能和招聘者争执起来,这种情况在我面试人的时候也会偶尔发生。这实在是很奇怪的情况,其他交易的过程谈不成就算了,买卖双方不至于在谈的过程中就吵起来,你进个商店说随便看看,营业员也不会觉得受了莫大委屈,也不会因为你还价太低觉得是在侮辱他的人格从而出言不逊。很多企业的招聘人员并不会考虑应聘者的自尊心,对于他们来说,招聘的过程和去商场买东西并没有什么不同,你有漫天要价的权利,我有落地还钱的权利,并不针对个人。如果应聘者很在意对方的态度,常常觉得自己受侮辱,那么应聘的确是件很痛苦的事情。换个位置思考问题,如果有一天你当了一个公司的招聘者,你会怎么看这个问题?你一定会耐心,努力发掘对方的优点,认真回答对方的每一个问题?没有一点脾气,哪怕你觉得对方是个小P孩?你会第一分钟就告诉对方你打算出多少工资?哪怕你还不知道对方能解决什么问题,不管你老板会不会骂你?你会据实诉说你公司的所有缺点,并且劝说应聘者你们公司可能比较烂,要来要小心?
现在的年轻人动不动就把很多东西上纲上线到人格尊严的高度,随时准备为捍卫自己的尊严而战。在我看,尊严这东西不是靠吵出来的,真正有尊严的人不需要也不会去和别人吵,美国从来不需要说自己很有尊严,就算别人拿他的自由女神开开玩笑也无所谓,谁都知道美国还是老大。倒是有不少同胞每天叫喊着尊严,到处找有没有辱华事件,一旦发现立刻如丧考妣,不是震撼就是震惊就是泪流满面,这样就有尊严了么。没有实力的时候,请先把尊严搁一边,再说别人也没侮辱你什么,是你神经过敏了,或者说,其实是你自卑。
三,劳资双方的矛盾,很多时候并非有些人想象的那样老板都是吸血鬼都是吝啬鬼。在社会的任何一个角落,只要有人就会有矛盾,只要有利益就有争执,只是每个人所处的立场不一样,看待事情的角度也就不一样。处于正常状态的人,没有人会认为自己有问题,没有人会认为自己干得少了,拿得多了。大家都觉得这是对方的问题,员工觉得老板太扣,老板觉得员工上班的时候跟别人QQ聊天,员工觉得老板成天要人加班,老板觉得员工报销的时候占小便宜,员工觉得老板任人维亲,老板觉得员工常常偷偷去别家公司面试……人,就是这个样子的!人的本性是我们无法改变的,但面临这个情况,我们是要利用这个环境还是被这个环境左右?每天在天涯上骂老板有用么?好吧,没错,大部分老板会任人维亲,即使“不亲”很有才华,那么我们能怎么办呢?你就不能变成那个“亲”么?你可以主动去要求承担一件别人都不愿意承担的事情,你可以和老板常常沟通你都在做些什么,主动提交你的工作计划和工作总结,如果你的工作很好,你的客户会替你说好话……这样做的结果就是你和你老板都会把重点转移到工作本身,而不是谁对谁错上。
四,关于为什么本文不提那些黑暗面以及各种黑暗的操作方法(比如有人提到的厚脸皮,撒谎,诡辩,推卸责任等等),其实我举个例子大家就明白了。大家都说那些成绩优秀的运动员都吃药,好吧,我承认,大部分专业运动员都吃违禁药品,即使不吃违禁药品也会吃一些能帮助提高成绩的药品。你说你也要吃,那是你的自由,但问题是,你吃违禁药品就能跑得过专业运动员了么?吃兴奋剂是要被抓的,即使有着丰富服药经验的专业运动员还时不时被抓到,你觉得你能不被抓到么?当你被抓的时候,你觉得教唆你吃兴奋剂的人还会像当初他教唆你的时候那样义正辞严么?还是会假装没看见?如果你还处在找工作或者工作没多久的阶段,那些非常手段对你真的帮助不大,还是要靠些真本事。有谁见过专业运动员是只靠吃兴奋剂而不需要努力训练的?我给你吃三倍的兴奋剂,你能跑得过刘翔?即使你用尽这些厚脸皮,撒谎,诡辩的手段,你搞得过在混了十年二十年的人?如果你只是要搞搞和你一样的可怜人,我无话可讲。
五,关于财务观念,很多时候,大家在做的事情实际上是个财务陷阱。我们在自己的财务上需要算笔账,比如买车,买一般的车要10万,加上各种费用12万(不在上海),如果打车,按照每天100元算,12万可以打4年,加上油钱,过路费,保险,装饰,修理,出事耽误的时间,可以打6年车。省去了停车的麻烦,省去了检修的麻烦,省去了事故处理的麻烦。实在需要辆车出游的时候租一辆就是了,没有必要在刚刚积攒起来一点钱的时候就去买一辆车。按照《穷爸爸富爸爸》里面的关点,要富有就要买进资产,而不是买进负债。买房子也一样,如果你买房子不是为了投资,那其实就是花费,从财务观念上是必须被控制的,在你还没有什么资金的时候,拿那么多钱去花费,现金流变得很糟糕,这些钱不能拿来产生更多的钱,被卡死在那里,原本这些钱可能经过3年的投资增长了40%,如今即使涨,也涨不到你的口袋里,如果你是炒房,那又另当别论。租房,对于财务状况还不那么健康的年轻人来说,是个不错的选择。再比如买各种化妆品,拍婚纱照,频繁更新换代手机,给小孩买进口奶粉,这些都是财务陷阱,你为了一分的作用花了十分的代价,商家是赢家,而你,60岁还要工作。
六,不打车的时候,我们骑自行车也没觉得很苦,习惯打车以后就不想再骑自行车了,没车的时候我们走得很好,有了车即使出门只有500米,我们也懒得走。随着条件的改善,我们的生活成本会不断增加,这些成本不见得是钱,而是我们的耐受度降低而依赖度增加了,或者说我们变得更脆弱了。这实在是件让人担心的事情,我们在变老而且我们在变得脆弱,越来越害怕失去工作。或者,我们应该有意识地去控制一下这种成本,不要太轻易地让自己滑落到舒适和懒散中去,不要让自己对物质条件过度依赖,适度地让自己受点罪,以减缓这种成本增加的速度。
七,我们看了很多社会的新闻觉得很愤怒,我们看到女大学生为钱卖身,我们看到城管欺负小贩,我们看到街头卖艺的小孩,我们看到农村在没有房顶的屋子里上学的孩子,我们看到每年公款吃喝5000个亿,我们看到陈良宇人老心不老,我们看到被枪毙的药监局高官……最直接的反应就是愤怒,当一代代愤怒的青年也成了既得利益者,却会和他们一样甚至更为下作。如果你只是看到别人吃肉泡妞因妒忌而愤怒,我鄙视你,如果你因爱你的国家,同情弱者的遭遇而愤怒,如果你真的想改变一些东西,请你和我一样,不要总盯着别人,先做好自己手边的事情,我们只是普通人,我们做不了太了不起的事情,做好手边的事情是我们能对我们这个国家所做的最大的帮助。当每个人都能凭良心做好手边的事情,国家就会有希望。
越写到后来越了解其实自己还是不太懂,只有不懂的人才总喜欢说,懂的人就不说了。(全文完)
由于原来的帖子掺杂了太多的其他内容,使得文章已经变调了,因此重新整理补充后新开这个帖子。很多朋友希望我给予一些职业生涯上的建议,我只能说,我也只是一个普通人,不是来当上帝给标准答案的,我也不知道什么答案适合你,何况社会学范畴里也没有什么标准答案,写这个帖子的目的是为了帮助你自己找到自己的答案。授人以鱼不如授人以渔,我不会拿出一个答案给你,这样对你也不负责,我只能告诉你应该怎么想这个问题。
这一篇权当做求职的入门初级读物,或许对于已经过了这个阶段的朋友来说浅显了一点。
在开始以前,要把本文的立意申明一下,如果读者并不认同,请离开这个帖子。
1.如果你觉得这个世界太黑暗,你的一切不幸都是外界原因造成的,如果你觉得一切都不公平,那么这篇文章不适合你,这篇文章适合那些对于生活还有希望,并且能够面临最惨痛的失败仍不泯灭那一点希望的人。
2.如果你想不劳而获,你觉得通过什么样轻松快速的手段或者什么立竿见影的窍门就能够获得高薪高福利,这篇文章也不适合你,因为我只会用笨办法获得成功,我认为一切取巧的方式或许会取得一时的成功,但总有一天会让人付出代价的,而你不能控制付代价的时间和大小。
3.这篇文章也不适合认为自己已经了解整个社会的人,如果你是那样的人,应该写篇文章给我看,而不是来看我的文章,至少我还不太了解我所处的这个社会,很多时候我也会迷茫。
4.这篇文章也不适合没有经历过失败或者在失败中打滚不肯爬起来的人,人生当中不知道要经历多少次失败,每一次失败中我们不断成熟起来,要想成功,只能擦干眼泪咬着牙继续上路。
5.我们身边的绝大多数人包括我们的老板或者公司领导也是普通人,和我们大多数人一样,他们并不是特别恶劣的想要骗人的阴险家伙,等我们当了领导或许我们还不如他们,当我们觉得他们恶劣的时候,问题不一定全在他们身上,如果你不相信这一点,这篇文章也不适合你。
6.我不会教你具体怎么做(不是不教而是我的方法不一定适合你),我只会说可能你应该这样想,答案在每个人自己的心里,不在我的手里。
7.我承认有些人提到的厚黑学的非正常手段是有用的,但我不会传播这些,这是我的选择。
8.关于面试或者一些其他的具体经验,市面上有很多书,这个版也有很多很好的文章,本文就不再赘述首页推荐帖】
一次面试
故事先从昨天下午的一次面试说起,来面试的是一个刚刚毕业的大学生,85年的,男生。一见面印象就不太好,稀疏的胡子长长短短地留着,脸上很油,头发窝在脑袋上,看不出发型,眼镜片上乌蒙蒙的,我非常怀疑他能不能看得清我,好在从头到尾他都没看我一眼。他的表情一直让我摸不透,好像是那种不太高兴的表情,微皱着眉头,常常有那种“这我也没办法”的表情。
按耐下有些不愉快的心情,我还是开始正常给他面试,对于刚刚进社会的大学生,我也没报太高期望,但几个问题的问答还是迅速让我对他失去了兴趣,于是他开始和我谈薪水的事情。
“你们公司的薪水一般是多少?”
“这,相差比较大,没有一个统一的概念。”
“那象我这样的呢?”
“你能做什么呢?我总要根据你能做什么来考虑薪水吧?”
“反正应聘这个职位的应该总有个大概的薪水吧?”
“这个岗位,我们刚入职的员工从一千多到三千多都有的,情况不同。”
“一千多,大学本科的太低了吧?”
“我说也有三千多的,可是大学本科并不代表更多薪水哦。”
“你们是不是都喜欢选专科的?我去应聘会上,大多数公司都喜欢选专科的。”
“他们选专科的自然有他们的理由。”
“他们都觉得专科的比较能吃苦,我觉得这是不一定的。”
……
零七八碎还说了些其他的,只是我已经没有心情听下去了,最终我告诉他准备得太不够充分,很快就打发他走了。
其实我十分怀疑80年代人传说中的就业难,如果就业真的这么困难,那么为什么每次收到的简历中一般只有10%左右的人会来面试,而来面试的人大多数又往往如上面所说的这位,不能做好充分的准备。我知道如果我们公司是IBM的话情况会大不相同,但问题是,IBM这样的公司能有几家?前面碰到的这种应聘人员应该属于特别差的,大多数人的情况会比他好些,但还是有不少,我也记不得我曾经面试过多少这样的人了,总有很多无奈。写下这些文字的目的也是为了能帮上这些人,以此对社会尽自己一点绵薄之力罢了。
人这一辈子
我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽,最后大多跳到民企,比方说,唐骏。外企员工的成功很大程度上是公司的成功,并非个人的成功,西门子的确比国美大,但并不代表西门子中国经理比国美的老板强,甚至可以说差得很远。而进外企的人往往并不能很早理解这一点,把自己的成功90%归功于自己的能力,实际上,外企公司随便换个中国区总经理并不会给业绩带来什么了不起的影响。好了问题来了,当这些经理人40多岁了,他们的薪资要求变得很高,而他们的才能其实又不是那么出众,作为外企公司的老板,你会怎么选择?有的是只要不高薪水的,要出位的精明强干精力冲沛的年轻人,有的是,为什么还要用你?
从上面这个例子,其实可以看到我们的工作轨迹,二三十岁的时候,生活的压力还比较小,身体还比较好,上面的父母身体还好,下面又没有孩子,不用还房贷,也没有孩子要上大学,当个外企小白领还是很光鲜的,挣得不多也够花了。但是人终归要结婚生子,终归会老,到了40岁,父母老了,要看病要吃药,要有人看护,自己要还房贷,要过基本体面的生活,要养小孩……那个时候需要挣多少钱才够花才重要。所以,看待工作,眼光要放远一点,一时的谁高谁低并不能说明什么。
从这个角度上来说,我不太赞成过于关注第一份工作的薪水,更没有必要攀比第一份工作的薪水,这在刚刚出校园的学生中间是很常见的。正常人大概要工作35年,这好比是一场马拉松比赛,和真正的马拉松比赛不同的是,这次比赛没有职业选手,每个人都只有一次机会。要知到,有很多人甚至坚持不到终点,大多数人最后是走到终点的,只有少数人是跑过终点的,因此在刚开始的时候,去抢领先的位置并没有太大的意义。刚进社会的时候如果进500强公司,大概能拿到3k-6k/月的工资,有些特别技术的人才可能可以到8k/月,可问题是,5年以后拿多少?估计5k-10k了不起了。起点虽然高,但增幅有限,而且,后面的年轻人追赶的压力越来越大。
我前两天问我的一个销售,你会的这些东西一个新人2年就都学会了,但新人所要求的薪水却只是你的一半,到时候,你怎么办?
职业生涯就像一场体育比赛,有初赛、复赛、决赛。初赛的时候大家都刚刚进社会,大多数都是实力一般的人,这时候努力一点认真一点很快就能让人脱颖而出,于是有的人二十多岁做了经理,有的人迟些也终于赢得了初赛,三十多岁成了经理。然后是复赛,能参加复赛的都是赢得初赛的,每个人都有些能耐,在聪明才智上都不成问题,这个时候再想要胜出就不那么容易了,单靠一点点努力和认真还不够,要有很强的坚忍精神,要懂得靠团队的力量,要懂得收服人心,要有长远的眼光……
看上去赢得复赛并不容易,但,还不是那么难。因为这个世界的规律就是给人一点成功的同时让人骄傲自满,刚刚赢得初赛的人往往不知道自己赢得的仅仅是初赛,有了一点小小的成绩大多数人都会骄傲自满起来,认为自己已经懂得了全部,不需要再努力再学习了,他们会认为之所以不能再进一步已经不是自己的原因了。虽然他们仍然不好对付,但是他们没有耐性,没有容人的度量,更没有清晰长远的目光。就像一只愤怒的斗牛,虽然猛烈,最终是会败的,而赢得复赛的人则象斗牛士一样,不急不躁,跟随着自己的节拍,慢慢耗尽对手的耐心和体力。赢得了复赛以后,大约已经是一位很了不起的职业经理人了,当上了中小公司的总经理,大公司的副总经理,主管着每年几千万乃至几亿的生意。
最终的决赛来了,说实话我自己都还没有赢得决赛,因此对于决赛的决胜因素也只能凭自己的猜测而已,这个时候的输赢或许就像武侠小说里写得那样,大家都是高手,只能等待对方犯错了,要想轻易击败对手是不可能的,除了使上浑身解数,还需要一点运气和时间。世界的规律依然发挥着作用,赢得复赛的人已经不只是骄傲自满了,他们往往刚愎自用,听不进去别人的话,有些人的脾气变得暴躁,心情变得浮躁,身体变得糟糕,他们最大的敌人就是他们自己,在决赛中要做的只是不被自己击败,等着别人被自己击败。这和体育比赛是一样的,最后高手之间的比赛,就看谁失误少谁就赢得了决赛。
根源
你工作快乐么?你的工作好么?
有没有觉得干了一段时间以后工作很不开心?有没有觉得自己入错了行?有没有觉得自己没有得到应有的待遇?有没有觉得工作像一团乱麻每天上班都是一种痛苦?有没有很想换个工作?有没有觉得其实现在的公司并没有当初想象得那么好?有没有觉得这份工作是当初因为生存压力而找的,实在不适合自己?你从工作中得到你想要得到的了么?你每天开心么?
天涯上愤怒的人很多,你有没有想过,你为什么不快乐?你为什么愤怒?
其实,你不快乐的根源,是因为你不知道要什么!你不知道要什么,所以你不知道去追求什么,你不知道追求什么,所以你什么也得不到。
我总觉得,职业生涯首先要关注的是自己,自己想要什么?大多数人大概没想过这个问题,唯一的想法只是——我想要一份工作,我想要一份不错的薪水,我知道所有人对于薪水的渴望,可是,你想每隔几年重来一次找工作的过程么?你想每年都在这种对于工作和薪水的焦急不安中度过么?不想的话,就好好想清楚。饮鸩止渴,不能因为口渴就拼命喝毒药。越是焦急,越是觉得自己需要一份工作,越饥不择食,越想不清楚,越容易失败,你的经历越来越差,下一份工作的人看着你的简历就皱眉头。于是你越喝越渴,越渴越喝,陷入恶性循环。最终只能哀叹世事不公或者生不逢时,只能到天涯上来发泄一把,在失败者的共鸣当中寻求一点心理平衡罢了。大多数人都有生存压力,我也是,有生存压力就会有很多焦虑,积极的人会从焦虑中得到动力,而消极的人则会因为焦虑而迷失方向。所有人都必须在压力下做出选择,这就是世道,你喜欢也罢不喜欢也罢。
一般我们处理的事情分为重要的事情和紧急的事情,如果不做重要的事情就会常常去做紧急的事情。比如锻炼身体保持健康是重要的事情,而看病则是紧急的事情。如果不锻炼身体保持健康,就会常常为了病痛烦恼。又比如防火是重要的事情,而救火是紧急的事情,如果不注意防火,就要常常救火。找工作也是如此,想好自己究竟要什么是重要的事情,找工作是紧急的事情,如果不想好,就会常常要找工作。往往紧急的事情给人的压力比较大,迫使人们去赶紧做,相对来说重要的事情反而没有那么大的压力,大多数人做事情都是以压力为导向的,压力之下,总觉得非要先做紧急的事情,结果就是永远到处救火,永远没有停歇的时候。(很多人的工作也像是救火队一样忙碌痛苦,也是因为工作中没有做好重要的事情。)那些说自己活在水深火热为了生存顾不上那么多的朋友,今天找工作困难是当初你们没有做重要的事情,是结果不是原因。如果今天你们还是因为急于要找一份工作而不去思考,那么或许将来要继续承受痛苦找工作的结果。
我始终觉得我要说的话题,沉重了点,需要很多思考,远比唐笑打武警的话题来的枯燥乏味,但是,天下没有轻松的成功,成功,要付代价。请先忘记一切的生存压力,想想这辈子你最想要的是什么?所以,最要紧的事情,先想好自己想要什么。
什么是好工作
当初微软有个唐骏,很多大学里的年轻人觉得这才是他们向往的职业生涯,我在清华bbs里发的帖子被这些学子们所不屑,那个时候学生们只想出国或者去外企,不过如今看来,我还是对的,唐骏去了盛大,陈天桥创立的盛大,一家民营公司。一个高学历的海归在500强的公司里拿高薪水,这大约是很多年轻人的梦想,问题是,每年毕业的大学生都在做这个梦,好的职位却只有500个。
人都是要面子的,也是喜欢攀比的,即使在工作上也喜欢攀比,不管那是不是自己想要的。大家认为外企公司很好,可是好在哪里呢?好吧,他们在比较好的写字楼,这是你想要的么?他们出差住比较好的酒店,这是你想要的么?别人会羡慕一份外企公司的工作,这是你想要的么?那一切都是给别人看的,你干吗要活得那么辛苦给别人看?另一方面,他们薪水福利一般,并没有特别了不起,他们的晋升机会比较少,很难做到很高阶的主管,他们虽然厌恶常常加班,却不敢不加班,因为“你不干有得是人干”,大部分情况下会找个台湾人香港人新加坡人来管你,而这些人又往往有些莫名其妙的优越感。你想清楚了么?500强一定好么?找工作究竟是考虑你想要什么,还是考虑别人想看什么?
我的大学同学们大多数都到美国了,甚至毕业这么多年了,还有人最近到国外去了。出国真的有那么好么?我的大学同学们,大多数还是在博士、博士后、访问学者地挣扎着,至今只有一个正经在一个美国大学里拿到个正式的教职。国内的教授很难当么?我有几个表亲也去了国外了,他们的父母独自在国内,没有人照顾,有好几次人在家里昏倒都没人知道,出国,真的这么光彩么?就像有人说的“很多事情就像看A片,看的人觉得很爽,做的人未必。”
人总想找到那个最好的,可是,什么是最好的?你觉得是最好的那个,是因为你的确了解,还是因为别人说他是最好的?即使他对于别人是最好的,对于你也一定是最好的么?
对于自己想要什么,自己要最清楚,别人的意见并不是那么重要。很多人总是常常被别人的意见所影响,亲戚的意见,朋友的意见,同事的意见……问题是,你究竟是要过谁的一生?人的一生不是父母一生的续集,也不是儿女一生的前传,更不是朋友一生的外篇,只有你自己对自己的一生负责,别人无法也负不起这个责任。自己做的决定,至少到最后,自己没什么可后悔。对于大多数正常智力的人来说,所做的决定没有大的对错,无论怎么样的选择,都是可以尝试的。比如你没有考自己上的那个学校,没有入现在这个行业,这辈子就过不下去了?就会很失败?不见得。
我想,好工作,应该是适合你的工作,具体点说,应该是能给你带来你想要的东西的工作,你或许应该以此来衡量你的工作究竟好不好,而不是拿公司的大小,规模,外企还是国企,是不是有名,是不是上市公司来衡量。小公司,未必不是好公司,赚钱多的工作,也未必是好工作。你还是要先弄清楚你想要什么,如果你不清楚你想要什么,你就永远也不会找到好工作,因为你永远只看到你得不到的东西,你得到的,都是你不想要的。
可能,最好的,已经在你的身边,只是,你还没有学会珍惜。人们总是盯着得不到的东西,而忽视了那些已经得到的东西。
长跑
我妻子在一家美国的IT公司工作,是家跨国公司,当初她进这家公司的时候,人事经理说“能进到我们这种公司工作,是件很Lucky的事情。”必须要说当时他们的福利在某种角度上来说,很好。除了一切应有的福利,公司免费供应早餐和饮料,车贴,饭补,取暖费,13个月工资,很多国外培训的机会……薪水应该说也不低,至少在外企也是中上水平。可是,这样的一家公司,人员流动率非常高,常常有人辞职,刚开始的时候我很奇怪,既然是这么Lucky地加入公司,为什么还有人想走?后来发现,这个公司加班很频繁,加班到7、8点算正常,有的时候会加班到半夜。
常常加班的日子偶尔过过还能忍受,持续几个月甚至一年就会很让人难受了,大约没有很多人能够持久加班的。所以加班频繁的公司,人员基本也待不久,最多3年,大多还是要走的。开始的时候我妻子也觉得加班很正常,我一直不同意她过多加班,倒不是因为要她顾家。我认为一份正常的工作应该能够在上班时间内完成,如果上班时间完不成,只有两种可能,一种是工作方法有问题,另一种是工作太多,第一种是自己的问题,必须找到问题的所在。第二种是工作的安排不合理,必须和老板沟通调整,否则人就是在干耗精力。在我看来,除了工作狂,大多数人需要正常的休息和休闲,才能保证工作效率,否则,反而容易夭折。
我妻子开始的时候对我的话也很不理解,认为大家都加班,我不加班那不是显得很那个?我说你应该把时间花在让自己如何不加班就完成工作,而不是花在加班本身上面。很多人刚刚进公司的时候很有干劲,也希望用这种诚意来表达自己是很努力的,但是,往往事与愿违,加班多的人,人在心不在,其实能力也没有提高,工作质量也没有提高,时间长了,产生厌恶工作的情绪,干不了多久就辞职了。
之前我说,人生的职业生涯就像一场马拉松比赛,很多人跑了一半就跑不动了。上面说的就是这种情况,我常常告诉我妻子,路还长着呢,这个时候不用急,虽然开始的时候大家都急于表现,急于成功,没有关系,让他们去,一两年之后他们就坚持不住了,那个时候,你还跑得正轻松,他们却已经退出比赛了。正如我所预言的,当初和她资历相当甚至表现突出的,大多辞职了,没辞职的也每日过的苦不堪言。大多数人辞职都是因为不快乐,而加班不是唯一的不快乐的理由。
要让自己在职业的道路上走得更远,首先要让自己工作得快乐,如果一份工作让你觉得不快乐,甚至很受罪,那么你就是那个坚持不到终点的选手,即使你坚持到终点了,这样痛苦的人生有意思么?其次要对未来做好规划,尽量让自己劳逸结合,要知道那是个很漫长的过程,不要在一开始就把力气和耐心耗尽了,当力气耐心耗尽而又遭遇挫折,大多数人就会陷入沮丧悲观,跳槽换工作也就变成很自然的事情。对于初入职场还不能很好控制自己心态的人,掌握好自己的节奏,不要跟着别人的脚步乱了自己的节奏,清楚自己在做什么,清楚自己的目标,至于别人上去了还是下去了,让他去吧,就当没看见。
一定会有人说,我们公司就是提倡加班,这一点后面我们还会提到,也一定会有人说,我如果不每天加班老板就把我给炒了,如果真的只是因为这个原因就把你给炒了,你应该庆幸才对,还好没在这公司耽误太久时间。
普通人
我发现中国人的励志和国外的励志存在非常大的不同,中国的励志比较鼓励人立下大志愿,卧薪尝胆,有朝一日成富成贵。而国外的励志比较鼓励人勇敢面对现实生活,面对普通人的困境,虽然结果也是成富成贵,但起点不一样,相对来说,我觉得后者在操作上更现实,而前者则需要用999个失败者来堆砌一个成功者的故事。
我们都是普通人,普通人的意思就是,概率这件事是很准的。因此,我们不会买彩票中500万,我们不会成为比尔盖茨或者李嘉诚,我们不会坐飞机掉下来,我们当中很少的人会创业成功,我们之中有30%的人会离婚,我们之中大部分人会活过65岁……
所以请你在想自己要什么的时候,要得“现实”一点,你说我想要做李嘉诚,抱歉,我帮不上你。成为比尔盖茨或者李嘉诚这种人,是靠命的,看我写的这篇文章绝对不会让你成为他们,即使你成为了他们,也绝对不是我这篇文章的功劳。“王侯将相宁有种乎”但真正当皇帝的只有一个人,王侯将相,人也不多。目标定得高些对于喜欢挑战的人来说有好处,但对于大多数普通人来说,反而比较容易灰心沮丧,很容易就放弃了。
回过头来说,李嘉诚比你有钱大致50万倍,他比你更快乐么?或许。有没有比你快乐50万倍,一定没有。他比你最多也就快乐一两倍,甚至有可能还不如你快乐。寻找自己想要的东西不是和别人比赛,比谁要得更多更高,比谁的目标更远大。虽然成为李嘉诚这个目标很宏大,但你并不见得会从这个目标以及追求目标的过程当中获得快乐,而且基本上你也做不到。你必须听听你内心的声音,寻找真正能够使你获得快乐的东西,那才是你想要的东西。
你想要的东西,或者我们把它称之为目标,目标其实并没有高低之分,你不需要因为自己的目标没有别人远大而不好意思,达到自己的目标其实就是成功,成功有大有小,快乐却是一样的。我们追逐成功,其实追逐的是成功带来的快乐,而非成功本身。职业生涯的道路上,我们常常会被攀比的心态蒙住眼睛,忘记了追求的究竟是什么,忘记了是什么能使我们更快乐。
社会上一夜暴富的新闻很多,这些消息,总会在我们的心里面掀起很多涟漪,涟漪多了就变成惊涛骇浪,心里的惊涛骇浪除了打翻承载你目标的小船,并不会使得你也一夜暴富。“只见贼吃肉,不见贼挨揍。”我们这些普通人既没有当贼的勇气,又缺乏当贼的狠辣绝决,虽然羡慕吃肉,却更害怕挨揍,偶尔看到几个没挨揍的贼就按奈不住,或者心思活动,或者大感不公,真要叫去做贼,却也不敢。
我还是过普通人的日子,要普通人的快乐,至少,晚上睡得着觉。
选择目标
你可能没有办法一下子就搞清楚自己想要什么,这很正常,如果这是个很容易想明白的事情,我也就没有必要在这里大费笔墨了。
想要一次想明白一个大的命题,其实是一件自欺欺人的事情。像“今年要如何达成销售指标”这种问题,绝对不是一个下午能够像明白的。要想清楚这个事情,先要把这个问题细化成几个小问题,比如“代理商体系要如何建立”“销售人员要什么时候招聘到位,什么时间培训完成”等等。这些问题可能还是没有办法一次想明白,那就继续细化,直到细化成一个个一次能够想明白的小问题。
我之前的文字语焉不详地提出了一些需要人思考的问题,这些问题很多人会觉得一下子想不到答案,人们更希望我给出直接的解决方法。其实,只要掌握了思考的方法,自己想也不难。只是有一点需要注意的,注意循序渐进的原则,不要一开始就给自己一个非常有难度的题目,否则很快就会有挫折感,很快就会让自己失掉信心。很多事情做不下去就是因为开始的时候给自己设立了过高的目标。你大概要做一个计划来想明白这个事情,而不是在一个无聊的下午决定想一下,我保证你想不出任何结果。
你可以找张纸,把自己要的东西写下来,越具体越好,因为目标越是具体,就越容易达到。我们举个例子,环游地球这个目标很不具体,我根本不知道要怎么实现,如果我把这个目标具体化,今年去东南亚旅游,明年去日本澳大利亚,后年中东,大后年美国加拿大,然后是南非和摩洛哥,这样的安排并不难做到,到东南亚预算¥5000一周时间,日本澳大利亚¥30000两周时间,中东¥20000一周时间,美国加拿大再加上墨西哥¥40000两周时间,非洲¥40000两周时间,总共需要¥135000,加上2个月的假期,一个最基本的环游世界过程,通过5年时间来实现并不那么困难。
当你把想要的东西写在了纸上,就请你坚持去追求这个目标,直到实现。你有了个目标,也有了一条基本可以实行的达成这个目标的路,接下来按着路走就是了。但实际上,很多人会被各种各样的原因或者诱惑引偏了目标,最终自己都不知道要追求什么了。比如上面的那个目标,可能,有人突然觉得朋友们都开辆车挺酷,决定还是买辆车,可能觉得买个房子让自己舒服一点也不错,决定买房子,可能过两年觉得还是现实一点,大家做啥我也做啥吧,最终没有去坚持。
绝大多数时候,成功与不成功,只是差那坚持的一步而已。很多时候的不能坚持,并不是因为太艰苦,而是因为目标的不明确。譬如赶夜路,四周黑漆漆的一片,如果前面有一盏清晰的明灯,是不是比较容易走到?如果前面有很多闪烁不定的灯光,或者什么亮光也没有,那么你该往哪里走呢?
先不要想做销售还是做管理,也不要想是做服装还是做IT,这些东西都是之后才要选择的,你先要想什么能使你快乐,你想要变得富有?你想要家庭和睦?你想要生活悠闲?你想要很好的人缘?……你,大概不可能什么都想要,什么都想要的结果是什么都得不到,追求目标需要专注而坚持。不要管别人得到了什么,不要去和别人攀比,别人得到的那些东西你并不一定真正想要,你真正需要关心的是你要什么。很多人的不快乐是因为别人有的他都想得到,所有得到的又都不喜欢,其实根本不知道自己想要什么。想好了要什么,然后心要定,不要今天才下定决心好好工作,明天觉得股市大涨也按奈不住。即使是赌博,赢的也是心定的人,心不定的人,永远是输家。
有很多时候如果你选择了一样东西,也就意味着你必须放弃很多其他的东西,你选择事业的发达,那么你就没有选择跟谁做朋友喜欢谁不喜欢谁的权利了。你的客户你的上司你的合作伙伴,你喜欢也得喜欢,不喜欢也得喜欢,你基本上没有选择的权利,你非要张扬个性,要么你还是不要选择事业发达,要么等你有资本了再说。这不是对错的问题,是成本的问题。成功永远是有成本的,一年挣一百万和十年挣一百万,前者叫作成功,后者叫做普通。接受一个可以接受的结果,往往比追求一个完美的结果的成本低得很多。选择目标也是一样,要考虑成本,选择一个可以接受的目标往往比选择一个宏大的目标成本要低得多。
期望
期望是一件很重要的事情,期望是对于未来的评估,比如买股票我们一定会对一个股票有期望,我们期望它会涨才会买。事实上我们却往往缺乏期望的本事,买股票如此,做其他事情也是如此。
还是我妻子的例子,她有一天跟我抱怨说“为什么我都跟他们说得那么清楚了,他们还是会做错?”我说,你知道他们每次都会犯错,而这一次你期望他们会不犯错?其实这是你的问题,你对别人期望太高。既然你都知道他们每次都会错,这一次你就应该假定他们还是会犯错,然后你准备好给他们改错的时间,准备发现他们为什么会犯错的原因。我们总是会对别人期望太高,然后失望又太深。
以大多数人现在的心态,90%的情况下,别人会让你失望的,那不是他的错,而是你期望太高。如果你降低你的期望值,你会发现生活美好了很多。如果你的成功是基于过高的期望,大概,你不会成功。你必须以对别人比较低的期望值来构筑自己的未来,打个比方,做明年指标的时候,手下的销售人员都说他们能做2000万生意,你要是真信,你就惨了,最好先打好算盘,他们也就做500万,剩下的赶紧找其他办法来补足,指标也不要报太高。需要注意的是,心里降低对别人的期望值,但嘴巴上不能对别人讲,对别人还是要用积极鼓励的方式。
很多人跟自己的直接上司搞不好关系,其实是因为对直接领导期望过高。有了功劳他上,有了责任你扛,有的时候他把领导当奴隶主,觉得可以对你呼来喝去,有的时候他简单粗暴,有的时候他拿不出什么好办法却打压你的方法……这是正常的期望值。他友善,他谦虚,他耐心,他脾气很好不乱骂人,他总是能看到你的努力和成绩,他总是在你失败的时候循循善诱,他总是会给你公平的待遇,他总会体谅你的苦衷,这属于过高的期望值。如果我们期望值过高,后果可想而知,巨大的落差带来巨大的失落感,觉得这公司真糟糕,怎么会让这么个烂人做领导?巨大到原来可能他只有20分坏而在强大的失落和愤懑中感觉有80分。如果你期望值比较低,原来就预计他有40分坏,结果他只有20分坏,反而你会觉得这份工作还不错,没你预期的那么糟糕。如果你都已经期望他会抢功劳,推责任,拍老板马屁,那么你还想不出办法来避免这些事情么?就像你明明知道马路上会有人抢你,你还被他抢到,那么你也有点问题了。这样做,不论结果怎样,都是惊喜。
我们也会对我们的下属期望过高,你觉得他会自己没事的时候多研究研究专业知识,那你恐怕要失望了,无聊的时候MSN和QQ乃至“连连看”才是他做得最多的事情。如果你期望过高你会觉得很失败,为什么我这么拼命而这些人天天打游戏?为什么我那么多次苦口婆心他们就一点没有反应?如果你本来就预计他会偷懒,他会报销的时候做点小手脚,你还会那么震惊那么失望么?
我们还会对我们的同事期望过高,你觉得他应该理解你的苦衷的时候他会摆你一道,你觉得他会和你一起承担责任的时候他假装没看见,你期望他能对你的帮助感恩的时候,他说这都是他的功来,而你是不怀好意来抢功劳的。
我们甚至会对自己期望太高,我们说我们很牛B,能做啥做啥,结果没做到。我们觉得自己跟某人关系很好很好,结果发现关键时刻他从来不帮忙。我们觉得自己能经得起诱惑,等诱惑真的摆在眼前,却说,死就死吧,顾不得那么多了。我们觉得我们能够控制自己的情绪,却常常会一时冲动。没有达到期望值,人们就会给自己找借口,等找借口成为了一种习惯,人也就废掉了。
对于工作的很多愤怒很多不满意其实是期望太高,如果期望不那么高,会发现你的工作其实还不错。而降低了期望值以后,根据比较低的期望值来做准备,就会发现结果都能在你的掌控之中,没有那么多“意外”了。有句话叫做“Hope for the best, prepare for the worst.”
跳槽与积累
首先要说明,工作是一件需要理智的事情,所以不要在工作上耍个性,天涯上或许会有人觉得你很有个性而叫好,煤气公司电话公司不会因为觉得你很有个性而免了你的帐单。当你很帅地炒掉了你的老板,当你很酷地挖苦了一番招聘的HR,账单还是要照付,只是你赚钱的时间更少了,除了你自己,没人受损失。
我并不反对跳槽,但跳槽决不是解决问题的办法,而且频繁跳槽的后果是让人觉得没有忠诚度可言,而且不能安心工作。现在很多人从网上找工作,很多找工作的网站常常给人出些馊主意,要知道他们是盈利性企业,当然要从自身盈利的角度来考虑,大家越是频繁跳槽频繁找工作他们越是生意兴隆,所以鼓动人们跳槽是他们的工作。所以他们会常常告诉你,你拿的薪水少了,你享受的福利待遇差了,又是“薪情快报”又是“赞叹自由奔放的灵魂”。至于是否会因此让你不能安心,你跳了槽是否解决问题,是否更加开心,那个,他们管不着。
要跳槽肯定是有问题,一般来说问题发生了,躲是躲不开的,很多人跳槽是因为这样或者那样的不开心,如果这种不开心,在现在这个公司不能解决,那么在下一个公司多半也解决不掉。你必须相信,90%的情况下,你所在的公司并没有那么烂,你认为不错的公司也没有那么好。就像围城里说的,“城里的人拼命想冲出来,而城外的人拼命想冲进去。”每个公司都有每个公司的问题,没有问题的公司是不存在的。换个环境你都不知道会碰到什么问题,与其如此,不如就在当下把问题解决掉。很多问题当你真的想要去解决的时候,或许并没有那么难。有的时候你觉得问题无法解决,事实上,那只是“你觉得”。
人生的曲线应该是曲折向上的,偶尔会遇到低谷但大趋势总归是曲折向上的,而不是象脉冲波一样每每回到起点,我见过不少面试者,30多岁了,四五份工作经历,每次多则3年,少则1年,30多岁的时候回到起点从一个初级职位开始干起,拿基本初级的薪水,和20多岁的年轻人一起竞争,不觉得有点辛苦么?这种日子好过么?
我非常不赞成在一个行业超过3年以后换行业,基本上,35岁以前我们的生存资本靠打拼,35岁以生存的资本靠的就是积累,这种积累包括人际关系,经验,人脉,口碑……如果常常更换行业,代表几年的积累付之东流,一切从头开始,如果换了两次行业,35岁的时候大概只有5年以下的积累,而一个没有换过行业的人至少有了10年的积累,谁会占优势?工作到2-3年的时候,很多人觉得工作不顺利,好像到了一个瓶颈,心情烦闷,就想辞职,乃至换一个行业,觉得这样所有一切烦恼都可以抛开,会好很多。其实这样做只是让你从头开始,到了时候还是会发生和原来行业一样的困难,熬过去就向上跨了一大步,要知道每个人都会经历这个过程,每个人的职业生涯中都会碰到几个瓶颈,你熬过去了而别人没有熬过去你就领先了。跑长跑的人会知道,开始的时候很轻松,但是很快会有第一次的难受,但过了这一段又能跑很长一段,接下来会碰到第二次的难受,坚持过了以后又能跑一段,如此往复,难受一次比一次厉害,直到坚持不下去了。大多数人第一次就坚持不了了,一些人能坚持到第二次,第三次虽然大家都坚持不住了,可是跑到这里的人也没几个了,这点资本足够你安稳活这一辈子了。
一份工作到两三年的时候,大部分人都会变成熟手,这个时候往往会陷入不断的重复,有很多人会觉得厌倦,有些人会觉得自己已经搞懂了一切,从而懒得去寻求进步了。很多时候的跳槽是因为觉得失去兴趣了,觉得自己已经完成比赛了。其实这个时候比赛才刚刚开始,工作两三年的人,无论是客户关系,人脉,手下,和领导的关系,在业内的名气……还都是远远不够的,但稍有成绩的人总是会自我感觉良好的,每个人都觉得自己跟客户关系铁得要命,觉得自己在业界的口碑好得很。其实可以肯定地说,一定不是,这个时候,还是要拿出前两年的干劲来,稳扎稳打,积累才刚刚开始。
你足够了解你的客户吗?你知道他最大的烦恼是什么吗?你足够了解你的老板么?你知道他最大的烦恼是什么吗?你足够了解你的手下么?你知道他最大的烦恼是什么吗?如果你不知道,你凭什么觉得自己已经积累够了?如果你都不了解,你怎么能让他们帮你的忙,做你想让他们做的事情?如果他们不做你想让他们做的事情,你又何来的成功?
实干
很久以前炎帝有个小女儿,叫做女娃,在东海游玩,被淹死了。女娃死了以后,气愤难平,化身作鸟,书中记载“有鸟焉,其状如乌;文首、白喙、赤足,名曰精卫。”
陶渊明说“精卫衔微木,将以填沧海。”我总是被祖先身上这股子执著劲感动,不过今天要说的不是执著而是行动。精卫气愤之下没有上论坛发一篇帖子,把东海一通臭骂,然后控诉天下的黑暗世事的不公,而是立刻动手,化身为鸟开始填海。不知道后来东海被她填平了没有,但是相信总有一天会被她填平的。
“人因梦想而伟大。”有了梦想还是要动手去做的,无论梦想得多么好,永远停留在梦想上最终不过是做梦而已。精卫的办法虽然笨了点,好在马上就动手做,也许做起来以后她会发觉这个方法效率不好,然后想办法改进,但是如果不动手去做,永远也实现不了梦想。与此有异曲同工之妙的,愚公是也。愚公想好了就动手做,换作现代网络人,一定是发一帖子《论门前有山的不合理性》,然后有人回《十个理由驳门前有山的不合理性》,双方开始论战,又发文《看看人家河曲智叟是如何对待门前大山的》,开始那人回曰《坚决反对智叟文化对我传统文化的侵蚀》,高帽子大理论满天飞舞,简直可以出一本论文集。最后一路论战到《从门前的大山看社会的黑暗和神仙的腐败》,责问为何天帝不过问此事,难道天帝是白吃供奉的么?门前的大山虽然是小事,但是神仙的责任不就是照护天下百姓么?岂能因善小而不为?众人一通感慨,是啊,是啊,但愿有圣人出,平乱世,大庇我等寒士俱欢颜。感概完毕,大家回家该睡觉睡觉,该吃饭吃饭,第二天就当这事情从来没发生过。
生活中人们总是有着很多美好的想法和计划,可是大多数只是睡觉前躺在床上想想而已,总是想“等什么时候”有时间了再去做,岂知,若不动手开始做,这“什么时候”永远也不会到来,因此就只能总是做梦了。生活中并不会平白跳出一段空白的时间,即使有了这样的空白时间,大多数人也是在想办法找事情打发时间,看看电视,上上网,挖挖地雷,翻翻纸牌,而从不把这时间当作“什么时候”。
快乐工作不会从天上掉下来,只有靠自己去创造,不能坐在那里等,做就比不做好,按照电影《霸王别姬》里面说的,“人得自己成全自己。”开始的时候可能做得不好,没什么关系,有谁是一开始就会的,不会学起来就是了。做事情不像开灯,一拨开关,灯就亮了,再一拨灯就灭了。没这么简单容易,往往就和锻炼身体一样,花了很多时间,很多努力才能积累起一点点来,而这一点点,稍稍放纵就前功尽弃了。所以不可能有那么一天,突然想做就做成了,一定是不断积累,失败,成功,再失败,再成功。也没有那种特效药,只要一个方法事情就做成了,不会有的。开始的时候方法笨一点没有关系,只要认真做就能不断改进,越早开始动手,积累的东西越多,越早碰到失败越接近成功。所以,不要等到那“什么时候”。
人们说“什么时候”的时候,大多也就是说“没有时候”的意思,以前做销售的时候,如果我的客户对我说“什么时候”,我就知道他不想跟我做生意了,他如果想,他一定知道具体是什么时候。
前两天看一文章,里面提到电影学院招生,问道如何发展中国电影,答什么的都有,有说要学习好莱坞的,有说要加大投入多拍片的,有说要更加商业化的,惟独一女士答曰“应该每星期去看一次电影。”这,才是国人缺乏的实干精神。我相信很多人在工作当中都有很好的想法,宏大的理想,眩目的理论,但真要动手,却常常在等“什么时候”,岁月蹉跎,“什么时候”始终也没有来,而这些想法也始终只是想法,没变成具体的东西,你也就还是那样不成功。
看人家精卫,一句废话没有,心里气,立刻动手。人生也是如此,最终回首自己这一辈子,总是问自己做了什么,而不是说了什么,或者想了什么。
等待
这是个浮躁的人们最不喜欢的话题,本来不想说这个话题,因为会引起太多的争论,而我又无意和人争论这些,但是考虑到对于职业生涯的长久规划,这是一个躲避不了的话题,还是决定写一写,不爱看的请离开吧。
并不是每次穿红灯都会被汽车撞,并不是每个罪犯都会被抓到,并不是每个错误都会被惩罚,并不是每个贪官都会被枪毙,并不是你的每一份努力都会得到回报,并不是你的每一次坚持都会有人看到,并不是你每一点付出都能得到公正的回报,并不是你的每一个善意都能被理解……这个,就是世道。好吧,世道不够好,可是,你有推翻世道的勇气么?如果没有,你有更好的解决办法么?有很多时候,人需要一点耐心,一点信心。每个人总会轮到几次不公平的事情,而通常,安心等待是最好的办法。
有很多时候我们需要等待,需要耐得住寂寞,等待属于你的那一刻。周润发等待过,刘德华等待过,周星驰等待过,王菲等待过,张艺谋也等待过……看到了他们如今的功成名就的人,你可曾看到当初他们的等待和耐心?你可曾看到金马奖影帝在街边摆地摊?你可曾看到德云社一群人在剧场里给一位观众说相声?你可曾看到周星驰的角色甚至连一句台词都没有?每一个成功者都有一段低沉苦闷的日子,我几乎能想象得出来他们借酒浇愁的样子,我也能想象得出他们为了生存而挣扎的窘迫。在他们一生最中灿烂美好的日子里,他们渴望成功,但却两手空空,一如现在的你。没有人保证他们将来一定会成功,而他们的选择是耐住寂寞。如果当时的他们总念叨着“成功只是属于特权阶级的”,你觉得他们今天会怎样?
曾经我也不明白有些人为什么并不比我有能力却要坐在我的头上,年纪比我大就一定要当我的领导么?为什么有些烂人不需要努力就能赚钱?为什么刚刚改革开放的时候的人能那么容易赚钱,而轮到我们的时候,什么事情都要正规化了?有一天我突然想,我还在上学的时候他们就在社会里挣扎奋斗了,他们在社会上奋斗积累了十几二十年,我们新人来了,他们有的我都想要,我这不是在要公平,我这是在要抢劫。因为我要得太急,因为我忍不住寂寞。二十多岁的男人,没有钱,没有事业,却有蓬勃的欲望。
人总是会遇到挫折的,人总是会有低潮的,人总是会有不被人理解的时候的,人总是有要低声下气的时候,这些时候恰恰是人生最关键的时候,因为大家都会碰到挫折,而大多数人过不了这个门槛,你能过,你就成功了。在这样的时刻,我们需要耐心等待,满怀信心地去等待,相信,生活不会放弃你,机会总会来的。至少,你还年轻,你没有坐牢,没有生治不了的病,没有欠还不起的债。比你不幸的人远远多过比你幸运的人,你还怕什么?路要一步步走,虽然到达终点的那一步很激动人心,但大部分的脚步是平凡甚至枯燥的,但没有这些脚步,或者耐不住这些平凡枯燥,你终归是无法迎来最后的那些激动人心。
逆境,是上帝帮你淘汰竞争者的地方。要知道,你不好受,别人也不好受,你坚持不下去了,别人也一样,千万不要告诉别人你坚持不住了,那只能让别人获得坚持的信心,让竞争者看着你微笑的面孔,失去信心,退出比赛。胜利属于那些有耐心的人。
在最绝望的时候,我会去看电影《The Pursuit of Happyness》《Jerry Maguire》,让自己重新鼓起勇气,因为,无论什么时候,我们总还是有希望。当所有的人离开的时候,我不失去希望,我不放弃。每天下班坐在车里,我喜欢哼着《隐形的翅膀》看着窗外,我知道,我在静静等待,等待属于我的那一刻。
原贴里伊吉网友的话我很喜欢,抄录在这里:
每个人都希望,自己是独一无二的特殊者
含着金匙出生、投胎到好家庭、工作安排到电力局拿1w月薪这样的小概率事件,当然最好轮到自己
红军长征两万五、打成右派反革命、胼手胝足牺牲尊严去奋斗,最好留给祖辈父辈和别人
自然,不是每个吃过苦的人都会得到回报
但是,任何时代,每一个既得利益者身后,都有他的祖辈父辈奋斗挣扎乃至流血付出生命的身影
羡慕别人有个好爸爸,没什么不可以
问题是,你的下一代,会有一个好爸爸吗?
至于问到为什么不能有同样的赢面概率?我只能问:为什么物种竞争中,人和猴子不能有同样的赢面概率?
物竞天择。猴子的灵魂不一定比你卑微,但你身后有几十万年的类人猿进化积淀。
成功的态度
必须要承认成功是一件很困难的事情,有太多的因素在阻止我们成功,甚至我们自己也在阻止我们自己成功。
我看到过很多销售在去客户那里之前忧心忡忡,“他会不会赶我出来?”“如果他不理我怎么办?”“我的东西会不会太贵了?”我也看到过很多人面对机会停步不前,“这样做大概不行吧。”“他大概不会理我吧?”“我的方案他估计会不喜欢吧?”“好工作斗数属于特权阶层的,我们这种小老百姓只能苟延残喘。”……没试过怎么知道不行,试一下会怎样?有这种想法的大多是生活态度比较消极的人,而消极的人通常不是把脑筋放在怎么做才行,而是把脑筋放在为什么不行。外界的障碍已经够多了,为什么还要自己给自己设立障碍?
态度决定很多事情,你可以悲观地看待事情,然后用悲观的做法,等待失败,把自己的悲观带给别人,也可以乐观地看待事情,用乐观的做法,让别人也乐观起来。往往,成功的人,大多是乐观的。我们也必须相信,我们所处的这个历史环境,既不是特别好,也不是特别差,我们的周围的人和环境,既不是特别优秀,也不是特别烂。我们没什么好抱怨的。这个世界基本上,有两种人,一种人永远在解释自己为什么做不到,一种人从不解释,因为他不是已经成功就是花时间在研究如何成功,没时间解释。
我们改变不了这个社会,面对这种我们改变不了的情况,我们可以选择抱怨,也可以选择面对。我一直是不太喜欢负面悲观的态度的,很多人总是喜欢把目光放在社会的黑暗面,似乎自己的所有不幸都是这个社会的错。这样的心态对自己一点帮助也没有,只会让自己的心情更加糟糕,更何况,实际上我们的生活并没有那么糟糕,至少大多数人没有像前外交部长那样的挨饿的经历。戴尔(Dell的老板)原来在一家公司打工做最基层的销售,他每天和一些社会底层的人打交道,他自己也很不喜欢这份工作,但是他并没有抱怨,他告诉自己如果他要摆脱现在这个环境,只有在现在这个环境里做得更好,然后才会得到提升,脱离这个环境,否则跳槽也解决不了这个问题,只是从一个底层换到另一个底层罢了。在之前的帖子里,有人说我是哪个公司的HR,我从来都没有管过人事,相反我是从销售做起的,有人说我有着稳定高薪的工作,也许吧,但是我想我最初的状况应该比这个版里的大多数人要差,当我刚刚开始工作的时候,租住在一个6平米的地下室里,地下室里只有一张床,一个书架,一张书桌,一把椅子,我所有的现金不到1000元,还是向同学借的,我没有一套西装,我没有电视机,我每天花两个小时骑着一辆50元买来的自行车上下班,那一年我24岁,我没有抱怨过。我并没有特别了不起,我想我能做到的事情,你应该也能。
我们还在常常做的一件事情就是给自己树立假想敌,臆想一些迫害自己的人,给自己制造悲情,而且用负面的角度去揣测别人。我的妻子曾经跟我说“我们公司鼓励加班”。我说这基本上是个不负责任的说法,请问,公司是谁?如果是你们老板,你们老板有没有公开表示过或者对你说过“员工应该多加班?”如果是某个部门负责人,他有没有资格代表公司讲话?如果是周围同事的议论,这究竟是猜测还是真相?每个人都在传说“我们公司鼓励加班”,每个人都很不开心,每个人都在制造和传播谣言,每个人都觉得公司在迫害自己,事实上就像动画片《咕咚来了》的故事,自己编故事吓唬自己。我妻子又说“有人得到了公司的表扬,理由是加班多。”我说,那如果你是老板你怎么办?他加班这么多难道你还批评他?理由是谁提的?为什么不去找比加班更好的值得表扬的理由?就像我小时候没事就捡到一毛钱交给老师以求表扬,因为实在想不出什么其他办法,也没见老师批评我呀。我相信有不少想要压迫员工让员工多加班的老板,但是我也相信他们不是绝大多数,如果不加班业绩就已经很好,为什么要加班?你一定要把老板想像成虐待狂,我也没办法,但要知道你有一天也可能成为别人的老板,你希望别人把你想象成虐待狂么?能不能公允地就事论事,而不要掺杂自己的情绪,这也是个态度问题。
以前上大学的时候,有个老师,对我们说,你们现在碰到的这些事情算什么事情,相对我们这些人来说∑=0,那个时候我们是很不服气的,觉得老头在倚老卖老,随着年龄的增长,才知道,果然,年轻时候那点经历那点荣誉那点知识那点郁闷相对于整个人生来说,基本可以忽略不计。我在天涯上常常看到《为了工作,我抛弃了尊严》这样的文章,我都不知道现代人哪来那么多尊严,动不动就觉得自己被冒犯了,这样活在社会上,很难。这,也是态度问题。
好与不好是个相对的概念,基本上是个人感觉的事情,就看你怎么看,同样一份工作,当你以积极正面的态度去看,就是一份好工作,当你以消极负面的态度去看,就是一份烂工作。人,还是要阳光一点。
入对行跟对人
在中国,大概很少有人是一份职业做到底的,虽然如此,第一份工作还是有些需要注意的地方,有两件事情格外重要,第一件是入行,第二件事情是跟人。第一份工作对人最大的影响就是入行,现代的职业分工已经很细,我们基本上只能在一个行业里成为专家,不可能在多个行业里成为专家。很多案例也证明即使一个人在一个行业非常成功,到另外一个行业,往往完全不是那么回事情,“你想改变世界,还是想卖一辈子汽水?”是乔布斯邀请百事可乐总裁约翰·斯考利加盟苹果时所说的话,结果这位在百事非常成功的约翰,到了苹果表现平平。其实没有哪个行业特别好,也没有哪个行业特别差,或许有报道说哪个行业的平均薪资比较高,但是他们没说的是,那个行业的平均压力也比较大。看上去很美的行业一旦进入才发现很多地方其实并不那么完美,只是外人看不见。
说实话,我自己都没有发大财,所以我的建议只是让人快乐工作的建议,不是如何发大财的建议,我们只讨论一般普通打工者的情况。我认为选择什么行业并没有太大关系,看问题不能只看眼前。比如,从前年开始,国家开始整顿医疗行业,很多医药公司开不下去,很多医药行业的销售开始转行。其实医药行业的不景气是针对所有公司的,并非针对一家公司,大家的日子都不好过,这个时候跑掉是非常不划算的,大多数正规的医药公司即使不做新生意撑个两三年总是能撑的,大多数医药销售靠工资撑个两三年也是可以撑的,国家不可能永远捏着医药行业不放的,两三年以后光景总归还会好起来的,那个时候别人都跑了而你没跑,那时的日子应该会好过很多。有的时候觉得自己这个行业不行了,问题是,再不行的行业,做得人少了也变成了好行业,当大家都觉得不好的时候,往往却是最好的时候。大家都觉得金融行业好,金融行业门槛高不说,有多少人削尖脑袋要钻进去,竞争激励,进去以后还要时时提防,一个疏忽,就被后来的人给挤掉了,压力巨大,又如何谈得上快乐?也就未必是“好”工作了。
太阳能这个东西至今还不能进入实际应用的阶段,但是中国已经有7家和太阳能有关的公司在纽交所上市了,国美苏宁永乐其实是贸易型企业,也能上市,鲁泰纺织连续10年利润增长超过50%,卖茶的一茶一座,卖衣服的海澜之家都能上市……其实选什么行业真的不重要,关键是怎么做。事情都是人做出来的,关键是人。
有一点是需要记住的,这个世界上,有史以来直到我们能够预见得到的未来,成功的人总是少数,有钱的人总是少数,大多数人是一般的,普通的,不太成功的。因此,大多数人的做法和看法,往往都不是距离成功最近的做法和看法。因此大多数人说好的东西不见得好,大多数人说不好的东西不见得不好。大多数人都去炒股的时候说明跌只是时间问题,大家越是热情高涨的时候,跌的日子越近。大多数人买房子的时候,房价不会涨,而房价涨的差不多的时候,大多数人才开始买房子。不会有这样一件事情让大家都变成功,发了财,历史上不曾有过,将来也不会发生。有些东西即使一时运气好得到了,还是会在别的时候别的地方失去的。
年轻人在职业生涯的刚开始,尤其要注意的是,要做对的事情,不要让自己今后几十年的人生总是提心吊胆,更不值得为了一份工作赔上自己的青春年华。我的公司是个不行贿的公司,以前很多人不理解,甚至自己的员工也不理解,不过如今,我们是同行中最大的企业,客户乐意和我们打交道,尤其是在国家打击腐败的时候,每个人都知道我们做生意不给钱的名声,都敢于和我们做生意。而勇于给钱的公司,不是倒了,就是跑了,要不就是每天睡不好觉,人还是要看长远一点。很多时候,看起来最近的路,其实是最远的路,看起来最远的路,其实是最近的路。
跟对人是说,入行后要跟个好领导好老师,刚进社会的人做事情往往没有经验,需要有人言传身教。对于一个人的发展来说,一个好领导是非常重要的。所谓“好”的标准,不是他让你少干活多拿钱,而是以下三个。
首先,好领导要有宽广的心胸,如果一个领导每天都会发脾气,那几乎可以肯定他不是个心胸宽广的人,能发脾气的时候却不发脾气的领导,多半是非常厉害的领导。中国人当领导最大的毛病是容忍不了能力比自己强的人,所以常常可以看到的一个现象是,领导很有能力,手下一群庸才或者手下一群闲人。如果看到这样的环境,还是不要去的好。
其次,领导要愿意从下属的角度来思考问题,这一点其实是从面试的时候就能发现的,如果这位领导总是从自己的角度来考虑问题,几乎不听你说什么,这就危险了。从下属的角度来考虑问题并不代表同意下属的说法,但他必须了解下属的立场,下属为什么要这么想,然后他才有办法说服你,只关心自己怎么想的领导往往难以获得下属的信服。
第三,领导敢于承担责任,如果出了问题就把责任往下推,有了功劳就往自己身上揽,这样的领导不跟也罢。选择领导,要选择关键时刻能抗得住的领导,能够为下属的错误买单的领导,因为这是他作为领导的责任。
有可能,你碰不到好领导,因为,中国的领导往往是屁股决定脑袋的领导,因为他坐领导的位置,所以他的话就比较有道理,这是传统观念官本位的误区,可能有大量的这种无知无能的领导,只是,这对于你其实是好事,如果将来有一天你要超过他,你希望他比较聪明还是比较笨?相对来说这样的领导其实不难搞定,只是你要把自己的身段放下来而已。多认识一些人,多和比自己强的人打交道,同样能找到好的老师,不要和一群同样郁闷的人一起控诉社会,控诉老板,这帮不上你,只会让你更消极。和那些比你强的人打交道,看他们是怎么想的,怎么做的,学习他们,然后跟更强的人打交道。
选择
我们每天做的最多的事情,其实是选择,因此在谈职业生涯的时候不得不提到这个话题。
我始终认为,在很大的范围内,我们究竟会成为一个什么样的人,决定权在我们自己,每天我们都在做各种各样的选择,我可以不去写这篇文章,去别人的帖子拍拍砖头,也可以写下这些文字,帮助别人的同时也整理自己的思路,我可以多注意下格式让别人易于阅读,也可以写成一堆,我可以就这样发上来,也可以在发以前再看几遍,你可以选择不刮胡子就去面试,也可以选择出门前照照镜子……每天,每一刻我们都在做这样那样的决定,我们可以漫不经心,也可以多花些心思,成千上万的小选择累计起来,就决定了最终我们是个什么样的人。
从某种意义上来说我们的未来不是别人给的,是我们自己选择的,很多人会说我命苦啊,没得选择阿,如果你认为“去微软还是去IBM”“上清华还是上北大”“当销售副总还是当厂长”这种才叫选择的话,的确你没有什么选择,大多数人都没有什么选择。但每天你都可以选择是否为客户服务更周到一些,是否对同事更耐心一些,是否把工作做得更细致一些,是否把情况了解得更清楚一些,是否把不清楚的问题再弄清楚一些……你也可以选择在是否在痛苦中继续坚持,是否抛弃掉自己的那些负面的想法,是否原谅一个人的错误,是否相信我在这里写下的这些话,是否不要再犯同样的错误……生活每天都在给你选择的机会,每天都在给你改变自己人生的机会,你可以选择赖在地上撒泼打滚,也可以选择咬牙站起来。你永远都有选择。有些选择不是立杆见影的,需要累积,比如农民可以选择自己常常去浇地,也可以选择让老天去浇地,诚然你今天浇水下去苗不见得今天马上就长出来,但常常浇水,大部分苗终究会长出来的,如果你不浇,收成一定很糟糕。
每天生活都在给你机会,他不会给你一叠现金也不会拱手送你个好工作,但实际上,他还是在给你机会。我的家庭是一个普通的家庭,没有任何了不起的社会关系,我的父亲在大学毕业以后就被分配到了边疆,那个小县城只有一条马路,他们那一代人其实比我们更有理由抱怨,他们什么也没得到,年轻的时候文化大革命,书都没得读,支援边疆插队落户,等到老了,却要给年轻人机会了。他有足够的理由象成千上万那样的青年一样坐在那里抱怨生不逢时,怨气冲天。然而在分配到边疆的十年之后,国家恢复招研究生,他考回了原来的学校。研究生毕业,他被分配到了安徽一家小单位里,又是3年以后,国家第一届招收博士生,他又考回了原来的学校,成为中国第一代博士,那时的他比现在的我年纪还大。生活并没有放弃他,他也没有放弃生活。10年的等待,他做了他自己的选择,他没有放弃,他没有破罐子破摔,所以时机到来的时候,他改变了自己的人生。你最终会成为什么样的人,就决定在你的每个小小的选择之间。
你选择相信什么?你选择和谁交朋友?你选择做什么?你选择怎么做?……我们面临太多的选择,而这些选择当中,意识形态层面的选择又远比客观条件的选择来得重要得多,比如选择做什么产品其实并不那么重要,而选择怎么做才重要。选择用什么人并不重要,而选择怎么带这些人才重要。大多数时候选择客观条件并不要紧,大多数关于客观条件的选择并没有对错之分,要紧的是选择怎么做。一个大学生毕业了,他要去微软也好,他要卖猪肉也好,他要创业也好,他要做游戏代练也好,只要不犯法,不害人,都没有什么关系,要紧的是,选择了以后,怎么把事情做好。
除了这些,你还可以选择时间和环境,比如,你可以选择把这辈子最大的困难放在最有体力最有精力的时候,也可以走一步看一步,等到了40岁再说,只是到了40多岁,那正是一辈子最脆弱的时候,上有老下有小,如果在那个时候碰上了职业危机,实在是一件很苦恼的事情。与其如此不如在20多岁30多岁的时候吃点苦,好让自己脆弱的时候活得从容一些。你可以选择在温室里成长,也可以选择到野外磨砺,你可以选择在办公室吹冷气的工作,也可以选择40度的酷热下,去见你的客户,只是,这一切最终会累积起来,引导你到你应得的未来。
我不敢说所有的事情你都有得选择,但是绝大部分事情你有选择,只是往往你不把这当作一种选择。认真对待每一次选择,才会有比较好的未来。
与别人相处
如果你认为很多人都是SB,你认为人和人之间就像狗和狗一样不是你咬我就是我咬你,那么这一段不看也罢。
我们在社会里没办法不跟人打交道,也没办法自己一个人做成什么了不起的事情,要做成事情就要相互依靠。和你打交道的人,基本上你没得挑选,就像你的父母你也没得挑选,你只能面对现实,你再不喜欢也没办法,因为这些人上帝不是为你创造的。更让人沮丧的是,往往喜欢你的人对你的事业没啥帮助,而你讨厌的人却掌握着你需要的资源。你怎么办?怎样和别人发展成为一种相互支持的关系而不是相互攻讦的关系,这其实就是情商的最大作用。要讨厌一个人很容易,要让人讨厌也很容易,反过来却很难。
你大概只有一种办法——让和你交往的人获得利益,前提是你也要获得利益,这个有个流行的说法叫做双赢。你想获得利益,那么你必须让你的雇主获得利益,你的客户获得利益,你的下属获得利益,你的同事获得利益,大多数时候所谓关系好,就是利益平衡得好,所谓关系不好就是利益平衡得不好。“亲兄弟,明算账。”利益平衡得不好,亲兄弟也是会翻脸成仇的。你是领导是因为你会平衡利益,你不是领导是因为你不会。这一方面中国人是行家了,整篇的《三国演义》都是在讲这个故事。大多数情况下,最聪明成本最低的方法就是让大家都获利,没有办不成的事情,成本最高方法就是把其他人都干掉自己独得利益。
如果你想要双赢,你就要考虑对方要什么,比如找工作,员工也必须考虑一下公司要什么,要知道雇主并不欠你一份工作,只有你的产出大于雇主付你的薪水,雇主才会乐意雇用你。所以应聘者需要考虑的一个问题就是,雇佣我对方能得到什么利益,而不是急于问薪水多少?急于问薪水给对方的信号就是,我只关心我想要什么,我不关心你想要什么,这样不可能双赢的。同样当你作为雇主或者领导的时候,不考虑员工想要什么,也不可能获得员工的全心投入,做一天和尚敲一天钟的和尚是成本最高的员工。
很多时候,你有求于人,而人无求于你,比如你要销售东西给别人的时候,这个时候发现对方的需求就很重要了。发现需求最简单的方法就是“倾听”,人长了两个耳朵,一张嘴,就是要我们多听少说。多听少说不是为了礼貌,而是为了弄清楚对方的需求。想必很多人都有这样的经历,有人向你推销东西,他口若悬河,滔滔不绝,可是你却一点也不想听,只想快点打发他走,因为他不关心你的需求。根据我的观察,人都还是喜欢别人听自己讲些东西的,哪怕再沉默寡言的人也是希望有人听自己讲话的,之所以不讲是因为还不信任,这是人性。抛开了刚刚认识的紧张以后,人们还是比较喜欢说的。即使是国家主席也有需要和人分享的东西,无论是高兴的还是不高兴的事情。肯听别人说,不去打断是个美德。人们往往也管不住自己的嘴,说着说着就把自己的心理话说出来了,这个时候才能抓住他的需求究竟是什么。好的销售是会听的销售,不是会说的销售。而会平衡利益的人是会听别人需求的人,而不是会说自己需求的人。
和人相处很大程度上就像对着一面镜子,你对镜子愤怒,镜子里的人对你也愤怒,你对镜子微笑,镜子里的人对你也微笑。不少新人觉得人际关系不好处,记得这个道理就好了。你如果总是看到别人的缺点,别人自然看你的缺点,你如果看不上别人,别人也会看不上你。你伪装不了的,你的表情神态会告诉对方你究竟是怎么看待他的,所以,要搞好人际关系,先要从自己内心愿意和人打交道,愿意接触别人,愿意放开心扉,愿意接受别人的缺点,否则,很难。中国人有个道理,花花轿子人抬人,人在社会上要取得成就,需要相互抬举,而不是相互拆台。有些人的不成功就是因为他只会给别人拆台,不会抬举别人,比如击鼓骂曹的弥衡。要清高就别出来趟浑水,要趟浑水就别清高。
和人相处的最好武器就是“从别人的立场上思考问题”。从别人的角度来思考问题,这句话说起来简单,做起来很难,我听过一个例子,有个人要跳楼,劝他的人说“活着多好呀,生活多美好呀,不要跳楼。”这看上去是从跳楼者的角度来思考,实际上没有,对于要跳楼的人来说,他才不觉得生活美好,他正是因为觉得生活糟透了才要跳楼的。或许这个时候对他说“是的,我也觉得这个社会很tmd操蛋,但是你死了,你爸妈怎么办?妻子孩子怎么办?”会好一些。很多时候我们都觉得我们替别人考虑了,其实我们是站在自己的立场上替别人考虑的,而不是站在别人的立场上替别人考虑的。比如餐馆的服务员,总是说这个鱼翅比较好吃,这个老虎斑比较好吃,他们是站在自己要多赚钱的角度替顾客考虑的,并没有站在顾客要吃得实惠的立场上来替顾客考虑问题。
学会从别人的角度来思考问题,就会知道他要什么,什么是对他重要的,什么事不重要的,什么是他能够妥协的,什么是他会坚持的。了解着这些,他基本已经在你的掌控之中了,凡事总归能够找到一个双方都能接受的办法,这才是长久与人相处的办法。这种协调不见得是公平的,弱势的时候吃些亏,强势的时候占些便宜,目的是用最小的代价达到目的。成功的人控制别人,不成功的人被人控制。而控制别人不是靠官大靠命令,而是靠控制别人的利益和需求。
选择职业
职业的选择,总的来说,无非就是销售、市场、客服、物流、行政、人事、财务、技术、管理几个大类,有个有趣的现象就是,500强的CEO当中最多的是销售出身,第二多的人是财务出身,这两者加起来大概超过95%。现代IT行业也有技术出身成为老板的,但实际上,后来他们还是从事了很多销售和市场的工作,并且表现出色,公司才获得了成功,完全靠技术能力成为公司老板的,几乎没有。这是有原因的,因为销售就是一门跟人打交道的学问,而管理其实也是跟人打交道的学问,这两者之中有很多相通的东西,他们的共同目标就是“让别人去做某件特定的事情。”而财务则是从数字的层面了解生意的本质,从宏观上看待生意的本质,对于一个生意是否挣钱,是否可以正常运作有着最深刻的认识。
公司小的时候是销售主导公司,而公司大的时候是财务主导公司,销售的局限性在于只看人情不看数字,财务的局限性在于只看数字不看人情。公司初期,运营成本低,有订单就活得下去,跟客户也没有什么谈判的条件,别人肯给生意做已经谢天谢地了,这个时候订单压倒一切,客户的要求压倒一切,所以当然要顾人情。公司大了以后,一切都要规范化,免得因为不规范引起一些不必要的风险,同时运营成本也变高,必须提高利润率,把有限的资金放到最有产出的地方。对于上市公司来说,股东才不管你客户是不是最近出国,最近是不是那个省又在搞严打,到了时候就要把业绩拿出来,拿不出来就抛股票,这个时候就是数字压倒一切。
前两天听到有人说一句话觉得很有道理,开始的时候我们想“能做什么?”,等到公司做大了有规模了,我们想“不能做什么。”很多人在工作中觉得为什么领导这么保守,这也不行那也不行,错过很多机会。很多时候是因为,你还年轻,你想的是“能做什么”,而作为公司领导要考虑的方面很多,他比较关心“不能做什么”。
我并非鼓吹大家都去做销售或者财务,究竟选择什么样的职业,和你究竟要选择什么样的人生有关系,有些人就喜欢下班按时回家,看看书听听音乐,那也挺好,但就不适合找个销售的工作了,否则会是折磨自己。有些人就喜欢出风头,喜欢成为一群人的中心,如果选择做财务工作,大概也干不久,因为一般老板不喜欢财务太积极,也不喜欢财务话太多。先想好自己要过怎样的人生,再决定要找什么样的职业。有很多的不快乐,其实是源自不满足,而不满足,很多时候是源自于心不定,而心不定则是因为不清楚究竟自己要什么,不清楚要什么的结果就是什么都想要,结果什么都没得到。
我想,我们还是因为生活而工作,不是因为工作而生活,生活是最要紧的,工作只是生活中的一部分。我总是觉得生活的各方方面都是相互影响的,如果生活本身一团乱麻,工作也不会顺利。所以要有娱乐、要有社交、要锻炼身体,要有和睦的家庭……最要紧的,要开心,我的两个销售找我聊天,一肚子苦水,我问他们,2年以前,你什么都没有,工资不高,没有客户关系,没有业绩,处于被开的边缘,现在的你比那时条件好了很多,为什么现在却更加不开心了?如果你做得越好越不开心,那你为什么还要工作?首先的首先,人还是要让自己高兴起来,让自己心态好起来,这种发自内心的改变会让你更有耐心,更有信心,更有气质,更能包容……否则,看看镜子里的你,你满意么?
有人会说,你说得容易,我每天加班,不加班老板就会把我炒掉,每天累得要死,哪有时间娱乐、社交、锻炼?那是人们把目标设定太高的缘故,如果你还在动不动就会被老板炒掉的边缘,那么你当然不能设立太高的目标,难道你还想每天去打高尔夫?你没时间去健身房锻炼身体,但是上下班的时候多走几步可以吧,有楼梯的时候走走楼梯不走电梯可以吧?办公的间隙扭扭脖子拉拉肩膀做做俯卧撑可以吧?谁规定锻炼就一定要拿出每天2个小时去健身房?你没时间社交,每月参加郊游一次可以吧,周末去参加个什么音乐班,绘画班之类的可以吧,去尝试认识一些同行,和他们找机会交流交流可以吧?开始的时候总是有些难的,但迈出这一步就会向良性循环的方向发展。而每天工作得很苦闷,剩下的时间用来咀嚼苦闷,只会陷入恶性循环,让生活更加糟糕。
沟通
根据哈佛的研究资料,有70%的人工作中的不顺利是因为不善于沟通,不会和老板沟通就得不到支持,不会和客户沟通就得不到订单,不会和下属沟通就没人帮你做事,不会和平级同事沟通就会常常被其他部门打小报告。我们面临的绝大多数的矛盾误会其实是可以通过更有效地沟通解决的,有人举过这样一个例子,一次过错,开发部门的经理把责任推给了测试部门,于是测试部门觉得被排斥了,觉得只能辞职了。先假设事情真的如他所说,问题其实也没有那么难以解决,测试部门的人可以私下找到开发部门的经理谈谈,请问他,如果测试部门的人都走了,你猜接下来公司里谁的日子最难过?你觉得多久老板能找齐新人?多久新人能真正上手?在此之前老板会自己多干些活还是让其他人来加班分担掉这些工作?有多大概率新人会不再和开发部发生矛盾?如果开发部门的经理是聪明人,他会知道怎么办好的。开发部和测试部是公司里一根绳上的两只蚂蚱,谁也跑不了,跟自己的平级同事把共同利益沟通清楚,很多矛盾不会以这样的方式爆发出来。
很多人觉得沟通是一件非常简单的事情,我们每天都在说话,听别人说话,写email,打电话,写帖子回帖子,不都是在和人沟通?是的,但说话是一回事,别人听懂是另一回事,别人听懂而且乐意照办就又是一回事。实际上沟通是件非常困难的事情,脑子里想的事情如果是100,往往嘴巴里讲出来的是80,别人听到60,理解40。一件事情从一个人的脑子到另一个人的脑子,往往只剩下40%的内容和意思。见面的沟通和不见面的沟通又不一样,听得见声音的沟通和听不见声音的沟通又不一样。 同一件事情,不同的口气说出来又不一样。关系好不好沟通的效果又不一样,往往你说的是A对方听的是B。
沟通的内容,不是这里能说清楚的,但是沟通的方法,却是可以讨论的。你可以在公司做这样一个试验,先画一张简单的图,比如一个方块加一个圆圈加一个三角,请一位你觉得最有沟通能力,口才最好的人,看着这张图然后背对大家描述他所看到的图形,请大家按照他描述的画出来,并且不允许提问。然后你可以让这个人转过身来面对大家,再描述一次,再让大家画一次。最后这个人接受所有人的提问,再让大家画一次。你会发现,第一次几乎没有人能画对,不是尺寸不对就是位置不对,就是形状不对,第二次还是很少有人能画对,但是比第一接近很多。第三次就几乎所有人都能画对了。
为什么会这样?因为沟通是要有来有往的,不是单方面就可以完成沟通的,有很多人觉得自己已经跟别人说得很清楚了,怎么别人还是做不好?很大的原因就是因为单方面沟通的关系。公司里面一封email来就想让别人能够按照办理,这就像试验中的第一次,根本没有人能够做到。
沟通的时候,尽量把别人当成傻子,用最基本的词语来解释你的话,少说专业术语,有很多人说的话自己听得懂,别人听不懂,就因为说得不够简单。我要求我的销售找个不相关的人,比如他女朋友,跟他女朋友介绍产品,如果她听懂了,那么客户也能听懂,如果她听不懂,就要改进到她能听懂为止。如果找三个这种不想干的人都能说明白,那么介绍产品这一段算是过关了。
沟通要开放,不要预设立场,有些时候我们会事先觉得对方不会同意,或者觉得跟他说不通,我们沟通的效率就会大打折扣,因为一旦预设立场,别人可能只是问一句,在我们听起来都象刁难。一旦预设立场,我们满脑子都是防卫的念头,拼命找对方话里的问题,最后变成是面子之争,而非就事论事。以我的经验来看,至少有一半的机会,我们预设的立场是错误的。
沟通要形象生动,为什么我们要多媒体,为什么我们要看电影电视,为什么我们不喜欢看枯燥无味的理论书?只因为“形象生动”这四个字,我们必须把我们想要表达的东西形象生动地表述给对方,而不是讲抽象的概念。什么是形象生动?就是你说完了,在对方的脑子里直观地出现了具体的形象,而不是仍旧空空如也。这是个必须持续练习的本事,有这种本事的人,不怕在社会上没饭吃。
沟通能力强的人,比较容易得到别人的帮助,比较容易办成事情,比较容易不会引起误会,办事效率比较高。从某种角度上来说,你为什么还没有好工作?因为你还不会很好地沟通。沟通,不仅仅要考虑自己脑袋里想的东西,还要考虑别人脑袋里想的东西。如果你很了解别人脑袋里想的东西,你离成功还会远么?
心魔
大多数情况下,困难并不是来自困难本身,而是来自不明白自己的心。生活当中的事情往往纠缠在一起像一团乱麻,让人很难理清楚头绪,更难明白自己的心绪。
我一直都很反感麦当劳等单位搞一些慈善活动,他们要求你捐款给什么机构,但钱是给他们的,最后也是以他们的名义捐给慈善机构。反感的原因是,且不说钱到底去了哪里,我的钱为什么要以麦当劳的名义来捐?麦当劳又凭什么拿别人的钱去做好人。突然有一天反省自己,如果我那么在意究竟是谁的名字捐的款,那么我究竟在意的是捐款助人本身,还是在意的是乐善好施的名声。如果捐款是为了其他目的,那似乎也就失去了慈善的本意了,只要钱能够真正起到作用,至于什么途径就不那么重要了。每一次弄明白自己的心,我都会变得快乐很多。
有个故事叫做“二桃杀三士”,齐王说,把桃子赐给齐国最勇敢的武士,就引得三位武士自相残杀。这种故事在现实中多得很,今天公司老板拿个主任的职务就能让兄弟反目姐妹翻脸,明天为了个经理的职务就能让员工自相猜忌勾心斗角,后天评个优秀员工又让人大喜大悲又哭又闹。不大的输赢,却让参与的人付出巨大的代价,最后无论谁赢得桃子,大家都是输家,包括喜欢玩弄权术的老板。虽然看起来始作俑者并非参与者本人,但在这个游戏中,每个人都在向悲剧的结果努力,参与角逐的,没有人是无辜的。因为每个人的心中都燃烧着欲望的火焰,而又缺乏同等旺盛的智慧。常常我们蒙住自己的眼睛,不知道究竟为什么要这样做,也不知道自己究竟在做什么。
每个人都知道股市已经泡沫,但看着周围的人大把捞钱,总还是忍不住诱惑,自己告诉自己,没事的,不会那么巧正好轮到我。而一旦进去,就再也无法控制自己的心态,涨了想要更多,跌了还想翻本。泡沫总是会要破灭的,只是不知道谁赶上末班车,赶上的人会觉得是因为自己太贪婪么?不会,还是会觉得世道不好。在股市中的人,没有一个是无辜的。
我们刚刚开始工作的时候想,等我做了经理就好了,没想到做了经理却更不快乐,我们想等我们做了副总就好了,做了副总加倍不快乐,我们想做了老板就好了,结果发现,还是不快乐。一个月挣3000块的时候想一个月挣6000那多爽啊,挣了6000发现没啥感觉,挣12000大概会好些,挣12000的时候好像也没比挣3000的时候更开心,我们越来越不开朗,情绪越来越暴躁。似乎只有越来越强烈的物质刺激,才能暂时抚平我们的饥渴。
我们,究竟是怎么了?为什么追求了半天的东西,却让我们越来越不快乐?
我想,大约是因为我们看不清楚,浮躁而充满诱惑的环境点燃了我们的贪婪,虚荣和傲慢,我们却要在这种状态下作判断和决定,就像坐一个不认识路的司机开的车,越走越远,越走越烦躁。我们的许多不快乐,都是来自自己的心魔。
如果,每天你都很烦躁,很愤怒,很苦恼,很疲惫,你觉得你能做出正确的选择和判断么?你知道你应该学习,你嘴巴里也说你想学习,可你心里却学不进去,你批评这个,批评那个,不同的意见你都急于反驳,看不惯的事情急于讽刺谩骂。你知道你应该正面积极,你嘴巴里也这么说,可是明天你就忍不住打击自己打击别人。自己买了马六觉得不错,忍不住有的时候还会跟亲戚朋友炫耀,但看到别人买悍马却恼火起来。或许,是心态已经扭曲了,不解掉心魔,什么都不能使你快乐起来。
一些观念
其实一个国家的硬件改造速度是可以很快的,我们在用的手机,比美国人欧洲人在用的手机要好,上海陆家嘴的城市建设水平不比任何一个国际都市差。但是一个国家的软件——人的观念的改造速度却是很慢很慢的。有些观念受我们父辈的影响,还根深蒂固,无法改变。前两天我站在街边过马路,正好赶上红灯,一个母亲拉着一个小女孩就要闯红灯,那个小女孩大约四五岁年纪,挣扎着,小声地说这样不好,还不时不好意思地看看我,那母亲大约和我差不多的年纪,却在大声地说“这又不要紧的咯”。我有些难过,不是为了这个母亲,是为了这个小女孩,不知道她长大以后会对她的孩子怎么说。
这里提几个我觉得工作中应该改变的观念:
一,我们的应聘者往往会想“我值多少钱?”其实老板关心的是“你做的事情值多少钱?”这是两个不同的概念,“我值多少钱?”的意思是我只要每天到公司坐着哪怕不干活或者不努力干活你就应该给我多少钱,而如果我努力干活你应该再给我多少钱。而“你做的事情值多少钱?”的意思是,你如果不做事情,你一分钱也不值,我只对你做的事情付费。前一种想法多多少少带了点以前的大锅饭和铁饭碗的意思在里面,而后者则是干得越多得到越多。如果单纯地说“我值多少钱?”那么其实老板出1000多已经很慷慨了,如果说“我做的事情值多少钱?”那么我们讨论的薪水其实是没有上限的(至少针对大多数人追求的范围来说)。
天涯上时常有人会说“台巴子(或者小日本)很扣的,**工作才给**薪水”。其实,台企里面的台湾干部薪水很高,而且公司要负责健保、驻外补贴,定期返台的机票钱等很多福利费用。为什么会对大陆员工给得比较少?一个简单的逻辑,如果大陆员工和台湾员工一样好用,老板为什么要多花10倍100倍的薪水去请台湾员工?他钱多得没处花了么?之所以薪酬不一样是因为做的事情不一样。
二,一个常常出现的怪现象是应聘者常常能和招聘者争执起来,这种情况在我面试人的时候也会偶尔发生。这实在是很奇怪的情况,其他交易的过程谈不成就算了,买卖双方不至于在谈的过程中就吵起来,你进个商店说随便看看,营业员也不会觉得受了莫大委屈,也不会因为你还价太低觉得是在侮辱他的人格从而出言不逊。很多企业的招聘人员并不会考虑应聘者的自尊心,对于他们来说,招聘的过程和去商场买东西并没有什么不同,你有漫天要价的权利,我有落地还钱的权利,并不针对个人。如果应聘者很在意对方的态度,常常觉得自己受侮辱,那么应聘的确是件很痛苦的事情。换个位置思考问题,如果有一天你当了一个公司的招聘者,你会怎么看这个问题?你一定会耐心,努力发掘对方的优点,认真回答对方的每一个问题?没有一点脾气,哪怕你觉得对方是个小P孩?你会第一分钟就告诉对方你打算出多少工资?哪怕你还不知道对方能解决什么问题,不管你老板会不会骂你?你会据实诉说你公司的所有缺点,并且劝说应聘者你们公司可能比较烂,要来要小心?
现在的年轻人动不动就把很多东西上纲上线到人格尊严的高度,随时准备为捍卫自己的尊严而战。在我看,尊严这东西不是靠吵出来的,真正有尊严的人不需要也不会去和别人吵,美国从来不需要说自己很有尊严,就算别人拿他的自由女神开开玩笑也无所谓,谁都知道美国还是老大。倒是有不少同胞每天叫喊着尊严,到处找有没有辱华事件,一旦发现立刻如丧考妣,不是震撼就是震惊就是泪流满面,这样就有尊严了么。没有实力的时候,请先把尊严搁一边,再说别人也没侮辱你什么,是你神经过敏了,或者说,其实是你自卑。
三,劳资双方的矛盾,很多时候并非有些人想象的那样老板都是吸血鬼都是吝啬鬼。在社会的任何一个角落,只要有人就会有矛盾,只要有利益就有争执,只是每个人所处的立场不一样,看待事情的角度也就不一样。处于正常状态的人,没有人会认为自己有问题,没有人会认为自己干得少了,拿得多了。大家都觉得这是对方的问题,员工觉得老板太扣,老板觉得员工上班的时候跟别人QQ聊天,员工觉得老板成天要人加班,老板觉得员工报销的时候占小便宜,员工觉得老板任人维亲,老板觉得员工常常偷偷去别家公司面试……人,就是这个样子的!人的本性是我们无法改变的,但面临这个情况,我们是要利用这个环境还是被这个环境左右?每天在天涯上骂老板有用么?好吧,没错,大部分老板会任人维亲,即使“不亲”很有才华,那么我们能怎么办呢?你就不能变成那个“亲”么?你可以主动去要求承担一件别人都不愿意承担的事情,你可以和老板常常沟通你都在做些什么,主动提交你的工作计划和工作总结,如果你的工作很好,你的客户会替你说好话……这样做的结果就是你和你老板都会把重点转移到工作本身,而不是谁对谁错上。
四,关于为什么本文不提那些黑暗面以及各种黑暗的操作方法(比如有人提到的厚脸皮,撒谎,诡辩,推卸责任等等),其实我举个例子大家就明白了。大家都说那些成绩优秀的运动员都吃药,好吧,我承认,大部分专业运动员都吃违禁药品,即使不吃违禁药品也会吃一些能帮助提高成绩的药品。你说你也要吃,那是你的自由,但问题是,你吃违禁药品就能跑得过专业运动员了么?吃兴奋剂是要被抓的,即使有着丰富服药经验的专业运动员还时不时被抓到,你觉得你能不被抓到么?当你被抓的时候,你觉得教唆你吃兴奋剂的人还会像当初他教唆你的时候那样义正辞严么?还是会假装没看见?如果你还处在找工作或者工作没多久的阶段,那些非常手段对你真的帮助不大,还是要靠些真本事。有谁见过专业运动员是只靠吃兴奋剂而不需要努力训练的?我给你吃三倍的兴奋剂,你能跑得过刘翔?即使你用尽这些厚脸皮,撒谎,诡辩的手段,你搞得过在混了十年二十年的人?如果你只是要搞搞和你一样的可怜人,我无话可讲。
五,关于财务观念,很多时候,大家在做的事情实际上是个财务陷阱。我们在自己的财务上需要算笔账,比如买车,买一般的车要10万,加上各种费用12万(不在上海),如果打车,按照每天100元算,12万可以打4年,加上油钱,过路费,保险,装饰,修理,出事耽误的时间,可以打6年车。省去了停车的麻烦,省去了检修的麻烦,省去了事故处理的麻烦。实在需要辆车出游的时候租一辆就是了,没有必要在刚刚积攒起来一点钱的时候就去买一辆车。按照《穷爸爸富爸爸》里面的关点,要富有就要买进资产,而不是买进负债。买房子也一样,如果你买房子不是为了投资,那其实就是花费,从财务观念上是必须被控制的,在你还没有什么资金的时候,拿那么多钱去花费,现金流变得很糟糕,这些钱不能拿来产生更多的钱,被卡死在那里,原本这些钱可能经过3年的投资增长了40%,如今即使涨,也涨不到你的口袋里,如果你是炒房,那又另当别论。租房,对于财务状况还不那么健康的年轻人来说,是个不错的选择。再比如买各种化妆品,拍婚纱照,频繁更新换代手机,给小孩买进口奶粉,这些都是财务陷阱,你为了一分的作用花了十分的代价,商家是赢家,而你,60岁还要工作。
六,不打车的时候,我们骑自行车也没觉得很苦,习惯打车以后就不想再骑自行车了,没车的时候我们走得很好,有了车即使出门只有500米,我们也懒得走。随着条件的改善,我们的生活成本会不断增加,这些成本不见得是钱,而是我们的耐受度降低而依赖度增加了,或者说我们变得更脆弱了。这实在是件让人担心的事情,我们在变老而且我们在变得脆弱,越来越害怕失去工作。或者,我们应该有意识地去控制一下这种成本,不要太轻易地让自己滑落到舒适和懒散中去,不要让自己对物质条件过度依赖,适度地让自己受点罪,以减缓这种成本增加的速度。
七,我们看了很多社会的新闻觉得很愤怒,我们看到女大学生为钱卖身,我们看到城管欺负小贩,我们看到街头卖艺的小孩,我们看到农村在没有房顶的屋子里上学的孩子,我们看到每年公款吃喝5000个亿,我们看到陈良宇人老心不老,我们看到被枪毙的药监局高官……最直接的反应就是愤怒,当一代代愤怒的青年也成了既得利益者,却会和他们一样甚至更为下作。如果你只是看到别人吃肉泡妞因妒忌而愤怒,我鄙视你,如果你因爱你的国家,同情弱者的遭遇而愤怒,如果你真的想改变一些东西,请你和我一样,不要总盯着别人,先做好自己手边的事情,我们只是普通人,我们做不了太了不起的事情,做好手边的事情是我们能对我们这个国家所做的最大的帮助。当每个人都能凭良心做好手边的事情,国家就会有希望。
越写到后来越了解其实自己还是不太懂,只有不懂的人才总喜欢说,懂的人就不说了。(全文完)
C++学习重点分析
一、#include “filename.h”和#include 的区别
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件
#include 是指编译器将从标准库目录中开始查找此文件
二、头文件的作用
加强安全检测
通过头文件可能方便地调用库功能,而不必关心其实现方式
三、* , &修饰符的位置
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名
四、if语句
不要将布尔变量与任何值进行比较,那会很容易出错的。
整形变量必须要有类型相同的值进行比较
浮点变量最好少比点,就算要比也要有值进行限制
指针变量要和NULL进行比较,不要和布尔型和整形比较
五、const和#define的比较
const有数据类型,#define没有数据类型
个别编译器中const可以进行调试,#define不可以进行调试
在类中定义常量有两种方式
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值;
2、 用枚举代替const常量。
六、C++函数中值的传递方式
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference)
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构
函数的类型不能省略,就算没有也要加个void
七、函数体中的指针或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉
return str;
}
函数体内的指针变量并不会随着函数的消亡而自动释放
八、一个内存拷贝函数的实现体
void *memcpy(void *pvTo,const void *pvFrom,size_t size)
{
assert((pvTo!=NULL)&&(pvFrom!=NULL));
byte *pbTo=(byte*)pvTo; //防止地址被改变
byte *pbFrom=(byte*)pvFrom;
while (size-- >0)
pbTo++ = pbForm++;
return pvTo;
}
九、内存的分配方式
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。
十、内存分配的注意事项
用new或malloc分配内存时,必须要对此指针赋初值。
用delete 或free释放内存后,必须要将指针指向NULL
不能修改指向常量的指针数据
十一、内容复制与比较
//数组……
char a[]=”Hello Word!”;
char b[10];
strcpy(b,a);
if (strcmp(a,b)==0)
{}
//指针……
char a[]=”Hello Word!”;
char *p;
p=new char[strlen(a)+1];
strcpy(p,a);
if (strcmp(p,a)==0)
{}
十二、sizeof的问题
记住一点,C++无法知道指针所指对象的大小,指针的大小永远为4字节
char a[]=”Hello World!”
char *p=a;
count<
count<
而且,在函数中,数组参数退化为指针,所以下面的内容永远输出为4
void fun(char a[1000])
{
count<
}
十三、关于指针
1、 指针创建时必须被初始化
2、 指针在free 或delete后必须置为NULL
3、 指针的长度都为4字节
4、释放内存时,如果是数组指针,必须要释放掉所有的内存,如
char *p=new char[100];
strcpy(p,”Hello World”);
delete []p; //注意前面的[]号
p=NULL;
5、数组指针的内容不能超过数组指针的最大容易。
如:
char *p=new char[5];
strcpy(p,”Hello World”); //报错 目标容易不够大
delete []p; //注意前面的[]号
p=NULL;
十四、关于malloc/free 和new /delete
l malloc/free 是C/C+的内存分配符,new /delete是C++的内存分配符。
l 注意:malloc/free是库函数,new/delete是运算符
l malloc/free不能执行构造函数与析构函数,而new/delete可以
l new/delete不能在C上运行,所以malloc/free不能被淘汰
l 两者都必须要成对使用
l C++中可以使用_set_new_hander函数来定义内存分配异常的处理
十五、C++的特性
C++新增加有重载(overload),内联(inline),Const,Virtual四种机制
重载和内联:即可用于全局函数,也可用于类的成员函数;
Const和Virtual:只可用于类的成员函数;
重载:在同一类中,函数名相同的函数。由不同的参数决定调用那个函数。函数可要不可要Virtual关键字。和全局函数同名的函数不叫重载。如果在类中调用同名的全局函数,必须用全局引用符号::引用。
覆盖是指派生类函数覆盖基类函数
函数名相同;
参数相同;
基类函数必须有Virtual关键字;
不同的范围(派生类和基类)。
隐藏是指派生类屏蔽了基类的同名函数相同
1、 函数名相同,但参数不同,此时不论基类有无Virtual关键字,基类函数将被隐藏。
2、 函数名相同,参数也相同,但基类无Virtual关键字(有就是覆盖),基类函数将被隐藏。
内联:inline关键字必须与定义体放在一起,而不是单单放在声明中。
Const:const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1、 参数做输入用的指针型参数,加上const可防止被意外改动。
2、 按值引用的用户类型做输入参数时,最好将按值传递的改为引用传递,并加上const关键字,目的是为了提高效率。数据类型为内部类型的就没必要做这件事情;如:
将void Func(A a) 改为void Func(const A &a)。
而void func(int a)就没必要改成void func(const int &a);
3、 给返回值为指针类型的函数加上const,会使函数返回值不能被修改,赋给的变量也只能是const型变量。如:函数const char*GetString(void); char *str=GetString()将会出错。而const char *str=GetString()将是正确的。
4、 Const成员函数是指此函数体内只能调用Const成员变量,提高程序的键壮性。如声明函数 int GetCount(void) const;此函数体内就只能调用Const成员变量。
Virtual:虚函数:派生类可以覆盖掉的函数,纯虚函数:只是个空函数,没有函数实现体;
十六、extern“C”有什么作用?
Extern “C”是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren “c”后,C++就能直接调用C函数了。
Extern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可。
十七、构造函数与析构函数
派生类的构造函数应在初始化表里调用基类的构造函数;
派生类和基类的析构函数应加Virtual关键字。
不要小看构造函数和析构函数,其实编起来还是不容易。
#include
class Base
{
public:
virtual ~Base() { cout<< "~Base" << endl ; }
};
class Derived : public Base
{
public:
virtual ~Derived() { cout<< "~Derived" << endl ; }
};
void main(void)
{
Base * pB = new Derived; // upcast
delete pB;
}
输出结果为:
~Derived
~Base
如果析构函数不为虚,那么输出结果为
~Base
十八、#IFNDEF/#DEFINE/#ENDIF有什么作用
仿止该头文件被重复引用
一、#include “filename.h”和#include 的区别
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件
#include 是指编译器将从标准库目录中开始查找此文件
二、头文件的作用
加强安全检测
通过头文件可能方便地调用库功能,而不必关心其实现方式
三、* , &修饰符的位置
对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名
四、if语句
不要将布尔变量与任何值进行比较,那会很容易出错的。
整形变量必须要有类型相同的值进行比较
浮点变量最好少比点,就算要比也要有值进行限制
指针变量要和NULL进行比较,不要和布尔型和整形比较
五、const和#define的比较
const有数据类型,#define没有数据类型
个别编译器中const可以进行调试,#define不可以进行调试
在类中定义常量有两种方式
1、 在类在声明常量,但不赋值,在构造函数初始化表中进行赋值;
2、 用枚举代替const常量。
六、C++函数中值的传递方式
有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference)
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构
函数的类型不能省略,就算没有也要加个void
七、函数体中的指针或引用常量不能被返回
Char *func(void)
{
char str[]=”Hello Word”;
//这个是不能被返回的,因为str是个指定变量,不是一般的值,函数结束后会被注销掉
return str;
}
函数体内的指针变量并不会随着函数的消亡而自动释放
八、一个内存拷贝函数的实现体
void *memcpy(void *pvTo,const void *pvFrom,size_t size)
{
assert((pvTo!=NULL)&&(pvFrom!=NULL));
byte *pbTo=(byte*)pvTo; //防止地址被改变
byte *pbFrom=(byte*)pvFrom;
while (size-- >0)
pbTo++ = pbForm++;
return pvTo;
}
九、内存的分配方式
分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题
1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。
2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。
十、内存分配的注意事项
用new或malloc分配内存时,必须要对此指针赋初值。
用delete 或free释放内存后,必须要将指针指向NULL
不能修改指向常量的指针数据
十一、内容复制与比较
//数组……
char a[]=”Hello Word!”;
char b[10];
strcpy(b,a);
if (strcmp(a,b)==0)
{}
//指针……
char a[]=”Hello Word!”;
char *p;
p=new char[strlen(a)+1];
strcpy(p,a);
if (strcmp(p,a)==0)
{}
十二、sizeof的问题
记住一点,C++无法知道指针所指对象的大小,指针的大小永远为4字节
char a[]=”Hello World!”
char *p=a;
count<
count<
而且,在函数中,数组参数退化为指针,所以下面的内容永远输出为4
void fun(char a[1000])
{
count<
}
十三、关于指针
1、 指针创建时必须被初始化
2、 指针在free 或delete后必须置为NULL
3、 指针的长度都为4字节
4、释放内存时,如果是数组指针,必须要释放掉所有的内存,如
char *p=new char[100];
strcpy(p,”Hello World”);
delete []p; //注意前面的[]号
p=NULL;
5、数组指针的内容不能超过数组指针的最大容易。
如:
char *p=new char[5];
strcpy(p,”Hello World”); //报错 目标容易不够大
delete []p; //注意前面的[]号
p=NULL;
十四、关于malloc/free 和new /delete
l malloc/free 是C/C+的内存分配符,new /delete是C++的内存分配符。
l 注意:malloc/free是库函数,new/delete是运算符
l malloc/free不能执行构造函数与析构函数,而new/delete可以
l new/delete不能在C上运行,所以malloc/free不能被淘汰
l 两者都必须要成对使用
l C++中可以使用_set_new_hander函数来定义内存分配异常的处理
十五、C++的特性
C++新增加有重载(overload),内联(inline),Const,Virtual四种机制
重载和内联:即可用于全局函数,也可用于类的成员函数;
Const和Virtual:只可用于类的成员函数;
重载:在同一类中,函数名相同的函数。由不同的参数决定调用那个函数。函数可要不可要Virtual关键字。和全局函数同名的函数不叫重载。如果在类中调用同名的全局函数,必须用全局引用符号::引用。
覆盖是指派生类函数覆盖基类函数
函数名相同;
参数相同;
基类函数必须有Virtual关键字;
不同的范围(派生类和基类)。
隐藏是指派生类屏蔽了基类的同名函数相同
1、 函数名相同,但参数不同,此时不论基类有无Virtual关键字,基类函数将被隐藏。
2、 函数名相同,参数也相同,但基类无Virtual关键字(有就是覆盖),基类函数将被隐藏。
内联:inline关键字必须与定义体放在一起,而不是单单放在声明中。
Const:const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1、 参数做输入用的指针型参数,加上const可防止被意外改动。
2、 按值引用的用户类型做输入参数时,最好将按值传递的改为引用传递,并加上const关键字,目的是为了提高效率。数据类型为内部类型的就没必要做这件事情;如:
将void Func(A a) 改为void Func(const A &a)。
而void func(int a)就没必要改成void func(const int &a);
3、 给返回值为指针类型的函数加上const,会使函数返回值不能被修改,赋给的变量也只能是const型变量。如:函数const char*GetString(void); char *str=GetString()将会出错。而const char *str=GetString()将是正确的。
4、 Const成员函数是指此函数体内只能调用Const成员变量,提高程序的键壮性。如声明函数 int GetCount(void) const;此函数体内就只能调用Const成员变量。
Virtual:虚函数:派生类可以覆盖掉的函数,纯虚函数:只是个空函数,没有函数实现体;
十六、extern“C”有什么作用?
Extern “C”是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren “c”后,C++就能直接调用C函数了。
Extern “C”主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可。
十七、构造函数与析构函数
派生类的构造函数应在初始化表里调用基类的构造函数;
派生类和基类的析构函数应加Virtual关键字。
不要小看构造函数和析构函数,其实编起来还是不容易。
#include
class Base
{
public:
virtual ~Base() { cout<< "~Base" << endl ; }
};
class Derived : public Base
{
public:
virtual ~Derived() { cout<< "~Derived" << endl ; }
};
void main(void)
{
Base * pB = new Derived; // upcast
delete pB;
}
输出结果为:
~Derived
~Base
如果析构函数不为虚,那么输出结果为
~Base
十八、#IFNDEF/#DEFINE/#ENDIF有什么作用
仿止该头文件被重复引用
一、全心投入工作(work harder at what you do):当你工作时,一定要全心投入,不要浪费时间,不要把工作场所当成社交场合。光这个秘诀,如果你能长期实践,就能使你的生产力加倍。
二、工作步调快(work faster):养成一种紧迫感,一次专心做一件事,并且用最快的速度完成,之后,立刻进入下一件工作。养成这习惯后,你会惊讶地发现,一天所能完成的工作量居然是如此地惊人。
三、专注于高附加值的工作(work on higher-value activities):你要记住工作时数的多寡不见得与工作成果成正比。精明的老板或是上司关心的是你的工作数量及工作品质,工作时数并非重点。因此聪明的员工,会想办法找出对达成工作目标及绩效标准有帮助的活动,然后投入最多时间与心力在这些事情上面。投入的时间愈多,每分钟的生产力就愈高,工作绩效也就提高,自然赢得老板及上司的赏识与重用,加薪与升迁在望。
四、熟练工作(do things you are better at):你找出最有价值的工作项目后,接着要想办法,通过不断学习、应用、练习,熟练所有工作流程与技巧,累积工作经验(一句话解决KNOW HOW的问题)。你的工作愈纯熟,工作所需的时间就愈短;你的技能愈熟练,生产力就提升得愈快。
五、集中处理(bunch your tasks):一个有技巧的工作人,会把许多性质相近的工作或是活动,例如,收发E-MAIL、写信、填写工作报表、填写备忘录等等,集中在同一个时段来处理,这样会比一件一件分开在不同时段处理,节省一半以上的时间,同时也能提高效率与效能。
六、简化工作(simplify your work):尽量简化工作流程,将许多分开的工作步骤加以整合,变成单一任务,以减少工作的复杂度,另外,运用授权或是外包的方式,避免把时间花费在低价值的工作上。
七、比别人工作时间长一些(work longer hours):早一点起床,早点去上班,避开交通高峰;中午晚一点出去用餐,继续工作,避开排队用餐的人潮;晚上稍微留晚一些,直到交通高峰时间已过,再下班回家。如此一天可以比一般人多出2至3个小时的工作时间,而且不会影响正常的生活步调。善用这些多出来的时间,可以使你的生产力加倍,进而使你的收入加倍。一个成功的人,通常是一个行动派的人,一旦懂得提升生产力的方法,就会将这7个小秘诀,默记在心,不断地应用、练习,直到成为工作、生活的习惯为止。只要养成这个习惯,你的生产力一定会提高,收入也会加倍。
1、敢于决断——克服犹豫不定的习性很多人之所以一事无成,最大的毛病就是缺乏敢于决断的手段,总是左顾右盼、思前想后,从而错失成功的最佳时机。成大事者在看到事情的成功可能性到来时,敢于做出重大决断,因此取得先机。
2、挑战弱点——彻底改变自己的缺陷人人都有弱点,不能成大事者总是固守自己的弱点,一生都不会发生重大转变;能成大事者总是善于从自己的弱点上开刀,去把自己变成一个能力超强的人。一个连自己的缺陷都不能纠正的人,只能是失败者!
3、突破困境——从失败中撮成功的资本人生总要面临各种困境的挑战,甚至可以说困境就是“鬼门关”。一般人会在困境面前浑身发抖,而成大事者则能把困境变为成功的有力跳板。
4、抓住机遇——善于选择、善于创造机遇就是人生最大的财富。有些人浪费机遇轻而易举,所以一个个有巨大潜力的机遇都悄然溜跑,成大事都是绝对不允许溜走,并且能纵身扑向机遇。
5、发挥强项——做自己最擅长的事情一个能力极弱的人肯定难以打开人生局面,他必定是人生舞台上重量级选手的牺牲品;成大事者关于在自己要做的事情上,充分施展才智,一步一步地拓宽成功之路。
6、调整心态——切忌让情绪伤害自己心态消极的人,无论如何都挑不起生活和重担,因为他们无法直面一个个人生挫折,成大事者则关于高速心态,即使在毫无希望时,也能看到一线成功的亮光。
7、立即行动——只说不做,徒劳无益一次行动胜过百遍心想。有些人是“语言的巨人,行动的矮子”,所以看不到更为实际现实的事情在他身上发生;成大事者是每天都靠行动来落实自己的人生计划的。
8、善于交往——巧妙利用人力资源一个人不懂得交往,必然会推动人际关系的力量。成大事者的特点之一是:善于靠借力、借热去营造成功的局势,从而能把一件件难以办成的事办成,实现自己人生的规划。
9、重新规划——站到更高的起点上人生是一个过程,成功也是一个过程。你如果满足于小成功,就会推动大成功。成大事者懂得从小到大的艰辛过程,所以在实现了一个个小成功之后,能继续拆开下一个人生的“密封袋”。
可以讲任何一种手段,都可以导致一种结果,但这个结果是不是最佳的结果,恐怕就很难说了。成大事者总是关于选择最佳的手段,达到最完善的结果,这就是非一般人所能做到的。因此在成功之路上,你要想成大事,首先要解决的问题就是:你的手段对你推动成功的计划是否立竿见影
二、工作步调快(work faster):养成一种紧迫感,一次专心做一件事,并且用最快的速度完成,之后,立刻进入下一件工作。养成这习惯后,你会惊讶地发现,一天所能完成的工作量居然是如此地惊人。
三、专注于高附加值的工作(work on higher-value activities):你要记住工作时数的多寡不见得与工作成果成正比。精明的老板或是上司关心的是你的工作数量及工作品质,工作时数并非重点。因此聪明的员工,会想办法找出对达成工作目标及绩效标准有帮助的活动,然后投入最多时间与心力在这些事情上面。投入的时间愈多,每分钟的生产力就愈高,工作绩效也就提高,自然赢得老板及上司的赏识与重用,加薪与升迁在望。
四、熟练工作(do things you are better at):你找出最有价值的工作项目后,接着要想办法,通过不断学习、应用、练习,熟练所有工作流程与技巧,累积工作经验(一句话解决KNOW HOW的问题)。你的工作愈纯熟,工作所需的时间就愈短;你的技能愈熟练,生产力就提升得愈快。
五、集中处理(bunch your tasks):一个有技巧的工作人,会把许多性质相近的工作或是活动,例如,收发E-MAIL、写信、填写工作报表、填写备忘录等等,集中在同一个时段来处理,这样会比一件一件分开在不同时段处理,节省一半以上的时间,同时也能提高效率与效能。
六、简化工作(simplify your work):尽量简化工作流程,将许多分开的工作步骤加以整合,变成单一任务,以减少工作的复杂度,另外,运用授权或是外包的方式,避免把时间花费在低价值的工作上。
七、比别人工作时间长一些(work longer hours):早一点起床,早点去上班,避开交通高峰;中午晚一点出去用餐,继续工作,避开排队用餐的人潮;晚上稍微留晚一些,直到交通高峰时间已过,再下班回家。如此一天可以比一般人多出2至3个小时的工作时间,而且不会影响正常的生活步调。善用这些多出来的时间,可以使你的生产力加倍,进而使你的收入加倍。一个成功的人,通常是一个行动派的人,一旦懂得提升生产力的方法,就会将这7个小秘诀,默记在心,不断地应用、练习,直到成为工作、生活的习惯为止。只要养成这个习惯,你的生产力一定会提高,收入也会加倍。
1、敢于决断——克服犹豫不定的习性很多人之所以一事无成,最大的毛病就是缺乏敢于决断的手段,总是左顾右盼、思前想后,从而错失成功的最佳时机。成大事者在看到事情的成功可能性到来时,敢于做出重大决断,因此取得先机。
2、挑战弱点——彻底改变自己的缺陷人人都有弱点,不能成大事者总是固守自己的弱点,一生都不会发生重大转变;能成大事者总是善于从自己的弱点上开刀,去把自己变成一个能力超强的人。一个连自己的缺陷都不能纠正的人,只能是失败者!
3、突破困境——从失败中撮成功的资本人生总要面临各种困境的挑战,甚至可以说困境就是“鬼门关”。一般人会在困境面前浑身发抖,而成大事者则能把困境变为成功的有力跳板。
4、抓住机遇——善于选择、善于创造机遇就是人生最大的财富。有些人浪费机遇轻而易举,所以一个个有巨大潜力的机遇都悄然溜跑,成大事都是绝对不允许溜走,并且能纵身扑向机遇。
5、发挥强项——做自己最擅长的事情一个能力极弱的人肯定难以打开人生局面,他必定是人生舞台上重量级选手的牺牲品;成大事者关于在自己要做的事情上,充分施展才智,一步一步地拓宽成功之路。
6、调整心态——切忌让情绪伤害自己心态消极的人,无论如何都挑不起生活和重担,因为他们无法直面一个个人生挫折,成大事者则关于高速心态,即使在毫无希望时,也能看到一线成功的亮光。
7、立即行动——只说不做,徒劳无益一次行动胜过百遍心想。有些人是“语言的巨人,行动的矮子”,所以看不到更为实际现实的事情在他身上发生;成大事者是每天都靠行动来落实自己的人生计划的。
8、善于交往——巧妙利用人力资源一个人不懂得交往,必然会推动人际关系的力量。成大事者的特点之一是:善于靠借力、借热去营造成功的局势,从而能把一件件难以办成的事办成,实现自己人生的规划。
9、重新规划——站到更高的起点上人生是一个过程,成功也是一个过程。你如果满足于小成功,就会推动大成功。成大事者懂得从小到大的艰辛过程,所以在实现了一个个小成功之后,能继续拆开下一个人生的“密封袋”。
可以讲任何一种手段,都可以导致一种结果,但这个结果是不是最佳的结果,恐怕就很难说了。成大事者总是关于选择最佳的手段,达到最完善的结果,这就是非一般人所能做到的。因此在成功之路上,你要想成大事,首先要解决的问题就是:你的手段对你推动成功的计划是否立竿见影
一位软件工程师的6年总结 ( 转载)
(声明:欢迎转载,请保证文章的完整性)
“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。
谨以此文献给那个自己为你奉献3年青春与激情的开发团队。还有团队成员:PPL、YT、YK 、TYF、LGL、CHL、CDY、CB、DPD。
1、 分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、 一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、 软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。
4、 详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。
5、 书籍是人类进步的阶梯,对软件开发人员尤其如此。书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。
6、 不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
7、 在一种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi)进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。
8、 养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。
9、 理论与实践并重,内外双修。工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。
10、心态有多开放,视野就有多开阔。不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大家都懂,但有多少人真正能做到呢?
11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做。网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当他别人拿着合同找你合作,你却这也不会,那也不熟时,你将后悔莫及。
12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。诺贝尔经济学奖得主西蒙教授的研究结果表明: “对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。可见,掌握一门陌生的学问远远没有想想的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。
13、本文的总结与反思:
A:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。
B:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。
C:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。
(声明:欢迎转载,请保证文章的完整性)
“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。
谨以此文献给那个自己为你奉献3年青春与激情的开发团队。还有团队成员:PPL、YT、YK 、TYF、LGL、CHL、CDY、CB、DPD。
1、 分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、 一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、 软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。
4、 详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。
5、 书籍是人类进步的阶梯,对软件开发人员尤其如此。书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。
6、 不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
7、 在一种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi)进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。
8、 养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。
9、 理论与实践并重,内外双修。工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。
10、心态有多开放,视野就有多开阔。不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大家都懂,但有多少人真正能做到呢?
11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做。网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当他别人拿着合同找你合作,你却这也不会,那也不熟时,你将后悔莫及。
12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。诺贝尔经济学奖得主西蒙教授的研究结果表明: “对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。可见,掌握一门陌生的学问远远没有想想的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。
13、本文的总结与反思:
A:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。
B:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。
C:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。
控制台一闪一闪的小光标从当前位置后退一格= =、
比如printf("1234");结果就是1234
而printf("123\b4");结果是124,因为退一格再打印4就把先前打印的3洗掉了
猎鹰(905607625) 15:47:51
\b 退格。将当前的输出位置退回前一列处,即消除前一个已输出的字符。
比如printf("1234");结果就是1234
而printf("123\b4");结果是124,因为退一格再打印4就把先前打印的3洗掉了
=============================================
printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。
由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。所以本文着重介绍sprintf,有时也穿插着用用pritnf。
sprintf是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。
printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
1. 格式化数字字符串
sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。如:
//把整数123打印成一个字符串保存在s中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16进制打印:
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16进制,宽度占8个位置,左对齐
这样,一个整数的16进制字符串就很容易得到,但我们在打印16进制内容时,通常想要一种左边补0的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"
上面以”%d”进行的10进制打印同样也可以使用这种左边补0的方式。
这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1的内存16进制表示形式,在Win32平台上,一个short型占2个字节,所以我们自然希望用4个16进制数字来打印它:
short si = -1;
sprintf(s, "%04X", si);
产生“FFFFFFFF”,怎么回事?因为spritnf是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底是个4字节的整数还是个2字节的短整数,所以采取了统一4字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32位的整数-1,打印时4个位置不够了,就把32位整数-1的8位16进制都打印出来了。如果你想看si的本来面目,那么就应该让编译器做0扩展而不是符号扩展(扩展时二进制左边补0而不是补符号位):
sprintf(s, "%04X", (unsigned short)si);
就可以了。或者:
unsigned short si = -1;
sprintf(s, "%04X", si);
sprintf和printf还可以按8进制打印整数字符串,使用”%o”。注意8进制和16进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16进制或8进制表示。
2. 控制浮点数打印格式
浮点数的打印和格式控制是sprintf的又一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"
但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m表示打印的宽度,n表示小数点后的位数。比如:
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"
注意一个问题,你猜
int i = 100;
sprintf(s, "%.2f", i);
会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:
sprintf(s, "%.2f", (double)i);
第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i的那4个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。
不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编排的结果是否正确。J
字符/Ascii码对照
我们知道,在C/C++语言中,char也是一种普通的scalable类型,除了字长之外,它与short,int,long这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把这个类型叫做“byte”,然后现在就可以根据实际情况,使用byte或short来把char通过typedef定义出来,这样更合适些)
于是,使用”%d”或者”%x”打印一个字符,便能得出它的10进制或16进制的ASCII码;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII字符。以下程序段把所有可见字符的ASCII码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16进制数增加”0X”前缀):
for(int i = 32; i < 127; i++) {
printf("[ %c ]: %3d 0x%#04X\n", i, i, i);
}
3. 连接字符串
sprintf的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连接字符串,从而在许多场合可以替代strcat,但sprintf能够一次连接多个字符串(自然也可以同时在它们中间插入别的内容,总之非常灵活)。比如:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
strcat只能连接字符串(一段以’\0’结尾的字符数组或叫做字符缓冲,null-terminated-string),但有时我们有两段字符缓冲区,他们并不是以’\0’结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的’\0’来结尾。如果直接连接,不管是sprintf还是strcat肯定会导致非法内存操作,而strncat也至少要求第一个参数是个null-terminated-string,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串也一样的。比如:
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
如果:
sprintf(s, "%s%s", a1, a2); //Don't do that!
十有八九要出问题了。是否可以改成:
sprintf(s, "%7s%7s", a1, a2);
也没好到哪儿去,正确的应该是:
sprintf(s, "%.7s%.7s", a1, a2);//产生:"ABCDEFGHIJKLMN"
这可以类比打印浮点数的”%m.nf”,在”%m.ns”中,m表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m没什么大用,还是点号后面的n用的多。自然,也可以前后都只取部分字符:
sprintf(s, "%.6s%.5s", a1, a2);//产生:"ABCDEFHIJKL"
在许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在sprintf的实现中也被考虑到了,sprintf采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于是,上面的例子可以变成:
sprintf(s, "%.*s%.*s", 7, a1, 7, a2);
或者:
sprintf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);
实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:
sprintf(s, "%-*d", 4, 'A'); //产生"65 "
sprintf(s, "%#0*X", 8, 128); //产生"0X000080","#"产生0X
sprintf(s, "%*.*f", 10, 2, 3.1415926); //产生" 3.14"
4. 打印地址信息
有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:
sprintf(s, "%u", &i);
不过通常人们还是喜欢使用16进制而不是10进制来显示一个地址:
sprintf(s, "%08X", &i);
然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的”%p”:
sprintf(s, "%p", &i);
我觉得它实际上就相当于:
sprintf(s, "%0*x", 2 * sizeof(void *), &i);
5. 利用sprintf的返回值
较少有人注意printf/sprintf函数的返回值,但有时它却是有用的,spritnf返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf调用结束以后,你无须再调用一次strlen便已经知道了结果字符串的长度。如:
int len = sprintf(s, "%d", i);
对于正整数来说,len便等于整数i的10进制位数。
下面的是个完整的例子,产生10个[0, 100)之间的随机数,并将他们打印到一个字符数组s中,以逗号分隔开。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
srand(time(0));
char s[64];
int offset = 0;
for(int i = 0; i < 10; i++) {
offset += sprintf(s + offset, "%d,", rand() % 100);
}
s[offset - 1] = '\n';//将最后一个逗号换成换行符。
printf(s);
return 0;
}
设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat效率高,因为strcat每次调用都需要先找到最后的那个’\0’的位置,而在上面给出的例子中,我们每次都利用sprintf返回值把这个位置直接记下来了。
6. 使用sprintf的常见问题
sprintf是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。
Ø 缓冲区溢出
第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问题,建议变参对应一定要细心,而打印字符串时,尽量使用”%.ns”的形式指定最大字符数。
Ø 忘记了第一个参数
低级得不能再低级问题,用printf用得太惯了。//偶就常犯。:。(
Ø 变参对应出问题
通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤其是对应”*”的那些参数,都提供了吗?不要把一个整数对应一个”%s”,编译器会觉得你欺她太甚了(编译器是obj和exe的妈妈,应该是个女的,:P)。
7. strftime
sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:
time_t t = time(0);
//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。
8. 后记
本文介绍的所有这些功能,在MSDN中都可以很容易地查到,笔者只是根据自己的使用经验,结合一些例子,把一些常用的,有用的,而可能为许多初学者所不知的用法介绍了一点,希望大家不要笑话,也希望大家批评指正。
有人认为这种带变参的函数会引起各种问题,因而不提倡使用。但笔者本人每每还是抵挡不了它们强大功能的诱惑,在实际工作中一直在使用。实际上,C#.NET从开始就支持变参,刚发布不久的Java5.0也支持变参了。
感谢ericzhangali(另一个空间)仔细审阅了全稿,纠正了很多小错误,并提出了一些建议。也感谢laomai(老迈)阅读了全稿并给出了增删一些内容的建议。
①获取System时间: void GetSystemTime(LPSYSTEMTIME lpSystemTime); 下面是例子:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void main() {
SYSTEMTIME st; //定义存放时间的结构体
char strTime[256];
int n=0;
GetSystemTime(&st);
n = sprintf(strTime,"Year:\t%d\n",st.wYear);
n += sprintf(strTime+n,"Month:\t%d\n",st.wMonth);
n += sprintf(strTime+n,"Day:\t%d\n",st.wDay);
n += sprintf(strTime+n,"Date:\t%d\n",st.wDayOfWeek);
n += sprintf(strTime+n,"Hour:\t%d\n",st.wHour);
n += sprintf(strTime+n,"Minute:\t%d\n",st.wMinute);
n += sprintf(strTime+n,"Second:\t%d\n",st.wSecond);
n += sprintf(strTime+n,"MilliSecond:\t%d\n",st.wMilliseconds);
printf("%s",strTime);
system("pause");
}
比如printf("1234");结果就是1234
而printf("123\b4");结果是124,因为退一格再打印4就把先前打印的3洗掉了
猎鹰(905607625) 15:47:51
\b 退格。将当前的输出位置退回前一列处,即消除前一个已输出的字符。
比如printf("1234");结果就是1234
而printf("123\b4");结果是124,因为退一格再打印4就把先前打印的3洗掉了
=============================================
printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。
由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。所以本文着重介绍sprintf,有时也穿插着用用pritnf。
sprintf是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。
printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
1. 格式化数字字符串
sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。如:
//把整数123打印成一个字符串保存在s中。
sprintf(s, "%d", 123); //产生"123"
可以指定宽度,不足的左边补空格:
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
当然也可以左对齐:
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
也可以按照16进制打印:
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16进制,宽度占8个位置,左对齐
这样,一个整数的16进制字符串就很容易得到,但我们在打印16进制内容时,通常想要一种左边补0的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"
上面以”%d”进行的10进制打印同样也可以使用这种左边补0的方式。
这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1的内存16进制表示形式,在Win32平台上,一个short型占2个字节,所以我们自然希望用4个16进制数字来打印它:
short si = -1;
sprintf(s, "%04X", si);
产生“FFFFFFFF”,怎么回事?因为spritnf是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底是个4字节的整数还是个2字节的短整数,所以采取了统一4字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32位的整数-1,打印时4个位置不够了,就把32位整数-1的8位16进制都打印出来了。如果你想看si的本来面目,那么就应该让编译器做0扩展而不是符号扩展(扩展时二进制左边补0而不是补符号位):
sprintf(s, "%04X", (unsigned short)si);
就可以了。或者:
unsigned short si = -1;
sprintf(s, "%04X", si);
sprintf和printf还可以按8进制打印整数字符串,使用”%o”。注意8进制和16进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16进制或8进制表示。
2. 控制浮点数打印格式
浮点数的打印和格式控制是sprintf的又一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6位数字,比如:
sprintf(s, "%f", 3.1415926); //产生"3.141593"
但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m表示打印的宽度,n表示小数点后的位数。比如:
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"
注意一个问题,你猜
int i = 100;
sprintf(s, "%.2f", i);
会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:
sprintf(s, "%.2f", (double)i);
第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i的那4个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。
不过,如果有人有兴趣使用手工编码一个浮点数,那么倒可以使用这种方法来检验一下你手工编排的结果是否正确。J
字符/Ascii码对照
我们知道,在C/C++语言中,char也是一种普通的scalable类型,除了字长之外,它与short,int,long这些类型没有本质区别,只不过被大家习惯用来表示字符和字符串而已。(或许当年该把这个类型叫做“byte”,然后现在就可以根据实际情况,使用byte或short来把char通过typedef定义出来,这样更合适些)
于是,使用”%d”或者”%x”打印一个字符,便能得出它的10进制或16进制的ASCII码;反过来,使用”%c”打印一个整数,便可以看到它所对应的ASCII字符。以下程序段把所有可见字符的ASCII码对照表打印到屏幕上(这里采用printf,注意”#”与”%X”合用时自动为16进制数增加”0X”前缀):
for(int i = 32; i < 127; i++) {
printf("[ %c ]: %3d 0x%#04X\n", i, i, i);
}
3. 连接字符串
sprintf的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连接字符串,从而在许多场合可以替代strcat,但sprintf能够一次连接多个字符串(自然也可以同时在它们中间插入别的内容,总之非常灵活)。比如:
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
strcat只能连接字符串(一段以’\0’结尾的字符数组或叫做字符缓冲,null-terminated-string),但有时我们有两段字符缓冲区,他们并不是以’\0’结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的’\0’来结尾。如果直接连接,不管是sprintf还是strcat肯定会导致非法内存操作,而strncat也至少要求第一个参数是个null-terminated-string,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串也一样的。比如:
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
如果:
sprintf(s, "%s%s", a1, a2); //Don't do that!
十有八九要出问题了。是否可以改成:
sprintf(s, "%7s%7s", a1, a2);
也没好到哪儿去,正确的应该是:
sprintf(s, "%.7s%.7s", a1, a2);//产生:"ABCDEFGHIJKLMN"
这可以类比打印浮点数的”%m.nf”,在”%m.ns”中,m表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m没什么大用,还是点号后面的n用的多。自然,也可以前后都只取部分字符:
sprintf(s, "%.6s%.5s", a1, a2);//产生:"ABCDEFHIJKL"
在许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在sprintf的实现中也被考虑到了,sprintf采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于是,上面的例子可以变成:
sprintf(s, "%.*s%.*s", 7, a1, 7, a2);
或者:
sprintf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);
实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:
sprintf(s, "%-*d", 4, 'A'); //产生"65 "
sprintf(s, "%#0*X", 8, 128); //产生"0X000080","#"产生0X
sprintf(s, "%*.*f", 10, 2, 3.1415926); //产生" 3.14"
4. 打印地址信息
有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:
sprintf(s, "%u", &i);
不过通常人们还是喜欢使用16进制而不是10进制来显示一个地址:
sprintf(s, "%08X", &i);
然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的”%p”:
sprintf(s, "%p", &i);
我觉得它实际上就相当于:
sprintf(s, "%0*x", 2 * sizeof(void *), &i);
5. 利用sprintf的返回值
较少有人注意printf/sprintf函数的返回值,但有时它却是有用的,spritnf返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf调用结束以后,你无须再调用一次strlen便已经知道了结果字符串的长度。如:
int len = sprintf(s, "%d", i);
对于正整数来说,len便等于整数i的10进制位数。
下面的是个完整的例子,产生10个[0, 100)之间的随机数,并将他们打印到一个字符数组s中,以逗号分隔开。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
srand(time(0));
char s[64];
int offset = 0;
for(int i = 0; i < 10; i++) {
offset += sprintf(s + offset, "%d,", rand() % 100);
}
s[offset - 1] = '\n';//将最后一个逗号换成换行符。
printf(s);
return 0;
}
设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat效率高,因为strcat每次调用都需要先找到最后的那个’\0’的位置,而在上面给出的例子中,我们每次都利用sprintf返回值把这个位置直接记下来了。
6. 使用sprintf的常见问题
sprintf是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。
Ø 缓冲区溢出
第一个参数的长度太短了,没的说,给个大点的地方吧。当然也可能是后面的参数的问题,建议变参对应一定要细心,而打印字符串时,尽量使用”%.ns”的形式指定最大字符数。
Ø 忘记了第一个参数
低级得不能再低级问题,用printf用得太惯了。//偶就常犯。:。(
Ø 变参对应出问题
通常是忘记了提供对应某个格式符的变参,导致以后的参数统统错位,检查检查吧。尤其是对应”*”的那些参数,都提供了吗?不要把一个整数对应一个”%s”,编译器会觉得你欺她太甚了(编译器是obj和exe的妈妈,应该是个女的,:P)。
7. strftime
sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:
time_t t = time(0);
//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅。
8. 后记
本文介绍的所有这些功能,在MSDN中都可以很容易地查到,笔者只是根据自己的使用经验,结合一些例子,把一些常用的,有用的,而可能为许多初学者所不知的用法介绍了一点,希望大家不要笑话,也希望大家批评指正。
有人认为这种带变参的函数会引起各种问题,因而不提倡使用。但笔者本人每每还是抵挡不了它们强大功能的诱惑,在实际工作中一直在使用。实际上,C#.NET从开始就支持变参,刚发布不久的Java5.0也支持变参了。
感谢ericzhangali(另一个空间)仔细审阅了全稿,纠正了很多小错误,并提出了一些建议。也感谢laomai(老迈)阅读了全稿并给出了增删一些内容的建议。
①获取System时间: void GetSystemTime(LPSYSTEMTIME lpSystemTime); 下面是例子:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void main() {
SYSTEMTIME st; //定义存放时间的结构体
char strTime[256];
int n=0;
GetSystemTime(&st);
n = sprintf(strTime,"Year:\t%d\n",st.wYear);
n += sprintf(strTime+n,"Month:\t%d\n",st.wMonth);
n += sprintf(strTime+n,"Day:\t%d\n",st.wDay);
n += sprintf(strTime+n,"Date:\t%d\n",st.wDayOfWeek);
n += sprintf(strTime+n,"Hour:\t%d\n",st.wHour);
n += sprintf(strTime+n,"Minute:\t%d\n",st.wMinute);
n += sprintf(strTime+n,"Second:\t%d\n",st.wSecond);
n += sprintf(strTime+n,"MilliSecond:\t%d\n",st.wMilliseconds);
printf("%s",strTime);
system("pause");
}
#include "iostream"
#include "../../lib/sinalib/StrLib/str.h"
#include "StrLib.h"
using namespace std;
int main()
{
string strinfo="Please input your name:";
cout << strinfo ;
cin >> strinfo;
if( strinfo == "winter" )
cout << "you are winter!"<<endl;
strinfo += " , Welcome to China!";
cout << strinfo ;
string strtmp = "How are you? " + strinfo;
for(int i = 0 ; i < strtmp.size(); i ++)
cout<<strtmp<<strtmp.size();
}
前言: string 的角色
1 string 使用
1.1 充分使用string 操作符
1.2 眼花缭乱的string find 函数
1.3 string insert, replace, erase 2 string 和 C风格字符串
3 string 和 Charactor Traits
4 string 建议
5 小结
6 附录前言: string 的角色
C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl, php, 和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。
举例来说,如果文本格式是:用户名 电话号码,文件名name.txt
Tom 23245332
Jenny 22231231
Heny 22183942
Tom 23245332
...
现在我们需要对用户名排序,且只输出不同的姓名。
那么在shell 编程中,可以这样用:
awk '{print $1}' name.txt | sort | uniq
简单吧?
如果使用C/C++ 就麻烦了,他需要做以下工作:
先打开文件,检测文件是否打开,如果失败,则退出。
声明一个足够大得二维字符数组或者一个字符指针数组
读入一行到字符空间
然后分析一行的结构,找到空格,存入字符数组中。
关闭文件
写一个排序函数,或者使用写一个比较函数,使用qsort排序
遍历数组,比较是否有相同的,如果有,则要删除,copy...
输出信息
你可以用C++或者C语言去实现这个流程。如果一个人的主要工作就是处理这种类似的文本(例如做apache的日志统计和分析),你说他会喜欢C/C++么?
当然,有了STL,这些处理会得到很大的简化。我们可以使用 fstream来代替麻烦的fopen fread fclose, 用vector 来代替数组。最重要的是用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重。听起来好像很不错 。看看下面代码(例程1):
#i nclude <string>
#i nclude <iostream>
#i nclude <algorithm>
#i nclude <vector>
#i nclude <fstream>
using namespace std;
int main(){
ifstream in("name.txt");
string strtmp;
vector<string> vect;
while(getline(in, strtmp, '\n'))
vect.push_back(strtmp.substr(0, strtmp.find(' ')));
sort(vect.begin(), vect.end());
vector<string>::iterator it=unique(vect.begin(), vect.end());
copy(vect.begin(), it, ostream_iterator<string>(cout, "\n"));
return 0;
}
也还不错吧,至少会比想象得要简单得多!(代码里面没有对错误进行处理,只是为了说明问题,不要效仿).
当然,在这个文本格式中,不用vector而使用map会更有扩充性,例如,还可通过人名找电话号码等等,但是使用了map就不那么好用sort了。你可以用map试一试。
这里string的作用不只是可以存储字符串,还可以提供字符串的比较,查找等。在sort和unique函数中就默认使用了less 和equal_to函数, 上面的一段代码,其实使用了string的以下功能:
存储功能,在getline() 函数中
查找功能,在find() 函数中
子串功能,在substr() 函数中
string operator < , 默认在sort() 函数中调用
string operator == , 默认在unique() 函数中调用
总之,有了string 后,C++的字符文本处理功能总算得到了一定补充,加上配合STL其他容器使用,其在文本处理上的功能已经与perl, shell, php的距离缩小很多了。 因此掌握string 会让你的工作事半功倍。
1 string 使用
其实,string并不是一个单独的容器,只是basic_string 模板类的一个typedef 而已,相对应的还有wstring, 你在string 头文件中你会发现下面的代码:
extern "C++" {
typedef basic_string <char> string;
typedef basic_string <wchar_t> wstring;
} // extern "C++"
由于只是解释string的用法,如果没有特殊的说明,本文并不区分string 和 basic_string的区别。
string 其实相当于一个保存字符的序列容器,因此除了有字符串的一些常用操作以外,还有包含了所有的序列容器的操作。字符串的常用操作包括:增加、删除、修改、查找比较、链接、输入、输出等。详细函数列表参看附录。不要害怕这么多函数,其实有许多是序列容器带有的,平时不一定用的上。
如果你要想了解所有函数的详细用法,你需要查看basic_string,或者下载STL编程手册。这里通过实例介绍一些常用函数。
1.1 充分使用string 操作符
string 重载了许多操作符,包括 +, +=, <, =, , [], <<, >>等,正式这些操作符,对字符串操作非常方便。先看看下面这个例子:tt.cpp(例程2)
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main(){
string strinfo="Please input your name:";
cout << strinfo ;
cin >> strinfo;
if( strinfo == "winter" )
cout << "you are winter!"<<endl;
else if( strinfo != "wende" )
cout << "you are not wende!"<<endl;
else if( strinfo < "winter")
cout << "your name should be ahead of winter"<<endl;
else
cout << "your name should be after of winter"<<endl;
strinfo += " , Welcome to China!";
cout << strinfo<<endl;
cout <<"Your name is :"<<endl;
string strtmp = "How are you? " + strinfo;
for(int i = 0 ; i < strtmp.size(); i ++)
cout<<strtmp;
return 0;
}
下面是程序的输出
-bash-2.05b$ make tt
c++ -O -pipe -march=pentiumpro tt.cpp -o tt
-bash-2.05b$ ./tt
Please input your name:Hero
you are not wende!
Hero , Welcome to China!
How are you? Hero , Welcome to China!
有了这些操作符,在STL中仿函数都可以直接使用string作为参数,例如 less, great, equal_to 等,因此在把string作为参数传递的时候,它的使用和int 或者float等已经没有什么区别了。例如,你可以使用:
map<string, int> mymap;
//以上默认使用了 less<string>
有了 operator + 以后,你可以直接连加,例如:
string strinfo="Winter";
string strlast="Hello " + strinfo + "!";
//你还可以这样:
string strtest="Hello " + strinfo + " Welcome" + " to China" + " !";
看见其中的特点了吗?只要你的等式里面有一个 string 对象,你就可以一直连续"+",但有一点需要保证的是,在开始的两项中,必须有一项是 string 对象。其原理很简单:
系统遇到"+"号,发现有一项是string 对象。
系统把另一项转化为一个临时 string 对象。
执行 operator + 操作,返回新的临时string 对象。
如果又发现"+"号,继续第一步操作。
由于这个等式是由左到右开始检测执行,如果开始两项都是const char* ,程序自己并没有定义两个const char* 的加法,编译的时候肯定就有问题了。
有了操作符以后,assign(), append(), compare(), at()等函数,除非有一些特殊的需求时,一般是用不上。当然at()函数还有一个功能,那就是检查下标是否合法,如果是使用:
string str="winter";
//下面一行有可能会引起程序中断错误
str[100]='!';
//下面会抛出异常:throws: out_of_range
cout<<str.at(100)<<endl;
了解了吗?如果你希望效率高,还是使用[]来访问,如果你希望稳定性好,最好使用at()来访问。
1.2 眼花缭乱的string find 函数
由于查找是使用最为频繁的功能之一,string 提供了非常丰富的查找函数。其列表如下:
函数名 描述 find 查找 rfind 反向查找 find_first_of 查找包含子串中的任何字符,返回第一个位置 find_first_not_of 查找不包含子串中的任何字符,返回第一个位置 find_last_of 查找包含子串中的任何字符,返回最后一个位置 find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置 以上函数都是被重载了4次,以下是以find_first_of 函数为例说明他们的参数,其他函数和其参数一样,也就是说总共有24个函数 :
size_type find_first_of(const basic_string& s, size_type pos = 0)
size_type find_first_of(const charT* s, size_type pos, size_type n)
size_type find_first_of(const charT* s, size_type pos = 0)
size_type find_first_of(charT c, size_type pos = 0)
所有的查找函数都返回一个size_type类型,这个返回值一般都是所找到字符串的位置,如果没有找到,则返回string::npos。有一点需要特别注意,所有和string::npos的比较一定要用string::size_type来使用,不要直接使用int 或者unsigned int等类型。其实string::npos表示的是-1, 看看头文件:
template <class _CharT, class _Traits, class _Alloc>
const basic_string<_CharT,_Traits,_Alloc>::size_type
basic_string<_CharT,_Traits,_Alloc>::npos
= basic_string<_CharT,_Traits,_Alloc>::size_type) -1;
find 和 rfind 都还比较容易理解,一个是正向匹配,一个是逆向匹配,后面的参数pos都是用来指定起始查找位置。对于find_first_of 和find_last_of 就不是那么好理解。
find_first_of 是给定一个要查找的字符集,找到这个字符集中任何一个字符所在字符串中第一个位置。或许看一个例子更容易明白。
有这样一个需求:过滤一行开头和结尾的所有非英文字符。看看用string 如何实现:
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main(){
string strinfo=" //*---Hello Word!......------";
string strset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int first = strinfo.find_first_of(strset);
if(first == string::npos) {
cout<<"not find any characters"<<endl;
return -1;
}
int last = strinfo.find_last_of(strset);
if(last == string::npos) {
cout<<"not find any characters"<<endl;
return -1;
}
cout << strinfo.substr(first, last - first + 1)<<endl;
return 0;
}
这里把所有的英文字母大小写作为了需要查找的字符集,先查找第一个英文字母的位置,然后查找最后一个英文字母的位置,然后用substr 来的到中间的一部分,用于输出结果。下面就是其结果:
Hello Word
前面的符号和后面的符号都没有了。像这种用法可以用来查找分隔符,从而把一个连续的字符串分割成为几部分,达到 shell 命令中的 awk 的用法。特别是当分隔符有多个的时候,可以一次指定。例如有这样的需求:
张三|3456123, 湖南
李四,4564234| 湖北
王小二, 4433253|北京
...
我们需要以 "|" ","为分隔符,同时又要过滤空格,把每行分成相应的字段。可以作为你的一个家庭作业来试试,要求代码简洁。
1.3 string insert, replace, erase
了解了string 的操作符,查找函数和substr,其实就已经了解了string的80%的操作了。insert函数, replace函数和erase函数在使用起来相对简单。下面以一个例子来说明其应用。
string只是提供了按照位置和区间的replace函数,而不能用一个string字串来替换指定string中的另一个字串。这里写一个函数来实现这个功能:
void string_replace(string & strBig, const string & strsrc, const string &strdst) {
string::size_type pos=0;
string::size_type srclen=strsrc.size();
string::size_type dstlen=strdst.size();
while( (pos=strBig.find(strsrc, pos)) != string::npos){
strBig.replace(pos, srclen, strdst);
pos += dstlen;
}
}看看如何调用:
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main() {
string strinfo="This is Winter, Winter is a programmer. Do you know Winter?";
cout<<"Orign string is :\n"<<strinfo<<endl;
string_replace(strinfo, "Winter", "wende");
cout<<"After replace Winter with wende, the string is :\n"<<strinfo<<endl;
return 0;
}其输出结果:
Orign string is :
This is Winter, Winter is a programmer. Do you know Winter?
After replace Winter with wende, the string is :
This is wende, wende is a programmer. Do you know wende?如果不用replace函数,则可以使用erase和insert来替换,也能实现string_replace函数的功能:
void string_replace(string & strBig, const string & strsrc, const string &strdst) {
string::size_type pos=0;
string::size_type srclen=strsrc.size();
string::size_type dstlen=strdst.size();
while( (pos=strBig.find(strsrc, pos)) != string::npos){
strBig.erase(pos, srclen);
strBig.insert(pos, strdst);
pos += dstlen;
}
}当然,这种方法没有使用replace来得直接。
2 string 和 C风格字符串
现在看了这么多例子,发现const char* 可以和string 直接转换,例如我们在上面的例子中,使用
string_replace(strinfo, "Winter", "wende");来代用
void string_replace(string & strBig, const string & strsrc, const string &strdst) 在C语言中只有char* 和 const char*,为了使用起来方便,string提供了三个函数满足其要求:
const charT* c_str() const
const charT* data() const
size_type copy(charT* buf, size_type n, size_type pos = 0) const 其中:
c_str 直接返回一个以\0结尾的字符串。
data 直接以数组方式返回string的内容,其大小为size()的返回值,结尾并没有\0字符。
copy 把string的内容拷贝到buf空间中。
你或许会问,c_str()的功能包含data(),那还需要data()函数干什么?看看源码:
const charT* c_str () const
{ if (length () == 0) return ""; terminate (); return data (); }原来c_str()的流程是:先调用terminate(),然后在返回data()。因此如果你对效率要求比较高,而且你的处理又不一定需要以\0的方式结束,你最好选择data()。但是对于一般的C函数中,需要以const char*为输入参数,你就要使用c_str()函数。
对于c_str() data()函数,返回的数组都是由string本身拥有,千万不可修改其内容。其原因是许多string实现的时候采用了引用机制,也就是说,有可能几个string使用同一个字符存储空间。而且你不能使用sizeof(string)来查看其大小。详细的解释和实现查看Effective STL的条款15:小心string实现的多样性。
另外在你的程序中,只在需要时才使用c_str()或者data()得到字符串,每调用一次,下次再使用就会失效,如:
string strinfo("this is Winter");
...
//最好的方式是:
foo(strinfo.c_str());
//也可以这么用:
const char* pstr=strinfo.c_str();
foo(pstr);
//不要再使用了pstr了, 下面的操作已经使pstr无效了。
strinfo += " Hello!";
foo(pstr);//错误!会遇到什么错误?当你幸运的时候pstr可能只是指向"this is Winter Hello!"的字符串,如果不幸运,就会导致程序出现其他问题,总会有一些不可遇见的错误。总之不会是你预期的那个结果。
3 string 和 Charactor Traits
了解了string的用法,该详细看看string的真相了。前面提到string 只是basic_string的一个typedef。看看basic_string 的参数:
template <class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string
{
//...
}char_traits不仅是在basic_string 中有用,在basic_istream 和 basic_ostream中也需要用到。
就像Steve Donovan在过度使用C++模板中提到的,这些确实有些过头了,要不是系统自己定义了相关的一些属性,而且用了个typedef,否则还真不知道如何使用。
但复杂总有复杂道理。有了char_traits,你可以定义自己的字符串类型。当然,有了char_traits < char > 和char_traits < wchar_t > 你的需求使用已经足够了,为了更好的理解string ,咱们来看看char_traits都有哪些要求。
如果你希望使用你自己定义的字符,你必须定义包含下列成员的结构: 表达式 描述
char_type 字符类型
int_type int 类型
pos_type 位置类型
off_type 表示位置之间距离的类型
state_type 表示状态的类型
assign(c1,c2) 把字符c2赋值给c1
eq(c1,c2) 判断c1,c2 是否相等
lt(c1,c2) 判断c1是否小于c2
length(str) 判断str的长度
compare(s1,s2,n) 比较s1和s2的前n个字符
copy(s1,s2, n) 把s2的前n个字符拷贝到s1中
move(s1,s2, n) 把s2中的前n个字符移动到s1中
assign(s,n,c) 把s中的前n个字符赋值为c
find(s,n,c) 在s的前n个字符内查找c
eof() 返回end-of-file
to_int_type(c) 将c转换成int_type
to_char_type(i) 将i转换成char_type
not_eof(i) 判断i是否为EOF
eq_int_type(i1,i2) 判断i1和i2是否相等
想看看实际的例子,你可以看看sgi STL的char_traits结构源码.
现在默认的string版本中,并不支持忽略大小写的比较函数和查找函数,如果你想练练手,你可以试试改写一个char_traits , 然后生成一个case_string类, 也可以在string 上做继承,然后派生一个新的类,例如:ext_string,提供一些常用的功能,例如:
定义分隔符。给定分隔符,把string分为几个字段。
提供替换功能。例如,用winter, 替换字符串中的wende
大小写处理。例如,忽略大小写比较,转换等
整形转换。例如把"123"字符串转换为123数字。
这些都是常用的功能,如果你有兴趣可以试试。其实有人已经实现了,看看Extended STL string。如果你想偷懒,下载一个头文件就可以用,有了它确实方便了很多。要是有人能提供一个支持正则表达式的string,我会非常乐意用。
4 string 建议
使用string 的方便性就不用再说了,这里要重点强调的是string的安全性。
string并不是万能的,如果你在一个大工程中需要频繁处理字符串,而且有可能是多线程,那么你一定要慎重(当然,在多线程下你使用任何STL容器都要慎重)。
string的实现和效率并不一定是你想象的那样,如果你对大量的字符串操作,而且特别关心其效率,那么你有两个选择,首先,你可以看看你使用的STL版本中string实现的源码;另一选择是你自己写一个只提供你需要的功能的类。
string的c_str()函数是用来得到C语言风格的字符串,其返回的指针不能修改其空间。而且在下一次使用时重新调用获得新的指针。
string的data()函数返回的字符串指针不会以'\0'结束,千万不可忽视。
尽量去使用操作符,这样可以让程序更加易懂(特别是那些脚本程序员也可以看懂)
5 小结
难怪有人说:
string 使用方便功能强,我们一直用它!
6 附录
string 函数列表 函数名 描述
begin 得到指向字符串开头的Iterator
end 得到指向字符串结尾的Iterator
rbegin 得到指向反向字符串开头的Iterator
rend 得到指向反向字符串结尾的Iterator
size 得到字符串的大小
length 和size函数功能相同
max_size 字符串可能的最大大小
capacity 在不重新分配内存的情况下,字符串可能的大小
empty 判断是否为空
operator[] 取第几个元素,相当于数组
c_str 取得C风格的const char* 字符串
data 取得字符串内容地址
operator= 赋值操作符
reserve 预留空间
swap 交换函数
insert 插入字符
append 追加字符
push_back 追加字符
operator+= += 操作符
erase 删除字符串
clear 清空字符容器中所有内容
resize 重新分配空间
assign 和赋值操作符一样
replace 替代
copy 字符串到空间
find 查找
rfind 反向查找
find_first_of 查找包含子串中的任何字符,返回第一个位置
find_first_not_of 查找不包含子串中的任何字符,返回第一个位置
find_last_of 查找包含子串中的任何字符,返回最后一个位置
find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置
substr 得到字串
compare 比较字符串
operator+ 字符串链接
operator== 判断是否相等
operator!= 判断是否不等于
operator< 判断是否小于
operator>> 从输入流中读入字符串
operator<< 字符串写入输出流
getline 从输入流中读入一行
#include "../../lib/sinalib/StrLib/str.h"
#include "StrLib.h"
using namespace std;
int main()
{
string strinfo="Please input your name:";
cout << strinfo ;
cin >> strinfo;
if( strinfo == "winter" )
cout << "you are winter!"<<endl;
strinfo += " , Welcome to China!";
cout << strinfo ;
string strtmp = "How are you? " + strinfo;
for(int i = 0 ; i < strtmp.size(); i ++)
cout<<strtmp<<strtmp.size();
}
前言: string 的角色
1 string 使用
1.1 充分使用string 操作符
1.2 眼花缭乱的string find 函数
1.3 string insert, replace, erase 2 string 和 C风格字符串
3 string 和 Charactor Traits
4 string 建议
5 小结
6 附录前言: string 的角色
C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl, php, 和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。
举例来说,如果文本格式是:用户名 电话号码,文件名name.txt
Tom 23245332
Jenny 22231231
Heny 22183942
Tom 23245332
...
现在我们需要对用户名排序,且只输出不同的姓名。
那么在shell 编程中,可以这样用:
awk '{print $1}' name.txt | sort | uniq
简单吧?
如果使用C/C++ 就麻烦了,他需要做以下工作:
先打开文件,检测文件是否打开,如果失败,则退出。
声明一个足够大得二维字符数组或者一个字符指针数组
读入一行到字符空间
然后分析一行的结构,找到空格,存入字符数组中。
关闭文件
写一个排序函数,或者使用写一个比较函数,使用qsort排序
遍历数组,比较是否有相同的,如果有,则要删除,copy...
输出信息
你可以用C++或者C语言去实现这个流程。如果一个人的主要工作就是处理这种类似的文本(例如做apache的日志统计和分析),你说他会喜欢C/C++么?
当然,有了STL,这些处理会得到很大的简化。我们可以使用 fstream来代替麻烦的fopen fread fclose, 用vector 来代替数组。最重要的是用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重。听起来好像很不错 。看看下面代码(例程1):
#i nclude <string>
#i nclude <iostream>
#i nclude <algorithm>
#i nclude <vector>
#i nclude <fstream>
using namespace std;
int main(){
ifstream in("name.txt");
string strtmp;
vector<string> vect;
while(getline(in, strtmp, '\n'))
vect.push_back(strtmp.substr(0, strtmp.find(' ')));
sort(vect.begin(), vect.end());
vector<string>::iterator it=unique(vect.begin(), vect.end());
copy(vect.begin(), it, ostream_iterator<string>(cout, "\n"));
return 0;
}
也还不错吧,至少会比想象得要简单得多!(代码里面没有对错误进行处理,只是为了说明问题,不要效仿).
当然,在这个文本格式中,不用vector而使用map会更有扩充性,例如,还可通过人名找电话号码等等,但是使用了map就不那么好用sort了。你可以用map试一试。
这里string的作用不只是可以存储字符串,还可以提供字符串的比较,查找等。在sort和unique函数中就默认使用了less 和equal_to函数, 上面的一段代码,其实使用了string的以下功能:
存储功能,在getline() 函数中
查找功能,在find() 函数中
子串功能,在substr() 函数中
string operator < , 默认在sort() 函数中调用
string operator == , 默认在unique() 函数中调用
总之,有了string 后,C++的字符文本处理功能总算得到了一定补充,加上配合STL其他容器使用,其在文本处理上的功能已经与perl, shell, php的距离缩小很多了。 因此掌握string 会让你的工作事半功倍。
1 string 使用
其实,string并不是一个单独的容器,只是basic_string 模板类的一个typedef 而已,相对应的还有wstring, 你在string 头文件中你会发现下面的代码:
extern "C++" {
typedef basic_string <char> string;
typedef basic_string <wchar_t> wstring;
} // extern "C++"
由于只是解释string的用法,如果没有特殊的说明,本文并不区分string 和 basic_string的区别。
string 其实相当于一个保存字符的序列容器,因此除了有字符串的一些常用操作以外,还有包含了所有的序列容器的操作。字符串的常用操作包括:增加、删除、修改、查找比较、链接、输入、输出等。详细函数列表参看附录。不要害怕这么多函数,其实有许多是序列容器带有的,平时不一定用的上。
如果你要想了解所有函数的详细用法,你需要查看basic_string,或者下载STL编程手册。这里通过实例介绍一些常用函数。
1.1 充分使用string 操作符
string 重载了许多操作符,包括 +, +=, <, =, , [], <<, >>等,正式这些操作符,对字符串操作非常方便。先看看下面这个例子:tt.cpp(例程2)
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main(){
string strinfo="Please input your name:";
cout << strinfo ;
cin >> strinfo;
if( strinfo == "winter" )
cout << "you are winter!"<<endl;
else if( strinfo != "wende" )
cout << "you are not wende!"<<endl;
else if( strinfo < "winter")
cout << "your name should be ahead of winter"<<endl;
else
cout << "your name should be after of winter"<<endl;
strinfo += " , Welcome to China!";
cout << strinfo<<endl;
cout <<"Your name is :"<<endl;
string strtmp = "How are you? " + strinfo;
for(int i = 0 ; i < strtmp.size(); i ++)
cout<<strtmp;
return 0;
}
下面是程序的输出
-bash-2.05b$ make tt
c++ -O -pipe -march=pentiumpro tt.cpp -o tt
-bash-2.05b$ ./tt
Please input your name:Hero
you are not wende!
Hero , Welcome to China!
How are you? Hero , Welcome to China!
有了这些操作符,在STL中仿函数都可以直接使用string作为参数,例如 less, great, equal_to 等,因此在把string作为参数传递的时候,它的使用和int 或者float等已经没有什么区别了。例如,你可以使用:
map<string, int> mymap;
//以上默认使用了 less<string>
有了 operator + 以后,你可以直接连加,例如:
string strinfo="Winter";
string strlast="Hello " + strinfo + "!";
//你还可以这样:
string strtest="Hello " + strinfo + " Welcome" + " to China" + " !";
看见其中的特点了吗?只要你的等式里面有一个 string 对象,你就可以一直连续"+",但有一点需要保证的是,在开始的两项中,必须有一项是 string 对象。其原理很简单:
系统遇到"+"号,发现有一项是string 对象。
系统把另一项转化为一个临时 string 对象。
执行 operator + 操作,返回新的临时string 对象。
如果又发现"+"号,继续第一步操作。
由于这个等式是由左到右开始检测执行,如果开始两项都是const char* ,程序自己并没有定义两个const char* 的加法,编译的时候肯定就有问题了。
有了操作符以后,assign(), append(), compare(), at()等函数,除非有一些特殊的需求时,一般是用不上。当然at()函数还有一个功能,那就是检查下标是否合法,如果是使用:
string str="winter";
//下面一行有可能会引起程序中断错误
str[100]='!';
//下面会抛出异常:throws: out_of_range
cout<<str.at(100)<<endl;
了解了吗?如果你希望效率高,还是使用[]来访问,如果你希望稳定性好,最好使用at()来访问。
1.2 眼花缭乱的string find 函数
由于查找是使用最为频繁的功能之一,string 提供了非常丰富的查找函数。其列表如下:
函数名 描述 find 查找 rfind 反向查找 find_first_of 查找包含子串中的任何字符,返回第一个位置 find_first_not_of 查找不包含子串中的任何字符,返回第一个位置 find_last_of 查找包含子串中的任何字符,返回最后一个位置 find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置 以上函数都是被重载了4次,以下是以find_first_of 函数为例说明他们的参数,其他函数和其参数一样,也就是说总共有24个函数 :
size_type find_first_of(const basic_string& s, size_type pos = 0)
size_type find_first_of(const charT* s, size_type pos, size_type n)
size_type find_first_of(const charT* s, size_type pos = 0)
size_type find_first_of(charT c, size_type pos = 0)
所有的查找函数都返回一个size_type类型,这个返回值一般都是所找到字符串的位置,如果没有找到,则返回string::npos。有一点需要特别注意,所有和string::npos的比较一定要用string::size_type来使用,不要直接使用int 或者unsigned int等类型。其实string::npos表示的是-1, 看看头文件:
template <class _CharT, class _Traits, class _Alloc>
const basic_string<_CharT,_Traits,_Alloc>::size_type
basic_string<_CharT,_Traits,_Alloc>::npos
= basic_string<_CharT,_Traits,_Alloc>::size_type) -1;
find 和 rfind 都还比较容易理解,一个是正向匹配,一个是逆向匹配,后面的参数pos都是用来指定起始查找位置。对于find_first_of 和find_last_of 就不是那么好理解。
find_first_of 是给定一个要查找的字符集,找到这个字符集中任何一个字符所在字符串中第一个位置。或许看一个例子更容易明白。
有这样一个需求:过滤一行开头和结尾的所有非英文字符。看看用string 如何实现:
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main(){
string strinfo=" //*---Hello Word!......------";
string strset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int first = strinfo.find_first_of(strset);
if(first == string::npos) {
cout<<"not find any characters"<<endl;
return -1;
}
int last = strinfo.find_last_of(strset);
if(last == string::npos) {
cout<<"not find any characters"<<endl;
return -1;
}
cout << strinfo.substr(first, last - first + 1)<<endl;
return 0;
}
这里把所有的英文字母大小写作为了需要查找的字符集,先查找第一个英文字母的位置,然后查找最后一个英文字母的位置,然后用substr 来的到中间的一部分,用于输出结果。下面就是其结果:
Hello Word
前面的符号和后面的符号都没有了。像这种用法可以用来查找分隔符,从而把一个连续的字符串分割成为几部分,达到 shell 命令中的 awk 的用法。特别是当分隔符有多个的时候,可以一次指定。例如有这样的需求:
张三|3456123, 湖南
李四,4564234| 湖北
王小二, 4433253|北京
...
我们需要以 "|" ","为分隔符,同时又要过滤空格,把每行分成相应的字段。可以作为你的一个家庭作业来试试,要求代码简洁。
1.3 string insert, replace, erase
了解了string 的操作符,查找函数和substr,其实就已经了解了string的80%的操作了。insert函数, replace函数和erase函数在使用起来相对简单。下面以一个例子来说明其应用。
string只是提供了按照位置和区间的replace函数,而不能用一个string字串来替换指定string中的另一个字串。这里写一个函数来实现这个功能:
void string_replace(string & strBig, const string & strsrc, const string &strdst) {
string::size_type pos=0;
string::size_type srclen=strsrc.size();
string::size_type dstlen=strdst.size();
while( (pos=strBig.find(strsrc, pos)) != string::npos){
strBig.replace(pos, srclen, strdst);
pos += dstlen;
}
}看看如何调用:
#i nclude <string>
#i nclude <iostream>
using namespace std;
int main() {
string strinfo="This is Winter, Winter is a programmer. Do you know Winter?";
cout<<"Orign string is :\n"<<strinfo<<endl;
string_replace(strinfo, "Winter", "wende");
cout<<"After replace Winter with wende, the string is :\n"<<strinfo<<endl;
return 0;
}其输出结果:
Orign string is :
This is Winter, Winter is a programmer. Do you know Winter?
After replace Winter with wende, the string is :
This is wende, wende is a programmer. Do you know wende?如果不用replace函数,则可以使用erase和insert来替换,也能实现string_replace函数的功能:
void string_replace(string & strBig, const string & strsrc, const string &strdst) {
string::size_type pos=0;
string::size_type srclen=strsrc.size();
string::size_type dstlen=strdst.size();
while( (pos=strBig.find(strsrc, pos)) != string::npos){
strBig.erase(pos, srclen);
strBig.insert(pos, strdst);
pos += dstlen;
}
}当然,这种方法没有使用replace来得直接。
2 string 和 C风格字符串
现在看了这么多例子,发现const char* 可以和string 直接转换,例如我们在上面的例子中,使用
string_replace(strinfo, "Winter", "wende");来代用
void string_replace(string & strBig, const string & strsrc, const string &strdst) 在C语言中只有char* 和 const char*,为了使用起来方便,string提供了三个函数满足其要求:
const charT* c_str() const
const charT* data() const
size_type copy(charT* buf, size_type n, size_type pos = 0) const 其中:
c_str 直接返回一个以\0结尾的字符串。
data 直接以数组方式返回string的内容,其大小为size()的返回值,结尾并没有\0字符。
copy 把string的内容拷贝到buf空间中。
你或许会问,c_str()的功能包含data(),那还需要data()函数干什么?看看源码:
const charT* c_str () const
{ if (length () == 0) return ""; terminate (); return data (); }原来c_str()的流程是:先调用terminate(),然后在返回data()。因此如果你对效率要求比较高,而且你的处理又不一定需要以\0的方式结束,你最好选择data()。但是对于一般的C函数中,需要以const char*为输入参数,你就要使用c_str()函数。
对于c_str() data()函数,返回的数组都是由string本身拥有,千万不可修改其内容。其原因是许多string实现的时候采用了引用机制,也就是说,有可能几个string使用同一个字符存储空间。而且你不能使用sizeof(string)来查看其大小。详细的解释和实现查看Effective STL的条款15:小心string实现的多样性。
另外在你的程序中,只在需要时才使用c_str()或者data()得到字符串,每调用一次,下次再使用就会失效,如:
string strinfo("this is Winter");
...
//最好的方式是:
foo(strinfo.c_str());
//也可以这么用:
const char* pstr=strinfo.c_str();
foo(pstr);
//不要再使用了pstr了, 下面的操作已经使pstr无效了。
strinfo += " Hello!";
foo(pstr);//错误!会遇到什么错误?当你幸运的时候pstr可能只是指向"this is Winter Hello!"的字符串,如果不幸运,就会导致程序出现其他问题,总会有一些不可遇见的错误。总之不会是你预期的那个结果。
3 string 和 Charactor Traits
了解了string的用法,该详细看看string的真相了。前面提到string 只是basic_string的一个typedef。看看basic_string 的参数:
template <class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string
{
//...
}char_traits不仅是在basic_string 中有用,在basic_istream 和 basic_ostream中也需要用到。
就像Steve Donovan在过度使用C++模板中提到的,这些确实有些过头了,要不是系统自己定义了相关的一些属性,而且用了个typedef,否则还真不知道如何使用。
但复杂总有复杂道理。有了char_traits,你可以定义自己的字符串类型。当然,有了char_traits < char > 和char_traits < wchar_t > 你的需求使用已经足够了,为了更好的理解string ,咱们来看看char_traits都有哪些要求。
如果你希望使用你自己定义的字符,你必须定义包含下列成员的结构: 表达式 描述
char_type 字符类型
int_type int 类型
pos_type 位置类型
off_type 表示位置之间距离的类型
state_type 表示状态的类型
assign(c1,c2) 把字符c2赋值给c1
eq(c1,c2) 判断c1,c2 是否相等
lt(c1,c2) 判断c1是否小于c2
length(str) 判断str的长度
compare(s1,s2,n) 比较s1和s2的前n个字符
copy(s1,s2, n) 把s2的前n个字符拷贝到s1中
move(s1,s2, n) 把s2中的前n个字符移动到s1中
assign(s,n,c) 把s中的前n个字符赋值为c
find(s,n,c) 在s的前n个字符内查找c
eof() 返回end-of-file
to_int_type(c) 将c转换成int_type
to_char_type(i) 将i转换成char_type
not_eof(i) 判断i是否为EOF
eq_int_type(i1,i2) 判断i1和i2是否相等
想看看实际的例子,你可以看看sgi STL的char_traits结构源码.
现在默认的string版本中,并不支持忽略大小写的比较函数和查找函数,如果你想练练手,你可以试试改写一个char_traits , 然后生成一个case_string类, 也可以在string 上做继承,然后派生一个新的类,例如:ext_string,提供一些常用的功能,例如:
定义分隔符。给定分隔符,把string分为几个字段。
提供替换功能。例如,用winter, 替换字符串中的wende
大小写处理。例如,忽略大小写比较,转换等
整形转换。例如把"123"字符串转换为123数字。
这些都是常用的功能,如果你有兴趣可以试试。其实有人已经实现了,看看Extended STL string。如果你想偷懒,下载一个头文件就可以用,有了它确实方便了很多。要是有人能提供一个支持正则表达式的string,我会非常乐意用。
4 string 建议
使用string 的方便性就不用再说了,这里要重点强调的是string的安全性。
string并不是万能的,如果你在一个大工程中需要频繁处理字符串,而且有可能是多线程,那么你一定要慎重(当然,在多线程下你使用任何STL容器都要慎重)。
string的实现和效率并不一定是你想象的那样,如果你对大量的字符串操作,而且特别关心其效率,那么你有两个选择,首先,你可以看看你使用的STL版本中string实现的源码;另一选择是你自己写一个只提供你需要的功能的类。
string的c_str()函数是用来得到C语言风格的字符串,其返回的指针不能修改其空间。而且在下一次使用时重新调用获得新的指针。
string的data()函数返回的字符串指针不会以'\0'结束,千万不可忽视。
尽量去使用操作符,这样可以让程序更加易懂(特别是那些脚本程序员也可以看懂)
5 小结
难怪有人说:
string 使用方便功能强,我们一直用它!
6 附录
string 函数列表 函数名 描述
begin 得到指向字符串开头的Iterator
end 得到指向字符串结尾的Iterator
rbegin 得到指向反向字符串开头的Iterator
rend 得到指向反向字符串结尾的Iterator
size 得到字符串的大小
length 和size函数功能相同
max_size 字符串可能的最大大小
capacity 在不重新分配内存的情况下,字符串可能的大小
empty 判断是否为空
operator[] 取第几个元素,相当于数组
c_str 取得C风格的const char* 字符串
data 取得字符串内容地址
operator= 赋值操作符
reserve 预留空间
swap 交换函数
insert 插入字符
append 追加字符
push_back 追加字符
operator+= += 操作符
erase 删除字符串
clear 清空字符容器中所有内容
resize 重新分配空间
assign 和赋值操作符一样
replace 替代
copy 字符串到空间
find 查找
rfind 反向查找
find_first_of 查找包含子串中的任何字符,返回第一个位置
find_first_not_of 查找不包含子串中的任何字符,返回第一个位置
find_last_of 查找包含子串中的任何字符,返回最后一个位置
find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置
substr 得到字串
compare 比较字符串
operator+ 字符串链接
operator== 判断是否相等
operator!= 判断是否不等于
operator< 判断是否小于
operator>> 从输入流中读入字符串
operator<< 字符串写入输出流
getline 从输入流中读入一行
http://drivers.mydrivers.com/download/196-78699-NVIDIA-GeForceFX-GeForce6-GeForce7-GeForce8-ForceWare-169.21-WHQL-For-WinXP/
http://hi.baidu.com/%CA%B7%BD%F8/blog/item/91ba9e2fcdf28a3c1e3089a1.html
http://www.linuxdiyf.com/viewarticle.php?id=62481
http://www.seamaple.net/2007/10/05/ubuntu710%E6%9C%80%E6%96%B0%E8%B6%85%E9%85%B7%E4%B8%BB%E9%A2%98show%E4%B8%80%E4%B8%8B%E2%98%86%E2%98%85%E2%98%86%E2%98%85%E2%98%86%E2%98%85%E2%98%86/
http://www.linuxubuntu.cn/show/488
http://www.linuxdiyf.com/viewarticle.php?id=62481
http://www.seamaple.net/2007/10/05/ubuntu710%E6%9C%80%E6%96%B0%E8%B6%85%E9%85%B7%E4%B8%BB%E9%A2%98show%E4%B8%80%E4%B8%8B%E2%98%86%E2%98%85%E2%98%86%E2%98%85%E2%98%86%E2%98%85%E2%98%86/
http://www.linuxubuntu.cn/show/488
女人多的地方,免不了的是“比”。比老公,比孩子,比自己。
比老公的时候,矜持一点儿的,不露痕迹,有意无意的轻嗔着:“看我们家那位,人家局长找他谈话说要他做副手,他竟然还不在意,说自己无意为官。”一些日子过后,你一定会看到他们家那位小心谨慎的伺候着他们单位的老大到处吃茶。想显摆的则干脆得多:“我们家那位成他们单位的头儿了,今天晚上在海鲜大酒店请客,各位不要忘了去啊。”可是,办公室的平头老百姓们,也就是听听而已,谁别把这话当真,否则真地去了人家认识你是干吗的?
女人比孩子的时候则干脆直白的多。俗话说:人家的庄稼,自家的孩儿。谁都是看着自家的娃娃聪明,长得也顺眼。所以,比起孩子来,女人们自然是不会拐弯抹角。这一边:“我家宝宝八个月就会喊妈妈了”,那边:“我们宝贝儿十个月就会走路了”,这边刚落下:“我们家小宝在学校文艺会演的了一等奖呢。”那边马上跟了:“我们家红红要去央视参加星光大道呢。”孩子高了比个子,孩子矮了比智商,孩子俊了比相貌,孩子丑了比才艺,总之,关于孩子,比的方面林林总总,千奇百怪,总之比的目的只有一个:自家的孩子与众不同,不同凡响。
要说比自己,女人们还是有些顾虑的,毕竟从小受的传统的中国教育,都知道要谦虚,不能王婆卖瓜。所以,比起自己来那是要有些艺术的。要想让别人看到自己的漂亮,话先要撤到人家头上,说说人家的脸色怎么发黄,自然别人就注意到自己白皙的皮肤;说说别人刚刚接到的暧昧的电话,不经意间就会泄漏出某个男人正在追求自己,假作羡慕的说别人生活好,发福了,别人自然就会看到自己曼妙的身材。总之,千回路转,最终就是拿自己的长处比了别人的短处,表面上恭维了人家,实际上抬高了自家。
虽然有些话说:有比较才有进步,但是,很多情况下,女人的比已经变了味道,只是一种变相的炫耀,最终带来的结果也是大家不象看到的。和别人比老公,回到家免不了要对老公唠叨两句,说不定还会觉得这个男人实在是窝囊,免不了冷嘲热讽,逼迫他做自己不喜欢做的事情。比孩子,自然就会提高对孩子的要求,有些时候就变成了苛求,无缘无故的让孩子多收了许多的压制。比自己,因为对自己身材和相貌的不自信,搞不好还去整容瘦身,结果是花了银子受了罪,得不偿失。最终,比来比去,女人们的关系也是明里和谐暗里紧张。
这样看来,红楼梦里薛宝钗的守分藏拙倒来得更可爱一些。
比老公的时候,矜持一点儿的,不露痕迹,有意无意的轻嗔着:“看我们家那位,人家局长找他谈话说要他做副手,他竟然还不在意,说自己无意为官。”一些日子过后,你一定会看到他们家那位小心谨慎的伺候着他们单位的老大到处吃茶。想显摆的则干脆得多:“我们家那位成他们单位的头儿了,今天晚上在海鲜大酒店请客,各位不要忘了去啊。”可是,办公室的平头老百姓们,也就是听听而已,谁别把这话当真,否则真地去了人家认识你是干吗的?
女人比孩子的时候则干脆直白的多。俗话说:人家的庄稼,自家的孩儿。谁都是看着自家的娃娃聪明,长得也顺眼。所以,比起孩子来,女人们自然是不会拐弯抹角。这一边:“我家宝宝八个月就会喊妈妈了”,那边:“我们宝贝儿十个月就会走路了”,这边刚落下:“我们家小宝在学校文艺会演的了一等奖呢。”那边马上跟了:“我们家红红要去央视参加星光大道呢。”孩子高了比个子,孩子矮了比智商,孩子俊了比相貌,孩子丑了比才艺,总之,关于孩子,比的方面林林总总,千奇百怪,总之比的目的只有一个:自家的孩子与众不同,不同凡响。
要说比自己,女人们还是有些顾虑的,毕竟从小受的传统的中国教育,都知道要谦虚,不能王婆卖瓜。所以,比起自己来那是要有些艺术的。要想让别人看到自己的漂亮,话先要撤到人家头上,说说人家的脸色怎么发黄,自然别人就注意到自己白皙的皮肤;说说别人刚刚接到的暧昧的电话,不经意间就会泄漏出某个男人正在追求自己,假作羡慕的说别人生活好,发福了,别人自然就会看到自己曼妙的身材。总之,千回路转,最终就是拿自己的长处比了别人的短处,表面上恭维了人家,实际上抬高了自家。
虽然有些话说:有比较才有进步,但是,很多情况下,女人的比已经变了味道,只是一种变相的炫耀,最终带来的结果也是大家不象看到的。和别人比老公,回到家免不了要对老公唠叨两句,说不定还会觉得这个男人实在是窝囊,免不了冷嘲热讽,逼迫他做自己不喜欢做的事情。比孩子,自然就会提高对孩子的要求,有些时候就变成了苛求,无缘无故的让孩子多收了许多的压制。比自己,因为对自己身材和相貌的不自信,搞不好还去整容瘦身,结果是花了银子受了罪,得不偿失。最终,比来比去,女人们的关系也是明里和谐暗里紧张。
这样看来,红楼梦里薛宝钗的守分藏拙倒来得更可爱一些。
http://count.crsky.com/view_down.asp?down_url=http://4.tjwt1.crsky.com/200711/srsssc_v1700_hx.rar&downd_id=9&ID=43085&SOFTID=10841&down=yes
RS专利音效 SRS HD Audio Lab Gold 1.046 破解版.rar
http://ishare.iask.sina.com.cn/f/13773139.html
SRS Audio Sandbox windows7 没声音:
本人用的64位win7测试用着没问题.这版本是要用到注册机 , 工具都在包里,也有说明.
———————————————实践OK:http://dd5.pc6.com/xc1/srs.zip———————————————————
windows7在装了SRS后可能会出现会电脑无声音的情况,这时候检查电脑音频设备会发现设备完全正常,播放音频文件,SRS也能正常工作。重启后情况依旧:电脑明明在放音乐,各种设备(包括SRS)都在正常工作,但是却发不出任何声音。
解决办法:打开SRS面板,点击“选项”——“参数选择”——把“主设备”换成另一个即可。
如果在windows7下出现机箱前置面板的情况,这是由于声卡驱动在windows7下未正确设置,将声卡驱动面板打开,设置“检测前置面板”即可。与SRS无关。
————————————————————————————————————————————————————————————————
我也一直在用SRS,没有声音大概有两种情况:
1.在SRS主面板上,点击“选项…”--“首选项…”---“设备”选项卡中的下拉列表,选择自己对应的声卡输出;
2.在任务栏上“扬声器”右键,---“播放设备”---将SRS虚拟声卡设为“默认设备”。
希望对你有帮助!
解决SRS Audio Sandbox在win7下实现:
http://www.doc88.com/p-392245971898.html
RS专利音效 SRS HD Audio Lab Gold 1.046 破解版.rar
http://ishare.iask.sina.com.cn/f/13773139.html
SRS Audio Sandbox windows7 没声音:
本人用的64位win7测试用着没问题.这版本是要用到注册机 , 工具都在包里,也有说明.
———————————————实践OK:http://dd5.pc6.com/xc1/srs.zip———————————————————
windows7在装了SRS后可能会出现会电脑无声音的情况,这时候检查电脑音频设备会发现设备完全正常,播放音频文件,SRS也能正常工作。重启后情况依旧:电脑明明在放音乐,各种设备(包括SRS)都在正常工作,但是却发不出任何声音。
解决办法:打开SRS面板,点击“选项”——“参数选择”——把“主设备”换成另一个即可。
如果在windows7下出现机箱前置面板的情况,这是由于声卡驱动在windows7下未正确设置,将声卡驱动面板打开,设置“检测前置面板”即可。与SRS无关。
————————————————————————————————————————————————————————————————
我也一直在用SRS,没有声音大概有两种情况:
1.在SRS主面板上,点击“选项…”--“首选项…”---“设备”选项卡中的下拉列表,选择自己对应的声卡输出;
2.在任务栏上“扬声器”右键,---“播放设备”---将SRS虚拟声卡设为“默认设备”。
希望对你有帮助!
解决SRS Audio Sandbox在win7下实现:
http://www.doc88.com/p-392245971898.html
一个农妇告诉我:吃猪肉等于自杀
最近,一个刚从四川出来做护工的农村妇女,她刚向国家收购站卖了她用5个多月时间
养成的十六头猪。她告诉了我一个很多很多人都知道,又有很多很多人都不知道的公
开的秘密:病从口入,现在人们吃的很多东西,不可能不让人们快速走入“悲惨世界”
。
她说,十几斤重的小猪养到200至300斤的成猪,只需5到6个月,“现代化”高速养猪法
已完完全全普及到成千上万个各种各样养猪专业户。不管大猪,小猪每天都要吃2斤至
3斤饲料,分2顿喂。饲料是用100斤粮食拌几十斤添加剂。一切奇迹都在添加剂中。小
猪从10多斤到50多斤,吃了拌有添加剂的饲料,每天长1斤多肉,这时侯的猪还有精神
在猪圈中跑几圈。但是,随着这种拌有添加剂的饲料摄入时日的增加,小猪长到50斤
以上时,每天也吃2至3斤饲料,开始大量喝水,每天要长2至3斤肉,这时的猪开始出
现24小时几乎都在睡觉的现象。除了吃食时,被人打醒。
为了让猪毛发发亮,漂亮,卖出好价格,猪长到100斤的时候,每天每100斤饲养除拌
入添加剂外,还要加入几斤化肥尿素颗粒。化肥是给土地施肥的也拿来喂养动物。这
种靠喂拌了添加剂的饲料快速催肥的猪,必须在200斤至300斤左右卖掉,否则猪就站
不起来了。这饲料里添加剂的主要成份:含有大量激素,安眠药,等大量药物。这一
铁的事实,所有的养猪专业户,都非常非常清楚。为此他们自己大都不吃用靠添加剂
催肥而养出来的猪,而专门养几头猪,从不喂拌有添加剂的饲料,供自已家人食用。
请看两种喂养方法对比:
1、喂添加剂的猪(供给社会用)
2、不喂添加剂的猪(供自已家人食用)
1、喂添加剂猪(一天吃2至3斤拌添加剂的饲料)
2、不喂添加剂的猪(一天吃7至8斤不含添加剂的天然饲料)
1、喂添加剂的猪(除吃饲料,喝大量水的一点时间外,几乎24小时都是睡觉)
2、不喂添加剂的猪(不停在圈里运动,用水正常)
1、喂添加剂的猪(5至6个月就长到200至300斤)
2、不喂添加剂的猪(需12个月才长到200斤)
拌入添加剂的饲料,1.3元l斤。国家收购成猪价格每斤4元,她5个月下来,除了成
本,每月收入几百元。如果采用传统方法养猪,不靠添加剂短时间内催肥,百分之百
要亏钱。
她还告诉我:所有鸡、鸭、鱼、牛、羊喂养全都采用这样类似的“组合饲料”。我们国
家仅靠短短几年时间就成为全球产肉第一大国,靠的就是专门使用添加剂催肥催长的
各类“现代化”的养殖专业户,这是铁的事实。
在这里,我只想说说最害人的食品确是我们吃得最多的--猪肉以及猪肉制品。
在农民心里,什么样的饲料才是好饲料呢?答案是:
1、猪吃了长得快的饲料
2、猪吃了长得皮红毛亮的饲料
3、猪吃了马上就睡的饲料
4、猪吃了粪便是黑色的饲料
农民一般就把这几个标准综合起来确定一种饲料的好坏。这么一来,让饲料厂家和销
售商绞尽脑汁的问题出现了:怎么样才能使一种饲料能达到这几种效果呢?当然通过
平常的在饲料中添加鱼粉,豆粕的方法是肯定行不通了,只有找“捷径”来达到目的。
1、在饲料中添加激素刺激猪的生长速度,而这种激素肯定要价格低廉,价格低廉也就
决定了这种激素非常低劣,这种低劣的激素对人体有很大的害处,特别是对发育的年
轻人,能使不到年龄的女孩子提早来月经,使老年人诱发疾病等等。
2、在饲料中添加砷制剂来使猪皮红毛亮。砷,这不要我说了吧?谁都知道是剧毒品。
(农民以为皮红毛亮是有营养的表现,其实是猪轻微的中毒)
3、在饲料中添加镇静剂,如本巴比妥等催眠镇静药。有的人吃了猪肉有昏昏欲睡的感
觉就是这个原因,长期吃这种猪肉使人的头脑迟钝。(农民以为猪吃了睡觉是好饲料)
4、更加好笑的是,不知道为什么农民认为猪拉黑色的大便也是好饲料的特征,其实正
常的***是黄褐色的,因为农民有此爱好,所以饲料厂家就拼命的添加高铜,这样才能
使大便变黑。猪肉中含有高铜,人过多的食用对智商和健康有巨大的影响。
用含有大量药物、化学制剂的添加剂来喂养各种有血有肉的动物,人类的贪婪使各种
动物生命变得如此之短,再短。而整天食用这些动物的人类呢?这些化学药物、化学
制剂也会被人摄入体内,在人体内沉积,对人体的生长发育造成极坏影响,诱发人体
产生各种长期的不适症状、痛苦病症以至于最终诱发癌症。
看了上面我说的,大家心里应该有数了吧。
另外,告诉大家:猪肝,猪血,猪肺是含毒素最多的,最好不要食用。
此外还告诉大家一个秘密,饲料相关的生产厂家和销售人员基本上是不吃猪肉的。
最近,一个刚从四川出来做护工的农村妇女,她刚向国家收购站卖了她用5个多月时间
养成的十六头猪。她告诉了我一个很多很多人都知道,又有很多很多人都不知道的公
开的秘密:病从口入,现在人们吃的很多东西,不可能不让人们快速走入“悲惨世界”
。
她说,十几斤重的小猪养到200至300斤的成猪,只需5到6个月,“现代化”高速养猪法
已完完全全普及到成千上万个各种各样养猪专业户。不管大猪,小猪每天都要吃2斤至
3斤饲料,分2顿喂。饲料是用100斤粮食拌几十斤添加剂。一切奇迹都在添加剂中。小
猪从10多斤到50多斤,吃了拌有添加剂的饲料,每天长1斤多肉,这时侯的猪还有精神
在猪圈中跑几圈。但是,随着这种拌有添加剂的饲料摄入时日的增加,小猪长到50斤
以上时,每天也吃2至3斤饲料,开始大量喝水,每天要长2至3斤肉,这时的猪开始出
现24小时几乎都在睡觉的现象。除了吃食时,被人打醒。
为了让猪毛发发亮,漂亮,卖出好价格,猪长到100斤的时候,每天每100斤饲养除拌
入添加剂外,还要加入几斤化肥尿素颗粒。化肥是给土地施肥的也拿来喂养动物。这
种靠喂拌了添加剂的饲料快速催肥的猪,必须在200斤至300斤左右卖掉,否则猪就站
不起来了。这饲料里添加剂的主要成份:含有大量激素,安眠药,等大量药物。这一
铁的事实,所有的养猪专业户,都非常非常清楚。为此他们自己大都不吃用靠添加剂
催肥而养出来的猪,而专门养几头猪,从不喂拌有添加剂的饲料,供自已家人食用。
请看两种喂养方法对比:
1、喂添加剂的猪(供给社会用)
2、不喂添加剂的猪(供自已家人食用)
1、喂添加剂猪(一天吃2至3斤拌添加剂的饲料)
2、不喂添加剂的猪(一天吃7至8斤不含添加剂的天然饲料)
1、喂添加剂的猪(除吃饲料,喝大量水的一点时间外,几乎24小时都是睡觉)
2、不喂添加剂的猪(不停在圈里运动,用水正常)
1、喂添加剂的猪(5至6个月就长到200至300斤)
2、不喂添加剂的猪(需12个月才长到200斤)
拌入添加剂的饲料,1.3元l斤。国家收购成猪价格每斤4元,她5个月下来,除了成
本,每月收入几百元。如果采用传统方法养猪,不靠添加剂短时间内催肥,百分之百
要亏钱。
她还告诉我:所有鸡、鸭、鱼、牛、羊喂养全都采用这样类似的“组合饲料”。我们国
家仅靠短短几年时间就成为全球产肉第一大国,靠的就是专门使用添加剂催肥催长的
各类“现代化”的养殖专业户,这是铁的事实。
在这里,我只想说说最害人的食品确是我们吃得最多的--猪肉以及猪肉制品。
在农民心里,什么样的饲料才是好饲料呢?答案是:
1、猪吃了长得快的饲料
2、猪吃了长得皮红毛亮的饲料
3、猪吃了马上就睡的饲料
4、猪吃了粪便是黑色的饲料
农民一般就把这几个标准综合起来确定一种饲料的好坏。这么一来,让饲料厂家和销
售商绞尽脑汁的问题出现了:怎么样才能使一种饲料能达到这几种效果呢?当然通过
平常的在饲料中添加鱼粉,豆粕的方法是肯定行不通了,只有找“捷径”来达到目的。
1、在饲料中添加激素刺激猪的生长速度,而这种激素肯定要价格低廉,价格低廉也就
决定了这种激素非常低劣,这种低劣的激素对人体有很大的害处,特别是对发育的年
轻人,能使不到年龄的女孩子提早来月经,使老年人诱发疾病等等。
2、在饲料中添加砷制剂来使猪皮红毛亮。砷,这不要我说了吧?谁都知道是剧毒品。
(农民以为皮红毛亮是有营养的表现,其实是猪轻微的中毒)
3、在饲料中添加镇静剂,如本巴比妥等催眠镇静药。有的人吃了猪肉有昏昏欲睡的感
觉就是这个原因,长期吃这种猪肉使人的头脑迟钝。(农民以为猪吃了睡觉是好饲料)
4、更加好笑的是,不知道为什么农民认为猪拉黑色的大便也是好饲料的特征,其实正
常的***是黄褐色的,因为农民有此爱好,所以饲料厂家就拼命的添加高铜,这样才能
使大便变黑。猪肉中含有高铜,人过多的食用对智商和健康有巨大的影响。
用含有大量药物、化学制剂的添加剂来喂养各种有血有肉的动物,人类的贪婪使各种
动物生命变得如此之短,再短。而整天食用这些动物的人类呢?这些化学药物、化学
制剂也会被人摄入体内,在人体内沉积,对人体的生长发育造成极坏影响,诱发人体
产生各种长期的不适症状、痛苦病症以至于最终诱发癌症。
看了上面我说的,大家心里应该有数了吧。
另外,告诉大家:猪肝,猪血,猪肺是含毒素最多的,最好不要食用。
此外还告诉大家一个秘密,饲料相关的生产厂家和销售人员基本上是不吃猪肉的。
你啊,怎么说你呢,还是扭不过一个弯.笨