mimi_van

吞下寂寞的恋人
posts - 30, comments - 45, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2008年1月3日

这道菜也是师从我婆婆

不得不说,婆婆真的是一个美食家,好吃,好看,随便几个蔬菜到她那里都会被演绎的很美味。
呵呵。。。。

现在就来介绍这道菜的步骤:

1.准备材料
             原茄子一个
             青豆若干
             葱白少许
             醋
             胡椒
             盐
             酱油

2.制作过程
             将茄子去皮,切成薄片,然后在切成细丝
             给切好丝的茄子上散少许盐,腌制15分钟,让其出水
            
             青豆用水煮熟,如果你买的是生的
            (我在超市买的大包装的,不知道是不是熟的,反正我没提前煮过)
            
             炒锅中倒少许油,爆香葱花
             加入茄子丝儿,翻炒几下,放少许酱油,少许醋
            (喜欢稍微酸一点的可以多加一点点醋哦)
             将火调小一些,加一点水,翻炒几下,盖上锅盖,闷少许时间
             当茄子快全部软了的时候,加入刚才煮好的青豆
             翻炒几下,然后去调一些 稀薄的 水淀粉
             回来,加入些鸡精,胡椒粉,翻炒几下
             加入水淀粉,大火收一下,出锅


下次我在做的时候,拍张照片附上
          


            

 

posted @ 2008-08-06 20:44 mimi_van 阅读(1350) | 评论 (0)编辑 收藏

当前位置:Java EE乐园文章中心Struts+Spring+Hibernate → 文章内容

用fileupload组件上传文件出现乱码解决方法|http://www.aspsky.net

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2007-12-31 19:58:00
快速查找内容

我们用apache的fileupload组件上传文件,
如果不做任何出理,通常会出现文件名乱码或普通text文本框值的乱码,那么,我们该如何处理呢?

其实,fileupload组件提供了一个设置编码的接口,在没有指定编码时使用系统缺省的encoding,如果需要使用gbk,可以使用该接口进行设置,如:
//FileUploadBase fb = new FileUpload(new DefaultFileItemFactory());
//fb.setHeaderEncoding("GBK");

DiskFileUpload fu = new DiskFileUpload();
fu.setHeaderEncoding("GBK");

这 样,获取的文件名就不会乱码了,但普通文本框的值却还是乱码,我们还要对文本值进行处理,中文的text字段可以通过 title = new String((fileItem.getString("iso8859-1")).getBytes("iso8859-1"),"GBK"); 来 获取


UTF-8的也是同理,祝在家好运.

posted @ 2008-02-29 19:53 mimi_van 阅读(699) | 评论 (0)编辑 收藏

在网上找过很多例子,但都有很多问题。

希望得到大家的帮助。

谢谢

posted @ 2008-01-28 11:13 mimi_van 阅读(883) | 评论 (5)编辑 收藏

在网上找过很多例子,但都有很多问题。

希望得到大家的帮助。

谢谢

posted @ 2008-01-28 11:13 mimi_van 阅读(607) | 评论 (3)编辑 收藏

下面的方法也是我在google上搜到的,因为尝试了其中一个方法,成功了,
所以在这里记录下,备用。

比如以下两个jsp页面之间的传递:

a.jsp页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<form action="b.jsp">
    name:<input type=text name=name>
    <input type=submit>
</form>
 
b.jsp页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%
 String name=request.getParameter("name");
%>
<body>
    <%=name%>
</body>

现象:中文乱码,比如“??????”
 
解决方法如下:

方法一:-----------尝试过,有效但确实不可取
1.         在b.jsp中把pageEncoding="GB2312"改为pageEncoding="ISO8859-1"
            虽然这样b.jsp页面显示的内容还是乱码,但是不是那种“??????”的乱码,
            而是一些特殊字符
2.         然后在浏览器中查看菜单中修改成GB2312的编码,这时乱码就显示中文了。
3.         但是这种方法是不可行的。

方法二:---------- 尝试过,有效。我的部分页面就是用该方法
1.         在b.jsp中把String name=request.getParameter("name");修改为
            String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");
