1. Algorithm
1.1 LeetCode 1. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这是LeetCode第一题,第一次打开LeetCode就做过(虽然都是看的别人答案)。不过可能是用Visual Code插件的缘故,提交记录中居然没有这一题,所以就再做一遍。
不得不说,只看别人答案而不自己主动思考的结果就是忘记。下面这个解法还是思考了很久后才写出来的。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
ret = []
# 用一个dict记录target与当前值的差,value为index
num_dict = {}
for index, value in enumerate(nums):
if value in num_dict.keys():
ret = [num_dict[value], index]
break
else:
diff = target - value
num_dict[diff] = index
return ret
2. Review: Using a DDD Approach for Validating Business Rules
2.1 背景:DDD简介
DDD(Domain Driven Design),中文译名为领域驱动设计,是一种软件设计思想。最早是由Eric Evans在其著作《领域驱动设计》中提出。
DDD关注将业务与实现分离,可以说,使用DDD思想设计实现的系统应该是能分离业务与开发的关注点,使其更加专注于其自身的逻辑,让项目参与者各司其职,让软件架构的演进不影响业务稳定性。
2.2 摘要
- 业务规则是某一个领域的知识
- 把业务规则结构化可以减低出现错误的可能而且也更易于维护
- 业务规则有不同的职责,比如提供校验以及可以据此生成输出
2.3 结构化的业务规则的重点
- 面对变化能保持一致性
- 易于测试
- 维护数据要注意一致性
- 易于诊断
3. Tip:Guarded Suspension模式
构建分布式系统时不可避免的会遇到异步转同步的问题。
比如发起请求之后,其响应是由事件的方式获取到的,那么当前的线程如何拿到结果呢?答案就是并发设计模式中的Guarded Suspension。
4. Share: 别拿测试不当代码
有关如何编写单元测试的文章一直都想写,攒了很多废话,真决定要发出来的时候删去了许多。我想写一个Java程序员如何编写单元测试的系列文章,且把这篇当做开始,文章移步
1万+

被折叠的 条评论
为什么被折叠?



