meua's blog

曾梦想仗剑走天涯,后来bug太多就没去


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

使用Docker容器化SpringBoot+Dubbo应用的实践

发表于 2018-06-10 | 分类于 SpringBoot | | 阅读次数:

使用Docker容器化SpringBoot+Dubbo应用的实践

Docker在日常开发中越来越火,工作中后端很多项目都需要使用Docker进行容器化,SpringBoot+Docker被称为“原生云应用”,SpringBoot应用和Docker结合非常容易。但是对于Dubbo和Docker结合就不是那么的顺利,由于Dubbo官方停止维护许久,同时Dubbo官方在不久前才开始积极支持SpringBoot。我在踩了很多坑之后,用本篇博客记录使用Docker容器化Dubbo应用的方法,接我的上一篇SpringBoot+Dubbo的博客。

要解决的问题

  • Dubbo Provider在Docker container中进行服务注册,在zookeeper中的注册IP是容器IP,这样外部的Dubbo Consumer是无法调用的。

开始

我们需要准备好一个SpringBoot+Dubbo的项目(我直接使用的我上一篇博客的项目),同时本机需要安装Docker。

阅读全文 »

Java设计模式-装饰器模式

发表于 2018-06-02 | 分类于 design pattern | | 阅读次数:

设计模式之装饰器模式

装饰器模式是一种结构型设计模式,可以做到在不改变原来对象功能的情况下,向原有的对象添加新的功能,起到一个装饰的作用。具体的做法是创建一个装饰器类,用来包装原有的类,在不改变原有类方法的情况下,为原有类添加新的功能。


来看一个例子,我们在外面吃饭,有很多食物,其中有烧烤和火锅。比如我们点了烧烤,但是觉得味道不够爽,所以我们选择让老板加盐,或者加辣椒,这里的加盐和加辣椒其实就是对事物起装饰作用。用代码实现如下:

创建Food接口

提供两个抽象方法

1
2
3
4
5
6
7
8
9
10
11
12
13
public interface Food {
/**
* 返回描述
* @return
*/
String getDesc();

/**
* 返回价格
* @return
*/
String getCost();
}

阅读全文 »

Java并发之多线程

发表于 2018-05-30 | 分类于 Java Concurrency | | 阅读次数:

Java并发之多线程

什么是线程?

通常我们在使用桌面操作系统的时候,说的都是XXX进程。比如我们启动一个Java程序,那操作系统中就会新建一个Java进程。那线程是什么呢?线程是比进程更加轻量级的调度单位,在现代操作系统中,线程就是最小的调度单位,又被称为“轻量级进程”。

在一个进程中是可以创建多个线程的,这些线程拥有自己的虚拟机栈,本地方法栈,程序计数器。如下图JVM的运行时内存划分中绿色的部分,就是线程私有的。CPU在多个线程中高速切换,让用户感觉像是在同时执行。总结来说,操作系统中可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个任务,每个任务就是线程。

阅读全文 »

SpringBoot中使用Redis的实践

发表于 2018-05-22 | 分类于 SpringBoot | | 阅读次数:

SpringBoot中使用Redis的实践

Redis是一个高性能的内存数据库,在日常开发中运用非常的广泛,主要用作缓存。Redis提供了非常丰富的数据结构,有String,List,Set,ZSet,Hash,
Redis为这些数据结构提供了丰富的原子性操作。弥补了其他NoSQL如Memcached的不足。在SpringBoot中,由于Boot提供了强大的AutoConfiguration,
集成Redis变得非常简单。本文将介绍Redis在SpringBoot中的应用,包括手动使用RedisTemplate进行操作,和使用注解(@Cacheable等)把业务数据缓存到Redis中。

开始

环境:JDK1.8,Maven3+,Redis3
需要预先安装好Redis,也可以使用Docker快速部署一个Redis,可以参考我之前的文章

阅读全文 »

Spring之IOC的注入方式

