Algorithm
func wordBreak(s string, wordDict []string) bool {
wordMap := make(map[string]bool)
for _, word := range wordDict {
wordMap[word] = true
}
length := len(s)
dp := make([]bool, length+1)
dp[0]=true
for i := 1; i <= len(s); i++ {
for j := 0; j < i; j++ {
if dp[j] && wordMap[s[j:i]] {
dp[i] = true
break
}
}
}
return dp[len(s)]
}
Review
Processing guarantees in Kafka
TIP
组内有同学分享了gohook黑魔法,通过改写指令对go这种编译型语言实现运行时aop。跟着源码粗略了解了下原理,核心代码主要集中在genJumpCode和CopyInstruction,记录下后续有空再详细学习下。
网上找到的资料:gohook 一个支持运行时替换 golang 函数的库实现
Share
怎么做技术规划
前置输入
- 时间:需要明确要定制多久期限的规划
- 业务理解:确定要达成什么目标
- 业界知识:竞品目前所处阶段、自己所处阶段、有没有业界通用解决方案和开源现成的东西
- 人力:明确可用的人力资源
怎么定制目标
- 目标要站在更高的组织维度,不止于解决当前问题,想清楚未来的方向。
- smart原则:
- Specific:明确的
- Measurable:可衡量的
- Achievable:可实现的
- Relevant:相关的
- Time-Bound:有时效性的
- 不同视角确认目标
- 问题视角:合作伙伴的提出的问题或者需求、历史线上事故怎么优化修复、去年遗留的任务
- 竞争视角:竞品分析
- 外部宏观视角:前沿技术、未来可能的需求
- 愿景视角:公司和大团队对团队的需求、用户/客户底层视角
转化为任务
- 设定全景图,然后按照业务架构一层层拆分
- 明确可执行路径:按照整体的大目标,拆分子目标,对每个模块进行子目标的拆解和拆分;对于每个子任务/目标,需要明确都要做哪些事情
- 设定里程碑
- 拆分负责人&人力资源