左耳听风-ARTS-第5周(2019/4/28-2019/5/4)
Algorithm
这道题给定一个整型数组和一个整型值,要求就地删除整型数组中和整型值相同的元素(https://leetcode.com/problems/remove-element/)。我的解题思路是从数组开头开始比较,遇到相同的元素,再从数组结尾开始找一个不相同的元素填过来。
public int removeElement(int[] nums, int val) { if (nums == null || nums.length == 0) { return 0; } int length = nums.length; int i = 0; int j = nums.length - 1; for (; i <= j; i++) { if (nums[i] == val) { while (i <= j && nums[j] == val) { j--; length--; } if (i <= j) { nums[i] = nums[j]; length--; j--; } } } return length; }
Reading
本周阅读的文章是《Ask "What Would the User Do?" (You Are not the User)》(https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_03/)。我们在设计软件时经常站在自己的角度思考功能、流程,殊不知用户和程序员的思维差异很大,用户并不那么了解计算机,所以更高的效率是看用户操作,怎么使用一款同类型的软件,甚至不要光听他们说,因为他们说的和在真实情况下的操作是有很大的差异的。
Tip
本周在工作中遇到一个微服务架构中数据重复插入的问题,这其中牵扯出一个概念,幂等性(idempotent),指同一请求,重复请求多次,得到的结果是一致。这其中的理解误区是不是每次请求的结果都要一样,可能只有第一次的结果是成功的,而是请求一次和请求多次的结果一样,对服务器的影响是一样的。
Share
Java并发的相关总结,https://www.cnblogs.com/minguo/p/10815546.html