厦门好伴科技软件服务【软件开发应避免的问题】

327次 2016-03-07

  厦门好伴科技软件服务公司介绍,软件的开发是互联网的一大趋势项目,目前软件的应用领域非常的广泛,软件开发的需求量相当的庞大。吸引了大批量的技术人才,但是软件的开发尽管不是特别难有的时候并不像想象中的那么简单。

  很多软件开发人员都有自己的固有开发方式,但是开发过程中一定要避免以下java的功能应用:

  Bytecode manipulation.

  字节码操作,如果我看到你在Java EE应用程序里直接使用CGLIB或ASM,我可能会立即跑开。

  最糟糕的事情莫过于在编译期间没有任何可执行的代码。实际上,当产品在运行时,你根本不知道哪块代码在运行。所以,当你遇到麻烦时,会自然地把错误抛给运行时故障排除和调试,不过这样反而会更麻烦。

  ThreadLocals

  这里有两个不相关的原因,当我在业务层代码里看到ThreadLocals时会颤抖。首先,在ThreadLocals的帮助里,你可能会看到许多变量的使用都没有通过方法调用链来明确地向下传递。这在某些场合下是有用的,但当你一旦粗心,你会在代码里构建许多意料不到的依赖关系。

  第二个不相关的原因与我日常的工作相关,在ThreadLocals里存储数据会引发内存泄露。最起码我遇到的Permgen泄露有十分之一都是使用ThreadLocals造成的,在结合了类加载器和线程池后,“java.lang.OutOfMemoryError:Permgen space”异常可能就马上出现了。

  Classloaders

  首先,类加载器是一个复杂的野兽。你必须先了解它的层次结构、委托机制、类缓存等等。即使你认为自己已经掌握了,它可能还是不能正常工作。最终将导致一个类加载器泄露问题。因此我只能建议你将这个任务留给应用服务器处理

  Weak/Soft references

  现在,你应该更好的理解Java的内部方法。使用软引用来重写所有的缓存并不明智。我知道,当你手上拿着锤子的时候,就会到处寻找钉子。可对于锤子来说,缓存并不是个好钉子。为什么?基于软引用构建缓存可能是如何委托一些复杂因素到GC而不是通过自身实现的一个好例子。