2.         这时再在页面上显示,则就是中文了。
3.         但是我个人不喜欢这种方法,因为编写起来代码非常繁琐

方法三:
1.         有人说修改get/post的传值方式,但是这是有前提的,
            如果只是把get方式修改成post方式,页面结果还是乱码!
2.         前提你必须配置了过滤器,若果你只是配置了过滤器,
            则传值方式必须是:post方式才不是乱码,如果是get方式照样是乱码!
3.         过滤器的配置,我想大家都能有,我就不说了

方法四:
1.         有人说配置tomcat的配置文件server.xml里这句:
             <Connector URIEncoding="GB2312" 
                port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
 
                加上这句:URIEncoding="GB2312"

2.         虽然可以但是有前提的,若果你过滤器没有配置,
            则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!
            当是post方式时,照样是乱码!
            *这时我们就可以看出在tomcat5中的post与get传值方式是不一样的*
            *有人要问有没有一种方法让传值使用get方式或post方式都好用呢,
            下面就是我推荐的方法五*

 方法五:
1.         其实很简单,就是同时实现方法三又实现方法四!
2.         就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码
3.         这样无论是post还是get方式的表单传值,中文都不会是乱码!

posted @ 2008-01-22 14:41 mimi_van 阅读(5386) | 评论 (1)编辑 收藏

今天闲逛CSDN ,看到了这样一个有趣的标题,赶紧进去瞧了瞧。
别人我不知道,因为我是转行业到java编程的。现在正在做web开发的工作,
所以对这篇文章的内容深有同感,尤其是我转载过来,注以红色字的部分。
希望跟我一样境况的人看到这则新闻,也能加强一下对其他语言的学习。



【CSDN 1月9日消息】 国际消息 美国纽约大学的两位计算机科学系退休教授发表一篇公开文章,标题是“计算机科学教育:明日的软件工程师在何处?”。在文中,他们强烈地批评了纽约大学和其他大学,没有向学生传授纯粹的语言如C、C++、Lisp和ADA。

“学生从当前教育实践课程中获取的技能不足以应付今日软件行业的发展(尤其是安全和安全目的方面)。更不幸的是,与外部行业需要过于匹配了,我们训练了许多容易被取代的软件工程师。”

尤为注意的是,文中以“Java作为第一编程语言的诸多缺陷”为小标题对Java进行了批判:

由于Java在Web应用领域的流行,以及初学者容易生成图形化编程,Java成为入门课程中使用最普遍的语言。从此后学生发现很难在一个没有图像界面的语言上编写程序,不清楚源程序和硬件如何执行之间的关系,更具有危险性的是他们一点也不了解指示器的语义,这使得使用C语言编程也成为挑战。”

编程的真正的美妙之处在于,将复杂的过程缩减成非常小的一个简单操作。Java并没有体现这种美妙,它鼓励采用“问题解决(problem-solving)”的方式,使程序员就像五金店的水管工人:到处翻腾抽屉、阁子最后找出需要的零件。最终的结果使得学生知道如何将一些简单的程序组到一起,而对编程却一无所知。而且过早地使用Java库和框架有一个更大的缺陷:它使得学生很难对编写的东西形成运行时间成本(run-time cost)的概念,因为他们很难知道究竟哪种方法的调用是有效的。我们为此亦找到了一些证据。Bjarne Stroustrup(被誉为C++之父)在德州农工大学(Texas A&M University )的报告中,指出了工业对于这种方式越来越多的不满,而且Bjarne这样说,“从工业那里我看到了许多许多对此(Java作为第一编程语言来使用)的抱怨,尤其是AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin等等。”

另外在文中,这两位教授们认为真正的程序员能够使用任何语言(C,Java,Lisp,Ada)。【呐不喊】

posted @ 2008-01-22 14:24 mimi_van 阅读(491) | 评论 (0)编辑 收藏

在网上找到了的解决办法

