extends可以理解为全盘继承了父类的功能
implements可以理解为为这个类附加一些额外的功能
举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal,
但是cat,dog,bird还可以implements比如run,shout这些interface,bird,insect可以implements比如fly这些interface
interface是一个接口,类似于C++中的纯虚函数。
举个简单的例子,有一类东西,都具有同样的行为,而这个共有的行为实现方式不一样。
如:笔这类东西,都有共同的行为“写”,铅笔、毛笔、圆珠笔、钢笔都有“写”的功能,但实现起来不一样。那么我们就可以抽象出一个接口“笔”
interface 笔{
void 写();
}
implement的意思是指在铅笔、毛笔、圆珠笔要有”写“的这个功能,就需要实现接口”笔“的”写“功能。而这个关键字implement就是实现的意思,如:
class 铅笔 implement 笔{
void 写(){
用铅芯画
}
}
class 钢笔 implement 笔{
void 写(){
用墨水画
}
}
而你提到的extends是指一个继承关系,子类继承父类的功能。举个简单的例子:父类”灯“具有”发光“的功能,而子类"台灯",只需要extends父类”灯“就拥有了发光的共功能。
参考:
http://bruce-ko.javaeye.com/blog/420254
implements可以理解为为这个类附加一些额外的功能
举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal,
但是cat,dog,bird还可以implements比如run,shout这些interface,bird,insect可以implements比如fly这些interface
interface是一个接口,类似于C++中的纯虚函数。
举个简单的例子,有一类东西,都具有同样的行为,而这个共有的行为实现方式不一样。
如:笔这类东西,都有共同的行为“写”,铅笔、毛笔、圆珠笔、钢笔都有“写”的功能,但实现起来不一样。那么我们就可以抽象出一个接口“笔”
interface 笔{
void 写();
}
implement的意思是指在铅笔、毛笔、圆珠笔要有”写“的这个功能,就需要实现接口”笔“的”写“功能。而这个关键字implement就是实现的意思,如:
class 铅笔 implement 笔{
void 写(){
用铅芯画
}
}
class 钢笔 implement 笔{
void 写(){
用墨水画
}
}
而你提到的extends是指一个继承关系,子类继承父类的功能。举个简单的例子:父类”灯“具有”发光“的功能,而子类"台灯",只需要extends父类”灯“就拥有了发光的共功能。
参考:
http://bruce-ko.javaeye.com/blog/420254
cannot restore segment prot after reloc,原来这是SELinux搞的鬼,解决办法有两个
法一:
1. 使用chcon 命令
示例:
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
修正为:
chcon -t textrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
如开通VSFTP:setsebool -P ftpd_disable_trans=0
法二:
2. 禁止掉SELinux
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled
法一:
1. 使用chcon 命令
示例:
chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
修正为:
chcon -t textrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
如开通VSFTP:setsebool -P ftpd_disable_trans=0
法二:
2. 禁止掉SELinux
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled
一、Linux下清空DNS缓存
Linux下DNS缓存实现通常有两种方式:一种是用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存。另一种实现DNS缓存则是用Bind来架设Caching Name Server来实现。
如果是清除NSCD上的Cache,可重新启动NSCD服务来达成清除DNS Cache的效果。用这个命令:
# service nscd restart
或是
# /etc/init.d/nscd restart
如果是清除BIND服务器上的CACHE,用这个命令:
# rndc flush
如果你的DNS服务器是用dnsmasq实现的,用下面这个命令
$ sudo /etc/init.d/dnsmasq restart
注:DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务。
几个用dnsmasq建立dns缓存服务器的文章,发给大家参考下。
用dnsmasq建立dns缓存服务器
用dnsmasq做dns代理缓存服务器
通过dnsmasq来提高ADSL上网速度
二、其它操作系统下清空DNS缓存的方法
1、微软windows下如何清空dns:
你可以用以下命令来清空dns 缓存内容。
ipconfig /flushdns
你也可以用以下命令来查看dns缓存内容。
ipconfig/displaydns
windows下的DNS Cache 是由DNS Client后台进程控制的,你可以在控制面板 ->服务中将其关闭,这样windows就不会进行DNS缓存,每次都将直接查询DNS Server 。
2、Mac OSX下如何清空DNS缓存:
在Mac OSX中,你可以用以下命令来清空DNS缓存内容:
bash-2.05a$lookupd-flushcache
三、其它一些DNS Cache小技巧
Q: 如何查看BIND DNS Server的Cache :
A: 在 bind 9中,可以使用rndc -dumpdb命令来查看DNS Cache,当然你的rndc要先配置好。这个命令会在/var/named(这个目录是在 named.conf 文件中指定的)目录中生成named_dump.db文件。
在bind8下,可以试试用kill -INT named_pid。
Q: DNS Cache的时间如何设置:
A: 在bind9 中,使用TTL参数来设置DNS默认的缓存时间,但要记住这个是你解析的域名在别人的DNS中的缓存时间。
Q: 在客户端如何清空DNS Cache:
A: 在Unix下,DNS客户端只是几个例程,负责转发和接受查询的功能,并不缓存。
Q: 在DNS服务器端如何清空DNS Cache:
A: 最简单的方法就是重新启动 named 进程;当然也有不用重启的方法: rndc flush
四、参考文章
How To Flush Linux/UNIX DNS Cache
清除DNS缓存
Google
来源:http://www.mike.org.cn/articles/how-to-clear-dns-cache/
Linux下DNS缓存实现通常有两种方式:一种是用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存。另一种实现DNS缓存则是用Bind来架设Caching Name Server来实现。
如果是清除NSCD上的Cache,可重新启动NSCD服务来达成清除DNS Cache的效果。用这个命令:
# service nscd restart
或是
# /etc/init.d/nscd restart
如果是清除BIND服务器上的CACHE,用这个命令:
# rndc flush
如果你的DNS服务器是用dnsmasq实现的,用下面这个命令
$ sudo /etc/init.d/dnsmasq restart
注:DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务。
几个用dnsmasq建立dns缓存服务器的文章,发给大家参考下。
用dnsmasq建立dns缓存服务器
用dnsmasq做dns代理缓存服务器
通过dnsmasq来提高ADSL上网速度
二、其它操作系统下清空DNS缓存的方法
1、微软windows下如何清空dns:
你可以用以下命令来清空dns 缓存内容。
ipconfig /flushdns
你也可以用以下命令来查看dns缓存内容。
ipconfig/displaydns
windows下的DNS Cache 是由DNS Client后台进程控制的,你可以在控制面板 ->服务中将其关闭,这样windows就不会进行DNS缓存,每次都将直接查询DNS Server 。
2、Mac OSX下如何清空DNS缓存:
在Mac OSX中,你可以用以下命令来清空DNS缓存内容:
bash-2.05a$lookupd-flushcache
三、其它一些DNS Cache小技巧
Q: 如何查看BIND DNS Server的Cache :
A: 在 bind 9中,可以使用rndc -dumpdb命令来查看DNS Cache,当然你的rndc要先配置好。这个命令会在/var/named(这个目录是在 named.conf 文件中指定的)目录中生成named_dump.db文件。
在bind8下,可以试试用kill -INT named_pid。
Q: DNS Cache的时间如何设置:
A: 在bind9 中,使用TTL参数来设置DNS默认的缓存时间,但要记住这个是你解析的域名在别人的DNS中的缓存时间。
Q: 在客户端如何清空DNS Cache:
A: 在Unix下,DNS客户端只是几个例程,负责转发和接受查询的功能,并不缓存。
Q: 在DNS服务器端如何清空DNS Cache:
A: 最简单的方法就是重新启动 named 进程;当然也有不用重启的方法: rndc flush
四、参考文章
How To Flush Linux/UNIX DNS Cache
清除DNS缓存
来源:http://www.mike.org.cn/articles/how-to-clear-dns-cache/
共享库必须放在plugin目录下,目录是由plugin_dir系统变量中定义的,默认这个目录是由配置变量中的pkglibdir定义的,可以在服务器启动时候改变,比如可以在my.cnf中设置:
[mysqld]
plugin_dir=/path/to/plugin/directory
plugin目录位置是mysql安装目录下的lib/plugin ,需要我们手动创建 。
先看看这个吧,http://dev.mysql.com/doc/refman/5.1/en/adding-udf.html
重新编译mysql吧,支持动态加载,编译的时候,添加这个选项:with-mysqld-ldflags=-rdynamic
阅读全文
[mysqld]
plugin_dir=/path/to/plugin/directory
plugin目录位置是mysql安装目录下的lib/plugin ,需要我们手动创建 。
先看看这个吧,http://dev.mysql.com/doc/refman/5.1/en/adding-udf.html
重新编译mysql吧,支持动态加载,编译的时候,添加这个选项:with-mysqld-ldflags=-rdynamic

