云时代架构阅读笔记二——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 ...
随机推荐
- 129、Java面向对象之static关键字一(修改static变量)
01.代码如下: package TIANPAN; class Book { // 描述的是同一个出版社的信息 private String title; // 普通属性 private double ...
- Flask - 中间件
其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:复选框(Checkbox)和单选框(Radio)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-warning" 类的文本样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- zabbix开启对中文的支持--&&--中文乱码解决方法
zabbix不支持中文图 开启zabbix对中文的支持 原来zabbix默认把对中文的支持给关闭了,我们需要修改zabbix的php源文件. 修改站点根目录下include/locales.inc.p ...
- CSS相关(1)
CSS: 字体: 网页默认字体16px; 网站通用字体大小14px 最小是12px,最大无限大 单位换算:1em=16px 选择器:标签选择器:选择页面中所有指定标签,权重为1 通配符选择器:选择所有 ...
- C 随机数产生
// ConsoleApplication5.cpp : Defines the entry point for the console application. // #include " ...
- Linux centosVMware 命令 lvm、磁盘故障小案例
一.lvm命令 LVM:逻辑分区管理,可基于动态的扩展缩小硬件设备的使用空间,注意:lvm磁盘复杂,由于使用lvm,数据丢失恢复起来有一定风险.概念:pv.VG.lvpv(物理卷,有pp基本单位构成) ...
- Day2-I-Knight's Problem POJ - 3985
You must have heard of the Knight's Tour problem. In that problem, a knight is placed on an empty ch ...
- 渗透测试神器Burp Suite v1.7.11发布(含下载)
BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了Proxy,Spider,Scanner,Intruder,Repeater,Sequenc ...