云时代架构阅读笔记二——Java性能优化(二)

承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html

4)尽量确定StringBuffer的容量

  在说和这个标题相关之前,先说一下Java中StringBuffer的地位及适用场景。

  StringBuffer和StringBuilder和String这三种的存在是有点相似的,所以我们平常使用的时候不会在意这三种的区别,而是单纯的使用String,哪怕我修改100次这个变量。。。StringBuffer与StringBuilder相对于String有一个共同点,就是能够被多次修改但并不创建新的变量。这就使得在需要频繁修改对象的时候使用这两个比使用String更节省内存。

  StringBuffer和StringBuilder的最大的不同之处在于StringBuilder的方法不是线程安全的(不能同步访问)。

  StringBuilder相对于StringBuffer有速度优势,所以大部分时间内使用StringBuilder,但是在应用程序要求线程安全的情况下,则必须使用StringBuffer类。

  言归正传,前面说到,StringBuffer在变量被频繁修改的场合下适合使用,但是如果在定义StringBuffer类对象的时候不指定它的长度,则它会分配一个默认的长度(16),这也就导致了当定义的变量更改为长度大于16的时候还是会创建新的变量,虽然系统会自动实现变量数据的迁移以及旧变量的销毁,但是,执行的过程还是比较消耗内存的,所以在使用的时候还是要根据情况手动事先给这个变量分配一个合适的长度。

5)在java+Oracle的应用系统开发中,java中内嵌的SQL语言应尽量使用大写形式,以减少Oracle解析器的解析负担

  这一点恐怕很多人并没有在意,因为我们都知道,在所有的SQL中,是不分大小写的,所以在写SQL语句的时候都会按照平常的小写来书写语句,之前使用Navicat管理mysql的时候经常会用到Navicat的一键生成SQL语句的功能,然后会发现,它生成的SQL语句全部都是大写,之前也考虑过这个问题,也专门去网上搜索过一些相关的知识,不过网上都没有真正有价值的说法,唯一我觉得还稍微可以的就是说要把SQL语句中的关键字大写,其他的保持小写,这样是为了更好的分辨出关键字和其他语句,使SQL的层次更加清晰。

  不过Oracle和其他的SQL不同,用过Oracle的都知道,即使我在创建的时候创建的是varchar2类型的name列,等到表格里面查看时还是会自动变成NAME,也就是说,Oracle处理字符串的时候一律按照大写处理,这也就映射了我们的这个标题,在使用java操作Oracle的时候,尽量使用大写,这样在进入到数据库操作的步骤时,就可以省去Oracle将SQL转换为大写然后执行的步骤,也算是稍微提升了一点性能。

 

以上几点是我根据云时代架构中的文章总结的关于Java性能优化方面的几点小知识,虽然以现在的设备条件我们不这样做的话并不会产生很大的影响,但是作为一个对Java比较感兴趣的人同时工作时候也希望走这条路的我来说,还是会在这方面多花费一点时间研究研究,毕竟也是想当Java工程师的人嘛【滑稽脸】

posted @ 2019-03-14 20:24  编程小大白  阅读(187)  评论(0编辑  收藏  举报