解决方法一:
1.运行对话框中输入mmc 
        ------打开控制台,将cmd改写成mmc 
        ------在弹出来的对话框里,点击文件 
        ------添加/删除管理单元
        ------添加--找到"Microsoft SQL 企业管理器"
        --添加,确定
        然后回到控制台 

        ------点击控制台的另存为,
        ------将它存储为: c:\program File\microsoft SQL Srver\80\Tools\BINN\SQL Server Enterprise Manager.MSC
即可 
        关掉控制台的时候,不保存控制台的目录结构


解决方法二:
删掉C:\Documents and Settings\YourUserName\Application Data\Microsoft\MMC\SQL Server Enterprise Manager



上面的两个方法我只尝试了方法一,成功了哦

posted @ 2008-01-14 18:18 mimi_van 阅读(1507) | 评论 (2)编辑 收藏

H

Hex (hexadecimal) ---- 十六进制,注意,十六进制代码都是以#开头的

posted @ 2008-01-08 14:56 mimi_van 阅读(185) | 评论 (0)编辑 收藏

B

Binary ---- 二进制的( octal 八进制的,decimal 十进制的,hexadecimal 十六进制的,)
Binary distribution ---二进制版本(很多地方都会发现这个词,比如你去tomcat官网下载tomcat,下载mysql,大概其的意思就是告诉你这是一个二进制版本的)

Bit  ------ (二进制的)位

beta  ----- 因为字母的 B ,常常用来表示 真正发布前的测试阶段 
                 有alfa(alpha)字幕A,表示发布前第一阶段的测试,开发者自己测试
                 而beta 就是 发布前的第二阶段测试 常常是开放给 部分用户的测试
                 这两个测试阶段都过去后,就可以released 发布 了

posted @ 2008-01-08 14:54 mimi_van| 编辑 收藏

O

Octal  --------- <计算机>八进制的
                         八的,第八的

posted @ 2008-01-08 14:53 mimi_van| 编辑 收藏

A

Axis  --------- n.轴,中轴,中枢,中心线
                       the Axis 指二战时德意日组成的轴心国
                       <计算机> axis 是指一种 数据库

posted @ 2008-01-08 14:53 mimi_van| 编辑 收藏

D

debugger  --------- 计算机指 调试器
我目前知道的有application debugger 和 application debugger 这两个名词,其他的还待补充

Decimal ----- <计算机>十进制的
                      十的,第十的

posted @ 2008-01-08 14:53 mimi_van 阅读(215) | 评论 (0)编辑 收藏

U


URL----  统一资源定位符,在URL里必须包含“http://”

posted @ 2008-01-08 14:52 mimi_van 阅读(173) | 评论 (0)编辑 收藏

Terry Lee - 2008年不再用腾讯QQ says:
这个也行:http://java-source.net/open-source/bloggers
Terry Lee - 2008年不再用腾讯QQ says:
是专门web用的
mimi says:
好的。我都看看。呵呵。。
mimi says:
谢谢了
mimi says:
我今天才知道还有专门的调试器程序
Terry Lee - 2008年不再用腾讯QQ says:
恩,好多呢
mimi says:
我傻死了
Terry Lee - 2008年不再用腾讯QQ says:
我原来跟你说过,java最大的好处是有各种开源工具
Terry Lee - 2008年不再用腾讯QQ says:
各个行业,各种应用的几乎都有
mimi says:
没明白
Terry Lee - 2008年不再用腾讯QQ says:
你得多上网看一些技术文章
mimi says:
恩。
Terry Lee - 2008年不再用腾讯QQ says:
比如连接池,log,内容管理,CRM,报表,进程管理,缓存管理等等好多方面java都有开源的框架和工具
Terry Lee - 2008年不再用腾讯QQ says:
不用自己来开发,直接使用就行
Terry Lee - 2008年不再用腾讯QQ says:
比如hibernate和struts
Terry Lee - 2008年不再用腾讯QQ says:
这个网站有个简单的总结:http://java-source.net/
mimi says:
那些开源的框架都是人们免费写的
mimi says:
为什么就给java写啊
Terry Lee - 2008年不再用腾讯QQ says:
有时间建议你去一些java技术网站看看最新的技术和应用: www.theserverside.com, www.onjava.com 等等
Terry Lee - 2008年不再用腾讯QQ says:
因为java开源
Terry Lee - 2008年不再用腾讯QQ says:
php也有,但是没有java的多
mimi says:
哦。
Terry Lee - 2008年不再用腾讯QQ says:
java的开源是所有语言中最多的了
Terry Lee - 2008年不再用腾讯QQ says:
因为java语言本身就是开源的,其他语言都不是
mimi says:
我问一个,你不要生气啊。
Terry Lee - 2008年不再用腾讯QQ says:
你用的eclipse也是java的开源工具
mimi says:
你说java语言本身就是开源的。。就是指免费的。还是也指其他的
mimi says:
那这么说,myeclipse就不是开源的
Terry Lee - 2008年不再用腾讯QQ says:
java本身是开放源代码的,开源指的是源代码,不是免费不免费
Terry Lee - 2008年不再用腾讯QQ says:
和linux一样,可以去官方网站下载源代码
mimi says:
哦。

