- 浏览: 212232 次
- 性别:
- 来自: 上海
最新评论
-
yangdefeng95802:
也不换个行,这个谁爱看,估计你自己都不爱看!
CXF2.0.8+Spring+Hibernate -
l1i2n3y4u5n6:
你没有解惑,让我很迷惑
Apache2.2和tomcat集成更加简单了 -
micropang:
LJ
CXF2.0.8+Spring+Hibernate -
mayufenga1:
更本没说明白
Apache2.2和tomcat集成更加简单了 -
highriver:
什么公司,这样的人性。
Learning Day
文章列表
呵呵,看到JDon上正在讨论j2se基础的重要性,忍不住也来说两句,可以这么说,我是完全反对banq的说法的。
我不知道banq的功底到底如何,但是对于指导初学者,我觉得他完全不合格。
编程,在大多数情况下是简单的,这个可以从印度大量使用高中生编程照样可以开发出稳定大型的系统可以看出来,而且以我的经验来看,做对日外包也是一样,因为他们的设计文档已经写得足够的详细,他们提供的底层框架已经足够傻瓜(和设计文档相配合),在这种情况下,编程并不需要太多的技能,显现水平的方式就是对框架API和底层API的熟练程度,熟悉了那些API差不多就可以了(而且本来就有详细的API文档),只要可以编译通过,基本上就是 ...
- 2007-04-10 07:33
- 浏览 2812
- 评论(3)
有时候感觉自己做事情太精益求精了,比如说写代码,我写的时候不注意格式,但是写完存盘之前肯定要格式化一下再存盘,另外也很注意是不是有警告信息,我自己维护的代码是肯定没有警告的,不使用已经deprecated的方法,不导入任何不使用的包或者类,如果一个类实现了Serializable,那么一定要给那个类生成一个serialVersionUID,如果看到其它的不符合这些的代码,就感觉有点厌烦,好在我一般看的开源的一些代码做得都还不错,厌烦得时候并不是很多,但是项目里面得代码就不太一样了,一共有9577个警告,这个还是关闭了XML和JSP的校验的结果,另外我们的资源文件里面的重复的主键非常的多,使用我常 ...
- 2007-04-10 06:05
- 浏览 1406
- 评论(0)
按照原先的计划,这个系列只应该有四篇,但是后来打算多写一些,把这个问题研究透彻,所以出现了总结篇先于其它篇的情况。
这次我们按照总结篇中提到的方法实际演示下代码覆盖工具如何帮助我们优化程序提高性能,先给出我们未经好好优化的程序:
package com.jiehoo.util;
public class GoogleFn {
private static final int MAX = 2600002;
private static long start = System.currentTimeMillis();
private static int[] bases = ...
- 2007-04-09 07:29
- 浏览 3759
- 评论(1)
上次已经说了fn的实现不能用来查找符合条件的n,因为这样做比前面的第一个例子中的性能比较差的那个还要差,原因就是有太多的重复计算,如果只是计算一个指定的数的结果,那么那个实现是无与匹敌的。但是我们是讲的性能优化,所以,我们就用它来做,放慢速度,然后使用其它的技巧来提高性能,这次的方法就是简单的使用缓存:
public class GoogleFn {
private static final int MAX = 2600002;
private static long start = System.currentTimeMillis();
private static i ...
- 2007-04-09 02:59
- 浏览 4001
- 评论(0)
其实很多问题一旦涉及到数学问题或者数据处理密集型问题,那么最终显现神威的就是数学公式,这个面试题也是这类问题,所以如果我们能够推导出一个数学公式就是最理想的,在前面的例子中,我们进行了一些深入的分析,根据前面的例子,你可能会尝试把步长从100扩展到1000或者10000,但是实际上这个方法遇到了瓶颈,因为循环嵌套的层次太多,计算公式太复杂也会导致问题。如果我们最开始尝试的时候把全部的f(n)的结果打印出来,你会发现这样的内容:
f(9) = 1
f(99) = 20
f(999) = 300
f(9999) = 4000
……
这个是我们的第一个规律:位数乘以((位数-1)的10的次方)。
...
- 2007-04-09 00:44
- 浏览 4322
- 评论(0)
在例子四的基础上,我们可以进行更加深入的分析,我们还是以100为例,我们其实在大部分情况下可以省略循环,如果数字的百位数以上包含1的个数为0,而十位数不为1,那么当个位数大于1以后,我们可以中断底层的循环,这样我们又节省了很多的运算:
public class GoogleFn {
private static int MAX = 1320000000;
private static int MAX2 = MAX / 10;
private static int MAX3 = MAX2 / 10;
private static int count(int n) {
int ...
- 2007-04-07 01:34
- 浏览 4102
- 评论(3)
续 一位朋友辞职引起的思考
(tags: 创业)
(转)与您共享 20个优秀的CSS构架网站
(tags: CSS 构架 网站 范例)
- 2007-04-06 14:19
- 浏览 1135
- 评论(0)
呵呵,说了这么多,到底怎么优化性能还是没有说多少,而且一个产品的代码比这个例子复杂得多,怎么才能优化产品代码呢?
很简单,找到性能瓶颈,而大部分的性能瓶颈都有一个特点:被执行的次数太多。一个耗时2分钟的操作,如果系统运行一天才需要运行一次,那么我们根本就不要去理会它,如果一个操作耗时2秒,但是一般运行一天它要被执行几千亿次,那么你就要小心了。
如何才能知道系统中的哪些代码被执行的次数最多呢?有很多工具可以,有的是挂到系统上一起运行,有的是可以单独运行,但是我推荐的方法就是使用单元测试工具和代码覆盖工具,运行所有的单元测试,查看代码覆盖报告中被执行的次数最多的那些语句,看看他们是否可以被优化,或者 ...
- 2007-04-06 08:44
- 浏览 3939
- 评论(3)
其实在例子二的基础上,我们进一步的分析,可以把缓存10个结果换成缓存100个结果,性能可以得到进一步提升:
public class GoogleFn {
private static int MAX = 13200000;
private static int MAX2 = MAX / 10;
private static int MAX3 = MAX2 / 10;
private ...
- 2007-04-06 08:30
- 浏览 2935
- 评论(0)
对于任何语言来讲,循环永远是非分布式系统的性能的最大杀手,循环中的任何一个简单的语句对性能都是有影响的,只是影响的大小不同而已。第一个例子中的影响是比较大的,不同的实现方法的时间开销不同,然后这个微小的差异被循环次数放大后就非常的明显(3倍),而第二个例子,其本质是减少了循环执行的次数,虽然总的循环次数是一样的,但是最耗时的操作的执行次数被减少到1/10,所以产生的差异是非常巨大的(8倍)。我们再来看一个很不起眼的微小差异带来的影响:
public class GoogleFn {
private static int MAX = 132000000;
private stati ...
- 2007-04-06 08:01
- 浏览 4117
- 评论(3)
对于任何语言来讲,循环永远是非分布式系统的性能的最大杀手,循环中的任何一个简单的语句对性能都是有影响的,只是影响的大小不同而已。第一个例子中的影响是比较大的,不同的实现方法的时间开销不同,然后这个微小的差异被循环次数放大后就非常的明显(3倍),而第二个例子,其本质是减少了循环执行的次数,虽然总的循环次数是一样的,但是最耗时的操作的执行次数被减少到1/10,所以产生的差异是非常巨大的(8倍)。我们再来看一个很不起眼的微小差异带来的影响:
public class GoogleFn {
private static int MAX = 132000000;
private stati ...
- 2007-04-06 08:01
- 浏览 1496
- 评论(0)
前面我们已经说了字符串运算和数学运算对性能的巨大影响,接下来我们看看分析程序,多思考给我们带来的好处。
如果我们做一个简单的分析就可以知道,在尾数从0到9的连续十个数字中,只有尾数为1的数字的1的个数比其它的数字多,那么我们可以以10个数为单位进行分隔,计算尾数为0的数字包含1的个数,其它的9个值就以此为基础计算:
public class GoogleFn {
private static int MAX = 13200000;
private static int MAX2 = MAX / 10;
private static int count(int n) {
...
- 2007-04-06 07:24
- 浏览 3366
- 评论(1)
看到JavaEye上的几个人在讨论算法问题,其中一个就是Google的一个面试题,我也试了一下,而且可能比一般人试得程度更深一些,借这个题目简单的说说几个性能问题。这个是第一个,后面还会继续几个其它的讨论。讨论只是提点一下,主要还是要你自己读源代码并比较不同的实现为什么会有这么大的差别。
注意,程序的运行结果是在JDK1.4.2上的,其它版本的JDK的运行结果可能稍有不同。
先看代码:
public class GoogleFn {
private static int MAX = 13200000;
private static int count1(int number) { ...
- 2007-04-06 06:55
- 浏览 6695
- 评论(6)
为什么要学习算法-数据结构和算法
(tags: 数据结构 算法)
Iterator vs Visitor,PullvsPush
(tags: Iterator Visitor)
Cache Insight
(tags: Cache)
Cache的选择以及特性建议
(tags: Cache)
误打误撞碰上一个绝好的Web开发IDE:aptana
(tags: aptana web 开发 IDE)
- 2007-04-05 14:21
- 浏览 1061
- 评论(0)
昨天经历的惟一的一件值得高兴的事情就是把房产证拿到手了,把中介的钱付了,物业也过户了,还付了一年的物业费,一个平方4毛5每月。
这次买房和装修的过程中,买房我们非常的小心,因为我们之前听了很多关于二手房买卖的陷阱,我老婆还在一个房地产网站公司里面做过一段时间,所以一路下来我们非常小心,几乎就是谁的话都不信(中介和上家),一定要按照正规的流程走,有一次还特意晚上跑到上家的家里问她的女儿是否同意卖房,因为之前我们从来没有见过她的女儿,只是上家说女儿在读书,很忙。
因为这次买房还算比较顺利,到装修前其实都没有遇到真正的问题,中介和上家说的其实都是实话,所以这次装修老婆说倾向于让那个老板装,我开始很担心 ...
- 2007-04-05 05:41
- 浏览 1011
- 评论(0)