Home

week49

Overview begin a brand new week Monday continuous meeting project curious why amye so urgent to push traffic light waiting time(KPI?) why suri not keep taking control historic traffic pipeline, and hand it over, the main logic is still under DS team rainy skip the swimming muscle relax Tuesday can not fall sleep 菊花251 个人一直对菊花`的...

Read more

week48

Overview 这是blog的第一篇weekly,之后争取每周都记录自己当周每日的观感、体会、收获。 可以是一句话,可以是一文摘,可以是一张图 keep and move on 一年有52周,52*7=364天 不采用dash来分割,而采用title,使得可以在目录直接就一览到当周的事项。 20191125 ~ 20191201 Monday 11k prepare for SCSM Tuesday 11k prepare for SCSM wanna hair cut, but too late after dinner pretty good dessert 杨枝甘露 Wednesday WFH hair cut ...

Read more

Golang传值与传地址的内存逃逸

Overview 现象 go语言逃逸 为了提高效率,常常将pass-by-value(传值)升级成pass-by-reference(传地址,其实还是传值,只是传参类型是引用类型,这样就不是copy内容,而是copy地址), - 传值,copy一份到该线程**栈**中,没有gc,但是会在栈中消耗一定内存 - 当参数为变量自身的时候,复制是在栈上完成的操作,开销远比变量逃逸后动态地在`堆`上分配内存少(即此时传值更优) - 传地址,全局只有一份减少复制,但是会产出gc - 不要盲目使用变量的指针作为函数参数,虽然它会减少复制操作 在go里面只有传值,都是一个副本,一份拷贝[4], - 拷贝的内容是非引用类型(int、string、struct等)时,在fun(ar...

Read more

Golang多线程与异步关注点

Overview 多线程 一个典型的多线程模型是生产者-消费者,多个生产者线程往一个queue/chan里面写数据,然后另一侧多个消费者线程从queue/chan里面读数据。 异步 在生产者-消费者模型了,如何判断生产者成功写入一条数据? 同步,record被完全确认(这里的确认可以是来自queue/chan侧,也可以是来自consumer侧) 异步,生产者只管往queue/chan里面发,暂时不管后果 如果完全不管后果,即不管queue/chan crash/full与否,都一直发 根据统计来决定自己(生产者)是否要中断发送(send timeout stats) code解析 package main impor...

Read more

PySpark自动化测试关注点

Overview 之前一直使用scala写spark pipeline,这次试着使用PySpark来模拟,主要希望熟悉一下Python的自动化测试的文件组织、mock用法、三种verification方法、code Linting,以及docker化prd-code。 文件结构 可以不用跟golang一样与prd-code在同一个目录下。当然也可以这样做。但是单独一个test目录可能会更清晰。 test 我用过的测试部分是unittest和pytest,而在Python3里面,unittest好像有了长足进步,可以灵活配置,可以mock等等,而且是built-in的。 验证 常用的验证是跑ut来confirm,这里使用了三种方式, 常规unit test ...

Read more

北京一周

Overview 上周到北京,应该算是寒冷的一周。 周六早上到,当天还算工作日。当天是Kipchoge的159 plan,在酒店看了他的直播,很厉害。傍晚在旁边吃了。 welcome home, enjoy your fast pass 周日跟alei将三年前未完成的西三环补完。 东三环 西三环 周一到office,开始认识team,开始code,开始这一周。 Mon. Mon. nightfall Tue. Thu. Fri. 周六是雾霾的一天,本来计划是西山半马越野,但是天气不好,白天在酒店和旁边的金源呆了。晚上去屯里的院子里撸柴。 咖啡豆 周日回程...

Read more

kubernetes关注点

Overview kubernetes(k8s),高效解决(kube-scheduler资源调度)容器化应用程序pod-containers在部署、伸缩、高可用(kube-controller)等方面的DevOps问题。 architecture diagram data flow dig into node (not master) Version v1.16.1 组件component 主节点master kube-apiserver把相关的pod和service配置存储到etcd中 kubectl restful API client kube-scheduler ...

Read more

20190929新加坡国际铁人三项

Overview 来坡之后,在yingzhan的提示下,报名了SIT(Singapore International Triathlon)。 首先要了解铁三规则,了解transition等等。之后就是买单车,然后加入当地铁三组织。 之后就是训练, 环过岛, 那天环岛,从宿舍出发,但是到了Marina就爆胎了,之后推车大半小时到24h-迪卡侬,由于修车师傅还没上班,门卫小哥和我一边看YouTu学补胎,一边搞捣起来。 补完胎,继续上路。 跟Meetup的伙伴cycling过western loop,在宿舍附近的Singapore River两项过。 为了练车,从宿舍骑车到Novena Velocity领过物,也骑到过downtown唱k。 当然也...

Read more

scala自动化测试关注点

Overview 想在一个Scala项目里面统一描述下面的内容, sbt scalafmt scalatest scalamock scalabenchmark 还是以之前的golang自动化测试关注点[1]的s3 client例子为出发点,描述一下其在scala下面的test和mock,还有benchmark,顺带将其format也统一起来。 Module sbt 不用每次都reopen项目,只需要restart sbt shell,然后直接运行update就可以。 根据上面截图的配置,当改动了.sbt后,会触发一个让你手动import Changes的tip,然后点击就会更新到最新的sbt。 又或者点击IDEA的右上角的sbt Tab的左上角的Rei...

Read more

golang自动化测试关注点

Overview 在一个软件的生命周期中,测试test是非常重要的一环。 关系到代码质量,稳定性,可维护性。可以让你在代码重构时及时发现错误,以便更加大胆地去尝试重构。 全流程 目前我的整个go测试包括主要有, 编写生产代码 自动生成测试代码(根据生产代码) mock对象,如果测试代码的client很难在线获取到数据,使用mock对象替代之(if necessary) 运行测试代码 go test -v 观察测试指标 accuracy coverage benchmark(performance) 编写生产代码 定义一个st...

Read more

protobuf关注点

Overview 最近有在使用pb,然后记录一下用法, 正常步骤是, 需要先定义一个.proto文件 运行protoc命令,如protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto 之后使用指定目录的.java文件 但是这样会比较麻烦(每次改动.proto,都要运行protoc),而在scala里面,有auto gen的插件(ScalaPB),这样可以免去第2步命令的运行 example sdkprotobuf 结论 tag number最重要 if tag number not change, but field name change, then output w...

Read more

第三次骑行

Overview 今天周六,在床上挣扎了一下,最后还是起来去了sentosa骑行。其实这是一段很简单的路,大概15km,但是中间去买了手套,车胎打了气。导致整段路感觉很长。 今天其实不算很晒,但是太阳还是一直没被遮挡。有人说新加坡的自行车没有路权,个人觉得不然,司机还是很礼让骑手的,当然马路上也印有Ahead Humb,但是骑手要注意转向的变道。 我今天就遭遇了很多次这样的。我在4车道的最左侧直行,然后导航说下一个路口右转,要跨越三条道,在有后方来车的情况下,还是蛮危险的,我就没有控制好,好多回都把自己逼停在左侧的斑马线上,然后等2个交通灯,之后降级为行人,通过斑马线到对面,要等好久,要等好久,怎么解决呢? 熟悉路线,提前摆手示意变道,不要等导航说变,再变,那时候大概率是迟了...

Read more

来新一个月小结

Overview 来新有一个月了,说说这边的观感, 大家比较主动social,周末经常会约到家里吃饭,搬家也会有house warming,晚上吃完饭9点多了,还会到家里坐一会喝个茶聊一下,大概11点多才告辞,当然这里公共交通差不多也是开到凌晨 虽然没有官方的时差,但是感觉这里跟国内差了1个多小时,国内11,12点吃中午饭,这里12,13点 这里没有996,晚上6,7点基本没人了,楼下的餐馆也打烊了,因为大家晚上都会回家吃饭或者约伴到downtown吃饭 这里比较注重体育健身,身材都保持得很好,当然也有麦当劳大肚子 工资是满额发的,只是年初报税是一并上缴 这里多为2种食物,华人和印度,西餐都不算主流,在food court里面的餐饮占比就看得出 语言确实...

Read more

Git关注点

Overview 记录一下自己常用的一些Git功能 rebase 合并master上的commit git rebase -i HEAD~3,然后从展示的交互页面中选定要取,要留。一般是第一个改为p,其余都改为s(commit log是越新越底) git add .,如果交互没有报错 git rebase --continue git push -f,一般情况会跟origin-master有冲突,所以要force push 提交dev分支前使用rebase,可以把master上的最新commit前插到本次dev的最旧commit stash 暂存一些内容。比如现在在开发feature1,突然有一个...

Read more

Docker关注点

Overview 概念 A container容器 is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another(类似于一个打好的jar包) Docker is a tool designed to make it easier to create, deploy, and run applications by using containers(本身并不是容器,而是创建容器、打包容器、部署容器、运行容器的工具...

Read more

Golang关注点

Overview 之前一直是JVM系(Scala, Java)的爱好者,因为GC,因为大数据领域大部分都是JVM系。但是网上关于Golang(go)的讨论好多,天生的并发支持,Google支持,后端服务器利器等,都蛮吸引的,并且go没有C++的那些内存free,即go也是GC的,所以来学习一下 :grin: why go? explained by Grab, Go 的并发模型特别适合打车类业务。打车业务的特点是并发度高,单一任务(一次打车)持续时间长,Goroutine 非常适合编写这类程序,它的机制允许工程师以最自然的思维模式写业务代码 Go 是面向工程的语言。它的很多特性都特别适合大团队使用,比如强制统一的 gofmt 格式标准,避免了一切美学方面的争论。再比如内嵌的...

Read more

Cerebro全栈工作流梳理

Overview Cerebro一直是我觉得比较好用和美观的elasticsearch web admin tool。它是独立部署的,开箱即用,输入es host即可。 囊括了前端UI,后台交互,是一个相对完整的独立应用,有很多实现上的借鉴意义。比如说自己的一个想法,如何实现前端点击->后台交互->入库保存—>返回前端渲染等都可以参考。实在是一个全栈工程师的必备良选。 代码划分 Structure html骨架 先来看看前端的html骨架吧,入口如下, 开始登入connect.htmlloginlocalhost:9000 登入之后,navbar.html,主要分为4个tab(overview, nodes, re...

Read more

建筑与摄影

Overview 今天邮件推送说贝聿铭(Ieoh Ming Pei)去世了。我不记得是从什么时候开始,记住了贝老。可能是他是广州人,可能是我也比较喜欢拍摄建筑。 一直以来自己都很喜欢拍摄静物,无论是自然风光还是建筑,可能对动态的人一直理解不深,不能麻溜地捕捉神态吧。 而说到建筑的拍摄,就绕不过去贝老的很多杰作。虽然我亲身见识过的大概只有巴黎卢浮宫,香港中银大厦,北京香山饭店这三个了,可惜我当时都没有拍下来。 下面列举个人prefer的贝老作品,希望接下来会有机会,静下心来,实地琢磨这些作品,这些光影。 Collection 1989 Paris Musée du Louvre image from Benh LIEU SONG 1997 MIHO MUSEUM ...

Read more

0511周末

Overview 这个周末,想记录一些东西, 巴黎Major 这个周末刚好碰上Paris这个major的决赛,很久没有看dota2的比赛了,上一次还是18年的TI,那时候是OG夺冠,通宵看的。这次是Secret夺冠,没有通宵看了,看完了Liquid对阵EG就睡了。总体来看,这次Secret夺冠一直是高进高出的,始终在胜者组。而TI8的OG在当时更多地是被认为是黑马,因为中路Topson是新加入的。 就像赛后采访zai所说的,不要低估你的对手,认真对待和尊重每一场比赛。回归到代码当中,是否也是如此,认真对待和尊重每一题,每一块代码。 Secret归来依旧是大魔王 MV 周末看了林俊杰的一个MV,可惜没如果,讲述一段三角恋。 一段前奏带你进去,之后开始讲述,其实还是...

Read more

Bitmap压缩算法

Overview 位图bitmap/bitset在大数据领域用途比较广泛(uv去重,布隆过滤等),但是原生的比较耗费空间,下面介绍其压缩方案, 原生位图 在基数明确的情况下,即[0, N],那么就会建立val arr = Array.fill(N+1)(Boolean) // fill应该是Bit,这里有一个int的实现,借用了&=和|=。 所以若要判断N是否存在,那么就看arr(N-1)是否为1(默认0是不存在,1是存在,这里只能判断有无,不能判断有多少)。 缺点:arr的内存占用只跟N有关联,所以如果是稠密的话,还算有价值;极端情况是基数只有1个(即一个很大的N),那么arr(i)=1只在N-1处,其他的arr(i)都是0,导致很多空余,浪费内存。 e.g., N=...

Read more

Scala调度器Aloha关注点

Overview 一直想自己弄一个分布式调度器,感觉一个调度器包含了比较全面的架构知识点, 比如,rpc,分布式master-slave(worker),HA,元数据,数据库,并发,异步,调度 今天刚好再公众号里面看到介绍的Aloha,而且还是scala写的,之前看的Oozie和jobnavi都是java写的。那么看看这个Aloha是如何工作的,一步一步分解她的各个模块和工作流程,力求之后自己能够独立写出一个分布式调度器来:smile: 主体架构流程 Modules 这一节主要分解各个模块的架构和流程, 先认识一下里面的术语, master 主节点,一般情况下是有1个active,2个standby 保存了所有worker i...

Read more

iTerm2个人配置

Overview 之前一直在用Terminal.app,跟XShell有一些差异。想着用iTerm2试试磨合磨合,下面记录一下我的安装和配置记录。 安装 下载iTerm2 解压之后直接将iTerm.app放入Applications 双击iTerm.app 安装zsh 设置打开iTerm2模式使用zsh,chsh -s /bin/zsh 设置打开iTerm2模式使用bash,chsh -s /bin/bash 安装后的snapshot 配置 因为默认的配置和主题不是很match自己的style,所以做出了以下改动, 更换主题 更换和添加快捷键 跳词 ...

Read more

Scala ADT关注点

Overview ADT(Algebraic Data Type, 代数数据类型),是函数式编程(FP)构建组合类型的方式。 编程语言会内置一些基本类型(Primitive Data Types, Byte, Short, Int, Long, Float, Double, Boolean, Char),但是基本类型只能表示非常简单的值,无法对复杂的现实世界建模,因此编程语言还会提供将基本类型组合成复合类型。 不同编程语言提供了不同的构建组合类型的机制,例如,常见于C++,java的是结构体struct,类class,而在scala里面就是ADT。 代数模型有三类product、sum和Hybrid,常见是前两类, product,是一种组合,即A和B,如Tuple()...

Read more

分布式事务关注点

Reference 来了!阿里开源分布式事务解决方案Fescar 再有人问你分布式事务,把这篇扔给他 spark君第一篇图文讲解Delta源码和实践的文章 漫画:什么是分布式事务?

Read more

Celery多生产者部署的定时任务去重

Overview 最近在部署webserver,同一个应用(生产者)部署在3个机器上,3个机器都启用了Celery来启动定时任务,执行文件的增删。 可以看到在mq和celery worker阶段都可以做到高可用。但是在user application阶段,存在single point failure的情况,如果单点故障,定时任务就发送不到broker了。 而为了消除user application的SPF或者增加整体吞吐量,一般会部署多个application,而这样的情况,每个application都会发送相同的定时任务到broker,导致同一时间就会有多个task。 虽然增删的底层是原子性的,但是多个API同时执行,最后通过conflict来确认是不妥当的。为了解决...

Read more

劳动节回家

劳动节,回家,行山,发呆。 早上9点上的车,到家竟然是下午3点。平时90分钟的车程,因为塞车,硬是搞了半圈。 原本以为是今天早上会人少点,谁知道竟然更多。可能大家都选择休息一晚之后,才开始踏上路途了。 应该昨天晚上就回的,啊,失策了。 路上看了一部分hongjian的blog,发现自己看不懂,看不进。 车过了虎门之后,12点半了吧?紧尿,塞车,没办法,忍到了东升服务区,顺带吃了点饼干。 到家3点半了,放下奖牌和羊公仔,出发行山。先去了mashan,再去dadong。 全部处理完大概7点半了,天也开始黑了,laotou还打趣laoma,让她请吃饭,哈哈,中午因为我的塞车,午饭剩很多,就没有去外面了,回家喝了汤,吃了个油桃。 洗澡之后就开始吃饭,吃完饭,谢谢b...

Read more

搬家

之前在jianshu写,后来没有写,希望之后能在这捡起来。 可能前面迁移过程中有一些格式的不兼容,导致阅读体验差。之后遇到再逐一修复吧。 更新与20190528,jianshu的图片加入了防盗链,如果是刚刚打开过,是能够打开的,但是如果过了一段时间(24h)就不能再打开了,除非手动粘贴image url。 从github page已经无权限打开了,现在的方式是github issue。 操作与jianshu一样。希望后续的blog可以更好地组织起来吧。 要是想看之前的blog,并且图片可以正常展示,可以到我之前的jianshu blog看。

Read more

算法漫画阅读摘要

记录一下个人对于公众号算法爱好者和程序员小灰的阅读摘要, B-树(B-tree) B-树就是B树,中间的横线并不是减号,B减树的叫法是错误的 二叉查找树的时间复杂度是O(logN),但是数据库索引是存储在磁盘上的,当数据量比较大的时候,索引的大小可能就有几个G。利用索引查询的时候,一般不能将其全部加载到内存,而是逐一加载每一个磁盘页,这里的磁盘页对应着索引树的节点! 决定磁盘IO次数的是索引树的高度(最下面的叶子节点高度是1,根节点的深度是1),为了减少磁盘IO的次数,就需要把原来瘦高的树结构变得矮胖 每一个节点最多包含k个孩子,k称为B-树的阶,k的大小取决于磁盘页的大小。特征: root节点至少两个子节点 中间节点都包含k/2-1~k-1...

Read more

Zookeeper关注点

自己没有尝试过Zookeeper(zk)的直接应用,但是在很多大数据栈/分布式系统当中,zk都充当着重要角色。如HDFS/YARN的HA,HBase存放regionServer心跳,Flume负载均衡和单点故障。那么参考网上的文章,希望将zk的架构和具体模块理清, Overview Zookeeper主要是一个分布式服务协调框架,实现同步服务,配置维护和命名服务等分布式应用,基于对Zab协议(ZooKeeper Atomic Broadcast,zk原子消息广播协议,分布式一致性算法)的实现,能够保证分布式环境中数据的一致性。 简单来看,zookeeper=文件系统+通知机制。 用途 集群管理 集群机器监控/负载均衡 在分布式的集群中,由于各种原因,...

Read more

大型网站与大数据系统的架构

记录一下个人看了一些大型网站架构文章后的理解, Overview 衡量一个网站是否为大型网站,访问量和数据量二者缺一不可。除了海量数据和高并发的访问量,本身业务和系统的复杂度也是考察的方面 大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以PB计的数据和面对数以亿计的用户,问题就会变的很棘手 大型网站架构主要就是解决这类问题 1. 大型网站系统的特点 1.1 高并发High Concurrency,大流量 需要面对高并发用户,大流量访问。Google日均PV数35亿,日均IP访问数3亿;腾讯QQ的最大在线用户数1.4亿(2011年数据);淘宝2012年“双十一”活动一天交易额超过192亿,活动开始第一分钟独立访问用户...

Read more

Yelp: A stream processing pipeline for an online advertising platform

文章里面提到了2个问题, no state tracking do not support complex customized business logic 它们通过updateStateBykey(update_func)/mapWithState(update_func)来自定义该update过程。即, Attach expire date/time when events are first seen & state is initialized drop the state if it expires apply business logic to new events/current state 我借用了该ppt的思路,试...

Read more

Spark Submit 2017 SF Note

写一下看了部分spark submit 2017 ppt后的个人理解, Apache-Kylin–Speed-Up-Cubing-with-Apache-Spark-with-Luke-Han-and-Shaofeng-Shi-iteblog,kylin利用spark来加速之前MR的cube build过程 很多关于IoT的spark应用。ETL,real-time-analysis A-Deep-Dive-into-Spark-SQL’s-Catalyst-Optimizer-with-Yin-Huai-iteblog,spark SQL优化项 Apache-Spark-and-Apache-Ignite–Where-Fast-Data-Meets-the-IoT...

Read more

Spark Streaming 2.1.0 Programming Guide 个人理解与翻译

简单写一下自己读了Spark Streaming 2.1.0 Programming Guide之后的体验,也可以说是自己对该编程指南的理解与翻译。 https://spark.apache.org/docs/2.1.0/streaming-programming-guide.html Overview Spark Streaming(下称streaming)是Spark core的拓展,一个易扩展、高吞吐、高容错的流式数据处理系统。 streaming接收输入数据(kafka等)然后根据设置的处理时长batch interval将其切割为一个个的小数据集,然后对小数据集进行spark core/sql/mllib的操作,最后将处理后的小数据集输出。 str...

Read more

Spark streaming一次调试过程

记录一下最近调试Streaming程序的过程中所发现的问题和解决方案, 背景,batch interval = 120s,10个receiver,吞吐量每秒1000条,一个batch的cache大小是1639KB,每条record大小=1639/(1201000)1024=13.99字节 Q1. Container … is running beyond physical memory limits Diagnostics: Container [pid=2542,containerID=container_1509019554197_2190124_01_000001] is running beyond physical memory limits. Cur...

Read more

Spark SQL Catalyst优化器

记录一下个人对sparkSql的catalyst这个函数式的可扩展的查询优化器的理解, Overview Spark SQL的核心是Catalyst优化器,是以一种新颖的方式利用Scala的的模式匹配和quasiquotes机制来构建的可扩展查询优化器。 sparkSql的catalyst优化器是整个sparkSql pipeline的中间核心部分,其执行策略主要两方向, 基于规则优化/Rule Based Optimizer/RBO 一种经验式、启发式优化思路 对于核心优化算子join有点力不从心,如两张表执行join,到底使用broadcaseHashJoin还是sortMergeJoin,目前sparkSql是通过手工设定参数来确...

Read more

Spark性能优化总结

总结一下个人看了一些Spark性能调优文章之后的理解,主要框架来自于meituantech,会在此框架上加入个人关注点, Overview Spark的瓶颈一般来自于集群(standalone, yarn, mesos, k8s)的资源紧张,CPU,网络带宽,内存。通过都会将数据序列化,降低其内存memory和网络带宽shuffle的消耗。 Spark的性能,想要它快,就得充分利用好系统资源,尤其是内存和CPU:核心思想就是能用内存cache就别spill落磁盘,CPU 能并行就别串行,数据能local就别shuffle。 —-xrzs 开发调优 避免创建重复的RDD 比如多次读可以persist;但如果input太大,persi...

Read more

Scala设计模式

https://zhan-ge.gitbooks.io/scala/content/patterns-and-environment/design-patterns-categories.html 创建型 抽象工厂 工厂方法 惰性初始化 单例 对象池 建造者 原型 结构型 适配器 装饰器 桥接 组合 门面 享元 代理 行为型 值对象 Null 对象 策略 命令 职责链 解...

Read more

rpc-quickstart

记录一下个人对rpc的理解, Overview 两个不同应用之间的一问一答。A应用是一个进程(java -cp),B应用是一个进程(java -cp) 为什么要在两个应用之间切换,所有逻辑都在A做不可以吗?可以。但是这样A可能就是一个很庞大的进程了,受限于单机的cpu,disk,mem和GC,太庞大肯定是不行的。所以这里就需要拆分,那么就跟MapReduce很像 MR里面,一系列低成本的机器就可以handle庞大的请求量和数据量。当然还有很多其他原因,保密、数据互通等等。 Thrift Intro. 先来看看它的架构, 顶层黄色是用户根据thrift-IDL来定义的HelloWord.thrift文件 橙色和红色是运行thrift-0.11.0....

Read more

CRUD Demo Based on Django RESTful and IntelliJ IDEA

Overview 最近要升级API,由之前的堆砌方法升级到RESTful(每个URL代表一种资源),使用内置的CRUD route来定位资源并操作她。 下面看看结合IDEA的Django plugin如何new一个新demo。 Version QuickStart 在项目顶层新建模块 设置新模块,勾选Django,填入app名 名字由demo改为rdemo 自动生成代码 这里一开始顶层文件夹名字是restful-crud,由于带-导致代码不能自动生成,所以最后改为restfulcrud。 编辑MVC 修改表结构的models.py 修改实现逻辑的views.py 修改路由逻辑的u...

Read more

Oozie Source Code Main

最近想借着调度系统这个项目来看看业界出色的调度系统的源码,如Oozie,Airflow, Overview Oozie是雅虎开源出来的一个出色的工作流,支持很多jobType,spark,email等。主要分为3个角色, server,用于保持长链接,监听来自于client的jobSubmit,然后分发job到各个executor上去执行,执行结果展示在UI上 client,与用户打交道,用户在部署了client的机器上直接运行cmd,用来submit cmd,如kill,check,submit shardlib(adaptor, executor):真正的执行部件 Version <groupId>org.apache.oozie</grou...

Read more

Netflix单key存储的架构演进

记录一下看了Netflix实战指南:规模化时序数据存储后关于其中的单key存储的架构演进理解, Overview Netflix 的云原生存储架构使用了 Cassandra存储观看历史数据,考虑如下, 支持对时序数据的建模 在当前业务数据上,读写操作比是1:9。而Cassandra提供了高效写操作API,适用于当前的写密集型业务应用 CAP权衡,当前业务更偏向于C。而Cassandra支持可调整的一致性,有助于实现CAP上的权衡 演进路线总结, v1:一个用户一个key,key后面跟一连串的用户观影记录信息data。当data少时,可以快速定位<userId, data[record1, …, recordN]>;水平扩展性好。但是当data很大...

Read more

maven/sbt jar install

今天maven遇到问题,简单记录一下, 最好是配置repo来下载相应的jar包,这样连带其依赖包也会被下载安装 <repository> <id>MavenCentral</id> <name>Maven repository</name> <url>http://repo1.maven.org/maven2</url> </repository> <repository> <id>mvnsearch</id> <name>mvnsearch Maven Repository</name> <url&g...

Read more

LSM Compaction Strategy

Overview Compaction operations are expensive in terms of CPU, memory, and Disk I/O,而由于immutable特质,该操作在LSM架构上有必不可少。 data过来之后会写到memory table (MemTable),当mem满了之后,会flush到disk形成不可变的immutable Sorted String Table (SSTable)。当SSTable太多,os所打开的文件句柄也会过多,所以此时需要将多个同质的SSTable合并成一个SSTable。 Amplification 写放大:一份数据被顺序写几次(还是那一份数据,只是需要一直往下流)。第一次写到L0,之后由于co...

Read more

JVM架构体系与GC命令总结

写一下个人看了些JVM和GC文章之后的认识和总结, Overview Java虚拟机Java virtual machine(JVM) 是物理机器的软件实现。java编译器javac将源码文件.java编译成字节码文件.class,然后这个字节码文件.class被放到JVM中,装载并执行字节码文件.class。JVM架构图如下, JVM架构体系 垃圾回收(garbage collection):负责回收堆内存heap中没有被使用的对象 判断对象是否存活,可达性检测 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1。任何时刻计数器为0的对象就是不可能再...

Read more

Java集合与并发集合

画一下Java的集合collectionjava.util和并发集合java.util.concurrent的关系, scala 非并发 scala 并发 java detail Type Class Description List ArrayList 数组,System.arraycopy   LinkedList 链表,node指向下一个node,如此循环,无容量限制   CopyOnWriteArrayList 数组,Reen...

Read more

Java编译与反编译

记录一下看了Java开发必会的反编译知识后关于Java的编译、反编译、字节码、源代码、机器码的note, Overview 源码/源代码/Source code/.java <-javac-> 字节码/Bytecode/.class <-JVM-> 机器码/Machine code/原生码/Native Code 编程语言 编程语言(programming language)分为, 低级语言,low-level language,直接用计算机指令编写程序 机器语言,machine language 汇编语言,assembly language 高级语言,high-level language,用...

Read more

HBase架构的重要模块与动作

写一下个人看了hbase文章后的一些看法, Overview hbase通过row key来查找相应的列,即正排,如下图, es可以通过对每个field做倒排(基于Lucene),从而快速查找对应field(field可以是全匹配,可以是切词后的全匹配,可以是模糊匹配等)的所属docSet。类似于hbase,如果使用docId在es中直接查找的话,就是正排,即docId = row key,如下, doc1(doc1id) -> field1, field2, field3, ... doc2(doc2id) -> field1, field2, field3, ... 其中hbase与es有不少相似之处,如WAL, failover(reply), flus...

Read more

GitHub持续集成CI

记录一下个人是如何选择GitHub CI工具并进行相关配置, Overview CI的好处之一就是能够在每一次push的时候,检测新提交的code是否能够通过test case乃至是否能够顺利打包。 “持续集成并不能消除Bug,而是让它们非常容易发现和改正。” —- Martin Fowler 1. CI选择 GitHub上面默认推荐了7种CI供应商, CircleCI,个人首先选择的是CircleCI 2.0,但由于其Scala使用的是sbt来build,与个人当前项目所用Maven不一致,所以弃了 Travis,接着看到了Travis CI,点进去之后一看默认跑到收费试用栏,当然它可以选到FLOSS(Free/ Libre Open Source Sof...

Read more

Flink关注点

记录一下个人看了一些Flink文章后的理解与个人关注点, Overview 基于Flink 1.4。 先来看看大数据计算引擎的发展路线, 第一代,hadoop的MapReduce 第二代,DAG框架的Tez,Oozie 第三代,Job内部的DAG支持,以及强调实时计算,spark 第四代,迭代,流,批,SQL 基本概念 source -> transformation -> sink stream是算子的中间结果数据 transformation是一个操作,它对一个或多个输入stream进行计算处理,输出一个或多个结果stream streaming dataflow是一个执行中的flink程序,启动于一个或多个source,结束于...

Read more

T0-ES 6.1.4 Gradle build & import to IDEA

Overview 在es 5.X及之后的版本中,包管理框架从Maven迁移到了Gradle。 在Maven导入IDEA的过程中,不需要一些命令行,因为idea的reimport按钮会自动download jar包以及建立索引。 而在Gradle中,这个转换过程与mvn有所不同,需要在导入(import project)之前进行一些gradle命令行操作,如下, groovy install gradle install 配置系统环境变量GRADLE_USER_HOME,以便自定义gradle下载的jar包存放位置 cd yourDir/es614 git clone –depth 1 –branch v6.1.4 h...

Read more

S7-MonitorModule

这个模块主要是es集群在系统、进程、JVM级别的性能监控。目录如下, 0. Overview 1. 进程相关 2. 系统相关 3. 文件存储相关 4. JVM相关 - JvmInfo - JvmStats 5. Reference Overview 监控频率分为固定一次性fixPoint和refreshInterval、scheduleWithFixedDelay周期性。 上面所有注入服务可以分为4类,进程相关、系统相关、文件存储相关、JVM相关。 进程相关 系统相关 文件系统相关 JVM相关 jvm监控里面分了2种,一种JvmInfo详情,一种JvmStats统计。 JvmInfo JvmStats 如上图JvmStats含有多...

Read more

S6-ActionModule

在ActionModule模块,主要是注册各种es操作,以TransportAction为接口的一系列实现。 上图有2个非常重要的es action,一个是index索引,另一个是search检索。 IndexAction 取其中的IndexAction来看具体实现TransportIndexAction,一步步调试进去。 TransportIndexAction继承了TransportReplicationAction,而TransportReplicationAction实现了TransportAction的doExecute方法。 所以其调用链如下,中间涉及了transportService的传输request/response等, Node.modules.a...

Read more

S5-SearchModule

在SearchModule模块中,主要涵盖了search性能相关的依赖注入。 configureSearch 主要是seach type,search过程一般有两步,首先search带回<_id, _score>,然后fetch带回<_id, _source>。 默认是query_then_fetch,shard级别的排序;可以设置为dfs_query_then_fetch,cluster级别的全局排序。它们之间的差异可以参见esCn的柠檬排序。 configureAggs 在此配置聚合操作,如SUM,AVG,MIN,MAX,直方图分布等。 在static块上面,进行了es aggregation的三种类型(metrics, bucket, ...

Read more

S4-IndicesModule

这个模块涉及检索相关的query builder的注入绑定, query builder方法 其对应着query-DSL上的方法。 mapping数据类型 其对应着mapping datatypes上的数据类型。 mapping元数据 其对应着mapping metadata上的数据类型。 注入绑定项 bind()中没有to(),这属于无目标绑定,无目标绑定是链接绑定的一种特例,在绑定的过程中不指明目标 Eager singletons会尽快启动初始化,保证单例的有效性,Lazy singletons则更适用于edit-compile-run开发周期

Read more

S3-ClusterModule

这个模块主要将集群的默认配置加上(registerBuiltinClusterSettings和registerBuiltinIndexSettings),以及绑定一些集群服务(ClusterInfoService, DiscoveryNodeService, MetaDataCreateIndexService, RoutingService等)。 最后通过interface的configure将以上2个settings的实例(DynamicSettings.class)绑定/注入到ClusterModule.class上。 asEagerSingleton作为一种热加载(相较于lazy initialization)。 其中MetaDataCreateIndexS...

Read more

S2-DiscoveryModule

在new Bootstrap().setup()里实现了instance的初始化,其中主要一步是Node的new,在Node的构造函数当中,将很多module也挂靠上去了。下面简单看看DiscoveryModule模块。 DiscoveryModule模块有2类,一个本地版/JVM版local,一个集群版zen。 LocalDiscovery 里面有几个重要的field,分别是ClusterService,RoutingService,ClusterState。自成master,final LocalDiscovery master = firstMaster。其中startInitialJoin用于启动触发,publish是master用于下发集群变化信息的函数。 主要...

Read more

S1-Bootstrap模块

Overview 基于es2.4.7,分析其中的部分源码。 分模块 es package一共有26个,该系列先从下图的右侧的module开始分析, Reference zziawanblog naqin 飞来来 华安火车迷

Read more

es Snapshot and Restore

Overview 整理一下es的snapshot功能,分两块,一块是本地磁盘disk存储,一块是远程hdfs作存储, Version elasticsearch-5.4.3.zip repository-hdfs-5.4.3.zip Install plugin # need to specified absolute path bin/elasticsearch-plugin install file:///data/mapleleaf/es_snapshot/repository-hdfs-5.4.3.zip # check hdfs master namenode ip and port using webhdfs curl -i "http://local...

Read more

searchguard-6的安装和配置

记录一下searchguard-6的安装和配置过程, Overview elasticsearch在暴露了一个node的ip和端口后就可以对整个集群进行各种操作,删索引,改数据等。在重要的项目应用中,需要防范这一点。 目前常见的安全防范方式有, X-Pack Elasticsearch Security,收费License Search Guard,免费开源 下面就Search Guard,将其最小化安装到es集群。 版本 elasticsearch-6.4.2.tar.gz search-guard-6-6.4.2-23.1.zip 安装search guard sg plugin installation tar -zxvf elastic...

Read more

elasticsearch relevance scoring 检索相关性计算

记录一下,elasticsearch/lucene关于文档与query之间相关性的计算方式, Lucene/es评分机制 https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html http://mp.weixin.qq.com/s/By340-7g5rDxVKehY1izeQ es使用Boolean model来匹配文档;使用practical scoring function(tfidf, BM25)来计算文档与query的相关性;使用vector space model来增加额外特征计算(如queryNorm,coord,norm,boost)。 注,一般query...

Read more

elasticsearch索引和检索优化与压测监控

写一下个人的es优化经历, Overview 先来看看es的整体架构图,上面有多个重要模块,今天主要写在lucene上面的index模块与search模块的优化经历,力求简要写出改变了configuration之后,会给es cluster带来什么样的影响。 Index Optimization 上图展示了一个doc index/write请求过来,es为其建立倒排的过程,而index opt.的优化点就主要集中在该posting list building过程,先认识4个组件(heap buff, os cache, transLog, disk), 客户端选择一个node发送请求过去,这个node就是coordinating node(默认master,data,...

Read more

elasticsearch文章收集与心得记录

为了更好地理解与排版,部分文章标题可能会有修改 降序记录 eBay Elasticsearch 性能优化实战-中文篇 number?keyword?傻傻分不清楚 —- 数值类型(number)的数据结构变成Block k-d tree —- query/filter执行顺序不是按照写入顺序,而是内部根据cost()估算每个查询的代价,选择代价最低的query/filter开始,在其圈定的docid集合上生成一个迭代器 —- indexOrDocValuesQuery对rangeQuery的优化 —— Rang查询的数据集大小,以及要做的合并操作类型,决定用哪种Query。 如果Range的代价小,可以用来引领合并过程,就走PointRangeQuery,直接构造bitse...

Read more

基于elasticsearch suggester的中文检索建议实现

写一下个人spark实现的es completion suggester, Overview 检索建议suggestion(补全completion和纠正correction)是提升用户搜索体验的一个重要功能,通过协助用户输入更精准的关键词,提高后续全文检索阶段文档匹配度。 补全功能 在电商平台(淘宝、京东、Amazon等)上,检索建议补全可以帮助用户更准确、更迅速地定位到潜在购买商品。例如,用户输入空气,电商平台根据用户的历史行为(login user)或者平台总体推荐结果(non-login user),给出有关空气的一系列检索关键词(如空气质量、空气刘海、空气清新剂等),该检索关键词可以是简体、繁体、全拼、首字母拼音等形式。下面使用es的Completion Su...

Read more

es的三种缓存

https://www.elastic.co/guide/en/elasticsearch/reference/6.3/indices-clearcache.html query cache 也称filter cache,作用是对一个查询中包含的过滤器执行结果进行缓存,满足了term, range过滤器的clause会被缓存(5.1.1版本term被取消了),bool不会被缓存,但是bool过滤器包含的子term会被缓存。 curl "http://$HOST/_nodes/stats/indices/query_cache,request_cache,fielddata?pretty&human" request cache 当一个查询发送到es cluster的某...

Read more

elasticsearch v6.3.0 sql group-order

Overview es v6.3.0之后,推出了es-SQL的支持。今天来试试这个功能。 测试数据集 简单语句 在简单语句的情况下,这个功能ok,具体表现如下, # execute curl -X POST "$HOST/_xpack/sql?format=txt" -H 'Content-Type: application/json' -d' { "query": "SELECT * FROM bm ORDER BY longitude DESC limit 3", "fetch_size": 3 }' # translate to es DSL curl -X POST "$HOST/_xpack/sql/translate?pretty" -H ...

Read more

elasticsearch v6.3.0 monitor

Overview 上周四(0614)es推出了v6.3.0,期待已久的SQL和Rollups已经可以被使用,x-pack功能更加完善。想在此基础上,看看630的监控是怎么样。 监控 es最重要的目标是线上的稳定高性能,而稳定的定义就离不开监控。监控方式有多种, 通过curl命令定时抽取es的各项重点stats,然后输出到grafana 结合kibana,通过es官方提供的x-pack monitor/Marvel 瞬时状态监控Cerebro x-pack monitor 监控组织图 流程大概是: 安装带x-pack plugin的es和kibana 配置product-es-cluster的x...

Read more

课程大纲

薛兆丰,薛老师自嘲说因为提议火车票涨价而被围观,个人觉得对于非经济学出身或者说不太懂经济学原理的,上下班通勤期间听听薛老师在得到上的音频课程《薛兆丰的经济学课》,眼界和思维应该会有所提升的,以下是摘自简介上的课程大纲, 个人不评论别的,只看自己能否在这个课程上有所斩获而已。

Read more

Druid-0.12.3试用

在Windows下面的虚拟机Ubuntu上面试跑了一下druid,主要包括安装,配置,写数据,查数据, Overview Apache Druid是一个OLAP查询引擎,能对历史和实时数据提供亚秒级别的查询,提供低延时的数据写入,灵活的数据探索分析,高性能的数据聚合。 架构与节点类型 Historical:从Deep storage加载并提供Segment文件供数据查询 MiddleManager:主要用于从外部数据源读取数据,并写入到druid以完成segment分配 Broker:代理节点接收来自外部client的查询请求,并转发这些请求给historical和middlemanager。当代理节点接收到结果时,将来自historical和middle...

Read more

深度学习Note

记录一下个人看了王小草深度学习笔记之后的理解, Overview 先来看看人工智能Artificial intelligence,数据挖掘Data Mining,机械学习Machine learning,深度学习Deep learning之间的关系, 1 逻辑回归 首先,将特征输入到一个一元或多元的linear函数z中, 然后将这个线性函数z作为一个输入,输入到sigmoid函数g(z)中, 根据图形,可以更清晰地看到, 当z < 0,则g(z) < 0.5 当z > 0,则g(z) > 0.5 因此它可以作为一个二元的分类器,大于0.5的判为正类,小于0.5的判为负类。 2 神经元感知器 之所以在这里提及逻辑回归...

Read more

大数据文件格式与压缩算法小结

小结一下Hadoop/Hive的文件格式和压缩算法, Overview 文件格式和压缩算法在大数据系统里面是一个高关注的优化点,双方常常是配合着一起调优使用。 1. 文件格式 A file format is the way in which information is stored or encoded in a computer file. In Hive it refers to how records are stored inside the file. As we are dealing with structured data, each record has to be its own structure. How records are encoded in...

Read more

Mastering Bitcoin V2 Note

Overview 记录一下个人关于这本书的阅读, 精通比特币 第二版 Mastering Bitcoin 2nd Edition 比特币单位 1聪比特币/satoshi/sat,一亿分之一比特币 1毫比特币/millibit/mBTC,一千分之一比特币 1比特币/BTC 网络最大数量,2100万BTC 区块结构 block size block header version previous block hash merkle root timestamp difficulty target nonce transaction coun...

Read more

Mastering Bitcoin V1 Note

Overview 记录一下个人关于这本书的阅读, 精通比特币 第一版 Mastering Bitcoin 1st Edition 前言 大自然向我们证明,去中心化体制具有弹性并能创造出意想不到的复杂性和难以想象的精妙,而不需要中央集权体制、等级制度或复杂的组织结构。 快速术语检索 地址/比特币地址(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串字符和数字组成,以阿拉伯数字“1”开头。就像别人向你的email地址发送电子邮件一样,他可以通过你的比特币地址向你发送比特币。 区块,一个区块就是若干交易数据的集合,它会被标记上时间戳和之前一个区块的独特标记。区块头经过哈希运算后会生成一份工作量证明,从而验证区块中的交易。...

Read more

什么是架构师?

长达以后想做什么? 我要成为一名出色的架构师! —- 摘自漫画:什么是架构师? 记录一下看了这篇漫画的摘要, 未来故事 从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。于是,他问其中一个人: 小伙子,你在做什么 答曰搬砖 小伙子,你在做什么 搭建一座高大雄伟的教堂 小伙子,你在做什么 构建一座繁华而又美丽的城市 什么是架构师? 架构师英文Architect,这个词源于建筑学。软件工程当中的架构师和建筑工程当中建筑师有许多相通之处,都是负责产品宏观的架构设计。 在一个团队里,架构师充当了技术Leader的角色,不仅要完成项目的整体设计和规划,还要带领技术团队一起解决实际问题,攻克技术难点,使得软件的设计、开发...

Read more

JetBrains IntelliJ IDEA个人设定

记录一下个人重置JetBrain的IntelliJ IDEA后的常用配置,当然最方便的仍是使用Import/Export Settings。 常用设置 Project Default Settings File Encodings Maven Line Separator Code line width Project Settings Font Shell替换 终端类型从Windows的cmd.exe替换为Linux的bash.exe Others Show Whitespaces enable...

Read more

20180922天门山100

记录一下个人的这次张家界越野之旅, Overview 2018潇湘100天门山国际越野赛 群里告知有一个比赛,点进去看了看,是潇湘的越野100k。潇湘,一个对于越野有点特别的名字。个人记忆中这是一个有关水里的,吃着的,山里的词。那正好,既然是山里的,那就去体验一下这个词的切实反馈。 赛前 报名 http://iranshao.com/reg/races/2018xiaoxiang100 官网 http://www.yufengtiyu.cn/RecentEvents.aspx?id=86 参赛流水 9月20号晚上到9月25号早上,4天在张家界,记录一下流水。 20号晚上,坐上了去往宝安机场的地铁,到了之后见到了肖哥,山水和火凤凰夫妇。谈笑间就登机了。 ...

Read more

20181216深马&1223汕马

深圳马拉松 1202澳门马拉松之后,休息了两周,接着迎来了深马,因为上马之后左脚背一直受伤,澳门也没有跑好,所以这次深马没有pb的信心,赛前qishen也劝说,我也应以随时退赛。 周六早上10点左右到市民中心领物,由于没有打印领物单,所以找了附近的打印店好久,与一周后的汕马电子签名不同,深圳一个如此现代化的城市,深圳通,腾讯乘车码,深圳公安都能电子接入,不知道为什么领物单不能引入电子签名,这样既方便各方跑友,又环保易存。 打印后,领完物资,跟yuezhen和yingshen汇合,之后带她们放行李,然后吃了椰子鸡,之后去了人才公园。在人才公园涂抹了参赛包的红花油。之后分开,我回到楼下吃了斋面,买了水和红牛,之后上楼洗澡,跟chaoshen约好明早6点的车。 一夜无话,第...

Read more

20181118上海马拉松

Overview 上海马拉松,第一次。而上海,也是一直让我惦记的地方,不是因为她的闻名遐迩,仅仅是因为16年跟肥虫的迪士尼梗。 名额 上马已经抽了2次,2次都不中,这次有幸参加是多亏了京东体育,感谢大佬东名额。 赛前 赛前最重要的是训练,其次是行程安排。11月份的比赛,来到深圳之后空气很好,出门跑步基本不用看天。所以最近几个月跑量基本在300k。 之后在群里跟大伙预订了酒店,选择了起点附近的,因为当天7点开跑,近一些可能不用那么匆忙。 至于跑完之后的状态,当时真的没有多想。 酒店ok之后就是出行了,一开始想着飞过去,但是看了时间点,有点早。刚好北京的大伙是火车过去,我看了看火车到上海的时间点正合适,周五下班之后到深圳北站,然后在车上睡一晚,第二天早上7点到上海...

Read more

20180409巴黎马拉松

巴黎是一个一直想去的地方,今天下午刚好Chrome个性化首页Dream Afar展示了一张巴黎城的图片,瞬间忆起对巴黎城的向往了,就上官网查了报名时间,发现还没有结束,二话不说,进入注册环节。 报名官网,http://www.schneiderelectricparismarathon.com/en/ 具体马拉松历史就不介绍了,施耐德电气冠名的,主要喜欢的是向往已久的城市paris。 下面说一下马拉松的注册过程, 注册报名 分时段注册,今年分了3个阶段,类似early early bird price(早早鸟价), 接下来是个人信息填写, 然后是报名时候的一些可选的附加项目。有奖牌刻字啦,跑后party,塞纳游船河,关于你的跑步高清视频,大海报,人身意...

Read more

20180610兰州马拉松

Overview 结束快2周了,今天简单记录一下此次兰州马拉松之行。 周六深圳 周六早上6点40的航班,预约了5点的网约车,调了4点半的闹钟,到达机场大概5点半,在机场吃了面包和牛奶,魔爪不让过安检,赠给了清洁阿姨。 飞行了接近3小时,达到兰州中川国际机场,不少深圳跑友同乘一个航班。落地后,出门直接坐机场大巴到甘肃国际会展中心领物。 机场高速上,看了一路的黄土,感觉不少工人在植树,让我想起了每天在蚂蚁森林的绿色能量,虽然微薄,但是我们跑者人多,而且每天的步数量估计也不少。 大概1小时吧,到达第一个下车点,在黄河南岸租了个共享单车骑到了河对岸,中间路过雁滩大桥,虽然不是第一次见黄河,但还是很震撼,黄黄的、沙沙的,滚滚的,看着看着,思绪就飞到天的边际了。 到...

Read more

20180121香港马拉松

官网 http://chi.hkmarathon.com/Home_19613.htm 比赛路线 http://chi.hkmarathon.com/Event_Info/Routing.htm 机票 done 酒店 done 行程规划 done 记录一下自己这次港马,20日中午到香港机场,而其中一个行李箱没有随本机到,箱子里面是这次跑步的衣服装备。与地勤沟通后,行李会搭乘下午4点到港的航班到然后再送到酒店礼宾部,结果是晚上11点半才到手上,中间致电咨询多次,地勤一再保证港人嘅牙齿当金使,哈哈。本来想当晚早点睡,但是被行李拖延到了0am,整理好装备,别上号码布之后,就去睡觉。然而一直睡不着,辗转辗转,不知道是什么原因,没有困意,辗转到1am,实在睡不着,躺着...

Read more

20180916北京马拉松

Overview 一下子又跑完了一个,不知不觉,又大了一岁。 抽名额 随着近年来国内马拉松爱好者数量增长,大型赛事名额难得,就拿我自己来讲,18年,报了香港(中),巴黎(中),无锡,兰州(中),上海,广州,杭州,见上一篇流水。今年8月5日,北京现代在深圳有一场跑团的名额比赛,男女前三直通,剩余24个名额在294个参赛者里抽签。那天在深大西丽校区绕圈,一共15k,我带着245号码,完赛了,且被抽中,幸运地抽到了绑定名额。 参赛 抽到名额之后还是有点犹豫要不要去的,因为北马的下一周有天门山100,最后拖拉到8月29号出签之后才订了去北京的航班。周五下班之后直奔深圳机场,由于有台风,还有点担心起飞不了,那就完美错过比赛了。到了北京机场差不多2点了,还给肥虫发了图,吐槽了上次昆...

Read more

20171029唐山国际马拉松

#目的 记录个人此次参赛记录,以便后续翻看。 就以下几方面开始记录, 赛前训练 路途准备 赛道氛围 赛道风光 城市环境 个人总结 ##赛前训练 2017唐山国际马拉松 在最酷报名后,过一会收到了名额确认邮件,就开始预订_衣食住行_方面的准备。 衣方面,准备了长/短比赛服各一套,外套,雨衣,跑鞋 食方面,到了唐山再看 住方面,预订了比赛前一天28号的酒店,酒店离起/终点300米左右,但有新装修和下水道的气味 行方面,坐朋友顺风车一起往返 准备好这些之后,制定个人本次马拉松目标,之前pb是16年北马358,期间跑过大连100k越野赛,平时训练配速530。想着5分坚持跑完此次马拉松,因此制定了330的目标。 ##路...

Read more

20171104奥森100+陪跑

2017 奥森100+超级马拉松 主将在群里说要报名今年的奥森100,五虎都非常支持,当即报出陪跑圈数,我当时报了4圈,😆。审核通过之后,告诉了大家,也让大家到时候有空就过去热闹热闹。 当天7点15,起床,看了下天气,0 ℃,aqi优😄。由于8点起跑,想着首圈陪跑,看了下时间,8点起跑,时间上有点赶,就放弃了该念头,跑第二、三圈吧。就慢悠悠起床穿上运动服戴上耳机背上书包,骑车到了奥森北园西门,到了主将帐篷下,发现没人,原来早来的都陪跑去了,我就简单热一下身,等待下一个陪跑员,然后去排空和领物,领了一个手环和一个号码布。 之后大家陆续地到来,帐篷下也热闹起来,太阳这时候也出来了,天气开始回暖。我们聊了一下,大概10点,在起点等到主将到来,陪跑了第三圈和第四圈。 说一下...

Read more

S0-Overview

Overview 基于es2.4.7,分析其中的部分源码。 分模块 es package一共有26个,该系列先从下图的右侧的module开始分析, Reference zziawanblog naqin 飞来来 华安火车迷

Read more