java进阶-框架篇
文章平均质量分 76
主要针对已经有java基础的程序员,通过该专栏可以提升自己的技术水平,最后能够自己搭建项目框架
wwwzhouzy
一个有情怀的奋斗者!
展开
-
Springboot集成Disruptor做内部消息队列
一、基本介绍1,什么是 Disruptor?(1)Disruptor是英国外汇交易公司LMAX开发的一个高性能的并发框架。可以认为是线程间通信的高效低延时的内存消息组件,它最大的特点是高性能。与Kafka、RabbitMQ用于服务间的消息队列不同,disruptor一般用于一个JVM中多个线程间消息的传递。(2)从功能上来看,Disruptor实现了“队列”的功能,而且是一个有界队列(事实上它是一个无锁的线程间通信库)。作用与ArrayBlockingQueue有相似之处,但...原创 2021-08-08 16:12:18 · 2241 阅读 · 2 评论 -
springboot整合drools7.0规则引擎
一、简介Drools是一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行所需的业务规则。适用于风控、反欺诈规则匹配二、语法详见地址:http://www.drools.org.cn/三、springboot整合drools1、pom引包<?xml version="1.0" encoding="UTF-8"?><project xmlns=原创 2021-08-08 11:34:37 · 756 阅读 · 0 评论 -
springboot集成activiti6工作流
源码地址:https://codechina.csdn.net/wwwzhouzy/activitidemo一、什么是工作流工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开原创 2021-08-07 21:03:44 · 675 阅读 · 0 评论 -
springboot + VUE实现后台管理系统(集成JWT接口权限验证)
源码地址:https://codechina.csdn.net/wwwzhouzy/vuespringboot前端项目:smart-admin-web后台项目:bootAdmin一、用到的技术1、前端Vue + Vue-Router + Vuex + ViewUI + vue-enum +AxiosView UI即为原先的 iView,从 2019 年 10 月起正式更名为 View UI,官网地址:https://www.iviewui.com/不过也可以使用VUE+elem.原创 2021-08-07 14:00:48 · 830 阅读 · 0 评论 -
java入门-springboot+mybatis+vue实现简单的后台管理系统
源码地址:https://codechina.csdn.net/wwwzhouzy/vueadmin注意:前后端在一个地址,vueClient是vue前端,zhouzyServer是后端一、效果图1、列表2、图表二、代码此处贴核心代码后端代码结构:1、pom引包因为我用的是mysql5.0,所以springboot使用2.0.5版本<?xml version="1.0" encoding="UTF-8"?><pr..原创 2021-08-05 22:25:25 · 3464 阅读 · 1 评论 -
java入门-springboot整合mybatis+layui
源码地址:https://codechina.csdn.net/wwwzhouzy/springboot-ssm先看看项目启动,访问页面的效果图:需要注意的地方:1、引入layui相关资源文件时注意路径,尤其是引用Thymeleaf标签时静态资源默认从static目录下查找2、注意json传送数据的编码问题,不然会有乱码继承WebMvcConfigurationSupport类,重写方法: @Bean public HttpMessageConvert..原创 2021-08-04 21:52:27 · 1072 阅读 · 1 评论 -
java入门-第一个ssm框架(含layui)
源码地址:https://codechina.csdn.net/wwwzhouzy/zhouzyssm一、简介1、什么是ssmssm就是spring+springmvc+mybatis2、spring mvc原理先来个图:我们再来看看SpringMVC的流程吧1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器,生成处理器对象及原创 2021-08-03 22:21:18 · 356 阅读 · 0 评论 -
dubbo快速入门(包含dubbo管理页面)
一、dubbo的实现原理dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。dubbo框架是基于Spring容器运行的。RPC远程过程调用远程过程调用协议是一种通过网络从远程计算机程序上请求服务,而不需要了解网络底层技术的协议。RPC协议假定某些传输协议的存在,如TCP或者UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC的优点:使得开发包括网络分原创 2021-07-26 21:32:32 · 1345 阅读 · 3 评论 -
分布式事务TCC框架-hmily(spring cloud feign)
官网案例:文档(springcloud):https://dromara.org/zh/projects/hmily/user-springcloud/官网示例:https://github.com/dromara/hmily/tree/master/hmily-demo/hmily-demo-springcloud本示例:https://codechina.csdn.net/wwwzhouzy/zhouzy-hmily一、说明hmily是一个高性能异步分布式事务TCC框架,具有以下..原创 2021-07-18 13:09:12 · 3316 阅读 · 0 评论 -
springboot 实现cas单点登录
一、部署服务端我这边部署的是cas-server5.2cas-server:https://github.com/apereo/cas-overlay-templatecas documenthttps://apereo.github.io/cas/5.2.x/index.html源代码:https://codechina.csdn.net/wwwzhouzy/zhouzy-cas1、构建下载后解压如图:构建,我的是windows,用build.cmd也可以直接从ht..原创 2021-07-17 16:21:50 · 992 阅读 · 0 评论 -
springboot集成mongdb 操作数据及文件存储下载
一、安装如果去官网下载mongdb的话比较麻烦,http://www.mongodb.org。建议去http://dl.mongodb.org/dl/win32/x86_64这个地址下载,方便快捷安装好之后,去安装目录启动,我安装到了C盘C:\Program Files\MongoDB\Server\4.0\bin。cd进入该目录,然后命令启动:mongod --dbpath E:\mongdb\data 如图:访问:http://localhost:27017/说明启动成功二、..原创 2021-07-11 12:20:41 · 434 阅读 · 0 评论 -
springboot 整合Elasticsearch6.x ElasticsearchRepository和ElasticsearchTemplate
一、引入对应的pom版本要对应,不然连接会报错<?xml version="1.0" encoding="UTF-8"?><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.apach原创 2021-07-10 18:45:37 · 723 阅读 · 0 评论 -
Windows安装Elasticsearch
步骤一:下载ES压缩包 ElasticSearch分为Linux和Window版本,基于我们主要学习的是ElasticSearch的Java客户端的使用,所以我们课程中使用的是安装较为简便的Window版本,项目上线后,公司的运维人员会安装Linux版的ES供我们连接使用。 ElasticSearch的官方地址: https://www.elastic.co/products/elasticsearch 步骤二:安装ES服务 Window版的ElasticSearch的安装转载 2021-07-10 17:06:48 · 143 阅读 · 0 评论 -
springcloud zipkin实现链路监控 --- 服务端
一、简介Zipkin是一个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集和查找。如果在日志文件中有跟踪ID,则可以直接跳至该跟踪ID。否则,你可以基于诸如服务,操作名称,标签和持续时间之类的属性进行查询。将为你汇总一些有趣的数据,例如服务中花费的时间百分比以及操作是否失败。二、代码1、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:/.原创 2021-07-08 21:17:48 · 129 阅读 · 0 评论 -
打印Spring Cloud Feign请求响应日志
本篇主要基于consul注册中心来实现的consul官网下载:https://www.consul.io/downloads.htmlcmd 命令窗口执行:consulagent-devconsul 自带 UI 界面,打开网址:http://localhost:8500,可以看到当前注册的服务界面一、feign接口提供者1、pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://m...原创 2021-07-06 20:48:52 · 1445 阅读 · 0 评论 -
java高并发-秒杀商品限流篇springcloud gateway
服务端代码上一篇已经写过了,这篇主要配置gateway1、pom.xml引入<?xml version="1.0" encoding="UTF-8"?><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 htt原创 2021-07-04 15:21:56 · 758 阅读 · 0 评论 -
Spring Cloud 熔断服务Hystrix
hystrix是一种保证服务稳定的组件,使服务不会因为某个服务崩溃导致整个应用崩溃。可以简单的理解为通用的异常处理。hystrix用起来非常的简单,openfeign默认支持hystrix,只不过需要开启才行。实战创建SpringBoot项目,引入Hystrix依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star.转载 2021-07-02 21:54:07 · 79 阅读 · 0 评论 -
Spring Cloud Gateway高级应用
1. 限速路由器限速在高并发场景中比较常用的手段之一,可以有效的保障服务的整体稳定性,Spring Cloud Gateway 提供了基于 Redis 的限流方案。所以我们首先需要添加对应的依赖包spring-boot-starter-data-redis-reactive<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start转载 2021-07-02 21:40:15 · 173 阅读 · 0 评论 -
springcloud 服务网关 gateway
SpringCloud Gateway 简介SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.转载 2021-07-02 21:30:25 · 301 阅读 · 0 评论 -
Spring Boot 2.0 整合Apollo配置中心
一.简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。二.常规安装1.下载安装脚本官方给我们提供出一套构建脚本 首先下载到本地https://github.com/nobodyiam/apollo-build-scripts2.安装Mysql因为Apollo的数据存储是基于mysql的所以需要在本地安装一下 windows.转载 2021-07-01 20:54:31 · 174 阅读 · 0 评论 -
Spring-cloud-feign添加统一的Header
1.背景使用Feign 调用其他微服务,尤其是在多级调用的同时,需要将一些共同的参数传递至下一个服务,如:token。比较方便的做法是放在请求头中,在Feign调用的同时自动将参数放到restTemplate中。2.具体做法是首先实现RequestInterceptorimport feign.RequestInterceptor;import feign.RequestTemplate;import org.springframework.stereotype.Component;i.转载 2021-06-30 21:10:39 · 515 阅读 · 0 评论 -
如何在Spring Cloud 中使用Feign
一.基础配置1.引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <原创 2021-06-30 21:06:21 · 265 阅读 · 0 评论 -
springcloud服务治理与配置中心-搭建consul服务端
Consul是一套开源的分布式服务发现和配置管理系统,有HashiCorp公司用go语言开发。提供了微服务系统的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。 它具有很多优点。包括:基于raft协议,比较简洁;支持健康检查。同时支持HTTP和DNS协议,支持跨数据中心的WAN集群,提供图形界面,跨平台,支持Linux、Mac、Windows。安装并运行Consul1,官网下载2,执行cmd命令,弹出命令行窗口...原创 2021-06-30 20:51:41 · 249 阅读 · 0 评论 -
Spring Boot整合Sharding-JDBC实现数据分表
一、水平分割1、水平分库1)、概念:以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。2)、结果每个库的结构都一样;数据都不一样;所有库的并集是全量数据;2、水平分表1)、概念以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。2)、结果每个表的结构都一样;数据都不一样;所有表的并集是全量数据;二、Shard-jdbc 中间件1、架构图2、特点1)、Sharding-JDBC直接封装JDBC API,旧代码迁移成本几乎为零。2)、适用于转载 2021-06-29 20:56:34 · 615 阅读 · 0 评论 -
springboot 实现数据库读写分离(mybatis,mysql)
1、背景 一个项目中数据库最基础同时也是最主流的是单机数据库,读写都在一个库中。当用户逐渐增多,单机数据库无法满足性能要求时,就会进行读写分离改造(适用于读多写少),写操作一个库,读操作多个库,通常会做一个数据库集群,开启主从备份,一主多从,以提高读取性能。当用户更多读写分离也无法满足时,就需要分布式数据库了(可能以后会学习怎么弄)。 正常情况下读写分离的实现,首先要做一个一主多从的数据库集群,同时还需要进行数据同步。这一篇记录如何用 mysql 搭建一个一主多次的配置,下一篇记录代码层面如何实转载 2021-06-28 20:43:30 · 561 阅读 · 0 评论 -
mybatis设置缓存
一、mybatis配置的简单介绍本文介绍的是基于XML的配置,并不是关于注解的Mybatis配置。当然复杂SQL情况下都建议使用XML配置。(1)配置步骤 这里记录的只是Myabtis的简单配置,并没有证整合Spring等框架,所以相对简单。我开始学的时候也是反复记不住,不知道为什么要这么配置,这么配置的作用是什么。之后经过研读《深入浅出Mybatis基础原理与实战》(我这里只有PDF电子版本,有需要的朋友可以评论或者私信我),总结并画图让我对整个配置过程有了全新的认识。 简单来说,My转载 2021-06-27 10:52:54 · 1156 阅读 · 0 评论 -
springboot整合mybatis-plus
一、概述Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间.代码生成,分页,性能分析等功能一应俱全,最新已经更新到了3.1.1版本了,3.X系列支持lambda语法,让我在写条件构造的时候少了很多的"魔法值",从代码结构上更简洁了.二、搭建环境 MyBatis-Plus版本: 3.1.0 SpringBoot版本:2.1.5原创 2021-06-27 10:32:12 · 98 阅读 · 0 评论 -
springboot整合kafka
一、概述在深入理解Kafka之前,先介绍一下Kafka中的术语。下图展示了Kafka的相关术语以及之间的关系:上图中一个topic配置了3个partition。Partition1有两个offset:0和1。Partition2有4个offset。Partition3有1个offset。副本的id和副本所在的机器的id恰好相同。如果一个topic的副本数为3,那么Kafka将在集群中为每个partition创建3个相同的副本。集群中的每个broker存储一个或多个partition。多个pr原创 2021-06-26 17:49:11 · 514 阅读 · 0 评论 -
springboot整合RabbitMq
一、RabbitMq的介绍RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿里巴巴公司的,现已经转让给apache).消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息.具体过程如下:从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消原创 2021-06-26 10:13:10 · 398 阅读 · 0 评论 -
redis分布式锁-redisson
有关Redisson作为实现分布式锁,总的分3大模块来讲。1、Redisson实现分布式锁原理2、Redisson实现分布式锁的源码解析3、Redisson实现分布式锁的项目代码(可以用于实际项目中)一、高效分布式当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设计分布式锁,这里我认为以下几点是必须要考虑的。1、互斥在分布式高并发的条件下,我们最需要保证,同一时刻只能有一个线程获得锁,这是最基本的一点。2、防止死锁在分布式高并发原创 2021-06-23 20:27:51 · 443 阅读 · 0 评论 -
java网络编程-netty(心跳检测、重连机制)
一、什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert.x转载 2021-06-19 19:40:05 · 836 阅读 · 0 评论