我知道,一定有很多人不知道什么是软件优化,本篇文章就详细介绍一下有关软件优化的的知识。
公用的集合类中不使用的数据一定要及时remove掉。如果一个集合类是公用的也就是说不是方法里面的属性,那么这个集合里面的元素是不会自动释放的,因为始终有引用指向它们,所以,如果公用集合里面的某些数据不使用而不去remove掉它们,那么将会造成这个公用集合不断增大,使得系统有内存泄露的隐患。
把一个基本数据类型转为字符串,基本数据类型.toString(是最快的方式、String.valueOf数据次之、数据+““最慢,把一个基本数据类型转为一般有三种方式,我有一个Integer型数据i,可以使用i.toString、String.valueOf,i、i+““三种方式,三种方式的效率如何,看一个测试。
所以以后遇到把一个基本数据类型转为String的时候,优先考虑使用toString方法。至于为什么,很简单:String.valueOf方法底层调用了Integer.toString方法,但是会在调用前做空判断Integer.toString方法就不说了,直接调用了i + ““底层使用了StringBuilder实现,先用append方法拼接,再用toString方法获取字符串。三者对比下来,明显是2最快、1次之、3最慢,使用最有效率的方式去遍历Map,遍历Map的方式有很多,通常场景下我们需要的是遍历Map中的Key和Value,那么推荐使用的、效率最高的方式是,如果你只是想遍历一下这个Map的key值,那用“Set keySet = hm.keySet“会比较合适一些。
对资源的close建议分开操作。虽然有些麻烦,却能避免资源泄露。我们想,如果没有修改过的代码,万一XXX.close(抛异常了,那么就进入了catch块中了,YYY.close(不会执行,YYY这块资源就不会回收了,一直占用着,这样的代码一多,是可能引起资源句柄泄露的。而改为下面的写法之后,就保证了无论如何XXX和YYY都会被close掉。
对于ThreadLocal使用前或者使用后一定要先remove,当前基本所有的项目都使用了线程池技术,这非常好,可以动态配置线程数、可以重用线程,然而,如果你在项目中使用到了ThreadLocal,一定要记得使用前或者使用后remove一下。这是因为上面提到了线程池技术做的是一个线程重用。这意味着代码运行过程中,一条线程使用完毕,并不会被销毁而是等待下一次的使用。
不得不说,软件可以展示出人工智能,软件优化慢慢进入到我们的视野,并扮演这越来越重要的角色。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
2022-11-22 15:44:45
2022-11-23 17:04:59
2022-11-21 17:11:01
2022-11-22 16:39:07
2022-11-24 13:53:59
甄选10000+数字化产品 为您免费使用
申请试用
评论列表