求模优化

  • 已知 bucket 长度 n,求目标 m 在 n 的位置
  1. int index = n % m;
    1. 普通求余
  2. int index = (int) (m & (n - 1));
    1. n 为 2 的幂的前提下,使用位操作进行优化

mybatis 批量更新

  1. 这里仅记录 foreach
    1. <update id="updateRecordList">
    2. <!--
    3. 这里是拼接一大串 update 语句,所以 separator 用的是分号
    4. 注意数据包过大导致异常
    5. -->
    6. <foreach collection="poList" separator=";" item="item">
    7. UPDATE c_broadcast_mail_record
    8. <set>
    9. <if test="item.read != null">
    10. `read` = #{item.read},
    11. </if>
    12. <if test="item.attachmentState">
    13. `attachment_state` = #{item.attachmentState},
    14. </if>
    15. <if test="item.deleted">
    16. `deleted` = #{item.deleted}
    17. </if>
    18. </set>
    19. WHERE `receiver_id` = #{item.receiverId} and `broadcast_mail_id` = #{item.broadcastMailId}
    20. </foreach>
    21. </update>

Collections.binarySearch

  1. 有三个参数,第三个参数是个比较器
  2. 我 jio 得要注意一下
    1. 如果集合元素没有实现 Comparable ,那么要集合本身要通过同一个比较器进行排序,然后再通过这个排序进行查找
    2. 如果集合元素实现了 Comparable ,那么查找的时候就会通过元素本身来判断了
  3. 内部实现中
    1. 如果是 Random 接口的集合,那么是通过索引进行比较,很快
    2. 其他的用 Iterator 进行比较