Arganzheng's Blog

stay hungry, stay foolish

测试驱动开发

什么是TDD TDD的核心思想是先写测试用例,然后通过测试来推动整个开发的进行,包括接口的设计,代码的编写和重构。 整个TDD的过程就是红绿蓝三色循环迭代: 为什么要推行TDD 首先一个显而易见的好处就是编码阶段,通过单元测试验证我们的代码,可以方便的进行本地自测,提高代码的质量。《重构》中Matin Flower就说:一套测试就是一个强大的bug侦测机,能够大大缩减查找bu...

用户行为串联方案

背景 目前商城的所有行为日志埋点上报都缺少一个唯一的用户行为ID。它的作用是串联用户行为的会话ID,用户行为包括曝光、点击、加购、下单、分享、点赞等,用户行为按时序依次产生,需要业务传递 traceId,标识点击、效果转换的动作是哪一次的曝光、点击产生的。 带来的问题就是用户行为日志没法很好的串联起来,正负样本生产和报表统计都会有偏差。 业界解决方案 1、阿里云推荐平台 1) 行为...

参数服务器

Parameter Server 中文名称叫做参数服务器,是分布式机器学习框架中用来做参数同步的框架。 为什么需要引入 Parameter Server 各个 worker 之间需要共享模型参数 => 全局参数服务器 模型参数很大,超过单台机器的容纳能力 => 分布式参数服务器 训练数据太大,需要并行提速(大数据)=> 分布式参数服务器 设计要求 ...

机器学习中的特征工程

特征管理 特征元数据注册 特征视图、特征集、特征 数据源信息: 离线数据库、表名称等 存储引擎信息: 引擎类型、机房、IP等 存储格式信息: Key字段、Value字段等 特征更新信息: 更新周期、分区字段、分区方式等 ...

一个java大堆引发的『血案』

现象 线上预估服务扩容新增了两台机器,同样的代码,同样的机器配置,但是有一台机器的平均时延就是比另一台机器慢一些(14ms vs. 20ms)。 1、64机器(时延慢一些的机器) JVM启动参数: /home/app/predictor-serving/jdk/jre/bin/java -Djava.util.logging.config.file=/home/app/predict...

使用CompletableFuture异步编程

Future vs. CompletableFuture JDK 5引入了 Future 模式。Future 接口是Java多线程 Future 模式的实现,在java.util.concurrent包中,可以来进行异步计算。 Future 模式是多线程设计常用的一种设计模式。所谓Future,顾名思义,就是结果在未来完成,先给你一个凭据。Future的接口很简单,只有五个方法: pu...

gitlab如何checkout某个group中的所有项目

gitlab 是一个非常棒的基于git的代码版本控制平台,跟 github 非常类似,但是有一个非常重要的功能是缺失的,就是搜索代码。这时候只能将所有的分支拉到本地,进行grep。为了方便管理,我们的项目都是按照 group,也就是 namespace 分开管理的,问题在于 gitlab 并没有在界面上直接提供下载整个 group 中的所有项目的功能,谷歌了一下,发现大家基本都是利用 Git...

创建Hadoop FileSystem报Provider org.apache.hadoop.fs.azure.NativeAzureFileSystem not a subtype异常

为了验证一个线上问题,写了一个简单的Spark任务,在提交节点上听过spark-submit命令提交任务,总是跑不起来。 报如下错误: 18/12/26 16:37:24 ERROR study.Application: error java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: Provider...

git分支与maven版本之间的联动

对于 java 开发,项目联合开发的时候往往是通过maven仓库而不是分支源码依赖进行,而且为了让变更立即可见,需要采用 maven 的 snapshot 版本机制;而对于稳定版本(release版本),为了能够拉取更新以及记录变更,也是需要升级版本号的。也就是说二方库有自己的(maven)版本管理机制, 需要跟 git 的分支机制联动起来。 为了方便说明,我们举一个具体的二方库作为例子。...

Git分支管理策略

在使用 Git 时通常会遇到的一个问题是采用何种分支管理实践,即如何管理仓库中作用不同的各类分支。 GitFlow 演进 洪荒时代 —— 单主干开发 (Trunk-based development, TBD) 单主干的分支实践(Trunk-based development, TBD)在 SVN 中比较流行。trunk 是 SVN 中主干分支的名称,对应到 Git 中则是 maste...