作者:京东云 贾世闻 最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番. Starwfit 是京东云自主研发的新一代云原生数据仓库,通过存算分离降低了存储成本,同时兼具性能和扩展弹性.其写入和查询速度可达到传统数据仓库的数倍,为用户提供实时数据分析能力.广泛应用于流量分析.精准营销.用户画像.广告实时竞价.BI报表分析.日志分析.促销选品.物联网等业务场景. 言归正传,看…
最近在用rust 写一个redis的数据校验工具.redis-rs中具备 redis::ConnectionLike trait,借助它可以较好的来抽象校验过程.在开发中,不免要定义struct 中的某些元素为 trait object,从而带来一些rust语言中的生命周期问题. 本文不具体讨论 redis的数据校验过程,通过一个简单的例子来聊聊 struct 中 trait object 元素的生命周期问题. 首先来定义一个 base trait,该 trait 中只包含一个函数,返回Stri…
当我们写完一个服务端程序,需要上线部署的时候,或多或少都会和操作系统的守护进程打交道,毕竟谁也不希望shell关闭既停服.今天我们就来聊聊这个事儿. 最早大家部署应用的通常操作是 "nohup xxxx &",别说像weblogic 或者其他java 容器有启动脚本,里面其实也差不多:很喜欢 nginx的 -d 参数,或者像redis 配置文件里可以指定是否以守护进程启动.看起来很优雅. 那么,使用rust 写一个服务端程序能不能优雅的使用一个参数指定应用 daemon 模式启…
作者:贾世闻 日志是应用程序的重要组成部分.无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录.在这篇文章中,我们结合[log4rs](https://github.com/estk/log4rs)聊聊rust 程序中如何使用日志. [log4rs](https://github.com/estk/log4rs)类似java生态中的log4j,使用方式也很相似 log4rs中的基本概念 log4rs 的功能组件也由 appender 和 logger构成.· appender  负…
新版API上线后,发现LOG文件没有正常输出.查看Tomcat的Log文件发现如下的错误信息 May , :: AM com.sun.xml.ws.server.sei.EndpointMethodHandler invoke SEVERE: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected java.lang.IncompatibleClassChangeError: Foun…
http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/project-composition-introduce.html 在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module.一个 Project 可以有多个 Module.目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Module.web Module.plugin Module.solr…
为什么会出现依赖冲突 首先要说明Maven的依赖管理,具体的可以参考这边 Maven学习——依赖管理 这篇文章,maven在依赖冲管理中有一下几个原则. 依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成.如果两个相同的依赖包,如果groupId, artifactId, version不同,那么maven也认为这两个是不同的. 依赖会传递,A依赖了B,B依赖了C,那么A的依赖中就会出现B和C. Maven对同一个gro…
如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突.依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖 如上图,通过Dependency Hierachy可以查看到间接依赖,这里slf4j-api与其他引用的版本有冲突,我们可以exclude禁用这个间接依赖,代码如下: <dependency> <groupId>displaytag</groupId> <artifactId>disp…
这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) Maven提高篇系列之(三)——使用自己的Repository(Nexus) Maven提高篇系列之(四)——使用Profile Maven提高篇系列之(五)——处理依赖冲突 Maven提高篇系列之(六)——编写自己的Plugin(本系列完) 在本系列的上一篇文章中,我们讲到了如何使用Profil…
maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false   mvn -U dependency:tree -Dverbose   dependency: tree是检查版本…