influxdb and grafana

InfluxDB & Grafana 趟坑过程记录 InfluxDB 子查询查最新版本号的分布情况 select count(*) from (select count(value) from table where app =~ /^abc/ group by "app", "version" order by time desc limit 1) group by "app", "version" order by time desc 在子查询里,已经按照时间拿最新的一条数据,但是在外面再套一层之后,老的数据又出来了,这个问题暂时没解,而是通过新的数据过来之后,删掉老的数据规避掉。

reading java dns cache manipulator

java-dns-cache-manipulator源码阅读笔记 阅读开源代码java-dns-cache-manipulator的一些收益 脑图 以下源码来自InetAddressCacheUtil 典型的双检锁实现/反射的应用 static volatile Object[] ADDRESS_CACHE_AND_NEGATIVE_CACHE = null; /** * @return {@link InetAddress#addressCache} and {@link InetAddress#negativeCache} */ static Object[] getAddressCacheFieldsOfInetAddress0() throws NoSuchFieldException, IllegalAccessException { if (ADDRESS_CACHE_AND_NEGATIVE_CACHE == null) { synchronized (InetAddressCacheUtil.

using jmap in docker

Docker里如何使用jmap 缘由 排查cpu 100%问题的时候,发现一个有趣的现象,使用openjdk:8-jdk-alpine作为基础镜像的应用,无法使用jmap, jstack等jdk的工具,但是使用openjdk:8-jdk作为基础镜像,却可以使用,即使应用的PID为1。 测试 使用alpine镜像 FROM openjdk:8-jdk-alpine COPY .

clean coder

代码整洁之道-程序员的职业素养书摘 专业主义意味着担当责任 要对自己的不完美负责 如果你希望自己的软件灵活可变,那就应该时常修改它! 职业发展是你自己的事。雇主没有义务确保你在职场能够立于不败之地,也没义务培训你,送你参加各种会议或给你买各种书籍充电。这些都是你自己的事。将自己的职业发展寄希望于雇主的软件开发人员将会很惨。 如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。 衡量你是否是一名专业人士的一个重要方面,便是看你是否能将调试时间尽量降到最低。 不要经受不住诱惑盲目冲刺。 为了合理使用与会者的时间,会议应当有清晰的议程,确定每个议题所花的时间,以及明确的目标。 如果收到会议邀请,无比弄清楚指定的议题是什么,每个议题花多长时间,要取得什么成果。如果得不到确切的答案,你可以礼貌拒绝。

spring cloud practice

Spring Cloud整体实践 笔者在最近的工作中用到了Spring Cloud微服务整体解决方案,没有使用SC 的全部组件,只用到了网关(Zuul),注册中心(Eureka)和配置中心(Config server),现将方案简要说明如下 整体简化版部署图如下 首先api访问会经过load balance,再由负载均衡层将请求转发到网关,在网关层,配置了路由规则,会将api请求转发到对应的服务 网关层 使用的zuul的版本还是1.

hubot with rocketchat

hubot with rocketchat 缘起 无意间看到这篇文章,里面提到文章的作者使用了slack和hubot自动化了一些事情,恰巧我在公司的gitlab里,发现了一位同事使用了Rocket.Chat(可以认为是slack的开源版),好奇心驱使下,就倒腾了些这些玩意 -> hubot & rocket.chat,just for fun.