当前位置:编程学习 > JAVA >>

推荐几篇不靠谱的帖子

不知何故,经常看到各种不靠谱帖子满天飞。试举几例:

Java编程中“为了性能”需做的26件事

Java父类与子类的 内存引用讲解

java中的各种数据类型在内存中存储的方式

深度解析Java内存的原型

在论坛经常看到有人引这些帖子上的不靠谱东西来误人子弟,好伤心。

还有哪些不靠谱的,大家一起补充吧……
  --------------------编程问答-------------------- 我去瞧瞧。

楼主应该顺便指出各贴错误之处。不然,不知道的同学看了也白看,依然不知道。那你这300分就打水漂了,没起到作用。 --------------------编程问答-------------------- 一般看不懂的东西我都不看。。。 --------------------编程问答--------------------
引用 楼主 ZangXT 的回复:
不知何故,经常看到各种不靠谱帖子满天飞。试举几例:

Java编程中“为了性能”需做的26件事

Java父类与子类的 内存引用讲解

java中的各种数据类型在内存中存储的方式

深度解析Java内存的原型

在论坛经常看到有人引这些帖子上的不靠谱东西来误人子弟,好伤心。

还有哪些不靠谱的,大家一起补充吧……
 

求楼主详解 --------------------编程问答-------------------- 小菜鸟一枚 求详细解释!!!! --------------------编程问答-------------------- 性能篇:
1 过度使用单例会给代码的可维护性带来毁灭性打击。实际情况是单例应该尽量避免而不是提倡
2 静态变量可以节省内存,当用则用。另外b = null不就好了什么生命周期与A同步啊
3 创建对象有时候是为了代码书写方便,有时候是为了保证类的immutability。而且JVM见到new的时候并不一定会创建对象
4 尽量用final并不是为了性能,而且事实上即便是最简单的final方法编译器也不会内联。final String是因为String是一个特殊而且重要的对象,不应该改变它的行为
5 局部变量当用则用
6 synchronize方法应该用一个锁对象代替,不只是缩小
13 那不是重复计算
public int size() {
    return size;
}

14 这看上去是不必要的创建,而事实上如果A是一个简单的对象(默认构造函数),单纯new A();并不会创建它
20 用二维数组是因为有用,而不是因为我想写一个烂代码
26 异常也是当用则用。要注意的是异常只能拿来处理真的异常,而不是正常的业务逻辑中的条件分支 --------------------编程问答-------------------- 前来支持下, --------------------编程问答-------------------- 好久不见你发帖了啊
看来自己也要专注一下这些基础的东西啦 --------------------编程问答-------------------- lz可否解释一下哪些地方不靠谱?  --------------------编程问答-------------------- 强烈谴责和鄙视误人子弟的人!
希望各种大神,采取一定的手段和必要的措施,来制止这种行为! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 多谢lz的好心  我是来看回复的... --------------------编程问答--------------------
引用 5 楼 lcf 的回复:
性能篇:
1 过度使用单例会给代码的可维护性带来毁灭性打击。实际情况是单例应该尽量避免而不是提倡
2 静态变量可以节省内存,当用则用。另外b = null不就好了什么生命周期与A同步啊
3 创建对象有时候是为了代码书写方便,有时候是为了保证类的immutability。而且JVM见到new的时候并不一定会创建对象
4 尽量用final并不是为了性能,而且事实上即便是最简单的final方法编译器也不会内联。final String是因为String是一个特殊而且重要的对象,不应该改变它的行为
5 局部变量当用则用
6 synchronize方法应该用一个锁对象代替,不只是缩小
13 那不是重复计算
public int size() {
    return size;
}

14 这看上去是不必要的创建,而事实上如果A是一个简单的对象(默认构造函数),单纯new A();并不会创建它
20 用二维数组是因为有用,而不是因为我想写一个烂代码
26 异常也是当用则用。要注意的是异常只能拿来处理真的异常,而不是正常的业务逻辑中的条件分支

顶。

核心问题是:
1.用15年前的眼光看java。
2.用所谓“性能”为出发点影响设计。
3.光说不profiling。 --------------------编程问答--------------------
引用 12 楼 ZangXT 的回复:
Quote: 引用 5 楼 lcf 的回复:

