• 数据库连接池中比较一下ArrayList和LinkedList


    在我们项目中的jdbc 链接中,我们一般会用到数据库连接池的这么东东,list

    // 数据库连接池
    private LinkedList<Connection> datasource = new LinkedList<Connection>();

    why we must use this list LinkedList ,个人认为下面第三条很好的解释了这个问题 。


    1.ArrayList是基于数组,LinkedList基于链表实现。
    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
    4.查找操作indexOf,lastIndexOf,contains等,两者差不多。
    这里只是理论上分析,事实上也不一定,比如ArrayList在末尾插入和删除数据就不设计到数据移动,不过还是
    有这么个建议:随机访问比较多的话一定要用ArrayList而不是LinkedList,如果需要频繁的插入和删除应该
    考虑用LinkedList来提高性能。

    如果z 引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含“startle”,而 z.insert(4, "le") 将更改字符串缓冲区,使之包含“starlet”。  

    每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 例如:如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。Java.lang.StringBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。 append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。

    String / StringBuffer /StringBuilder,在字符串连接操作上性能依次加强,我曾经做过一个实验,连续进行10000次的字符串操作,三者速度上的差距是惊人的。在确切知道是不变字符串的情况下,还是用String最好,因为Java语言中String采用了享元模式(Flyweight),在JVM中只存在一份相同的String 。在确定循环次数时,尽量使用for循环,在循环嵌套中尽量将大循环放到外层,小循环放到内层,这点与VB等语言恰好相反,经过代码测试的,不过还不知道原因。总之,在VB等微软系列语言中用小套大会快很多,而在JAVA中用大套小会快很多!当然这是指两者能互相替换的时候,比如二维数组遍觅等!

    如果字符串特别长,采用charAt逐一获取特定位置的字符是非常耗时的。因为每次获取制定索引位置的字符都要引起新的检索过程,更好的办法是将字符串通过调用toCharArray方法转换成字符数组,然后通过数组索引值获得指定位置的字符。

    对于boolean值,避免不必要的等式判断将一个boolean值与一个true比较是一个恒等操作(直接返回该boolean变量的值). 移走对于boolean的不必要操作至少会带来2个好处: 1)代码执行的更快 (生成的字节码少了5个字节); 2)代码也会更加干净。

    关于使用SESSION问题上,尽量不要将大对象放到HttpSession或其他须序列化的对象中,并注意及时清空Session。


  • 相关阅读:
    跟面试官侃半小时MySQL事务,说完原子性、一致性、持久性的实现
    谈谈程序员的非技术思维
    跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现
    面试官问,你在开发中有用过什么设计模式吗?我懵了
    关于校招面试要怎么准备,这里有一些过来人的建议
    数据库中间件漫谈
    「从零单排HBase 06」你必须知道的HBase最佳实践
    「从零单排HBase 05」核心特性region split
    《Scalable IO in Java》译文
    Java多线程同步工具类之Semaphore
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501319.html
Copyright © 2020-2023  润新知