分类:编程语言

Redis实现参数的集中式管理

系列文章 Zookeeper实现参数的集中式管理 JMS实现参数的集中式管理 Redis实现参数的集中式管理 前言 上一篇文件JMS实现参数的集中式管理中使用JMS作为中间层,利用的JMS的发布订阅功能实现了对参数的集中式管理;同样分布式缓存Redis也提供了类似的 发布订阅功能,并且Redis本身提供了缓存和持久化的功能,本文将介绍通过Redis实现简单的参数集中式管理。 Maven引入 Spring相关的jar引入参考上一篇文章 目标 1.可以同时配置监听多个节点如/app1,/app2; 2.希望只需要配置如/app1,就能够监听其子节点如/app1/modual1以及子节点的子节点如/…

阅读全文 »

JMS实现参数的集中式管理

系列文章 Zookeeper实现参数的集中式管理 JMS实现参数的集中式管理 Redis实现参数的集中式管理 前言 上一篇文件Zookeeper实现参数的集中式管理介绍了使用Zookeeper对节点的监听通知机制简单实现了对参数的集中式管理,其实JMS的发布订阅机制也能实现类似的功能,集群节点通过订阅指定的节点,同时使用jms对消息的过滤器功能,实现对指定参数的更新,本文将介绍通过JMS实现简单的参数集中式管理。 Maven引入 Spring相关的jar引入参考上一篇文章 目标 1.可以同时配置监听多个节点如/app1,/app2; 2.希望只需要配置如/app1,就能够监听其子节点如/app…

阅读全文 »

Zookeeper实现参数的集中式管理

系列文章 Zookeeper实现参数的集中式管理 JMS实现参数的集中式管理 Redis实现参数的集中式管理 前言 应用项目中都会有一些参数,一般的做法通常可以选择将其存储在本地配置文件或者内存变量中;对于集群机器规模不大、配置变更不是特别频繁的情况下,这两种方式都能很好的解决;但是一旦集群机器规模变大,且配置信息越来越频繁,依靠这两种方式就越来越困难;我们希望能够快速的做到全局参数的变更,因此需要一种参数的集中式管理,下面利用Zookeeper的一些特性来实现简单的参数管理。 准备 Maven引入 目标 1.可以同时配置监听多个节点如/app1,/app2; 2.希望只需要配置如/app1,…

阅读全文 »

Hibernate乐观锁引发的StaleObjectStateException分析

前言 最近一个项目中使用了Hibernate的乐观锁,不巧的是出现了乐观锁最容易报的错:org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction 下面将通过一个模拟的实例重现问题,并做相应的分析。 乐观锁的作用 乐观锁的主要作用是为了解决事务并发带来的问题,相对于悲观锁而言,乐观锁机制采取了更加宽松的加锁机制; 悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性,但随之而来的就是数据库性能的大量开销,特别是对长事务而言; 乐观锁机制在一定程度上解决了这个…

阅读全文 »

POI事件驱动读取Excel分析

前言 前一篇文章http://codingo.xyz/index.php/2017/06/29/poi_excel/介绍了实际项目中读取Excel导致内存溢出的问题,最后总结了在读取大Excel情况下,优先使用事件驱动模式读取,但是文件并没有对事件驱动模式做过多分析,本文将对事件驱动模式做简单分析。 xml解析器 jdk本身提供了两种XMl解析器: 1.像文档对象模型(Document Object Model,DOM)解析器这样的树型解析器(tree parser),它们将读入的XML文档转换成树结构; 2.像用于XML的简单API(Simple API for XML,SAX)解析器这样的…

阅读全文 »

Poi读取Excel引发的内存溢出

前言 最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了。 分析 1.dump内存文件 liunx使用如下命令: 2.使用Eclipse Memory Analysis进行分析 异常如下: POI在加载Excel引发了内存泄漏,中间创建了大量的对象,占用了大量的内存 3.查看上传的Excel大小 经查看发现很多Excel大小在9M的文件 4.查看代码POI读取Excel的方式 发现使用的是用户模式,这样会占用大量的内存;POI提供了2中读取Excel的模式,分别是: 用户模式:也就是poi下的usermodel有关包,它对用户友好,有统一的接口…

阅读全文 »

Spring整合Hessian与分析

前言 上一篇文章Hessian入门体验与分析介绍了hessian的简单入门,并且从源码层面对Hessian的调用流程进行了分析;发现使用原生的Hessian还是比较繁琐的,下面看看Spring与Hessian进行整合并且进行简要分析。 使用 提供三个模拟块,分别模拟client,server以及被依赖的jar;对应的模块名称分别是:hessianClient,hessianServer以及hessianJar 1.hessianJar介绍 hessianJar主要提供被hessianClient和hessianServer依赖的公共类,这里主要提供了接口类IHessianService和poj…

阅读全文 »

基于JMS实现RPC功能

前言 JMS的点对点消息传送模式允许JMS客户端通过队列(queue)这个虚拟通道来同步和异步发送、接收消息;点对点消息传送模式既支持异步“即发即弃”消息传送方式,又支持同步请求/应答消息传送方式;点对点消息传送模式支持负载均衡,它允许多个接收者监听同一队列,并以此来分配负载;所以完全可以以JMS的点对点消息传送模式实现一套RPC框架。 准备 jdk:jdk1.7.0_80 jms:apache-activemq-5.10.0 serialize:protostuff 整体结构 整个实现包括:rpc-jms-common,rpc-jms-client,rpc-jms-server; 以及测试模…

阅读全文 »