仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 947|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计Java 进修杂谈(三)仓酷云

[复制链接]
飘飘悠悠 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。这已笔者写的第三篇Java杂记了,光荣前两篇一向失掉论坛伴侣们的撑持勉励,还看人人持续斧正不敷的地方。笔者也一向巴望经由过程如许体例苏醒的自审,来寻觅本人手艺上的不敷的地方,但愿和配合喜好Java的同仁们一同进步。
前两次分离报告了关于jvm、jdk、jre、collection、classLoader和一些DesignPattern的自我了解。此次仍旧禁绝备入手下手过渡到j2ee中,由于以为另有一些噜苏的j2se的成绩没有总结终了。

1.关于Object类了解
人人都晓得Object是一切Java类的基类,意味着一切的Java类城市承继了Object的11个办法。倡议人人往看看Object的11个成员函数的源代码,就会晓得默许的完成体例。好比equals办法,默许完成就是用"=="来对照,即间接对照内存地点,前往true大概false。而toString()办法,前往的串构成体例是——
"getClass().getName()+"@"+Integer.toHexString(hashCode())"
实在不必我过量的注释,人人都能看懂这个串的构成。接上去再看看hashCode():
publicnativeinthashCode();

因为是native办法,跟OS的处置体例相干,源代码里仅唯一一个声明而已。我们有乐趣的话完整能够往穷究它的hashCode究竟是由OS怎样发生的呢?但笔者倡议最主要的仍是先记着利用它的几条准绳吧!起首假如equals()办法不异的对象具有相通的hashCode,但equals()对象不相通的时分其实不包管hashCode()办法前往分歧的整数。并且下一次运转统一个程序,统一个对象一定仍是现在的谁人hashCode()哦。
其他的办法呢?nofigy()、notifyAll()、clone()、wait()都是native办法的,申明依附于操纵体系的完成。最初一个风趣的办法是finalize(),相似C++的析构函数,署名是protected,证实只要承继扩大了才干利用,办法体是空的,默示甚么也不做。它的感化据笔者的懂得仅仅是关照JVM此对象不再利用,随时能够被烧毁,而实践的烧毁权仍是在于假造机手上。那末它真的甚么也不做麽?一定,实践上假如是线程对象它会招致在必定局限内该线程的优先级别进步,招致更快的被烧毁来勤俭内存进步功能。实在从常理来讲,我们也能够也许如许推测出jvm做法的目标。

2.关于重载hashCode()与Collection框架的干系
笔者已经听一名弄Java培训多年的先辈说在他看来hashCode办法没有任何意义,仅仅是为了共同证实具有一样的hashCode会招致equals办法相称而存在的。连有的先辈都犯如许的毛病,实在申明它仍是满简单被疏忽的。那末hashCode()办法究竟做甚么用?

学过数据布局的课程人人城市晓得有一种布局叫hashtable,目标是经由过程给每一个对象分派一个独一的索引来进步查询的效力。那末Java也不会肆意歪曲改动这个观点,以是hashCode独一的感化就是为撑持数据布局中的哈希表布局而存在的,换句话说,也就是只要用到汇合框架的Hashtable、HashMap、HashSet的时分,才必要重载hashCode()办法,
如许才干使得我们强人为的往把持在哈希布局中索引是不是相称。笔者举一个例子:
已经为了写一个求解类程序,必要随机列出1,2,3,4构成的分歧分列组合,以是笔者写了一个数组类用int[]来存组合了局,然后把随机发生的组合到场一个HashSet中,就是想使用HashSet不包含反复元素的特性。但是HashSet怎样判别是否是反复的元素呢?固然是经由过程hashCode()前往的了局是不是相称来判别啦,可做一下这个实行:
int[]A={1,2,3,4};
int[]B={1,2,3,4};
System.out.println(A.hashCode());
System.out.println(B.hashCode());

这明显是统一种组合,倒是分歧的hashCode,到场Set的时分会被当做分歧的对象。这个时分我们就必要本人来重写hashCode()办法了,怎样写呢?实在也是基于原始的hashCode(),究竟那是操纵体系的完成,找到相通对象独一的标识,完成体例良多,笔者的完成体例是:
起首重写了toString()办法:
returnA[0]“+”A[1]“+”A[2]“+”A[3];//显现上对照直不雅
然后使用toString()来盘算hashCode():
returnthis.toString().hashCode();
如许上述A和B前往的就都是”1234”,在测试toString().hashCode(),因为String在内存中的正本是一样的,”1234”.hashCode()前往的必定是不异的了局。

