第01期 ARTS 打卡计划

2020-05-29 10:54:26 浏览数 (1)

一个需要持续地坚持的高效学习项目,每周写一个ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点; 关于 ARTS:https://tva1.sinaimg.cn/large/007S8ZIlly1gf3w32cfuxj30u01hcwj5.jpg

Algorithm:整数反转

题目:Leetcode-7. 整数反转

地址:https://leetcode-cn.com/problems/reverse-integer/

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31-1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

思路:取模比较

普通方式是先将整数转换为字符串,然后分割每个字符进行处理,然后再转换成数字返回,但是涉及一些库函数效率不高,所以不推荐使用; 另一种方式采用数学计算,从末尾开始将每一位x拆开(x/=10),用 y*10 x 方式逐步还原,还原前都要判断是否存在溢出情况,直到数字首位(x/10==0)。其中溢出的情况在于翻转到9位数时比 2147483647/10 大,或者与 2147483647/10 相等但是 x 比 7 大,反之负数也如此。

解法 数学计算

时间复杂度:O(log(x)),空间复杂度:O(1)

代码语言:javascript复制
public class Solution7 {
    public int reverse(int x) {
        int z = 0;
        while (x != 0) {
            //每次取末尾数字
            int y = x % 10;
            // 获取剩下的数
            x /= 10;
            if (z > Integer.MAX_VALUE / 10 || (z == Integer.MAX_VALUE / 10 && y > 7)) {
                // 正数溢出判断
                return 0;
            }
            if (z < Integer.MIN_VALUE / 10 || (z == Integer.MIN_VALUE / 10 && y < -8)) {
                // 负数溢出判断
                return 0;
            }
            // 翻转过程的中间数字
            z = z * 10   y;
        }
        return z;
    }
}

Review:JUnit 5 tutorial, part 2: Unit testing Spring MVC with JUnit 5

原文来源:JavaWorld

https://www.javaworld.com/article/3543268/junit-5-tutorial-part-2-unit-testing-spring-mvc-with-junit-5.html

阅读评论:Spring 程序的 JUnit 5 实战

该文章主要写了 JUnit 5 基于 Spring 框架如何做各模块的单元测试,附带代码示例说明,对于 Service 层用结合 Mockito 编写测试;对于 Web 层用 @AutoConfigureMockMvc 和 MockMvc 编写测试;对于 Repository 层结合 DBUnit 来编写测试。每一模块都有详细的示例代码和涉及的 API 说明,对打算在 Spring 程序中用 JUnit5 编写测试的开发人员有很高的参考价值。

Tip:如何更快用 grep 查关键行的上下文日志

主题:grep 的参数 -A 与 -B 用法

普通的 grep keyword file 只能匹配出文件中包含了 keyword 内容的每一行,无法获取到该行的上下文信息。如果想要获取关键字所在行和之前 n 行的信息,可以用选择参数 -B n 指定要显示之前的行数,这里的 B 为 Before 的缩写;想获取之后 n 行的信息,使用 -A n 指定要显示之后的行数,A 就是 After 的缩写;如果需要前后各自显示同等 n 行内容,直接用 grep -n keyword file 即可。

代码语言:javascript复制
// 额外显示之后的一行
grep -A 1 keyword file

// 额外显示之前的一行
grep -B 1 keyword file

// 额外显示前后各一行
grep -1 keyword file

Share:《后端存储实战课》学习小结

主要内容:学习收获与个人思考

分享个人对学完极客时间专栏 《后端存储实战课》 之后的技术收获和自我当下状态的思考。

文章地址:《后端存储实战课》学习小结

https://www.yuque.com/wenren/system/done

0 人点赞