Terry Lee - 2008年不再用腾讯QQ says:
其他语言都是编译好免费使用,但不一定是开源的
Terry Lee - 2008年不再用腾讯QQ says:
java的这个特点被众多网友应用在java开发的产品上,好多免费的东西都是开源的
mimi says:

Terry Lee - 2008年不再用腾讯QQ says:
其他的语言,比如asp,php开发的东西也可以叫开源,但是和java比还不一样
Terry Lee - 2008年不再用腾讯QQ says:
java不是脚本语言,php本身就是脚本语言,不想开放代码都不行
mimi says:
哦,因为java可以随便看源代码,所以大家可以根据java的源代码再开发一些基于java语言的 软件,框架什么的
mimi says:
有这个意思吧
Terry Lee - 2008年不再用腾讯QQ says:
不是随便看源代码才有这些框架
mimi says:
脚本语言为什么不想开放都不行
Terry Lee - 2008年不再用腾讯QQ says:
是因为java开源,很多技术专家都可以跟sun公司提出自己的改进意见,使得java更好,和linux一样
Terry Lee - 2008年不再用腾讯QQ says:
你用过asp或者php吗
mimi says:
基本没用过,但是看过一些,php是脚本语言,就是那些 用var声明,function什么的。
Terry Lee - 2008年不再用腾讯QQ says:
我给你个.asp文件,你用记事本就能打开看到代码,我把java编译成.class或者用工具做成.exe给你用,你能直接看到源代码吗
mimi says:
你刚才说脚本语言不想开源度不行是什么意思啊
mimi says:
哦。
mimi says:
asp也可以用记事本看啊
mimi says:
这样的。
Terry Lee - 2008年不再用腾讯QQ says:
那你说说怎么不让我看到asp代码
mimi says:
呵呵。。
mimi says:
恩呢
Terry Lee - 2008年不再用腾讯QQ says:
这好像没啥难理解的吧
mimi says:
恩。
mimi says:
是的。
Terry Lee - 2008年不再用腾讯QQ says:
做软件行业应该对这些东西都有个了解,这个就像生活的基本尝试一样
mimi says:
主要是没想到 能用 记事本打开那些 php或asp文件
mimi says:
恩。
mimi says:
你说的对
mimi says:
谢谢
Terry Lee - 2008年不再用腾讯QQ says:
这个我想不明白了
Terry Lee - 2008年不再用腾讯QQ says:
用记事本打开什么文件,怎么会想到或者想不到呢
Terry Lee - 2008年不再用腾讯QQ says:
就算是二进制文件都可以用记事本打开,只不过打开后看不懂是些什么东西
mimi says:
恩。

Terry Lee - 2008年不再用腾讯QQ says:
jsp,asp,php,js等等这些脚本语言因为它们自身的特性想不开源都不行
mimi says:
我还是不太习惯用这样的思维考虑,我总是想,打开一种类型的文件,肯定要用相关的软件,以前都是作为普通的使用者。比如打开数码照片就用acd什么的。