性能篇:
1 过度使用单例会给代码的可维护性带来毁灭性打击。实际情况是单例应该尽量避免而不是提倡
2 静态变量可以节省内存,当用则用。另外b = null不就好了什么生命周期与A同步啊
3 创建对象有时候是为了代码书写方便,有时候是为了保证类的immutability。而且JVM见到new的时候并不一定会创建对象
4 尽量用final并不是为了性能,而且事实上即便是最简单的final方法编译器也不会内联。final String是因为String是一个特殊而且重要的对象,不应该改变它的行为
5 局部变量当用则用
6 synchronize方法应该用一个锁对象代替,不只是缩小
13 那不是重复计算
public int size() {
    return size;
}

14 这看上去是不必要的创建,而事实上如果A是一个简单的对象(默认构造函数),单纯new A();并不会创建它
20 用二维数组是因为有用,而不是因为我想写一个烂代码
26 异常也是当用则用。要注意的是异常只能拿来处理真的异常,而不是正常的业务逻辑中的条件分支

顶。

核心问题是:
1.用15年前的眼光看java。
2.用所谓“性能”为出发点影响设计。
3.光说不profiling。

学习了学习了~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 同9楼,强烈谴责和鄙视误人子弟的人! --------------------编程问答-------------------- --------------------编程问答-------------------- 略看了一下这些文章,相当扯淡,他们的都只是自己臆断的去理解java的机制和运行原理,没有实际经验,也不曾做过学习和研究,自以为懂一点就乱发文章。如果说哪里不对,我想说,除了少部分基本的地方,一些深入到内存,运行原理的东西,基本上都是错的。特别是那个说继承的,简直就是扯淡到极点,说子类对象里面会有父类对象,很明显他不明白,调用构造函数不等于生成对象。 --------------------编程问答-------------------- 差点就看了... --------------------编程问答-------------------- 呵呵  谢谢分享 --------------------编程问答--------------------
引用 19 楼 zhouyou145 的回复:
呵呵  谢谢分享


+1 --------------------编程问答--------------------
引用 17 楼 spiniper 的回复:
略看了一下这些文章,相当扯淡,他们的都只是自己臆断的去理解java的机制和运行原理,没有实际经验,也不曾做过学习和研究,自以为懂一点就乱发文章。如果说哪里不对,我想说,除了少部分基本的地方,一些深入到内存,运行原理的东西,基本上都是错的。特别是那个说继承的,简直就是扯淡到极点,说子类对象里面会有父类对象,很明显他不明白,调用构造函数不等于生成对象。


话说“栈有一个很重要的特殊性,就是存在栈中的数据可以共享”是最有创造性的理论发明了,如果这些人能创造性地发明一个实现该理论的jvm就更好了。 --------------------编程问答--------------------
引用 17 楼 spiniper 的回复:
略看了一下这些文章,相当扯淡,他们的都只是自己臆断的去理解java的机制和运行原理,没有实际经验,也不曾做过学习和研究,自以为懂一点就乱发文章。如果说哪里不对,我想说,除了少部分基本的地方,一些深入到内存,运行原理的东西,基本上都是错的。特别是那个说继承的,简直就是扯淡到极点,说子类对象里面会有父类对象,很明显他不明白,调用构造函数不等于生成对象。

还有把this和super当成对象成员的  --------------------编程问答-------------------- 网上到处充斥着这样的装逼贴,迎合了大量喜爱吃快餐的小白. 

真心想学习的还是看书吧. --------------------编程问答--------------------
引用 23 楼 rainbowsix 的回复:
网上到处充斥着这样的装逼贴,迎合了大量喜爱吃快餐的小白. 

真心想学习的还是看书吧.

不是说楼主的贴, 指的是楼主举例的那些贴.
--------------------编程问答-------------------- 感谢楼主,友情分享! --------------------编程问答-------------------- 原来是这样呐,看看先 --------------------编程问答--------------------
引用 22 楼 ZangXT 的回复:
Quote: 引用 17 楼 spiniper 的回复:

略看了一下这些文章,相当扯淡,他们的都只是自己臆断的去理解java的机制和运行原理,没有实际经验,也不曾做过学习和研究,自以为懂一点就乱发文章。如果说哪里不对,我想说,除了少部分基本的地方,一些深入到内存,运行原理的东西,基本上都是错的。特别是那个说继承的,简直就是扯淡到极点,说子类对象里面会有父类对象,很明显他不明白,调用构造函数不等于生成对象。

还有把this和super当成对象成员的 


