今天说一个算法小甜点,因为对于算法知之甚少,所以完全是自己揣摩出来的一则,写出来只是个记录,如有更学术派的解法欢迎评论。
Activiti系列一之delegate拦截器
公司内部的工作流引擎用的是Activiti5, 所以这半年一直在研究这个开源项目,打算针对这个项目做一个系列,说一说使用心得。今天就先做系列一,先说使用场景。
短链接的简单实现
很久没更新了,加入了创业公司,从无到有的构建一套产品,从一开始的码框架到现在思考如何优化产品架构,适应更多的弹性需求和更大的数据量。时间真的是不够用,几乎快半年没有更新博客。近期产品慢慢走上正轨,又有小伙伴加入,所以抽出点时间总结一下这小半年内遇到的坑和走过的路。
Spring boot监控初探
最近对devOps这个话题有点兴趣,所以研究了一下monitor相关的开源项目,翻到medium上的一篇文章,而且实际项目中也曾看到devOps组的同事搭过类似的监控,就想过把瘾,了解一下监控可视化。
说一说微信第三方平台的初步集成
微信火了这么久,这两周第一次从一个开发者的角度来研究微信的生态系统而不是应用本身。现在做国内的项目或者产品难免都需要集成微信,其实现在微信背后的支撑平台已经是非常繁杂的了:
- 公众平台(订阅号、服务号、企业号、小程序)
- 开放平台(网页应用、移动应用、公众号第三方平台开发)
- 商户平台 (支付)
- 服务商平台(代支付)
阿里电面试题汇总
年前意外的经历了一次阿里的电话面试,话说还没想换工作,但这位业余HR(应该是技术负责人)都没介绍工作岗位和要求,直接就约定某晚的电面时间,抱着好奇的态度被“虐”了一把。
总体感觉这位面试官问的问题非常深,基本都是系统或者原理级别的。不知道是不是代表了阿里面试的基本思路。
Spring AOP的实现机制
AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。静态代理是编译期实现,动态代理是运行期实现,可想而知前者拥有更好的性能。本文主要介绍Spring AOP的两种代理实现机制,JDK动态代理和CGLIB动态代理。
蜕变的2016
今天是2016年的倒数第二天,仿佛踮起脚就能够到17年。16年对于我来说是不平凡的一年,即使在暮年回首想必也会历历在目。
利用JPA实现消息落地的一些问题
目前我们处理消息的同步,一般是落地到DB后,再同过异步的方式做数据的聚合和处理。至于DB的操作为了简单直接用了Hibernate提供的一套JPA接口,(老实说真的是不喜欢JPA,一是sql log不好分析无法优化,二是必须非常了解JPA的所有关键字含义,不然就要出问题,所以我一直喜欢用mybatis这种更轻量的甚至spring-jdbc)。
那么使用JPA的过程就遇到了一些问题,见招拆招一件一件来。
解决jenkins中npm install的symlink问题
问题
这一周在Jenkins上跑npm install经常会出现build fail,查了日志就是下面输出的样子:
1 | npm ERR! node v4.4.7 |
一开始以为是建symlink的问题,考虑了可能权限或者symlink已存在的情况。但是用全新的一个虚机去跑npm install还是失败,错误有原因也是一样。本着死马当活马医的思路,加了一个-–no-bin-link
参数,问题奇迹的解决了。查看官网的一段解释The --no-bin-links argument will prevent npm from creating symlinks for any binaries the package might contain.
貌似也是在虚机才会出现这种情况。
之后又咨询了我们做构建的同事,他们建议把nodejs升级到6,同样也解决了问题。
总结
看来root cause是查不到了,只能给两个建议
- 加
-–no-bin-link
参数 - 升级Jenkins机器上的nodejs版本到6