??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
专家点评Q?/font>从最q几q就业情冉|看,׃国内主要q是外包斚w需要大量的人才Q所以,Java未来几年的发展还是很好的QIBM、Oracle{大公司都一直在做这斚w的相关品,以及Java开源运动,Javaq属于青壮年期。只要学好了JavaQ待遇应该不是问题!而且Q据我们了解Q一些大公司正在原来C++的系l,往Java上面转!比如Q华为,诺基亚西门子{?/font> 如何解决q些问题呢?有识之士早已开始思考,需要徏立一U普遍认同的标准来结束这U无序和混ؕ。商业公?Netscape、Microsoft{?也终于认识到l一标准的好处,因此在W3CQW3C.orgQ的l织下,|站标准开始被建立Q?998q??0日发布XML1.0为标志)Qƈ在网站标准组l(webstandards.orgQ的督促下推q执行?/p>
单说Q网站标准的目的是Q?/p>
对于|站设计和开发h员来_遵@|站标准是使用标准Q对于你的网站用h_|站标准是最佳体验?/p>
对网站浏览者的好处Q?/p>
对网站所有者的好处Q?/p>
q样才能使自q|站不过ӞQ!Q!Q?br>打破“99%的网站都该被淘汰”Q!Q?/p>
1、企业应用开?/strong>
q里是JAVA的天圎ͼ大到全国联网的系l,到中小企业的应用解x案,JAVA都占有极为重要的C?/p>
2、网站开?/strong>
当然是JSP+Servlet+JavaBeanQ以及后来的StrutsQSpringQHibernate/IBatis{,一直以来都相当行
3、移动领?/strong>
典型的应用是手机游戏Q国内主要是q方面)Q这里是J2ME的天圎ͼ其实应用范围是很q的Q只是国内开发不够?/p>
JAVA已成为当今市面上最受欢q的~程软gQ对于处于信息高速发辄今天QJAVA技术已l无处不在,手机软g、手机JAVA游戏、电(sh)脑Y件等{。可以这栯Q只要你使用手机、电(sh)脑等?sh)子产品Q你׃用到跟JAVA有关的东ѝ?/p>
]]>
]]>
IT+理
官网学习(fn)站点
优秀技术网站链?/h3>
资料下蝲站点
生活工作站点
]]>
]]>
]]>
]]>
]]>
2、曾到北大青鸟成都金晨上?个月课,q了一把教师瘾Q?br> 3、参加了Bea、Sun、金蝶、东斚w等大公司的技术讨ZQ?br> 4、拿C三等学习(fn)奖学金,获得U大校庆50周年|页设计大赛二等奖,最x术奖
5、顺利通过毕业{辩
6、顺利签UsynnexQ拿到烦贝,IBM Global、冠、华为、成都中兴的offerQ?br> 7、研I了Struts、JMX、SCA、SDO、BPEL
8、当Ӟ生活中最值得提的是:和老婆相处融洽Q和家h相处融洽Q大安w体健康Q?br>ȝ来说Q成l喜人,明年再接再厉Q!Q!
]]>
采用|站标准的好?/h4>
]]>
Care About Your Craft
除非你在乎能否漂亮地开发出软gQ否则其它事情都是没有意义的?
2、思考!你的工作
Think!About Your Work
在你做某件事情的时候思考你在做什么。不间断地思考,实时地批判你的工作。这占据你的一些宝贉|_酬劳则是更ؓz跃地参与你喜爱的工作、感觉到自己在掌握范围日增的各种主题以及因感受到持箋的进步而欢愉。从长远来说Q你在时间上的投入将会随着你和你的团队变得更ؓ高效、编写出更易于维护的代码以及开会时间的减少而得到回报?
3、提供各U选择Q不要找y脚的借口
Provide Options,Don't Make Lame Excuses
不要说事情做不到Q要说明能够做什么来挽回局面。不要害怕提求,也不要害怕承认你需要帮助?
4、不要容忍破H户
Don't Live With Broken Windows
不要留着“破窗?#8221;Q低劣的设计、错误的决策、或者糟p的代码Q不修。发C个就修一个。如果没有够的旉q行适当的修理,采取某种行动防止q一步的破坏Qƈ说明情势处在你的控制之下?
如果你发C所在团队和目的代码十分漂亮——编写整z、设计良好,q且很优雅,?/em>不会x为第一个弄脏东西的人?
5、做变化的催化剂
Be a Catalyst for Change
你不能强qh们改变。相反,要向他们展示未来可能会怎样Qƈ帮助他们参与Ҏ(gu)来的创造?
设计Z可以合理要求的东西,好好开发它。一旦完成,拿l大家看Q让他们大吃一惊。然后说Q?#8220;要是我们增加...可能׃更好?#8221;假装那ƈ不重要。坐回椅子上Q等着他们开始要你增加你本来想要的功能。h们发玎ͼ参与正在发生的成功要更容易。让他们瞥见未来Q你p让他们聚集在你周围?
6、记住大图景
Remember the Big Picture
如果你抓一只青蛙放q沸水里Q它会一下子跛_来。但是,如果你把青蛙放进h里,然后慢慢加热Q青蛙不会注意到温度的缓慢变化,会呆在锅里,直到被煮熟?
不要像青蛙一栗留心大图景。要持箋不断地观察周围发生的事情Q而不只是你自己在做的事情?
7、质量成ؓ需求问?/strong>
Make Quality a Requirements Issue
你所制作的系l的范围和质量应该作为系l需求的一部分规定下来。让你的用户参与权衡Q知道何时止步,提供_好的软g?
8、定期ؓ你的知识资投资
Invest Regularly in Your Knowledge Portfolio
9、批判地分析你读到的和听到的
Critically Analyze What You Read and Hear
不要被供应商、媒体炒作、或教条左右。要依照你自q看法和你的项目的情况d信息q行分析?
10、你说什么和你怎么说同样重?/strong>
It's Both What You Say and the Way You Say It
11、DRY原则——不要重复你自己
DRY - Don't Repeat Yourself
pȝ中的每一知识都必须h单一、无歧义、权威的表示。与此不同的做法是在两个或更多地方表辑一事物。如果你改变其中一处,你必记得改变其它各处。这不是你能否记住的问题Q而是你何时忘记的问题?
12、让复用变得Ҏ(gu)
Make it Easy to Reuse
你要做的是营造一U环境,在其中要扑ֈq复用已有的东西Q比自己~写更容易。如果复用很Ҏ(gu)Qh们就会去复用。而如果不复用Q你们就会有重复知识的风险?
13、消除无关事物之间的影响
Eliminate Effects Between Unrelated Things
我们惌设计自Qself-containedQ的lgQ独立,h单一、良好定义的目的。如果组件是怺隔离的,你就知道你能够改变其中一个,而不用担心其余组件。只要你不改变组件的外部接口Q你可以放心:你不会造成波及整个pȝ的问题?
你得C个主要好处:提高生率与降低风险?
14、不存在最l决{?/strong>
There Are No Final Decisions
没有什么永q不变——而如果你严重依赖某一事实Q你几乎可以定它将会变化。与我们开发Y件的速度相比Q需求、用以及g变得更快。通过DRY原则?a >解?/a>以及元数据的使用Q我们不必做多关键的、不可逆{的决{。有许多Z设法保持代码的灵zL,而你q需要考虑l持架、部|及供应商集成等领域的灵zL?
15、用曛_Ҏ(gu)到目?/strong>
Use Tracer Bullets to Find the Target
曛_弹能通过试验各种事物q检查它们离目标有多q来让你q踪目标?
曛_弹代码含有Q何一D品代码都拥有的完整的错误查、结构、文档、以及自查。它只不q功能不全而已。但是,一旦你在系l的各组件之间实C端到端(end-to-endQ的q接Q你可以检查你ȝ标还有多q,q在必要的情况下q行调整。一旦你完全瞄准Q增加功能将是一件容易的事情?
16、ؓ了学?fn)而制作原?/strong>
Prototype to Learn
M带有风险的事物。以前没有试q的事物Q或是对于最l系l极其关键的事物。Q何未被证明的、试验性的、或有疑问的事物。Q何让你觉得不舒服的东ѝ都可以通过制作原型来研I。比如:架构Q已有系l中的新功能Q外部数据的l构或内容;W三方工hlgQ性能问题Q用L(fng)面设计等{?
原型制作是一U学?fn)经验,其h(hun)值ƈ不在于所产生的代码,而在于所学到的经验教训?
17、靠q问题领域编E?/strong>
Program Close to The Problem domain
计算a会媄响你思考问题的方式Q以及你看待交流的方式。用你的用户的语aq行设计和编码?
计算机科学的史诗
The Art of Computer Programming(TAOCP)
学习(fn)讨论|页
如果你认Z是一名真正优U的程序员……?span lang=EN-US>Knuth的《计机E序设计艺术》,如果你能L整套书的话,L(fng)我发一份你的简历?span lang=EN-US>--Bill Gates
q是一套集所有基法之大成的l典之作。当今Y件开发h员所掌握的绝大多数计机E序设计的知识都来源于此?span lang=EN-US>--Byte
Donald.E.Knuth( 唐纳?span lang=EN-US>.E.克努特,中文名高L(fng))是算法和E序设计技术的先驱者,是计机排版pȝTEX?span lang=EN-US>METAFONT的发明者,他因q些成就和大量创造性的影响p的著?span lang=EN-US>(19部书?span lang=EN-US>160论?span lang=EN-US>)而誉满全球。作为斯坦福大学计算机程序设计艺术的荣誉退休教授,他当前正全神贯注于完成其关于计算机科学的史诗性的七卷集。这一伟大工程?span lang=EN-US>1962q他q是加利尼亚理工学院的研究生时开始了?span lang=EN-US>
Knuth教授获得了许多奖和荣誉Q包括美国计机协会囄?/strong>(ACM Turing Award)Q美国前ȝ卡特授予的科学金?span lang=EN-US>(Medal of Science)Q美国数学学会斯蒂尔?span lang=EN-US>(AMS Steele Prize)Q以?span lang=EN-US>1996q?span lang=EN-US>11月由于发明先q技术荣L(fng)极受重的京都奖(KyotoPrize)。现与其?span lang=EN-US>Jill生活于斯坦福校园内?span lang=EN-US>
他的主页 http://www-cs-faculty.stanford.edu/~knuth/taocp.html
At the end of 1999, these books (The Art of Comupter Programming) were named among the best twelve scientific monographs of the century by American Scientist, along with: Dirac on quantum mechanics, Einstein on relativity, Mandelbrot on fractals, Pauling on the chemical bond, Russell and Whitehead on foundations of mathematics, von Neumann and Morgenstern on game theory, Wiener on cybernetics, Woodward and Hoffmann on orbital symmetry, Feynman on quantum electrodynamics, Smith on the search for structure, and Einstein's collected papers.
下蝲q套书的W一和第三册中文?/span> (阅读该书使用的Y件下?/span>. 该内Ҏ(gu)源于|络Q仅供参考学?span lang=EN-US>.如有用于商业目的Q后果自负;如有版权冲突Q来信告知,一定删?span lang=EN-US>. 再次声明Q该书来自网上其他书c下载类站点Q图书版权归原作者和?sh)子书制作者所有。请(zhn)预览该书后Q在24时内从计算Z该书删除?span lang=EN-US>)
下蝲q套书的W二册英文版 Q该内容来源于网l,仅供参考学?span lang=EN-US>.如有用于商业目的Q后果自负;如有版权冲突Q来信告知,一定删?span lang=EN-US>. 再次声明Q该书来自网上其他书c下载类站点Q图书版权归原作者和?sh)子书制作者所有。请(zhn)预览该书后Q在24时内从计算Z该书删除?span lang=EN-US>)
knuth 先生?lt;< 具体数学>> 下蝲(TAOCP 的数学基)
本书自第一版出版以来,已经成ؓ世界范围内广泛用的大学教材和专业h员的标准参考手册。本书全面论qC法的内容,从一定深度上늛了算法的诸多斚wQ同时其讲授和分析方法又兼顾了各个层ơ读者的接受能力。各章内容自成体p,可作为独立单元学?fn)。所有算法都用英文和伪码描述Q具备初步~程l验的h也可L。全书讲解通俗易懂Q且不失深度和数学上的严谨性?/span>
Topics covered: Overview of algorithms (including algorithms as a technology); designing and analyzing algorithms; asymptotic notation; recurrences and recursion; probabilistic analysis and randomized algorithms; heapsort algorithms; priority queues; quicksort algorithms; linear time sorting (including radix and bucket sort); medians and order statistics (including minimum and maximum); introduction to data structures (stacks, queues, linked lists, and rooted trees); hash tables (including hash functions); binary search trees; red-black trees; augmenting data structures for custom applications; dynamic programming explained (including assembly-line scheduling, matrix-chain multiplication, and optimal binary search trees); greedy algorithms (including Huffman codes and task-scheduling problems); amortized analysis (the accounting and potential methods); advanced data structures (including B-trees, binomial and Fibonacci heaps, representing disjoint sets in data structures); graph algorithms (representing graphs, minimum spanning trees, single-source shortest paths, all-pairs shortest paths, and maximum flow algorithms); sorting networks; matrix operations; linear programming (standard and slack forms); polynomials and the Fast Fourier Transformation (FFT); number theoretic algorithms (including greatest common divisor, modular arithmetic, the Chinese remainder theorem, RSA public-key encryption, primality testing, integer factorization); string matching; computational geometry (including finding the convex hull); NP-completeness (including sample real-world NP-complete problems and their insolvability); approximation algorithms for NP-complete problems (including the traveling salesman problem); reference sections for summations and other mathematical notation, sets, relations, functions, graphs and trees, as well as counting and probability backgrounder (plus geometric and binomial distributions).
误住:法D 是本教材 ?span lang=EN-US> TAOCP 是本史诗?/span>
两种不同Ҏ(gu)的实玎ͼ
鉴于|友的的指出Q我重新认真研究了一下四舍五入,最l给出正解法如下:
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* 本例通过对网上几U取四舍五入的研IӞq行了一一试。最l通过实验和理论得出round4为唯一正确的算法?br />
* 2008/10/13
*
* @author jamezhan
*
*/
public class RoundTest {
public static double round1(double v, int scale) {
if (scale < 0)
return v;
String temp = "#####0.";
for (int i = 0; i < scale; i++) {
temp += "0";
}
return Double.valueOf(new java.text.DecimalFormat(temp).format(v));
}
/**
* 该算法会出现中间q算后结果超qDouble.MAX_VALUEQ所以不推荐使用
* @param d
* @param scale
* @return
* @throws Exception
*/
public static double round2(double d, int scale) throws Exception {
if (scale < 0)
return d;
long temp = 1;
for (int i = scale; i > 0; i--) {
temp *= 10;
}
if (Math.abs(d * temp) > Double.MAX_VALUE)
throw new Exception("data is too big or too small");
d *= temp;
long dl = Math.round(d);
return (double) (dl) / temp;
}
public static double round3(double v, int scale) {
BigDecimal value = new BigDecimal(v);
float actualTax = value.setScale(scale, BigDecimal.ROUND_HALF_UP).floatValue();
return actualTax;
}
public static double round4(double v,int scale)
{
if(scale<0){
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void testRound1(double d, int scale) {
System.out.println("==========================");
System.out.println("data:"+ d + "; scale:"+scale);
double a = round1(d, scale);
System.out.println(a);
DecimalFormat df = new DecimalFormat();
System.out.println("formatted:"+df.format(a));
}
public static void testRound2(double d, int scale) {
try {
System.out.println("==========================");
System.out.println("data:"+ d + "; scale:"+scale);
double a = round2(d, scale);
System.out.println(a);
DecimalFormat df = new DecimalFormat();
System.out.println("formatted:"+df.format(a));
} catch (Exception e) {
System.err.println( e.getMessage() );
}
}
public static void testRound3(double d, int scale) {
try {
System.out.println("==========================");
System.out.println("data:"+ d + "; scale:"+scale);
double a = round3(d, scale);
System.out.println(a);
DecimalFormat df = new DecimalFormat();
System.out.println("formatted:"+df.format(a));
} catch (Exception e) {
System.err.println( e.getMessage() );
}
}
public static void testRound4(double d, int scale) {
try {
System.out.println("==========================");
System.out.println("data:"+ d + "; scale:"+scale);
double a = round4(d, scale);
System.out.println(a);
DecimalFormat df = new DecimalFormat();
System.out.println("formatted:"+df.format(a));
} catch (Exception e) {
System.err.println( e.getMessage() );
}
}
public static void main(String[] args) throws Exception {
System.out.println("****************************** Test round1 ******************************");
testRound1(Double.MAX_VALUE,2);
testRound1(1.264,2);
testRound1(-1.264,2);
testRound1(1.265,2);//wrong result
testRound1(-1.265,2);//wrong result
testRound1(1.266,2);
testRound1(-1.266,2);
testRound1(10224948.265,2);//wrong result
testRound1(-10224948.265,2);//wrong result
testRound1(-Double.MAX_VALUE, 2);
System.out.println("****************************** Test round2 ******************************");
testRound2(Double.MAX_VALUE,2);
testRound2(1.264,2);
testRound2(-1.264,2);
testRound2(1.265,2);//wrong result (java表示数0.1的问题导致的 1.265表示?.2599999904632568)
testRound2(-1.265,2);//wrong result (׃round法是先?.5再运,所以d数时且最后一位小Cؓ5时结果是不正的)
testRound2(1.266,2);
testRound2(-1.266,2);
testRound2(10224948.265,2);
testRound2(-10224948.265,2);//wrong result
testRound2(-Double.MAX_VALUE, 2);
System.out.println("****************************** Test round3 ******************************");
testRound3(Double.MAX_VALUE,2);//wrong result
testRound3(1.264,2);
testRound3(-1.264,2);
testRound3(1.265,2);
testRound3(-1.265,2);
testRound3(1.266,2);
testRound3(-1.266,2);
testRound3(10224948.265,2);//wrong result
testRound3(-10224948.265,2);//wrong result
testRound3(-Double.MAX_VALUE, 2);//wrong result
System.out.println("****************************** Test round4 ******************************");
testRound4(Double.MAX_VALUE,2);
testRound4(1.264,2);
testRound4(-1.264,2);
testRound4(1.265,2);
testRound4(-1.265,2);
testRound4(1.266,2);
testRound4(-1.266,2);
testRound4(10224948.265,2);
testRound4(-10224948.265,2);
testRound4(-Double.MAX_VALUE, 2);
}
}