云时代架构阅读笔记二——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工程师的人嘛【滑稽脸】
云时代架构阅读笔记二——Java性能优化(二)的更多相关文章
- 云时代架构阅读笔记一——Java性能优化(一)
Java语言学习了这么长时间之后,自己对于Java编程的一些细节还是稍微有点总结,正好根据云时代架构中<Java高级开发必会的50个性能优化的细节(珍藏版)>来叙述一些我和里面的点比较相符 ...
- 云时代架构阅读笔记六——Java内存模型详解(二)
承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...
- 云时代架构阅读笔记七——Java多线程中如何使用synchronized关键字
关于线程的同步,可以使用synchronized关键字,或者是使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象.本文探讨synchronized关键字. sy ...
- 云时代架构阅读笔记五——Java内存模型详解(一)
什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致 ...
- 云时代架构阅读笔记十一——数据库SQL优化
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 ...
- 云时代架构阅读笔记十五——之前碰到的Java面试题
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- 云时代架构阅读笔记十六——Hystrix理解
背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务.如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服 ...
- 云时代架构阅读笔记十四——我对Hash算法的理解
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是 ...
- 云时代架构阅读笔记九——web应用存在的问题及解决办法
web应用通常存在的10大安全问题 1.SQL注入 拼接的SQL字符串改变了设计者原来的意图,执行了如泄露.改变数据等操作,甚至控制数据库服务器, SQL Injection与Command Inje ...
随机推荐
- Firefox 的 hack 及 问题
hack: @-moz-document url-prefix(){ #selector{ display: flex; justify-content: space-between; } } 问题一 ...
- 郁闷的 IE6/7/8 所遇兼容问题
IE6,7只支持inline元素设置为inline-block,但不支持block元素转换成inline-block,所以非inline元素在IE6,7下要转换成inline-block,需先转换成i ...
- Rabbitmq概念用法
MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列 ...
- CTU Open Contest 2019 AB题
小菜鸡飘过 A: Beer Barrels 题意:给出四个整数:A,B,K,C,:A,B,C都是大于0的个位数,问在所有仅有A或者B组成的K位数中,数字C的个数是多少 思路: 1.先考虑特殊情况: ( ...
- 1552146271@qq.com
北京时间9月27日早间消息,美国外卖服务DoorDash周四宣布,一项安全漏洞暴露了该公司大约490万客户.商家和送货员的个人数据. 这家总部位于旧金山的公司在一份声明中说,此次泄露的信息可能包括大约 ...
- layui-简单的登录注册界面
register.html 源代码: <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- luogu P4129 [SHOI2006]仙人掌
题目描述 仙人掌图(cactus)是一种无向连通图,它的每条边最多只能出现在一个简单回路(simple cycle)里面.从直观上说,可以把仙人掌图理解为允许存在回路的树.但是仙人掌图和树之间有个本质 ...
- JDK8中的HashMap源码
背景 很久以前看过源码,但是猛一看总感觉挺难的,很少看下去.当时总感觉是水平不到.工作中也遇到一些想看源码的地方,但是遇到写的复杂些的心里就打退堂鼓了. 最近在接手同事的代码时,有一些很长的pytho ...
- redis配置文件中常用配置详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/suprezheng/article/de ...
- 使用vim编译.cpp文件
一.编写代码 1.打开命令行终端,输入vim test.cpp,新建了一个文件叫做“test.cpp”:如果以前已经建立过这个文件,则是打开这个名字的文件. 2.按回车进入编辑界面,输入i进入编辑模式 ...