+.+ ~Zealmanの米 +.+
百度空间 | 百度首页 
               
 
文章列表
 
2009年06月04日 星期四 19:37

 
2009年05月09日 星期六 17:00

Donald Knuth说“过早优化是万恶之源”(premature optimization is the root of all evil)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。同时,我觉得“过早优化”的概念不专属编写程序,生活中的示例也比比皆是。不信,你看看下面这些情形你是否遇到过:

1、当你开始学一门程序语言的时候(比如c#),你想如果可以精通开发工具(比如Visual Studio)一定如虎添翼,于是一开始你就花很多时间去研究开发工具,而忘记自己学习的重点是语言本身,而非工具。或者,一开始,你花不少的时间去选择哪门程序语言,比较各种语言的优劣,在五花八门的语言前面犹豫不决,这个想学,那个也不想放弃,结果都是学个半路子。

2、当你学习一门外语比如英语的时候,一开始,你花了很多的时间去下载有关英语资料,花了很多的时间去找英语书籍,以为有了这些资料和书籍就可以学好英文,而不是一开始就踏踏实实的从单词、语法开始,结果后来资料下载了一大堆,书籍买了不少,却没有坚持下去。

3、你想搞体育锻炼,比如打羽毛球,于是一开始你花大量时间去买球衣、球鞋、球拍等装备,可没连几天,你发现自己开始三天打鱼了,最后,那些装备都起了灰,也没锻炼几次。

4、你想做时间管理(Getting Things Done),于是你研究各种时间管理的资料,上各种时间管理技巧的网站,比如lifehackdigggtdlife,下载对最流行的GTD的管理软件,以节省时间的名义浪费时间,很浮躁,不能做到实实在在把每天的计划都落实,拖拖拉拉。

5、你有没有这样的体验,一本书你总是对开头的部分看的最仔细,后面的章节没坚持看下去,下次又重复这种循环。当你计划做一件事的时候,总是规划的非常完美,几乎考虑每个细节,但却没有认认真真、一步一步执行,或者过早完美计划,反而让你缩手缩脚,犹豫不前,瞻前顾后,顾此失彼,最后虎头蛇尾。

6、比如,如果我有了钱,我就如何如何享受快乐,比如,如果我将来有了很多的时间,我就会花更多的时间陪家人或锻炼…

这样类似的例子还可以举很多。

过早优化对大的问题在于:过早关注不重要的部分,而忽略行动和目标本身。以静态的思维来优化,殊不知,事务发展总是动态的,“优化”是需要长期的实践积累才可以获得。出发点是好的,但往往好心办坏事,折腾大量的时间,做了很多不该做的,而该做的、重要的反而没做。强化外部条件、工具等外在,而忽略内在因素和行动本身,或者,过多期望将来,而忽略当下眼前。

活在当下,实实在在做好手头的事,是避免“过早优化”最好的方法之一

转自 http://www.watch-life.net/life-thinking/no-premature-optimization.html

 
2009年04月19日 星期日 22:26
 
2008年12月06日 星期六 23:37
 
2008年12月02日 星期二 12:45

JSP+MYSQL提交数据的时候汉字全显示为“?”

如果你已经百度搜寻过其它答案不奏效那么就试下这个

修改mysql的默认字符集

windows下的mysql配置文件是my.ini,一般在mysql安装目录
my.ini可以直接在这个文件里面加上或修改
default-character-set=gbk #或gb2312,big5,utf8
然后重新启动mysql

-----//以下为更多参考

MySQL字符集不一致的解决办法总结

这阵子忙着把数据库从MS SQL数据库改成MySQL数据库,简直过着非人的生活!
再怎么忙,还是想做做笔记,绝不允许自己把一个错误重犯二次。OK,言归正传。。。
SQL: SELECT faqname, faqparent, phrase.text AS title
                FROM faq AS faq
                INNER JOIN phrase AS phrase ON
                (phrase.phrasetypeid = 7000 AND phrase.varname = faq.faqname)
                WHERE phrase.languageid IN(-1, 0, 1)
                AND (
                        faqparent IN('vb_custom_status', 'vb_update_profile',
                                     'vb_calendar_how', 'vb_referrals_explain',
                                     'vb_sig_explain', 'vb_user_maintain')
                OR
                        faqname IN('vb_custom_status', 'vb_update_profile',
                                   'vb_calendar_how', 'vb_referrals_explain',
                                   'vb_sig_explain', 'vb_user_maintain')
                     )
mysql 错误: Illegal mix of collations (latin1_bin,IMPLICIT) and (latin1_swedish_
ci,IMPLICIT) for operation '='

mysql 错误号: 1267

从我自己的cnblogs(http://www.cnblogs.com/xugang/articles/882943.html)中看了看错误提示:)
1267:不合法的混合字符集。


总结:

错误是在你的结果集中有两种字符集。   

比如说你在两个表联合查询,一个表的字符集是latin1,另一个是utf8,
这样在你的结果集中有两种字符集,mysql会报上面的错误。   

一个表中不同的字段使用不同的字符集,也是一个道理。   

用SHOW   CREATE   TABLE   table_name;可以看出具体的字符集设置。

查了帮助手册,说是user的字符集没有设,默认为utf8,将其转为latin1或gb2312等字符集


解决方法:   

将不同的字符集,转化成统一的字符集。  

After   an   upgrade   to   MySQL   4.1,   the   statement   fails:     

mysql>   SELECT   SUBSTRING_INDEX(USER(),'@',1);   

ERROR   1267   (HY000):   Illegal   mix   of   collations   

(utf8_general_ci,IMPLICIT)   and   (latin1_swedish_ci,COERCIBLE)   

for   operation   'substr_index'   

The   reason   this   occurs   is   that   usernames   are   stored   using   UTF8   (see   section   11.6   UTF8   for   Metadata).   As   a   result,   the   USER()   function   and   the   literal   string   '@'   have   different   character   sets   (and   thus   different   collations):     

mysql>   SELECT   COLLATION(USER()),   COLLATION('@');   

+-------------------+-------------------+   

|   COLLATION(USER())   |   COLLATION('@')         |   

+-------------------+-------------------+   

|   utf8_general_ci       |   latin1_swedish_ci   |   

+-------------------+-------------------+   

One   way   to   deal   with   this   is   to   tell   MySQL   to   interpret   the   literal   string   as   utf8:     

mysql>   SELECT   SUBSTRING_INDEX(USER(),_utf8'@',1);   

+------------------------------------+   

|   SUBSTRING_INDEX(USER(),_utf8'@',1)   |   

+------------------------------------+   

|   root                                                               |   

+------------------------------------+   

Another   way   is   to   change   the   connection   character   set   and   collation   to   utf8.   You   can   do   that   with   SET   NAMES   'utf8'   or   by   setting   the   character_set_connection   and   collation_connection   system   variables   directly.     

表的编码转换可以用:(MySQL   Version   >   4.12)   

ALTER   TABLE   tbl_name   CONVERT   TO   CHARACTER   SET   charset_name;   

之前的版本可以用:   

ALTER   TABLE   tbl_name   CHARACTER   SET   charset_name;

MySQL官方解释:
http://dev.mysql.com/doc/refman/5.0/en/charset-collation-charset.html


附加:

修改字段类型的方法:(经过 google 搜索)
登录MYSQL后执行这个语句就可以了:
ALTER TABLE `phrase` CHANGE `varname` `varname` VARCHAR( 250 ) NOT NULL;

修改字段字符集的方法:

mysql〉show   full   columns   from   table就会发现两个字段的字符集是不一样的。   

通过用   

ALTER   TABLE   `tname`     CHANGE   `column`   `column`   VARCHAR(   15   )   CHARACTER   SET   latin1   NOT   NULL。   

(假设变更为字符型,並且字符集类别为latin1   latin1   )

修改.ini文件的方法:(不建议使用)
在mysql 的安装目录下有一个my.ini文件,
打开找到[mysql]下的default-character-set=*****,改成default-character-set=gb2312,重启mysql 即可。

 
     
 
留言板
 
46
你好,能和你交个朋友吗?
2009年07月03日 星期五 15:32| 回复
 
43
呵,总能在你这找到不少东西。
谢了
2009年06月14日 星期日 01:12| 回复
 
42
你好,我们交个朋友吧
2009年06月12日 星期五 19:42| 回复
 
40
无意中走进来,希望和你交个朋友:)
2009年06月03日 星期三 11:35| 回复
 
39
忽忽 踩的好 踩到好
2009年05月29日 星期五 17:58| 回复
 
 
姓 名:    注册
网 址: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      
   
 
最新动态
 
   
 
 
个人档案
 
zealman

北京 西城区 
上次登录:
6天前
加为好友
 
   
 
BLOG
 
 
 
 
 
 
 
 
 
 
 
 
     
 
RSS
 
   
 
LINK
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
最近访客
 
 

k3dljias

kobunsha

luoxia1103

shenxin47

刘畅abc

要注册不会吧

yjssos1111

鹬ヤ蚌蝦
     
 
其它
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     


©2009 Baidu