ARTS-week-3
1. Algorithm
[89. Gray Code](https://leetcode.com/problems/gray-code/)
问题描述:
一个数组,任意位置连续两个数的二进制表达中两个数仅一bit不同,则整个数组可以称为Gray Code,给定一个数n,表示二进制的总位数,返回n位二进制数组成的一个Gray Code(任意一个即可但需要以0开头)。其中n=0时返回[0],n=1时,返回[0, 1]
在做1位、2位的时候,就发现了可以使用递归,但是递归的规则仍然需要思考一下。当为k位时,假定已经有了一个数组result,当为k+1位时,无非是新增了result.length个数字,且最高位为1而已,因此自然想到利用result,将result里的每个数都加上1 << k即可,假设得到result2,但是如何将result和这新的result2进行拼接呢?显然result[length - 1]和result2[0]并不是满足只有1位不同的条件,但是result[length - 1]和result2[length - 1]却满足,因此自然想到将result2反转一下。代码如下:
虽然是medium难度,不过其实和easy也相差不远,只要能够想到递归,应该就能很快的解答。当然,无论如何,各种临界值还是需要测试下的。
2. Review
Spring In Action 5th第1.4节。
大致对spring的各个模块进行了介绍,包括:
Core Spring Framework
Spring Boot
Spring Data
Spring Security
Spring Integration and Spring Batch
Spring Cloud
目前来讲,Core Spring肯定是必须要掌握的,而Spring Boot,已经成为了开发应用不可或缺的了,至于Spring Data,当需要与数据库打交道时,自然需要它,而由于对安全性的需求,Spring Security也必不可少,Spring Integration and Spring Batch则是为了整个别的应用或者整合别的Spring模块,由于微服务的盛行,Spring Cloud也变的十分火热,至少需要对其又一定的了解。
3. Tips
学习了盛延敏老师的《网络编程实战》,总结下TCP连接中的异常情况。假设对端发生问题,来分析本端的结果。
可以按照对端是否发送FIN划分异常情况:
对端发送FIN,一般都是对端进程崩溃,或者关机
对端不发送FIN,一般为对端主机崩溃,或者网络连接不可用
一般而言,要感知TCP的状况,有两种方法:
进程阻塞于read,内核发送结果
内核向进程发送信号(例如SIGPIPE)
总结的思维导图如下:
4. Share
分享下吴军老师的《硅谷来信》,第一封信:不做伪工作者。
伪工作者,大概是这样的一种状态:要做的事情太多,总是做不完,但是显得忙碌却不见成果。
解决问题的唯一方法,大概就是放弃掉一些事情,而不是吧所有的事情都凑合着做完。
新员工都欠缺着一个技能:
一个人所追求的不应该是完成了百分之几,或者百分之几十的工作,而是做完了那几件重要的事情。一个聪明的员工,应该善于找到最重要的工作,并且优先完成他们。
防止成为伪工作者的方法:
首次,管理着要让员工在“做什么事情能让公司最大获益”的基础上去工作。
其次,管理者要让员工明白,他们积极工作(而不是消极完成任务),最大的受益方是他们自己。
作为一个工作不到两年的基层员工,基本上无法体会没太curd代码到底是如何让自己受益的,也不曾想过要如何让公司最大获益。不过从很具体的事情上讲,代码写好单元测试,有目的的重构,总归会是个双赢的结果。能够有足够的观念转变,也才能够有积极的心态去工作。
评论