自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Java写时复制CopyOnWriteArrayList

Copy-On-Write是一种程序设计的优化方法,多线程在不修改对象时可以共享一个对象地址空间,如果某一个线程要求修改对象时,需要首先将原来对象复制一份,在新复制的对象地址空间上修改对象内容,其他线程访问此对象时还是访问之前的旧对象,当新对象修改完成后,再将旧对象的指针指向新对象,这种优化方法适合读多写少的场景,体现了读写分离思想。从JDK1.5起;">使用CopyOnWrite机制实现的...

2018-11-18 21:39:03 527

原创 Java线程中阻塞队列

Java语言提供了java.util.concurrent包解决线程同步问题,concurrent包中的阻塞队列BlockingQueue能够很好地线程同步问题,接口BlockingQueue提供如下几个线程同步方法保存数据:  offer(obj):向队列BlockingQueue保存数据,如果BlockingQueue可以容纳,返回true,否则返回false.方法立刻返回不阻塞线程。...

2018-11-18 21:12:49 226

原创 Java可重入锁ReentrantLock

在JDK1.5之前,我们设计程序进行线程之间通信时必须使用同步锁,获得同步锁必须使用同步关键字synchronized(lock)的形式。JDK1.5提供了线程同步相关的包java.util.concurrent,引入了可重入锁ReentrantLock,使用起来很方便并且提高了代码运行效率。可重入锁ReentrantLock从概念上理解是,此锁多线程可以分别分时拥有的意思,举个简单例程说明我...

2018-11-18 21:00:38 126

原创 SpringBoot集成RabbitMQ解耦合二

如何让工具类更加通用,与业务模块解耦合是架构师和产品研发人员一直研究的课题,不管MVC分层设计,SOA面向服务设计,还是为解决高并发的读写分类,前后台分类,集群计算都解决问题的统筹方法。如下实现Spring+RabbitMQ集成工具,使用Spring开发项目更加容易集成RabbitMQ,无论是发送RPC同步调用还是异步调用。使用步骤:一、准备Maven POM配置二、准备SpringBo...

2018-11-17 21:15:05 647

原创 Java 注解

2018-11-15 21:08:27 166

原创 Java RMI调用

注意:运行rmiregistry之前,必须将classpath路径设置指向当前类所在文件目录。https://pan.baidu.com/s/1nwqFUXj

2018-11-15 21:01:18 178

原创 SpringBoot集成RabbitMQ解耦合

RabbitMQ的消息接收者程序往往需要操作业务数据,如何将收发消息的工具类与业务系统解耦合,提供消息工具类的应用范围是一个需要解决的问题,本例中添加一层接口,参考下图:同步消息SyncSendMsgpackage com.test.util;import java.io.ByteArrayOutputStream;import java.io.ObjectOutputStream;...

2018-11-15 20:49:28 695

原创 SpringBoot集成RabbitMQ

配置POM配置application.properties发送RabbitMQ消息分为两种,第一种是同步调用(RPC),也就是发送完消息后需要等待消息处理结果,第二种是异步消息,发送者发消息后可以处理其他业务,不等待消息处理结果。同步消息消息发送类package com.test;import java.io.ByteArrayOutputStream;import java....

2018-11-15 11:50:48 1602 1

原创 使用Dubbo搭建服务群集

Dubbo是面向服务SOA管理框架,使用Dubbo可以轻松搭建服务的高可用框架,按照如下拓扑图搭建一个高可用服务框架。1、设计服务接口IUserMng2、设计服务接口实现类UserMng3、编写配置文件4、编写Window允许服务的批处理文件run.batset classpath=./libs/commons-fileupload-1.3.2.jar;%classpath%s...

2018-11-14 20:43:03 202

原创 Dubbo第一个例程(Maven)

使用Maven创建项目1、创建Dubbo Server2、修改Dubbo Server的POM包依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven....

2018-11-14 20:20:25 1630

原创 Dubbo安装配置

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。...

2018-11-14 19:48:50 360

原创 SpringBoot集成Dubbo

服务器端配置一、准备POM文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache

2018-11-14 19:24:06 312

原创 Dubbo介绍

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo特点(1) 连通性:注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服...

2018-11-11 22:13:06 371

原创 Shell 安装JDK与Tomcat

1、下载JDK和Tomcat云盘下载:https://pan.baidu.com/s/1snmKXIX2、使用Shell installJdk.sh 安装JDK和Tomcat#!/bin/bashmyDir=`pwd`rpm -qa | grep jdk > jdk.txtgrep "jdk" $myDir/jdk.txt > /dev/nullif [ $? -e...

2018-11-11 21:58:41 406

原创 Shell安装Nginx

1.云盘下载 Shell脚本https://pan.baidu.com/s/1snmKXIX2.编写installNginx.sh Shell文件#!/bin/bashmyDir=`pwd`rpm -qa | grep jdk > jdk.txtgrep "jdk" $myDir/jdk.txt > /dev/nullif [ $? -eq 0 ]; then ...

2018-11-11 21:57:27 651

原创 Nginx+Tomcat8+Redis搭建Tomcat集群

一、准备Linux虚拟机一定保证Linux可以访问互联网二、下载所需软件云盘下载https://pan.baidu.com/s/1UK-_zof3xQfPIA1qAskGVw三、上传软件,安装Nginx将下载的软件上传到/u01目录下修改installNginx.sh的执行属性chmod +x installNginx.sh执行Shell脚本 installNginx.sh完...

2018-11-11 21:55:45 323

原创 Nginx+Tomcat7+Redis搭建Tomcat7集群

