ARTS是什么? Algorithm:每周至少做一个LeetCode的算法题 Review:阅读并点评至少一篇英文技术文章 Tip:学习至少一个技术技巧,总结和归纳日常工作中遇到的知识点 Share:分享一篇有观点和思考的技术文章

Algorithm

完成leetcode算法第7题。
整数反转

  1. /**
  2. * 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
  3. *
  4. * 如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ,就返回 0。
  5. *
  6. * 假设环境不允许存储 64 位整数(有符号或无符号)。
  7. * 示例 1:
  8. *
  9. * 输入:x = 123
  10. * 输出:321
  11. * 示例 2:
  12. *
  13. * 输入:x = -123
  14. * 输出:-321
  15. * 示例 3:
  16. *
  17. * 输入:x = 120
  18. * 输出:21
  19. * 示例 4:
  20. *
  21. * 输入:x = 0
  22. * 输出:0
  23. * @author ouyb01
  24. * @date 2021/11/29 20:27
  25. */
  26. public class IntReverse7 {
  27. public static void main(String[] args) {
  28. IntReverse7 example = new IntReverse7();
  29. System.out.println(example.reverse(123));
  30. }
  31. public int reverse(int x) {
  32. int rev = 0;
  33. while (x != 0) {
  34. if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
  35. return 0;
  36. }
  37. int digit = x % 10;
  38. x /= 10;
  39. rev = rev * 10 + digit;
  40. }
  41. return rev;
  42. }
  43. }

Review

How to implement Facade Design Pattern using Java?

Tip

临时表使用场景

  1. join查询
    1. 不同 session 的临时表是可以重名的,如果有多个 session 同时执行 join 优化,不需要担心表名重复导致建表失败的问题
    2. 不需要担心数据删除问题
  2. 分库分表的跨库查询
    1. 在proxy的进程代码中实现排序
      1. 处理速度快,拿到分库的数据以后,直接在内存中参与计算
      2. 需要的开发工作量比较大。我们举例的这条语句还算是比较简单的,如果涉及到复杂的操作,比如 group by,甚至 join 这样的操作,对中间层的开发能力要求比较高
      3. 对 proxy 端的压力比较大,尤其是很容易出现内存不够用和 CPU 瓶颈的问题
    2. 把各个分库拿到的数据,汇总到一个 MySQL 实例的一个表中,然后在这个汇总实例上做逻辑操作

      Share

      别让自己“墙”了自己

      Finish

      预计完成时间:2021.11.22 ~ 2021.11.28
      实际完成时间:2021.11.29