download:破解JavaScript高级玩法
解决问题后的好奇
如果每个目录都会产生一个Bucket
,那如果运行一个流作业,岂不是迟早碰到相同的问题。这么显而易见的问题,社区的大神们肯定早就想到了,好奇心驱使着我寻找答案——直到看到了这段代码:
public void commitUpToCheckpoint(final long checkpointId) throws IOException {
final Iterator>> activeBucketIt =
activeBuckets.entrySet().iterator();
LOG.info(
"Subtask {} received completion notification for checkpoint with id={}.",
subtaskIndex,
checkpointId);
while (activeBucketIt.hasNext()) {
final Bucket bucket = activeBucketIt.next().getValue();
bucket.onSuccessfulCompletionOfCheckpoint(checkpointId);
if (!bucket.isActive()) {
// We've dealt with all the pending files and the writer for this bucket is not
// currently open.
// Therefore this bucket is currently inactive and we can remove it from our state.
activeBucketIt.remove();
notifyBucketInactive(bucket);
}
}
}
【破解JavaScript高级玩法吾爱fenxiang】做
Checkpoint
后的提交时,这里会根据Bucket
是否处于活跃状态来决定是否移除在内存中维护的数据结构。推荐阅读
- Google V8系列(三)V8提升函数执行效率的策略(Inline Cache(内联缓存))
- V8如何在内存中快速查找对象属性(隐藏类)
- javascript|【井字游戏】做一款回忆童年的游戏
- 个人|作为一个前端开发工程师,你会怼人吗?
- 前端VUE|Vue用户管理(增删改查)功能详情
- 工作记录|formJson说明
- 前端相关|【前端兼容性】常见的浏览器兼容问题及解决方案
- 程序员|ios微信抓https包提示证书安全警告解决办法
- javascript|微信H5页面前端开发,大多数人都会遇到的几个兼容性坑