ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:413KB ,
资源ID:2621750      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2621750.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(开发者应该避免使用的6个Java功能.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

开发者应该避免使用的6个Java功能.doc

1、开发者应该避免使用的 6 个 Java 功能广州传智播客作为华南地区 Java 与 Android 培训的领头羊,对 Java 与 Android 的研究都是走在互联网发展的潮流最前沿,把最新最好的技术教导给学生。在课程体系外,还有很多细致的知识点分享给大家:多年的 Java 开发经验告诉我,从长远角度来看,以下这些 Java SE 功能/API,开发者最好停止使用。 Reflection Bytecode manipulation ThreadLocals Classloaders Weak/Soft references Sockets 1.ReflectionReflection 即反射

2、,在许多流行的库里面都有反射机制,比如 Spring 和 Hibernate。通过对业务代码进行反思,我建议大家避免使用反射。下面列出我反对使用的原因:首先涉及到代码可读性/工具支持。打开 IDE 并且在 Java 代码里找到相互依赖关系。使用 relection替换方法调用,并且试着重复该步骤。事情变的愈发不可收拾,正常情况下都应该封装好了再修改状态。下面来看看具体代码示例:?123456789101112131415161718192021222324252627282930313233public class Secret private String secrecy; public S

3、ecret(String secrecy) this.secrecy = secrecy; public String getSecrecy() return null; public class TestSecrecy public static void main(String args) throws Exception Secret s = new Secret(“TOP SECRET“); Field f = Secret.class.getDeclaredField(“secrecy“); f.setAccessible(true); System.out.println(f.ge

4、t(s); 通过查看以上代码可以得知,方法 getDeclaredField()参数只有在运行时才可以被发现。而你也清楚,运行时产生的 bug 总比不执行脚本要更加棘手。其次,反射调用优化是由 JIT 执行的,一些优化可能需要花费很长时间才能得到应用,而有些优化甚至都得不到应用,所以关于反射的性能优化有时会被数量化。但在一个典型的业务应用程序中你可能不会真正意识到这些性能开销。总之,开发者应该通过 AOP 合理地在业务层使用反射,除此以外,你最好离它远远的。2.Bytecode manipulation.字节码操作,如果我看到你在 Java EE 应用程序里直接使用 CGLIB 或 ASM,我

5、可能会立即跑开。最糟糕的事情莫过于在编译期间没有任何可执行的代码。实际上,当产品在运行时,你根本不知道哪块代码在运行。所以,当你遇到麻烦时,会自然地把错误抛给运行时故障排除和调试,不过这样反而会更麻烦。3.ThreadLocals这里有两个不相关的原因,当我在业务层代码里看到 ThreadLocals 时会颤抖。首先,在ThreadLocals 的帮助里,你可能会看到许多变量的使用都没有通过方法调用链来明确地向下传递。这在某些场合下是有用的,但当你一旦粗心,你会在代码里构建许多意料不到的依赖关系。第二个不相关的原因与我日常的工作相关,在 ThreadLocals 里存储数据会引发内存泄露。最起

6、码我遇到的 Permgen 泄露有十分之一都是使用 ThreadLocals 造成的,在结合了类加载器和线程池后,“java.lang.OutOfMemoryError:Permgen space”异常可能就马上出现了。4.Classloaders首先,类加载器是一个复杂的野兽。你必须先了解它的层次结构、委托机制、类缓存等等。即使你认为自己已经掌握了,它可能还是不能正常工作。最终将导致一个类加载器泄露问题。因此我只能建议你将这个任务留给应用服务器处理5.Weak/Soft references现在,你应该更好的理解 Java 的内部方法。使用软引用来重写所有的缓存并不明智。我知道,当你手上拿着

7、锤子的时候,就会到处寻找钉子。可对于锤子来说,缓存并不是个好钉子。为什么?基于软引用构建缓存可能是如何委托一些复杂因素到 GC 而不是通过自身实现的一个好例子。下面举个缓存的例子,你使用软引用来创建数据,当内存被耗尽时,GC 进入并且进行清理。但是,缓存中被删除的对象并未得到你的控制,而且很有可能在下一次的 cache-miss 中重新创建。如果内存仍然不足,你可以触发 GC 进行再次清理。你可能已经看出了整个运行过程的恶性循环,整个应用程序就变成了 CPU 与 GC 不断运行的状态了6.Sockets 普通老式的 .Socket 实在是太复杂,以至于很难弄正确。我觉得阻塞性是其根本性的缺陷。

8、当你编写一个典型的带有 Web 前端的 Java EE 应用程序时,应用程序需要高并发度来支持大量的用户,而你现在最不想发生的是不具有可扩展的线程池坐等阻塞套接字。目前有许多精彩可用的第三方库,使用它们可以更好的完成任务,比如 Netty,开发者不妨尝试下。传智播客是一家专门致力于高素质软件开发人才培养的高科技公司,依托中国最大的程序员平台 CSDN,整合了国内众多知名软件企业的资源,并邀请到任跨国公司和国内大中型企业架构师,系统分析师,企业培训师组成自己的精英团队。历经 7 年多的发展,已经出版书籍几十本,教学视频几百个,发表各类技术文章几百篇,已经成为java,.net,php,3G/4G

9、 培训领域的领军企业,并开始对中国的软件教育有所影响。传智播客的讲师以朴素的语言,采用由浅入深,先易后难的教学方法,进行全程的项目实训,使学员了解并掌握软件开发的整个项目流程,快速适应企业的人才需求。传智播客培养的软件开发人才受到社会及企业的广泛赞赏和认同,很多学员已成为众多国际国内知名 IT 企业的抢手人才或技术骨干。2010 年 4 月,传智播客广州中心成立;截止 2012 年 8 月,传智播客广州中心已为华南地区的软件相关企业输出近 500 名高级软件工程师;2011 年 10 月,推出了“零付款就读”等不用付一分钱就可以参加就读的项目,满足了广大渴望系统地学习软件开发专业技能地学员需求,深受广大学生欢迎。地址:广州市天河区棠东东路御富科贸园御富 B 座 A202室 020-38325125 吴老师学软件开发可以来广州传智播客 IT 培训学校,广州传智播客的培养模式重点在于学生理论知识和学生实践技能,让学生在实践环节中掌握技能,提高人才的综合素质。在教学方式上,以项目实战带动教学,上课打破传统课堂模式,以实训项目贯穿教学,带领学生一起做企业真实项目。从而全面掌握规范的开发流程和丰富的项目开发经验,让实训学员在实训中就拥有实际的工作经验,学成后轻松就业。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报