ARTS-Week 2
第二周的 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
本周分享朱赟的一篇文章《如何帮助团队成员成长》
作为管理者不要用静态思维去看待团队成员。比如今天你的的能力水平在一个级别上,静态思维在很长时间内都觉得,你只能做这个级别的事,而不去考虑尚未被挖掘的潜力和创新能力。如果管理者有了这种思维,就给团队中每个成员的成长设下了阻力。
在一些知名大公司,提升人的标准就是:你是不是已经在过去的半年到一年里,按照下一个级别的标准在工作。如果上级一直以静态思维看你,一直不给你机会,那么是很难被提升的。
作者给出了建议,管理者应该做哪些思考:
- 怎样做能够让员工进步到更高层次?
- 他的潜力在哪,哪些地方是可以培养和挖掘的?
- 怎么帮助员工改进他与组内组外同事的关系,让他有机会更好地发挥他的长处
- 怎样尽早地发现他的错误和缺点,并帮助他认识和改进,而不是在错误后追责
- 怎样帮助他在不擅长的领域建立信心
- 怎样帮助他学会处理各种压力和矛盾
除了管理者,其实被管理者可以多想下,我现在做的事情是不是下一个级别的标准的工作,如果不是,为什么不是,自己是否可以去主动争取。 我们对待团队成员要有士别三日,当刮目相看的态度。