说到这,信任人人能了解得比我更好,从此万万不要再曲解hashCode()办法的感化。

3.关于Class类的成员函数与Java反射机制
很早刚打仗Java就听良多先生说过Java的静态运转机会制、反射机制等。的确它们都是Java的明显特性,运转时加载笔者在第一篇先容过了,如今想讲讲反射机制。在Java中,次要是经由过程java.lang包中的Class类和Method类来完成内存反射机制的。
熟习C++的人必定晓得上面如许在C++中是做不到的:运转时以字符串参数传送一个类名,就能够失掉这个类的一切信息,包含它一切的办法,和办法的具体信息。还能够实例化一个对象,并经由过程查到的办法名来挪用该对象的任何办法。这是由于Java的类在内存中除C++中也有的静态静态数据区以外,还包含一份对类本身的形貌,也恰是经由过程这形貌中的信息,才干匡助我们才运转时读取内里的内容,失掉必要加载方针类的一切信息,从而完成反射机制。人人有无想过当我们必要失掉一个JavaBean的实例的时分,怎样晓得它有哪些属性呢?再分明复杂不外的例子就是本人写一个JavaBean的剖析器:

a.经由过程Class.forName(“Bean的类名”)失掉Class对象,比方叫ABeanClass
b.经由过程ABeanClass的getMethods()办法,失掉Method[]对象
c.依照标准一切get办法名后的单词就代表着该Bean的一个属性
d.当已晓得一个办法名,能够挪用newInstance()失掉一个实例,然后经由过程invoke()办法将办法的名字和办法必要用的参数传送出来,就能够静态挪用此办法。

固然另有更庞大的使用,这里就不赘述,人人能够参考Class类和Method类的办法。

4.坦言Synchronize的实质
Synchronize人人都晓得是同步、加锁的意义,实在它的实质远没有人人想得那末庞大。声明Synchronize的办法被挪用的时分,锁实际上是加载对象上,固然假如是静态类则是加在类上的锁,挪用停止锁被排除。它的完成道理很复杂,仅仅是不让第二把锁再次被加在统一个对象或类上,仅此罢了。一个复杂的例子足以申明成绩:
classA{
synchronizedvoidf(){}
voidg(){}
}

当A的一个对象a被第一个线程挪用其f()办法的时分,第二个线程不克不及挪用a的synchronized办法比方f(),由于那是在试图在对象上加第二把锁。但挪用g()倒是能够的,由于并没有在统一对象上加两把锁的举动发生。
如许人人能了解了麽?分明它的道理能更好的匡助人人计划同步机制,不要滥用加锁。

PS:下篇笔者企图入手下手对J2ee打仗到的各个方面来举行总结,谈谈本人的履历和设法。但愿人人还能自始自终的撑持笔者写下往,斧正不敷的地方。
来自:http://topic.csdn.net/u/20070924/21/18482496-082f-4907-8751-b80ab5d56622.html?seed=1386683868

在性能方面,在windows平台下,.net网页编程可能是占强项,要是把.net网页编程放在sun开发的操作系统上去运行呢?根本就运行不了,.net网页编程对其它操作系统的支持也很弱,性能也可能比不上java。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-21 10:55:30 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
若天明 该用户已被删除
板凳
发表于 2015-1-21 23:53:04 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再现理想 该用户已被删除
地板
发表于 2015-1-30 22:51:04 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 16:31:31 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-17 06:55:00 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
爱飞 该用户已被删除
7#
发表于 2015-2-19 19:40:22 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-1 17:04:29 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
小魔女 该用户已被删除
9#
发表于 2015-3-8 18:14:47 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
海妖 该用户已被删除
10#
发表于 2015-3-16 09:30:49 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
11#
发表于 2015-3-22 22:08:20 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
精灵巫婆 该用户已被删除
12#
发表于 2015-3-27 16:26:17 | 只看该作者
是一种为 Internet发展的计算机语言
若相依 该用户已被删除
13#
发表于 2015-3-28 19:10:07 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘飘悠悠 该用户已被删除
14#
 楼主| 发表于 2015-4-3 21:33:48 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
兰色精灵 该用户已被删除
15#
发表于 2015-4-6 18:09:15 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
乐观 该用户已被删除
16#
发表于 2015-4-13 08:15:22 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小女巫 该用户已被删除
17#
发表于 2015-4-15 09:51:27 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
老尸 该用户已被删除
18#
发表于 2015-4-16 04:50:21 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
第二个灵魂 该用户已被删除
19#
发表于 2015-4-17 11:56:59 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
只想知道 该用户已被删除
20#
发表于 2015-4-20 12:20:18 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表