Terry Lee - 2008年不再用腾讯QQ says:
c/c++/java/delphi/basic等等这些语言可以选择是否开源
mimi says:
恩。。。你说的对。
Terry Lee - 2008年不再用腾讯QQ says:
php确实还没有什么官方的编辑工具,那些IDE环境都是第三方开发的
Terry Lee - 2008年不再用腾讯QQ says:
所以不要有这种概念,一个文件类型不一定要用某种特定工具打开
mimi says:

Terry Lee - 2008年不再用腾讯QQ says:
你用java读取flv本身就是“打开”的概念
mimi says:

Terry Lee - 2008年不再用腾讯QQ says:
java有个开源框架专门处理office文档的,是apache项目下的poi项目
Terry Lee - 2008年不再用腾讯QQ says:
可以直接读取excel,word等文档
mimi says:
哦。
Terry Lee - 2008年不再用腾讯QQ says:
不借助其他什么ODBC,是直接二进制读取分析的
mimi says:
哦。
mimi says:
开源还真是好处多多啊
Terry Lee - 2008年不再用腾讯QQ says:
java的freeChat报表框架可以生成各种报表图,扇形、圆饼、柱状、曲线等等,不用自己调用绘图类进行绘图,直接调用这个框架,输入一些数据参数就行
mimi says:

Terry Lee - 2008年不再用腾讯QQ says:
tomcat本身也是一种开源servlet容器,你做web程序不用自己写服务器,直接用免费开源的就行
Terry Lee - 2008年不再用腾讯QQ says:
很多大公司使用自己的web服务器,就是拿tomcat或者apache的源代码然后做修改,改成适合自己公司使用的服务器
mimi says:
难道其他的语言还要自己写服务器
mimi says:
哦。
Terry Lee - 2008年不再用腾讯QQ says:
其他很多都不用,但要么不是免费,要么是别人给你服务器,你没法看到服务器内部工作原理,无法自己修改
mimi says:
哦。
Terry Lee - 2008年不再用腾讯QQ says:
比如tomcat你发现几个功能有缺陷,不太适合自己公司,可以拿来源代码自己修改,发现多余的功能可以自己删除,windows下的IIS就不同了,你没法自己修改,只能把意见提到微软,看看它们什么反应
Terry Lee - 2008年不再用腾讯QQ says:
linux系统也是,现在有N多版本,就是因为开源的缘故,谁都可以根据核心代码生产自己的linux产品
mimi says:
哦。
mimi says:
这样的
mimi says:

Terry Lee - 2008年不再用腾讯QQ says:
所以java才会发展起来,要不大家都还在用vc或者.net
mimi says:
嗯。
Terry Lee - 2008年不再用腾讯QQ says:
java光靠跨平台是没有太多优势的,开源框架才是它的生命力
mimi says:
嗯。
mimi says:
是啊。。会更方便
mimi says:
谢谢你说的这么多
mimi says:
刚看了你给我的那两个技术网站,都是e文的呢。呵呵。。
mimi says:
我csdn才刚刚能看懂一些
Terry Lee - 2008年不再用腾讯QQ says:
是,我经常去看
mimi says:
主要是知道的太少
mimi says:
看不明白
Terry Lee - 2008年不再用腾讯QQ says:
特别是 http://www.theserverside.com/ 经常介绍一些新框架和新技术
Terry Lee - 2008年不再用腾讯QQ says:
能学到不少东西
mimi says:
我都收藏起来
mimi says:
恩。。你简直太厉害了
Terry Lee - 2008年不再用腾讯QQ says:
很多东西我不是天生就知道的,比如log4j那些东西,都是看到一些有影响力的大网站介绍我才知道的
Terry Lee - 2008年不再用腾讯QQ says:
这就像天天看报纸新闻才能知道天下发生了什么事情一样
mimi says:
嗯。明白你的意思。我会多看的。
Terry Lee - 2008年不再用腾讯QQ says:
恩,英文的东西多训练一下自己,毕竟前沿的文章有人翻译后就变成过时的东西了
mimi says:
恩。
mimi says:
现在看这些e文的,习惯多了。
mimi says:
很多主要都是 中文都不知道说个什么,e文就更不明白了
mimi says:
不过多看确实很好。谢谢你啊
Terry Lee - 2008年不再用腾讯QQ says:
恩,说明你知识面还是不够宽,接触的东西太少
mimi says:
可不是嘛,
mimi says:
这个是积累的
Terry Lee - 2008年不再用腾讯QQ says:
可以先去jakarta.apache.org看看apache项目下面的子项目都是干嘛的
mimi says:

