`
QING____
  • 浏览: 2253452 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
    Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现.     commons-pool实现思想非常简单,它主要的作用就是将"对象集合"池化,任何通过pool进行对象存取的操作,都会严格按照"pool配置"(比如池的大小)实时的创建对象/阻塞控制/销毁对象等.它在一定程度上,实现了对象集合的管理 ...

JMS概述

一.JMS使用场景:    JMS是为"消息"而生,从使用的角度来说,任何可以与业务解耦的数据均可以作为"消息"存储;任何结构化(格式严格,适合解析)但未索引化(不能被随意检索)的数据均可以交付给JMS存储,但尽管JMS不是 ...

ActiveMQ编程实例

    博客分类:
  • JMS
    本文主要展示如何使用activeMQ进行程序设计,可以作为代码实例参考;此后会继续补充有关JMS 或ActiveMQ的优化和架构部分。     本实例主要展示如何使用Queue。   一.pom.xml   <dependencies> <dependency> <gro ...
1. RSAEncryptor.java public class RSAEncryptor { private PublicKey rsaPublicKey; private Cipher cipher; // 1024位RSA加密算法中,当加密明文长度超过117个字节后,会出现异常,所以采用分段加密 private final static int PT_LEN = 117; private final static String SPLIT_CHAR="|";//分段加密/解密,段落分割符, ...
    Hessian是比较常用的binary-rpc,性能较高,适合互联网应用,主要使用在普通的webservice 方法调用,交互数据较小的场景中。hessian的数据交互基于http协议,通常hessian的server端设计需要使用到web server容器(比如servlet等)。你可以将任何Java类暴露给HessianServlet,并发布成hessian服务;那么hessian client将可以通过类似调用servlet一样,获得远程方法的输出结果。     因为hessian的接口调用基于http,且以字节码的方式进行数据交换,那么hessian需要提供自定义的“pro ...
    Java scripting工具包提供了java可以访问其他语言脚本的能力,脚本片段将会在运行时编译成中间代码(字节码),并能够被java scripting引擎调用。在某些场景下,很有用。 1. 简单调用 /** * simple,默认java.*包中的API已经倒入到engine中。你可以使用那些API * @throws Exception */ private static void invoke1() throws Exception{ ScriptEngineManager engineManager = new ScriptEngineManage ...
    Apache Commons-digester是一个非常便捷的XML-Java映射工具包,我们常用它作为规则引擎来使用,其中xml文件用来定义“规则”,通过digester解析之后,将会和javabean对象建立关系。其中struts/spring等第三方项目都使用digester作为xml-java映射工具;digester很好的实现了“xml定义规则”+“java业务处理”的桥接能力;今天我就给大家分享一下如何使用Digester工具设计“数据库分表”策略。     Digester的API非常简单,在此就不再赘言,直接使用实例讲解。   一.XML与规则:     你需 ...
    Commons-chain是apache commons中的一个子项目,主要被使用在"责任链"(执行链)的场景中,struts中action的调用过程,就是使用了"chain"框架做支撑.如果你的项目中,也有基于此种场景的需求,可以考虑使用它.     所谓"责任链"就是:一系列有序的command能够按照顺序执行,并能够互相交换或者传递执行结果;和我们常说的"责任链"模式类似.     commons-chain通过被用在web项目中,或者在基于"规则引擎"的其他模块中,comm ...
    Cglib基于字节码生成功能(类似于jdk proxy),提供了简单但是强大的动态代理的能力.代码样例基于cglib-2.1.3和asm-1.5.3:   1. Proxy动态代理:   ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); TestObject orignal = new TestObject() ...
    Cglib中对jdk反射机制做了封装和调整,使用起来更加简单,同时性能也有所提升.如下为代码样例,基于cglib-2.1.3和asm-1.5.3:   1. 创建对象实例:   //通过cglib创建实例 ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); //创建fastClass实例,底层将根据TestObject.class字节码信息创建一个新的class: //com.test.TestObject$$FastClassByCGLIB$$8bdfd246 //此Fa ...

HttpClient4代码样例

    博客分类:
  • JAVA
HttpClient 4.X代码样例备忘.其中httpClient 4.0与httpClient 4.3+代码结构少有不同.   1. httpClient 4.0  public class HttpClientUtil { private final static Log log = LogFactory.getLog(HttpClientUtil.class); private static HttpClient httpClient = new DefaultHttpClient();; public static final String CHARSET = ...

JAVA与排序算法

    博客分类:
  • JAVA
一.冒泡排序 特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2) 思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一轮结束后,当前轮"最后一个元素"必将是最大的. ...
    程序设计最终将归结为"算法"和"设计模式",其中设计模式是我们进行良好程序设计的思想和"纲要";接下来本人将以通俗的实例来展示几种常用的设计模式,以及它们在java程序设计中需要注意的问题.     在此需要提醒一下,很多设计模式,只是思想上有稍微的区别,但是在程序设计(模板)中这种区别可能无法显著的表达出来,对于一个"靠天吃饭"的码农,我们了解它们的思想就已经足够了.   一.Singleton(单例模式):     单例模式,是一个神奇的模式,从狭隘的角度考虑,这种模式的实现,极度依赖于程序运 ...
    Redis中pub/sub特性,可以用来实现类似与JMS的“topic”功能,只不过这些消息无法被持久化而已。spring-data-redis组件中对pub/sub提供了类似JMS的编程模式,我们通过实例来展示如何使用。     需要注意的是,在redis中消息的订阅端(subscribe)需要独占链接,那么消息接收将是阻塞的。     代码实例中,使用了“连接池”/“消息异步接受”“消息并发处理”,请根据需要调整相关参数。     1) Redis中"pub/sub"的消息,为"即发即失",server不会保存消息,如果publish ...
    Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的。它类似于JMS中的“Queue”,只不过功能和可靠性(事务性)并没有JMS严格。Redis本身的高性能和"便捷的"分布式设计(replicas,sharding),可以为实现"分布式队列"提供了良好的基础.     Redis中的队列阻塞时,整个connection都无法继续进行其他操作,因此在基于连接池设计是需要注意。     我们通过spring-data-redis,来实现“同步队列”,设计风格类似与J ...
Global site tag (gtag.js) - Google Analytics