分类: 后端杂文

基于H2进行单元测试

单元测试是开发流程中很重要的环节,无论测试驱动还是集成测试,unit test的相关技术都会涉及到。
在测试过程中,数据的稳定是个很重要的保证,除了模拟数据、测试数据,通过内存数据库即时生成、擦除数据也是可选项。
内存测试数据库,主要还是H2,可以方便的集成到应用中,1.3.X版本也不到2MB,在打包阶段还可以去掉。
实际上应用H2作为内存数据库,还是存在一些问题需要去一一解决,例如:
阅读全文——共2054字

spring-cache中proxy限制问题

本周部门同事在处理一个应用的性能优化,其中用到SpringCache来进行部分数据缓存到redis。
由于是优化事项,在开发过程中,一些场景遇到了proxy问题导致的无法进行缓存操作。
这是因为SpringCache的原理是基于动态代理,在方法上进行切面拦截,如果是服务内部进行方法调用或者调用private方法,后调用的方法是无法进入切面处理逻辑的,在日志、事务等场景上也会遇到类似的问题。
这里其实就延伸到了代理的方式,有静态代理和动态代理,在Sprng应用中,通过JDK和CGLIB的方式来实现动态代理,同时也支持通过AspectJ注解来实现面向切面编程,即AOP。
阅读全文——共754字

Intellij Idea实现热部署

切换一个工程为WEB容器时遇到热部署问题,之前使用Spring-Boot作为开发套件倒不存在这个问题。
·设置模块的输出目录为classes的编译输出路径.eg: XX\target\classes
·对于WEB容器的Deployment,选择:war exploded,使用文件目录发布形式,另外一种”war”则是使用war包发布形式。
·WEB容器的热更新选择:update classes and resources。ps:选择war形式,则只有hot swap和delpoy.
阅读全文——共262字

Java应用性能分析

前阵子处理双十一的事项,其中一个点是关于系统性能的评估和优化.
就当前的业务来说,双十一首要关注的是订单流转相关的性能问题,例如创建、审核、拣货以及末端配送信息的回填。
这些各个业务环节,会对应到系统上的一些程序单元或者模块,是否有性能问题其实也就是这些模块或者单元的一个性能情况。
在一些性能场景上,会有一些指标协助评估性能情况,例如TPS、并发、QPS、IO负载等,对于评估工作这些指标的收集也是一个必要的动作。
阅读全文——共785字

获取ActiveMQ.DLQ的死信消息

使用ActiveMQ的持久消息后,大量死信消息会堆积在ActiveMQ.DLQ队列,如果数量增大,会对MQ的内存和磁盘造成一些影响。
DLQ队列中的消息来源,这里没有完全去测试,目前来看有客户端消费出现异常或者被事务回滚的消息。
DLQ队列可以通过MQ配置来禁用,这样就不会堆积到DLQ队列,但对于这部分信息的状态就无法获取,好一点的方式是DLQ队列保留,增加对DLQ队列的处理措施,例如获取队列内的数据,找出原因,并做补救,如果通过MQ传递可靠消息,这个保留处理的步骤应该是必须的,另一方面是从消费端的应用上解决出现死信消息的原因。
DLQ是一个队列,通过普通的队列消费方式就可以拿到其中的消息,消息本身是一个ActiveMQObjectMessage.
阅读全文——共4002字

又是个HelloWorld

为了验证maven在Android开发下能够发挥的作用,简单的折腾了一下,发现Android下的Hello World还是挺好弄,包括后来的调试环境,SDK都已经提供好了。
可能复杂的是各种布局以及和硬件的处理吧。