工作需要,通过长连接的方式测试程序的性能,于是做了以下的测试。这里的代码是一个单元测试,给目标post指定数据。
其中 在headers中添加 "Connection":"Keep-Alive" 即可使服务器不主动断开此连接。当然也要注意,每次请求后,调用read()方法(否则不能进行下一次发送,httplib中第2次发送数据时,必须保证上一次数据被读取,否则会抛出异常)。
来源:http://blog.csdn.net/ustclu/archive/2008/11/18/3326624.aspx
其中 在headers中添加 "Connection":"Keep-Alive" 即可使服务器不主动断开此连接。当然也要注意,每次请求后,调用read()方法(否则不能进行下一次发送,httplib中第2次发送数据时,必须保证上一次数据被读取,否则会抛出异常)。
import urllib,unittest
class PressureTest(unittest.TestCase):
times=100
data='''
<?xml version="1.0" encoding="UTF-8"?>
<message >
</message>
'''
def testSend(self):
import httplib
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain","Connection":"Keep-Alive"}
conn = httplib.HTTPConnection("192.168.54.138",6040)
for i in range(self.times):
conn.request("POST", "/index.html", self.data, headers)
response = conn.getresponse()
response.read()
conn.close()
if __name__ == "__main__":
unittest.main()
class PressureTest(unittest.TestCase):
times=100
data='''
<?xml version="1.0" encoding="UTF-8"?>
<message >
</message>
'''
def testSend(self):
import httplib
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain","Connection":"Keep-Alive"}
conn = httplib.HTTPConnection("192.168.54.138",6040)
for i in range(self.times):
conn.request("POST", "/index.html", self.data, headers)
response = conn.getresponse()
response.read()
conn.close()
if __name__ == "__main__":
unittest.main()
来源:http://blog.csdn.net/ustclu/archive/2008/11/18/3326624.aspx
http://www.oracle.com/technology/global/cn/pub/articles/vasiliev-django.html
附上两篇文章:
在 Centos 5.2 中搭建 nginx python django 等等服务
1
http://www.dbasky.net/archives/2009/08/nginx-python-django-memcached-mysql-fastcgi.html
设置支持 django 的 nginx 配置文件
1
http://www.okpython.com/bbs/thread-2608-1-5.html
http://tech.foolpig.com/2010/08/30/python-django-nginx/
附上两篇文章:
在 Centos 5.2 中搭建 nginx python django 等等服务
1
http://www.dbasky.net/archives/2009/08/nginx-python-django-memcached-mysql-fastcgi.html
设置支持 django 的 nginx 配置文件
1
http://www.okpython.com/bbs/thread-2608-1-5.html
http://tech.foolpig.com/2010/08/30/python-django-nginx/
【SecureCRT 应用 sz/rz 上传大文件】
sc -bey
rz -bey
-b, --binary binary transfer
-e, --escape Escape control characters (Z)
-y, --overwrite overwrite existing files
-b binary 用binary的行动 上传下载,不表明 字符为ascii
-e 逼迫 escape 全部 独霸字符,比如 Ctrl+x,DEL等
上传大文件不出现错误用如下命令:
VBS自动脚本编写Demo:
sc -bey
rz -bey
-b, --binary binary transfer
-e, --escape Escape control characters (Z)
-y, --overwrite overwrite existing files
-b binary 用binary的行动 上传下载,不表明 字符为ascii
-e 逼迫 escape 全部 独霸字符,比如 Ctrl+x,DEL等
上传大文件不出现错误用如下命令:
VBS自动脚本编写Demo:
IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境:
1、如果为空返回0
select ifnull(null,0)
2、如果为空返回0,否则返回1
select if(isnull(col),0,1) as col.
MYSQL 中的IFNULL函数
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,'yes');
-> 'yes'
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。
mysql> select IF(1>2,2,3);
-> 3
mysql> select IF(1<2,'yes','no');
-> 'yes'
mysql> select IF(strcmp('test','test1'),'yes','no');
-> 'no'
expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。
mysql> select IF(0.1,1,0);
-> 0
mysql> select IF(0.1<>0,1,0);
-> 1
在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
第一个版本返回result,其中value=compare-value。第二个版本中如果第一个条件为真,返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。
mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;
-> "one"
mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;
-> "true"
mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;
-> NULL
来源:http://blog.163.com/love-love-l/blog/static/21078304201002034639214/
cat fushuQQCheck.txt |awk '{print "select "$1 ",(select sum(FScore) from Tbl_ScoreDetail_" substr($1,length($1)-1,2) " where FDesId='\''"$1 "'\'' and FSType=1)-IFNULL((select sum(FScore) from Tbl_ScoreDetail_" substr($1,length($1)-1,2) " where FDesId='\''" $1 "'\'' and FSType=0),0); "}'
1、如果为空返回0
select ifnull(null,0)
2、如果为空返回0,否则返回1
select if(isnull(col),0,1) as col.
MYSQL 中的IFNULL函数
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,'yes');
-> 'yes'
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。
mysql> select IF(1>2,2,3);
-> 3
mysql> select IF(1<2,'yes','no');
-> 'yes'
mysql> select IF(strcmp('test','test1'),'yes','no');
-> 'no'
expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。
mysql> select IF(0.1,1,0);
-> 0
mysql> select IF(0.1<>0,1,0);
-> 1
在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
第一个版本返回result,其中value=compare-value。第二个版本中如果第一个条件为真,返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。
mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;
-> "one"
mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;
-> "true"
mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;
-> NULL
来源:http://blog.163.com/love-love-l/blog/static/21078304201002034639214/
谁需要HTML5?【角色定位】
Google最需要!Apple的Jobs也需要。但这两个肯定各怀鬼胎。微软无所谓了,反正他还有Silverlight。
Mozilla/Firefox非盈利组织,目标可能会高尚些,是w3c标准就要支持。Opera那点浏览器市场占有率估计还没敢有太多想法。
Google的云计算帝国就差一个支持RIA(Rich Internet Applications)富互联网应用的客户端了,试想 HTML5得到普及,更多的应用转向BS模式时,微软帝国的桌面软件生态环境必定受到很大威胁,垂涎多年的Google一定是最大受益者。当在一台操作系 统免费的电脑上使用和MS Word差不多功能的免费Google Doc时,你还会掏钱买微软的Word吗?当你所有的办公应用都只需要打开浏览器窗口时,你还会花钱买操作系统吗?Google的Chrome OS操作系统界面已经说明了这个意图。
Jobs也需要HTML5,他是打着小算盘,想让浏览器原生支持视频音频,这样iPhone、iPad就不用嵌入Flash,Jobs当然 不能让Flash进iPhone OS,要不然App Store里的游戏谁去买?同时,如果大量的应用都能基于浏览器实现时,用户就不会被 Windows的桌面应用套牢了。漂亮的Mac电脑谁不喜欢。
他们选择HTML5都是为了更大野心,期望HTML5带来整个软件生态环境的改变,同时避开不受自己控制的Flash。
Macromedia和后来的当家Adobe把握住了互联网应用的发展需求,不断的完善的Flash,使之已经超越了浏览器本身的功能。各 大浏览器厂商也看到这种应用的需求,不甘于一个本该浏览器实现的功能,由一个几兆大小的 Plugin实现了,并玩的风生水起。于是不遗余力的推进 HTML5,并且矛头直指Flash。
用户想要HTML5吗?用户要的不是技术,是应用,是体验。如果你能拿Ajax实现一个开心农场,我想没谁会在乎它是不是Flash做的。
开发者想要HTML5吗?那需要一个成熟的HTML5+CSS3+JS的开发环境,需要各个浏览器提供统一的用户体验,即标准的完全兼容。还需要增加新的学习成本。
阅读全文
Google最需要!Apple的Jobs也需要。但这两个肯定各怀鬼胎。微软无所谓了,反正他还有Silverlight。
Mozilla/Firefox非盈利组织,目标可能会高尚些,是w3c标准就要支持。Opera那点浏览器市场占有率估计还没敢有太多想法。
Google的云计算帝国就差一个支持RIA(Rich Internet Applications)富互联网应用的客户端了,试想 HTML5得到普及,更多的应用转向BS模式时,微软帝国的桌面软件生态环境必定受到很大威胁,垂涎多年的Google一定是最大受益者。当在一台操作系 统免费的电脑上使用和MS Word差不多功能的免费Google Doc时,你还会掏钱买微软的Word吗?当你所有的办公应用都只需要打开浏览器窗口时,你还会花钱买操作系统吗?Google的Chrome OS操作系统界面已经说明了这个意图。
Jobs也需要HTML5,他是打着小算盘,想让浏览器原生支持视频音频,这样iPhone、iPad就不用嵌入Flash,Jobs当然 不能让Flash进iPhone OS,要不然App Store里的游戏谁去买?同时,如果大量的应用都能基于浏览器实现时,用户就不会被 Windows的桌面应用套牢了。漂亮的Mac电脑谁不喜欢。
他们选择HTML5都是为了更大野心,期望HTML5带来整个软件生态环境的改变,同时避开不受自己控制的Flash。
Macromedia和后来的当家Adobe把握住了互联网应用的发展需求,不断的完善的Flash,使之已经超越了浏览器本身的功能。各 大浏览器厂商也看到这种应用的需求,不甘于一个本该浏览器实现的功能,由一个几兆大小的 Plugin实现了,并玩的风生水起。于是不遗余力的推进 HTML5,并且矛头直指Flash。
用户想要HTML5吗?用户要的不是技术,是应用,是体验。如果你能拿Ajax实现一个开心农场,我想没谁会在乎它是不是Flash做的。
开发者想要HTML5吗?那需要一个成熟的HTML5+CSS3+JS的开发环境,需要各个浏览器提供统一的用户体验,即标准的完全兼容。还需要增加新的学习成本。

