第二周的 ARTS,继续加油。

Algorithm

Add Two Numbers

Given a 32-bit signed integer, reverse digits of an integer. Example

Input: 123
Output: 321

Input: -123
Output: -321

Input: 120
Output: 21

解法1

思路是通过余除得到低位到高位的数字,然后乘10。难点是要考虑到反转后可能大于0xFFFFFFFF-1。

class Solution {
    public int reverse(int x) {
        int flag = 1;
        int result = 0;
        if (x < 0) {
            flag = -1;
            x = x * flag;
        }
        while (x > 0) {
            int tail = x % 10;
            result = result * 10 + tail;
            if ((result - tail) % 10 != 0) {
                return 0;
            }            
            x = x /10;
        }   
        return flag * result;
    }
}

Review

How to read an RFC

以前自己在学习标准协议时,不管是看 RFC 还是 3GPP,总有一些地方觉得不是很明白,经常看得云里雾里,在这篇文章中,作者描述了怎样阅读 RFC。
首先,在文章顶部标识了该文章的发布方,“Internet Engineering Task Force (IETF)” 表明是经过IETF审核和声明的协议。从“Category”可以获知该协议是否是标准协议。Category 表明是完全替换了对应的RFC,Updates表明是对以前的协议进行更新。 我们平时在读协议时很可能选择性的阅读,作者建议在选择性阅读时,也要去读相关的引用,便于更好地理解整个协议。阅读时还需要理解“should”,”must”等词语的准确含义,这在阅读协议时要特别注意,尤其是在对协议实现进行联调或测试时,每个人的理解不一样,实现就会有差异。对于RFC中的例子,我们需要注意它不一定是完整和准确的。另外,我们还需要重视协议中的安全注意事项。如果我们还想进一步了解RFC协议的内容,可以去找工作组或者通过邮件列表获得帮助。

Tip

问题记录

这周的 Tip 是记录了学习《Spring 实战》的校验表单章节时,@NotNull 注解不生效的问题。 在给表单的属性添加了 @NotNull 注解后,如下:

	public class Spitter {
    private Long id;

    @NotNull
    @Size(min=5, max=16, message = "{username.size}")
    private String username;

    @NotNull
    @Size(min=5, max=25, message = "{password.size}")
    private String password;

    @NotNull
    @Size(min=2, max=30, message = "{firstName.size}")
    private String firstName;

    @NotNull
    @Size(min=2, max=30, message = "{lastName.size}")
    private String lastName;	
	...
	@RequestMapping(value = "/register", method = POST)
    public String processRegistration(@Valid Spitter spitter, Errors errors) {
        if (errors.hasErrors()) {
            return "registerForm";
        }
        spitterRepository.save(spitter);
        return "redirect:/spitter/" + spitter.getUsername();
    }

给对应的属性输入空值,还是能够正常提交表单,注解未生效,排查代码,发现导包错误 import com.sun.istack.internal.NotNull,实际应该导 import javax.validation.constraints.NotNull,修改后注解还是未生效,在 stackoverflow 输入@NotNull does not work 一下就查找到是没有导入hibernate-validator.jar的原因,在 maven中增加该包的依赖,注解生效。再一次体会到英文关键字搜索能力和使用好的搜索工具的重要性,下面附上该问题解答的链接:https://stackoverflow.com/questions/7545231/bean-validation-notnull-notblank-and-notempty-does-not-work-in-jsftomcat

Share

本周分享朱赟的一篇文章《如何帮助团队成员成长》
作为管理者不要用静态思维去看待团队成员。比如今天你的的能力水平在一个级别上,静态思维在很长时间内都觉得,你只能做这个级别的事,而不去考虑尚未被挖掘的潜力和创新能力。如果管理者有了这种思维,就给团队中每个成员的成长设下了阻力。
在一些知名大公司,提升人的标准就是:你是不是已经在过去的半年到一年里,按照下一个级别的标准在工作。如果上级一直以静态思维看你,一直不给你机会,那么是很难被提升的。
作者给出了建议,管理者应该做哪些思考:

  1. 怎样做能够让员工进步到更高层次?
  2. 他的潜力在哪,哪些地方是可以培养和挖掘的?
  3. 怎么帮助员工改进他与组内组外同事的关系,让他有机会更好地发挥他的长处
  4. 怎样尽早地发现他的错误和缺点,并帮助他认识和改进,而不是在错误后追责
  5. 怎样帮助他在不擅长的领域建立信心
  6. 怎样帮助他学会处理各种压力和矛盾
    除了管理者,其实被管理者可以多想下,我现在做的事情是不是下一个级别的标准的工作,如果不是,为什么不是,自己是否可以去主动争取。 我们对待团队成员要有士别三日,当刮目相看的态度。