![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java编程
文章平均质量分 87
java基础知识
weixin_35688430
这个作者很懒,什么都没留下…
展开
-
Spring Batch 介绍
1,Spring Batch 介绍Spring Batch 是一个开源的、全面的、轻量级的批处理框架,通过 Spring Batch 可以实现强大的批处理应用程序的开发。Spring Batch 还提供记录/跟踪、事务管理、作业处理统计、作业重启以及资源管理等功能。Spring Batch 结合定时任务可以发挥更大的作用。Spring Batch 提供了 ItemReader、ItemProcessor 和 ItemWriter 来完成数据的读取、处理以及写出操作,并且可以将批处理的执行状态持久化原创 2021-08-30 15:45:53 · 4049 阅读 · 0 评论 -
SpringBoot - 集成MQTT教程
MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。具体介绍可以查看我之前写的文章(点击跳转)。 本文演示 SpringBoot 项目中如何集成 MQTT,并实现消息的发送。一、安装配置1,依赖配置编辑项目的 pom.xml 文件,添加如下依赖:<dependency> <groupId>org.springframework.integration</groupId> <arti原创 2021-08-24 13:57:14 · 2702 阅读 · 1 评论 -
SpringBoot - MyBatis-Plus使用详解(一)
1,什么是 MyBatis-Plus?(1)MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。我们可以理解为它已经封装好了一些 CRUD 方法,我们不需要再写 xml 了,直接调用这些方法就行,类似于 JPA。官网地址:https://mp.baomidou.com/GitHub 主页:https://github.com/baomidou/mybatis-plus(2)MyBatis-Plus 框架原创 2021-08-23 14:49:05 · 725 阅读 · 1 评论 -
SpringBoot - Kafka的集成与使用详解 (消费者)
六、消费者1:指定 topic、partition、offset1,使用 topics 指定 topic(1)监听器主要是使用 @KafkaListenter 注解即可,而通过 topics 参数设置监听的 topic(可监听多个,用逗号隔开):其他参数介绍:id(消费者 ID)、 groupId(消费组 ID)@Componentpublic class KafkaConsumer { // 消费监听 @KafkaListener(id = "consumer1",groupId原创 2021-08-20 15:12:08 · 4902 阅读 · 0 评论 -
SpringBoot - Kafka的集成与使用(生产者)
Kafka 是一个由 LinkedIn 开发的分布式消息系统,详细介绍可以查看之前的文章。本文演示如何在 Spring Boot 项目中集成并使用 Kafka。一、安装配置1,环境准备关于 Kafka 和 ZooKeeper 的安装 省略2,项目配置(1)首先编辑项目的 pom.xml 文件,添加 spring-kafka 依赖:<dependency> <groupId>org.springframework.kafka</groupId>原创 2021-08-20 11:16:58 · 1736 阅读 · 0 评论 -
SpringBoot 集成 ShedLock 分布式锁
SpringBoot 集成 ShedLock 分布式锁一:ShedLock 简介ShedLock是一个在分布式环境中使用的定时任务框架,用于解决在分布式环境中的多个实例的相同定时任务在同一时间点重复执行的问题。ShedLock确保计划的任务最多同时执行一次。如果一个任务正在一个节点上执行,它会获得一个锁,该锁将阻止从另一个节点(或线程)执行同一任务。请注意,如果一个任务已经在一个节点上执行,则在其他节点上的执行不会等待,只是将其跳过。。简单来说,ShedLock本身只做一件事情:保证一个任务最多同时执行原创 2021-08-18 14:02:56 · 735 阅读 · 0 评论 -
SpringBoot - 缓存的使用详解
Spring 3.1 中开始对缓存提供支持,核心思路是对方法的缓存,当我们调用一个方法时,将方法的参数和返回值作为 key/value 缓存起来,当再次调用该方法时,如果缓存中有数据,就直接从缓存中获取,否则再去执行该方法。 Spring 并未提供缓存的实现,我们可以自由选择缓存的实现,目前 Spring Boot 支持的缓存有 JCache、EhCache 2.x、Redis…。不过无论使用那种缓存实现,不同的只是缓存配置,开发者使用的缓存注解都是一样的。一、使用 Ehchche 2.x 缓存原创 2021-08-18 13:46:43 · 979 阅读 · 0 评论 -
SpringBoot - Redis的整合与使用
一、Redis 的整合与使用:单 Redis 实例1,安装配置(1)首先编辑 pom.xml 文件,添加相关依赖:Spring Boot 借助于 Spring Data Redis 为 Redis 提供了开箱即用的自动化配置,我们只需要添加相关依赖并配置 Redis 连接信息即可。默认情况下,spring-boot-starter-data-redis 使用的 Redis 工具是 Lettuce。考虑到有的开发者习惯使用 Jedis,这里从 spring-boot-starter-data-red原创 2021-08-18 11:10:33 · 680 阅读 · 0 评论 -
SpringBoot - 定时任务
SpringBoot - 定时任务定时任务是企业级开发中最常见的功能之一,如定时统计订单数、定时进行数据库备份、定时发送邮件等。简单的定时任务可以直接通过 Spring 的 @Scheduled 注解实现,复杂的定时任务则可以通过集成 Quartz 来实现。本文先介绍前者。一、使用 @Scheduled 注解实现定时任务1,开启定时任务首先在项目启动类上添加 @EnableScheduling 注解开启定时任务:@SpringBootApplication@EnableSchedulingpu原创 2021-08-18 10:06:56 · 1170 阅读 · 0 评论 -
SpringBoot - 后端数据校验的实现
SpringBoot - 后端数据校验的实现通常来说,为了提高系统运行效率,都会在前端进行数据校验,但后端的数据校验仍然必不可少,因为用户还是可能在获取数据接口后手动传入非法数据,所以后端还是需要做数据校验。对于数据校验,Spring Boot 也提供了相关的自动化配置解决方案,下面通过样例进行演示。一、普通校验1,添加依赖首先编辑项目的pom.xml 文件,添加数据校验相关的依赖。<dependency> <groupId>org.springframewor原创 2021-08-17 14:25:31 · 975 阅读 · 0 评论 -
SpringBoot - 网络请求客户端WebClient使用详解(异常处理)
SpringBoot - 网络请求客户端WebClient使用详解(异常处理)请求异常处理1,默认异常(1)当我们使用 WebClient 发送请求时, 如果接口返回的不是 200 状态(而是 4xx、5xx 这样的异常状态),则会抛出 WebClientResponseException 异常。@RestControllerpublic class HelloController { // 创建 WebClient 对象 private WebClient webClient原创 2021-08-17 11:46:48 · 4967 阅读 · 0 评论 -
SpringBoot - 网络请求客户端WebClient(文件处理)
SpringBoot - 网络请求客户端WebClient(文件处理)一、文件下载1,下载图片(1)下面是一个图片下载的样例,下载一个网络上的图片并保存到本地。@RestControllerpublic class HelloController { // 创建 WebClient 对象 private WebClient webClient = WebClient.builder() .build(); @GetMapping("/test原创 2021-08-17 10:57:49 · 1125 阅读 · 0 评论 -
SpringBoot - 网络请求客户端WebClient使用详解
在 Spring 5 之前,如果我们想要调用其他系统提供的 HTTP 服务,通常可以使用 Spring 提供的 RestTemplate 来访问,不过由于 RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端,因此存在一定性能瓶颈。根据 Spring 官方文档介绍,在将来的版本中它可能会被弃用。 作为替代,Spring 官方已在 Spring 5 中引入了 WebClient 作为非阻塞式 Reactive HTTP 客户端。下面通过样例演示如何使用 WebClie原创 2021-08-17 10:33:24 · 20769 阅读 · 1 评论 -
SpringBoot - 网络请求模版类RestTemplate使用详解
SpringBoot - 网络请求模版类RestTemplate使用详解一、基本介绍1,什么是 RestTemplate?(1)RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种可以便捷访问远程 Http 服务的方法,能够大大提高客户端的编写效率。RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端。根据 Spring 官方文档介绍,在将来的版本中它可能会被弃用,因为他们已在 Spring 5 中引原创 2021-08-16 16:15:11 · 1778 阅读 · 0 评论 -
SpringBoot - 获取POST请求参数详解
介绍了 Controller 如何接收通过 GET 方式传递过来的参数,下面接着演示如何接收通过 POST 方式传递过来的参数。一、接收 Form 表单数据1,基本的接收方法(1)下面样例 Controller 接收 form-data 格式的 POST 数据:package com.example.demo; import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bi原创 2021-08-16 14:33:52 · 5784 阅读 · 0 评论 -
SpringBoot - 获取Get请求参数详解
SpringBoot - 获取Get请求参数详解一、参数直接在路径中(1)假设请求地址是如下这种 RESTful 风格,hangge 这个参数值直接放在路径里面:`http:``//localhost:8080/hello/hangge`(2)Controller 可以这么获取该参数:package com.example.demo; import org.springframework.web.bind.annotation.PathVariable;import org.springf原创 2021-08-16 14:09:20 · 1063 阅读 · 0 评论 -
SpringBoot - 面向切面编程 AOP
一、基本介绍1,什么是 AOP(1)AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。(2)利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。一个 AOP 的使用场景: 假设一个已经上线的系统运行出现问题,有时运行得很慢。为了检测出是哪个环节出现了问题,就需要监控每一个方法的执行时间,再根据执行时间进行分原创 2021-08-16 11:41:37 · 290 阅读 · 0 评论 -
SpringBoot - 配置类的实现
一、基本用法1,基本介绍Spring Boot 推荐使用 java 配置完全代替 XML 配置,java 配置是通过 @Configration 和 @Bean 注解实现的。二者作用如下:@Configration 注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件@Bean 注解:作用在方法上,声明当前方法的返回值是一个 Bean2,简单样例(1)首先创建一个自定义的配置类 MyConfigration:使用 @Configration 注解将该类声明为原创 2021-08-16 10:52:56 · 797 阅读 · 0 评论 -
SpringBoot - 使用Spring Data JPA操作数据库
一、基本介绍1,什么是 JPAJPA 是 Java Persistence API 的简称,中文名 Java 持久层 API。我们都知道 Hibernate 框架是一个 ORM 框架,而 JPA 则是一种 ORM 规范。JPA 和 Hibernate 的关系就像是 JDBC 与 JDBC 驱动的关系,即 JPA 制定了 ORM 规范,而 Hibernate 是这些规范的实现。因此从功能来说,JPA 相当于 Hibernate 的一个子集。事实上,是先有 Hibernate 后有 JPA,JPA 规范原创 2021-08-13 15:54:21 · 881 阅读 · 1 评论 -
SpringBoot - 使用MyBatis操作数据库
SpringBoot - 使用MyBatis操作数据库一、基本介绍1,什么是 MyBatisMyBatis 是一款优秀的持久化框架,原名叫做 iBatis,2010 年改名为 MyBatis。MyBatis 支持定制化 SQL、存储过程以及高级映射。MyBatis 几乎避免了所有的 JDBC 代码手动设置参数以及获取结果集。在传统的 SSM 框架整合中,使用 MyBatis 需要大量的 XML 配置。而在 Spring Boot 中,MyBatis 官方提供了一套自动化配置方案,可以做到 MyB原创 2021-08-13 14:49:52 · 416 阅读 · 0 评论 -
SpringBoot - 使用JdbcTemplate操作数据库
SpringBoot - 使用JdbcTemplate操作数据库一、基本介绍1,什么是 JdbcTemplateJdbcTemplate 是 Spring 提供的一套 JDBC 模版框架,利用 AOP 技术来解决直接使用 JDBC 时大量重复代码的问题。JdbcTemplate 虽然没有 MyBatis 那么灵活,但是比直接使用 JDBC 要方便很多。2,安装配置(1)首先编辑 pom.xml 文件,添加相关依赖:spring-boot-starter-jdbc:提供对 JDBC 数据库的原创 2021-08-13 14:25:33 · 796 阅读 · 0 评论 -
SpringBoot - Lombok使用详解
SpringBoot - Lombok使用详解我们创建 POJO 类时,经常需要先写属性,然后手写或者自动生成 get 和 set 方法,然后还要重写 toString 方法…一系列操作下来,这个 POJO 类便会产生太多的样板式代码。 这种传统的方式不仅使得代码十分臃肿,有时也不方便维护,比如:当变量名或者是修饰符改变了,我们就要删除 set、get 方法重新生成。 而 Lombok 出现就是为了解决代码书写的冗余问题,下面对其进行详细进行介绍。一、基本介绍1,Lombok 介绍原创 2021-08-13 13:53:30 · 1487 阅读 · 0 评论 -
spring cloud-链路追踪和健康检查(九)
18 链路追踪18.1 概念分布式计算八大误区网络可靠。延迟为零。带宽无限。网络绝对安全。网络拓扑不会改变。必须有一名管理员。传输成本为零。网络同质化。(操作系统,协议)链路追踪的必要性如果能跟踪每个请求,中间请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。我们就能更好地分析系统瓶颈、解决系统问题。因此链路跟踪很重要。《链路追踪》看看微服务之熵。我们自己思考解决方案:在调用前后加时间戳。捕获异常。链路追踪目的:解决错综复杂的服务调用中链路的查看。排查慢服务。市面上转载 2021-08-02 09:42:56 · 472 阅读 · 1 评论 -
spring cloud-配置中心(八)
17 配置中心17.1 概念为什么需要配置中心单体应用,配置写在配置文件中,没有什么大问题。如果要切换环境 可以切换不同的profile(2种方式),但在微服务中。微服务比较多。成百上千,配置很多,需要集中管理。管理不同环境的配置。需要动态调整配置参数,更改配置不停服。配置中心介绍分布式配置中心包括3个部分:存放配置的地方:git ,本地文件 等。config server。从 1 读取配置。config client。是 config server 的客户端 消费转载 2021-08-02 09:42:16 · 130 阅读 · 0 评论 -
spring cloud-网关(七)
16 网关16.1 概念服务治理,服务注册发现,服务调用,熔断。已经学完。微服务基本模块已经有了,也可以做微服务了。但完成一个复杂的业务,可能需要多个微服务合作来完成,比如下单,需要用户服务,支付服务,地图服务,订单服务。一般是我们对外服务的窗口,进行服务内外隔离。一般微服务都在内网,不做安全验证,就好像:很多明星,可以独立开演唱会(独立提供服务)。也可以去春晚(微服务群提供服务)。但一台春晚就不能让 观众一个一个调用了。观众要调用,需要检票啥的,检票就类似于网关,进来之后,界面随便看,不会说你 看转载 2021-08-02 09:41:30 · 185 阅读 · 0 评论 -
spring cloud-熔断(六)
15 熔断15.1 概念:概述前面我们学过:Eureka实现了服务注册与发现服务间调用。Ribbon实现了客户端负载均衡Feign实现了声明式 API调用这节学习 微服务间的容错 在分布式系统下,微服务之间不可避免地会发生相互调用,但每个系统都无法百分之百保证自身运行不出问题。在服务调用中,很可能面临依赖服务失效的问题(网络延时,服务异常,负载过大无法及时响应)。因此需要一个组件,能提供强大的容错能力,为服务间调用提供保护和控制。我们的目的:当我自身 依赖的服务不可用时,服务自身不会转载 2021-08-02 09:37:37 · 347 阅读 · 0 评论 -
spring cloud-Feign声明式REST调用(五)
14. Feign声明式REST调用14.1 概念OpenFeign是Netflix 开发的声明式、模板化的HTTP请求客户端。可以更加便捷、优雅地调用http api。OpenFeign会根据带有注解的函数信息构建出网络请求的模板,在发送网络请求之前,OpenFeign会将函数的参数值设置到这些请求模板中。《Ribbon流程图》feign主要是构建微服务消费端。只要使用OpenFeign提供的注解修饰定义网络请求的接口类,就可以使用该接口的实例发送RESTful的网络请求。还可以集成Ribb转载 2021-07-30 14:31:59 · 333 阅读 · 0 评论 -
spring cloud-Ribbon负载均衡(四)
13 Ribbon负载均衡13.1 两种负载均衡 当系统面临大量的用户访问,负载过高的时候,通常会增加服务器数量来进行横向扩展(集群),多个服务器的负载需要均衡,以免出现服务器负载不均衡,部分服务器负载较大,部分服务器负载较小的情况。通过负载均衡,使得集群中服务器的负载保持在稳定高效的状态,从而提高整个系统的处理能力。软件负载均衡:nginx,lvs硬件负载均衡:F5我们只关注软件负载均衡,第一层可以用DNS,配置多个A记录,让DNS做第一层分发。第二层用比较流行的是反向代理,核心原理:代转载 2021-07-30 14:28:11 · 347 阅读 · 0 评论 -
spring cloud-服务间调用(三)
12 服务间调用 微服务中,很多服务系统都在独立的进程中运行,通过各个服务系统之间的协作来实现一个大项目的所有业务功能。服务系统间 使用多种跨进程的方式进行通信协作,而RESTful风格的网络请求是最为常见的交互方式之一。http。 思考:如果让我们写服务调用如何写。硬编码。不好。ip域名写在代码中。目的:找到服务。根据服务名,找相应的ip。目的:这样ip切换或者随便变化,对调用方没有影响。Map<服务名,服务列表> map;加上负载均衡。目的:高可用。sp转载 2021-07-30 14:14:16 · 96 阅读 · 0 评论 -
Spring Cloud-服务注册与发现(二)
11 服务注册与发现11.1 Eureka 单节点搭建pom.xml<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>有的教程中还引入spring-boot-starter-web,其实不用。因转载 2021-07-30 13:56:51 · 449 阅读 · 0 评论 -
Spring Cloud-概述(一)
1 课程概述Spring Cloud技术点Eureka:服务注册与发现,用于服务管理。Feign: web调用客户端,能够简化HTTP接口的调用。Ribbon:基于客户端的负载均衡。Hystrix:熔断降级,防止服务雪崩。Zuul:网关路由,提供路由转发、请求过滤、限流降级等功能。Config:配置中心,分布式配置管理。Sleuth:服务链路追踪Admin:健康管理网约车实战服务划分项目结构接口设计分布式锁分布式事务关键业务2 网约车介绍先介绍网约车项目,转载 2021-07-30 11:46:40 · 176 阅读 · 0 评论 -
Mybatis-plus的使用(四)
mybatis-plus的使用 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 L转载 2021-04-28 14:45:35 · 149 阅读 · 0 评论 -
Mybatis框架整合及逆向工厂(三)
mybatis框架整合及逆向工厂1、三大框架整合 在老期的项目中,一般都是使用ssm项目做开发的,虽然现在的主流开发是springboot来做开发,但是ssm的基本整合还是需要掌握的。1、导入pom文件1、导入spring的pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3转载 2021-04-28 14:39:39 · 65 阅读 · 0 评论 -
Mybatis SQL映射文件详解(二)
02Mybatis SQL映射文件详解 在之前我们学习了mybatis的全局配置文件,下面我们开始学习mybatis的映射文件,在映射文件中,可以编写以下的顶级元素标签:cache – 该命名空间的缓存配置。cache-ref – 引用其它命名空间的缓存配置。resultMap – 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。parameterMap – 老式风格的参数映射。此元素已被废弃,并可能在将来被移除!请使用行内参数映射。文档中不会介绍此元素。sql – 可被其它语句转载 2021-04-28 14:23:57 · 124 阅读 · 0 评论 -
Mybatis的介绍(一)
01Mybatis的介绍和基本使用0、数据库操作框架的历程(1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序优点:运行期:快捷、高效缺点:编辑期:代码量大、繁琐异常处理、不支持数据库跨平台[外链图片转存失败,源站可能有防盗链机制转载 2021-04-28 14:22:09 · 102 阅读 · 0 评论 -
spring之MVC的使用(九)
SpringMVC的使用1、SpringMVC的返回JSON数据 到目前为止我们编写的所有Controller的方法的返回值都是String类型,但是大家应该都知道,我们有时候数据传递特别是在ajax中,我们返回的数据经常需要使用json,那么如何来保证返回的数据的是json格式呢?使用@ResponseBody注解pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.原创 2021-04-28 14:04:36 · 76 阅读 · 0 评论 -
spring之MVC的使用(八)
SpringMVC的使用(1)SpringMVC的请求处理1、SpringMVC对请求参数的处理 在之前的servlet中我们可以通过request.getParameter()来获取请求中的参数,但是在我们编写的SpringMVC的应用程序中,在具体请求的方法中并不包含request参数,那么我们应该如何获取请求中的参数呢? 需要使用以下几个注解: @RequestParam:获取请求的参数 @RequestHeader:获取请求头信息 @CookieValue:获取co转载 2021-04-28 14:00:51 · 85 阅读 · 0 评论 -
spring之MVC简单介绍及使用(七)
SpringMVC简单介绍及使用1、什么是MVC? MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。 **Model(模型):**数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value转载 2021-04-28 13:51:25 · 92 阅读 · 0 评论 -
spring之 动态代理(六)
动态代理1、jdk的动态代理 动态代理与静态代理的区别此处不再赘述,大家可以看马老师的设计模式视频,我们主要讲一下动态代理的实现原理,说明白原理的话肯定是要看源码了,大家不要慌,干就完了!!! 其实在使用动态代理的时候最最核心的就是Proxy.newProxyInstance(loader, interfaces, h);废话不多说,直接干源码。动态代理的样例代码:Calculator.javapackage com.mashibing;public interface Calcul转载 2021-04-28 13:44:49 · 98 阅读 · 0 评论 -
spring之 AOP的高级应用(五)
Spring AOP的应用配置1、Spring JdbcTemplate 在spring中为了更加方便的操作JDBC,在JDBC的基础之上定义了一个抽象层,此设计的目的是为不同类型的JDBC操作提供模板方法,每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务,通过这种方式,可以尽可能保留灵活性,将数据库存取的工作量讲到最低。1、配置并测试数据源pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="ht转载 2021-04-28 13:39:51 · 80 阅读 · 0 评论