ARTS挑战
Algorithm-一周至少一道算法题
Review-阅读并点评至少一篇英文技术文章
Tip-学习至少一个技术技巧,总结和归纳在日常工作中所遇到的知识点
Share-分享一篇有观点和思考的技术文章
01-Algorthm
———————
leetcode-872:https://leetcode.com/problems/leaf-similar-trees/
leetcode-1022:https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/
解题思路都很类似,递归,遍历根节点、左子树,右子树,关键是找到终止递归的点。
02-Review
——————
https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/
JUnit最佳实践:
单元测试的目的不是为了找bug,只是为了检查代码单元逻辑的正确性
如果要为了找bug,最好的办法就是运行整个应用,调用对应的接口
Mock一切外部服务
每次只测试一个代码单元
不要对配置进行单元测试
https://loneidealist.wordpress.com/2017/07/03/distributed-coordination/
总结学到的分布式系统中的概念:
分布式协作
分布式协作出现的原因:在分布式系统中,一个集群中的所有节点需要互相通信,如果让节点自己去做,那么就会十分复杂,于是就需要一个“中间媒介者”去做这件事情。更进一步的,把这个“中间媒介者”从集群中拆分出来,独立为一个系统。
高可用
系统的高可用性意味着一群服务器运行时与单台机器运行时没区别。分布式系统就是为了实现高可用而出现的解决方案,通过负载均衡,将单个请求分布到多台机器,单台机器的失败就不会导致整个服务挂了。
解决了服务的可用性之后,遇到新的问题就是发现分布式系统中还会存储很多数据,这些不同服务器之间的共享的锁、数据、配置在运行中怎么保证就是正确的?这就需要分布式协作及共识。
共识
共识是分布式容错系统中最基本的问题,共识意味着多个服务器同意一个值。简单而言,共识就是分布式系统中如何认同一个值。
03-Tip
——————
二叉树算法题的遍历框架
/* 基本的二叉树节点 */class TreeNode { int val;
TreeNode left, right;
}void traverse(TreeNode root) {
traverse(root.left)
traverse(root.right)
}
JUnit最佳实践
单元测试的目的不是为了找bug,只是为了检查代码单元逻辑的正确性
如果要为了找bug,最好的办法就是运行整个应用,调用对应的接口
Mock一切外部服务
04-Share
—————
【Blog】Mockito-提高单元测试效率利器
参考引用
JUnit Best Pratices
https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/
distributed-coordination
https://loneidealist.wordpress.com/2017/07/03/distributed-coordination/
leetcode-1022
https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers/
leetcode-872
https://leetcode.com/problems/leaf-similar-trees/
更多精彩内容,请关注个人公众号。