一、准备Linux虚拟机一定保证Linux可以访问互联网二、下载所需软件云盘下载https://pan.baidu.com/s/108pndzP0QTai2oBdKGm6IQ三、上传软件,安装Nginx将下载的软件上传到/u01目录下修改installNginx.sh的执行属性chmod +x installNginx.sh执行Shell脚本 installNginx.sh完...

2018-11-11 21:51:10 466

原创 Nginx群集均衡策略

1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream test.com{server 192.168.169.100;server 192.168.169.110;}2、指定权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。upstream test.com{server 192.168....

2018-11-11 21:42:06 260

原创 Nginx配置多个虚拟机

JDK下载地址:https://pan.baidu.com/s/1eRIbd6MTomcat7 下载地址:https://pan.baidu.com/s/1o7EwSP0[root@rabbitmq1 conf]# cat nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_...

2018-11-11 21:24:27 2067

原创 Nginx配置参数

Nginux的配置文件是ngiux.conf全局配置参数:1、运行用户user nobody2、启动的进程数,与CPU数量设置相同worker_processes 1;3、错误日志和PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log inf...

2018-11-11 21:18:55 7599

原创 Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日...

2018-11-11 21:13:05 12321

原创 Nginx安装

1、依次下载这些软件包wget http://nginx.org/download/nginx-1.10.2.tar.gzwget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gzwget http://zlib.net/zlib-1.2.11.tar.gzwget ftp://ftp.csx.cam.ac.uk/pub/so...

2018-11-11 21:09:53 575

原创 SpringBoot项目部署

SpringBoot项目分为后台服务项目和Web项目,它们的部署步骤基本相同,都需要使用一个Maven插件打包完成Web项目POM.xml文件中打包类型需要是war类型Maven插件完整的POM文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS

2018-11-07 21:14:10 219

原创 RabbitMQ Fanout类型交换机

Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上。消息生产者package com.test.fanout;import com.rabbitmq.client.*;import java.io.IOException;import java.lang.String;import java.lang.System;import java.uti...

2018-11-04 14:55:30 498

原创 RabbitMQ Topic类型交换机

RabbitMQ消息服务中Topic类型交换机根据通配符路由消息,*代表一个单词,#代表代表0或多个单词。生产者package com.test.topic2;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFact...

2018-11-04 14:52:40 715

原创 RabbitMQ 消息传递Java对象

通过消息服务器传递Java对象,Java类必须实现序列化接口,可以把Java对象转化为字节数组,从消费者或生产者传递到另外一个JVM中,一定需要两个JVM共享这个类,比如是UserInfo类。1、定义序列化的类UserInfo2、消费者中,实例化UserInfo的对象,并取出它的字节数组3、编写生产者UserInfo.javapackage com.test.rfc;pu...

2018-11-04 14:46:43 5577

原创 RabbitMQ RFC同步调用

RabbitMQ RFC同步调用是使用了两个异步调用完成的,生产者调用消费者的同时,自己也作为消费者等待某一队列的返回消息,消费者接受到生产者的消息同时,也作为消息发送者发送一消息给生产者。参考下图:调用流程如下:其他的消息服务器实现同步调用也是类似的原理,比如ActiveMQ。下面编写消费者类Server生产者Client代码启动一命令行,将当前目录转移到项目所在的目录...

2018-11-04 14:40:18 606

原创 RabbitMQ Linux安装

RabbitMQ在Linux上安装,需要很多依赖库,如何不能解决依赖库德版本问题,可能会比较麻烦,最好结合Yum进行安装,我这里使用的Linux环境是64位CentOS6.2 ,使用Yum源是阿里云的CentOS 6wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo还单独...

2018-11-04 14:33:00 326

原创 RabbitMQ 客户端控制消息

1.生产者发送消息,消费者接受消息并回执发送回执有两种方法一、使用channel.basicConsume(queue,true,callback);二、使用channel.basicAck(tag,true/false);2.通过channel.basicConsume向服务器发送回执,删除服务上的消息3.不发送回执,服务器的消息一直存在4.消费者拒绝接受消息,并抛弃服务器的...

2018-11-04 14:28:32 2073

原创 RabbitMQ 第一个程序

RabbitMQ消息服务器主要解决应用程序之间异步消息传输问题,传统的MQ分为点对点和主题与订阅,RabbitMQ使用Exchange(交换机)实现更加灵活的消息传递。前面介绍过几个概念,RoutingKey,Binding,Queue,Exchange,Binding将Exchange和Queue绑定在一起,Exchange是交换机,Queue是消息队列,Exchange的四种类型决定如何...

2018-11-04 14:16:55 241

原创 RabbitMQ Window环境安装

RabbitMQ环境的安装分别介绍在Window和Linux下两个环境的安装过程.Window安装RabbitMQ,RabbitMQ安装文件是64位的,所以Window系统必须是64位的.安装RabbitMQ之前必须首先安装Erlang开发语言.软件下载地址:https://pan.baidu.com/s/1mi7porm首先安装opt_win64_20.2.exe ERlang语言...

2018-11-04 14:05:08 435

原创 RabbitMQ介绍

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。消息服务器RabbitMQ的应用场景异步处理:例如短信,邮件通知等场景,用户不需要时时等待...

2018-11-04 13:57:25 491

原创 Spring Cloud Feign 声明

Feign介绍Feign 是一个声明服务客户端框架,使用它编写客户端程序更容易,之前设计代码调用服务时需要定义RestTemplate,代码不够直观,使用Feign引用远程服务,非常方便和高效,Feign包含了Ribbon和Hystrix,所以不再需要单独引入Ribbon与Hystrix依赖。本例程结构图共享Model/Api工程不需要依赖SpringCloud的Jar,接口中需要使用S...

2018-11-04 11:29:23 258

空空如也

空空如也

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

TA关注的人

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