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

Algorithm

完成leetcode算法第389题。

  1. 以字符的ascii为key,出现的次数为value将s存储数组array,然后再将array和t做比对,如果出现value为0则说明s中不存在该字符,直接返回;
  2. 对t的每个字符的ascii求和得到值sum,然后将sum减去s的每一个字符的ascii值,剩下的就是被添加的字母。

    1. /**
    2. * 定义一个数组,以s的字符ascii值为key, 出现的次数为value
    3. * 用字符数组存储toCharArray()的值,执行速度快,内存消耗大
    4. */
    5. public char findTheDifference_1(String s, String t) {
    6. char[] origin = s.toCharArray();
    7. int[] array = new int[26];
    8. for (char value : origin) {
    9. array[value - 'a']++;
    10. }
    11. char[] target = t.toCharArray();
    12. for (char c : target) {
    13. if (array[c - 'a'] == 0) {
    14. return c;
    15. }
    16. array[c - 'a']--;
    17. }
    18. return ' ';
    19. }
    20. /**
    21. * 定义一个数组,以s的字符ascii值为key, 出现的次数为value
    22. * 和方案一思路一致,但是没有用字符数组存储char值,执行速度慢,内存消耗小
    23. */
    24. public char findTheDifference_2(String s, String t) {
    25. int[] array = new int[26];
    26. for (int i = 0; i < s.length(); i++) {
    27. array[s.charAt(i) - 'a']++;
    28. }
    29. for (int i = 0; i < t.length(); i++) {
    30. char c = t.charAt(i);
    31. if (array[c - 'a']-- == 0) {
    32. return c;
    33. }
    34. }
    35. return ' ';
    36. }
    37. /**
    38. * 定义一个数组,以s的字符ascii值为key, 出现的次数为value
    39. * 和方案一思路一致,但是没有用字符数组存储char值,执行速度慢,内存消耗小
    40. */
    41. public char findTheDifference_3(String s, String t) {
    42. int sum = 0;
    43. for (int i = 0; i < t.length(); i++) {
    44. sum += t.charAt(i);
    45. }
    46. for (int i = 0; i < s.length(); i++) {
    47. sum -= s.charAt(i);
    48. }
    49. return (char) sum;
    50. }

    Review

    exception-handling-in-java

Java中的Exception:

  1. 什么是异常和异常处理
  2. 异常类的包结构和异常的分类(exception和error)
  3. 如何使用Java自带的异常类和自定义的异常类处理问题
  4. try、catch、finally的用法
  5. throw和throws的区别
  6. 什么是异常传递
  7. 重新抛出异常

    Java中的异常随处可见,如果处理不好这些异常会使得程序的健壮性大打折扣。本文通过介绍异常的基本概念与使用来让我们入门。我觉得在写代码的过程中一定要有一个思想,就是尽可能的让错误出现在编译期,也就是说异常尽可能是checked exception,这样能让代码在我们的掌控范围之内。还有两点常见的问题需要说明下:一是如果我们自己写的工具类需要让客户端重视可能的异常的话,我们应该将异常抛出而不是捕获。二是在我们使用流的时候一定要记得在finally的代码块中将流关闭。其他的问题就靠大家自己去归纳总结啦。

Tip

如何修改Ubuntu中root的默认密码?
Ubuntu中root的密码默认是随机的,每次开机密码都会变,那我们怎么将它改成固定的密码呢?

  1. 打开终端,输入sudo passwd
  2. 输入当前用户的密码
  3. 输入root的新密码
  4. 重新输入新密码
  5. 验证是否修改成功,su root然后输入新密码,如果切换到了root则说明修改成功

image.png

Share

输出文章 - spring-data-jpa中Specification的封装

Finish

预计完成时间:2021.08.30 ~ 2021.09.05
实际完成时间:2021.09.05