自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 问答 (1)
  • 收藏
  • 关注

原创 八、Docker+jenkins+maven+github+阿里云镜像仓库持续化部署spring boot项目

CI/CD持续集成/持续部署在软件开发、测试和运维过程中越来越重要。本文主要介绍利用Docker、jenkins、maven和镜像仓库实现持续化部署spring boot项目。

2019-11-12 14:43:45 1074

原创 微服务入门学习教程(Spring Boot+Spring Cloud+Docker)

从传统项目到互联网项目,从单体应用到微服务架构,从人工运维到自动化运维,从物理机房到云服务器再到Serverless,最后留给开发人员的只剩下了业务服务,业务服务的高可用性和可扩展性就成了开发人员能力的考核点,而微服务就是对应的解决方案。

2019-07-23 18:32:06 4143 1

原创 JUC之Atomic原子类型

一、线程安全问题并发编程(多线程编程)首先要解决的问题就是线程安全问题,我们常用的一些Java基本类操作在单线程执行过程中是没有问题,但是一旦到多线程环境中就会出现失常,比如:int++存在线程安全问题,即多线程执行int++后结果会与预期有出入,不具备原子性。public class AtomicIntegerTest { static int num=0; static AtomicInteger ai = new AtomicInteger(0); public

2021-02-02 14:13:10 207

原创 基于vue-cli 3.x/@vue/cli构建vue项目

为区别老版本的vue-cli 2.x,vue-cli 3.x已经更换为@vue/cli安装@vue/cli如果已经安装了旧版本的vue-cli,需要先卸载npm uninstall vue-cli -g或者yarn global remove vue-cli卸载成功后进行安装npm install -g @vue/cli或者yarn global add @vue/cli查看版本vue --version创建项目1)通过指令构建vue create hello-world

2020-09-22 16:05:43 195

原创 spring-boot学习:二十、spring-boot集成RabbitMQ

由于JMS存在跨语言跨平台的缺陷,所以出现了AMQP(Advanced Message Queuing Protocol),一个提供统一消息服务的应用层标准高级消息队列协议,代表RabbitMQ一、下载安装RabbitMQ安装从https://www.rabbitmq.com/download.html下载RabbitMQ由于RabbitMQ是用Erlang语言编写的,安装RabbitMQ需要先安装Erlang运行平台http://www.erlang.org/downloads配置环境变量

2020-08-13 16:12:30 582

原创 spring-boot学习:十九、spring-boot集成activemq

一、安装activemq(windows)下载后解压到指定目录http://activemq.apache.org/components/classic/download/配置文件D:\software\apache-activemq-5.15.9\conf1)jetty.xml配置控制台地址和端口:<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

2020-08-13 15:25:35 857

原创 spring-boot学习:十八、spring-boot集成swagger

swagger通过spring注解自动生成接口文档,可通过swagger-ui展示pom.xml<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <

2020-08-13 11:41:48 866

原创 spring-boot学习:十七、spring-boot集成redis

在springboot1.x中默认使用Jedis,而在springboot2.x中默认使用lettuce。为什么使用lettuce替换jedis呢?Jedis在实现上是直连的redis server,在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接;Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,因为StatefulRedisConnection是线程安全的,所以一个连接实例就可以满足多线

2020-08-11 10:07:06 1386

原创 spring-boot学习:十六、spring-boot获取ApplicationContext上下文

