自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 rabbitmq(七)与spring整合快速入门

添加依赖<dependencies> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.4.5.RELEASE</version> </dependency></depen

2015-05-10 22:31:11 388

原创 rabbitmq(六)RPC(Remote procedure call,远程过程调用)

rabbitmq RPC工作流程客户端向远端发送请求时需要设置两个重要的属性:callback queue(回调队列)和correlation id(关联id)。远端响应客户端的请求时会将结果投递到该回调队列,并且也会附上客户端发送请求时设置的关联id,这样客户端就能通过远端响应的关联id和自身生成的关联id是否相等来判断是否是对该客户端的响应。设置好这两个请求属性后,就可以将消息投递到请求队列了。

2015-05-07 23:35:14 476

原创 rabbitmq(五)topic exchange

topic类型交换机的routingKey向topic类型的交换机投递信息时设置的routingKey不能由单个标识符组成,必须由”.”分隔的若干个标识符组成(总长度不能大于255个字节)。下面第一个示例是非法的,第二个是合法的:非法: //声明一个topic类型的交换机 channel.exchangeDeclare(EXCHANGE_NAME, "topic"); String routin

2015-05-07 14:00:21 677

原创 rabbitmq(四) Routing(路由)

队列绑定routingKey在上一节我们是这样建立队列和交换机的绑定关系的:channel.queueBind(queueName, EXCHANGE_NAME, "");第三个参数就是routingKey,我们可以指定一个routingKey:channel.queueBind(queueName, EXCHANGE_NAME, "red");说明:routingKey是否起作用是要看具体的交换机

2015-05-06 22:03:57 401

原创 rabbitmq(三)Publish/Subscribe(发布/订阅)

Exchanges(交换机)在rabbitmq中,生产者不是直接将消息发送给消息队列的,而是将消息交给交换机,由交换机交给队列。交换机有以下几种类型:direct, topic, headers和fanout。下面的代码表示创建一个名叫logs、类型是fanout的交换机(fanout类型的交换机会将消息广播给所有与其绑定的队列):channel.exchangeDeclare("logs",

2015-05-05 23:19:52 2251

原创 rabbitmq(二)Work Queues(工作队列)

Round-robin dispatching(轮询分发)默认情况下,rabbitmq会将生产者的每个消息依次分发给各个消费者,比如有3个消费者(c1,c2,c3),生产者将8条消息(msg1,msg2…msg8)分发出去,那么消费者c1将得到消息msg1,msg4,msg7;消费者c2将得到msg2,msg5,msg8;消费者将得到msg3,msg6。这就是所谓的轮询分发。示例:Worker.ja

2015-05-04 23:50:08 1912

原创 rabbitmq(一)Hello world

MAC下安装mac默认已经安装RabbitMQ服务器依赖的Erlang,可以直接使用brew来安装:brew install rabbitmq。启动RabbitMQ服务器rabbitmq-server 可以在后面加-detatched选项以守护进程方式启动Hello World消费者package com.cp.test.rabbitmq;import com.rabbitmq.client.C

2015-05-04 17:31:35 459

原创 java nio(五)Buffer

Buffer用于和channel进行交互,数据是从channel读入buffer,从buffer写入到channel中的。buffer本质上是一块可以写入数据,然后可以从中读取数据的内存。Buffer的读写示例请移步 java nio(二)FileChannelBuffer的主要类型ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffe

2015-05-03 19:09:25 414

原创 java nio(四):DatagramChannel

DatagramChannel是一个收发UDP数据包的channel。UDP是无连接的网络协议。接收数据包DatagramChannel channel = DatagramChannel.open(); channel.socket().bind(new InetSocketAddress(9999)); ByteBuffer buffer = By

2015-05-02 22:23:45 385

原创 java nio(三)SocketChannel和ServerSocketChannel

SocketChannelSocketChannel是一个连接到TCP网络套接字的channel,打开SocketChannel的方式如下:SocketChannel socketChannel = SocketChannel.open(); socketChannel.connect(new InetSocketAddress("127.0.0.1", 9999));Se

2015-05-02 21:18:41 411

原创 java nio(二)FileChannel

FileChannel是一个连接到文件的channel,可以通过它来读写文件。FileChannel不能设置为非阻塞模式。从FileChannel读数据 @Test public void test0() { FileChannel inChannel = null; try { //获取一个FileChannel实例

2015-05-02 17:14:39 389

原创 java nio(一)概述

nio是new IO的简称,是jdk1.4以后引入的api。传统IO是面向流的操作,是阻塞IO;而nio是面向缓冲的,是非阻塞IO。nio主要由以下3个核心部分组成:buffer、channel、selector。channel和bufferchannel看上去有点像流,但与流不同的是,channel是双向的,数据可以从channel读到buffer中,也可以从buffer写到channel中。而流

2015-05-02 15:21:28 333

原创 SSH端口转发

本地转发ssh -L :: 远程转发ssh -R ::

2015-03-07 22:15:23 323

原创 线程池

一:几种线程池对象比较1.newSingleThreadExecutor创建一个只有一个线程的线程池 。与普通单线程不同的是,保证池子里有一个线程,当线程意外死亡,会自动产生一个线程,确保始终有一个线程存活。2.newFixedThreadPool创建一个拥有固定线程数的线程池。任意时间点,最多只能有固定数目的活动线程存在,此时如果有新的线程要加入,则放在队列中等待,直到某个线

2015-02-02 15:37:13 319

原创 java并发包中的lock

一:java并发包jdk 1.5引入了java.util.concurrent并发包,里面提供了各种强大的并发工具,让并发编程变得更容易。本文简单介绍一下并发包提供的锁(lock)。二:锁的使用使用并发包的锁时,通常代码结构如下: Lock l = ...; l.lock(); try { // 操作共享资源 }

2015-02-02 14:03:27 454

原创 线程调度

一:线程调度常用方法1.    sleep方法       sleep()允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。此操作受到系统计时器和调度程序精度和准确性的影响。休眠的线程不丢失任何监视器的所属权,也就是说不会释放锁。2.  setPriority方法(设置优先级)

2015-02-02 13:38:32 385

原创 线程间通信

一:线程间通信线程间通常需要通信协作来完成某项任务。在java中可通过wait,notify,和notifyAll方法实现线程间通信。二:wait,notify,和notifyAll方法说明只能在同步方法或者同步块里才能调用这3个方法。因为只有在synchronized 方法或块中当前线程才占有锁,才有锁可以释放。若不满足这一条件,程序虽然仍能编译,但在运行时会出现Il

2015-02-02 11:48:45 471

原创 多线程的同步

一:多线程的同步在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个资源,需要对这种潜在资源冲突进行预防。解决方法就是在线程使用一个资源时为其加锁。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。二:synchronized关键字1.当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。 当synchronized包

2015-02-02 09:52:40 391

原创 多线程

一:进程与线程1.  进程:执行中的程序(程序是静态的概念,进程是动态的概念)。 2.  线程:程序中单独顺序的流控制。二:多线程1.  多线程:指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。对于单核CPU来说,某一时刻只能有一个线程在执行(微观串行),从宏观角度来看,多个线程在同时执行(宏观并行)。 对于双核或双核以上的CPU来说,可以真正做到微观并行。

2015-02-01 22:38:46 442

达内培训当当网ssh项目

这是达内培训的java web项目.模拟当当网的ssh项目,附加了所用的jar包,代码有注解,使用struts2 + spring +Hibernate技术实现的。包涵数据库sql文件

2013-01-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除