背景:用sed进行删除一行时用@或#均不行,最后还得用斜杠,
sed -i '@^worker_cpu_affinity.*@d' nginx.conf
sed: -e expression #1, char 1: unknown command: `@'
用@符号,即使没有提示啥错误,但实践发现其并没有被替换:
sed -s "s@jenkins@@" /etc/hosts
模糊匹配删一行:
sed -i "/.*bbs.mysql.*/d" /etc/hosts
用斜杠就对了,以行打头进行匹配:
比如删除Nginx里的nginx.conf里的 include vhosts/mini.conf,注意:如果有多个可能会删除多行;
阅读全文
sed -i '@^worker_cpu_affinity.*@d' nginx.conf
sed: -e expression #1, char 1: unknown command: `@'
用@符号,即使没有提示啥错误,但实践发现其并没有被替换:
sed -s "s@jenkins@@" /etc/hosts
模糊匹配删一行:
sed -i "/.*bbs.mysql.*/d" /etc/hosts
用斜杠就对了,以行打头进行匹配:
比如删除Nginx里的nginx.conf里的 include vhosts/mini.conf,注意:如果有多个可能会删除多行;

光影,PS,ISEE
《九阴真经》
阅读全文

导读:原文作者Richard Bejtlich写了一篇《Steve Jobs Understands Team Building》,现将译文《史蒂夫·乔布斯很懂团队建设》转载,以下是文章内容:
我偶然读到了由Rama Dev Jager和Rafael Ortiz在1998年写的《In the Company of Giants》这本书里的一段节选。他们采访苹果公司CEO 史蒂夫·乔布斯,下面的就是他关于团队建设的一些谈话:
问:你一直在向苹果公司、NeXT公司和Pixar公司输送人才,你认为他们是什么样的人才?
史蒂夫·乔布斯: 我想我一直在寻找真正的聪明的人,与他们一起共事。我们所从事的这些重要工作中没有一项是可以由一两个人或三四个人完成的……为了把这些一两个人不能完成的任务做好,你必须找到杰出的人。
这关键的总结发现是,对于生活中的大多数事情,一般的和最好的相比,一个最好的能抵两个一般的……
但是,在我所感兴趣的这个领域——最初是硬件设计——我发现一个最优秀的人完成工作的能力能抵50到100个一般水平的人。鉴于此,我们一直在追求精华之中的精华。
这就是我们所做的事情。我们建设一个团队,保证里面的成员都是A+水平。一个都是A+水平的小团队能抵上100个都是B或C水平的巨型团队。
问: 你的所有才能归功于善于发现人才吗?
史蒂夫·乔布斯: 并不只是发现人才。在招到人才后,你要建设一个团队氛围,让人们都感到他们周围都围绕着跟他一样有才能的人,而且工作是第一的。就要他们知道,他们的工作成绩代表了一切,这是一个深刻的明白的认识。——这就是全部。
招募人才并不是你一个人能干的了的,需要更多的帮助,所以我发现大家一起推荐、培养出唯才是举的文化氛围才是最好的方法。
问: 然而,对于一个创业公司,管理者并不会有那么多时间花在招募人才的事情上。
史蒂夫·乔布斯: 我完全的不赞同。我认为那是最重要的工作……在一个创业公司里,最初的十个人决定了这个公司的成败与否。
史蒂夫是对的。这就是我上周Tweeted这个的原因:
真正的IT/安全专业天才应该为创造不同而工作,而不是为了降低成本、“调整业务”、或解决其它困境工作。
我强调这一点:有志向的人希望创造出不同。他们想要给生活创造更好的东西。(我喜欢这句格言 — time to junk the present one, if you catch my drift, and go back!)
译文链接:http://www.aqee.net/2011/01/18/steve-jobs-understands-team-building/
我偶然读到了由Rama Dev Jager和Rafael Ortiz在1998年写的《In the Company of Giants》这本书里的一段节选。他们采访苹果公司CEO 史蒂夫·乔布斯,下面的就是他关于团队建设的一些谈话:
问:你一直在向苹果公司、NeXT公司和Pixar公司输送人才,你认为他们是什么样的人才?
史蒂夫·乔布斯: 我想我一直在寻找真正的聪明的人,与他们一起共事。我们所从事的这些重要工作中没有一项是可以由一两个人或三四个人完成的……为了把这些一两个人不能完成的任务做好,你必须找到杰出的人。
这关键的总结发现是,对于生活中的大多数事情,一般的和最好的相比,一个最好的能抵两个一般的……
但是,在我所感兴趣的这个领域——最初是硬件设计——我发现一个最优秀的人完成工作的能力能抵50到100个一般水平的人。鉴于此,我们一直在追求精华之中的精华。
这就是我们所做的事情。我们建设一个团队,保证里面的成员都是A+水平。一个都是A+水平的小团队能抵上100个都是B或C水平的巨型团队。
问: 你的所有才能归功于善于发现人才吗?
史蒂夫·乔布斯: 并不只是发现人才。在招到人才后,你要建设一个团队氛围,让人们都感到他们周围都围绕着跟他一样有才能的人,而且工作是第一的。就要他们知道,他们的工作成绩代表了一切,这是一个深刻的明白的认识。——这就是全部。
招募人才并不是你一个人能干的了的,需要更多的帮助,所以我发现大家一起推荐、培养出唯才是举的文化氛围才是最好的方法。
问: 然而,对于一个创业公司,管理者并不会有那么多时间花在招募人才的事情上。
史蒂夫·乔布斯: 我完全的不赞同。我认为那是最重要的工作……在一个创业公司里,最初的十个人决定了这个公司的成败与否。
史蒂夫是对的。这就是我上周Tweeted这个的原因:
真正的IT/安全专业天才应该为创造不同而工作,而不是为了降低成本、“调整业务”、或解决其它困境工作。
我强调这一点:有志向的人希望创造出不同。他们想要给生活创造更好的东西。(我喜欢这句格言 — time to junk the present one, if you catch my drift, and go back!)
译文链接:http://www.aqee.net/2011/01/18/steve-jobs-understands-team-building/
(1)pyhton shell下导入MySQLdb失败。
http://pypi.python.org/pypi/MySQL-python/#downloads
(2)下载解压MySQL-python。
http://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.3.tar.gz#md5=215eddb6d853f6f4be5b4afc4154292f
(3)build时提示缺少setuptools。
root@192.168.1.104:~/software/python/MySQL-python-1.2.3# python setup.py
Traceback (most recent call last):
File "setup.py", line 5, in <module>
from setuptools import setup, Extension
ImportError: No module named setuptools
(4)下载安装setuptools。
http://pypi.python.org/pypi/setuptools#downloads 选自己Python对应的版本。
http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
sh setuptools-0.6c11-py2.6.egg
root@192.168.1.104:~/software/python# python
Python 2.6.6 (r266:84292, Jun 18 2012, 14:10:23)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
上面没有报错说明安装成功了的。
(5)安装 mysql-devel 及其他必要的库
yum install mysql mysql-devel
(6)build mysqldb成功。
cd MySQL-python-1.2.3
/MySQL-python-1.2.3# python setup.py build
实践出现:
在包含自 _mysql.c:29 的文件中:
pymemcompat.h:10:20: 错误:Python.h:没有那个文件或目录
继续执行python setup.py install,可能出现以下错误:
======> pymemcompat.h:10:20: 致命错误:Python.h:没有那个文件或目录 编译中断。
出现这个问题的原因是,系统中的python是自带的,而没有安装python的开发包并没有安装,所以在shell下执行如下命令:
点击(此处)折叠或打开
yum install python-devel
Installed size: 454 k
Is this ok [y/N]: y
Installed:
python-devel.i686 0:2.6.6-29.el6_2.2 Complete!
再次:
python setup.py build
running build
running build_py
copying MySQLdb/release.py -> build/lib.linux-i686-2.6/MySQLdb
running build_ext
编辑 site.cfg ,把 mysql_config 那一行取消注释,并改为:
mysql_config = /usr/lib64/mysql/mysql_config
python setup.py build
python setup.py install
安装:python setup.py install
...
Finished processing dependencies for MySQL-python==1.2.3
安装结束后,
打开 python2.6 shell, 输入
import MySQLdb (注意:MySQLdb中的y是小写)
如果没够报错就说明安装成功了。
=================================================
示例程序:
首先,确定python-mysql是否已经安装了:
rpm包查看方法:
linux-Jack-nb4:/home/jackxiang/python # rpm -qa|grep python-mysql
python-mysql-1.2.0-17.2
说明系统已经有Python和mysql连接的包了。
如没有该包,需要通过rpm或者包来安装,可能较为麻烦,最好是在系统安装的时候就选择上该rpm包,这样做就很方便。
其次,上Python代码:
最后,运行脚本:
python python.py
({'Drop_priv': 'Y', 'Execute_priv': 'Y', 'Create_routine_priv': 'Y', 'Repl_client_priv': 'Y', 'Create_user_priv': 'Y', 'Create_priv': 'Y', 'References_priv': 'Y', 'max_user_connections': 0L, 'Shutdown_priv': 'Y', 'Grant_priv': 'Y', 'max_updates': 0L, 'max。。。。。
体会到Python很简单,很强大吧,呵呵
ython的memcache和json模块:
一般都是:python setup.py build
python setup.py install
Python的Memcache扩展:
ftp://ftp.tummy.com/pub/python-memcached/python-memcached-latest.tar.gz
/python-memcached-1.48# python setup.py build
python-memcached-1.48# python setup.py install
import memcache, import cjson。
http://pypi.python.org/pypi/MySQL-python/#downloads
(2)下载解压MySQL-python。
http://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.3.tar.gz#md5=215eddb6d853f6f4be5b4afc4154292f
(3)build时提示缺少setuptools。
root@192.168.1.104:~/software/python/MySQL-python-1.2.3# python setup.py
Traceback (most recent call last):
File "setup.py", line 5, in <module>
from setuptools import setup, Extension
ImportError: No module named setuptools
(4)下载安装setuptools。
http://pypi.python.org/pypi/setuptools#downloads 选自己Python对应的版本。
http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
sh setuptools-0.6c11-py2.6.egg
root@192.168.1.104:~/software/python# python
Python 2.6.6 (r266:84292, Jun 18 2012, 14:10:23)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import setuptools
上面没有报错说明安装成功了的。
(5)安装 mysql-devel 及其他必要的库
yum install mysql mysql-devel
(6)build mysqldb成功。
cd MySQL-python-1.2.3
/MySQL-python-1.2.3# python setup.py build
实践出现:
在包含自 _mysql.c:29 的文件中:
pymemcompat.h:10:20: 错误:Python.h:没有那个文件或目录
继续执行python setup.py install,可能出现以下错误:
======> pymemcompat.h:10:20: 致命错误:Python.h:没有那个文件或目录 编译中断。
出现这个问题的原因是,系统中的python是自带的,而没有安装python的开发包并没有安装,所以在shell下执行如下命令:
点击(此处)折叠或打开
yum install python-devel
Installed size: 454 k
Is this ok [y/N]: y
Installed:
python-devel.i686 0:2.6.6-29.el6_2.2 Complete!
再次:
python setup.py build
running build
running build_py
copying MySQLdb/release.py -> build/lib.linux-i686-2.6/MySQLdb
running build_ext
编辑 site.cfg ,把 mysql_config 那一行取消注释,并改为:
mysql_config = /usr/lib64/mysql/mysql_config
python setup.py build
python setup.py install
安装:python setup.py install
...
Finished processing dependencies for MySQL-python==1.2.3
安装结束后,
打开 python2.6 shell, 输入
import MySQLdb (注意:MySQLdb中的y是小写)
如果没够报错就说明安装成功了。
=================================================
示例程序:
首先,确定python-mysql是否已经安装了:
rpm包查看方法:
linux-Jack-nb4:/home/jackxiang/python # rpm -qa|grep python-mysql
python-mysql-1.2.0-17.2
说明系统已经有Python和mysql连接的包了。
如没有该包,需要通过rpm或者包来安装,可能较为麻烦,最好是在系统安装的时候就选择上该rpm包,这样做就很方便。
其次,上Python代码:
import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'mysql',cursorclass = MySQLdb.cursors.DictCursor)
cursor = db.cursor()
cursor.execute('select * from user')
rs = cursor.fetchall()
print rs
import MySQLdb.cursors
db = MySQLdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'mysql',cursorclass = MySQLdb.cursors.DictCursor)
cursor = db.cursor()
cursor.execute('select * from user')
rs = cursor.fetchall()
print rs
最后,运行脚本:
python python.py
({'Drop_priv': 'Y', 'Execute_priv': 'Y', 'Create_routine_priv': 'Y', 'Repl_client_priv': 'Y', 'Create_user_priv': 'Y', 'Create_priv': 'Y', 'References_priv': 'Y', 'max_user_connections': 0L, 'Shutdown_priv': 'Y', 'Grant_priv': 'Y', 'max_updates': 0L, 'max。。。。。
体会到Python很简单,很强大吧,呵呵
ython的memcache和json模块:
一般都是:python setup.py build
python setup.py install
Python的Memcache扩展:
ftp://ftp.tummy.com/pub/python-memcached/python-memcached-latest.tar.gz
/python-memcached-1.48# python setup.py build
python-memcached-1.48# python setup.py install
import memcache, import cjson。