发表于 2018-05-09 | 分类于 Spring | | 阅读次数:

Spring之IOC的注入方式

在java中,要使用一个对象,必须先创建一个实例,但是有了IOC之后,对象的创建与销毁都交给了IOC容器,不用我们手动创建,而是直接从IOC容器中获取,达到了解耦的效果。IOC是一种思想,在Spring中,实现IOC的方式是DI(依赖注入),本文会介绍Spring依赖注入的几种方式。

Spring的依赖注入

对象,在Spring中叫做bean,即使是最简单的应用,也需要多个bean共同协作。依赖注入是指对象之间的依赖关系,一起协作的其他对象,通过构造器的参数、工厂方法的参数创建的对象,或者构造函数、工厂方法创建的对象来设置属性。所以容器的工作实际上就是创建bean并注入依赖关系。Spring中的DI方式主要有两种,构造器注入和Setter注入。

阅读全文 »

Java设计模式-代理模式

发表于 2018-05-08 | 分类于 design pattern | | 阅读次数:

设计模式之代理模式

代理模式是设计模式的一种,简单解释就是不直接访问目标对象,通过访问代理对象就可以实现对目标对象的访问。就像现在买火车票,不用直接去火车站买,可以直接去各个代售点或者APP上购买,这里的代售点或者APP就是火车站的代理,这样做的好处是,不用修改目标对象,可以在代理对象中增加额外的操作,达到扩展目标对象的目的

Java中主要有三种方式:静态代理,JDK动态代理,cglib代理。前两种代理方式都是通过接口代理,cglib可以实现代理类。

阅读全文 »

Redis3集群搭建(下)- 实操

发表于 2018-05-07 | 分类于 Ops | | 阅读次数:

Redis3集群搭建(下)- 实操

上一篇博客学习了一些Redis集群的基础知识,这篇文章将会开始学习搭建一个3主3从的小型的Redis集群。

准备

  • Redis 3.2.9
  • 一台机器,Linux或者macOS

我本机是macOS,所以这里以macOS为例。

阅读全文 »

Redis3集群搭建(上)- 基础知识

发表于 2018-05-07 | 分类于 Ops | | 阅读次数:

Redis3集群搭建(上)- 基础知识

随着项目规模越来越大,单个Redis已经不能满足需求。Redis从3.0版本之后开始支持集群模式,可以进行分布式存储,本文将介绍一些Redis集群的基础知识,再从0开始搭建一个Redis集群。

Redis集群介绍

Redis集群是一个提供在多个Redis间节点间共享数据的程序集。
Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。
Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis集群的优势:

  • 自动分割数据到不同的节点上。
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
    阅读全文 »

初探Protostuff的使用

发表于 2018-05-02 | 分类于 java | | 阅读次数:

初探Protostuff的使用

最近在学习RPC,看到了一个叫做Protostuff的库,是基于谷歌Protocal Buffer的序列化库,之前了解过Protocol Buffer,对学习了一些资料后,写了个demo,记录下来。

什么是Protocol Buffer?

Protocol Buffer是谷歌出品的一种数据交换格式,独立于语言和平台,类似于json。Google提供了多种语言的实现:java、c++、go和python。对象序列化城Protocol Buffer之后可读性差,但是相比xml,json,它占用小,速度快。适合做数据存储或 RPC 数据交换格式。

阅读全文 »

使用Docker部署Redis

发表于 2018-04-26 | 分类于 Docker | | 阅读次数:

使用Docker部署Redis

拉取镜像

这里以Redis3.2版本为例

1
docker pull redis:3.2

运行容器

1
docker run -d -p 6379:6379 -v $PWD/data:/data --name redis redis:3.2 redis-server --appendonly yes
阅读全文 »
12
meua

meua

Stay hungry, Stay foolish.

16 日志
7 分类
21 标签
GitHub E-Mail CSDN
© 2018 meua
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4