说到那个jvm的实现,我想可能是性能问题无法得到很好的解决吧。
至于this和super,他们很多时候根据自己的理解来判断,这本身没什么错,但是他们仅仅只是去判断而不去验证,因此得出错误的结论,这样也就罢了,还发出来让人嘲笑,实在是不应该。 --------------------编程问答-------------------- 其实,对有些能帮助理解java语言表象的“错误解释”不必太当真。

如果,某个理解,连java语法基础都颠覆了的话........ --------------------编程问答-------------------- 刚注册啊,我也没怎么看。。。 --------------------编程问答--------------------
引用 28 楼 shine333 的回复:
其实,对有些能帮助理解java语言表象的“错误解释”不必太当真。

如果,某个理解,连java语法基础都颠覆了的话........

Thinking In Java 那本书本身的问题以及读者不求甚解的原因,也带了不少混乱。 --------------------编程问答-------------------- 谢谢楼主,支持下。 --------------------编程问答-------------------- 谢谢楼主,支持下。 --------------------编程问答-------------------- 支持楼主.......... --------------------编程问答-------------------- 好久不见zxt大侠发帖 --------------------编程问答--------------------
顶楼主,有一次同事摘抄了网上的一些性能优化的文章给我看,只看了一眼,就发现一条:
尽量少使用枚举类型,因为它比起int常量会占据很多内存。

怎么跟同事解释这玩意呢,单纯的内存占用确实是比基本类型要多,无奈翻出<Effective java>一书,翻出其中的一些建议才说服了同事,最终还发现那篇文章很多观点和Effective java中是相反的。 --------------------编程问答--------------------
引用 35 楼 dr8737010 的回复:

顶楼主,有一次同事摘抄了网上的一些性能优化的文章给我看,只看了一眼,就发现一条:
尽量少使用枚举类型,因为它比起int常量会占据很多内存。

怎么跟同事解释这玩意呢,单纯的内存占用确实是比基本类型要多,无奈翻出<Effective java>一书,翻出其中的一些建议才说服了同事,最终还发现那篇文章很多观点和Effective java中是相反的。

最神奇的是,转发这些帖子的人有的还号称看过Effective Java。 --------------------编程问答-------------------- 作为其中的受害着,赞一个 --------------------编程问答-------------------- 我一直无法理解js中
function test(){
    this.a=function(){
        return "";
    }
}
test.prototype.a=function(){
  return "";  
};
var test={
    a:function(){
        reurn "";
    };
};
他们的本质区别 --------------------编程问答-------------------- 支持楼主!!! --------------------编程问答--------------------
引用 38 楼 weilimicrver 的回复:
我一直无法理解js中
function test(){
    this.a=function(){
        return "";
    }
}
test.prototype.a=function(){
  return "";  
};
var test={
    a:function(){
        reurn "";
    };
};
他们的本质区别

一个是函数对象,一个是普通对象,怎么会没区别? --------------------编程问答-------------------- 支持楼主.谢谢分享. --------------------编程问答-------------------- 支持楼主.谢谢分享. --------------------编程问答--------------------
引用 40 楼 lcf 的回复:
Quote: 引用 38 楼 weilimicrver 的回复:

我一直无法理解js中
function test(){
    this.a=function(){
        return "";
    }
}
test.prototype.a=function(){
  return "";  
};
var test={
    a:function(){
        reurn "";
    };
};
他们的本质区别

一个是函数对象,一个是普通对象,怎么会没区别?


