- 浏览: 2253452 次
- 性别:
- 来自: 北京
最新评论
-
yidongnan:
跟 spring boot 配合的例子可以使用这个库https ...
GRPC原理解析 -
kyo472083100:
写得很好,感谢楼主解释得很清晰
Mongodb中Mapreduce特性与原理 -
lanhz:
对于三个节点:1、2、3,如果2向1广播投给2(即2自己),1 ...
Zookeeper选举过程描述与状态迁移 -
Bll:
厉害了
GRPC原理解析 -
QING____:
xiatiandebaofengyu 写道有个问题:发布者在发 ...
Redis编程实践【pub/sub】
文章列表
Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现.
commons-pool实现思想非常简单,它主要的作用就是将"对象集合"池化,任何通过pool进行对象存取的操作,都会严格按照"pool配置"(比如池的大小)实时的创建对象/阻塞控制/销毁对象等.它在一定程度上,实现了对象集合的管理 ...
一.JMS使用场景: JMS是为"消息"而生,从使用的角度来说,任何可以与业务解耦的数据均可以作为"消息"存储;任何结构化(格式严格,适合解析)但未索引化(不能被随意检索)的数据均可以交付给JMS存储,但尽管JMS不是 ...
ActiveMQ编程实例
- 博客分类:
- JMS
本文主要展示如何使用activeMQ进行程序设计,可以作为代码实例参考;此后会继续补充有关JMS 或ActiveMQ的优化和架构部分。
本实例主要展示如何使用Queue。
一.pom.xml
<dependencies>
<dependency>
<gro ...
JAVA-RSA/DES加密实现备忘.
- 博客分类:
- JAVA
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原理与程序设计
- 博客分类:
- JAVA
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工具包提供了java可以访问其他语言脚本的能力,脚本片段将会在运行时编译成中间代码(字节码),并能够被java scripting引擎调用。在某些场景下,很有用。
1. 简单调用
/**
* simple,默认java.*包中的API已经倒入到engine中。你可以使用那些API
* @throws Exception
*/
private static void invoke1() throws Exception{
ScriptEngineManager engineManager = new ScriptEngineManage ...
Commons-digester:规则引擎全实例
- 博客分类:
- JAVA
Apache Commons-digester是一个非常便捷的XML-Java映射工具包,我们常用它作为规则引擎来使用,其中xml文件用来定义“规则”,通过digester解析之后,将会和javabean对象建立关系。其中struts/spring等第三方项目都使用digester作为xml-java映射工具;digester很好的实现了“xml定义规则”+“java业务处理”的桥接能力;今天我就给大家分享一下如何使用Digester工具设计“数据库分表”策略。
Digester的API非常简单,在此就不再赘言,直接使用实例讲解。
一.XML与规则:
你需 ...
Commons-chain:责任链框架
- 博客分类:
- JAVA
Commons-chain是apache commons中的一个子项目,主要被使用在"责任链"(执行链)的场景中,struts中action的调用过程,就是使用了"chain"框架做支撑.如果你的项目中,也有基于此种场景的需求,可以考虑使用它.
所谓"责任链"就是:一系列有序的command能够按照顺序执行,并能够互相交换或者传递执行结果;和我们常说的"责任链"模式类似.
commons-chain通过被用在web项目中,或者在基于"规则引擎"的其他模块中,comm ...
Cglib与动态代理代码样例
- 博客分类:
- JAVA
Cglib基于字节码生成功能(类似于jdk proxy),提供了简单但是强大的动态代理的能力.代码样例基于cglib-2.1.3和asm-1.5.3:
1. Proxy动态代理:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
TestObject orignal = new TestObject() ...
Cglib与反射机制代码样例
- 博客分类:
- JAVA
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 = ...
一.冒泡排序
特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2)
思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一轮结束后,当前轮"最后一个元素"必将是最大的.
...
java与常用设计模式
- 博客分类:
- JAVA
程序设计最终将归结为"算法"和"设计模式",其中设计模式是我们进行良好程序设计的思想和"纲要";接下来本人将以通俗的实例来展示几种常用的设计模式,以及它们在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 ...