- 浏览: 36826 次
- 性别:
- 来自: 西安
最新评论
-
breadviking:
breadviking 写道谢谢 分享只是有个疑问 为啥你这没 ...
使用spring-rabbit插件实现RabbitMQ消息的发送和接收 -
breadviking:
谢谢 分享
使用spring-rabbit插件实现RabbitMQ消息的发送和接收
文章列表
RabbitMQ基础概念详细介绍
- 博客分类:
- 消息中间件
引言
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。
RabbitMQ简介
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无 ...
本文不介绍AMQP和RabbitMQ的基础知识,请参考链接: http://tracywen.iteye.com/blog/2183604 ,介绍的非常详细。
本文主要通过一个小的demo,来举例说明如何使用spring-rabbit插件来实现RabbitMQ消息的发送和接收,发送端称为生产者,接收端称为消费者。
1. 给pom.xml文件中添加rabbitmq相关依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncod ...
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
使用步骤:
1.下载附件中的protobuf-2.5.0.rar
解压后有两个文件:protobuf-java-2.5.0.jar和protoc.exe。
proto ...
Apache设置浏览器缓存的方法
- 博客分类:
- Server
一、设置浏览器缓存的四种方法
1、Last Modiefied:请求页面A,服务器会返回给浏览器页面A,并且加上一个lastmodified的标识表示最后的修改时间,那再次返回的时候,浏览器会通过if -modifiedsince询问在这个最后的修改时间之后是否修改过这个文件,然后服务器进行对比,最后服务器检查两个值的时间是否一致,如果一致,返回304缓存,不一致200。
2、Etag:与Last-Modiedied功能一致,Etag的出现弥补了Last-Modiedied的不足;
只能精确到秒:如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间。
内容定 ...
用nexus搭建maven私服
- 博客分类:
- Server
首先介绍一下背景,公司访问外网有限制,项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上 环境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32 一、用admin用户登陆nexus nexus的下载和安装都很简单,网上也有很多介绍,本文就不重复了。主要介绍一下安装之后的配置 nexus的配置需要用admin角色完成,默认的密码是admin123,进入nexus首页之后,点击右上角,进行登录
然后就可以在左边的菜单中进行配置了
...
几个去 IBM 面试的兄弟回来抱怨:去了好几个不同的 IBM 项目组,几乎每个面试官问到数据库的时候都要问用没用过存储过程,烦人不?大家去面的程序员,又不是 DBA,以前的项目都没有用到存储,不照样运行的好好的 ...
所需工具及步骤,工具下载见附件apktool: 1.将APK放置到APKTool目录下,并改名为123.apk; 2.打开APKTool,选择1进行反编译操作完成后会生成一个apk文件夹; 3.使用后可成功查看xml文件、及图片,但java代码的后缀名为.smali,无法查看源码;dex2jar: 1.将.apk的后缀名改为.rar,解压后得到classes.dex文件; 2.将该文件复制到dex2.jar文件夹下; 3.在cmd中运行dex2jar.bat classes.dex,生成classes_dex2jar.jar文件,即转换后的jar文 ...
1.交换排序
交换排序的基本思想是:两两比较待排序记录,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
应用交换排序的方法有:冒泡排序,快速排序。
冒泡排序:
最好时间复杂度为:o(n)
最坏时间复杂度为:o(n2)
平均时间复杂度为:o(n2)
稳定性:就地排序,且是稳定的
/**
* 冒泡排序
* 特征:第一次外循环得到最大(小)的值,第二次外循环得到次大(小)的值.......
* 若在某一趟排序中未发现气泡位置的交换,则说明已排好序,因此可终止循环继续向下执行。
* 引入布尔型变量exchange, ...
Activity生命周期的基本内容我就不多说了,网上一搜一大把,官方文档也说得很详细。总之,我们知道Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:
onCreate 、onStart 、onResume 、onPause 、onStop 、onDestroy 、onRestart
以图片的形式去记忆:
不难看出,其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;这6个方法是相对应的,那么就 ...
项目需要,在socket编程中发送指令的线程应该实现复用,而不是每次点击一次操作就新建一次线程(貌似重复创建线程比较耗资源),因为socket的写操作不是阻塞方法,所以必须用一个死循环来保证线程不被结束,想到利用线程的等待与唤醒模拟阻塞方法的效果。即用户发送指令的时候首先唤醒线程,执行完后就进入等待状态,如此往复。
线程类使用单例模式,使得该线程对象在整个项目中使用同一个对象,即在不同的Activity中都使用同一个线程,实现线程的复用。
经测试该代码可正确实现以上功能
代码:
第一个Activity
package wlx.test.thread;
import wlx.test ...
Java 自定义异常的实现
- 博客分类:
- Java
总结:
/*
1.自定义异常:
class 异常类名 extends Exception
{
public 异常类名(String msg)
{
super(msg);
}
}
2.标识可能抛出的异常:
throws 异常类名1,异常类名2
3.捕获异常:
try{}
catch(异常类名 y){}
catch(异常类名 y){}
4.方法解释
getMessage() //输出异常的信息
printStackTrace() //输出导致异常更为详细的信息
*/
...
注:对象需要实现Parcelable接口,并且重写三个方法
1.实体类:Device.java
package wlx.test;
import android.os.Parcel;
import android.os.Parcelable;
/**
* 注意写入和读出顺序要一致!!!
* @author Tracy.Lee
*
*/
public class Device implements Parcelable {
private String location;
private String name;
public Device() { ...