mimi says:
那你每天都几点睡觉啊
Terry Lee - 2008年不再用腾讯QQ says:
不一定,最近几天睡得比较晚
mimi says:
你现在回到家了吧
Terry Lee - 2008年不再用腾讯QQ says:

mimi says:
Ex-Jakarta 这个是什么意思啊,扩展的
mimi says:
ant 也是jakarta下的
Terry Lee - 2008年不再用腾讯QQ says:

mimi says:
算什么呢
Terry Lee - 2008年不再用腾讯QQ says:
jakarta是apache下面的子项目,主要是一些java的项目
Terry Lee - 2008年不再用腾讯QQ says:
apache不光包括java项目,还有c++的
Terry Lee - 2008年不再用腾讯QQ says:
axis就是分c++和java两个版本
Terry Lee - 2008年不再用腾讯QQ says:
今后可能会有.net版本的
mimi says:
哦。
Terry Lee - 2008年不再用腾讯QQ says:
以前我们公司经常用axis
mimi says:
谢谢你啊。
Terry Lee - 2008年不再用腾讯QQ says:
客气
mimi says:
那我先不打扰了。你忙吧。估计今天还要晚睡。注意身体哦。
Terry Lee - 2008年不再用腾讯QQ says:

posted @ 2008-01-04 00:07 mimi_van 阅读(216) | 评论 (0)编辑 收藏

最近,有两位Google Maps API的初学者向我请教他们按照最简单例子写的程序为什么不能正常的运行。

其中一位用GTalk跟我交流,我仔细了看了他的代码,没看出问题,把代码保存在本地,打开Firefox的错误控制台,用Firefox打开他的页面。出错的那一行被清晰的显示出来,我再仔细端详那句话,原来有两个应该是英文逗号的地方,写上了中文逗号。

另一位,在我的论坛跟我交流他的Google Maps API中遇到的问题,我看他代码的时候也没有马上发现问题。然而,同样在用Firefox打开后,问题很明显的找到了,原来是一个方法openInfoWindow被他写成OpenInfoWindow了。

在我帮助别人解决的程序调试问题中,这是非常常见的。人人都可能打出中文逗号,人人都可能把大小写写错。但是在我帮助他们解决问题以后,他们总是感慨的说,谢谢我解决了这个问题,这个问题困扰了他们几个小时,甚至是几天。

这其实并不是只有初学者才会遇到的问题,我还帮助过些有非常丰富经验的工程师解决问题,有时候问题仅仅出自某个参数没有传递进来,或者是拼接字符串的时候少些了一个冒号,或者是拼接地址的时候漏掉了http:。我甚至帮助一些人调试一些我根本不懂的语言的程序,因为多半出现的问题,都和语言特性无关,不是程序员写错了字符,就是写错了逻辑,或者是错误理解了一个函数。

出问题是正常的,写程序是一个复杂的边思考边打字的过程,笔误和一时糊涂都是难以避免的。程序员一般把这种问题叫做低级问题,因为这类问题跟你的智商完全无关,任何人都可能犯。

但是,问题在于,有时候即使是很优秀的程序员,也会被一个低级错误困扰,可能会几天都解决不了。所以,关键在于,如何找到问题。

遇到问题的时候:

1,不要怨天怨地。出了问题,当然有可能是系统的bug,API的问题,但是那些几率往往比你犯低级错误的几率要低多了,先从自己身上找原因,是不是自己写错了。


2,要掌握工具。最低限度你要会写Log,最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说,Dll不能调试,我发现可以;有人说多线程不能调试,我发现可以;有人说COM不能调试,我发现可以;有人说 IE插件不能调试,我发现可以;有人说OE插件不能调试,我发现也可以。当然,你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入程序,一个组都没有 一个仿真器和调试器,但是至少可以用Log嘛,无非是麻烦点。

