“学生从当前教育实践课E中获取的技能不以应付今日软g行业的发展(其是安全和安全目的斚wQ。更不幸的是Q与外部行业需要过于匹配了Q我们训l了许多Ҏ(gu)被取代的软g工程师?#8221;
ؓ注意的是Q文中以“Java作ؓW一~程语言的诸多缺?#8221;为小标题对Javaq行了批判:
׃Java在Web应用领域的流行,以及初学者容易生成图形化~程QJava成ؓ入门评中用最普遍的语a。从此后学生发现很难在一个没有图像界面的语言上编写程序,不清楚源E序和硬件如何执行之间的关系Q更h危险性的是他们一点也不了解指C器的语义,q得用C语言~程也成为挑战?#8221;
~程的真正的妙之处在于Q将复杂的过E羃减成非常的一个简单操作?/span>Javaq没有体现这U美妙,它鼓励采?#8220;问题解决Qproblem-solvingQ?#8221;的方式,使程序员像五金店的水管工hQ到处翻腾抽屉、阁子最后找出需要的零g。最l的l果使得学生知道如何一些简单的E序l到一P而对~程却一无所知?strong>而且q早C用Java库和框架有一个更大的~陷
Q它使得学生很难对编写的东西形成q行旉成本Qrun-time costQ的概念Q因Z们很隄道究竟哪U方法的调用是有效的?/font>我们为此亦找C一些证据?strong>Bjarne StroustrupQ被誉ؓC++之父Q?/strong>在d州农工大?Texas A&M University )的报告中Q指Z工业对于q种方式来多的不满,而且Bjarneq样_“从工业那里我看到了许多许多对此(Java作ؓW一~程语言来用)的抱怨,其是AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin{等?#8221;另外在文中,q两位教授们认ؓ真正的程序员能够使用M语言QCQJavaQLispQAdaQ。【呐不喊?/span>
遇到问题的时候:
1Q不要怨天怨地。出了问题,当然有可能是pȝ的bugQAPI的问题,但是那些几率往往比你犯低U错误的几率要低多了Q先从自pn上找原因Q是不是自己写错了?
2Q要掌握工具?/strong>最低限度你要会写LogQ最好是Log和调试器l合。好 的工具可以大大的提高效率。以前有我说QDll不能调试Q我发现可以Q有多线E不能调试,我发现可以;有h说COM不能调试Q我发现可以Q有 IE插g不能调试Q我发现可以Q有OE插g不能调试Q我发现也可以。当Ӟ你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入E序Q一个组都没?一个仿真器和调试器Q但是至可以用Log嘛,无非是麻烦点?/font>
3Q分析问题要有逻辑?/strong>遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的?
4Q要学会隔离问题?/strong>问题涉及到的代码多Q越难以理解Q问题越难以解决。遇到这L情况Q可以利用Log或者调试器Q一行代码一行代码的l它们洗清嫌疑,q样很快你就可以扑ֈ出问题的地方。如果代码特别长Q程序特别复杂,可以用二分法来做Q效率很高?/font>
5Q千万不要懒惎ͼ不要事事求别人?/strong>一ơ复杂的调试q程像一部侦探剧Q如果你有非常好的逻辑性,那这部剧的主角就是福摩斯,剧情一定非常精彩。我说这个是有巨大风险的Q说真的我帮东西Z瘄Q很有意思。但是我q是要告诉大Ӟ一ơ高隑ֺ的调试之后,你的满感绝对不亚于写了一个伟大的E序?/font>
要想不遇到问题,写代码的时候:
1Q要对写出来的代码负责?/strong>我很佩服那些写代码写100行都不执行一ơ的 高手Q如果他们最后不被低U错误困扰的话我更加的佩服了。我写程序几乎是写一行两行就要执行一ơ,每句话我都要保执行效果跟我的预期一致。没错这样写的时?可能慢一些,但是调试的时候很LQ我可以很简单的定哪些代码l对没有问题。所以我写代码整体速度比一般h高。很多h学习C西的时候喜Ƣ把例子抄一遍,q行一下,Ҏ(gu)Q再q行。我喜欢一句一句的抄例子,抄一句两句执行一ơ,q样可以把例子透彻的理解,而且很难会遇到出C问题找不到原因的时候?
2Q函C功能块不要过ѝ?/strong>我认为我的智商ƈ不高Q我很难接受一个程序的一个函C或者一个功能块越3屏(当然逻辑真的有那么复杂除外,你会发现是单的逻辑是Ҏ(gu)被h写的冗长Q。很多h寚w向对象耳熟能详Q对装l承看v来驾d熟。但是动不动写出来个函C长的程序。这像写本书从头到不点句号一P会篏死读者的。自q的时候,估计也会被篏的喘不过来气。这是我对基教育的微词所在,他们q教会学生写函数都没教会Q虽然表面上他们q面向对象这么高q东西都教?
3Q羃q要寏V?/strong>q点很重要,虽然大部分语a不是像Python那样用羃q来军_逻辑块的位置Q但是h看到~进的时候,L会以些羃q位|跟逻辑相关。尤其是在有大量的ifelse或者f(xi)or循环{等的嵌套逻辑的时候,如果~进错了Q可能会直接让h把程序的逻辑读错。所以我拿到别h的代码,W一件事情就是整理羃q。我见过一些比较优U的页面工E师Q他们会在divl束的位|用注释写上q个div的idQ这样层U关pd一目了然了?
郝培强:银杏 关于郝培?/font>Q?font face="Arial">www.yinxingtech.com/team.htm
4Q不断重构?/strong>随着E序的不断修改,有些部分会不断的增长Q原来看着清晰的架构可能因为问题的复杂而慢慢模p,也可能被修正bug的权宜之计弄的面目全非。不信你找一个经q多ơ修改的E序看看Q是不是满目疮痍Q是不是都很难认出是你自q作品了。这在多人参与的目中更加严重,每个人有不同的代码风|l过多次杂交后,你肯定认不出你的代码是骡子是马,q是四不像了。随着E序的慢慢成长,原来有些函数体会慢慢膨胀Q需要拆分;有些原来单的功能块四处都需要,应该被提炼成函数或者方法,{等。现在不重构Q未来等C码复杂到无法控制的时候,重构的工作就会变得更加困难。我见过最强的案例是,一个几千行?nobr>?sh)子辞?/strong>配套联机软gQ经q无数次的改版,变成了一个几乎无法维护的ȝ体的cpp??千行的怪物。最后经q复杂的重构Q才变成一个出新版本只需要新增一个驱动程序的可以l护的几千行的程序?/p>
关于银杏技术咨?/font>Q?font face="Arial">www.yinxingtech.com/
我就是初学者,我觉得讲的很是有道理Q{到这里,大家共同看看?/font>
<?xml version="1.0" encoding="UTF-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>mydata</alias>
<driver-url>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=AD4U
</driver-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<driver-properties>
<property name="user" value="sa" />
<property name="password" value="sa" />
</driver-properties>
<maximum-connection-count>50</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
q里Qmydata?span style="color: #0000ff">别名
到此proxool的配|就完成了,建立链接旉要如下代码:
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
Connection conn = DriverManager.getConnection("proxool.mydata");
// mydata是刚才你proxool.xml 里,一个配|的别名
// 一个proxool.xml 文g里可以配|多?别名不同的数据库q接应用
其它配置属性:
maximum-connection-lifetime 最大连接生命周?nbsp; 默认|4时
maximum-active-timeQ?nbsp; 最大活动时?nbsp; 默认|5分钟
maximum-connection-count 最大连接数 默认|15?br />
minimum-connection-count 最连接数 默认|5?br />
********************************************************************
然后是应用了,我在应用的时候,发现tomcat提示了这L错误Q?br />
Attempt to refer to a unregistered pool by its alias 'mydata'?--------> 是说proxool数据库连接池未配|成?br />
如果你也Zq样的错误,大都是因?proxool.xml 和web.xml 没有配置好,Q我的错处在,上面提到的,忘了修改 MyEclipse 里的 web.xmlQ,所以还是要耐心查一下你的配|? 一定会成功的?br />
如果成功了,启动tomcat 的时候,可以看见这L信息Q?/span>