this.a;
test.prototype.a;
var test={
    a:
? --------------------编程问答--------------------
引用 43 楼 weilimicrver 的回复:
Quote: 引用 40 楼 lcf 的回复:

Quote: 引用 38 楼 weilimicrver 的回复:

我一直无法理解js中
function test(){
    this.a=function(){
        return "";
    }
}
test.prototype.a=function(){
  return "";  
};
var test={
    a:function(){
        reurn "";
    };
};
他们的本质区别

一个是函数对象,一个是普通对象,怎么会没区别?


this.a;
test.prototype.a;
var test={
    a:
?

Let me show you some magic:
function base () { }
test.prototype.a = function () {return "";}
function extended () {}
extended.prototype = new base();
var extObj1 = new extended();
var extObj2 = new extended();

alert (extObj1.a()); // ""
extObj1.a = function() { return "haha";}
alert (extObj1.a()); // "haha"

// here is the magic part
base.prototype.a = function() {return "hey, here is the magic!";}
alert(extObj2.a()); // "hey, here is the magic!"
alert(extObj1.a()); // "haha"


简单来说,新建对象的属性是prototype的属性的引用,改变了prototype对象,新建的对象也被改变,并且这种改变是可传递的。如果是
function test() {
  this.a = function() {return "";}
}

你就没有这种改变prototype的属性就影响到所有实例对象的便利了

好啦好啦我知道这里是JavaSE板 --------------------编程问答-------------------- 不明觉厉。。 --------------------编程问答--------------------
引用 44 楼 lcf 的回复:
Quote: 引用 43 楼 weilimicrver 的回复:

Quote: 引用 40 楼 lcf 的回复:

Quote: 引用 38 楼 weilimicrver 的回复:

我一直无法理解js中
function test(){
    this.a=function(){
        return "";
    }
}
test.prototype.a=function(){
  return "";  
};
var test={
    a:function(){
        reurn "";
    };
};
他们的本质区别

一个是函数对象,一个是普通对象,怎么会没区别?


this.a;
test.prototype.a;
var test={
    a:
?

Let me show you some magic:
function base () { }
test.prototype.a = function () {return "";}
function extended () {}
extended.prototype = new base();
var extObj1 = new extended();
var extObj2 = new extended();

alert (extObj1.a()); // ""
extObj1.a = function() { return "haha";}
alert (extObj1.a()); // "haha"

// here is the magic part
base.prototype.a = function() {return "hey, here is the magic!";}
alert(extObj2.a()); // "hey, here is the magic!"
alert(extObj1.a()); // "haha"


简单来说,新建对象的属性是prototype的属性的引用,改变了prototype对象,新建的对象也被改变,并且这种改变是可传递的。如果是
function test() {
  this.a = function() {return "";}
}

你就没有这种改变prototype的属性就影响到所有实例对象的便利了

好啦好啦我知道这里是JavaSE板

貌似是这么这道理,谢了 --------------------编程问答--------------------
支持楼主一下,有些谬论的确害人不浅。 --------------------编程问答-------------------- 分享了 --------------------编程问答-------------------- 支持楼主。。。。。。。。。。。。。。。。。 --------------------编程问答-------------------- 咋不靠谱了尼? --------------------编程问答-------------------- 灰常感谢分享 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 支持楼主,像我这样的小白看到这样名字的文章,说不得就进去看了,不看说不得也要收藏一下待后看,如果看不懂的话还要仔细研究研究,最后结果。。。。。。 --------------------编程问答--------------------
引用 50 楼 czp0608 的回复:
咋不靠谱了尼?

其实有的帖子有点计算机基础就知道是不靠谱的,但人云亦云风气太盛,很多人不加判别的顶,转…… --------------------编程问答-------------------- 说实话,除了那个继承的我看出是扯淡的了,其它的我看着还真不知道,不是我说他们说的对,而是我的水平没到家,唉!!!基础很重要啊!!!楼主好帖!!!不过能麻烦给解释一下不???嘿嘿嘿 --------------------编程问答--------------------
引用 55 楼 hjw506848887 的回复:
说实话,除了那个继承的我看出是扯淡的了,其它的我看着还真不知道,不是我说他们说的对,而是我的水平没到家,唉!!!基础很重要啊!!!楼主好帖!!!不过能麻烦给解释一下不???嘿嘿嘿
还有就是,曾经对于别人的问题帖,我还回了好几个不靠谱的答案,深深的负罪感啊!!! --------------------编程问答--------------------
引用 30 楼 ZangXT 的回复:
Quote: 引用 28 楼 shine333 的回复:

其实,对有些能帮助理解java语言表象的“错误解释”不必太当真。

如果,某个理解,连java语法基础都颠覆了的话........

Thinking In Java 那本书本身的问题以及读者不求甚解的原因,也带了不少混乱。


Thinking in java 这本书确实讲的比较深奥 --------------------编程问答--------------------
引用 56 楼 hjw506848887 的回复:
Quote: 引用 55 楼 hjw506848887 的回复:

说实话,除了那个继承的我看出是扯淡的了,其它的我看着还真不知道,不是我说他们说的对,而是我的水平没到家,唉!!!基础很重要啊!!!楼主好帖!!!不过能麻烦给解释一下不???嘿嘿嘿
还有就是,曾经对于别人的问题帖,我还回了好几个不靠谱的答案,深深的负罪感啊!!!


我也回过不靠谱的答案,但是我一般都会加上一句“如有错误,请大神纠正”以此来纠正自己的错误,并且这种错误也可能是其他新手犯过的,就提出来以求纠正了
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,