`
donald3003a
  • 浏览: 64118 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式

java 性能优化读书笔记(二)

 
阅读更多
1、Value Object模式
当需要多次远程调用对象的时候,可以不存在逻辑关系,可以把远程对象封装成一个对象,这样只会调用一次,可以大大减少远程访问量。
2、业务代理模式
如果Service层需要多次远程调用对象,可以封装一个类,这样在调用的时候可以缓存一下已经取到的对象,可以大大提高效率
3、缓冲类(Buffer)
在进行IO操作的时候务必使用BufferedWriter或者BufferedOutputStream来进行包装,这样可以大大提高性能
4、String subString()方法可能引起内存泄露
subString()方法由于是自动扩展内部的char[]常用空间换时间的加速策略,但是这样是有可能造成内存泄露的。同时使用这个方法的其他的方法如valueOf(char),replace(int,int)....都有可能造成内存泄露
5、字符串的分割
split 功能强大,担心效率不高。
StringTokennizer 功能强大而且效率优于split 以后可以代替split
indexOf()+subString()效率最高,可读性差,追求效率的系统可以选择。
同时使用charAt()方法也高远startsWith()
6、StringBuilder与StringBuffer
2个对象的默认值是16,如果超过16会自动扩展。但是由于我们要生成的类都是大于16,所以建议使用的时候直接指定容量参数可以大大提高性能。
7、list接口
ArrayList 与LinkedList
(1)如果是末尾通过add()方法来添加对象可以使用ArrayList效率更高
(2)如果通过add(int index,E element)方法来添加对象LinkedList会大大提高效率。
(3)采用E remove(int index)方法来删除元素的时候,ArrayList算法是从最后的开始搜索,LinkedList 二叉分法。所以元素在前面或者后面LinkedList 效果更高,在中间ArrayList效率更高
(4)同样在使用ArrayList的时候必须指定一个初始长度。默认为10
(5)编历数组
forEach效率最低,其次迭代器,for循环效率最高
但是LinkedList如果使用get(i) 这样的随机访问方法,会大大的降低效率。因为LinkedList并没有实现RandomAccess接口。它用get(i)方法底层是通过迭代器来一个个编列的。
8、Map接口
(1)hashCode()这个方法是一个native方法,这个方法可以重新但是不建议这样做。
(2)HashMap 默认容量为16,超过这个数建议设置长度
(3)LinkedHashMap 是一个有序的hashmap。它的顺序是元素进入集合或者被访问的先后顺序。而且它的get(i)方法会修改链表结构。
(4)TreeMap 可以基于key进行排序,如果要实现排序的hashMap。建议使用TreeMap来完成。
9、优化集合访问代码
(1)、分离循环中的代码
for(int i=0;i<map.size();i++){
}

建议写成
int size =map.size();
for(int i=0;i<size ;i++){
}

(2)、减少相同的操作
(3)、减少方法的调用
如果集合可以访问内部元素,优先使用内部元素可以比使用方法更有效率
分享到:
评论

相关推荐

    Java程序性能优化读书笔记脑图

    Java程序性能优化 笔记 脑图

    Java性能优化.png

    《Java性能优化权威指南》读书笔记(脑图) 原图,看不清楚可以下载这个

    Java优化编程(第2版)

    第4章 java核心类与性能优化 4.1 散列表类与性能优化 4.1.1 线程同步散列表类 4.1.2 设置arraylist初始化容量 4.1.3 arraylist与linkedlist 4.2 string类与性能优化 4.2.1 字符串累加与性能优化 4.2.2 字符串的...

    java版飞机大战源码-java-performance:Java系统性能优化实战

    有幸阅读此书,这是一本大道至简的Java性能优化指南,使得我们的开源项目的代码质量和性能有了飞跃,更能够指导每个Java工程师写出优雅、易阅读、高质量、易于扩展的代码。 ——肖宇(开源组织dromara.org创始人,...

    SpringBoot项目学生读书笔记共享.zip

    2. 笔记上传与编辑:用户可以上传自己的读书笔记,并支持在线编辑和格式调整,以优化内容的可读性。 3. 标签分类:通过给笔记添加标签,用户可以方便地对笔记进行分类和检索。 4. 搜索与筛选:提供强大的搜索引擎...

    高级java笔试题-understanding-the-jvm:《深入理解Java虚拟机》阅读笔记

    虚拟机》阅读笔记 本 repo 为《深入理解 Java 虚拟机 第2版》的阅读笔记,并对全书内容按照自己的理解进行了一定程度的整理。《深入理解 Java 虚拟机 第2版》原书主要分为了五个部分,这里仅对前四个部分进行讲解,...

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    实战Java高并发程序设计 .pdf 下载

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    深入理解Java源码:提升技术功底,深度掌握技术框架,快速定位线上问题

    阅读源码的方法包括:先使用框架,然后找一个demo入手,顺藤摸瓜快速静态看一遍框架的主线源码,画出源码主流程图,然后总结框架的一些核心功能点,从这些功能点入手深入到源码的细节,边看源码边画源码走向图,并对...

    高级java笔试题-Android-Interview:收集知识点自学使用

    OOM、ANR及性能优化 各种机制 一些比较难理解的技术 启动流程 框架模式 开源库源码分析 其他 设计一套图片异步加载缓存方案 Android UI适配 第二部分 Java JavaSE JavaCollection JavaConcurrent JVM 第三部分 数据...

    hibernate笔记

    11 性能优化(重点) 5 12 补充话题 5 风格 5 1 先脉络,后细节 5 2 先操作,后原理 5 3 重Annotation,轻xml配置文件 5 资源 5 1 http://www. hibernate.org 5 2 hibernate zh_CN文档 5 3 hibernate annotation ...

    java笔试题重复字符串-optimizing-go-programs:关于优化Go程序的研讨会材料

    java笔试题重复字符串优化 Go 程序 这是有助于优化 Go 程序的工具和技术的整理。 它分为两部分——工具和技术。 工具查看帮助您检测代码的 go 命令行工具。 技术查看您可能用来获得性能的想法列表。 最后还有一大堆...

    java开发笔试题-AndroidInterviews::ox:Android面试的有用材料

    Java程序性能优化:修炼Java的基本功 剑指Offer:国内的经典面试书 程序员面试金典:国外的经典面试书 Android面试题一天一题: PS:千万记得要去刷! 在此特别感谢戴方勤和唐磊总结的题解(对应leetcode-c

    leetcode下载-interview3:镜像来自//github.com/hujiaweibujidao/AndroidInterview

    Java程序性能优化:修炼Java的基本功 剑指Offer:国内的经典面试书 程序员面试金典:国外的经典面试书 Android面试题一天一题: PS:千万记得要去刷! 在此特别感谢戴方勤和唐磊总结的题解(对应leetcode-c

    增长:个人增长资料

    生长 成长文档 文章列表 Java Python 去 Linux MySQL 其他 性能优化 互联网资源数字图书馆 参考表 读书笔记 自传 增长由双鬼带单采用进行许可。

    asp.net知识库

    Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...

    worldwindjava源码-CleancodeNotes:这个repo包含来自RobertC.Martin的书CleanCode:AHan

    逻辑应该简单明了,使错误难以隐藏,依赖最小化以简化维护,根据明确的策略完成错误处理,以及接近最佳的性能,以免诱使人们通过无原则的优化使代码变得混乱。 干净的代码可以很好地做一件事。 对象的Grady Booch...

Global site tag (gtag.js) - Google Analytics