3,分析问题要有逻辑。遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的。

4,要学会隔离问题。问题涉及到的代码越多,越难以理解,问题越难以解决。遇到这样的情况,可以利用Log或者调试器,一行代码一行代码的给它们洗清嫌疑,这样很快你就可以找到出问题的地方。如果代码特别长,程序特别复杂,可以用二分法来做,效率很高。

5,千万不要懒惰,不要事事求别人。一次复杂的调试过程就像一部侦探剧,如果你有非常好的逻辑性,那这部剧的主角就是福尔摩斯,剧情一定非常精彩。我说这个是有巨大风险的,说真的我帮人调东西挺上瘾的,很有意思。但是我还是要告诉大家,一次高难度的调试之后,你的满足感绝对不亚于写了一个伟大的程序。

要想不遇到问题,写代码的时候:

1,要对写出来的代码负责。我很佩服那些写代码写100行都不执行一次的 高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写的时候 可能慢一些,但是调试的时候很轻松,我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一遍,运行一下,改改,再运行。我喜欢一句一句的抄例子,抄一句两句执行一次,这样可以把例子透彻的理解,而且很难会遇到出现了问题找不到原因的时候。


2,函数体功能块不要过长。我认为我的智商并不高,我很难接受一个程序的一个函数体或者一个功能块超越3屏(当然逻辑真的有那么复杂除外,你会发现越是简单的逻辑越是容易被人写的冗长)。很多人对面向对象耳熟能详,对封装继承看起来驾轻就熟。但是动不动就写出来个函数体超长的程序。这就像写本书从头到尾不点句号一样,会累死读者的。自己看的时候,估计也会被累的喘不过来气。这是我对基础教育的微词所在,他们连教会学生写函数都没教会,虽然表面上他们连面向对象这么高深的东西都教。


3,缩进要对。这点很重要,虽然大部分语言不是像Python那样用缩进来决定逻辑块的位置,但是人看到缩进的时候,总是会以为这些缩进位置跟逻辑相关。尤其是在有大量的ifelse或者for循环等等的嵌套逻辑的时候,如果缩进错了,可能会直接让人把程序的逻辑读错。所以我拿到别人的代码,第一件事情就是整理缩进。我见过一些比较优秀的页面工程师,他们会在div结束的位置用注释写上这个div的id,这样层级关系就一目了然了。


4,不断重构。随着程序的不断修改,有些部分会不断的增长,原来看着清晰的架构可能因为问题的复杂而慢慢模糊,也可能被修正bug的权宜之计弄的面目全非。不信你找一个经过多次修改的程序看看,是不是满目疮痍,是不是都很难认出是你自己的作品了。这在多人参与的项目中更加严重,每个人有不同的代码风格,经过多次杂交后,你肯定认不出你的代码是骡子是马,还是四不像了。随着程序的慢慢成长,原来有些函数体会慢慢膨胀,需要拆分;有些原来简单的功能块四处都需要,应该被提炼成函数或者方法,等等。现在不重构,未来等到代码复杂到无法控制的时候,重构的工作就会变得更加困难。我见过最强的案例是,一个几千行的电子辞典配套联机软件,经过无数次的改版,变成了一个几乎无法维护的主窗体的cpp有1万8千行的怪物。最后经过复杂的重构,才变成一个出新版本只需要新增一个驱动程序的可以维护的几千行的程序。

郝培强:银杏技术咨询创始合伙人,网名Tinyfool,技术方向是全文检索,搜索引擎优化,网站架构设计等。 银杏技术咨询的主要业务是帮助客户的网站改进技术,提高网站性能和反应速度,解决门槛性技术问题,从而提高用户满意度。

关于郝培强www.yinxingtech.com/team.htm

关于银杏技术咨询www.yinxingtech.com/

我就是初学者,我觉得讲的很是有道理,转到这里,大家共同看看。

posted @ 2008-01-03 17:40 mimi_van 阅读(402) | 评论 (1)编辑 收藏