与实俱进-提高Java代码质量与性能

2019-12-30  本文已影响0人  善思者_tin

一、概述

程序开发,就像写一篇文章一样,不单单是给功能实现出来,重要的是要追求代码量少,并且性能还好。提高代码质量与性能,有助于提高运行效率。

二、提高Java代码质量与性能实践

2.1、代码优化细节

尽量重用对象:想必我们会对接到第三方公司API,对接的时候通常会有签名参数,该参数是通过对多个参数拼接后进行MD5加密而得到。处理此问题,一般人会想到直接使用String去拼接即可,但是有没有考虑到性能和可拓展下呢?从性能上进行分析,如果使用String的话,会由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,很耗时间;从可拓展下进行分析,如果拼接的时候对方多个或者少个参数,我们还需要修改拼接的这个过程。解决方案是出现字符串连接时应该使用StringBuilder/StringBuffer代替,并且封装一套拼接算法。如下是HttpUtil工具类的toParams方法。

/**

* 将Map形式的Form表单数据转换为Url参数形式<br> * paramMap中如果key为空(null和"")会被忽略,如果value为null,会被做为空白符("")<br> * 会自动url编码键和值

* <pre> * key1=v1&amp;key2=&amp;key3=v3

* </pre>*

* @param paramMap 表单数据

* @param charset 编码

* @return url参数

*/

public static String toParams(Map paramMap, Charset charset) {

if (CollectionUtil.isEmpty(paramMap)) {

return StrUtil.EMPTY;

}

if (null == charset) {// 默认编码为系统编码

      charset = CharsetUtil.CHARSET_UTF_8;

}

final StringBuilder sb =new StringBuilder();

boolean isFirst =true;

String key;

Object value;

String valueStr;

for (Entry item : paramMap.entrySet()) {

if (isFirst) {

isFirst =false;

}else {

sb.append("&");

}

key = item.getKey();

value = item.getValue();

if (valueinstanceof Iterable) {

value = CollectionUtil.join((Iterable) value,",");

}else if (valueinstanceof Iterator) {

value = CollectionUtil.join((Iterator) value,",");

}

valueStr = Convert.toStr(value);

if (StrUtil.isNotEmpty(key)) {

sb.append(URLUtil.encodeQuery(key, charset)).append("=");

if (StrUtil.isNotEmpty(valueStr)) {

sb.append(URLUtil.encodeQuery(valueStr, charset));

}

}

}

return sb.toString();

}

当复制大量数据时,使用System.arraycopy命令:前段时间讲解了socke通信可以改变线程的运行状态,以达到在后端页面手动控制定时任务。

在从Socket读取到的客户端buffer数据进行处理时,可以使用System.arraycopy方法

重要词意分析:

MD5加密:

String对象拼接字符串:

上一篇下一篇

猜你喜欢

热点阅读