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

Algorithm

完成leetcode算法第476题。
使用Java API和StringBuilder完成暴力解法。
官方推荐位运算完成
image.png

  1. /**
  2. * 对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。
  3. *
  4. * 例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。
  5. * 给你一个整数 num ,输出它的补数。
  6. *
  7. *
  8. *
  9. * 示例 1:
  10. *
  11. * 输入:num = 5
  12. * 输出:2
  13. * 解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
  14. * 示例 2:
  15. *
  16. * 输入:num = 1
  17. * 输出:0
  18. * 解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。
  19. *
  20. *
  21. * 提示:
  22. *
  23. * 1 <= num < 231
  24. */
  25. public class FindComplement476 {
  26. public static void main(String[] args) {
  27. FindComplement476 example = new FindComplement476();
  28. System.out.println(example.findComplement(5));
  29. System.out.println(example.findComplement(1));
  30. }
  31. public int findComplement(int num) {
  32. String hexString = Integer.toBinaryString(num);
  33. StringBuilder res = new StringBuilder();
  34. for (int i = 0; i < hexString.length(); i++) {
  35. if ('0' == hexString.charAt(i)) {
  36. res.append("1");
  37. } else {
  38. res.append("0");
  39. }
  40. }
  41. return Integer.valueOf(res.toString(), 2);
  42. }
  43. }

Review

How to merge all your history
一个小技巧,如果有多个merge提交可以使用rebase,让你的提交日志变得干净一点

Tip

  1. crash-safe的恢复流程:InnoDB如果判断到一个数据页可能在崩溃恢复的时候丢失更新,就会把它读到内存,然后让redo log更新内容内容。更新完成后,内存页变成脏页,等待flush。
  2. redo log是循环写,写满了会覆盖之前的内容,起不到归档作用而且binlog在其他地方会用到,例如主从复制,异构系统的数据更新(生态);binlog没有check point机制,没有能力回复数据页,所以至少就目前来说,还做不到只使用redo log或binlog去同时完成归档和crash-safe的功能

    Share

    01|前世今生:你不得不了解的Go的历史和现状
    最近买了极客时间的go语言课程,看到这篇鸟瞰式文章突然间想到Java的鸟瞰图应该是怎么样的好像自己从来没总结过,这让我有了兴趣去找一下Java的历史和现状,下一篇自己的文章主题决定是这个了。

    Finish

    预计完成时间:2021.10.11 ~ 2021.10.17
    实际完成时间:2021.10.18,周末打游戏打忘了