很多时候我们希望直接获取spring容器中管理的bean,则可以通过上下文ApplicationContext来获取,哪如何获取ApplicationContext呢?以下几种方式,根据需要选用:1.实现接口ServletContextListener,并实现接口需要实现的方法,使用@WebListener与@ServletComponentScan进行注册public void contextInitialized(ServletContextEvent sce) { ApplicationCon

2020-08-11 09:08:21 898

原创 spring-boot学习:十五、spring-boot集成thymeleaf

springboot2.x和spring5.x不再支持velocity,推荐使用thymeleaf,原因是velocity更新太慢或太少,社区不够活跃。实现步骤:1.引入jar包<dependency><!--Web相关依赖--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>&l

2020-08-10 17:37:24 661

原创 spring-boot学习:十四、spring-boot统一分页处理

分页处理在项目开发中是不可避免的步骤,本文主要是介绍基于Mybatis的分页。Mybatis提供了一个很重要的接口类Interceptor,可以通过实现这个拦截器来完成自定义操作;以下仅提供实现分页的大致步骤:@Component@Intercepts({ @Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class, RowBounds.class, Result

2020-08-07 18:19:52 1144

原创 spring-boot学习:十三、spring-boot统一异常处理

上文讲了如何对返回的数据格式进行统一处理,本文主要是进一步对异常情况的补充。在后台接口处理的过程中会产生各种各样的异常,比如参数校验异常、系统内部异常、业务逻辑异常等,这些异常产生在各个环节,不能随意抛给调用方,格式不一致会导致调用方无法处理。实现思路:1)对后台接口(Controller)中的异常进行处理,使用@ControllerAdvice+@ExceptionHandler的方式进行处理;2)对于Filter等类产生的异常,上面的方式是无法处理到的,在spring boot中默认将异常统一转

2020-08-07 15:31:58 660

原创 spring-boot学习:十二、spring-boot统一返回数据格式

后台服务最终的功能之一就是提供服务接口供其他方调用,减少不必要的混乱,那么定义统一的返回数据格式就显得尤为重要。实现思路:利用spring暴露的方法返回值处理接口类HandlerMethodReturnValueHandler,实现该接口类,定义标记有注解@ResponseBody的方法才需要处理,对方法返回的结果进行统一封装;由于@ResponseBody的粒度比较大,有些可能不需要处理的接口也会被包含进去,所以自定义了注解@ApiResult,只有加了@ApiResult注解的类/方法才会真正被处

2020-08-07 14:57:45 793

原创 七、Docker安装可视化UI之portainer

使用Docker需要记一些指令,对入门者来说有点小门槛,安装可视化UI组件后一切问题都迎刃而解,portainer你值得拥有。

2019-11-12 14:15:44 259

原创 六、Docker安装jenkins

Jenkins在持续化交付过程中扮演着不可或缺的角色,在微服务大行其道的今天更加显得尤为重要,与docker协同犹如神兵利器。本文主要讲解如何在docker中安装jenkins,具体如何使用还需参考jenkins官网

2019-11-12 14:03:07 288

原创 spring-boot学习:十一、spring-boot集成事务

spring-boot事务也就是使用spring事务,业务执行过程中出现异常事务能够自动回滚,避免数据库出现脏数据。

2019-09-30 10:50:43 2066

原创 windows下安装Apache并注册为服务

一、下载1. 进入官网http://httpd.apache.org/download.cgi,找到需要的版本2. 选择下载渠道3. 选择需要的类型二、安装0.根据ReadMe.txt中说明安装VC++,否则会提示找不到vcruntime.dll之类的错误1. 将下载的文件解压到相应的目录后,定义服务目录路径SRVROOT为D:\software\httpd-2.4.20-x6...

2019-09-25 15:38:41 2524

原创 spring-boot学习:十、spring-boot集成mybatis

在java代码中写sql,而且还要对结果集手动进行处理,如果是简单的sql还好,复杂一点想想都头皮发麻。为了便于解耦,让代码更整洁、层次更清晰,后期维护更好实施,我们引入mybatis。

2019-09-18 18:09:59 2131

原创 spring-boot学习:九、数据库连接之集成alibaba druid

虽然spring-boot2中默认使用HikariCP作为默认连接池,而且该作者也宣传HikariCP是最快牛逼的连接池,但是,但是,但是我们还是不用。因为我们有更好的选择,阿里的druid,自带监控、中文文档、社区活跃,阿里自己都用,我们有理由不用么。

2019-09-12 16:50:03 2511

原创 spring-boot学习:八、数据库连接之自定义配置

尽管spring boot为我们封装了大量的配置,开箱即用;但是每个项目背景不一样,最归会有一些个性化的需求,比如连接多个数据库,数据库配置需要独立开。以下介绍如何自定义数据库配置。

2019-09-12 15:03:11 3182

原创 spring-boot学习:七、数据库连接之默认配置

数据库连接是做项目的基本要素之一,本文以springboot的默认连接池HikariCP为例,介绍如何使用springboot来访问数据库。

2019-09-10 17:13:56 4243

原创 spring-boot学习:六、配置多环境和打包

由于开发、测试和生产环境配置都不一样,如果手动替换application.properties文件容易出错,希望各环境的配置文件独立开,环境与配置文件自动匹配,就需要用到maven的profiles了。

2019-08-20 12:19:24 1248

原创 Centos使用let's encrypt免费https证书(certbot)

let's encrypt提供免费的https正式,真的很棒

2019-08-08 12:41:59 4857 1

原创 spring-boot学习:五、自定义配置

尽管spring boot通过默认或推荐配置使开发人员更加便捷,但有时候依然需要进行一些自定义的配置,比如端口、编码等,而spring boot也是开放和支持的。

2019-08-02 18:13:08 2485

原创 spring-boot学习:四、spring-boot构建war包部署

现在的项目(特别是互联网项目)很多都是前后端分离,后台专注提供API服务,这种情况下jar包发布是首选,特别是结合jenkins和docker实现自动化部署更加便捷。但是依然还有很大一部分小项目或内部项目,因为规模、成本和运维人员不足,依然是保持传统的web架构,前端和后台耦合在一起作为一个工程发布,而且这些小项目经常需求变动,特别是页面调整,在jar包部署的情况下,每次一个小的调整都需要重新打...

2019-08-02 12:06:52 2779

原创 spring-boot学习:三、spring-boot构建jar包部署

前面讲过spring-boot内置了应用服务器(如:tomcat),spring-boot项目的运行不在需要搭建外部tomcat环境,那么我们就可以将程序build成jar包直接运行,本文简单介绍如何build jar包。

2019-08-01 17:17:34 2309

原创 spring-boot学习:二、创建一个restful web service

刚开始学习,不知道如何入手,可以根据官方提供的demo进行学习。如:https://spring.io/guides/gs/rest-service/ ,可下载源码查看,有一个大致的了解。环境准备:JDK1.8及以上、Maven3.2+对于编辑器,推荐使用IntelliJ IDEA,创建工程时有引导,可选择需要的spring组件,包括spring web、spring cloud xxx...

2019-08-01 16:48:15 2994

原创 spring-boot学习:一、spring-boot是什么?

spring-boot已经成为Java开发必选框架,本文简单介绍了spring-boot的由来、策略和特性,以此来说明spring-boot是一个什么样的框架。

2019-07-25 16:14:42 2968

原创 微服务是什么?初识微服务

一、微服务的概念微服务架构可以说是如何将功能分解成一系列服务的一种架构模式。对于一个应用系统包含两部分的需求:第一部分是功能性需求,用于定义一个应用是用来做什么的,该应用系统用来达到什么目的;第二部分就是非功能性需求,包括了对应用系统的扩展性、灵活性,还有性能、运维、安全、测试、监控等需求,这种非功能性需求是用来保障业务系统能够正确、顺畅地运行。而对于微服务架构来说,则着重于后一种需求。总而言...

2019-07-23 17:54:27 4495

原创 (十三)spring-cloud入门学习:服务网关Spring Cloud Gateway

Zuul(1.x) 基于 Servlet,使用阻塞 API,它不支持任何长连接,如 WebSockets,Spring Cloud Gateway 使用非阻塞 API,支持 WebSockets,支持限流等新特性。Spring Cloud Gateway是基于spring生态系统Spring 5, Spring Boot 2和Project Reactor等技术上开发的,它旨在提供简单有效的AP...

2019-07-23 16:07:16 4263

原创 (十二)spring-cloud入门学习:服务注册中心Consul

由于eureka2.x停止维护了,当前spring cloud eureka使用的eureka 1.9.8,所以对当前一些spring cloud系统影响不大,但是spring cloud发展迅速,更新频率低或停更的组件注定会被淘汰。当然也有其他组件可以作为spring cloud注册中心,比如:Consul,Zookeeper,Kubernetes(k8s)。Eureka与Consul最大的区...

2019-07-23 15:40:56 3332

原创 (十一)spring-cloud入门学习:分布式链路跟踪Spring Cloud Sleuth和Zipkin

随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药。于是就有了分布式系统调用跟踪的诞生。本文主要介绍Spring Cloud Sleuth和Zipkin进行链路跟踪。

2019-07-23 15:26:32 4158

原创 (十)spring-cloud入门学习:API服务网关Spring Cloud Zuul

Spring Cloud Zuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。

2019-07-23 15:05:31 3649

原创 (九)spring-cloud入门学习:配置中心和消息总线Spring Cloud Bus

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。可使用AMQP(RabbitMQ)或Kafka作为通道。

2019-07-23 14:57:30 3379

原创 (八)spring-cloud入门学习:高可用配置中心

客户端都是直接调用配置中心的server端来获取配置文件信息,这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址的时候,客户端也需要修改配置,不符合springcloud服务治理的理念。springcloud提供了这样的解决方案,我们只需要将server端当做一个服务注册到eureka中,client端去eureka中去获取配置中心server端的服务即可,而配置中心也可以集群化,从而达到高可用。

2019-07-23 14:40:26 3826

原创 (七)spring-cloud入门学习:配置中心config server(git)

随着线上项目变的日益庞大,每个项目都有各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维成本高也容易出错。配置中心便是用来解决此类问题的。一个配置中心提供的核心功能应该有什么:提供服务端和客户端支持集中管理各环境的配置文件配置文件修改之后,可以快速的生效可以进行版本管理支持大的并发查询支持各种语言...

2019-07-23 12:19:15 6806 4

原创 (六)spring-cloud入门学习:断路器聚合监控(Hystrix Dashboard Turbine)

看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。

2019-07-23 11:40:52 2864

原创 (五)spring-cloud入门学习:断路器监控Hystrix Dashboard

在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。

2019-07-23 11:34:54 2815

原创 (四)spring-cloud入门学习:断路器Hystrix

为了防止服务雪崩,提出了断路器模型,而Netflix提供Hystrix组件实现了断路器模式。

2019-07-23 11:26:13 2797

原创 (三)spring-cloud入门学习:服务消费Feign

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

2019-07-23 11:15:03 1405

空空如也

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

TA关注的人

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